Shufflecake, toolkit untuk membuat partisi disk terenkripsi yang tersembunyi, telah diterbitkan

Perusahaan audit keamanan Kudelski Security telah menerbitkan alat bernama Shufflecake yang memungkinkan Anda membuat sistem file tersembunyi yang tersebar di seluruh ruang kosong yang tersedia di partisi yang ada dan tidak dapat dibedakan dari data sisa acak. Partisi dibuat sedemikian rupa sehingga tanpa mengetahui kunci aksesnya, sulit untuk membuktikan keberadaannya bahkan ketika melakukan analisis forensik. Kode utilitas (shufflecake-userland) dan modul kernel Linux (dm-sflc) ditulis dalam C dan didistribusikan di bawah lisensi GPLv3, sehingga modul kernel yang diterbitkan tidak mungkin disertakan dalam kernel Linux utama karena ketidakcocokan dengan lisensi GPLv2 yang menyediakan kernel.

Proyek ini diposisikan sebagai solusi yang lebih canggih daripada Truecrypt dan Veracrypt untuk menyembunyikan data yang memerlukan perlindungan, yang memiliki dukungan asli untuk platform Linux dan memungkinkan Anda menempatkan hingga 15 partisi tersembunyi pada perangkat, bersarang di dalam satu sama lain untuk membingungkan penguraian keberadaan mereka. Jika penggunaan Shufflecake itu sendiri bukan rahasia, seperti yang dapat dinilai, misalnya, dengan adanya utilitas yang sesuai dalam sistem, maka jumlah total partisi tersembunyi yang dibuat tidak dapat ditentukan. Partisi tersembunyi yang dibuat dapat diformat sesuai kebijaksanaan pengguna untuk mengakomodasi sistem file apa pun, misalnya ext4, xfs, atau btrfs. Setiap partisi diperlakukan sebagai perangkat blok virtual terpisah dengan kunci buka kuncinya sendiri.

Untuk membingungkan jalur tersebut, diusulkan untuk menggunakan model perilaku β€œpenyangkalan yang masuk akal”, yang intinya adalah bahwa data berharga disembunyikan sebagai lapisan tambahan di bagian terenkripsi dengan data yang kurang berharga, membentuk semacam hierarki bagian yang tersembunyi. Jika ada tekanan, pemilik perangkat dapat mengungkapkan kunci ke partisi terenkripsi, tetapi partisi lain (hingga 15 level bersarang) mungkin disembunyikan di partisi ini, dan menentukan keberadaannya serta membuktikan keberadaannya merupakan masalah.

Penyembunyian dicapai dengan membangun setiap partisi sebagai satu set irisan terenkripsi yang ditempatkan pada posisi acak pada perangkat penyimpanan. Setiap irisan dibuat secara dinamis ketika diperlukan ruang penyimpanan tambahan di partisi. Untuk mempersulit analisis, irisan bagian yang berbeda diselingi, mis. Bagian shufflecake tidak ditautkan ke wilayah yang berdekatan dan potongan dari semua bagian dicampur. Informasi tentang irisan bekas dan gratis disimpan dalam peta lokasi yang terkait dengan setiap partisi, yang direferensikan oleh header terenkripsi. Kartu dan header dienkripsi dan, tanpa mengetahui kunci aksesnya, tidak dapat dibedakan dari data acak.

Header dibagi menjadi beberapa slot, yang masing-masing mendefinisikan bagiannya sendiri dan irisan terkait. Slot di header ditumpuk dan dihubungkan secara rekursif - slot saat ini berisi kunci untuk mendekripsi parameter bagian sebelumnya dalam hierarki (yang kurang tersembunyi), memungkinkan satu kata sandi digunakan untuk mendekripsi semua bagian yang kurang tersembunyi terkait dengan bagian yang dipilih. Setiap partisi yang tidak terlalu tersembunyi memperlakukan potongan partisi yang disarangkan sebagai bebas.

Secara default, semua subbagian Shufflecake memiliki ukuran yang terlihat sama dengan bagian tingkat atas. Misalnya, jika ada tiga partisi pada perangkat 1 GB, masing-masing partisi akan terlihat oleh sistem sebagai partisi 1 GB dan total ruang disk yang tersedia akan dibagi di antara semua partisi - jika ukuran total data yang disimpan melebihi ukuran sebenarnya dari perangkat, itu akan memulai kesalahan I/O.

Bagian bersarang yang tidak terbuka tidak berpartisipasi dalam alokasi ruang, mis. upaya untuk mengisi partisi tingkat atas akan mengakibatkan data terkoyak di partisi bersarang, tetapi tidak akan memungkinkan untuk mengungkapkan keberadaannya melalui analisis ukuran data yang dapat ditempatkan di partisi sebelum kesalahan dimulai (itu Diasumsikan bahwa partisi atas berisi data yang tidak dapat diubah untuk mengalihkan perhatian dan tidak pernah digunakan secara terpisah, dan pekerjaan rutin selalu dilakukan dengan bagian bersarang terbaru, skema itu sendiri menyiratkan bahwa lebih penting menjaga rahasia keberadaan data daripada kehilangan data ini).

Faktanya, 15 partisi Shufflecake selalu dibuat - kata sandi pengguna dilampirkan ke partisi yang digunakan, dan partisi yang tidak digunakan diberikan dengan kata sandi yang dibuat secara acak (tidak mungkin untuk memahami berapa banyak partisi yang sebenarnya digunakan). Ketika partisi Shufflecake diinisialisasi, disk, partisi, atau perangkat blok virtual yang dialokasikan untuk penempatannya diisi dengan data acak, sehingga tidak mungkin untuk mengidentifikasi metadata dan data Shufflecake dengan latar belakang umum.

Implementasi Shufflecake memiliki kinerja yang cukup tinggi, namun karena adanya overhead, throughputnya kira-kira dua kali lebih lambat dibandingkan dengan enkripsi disk berdasarkan subsistem LUKS. Menggunakan Shufflecake juga mengakibatkan biaya tambahan untuk RAM dan ruang disk untuk menyimpan data layanan. Konsumsi memori diperkirakan sebesar 60 MB per partisi, dan ruang disk sebesar 1% dari ukuran total. Sebagai perbandingan, teknik WORAM, yang tujuannya serupa, menyebabkan perlambatan 5 hingga 200 kali lipat dengan hilangnya 75% ruang disk yang dapat digunakan.

Toolkit dan modul kernel hanya diuji di Debian dan Ubuntu dengan kernel 5.13 dan 5.15 (didukung di Ubuntu 22.04). Perlu dicatat bahwa proyek tersebut masih harus dianggap sebagai prototipe yang berfungsi, yang tidak boleh digunakan untuk menyimpan data penting. Di masa depan, kami berencana untuk melakukan optimasi tambahan untuk kinerja, keandalan dan keamanan, serta menyediakan kemampuan untuk melakukan booting dari partisi Shufflecake.

Sumber: opennet.ru

Tambah komentar