Hei Habr.
Saya ingin memberi Anda sebuah proyek kecil
Saya membuat proyek tentang penyimpanan informasi tersembunyi dalam sistem file (selanjutnya FS).
Ini dapat digunakan untuk mencuri informasi rahasia untuk tujuan pendidikan.
Linux FS yang sangat lama dipilih sebagai prototipe
Implementasi
Pertimbangan Implementasi
Jika ada baiknya untuk "mengurai" standar ext2, maka Anda dapat menggantinya di FS ada yang disebut
Jika Anda menyimpan informasi tersembunyi tanpa enkripsi, meskipun FS kabur, informasi tersebut akan tetap terlalu mencolok, terutama jika pemrogram mengetahui apa yang harus dicari. Oleh karena itu, diputuskan untuk mengenkripsi semua blok file sumber. Saya memilih blok cipher
Untuk memisahkan blok yang diperlukan dari blok lainnya saat membaca, diputuskan untuk menambahkan penanda khusus ke setiap blok di awal blok. Token ini dienkripsi tergantung pada nomor blok di file sumber. Trik ini segera memungkinkan tidak hanya untuk menemukan blok yang diperlukan, tetapi juga untuk mengenali urutannya yang benar.
Prinsip operasi umum sistem.
Algoritma perekaman
Poinnya:
- Pertama tulis beberapa informasi ke sistem file sumber;
- Hapus informasi ini (tidak harus semuanya);
- File yang akan disembunyikan dibagi menjadi blok-blok dengan panjang yang sama, menambahkan penanda;
- Enkripsi blok-blok ini;
- Tempatkan blok terenkripsi di blok FS kosong.
Bagi pecinta diagram blok
Di bawah ini adalah diagram blok dari algoritma pencatatan. Algoritme menerima empat file sebagai masukan:
-Gambar sistem file yang dapat dimodifikasi;
-File tunduk pada steganografi;
-File dengan kunci enkripsi untuk AES;
-File dengan spidol.
Perlu segera dicatat bahwa algoritma ini memiliki satu kelemahan: setelah menulis file ke FS, tidak harus tulis sesuatu yang baru ke dalam FS, karena informasi baru apa pun dapat berakhir di blok yang telah kita alokasikan ke file zip kita, meskipun ini juga membuka kemungkinan untuk “menutupi jejak kita dengan cepat.”
Tetapi cukup jelas bagaimana hal ini dapat diperbaiki: perlu untuk menulis ulang algoritma untuk menulis blok di FS. Ini adalah tugas yang dapat dimengerti, namun sangat memakan waktu.
Untuk Proof Of Consept saya tidak menerapkan ini.
Akibatnya, perubahan berikut akan dilakukan pada FS; inilah tampilan FS sebelum steganografi (file audio direkam sebelumnya).
Dan seperti inilah tampilan FS dengan informasi yang sudah di-zip.
Algoritma membaca
Poinnya:
- Dengan pengetahuan tentang kunci dan metode pembuatan penanda, buatlah N penanda pertama, dengan jaminan bahwa N dikalikan dengan panjang blok sistem file lebih besar dari panjang file zip;
- Cari blok di FS dimulai dengan penanda;
- Menguraikan blok yang diterima dan memisahkan penandanya;
- Kumpulkan blok yang dihasilkan dalam urutan yang benar dan dapatkan file sumbernya.
Bagi pecinta diagram blok
Di bawah ini adalah diagram blok dari algoritma pencatatan. Algoritme menerima tiga file sebagai masukan:
-Gambar sistem file;
-File dengan kunci enkripsi untuk AES;
-File dengan spidol.
Setelah program dijalankan, file Read akan muncul, yang merupakan file yang diekstraksi dari sistem file steganograf; jika kunci atau penanda yang ditentukan salah, maka file Read akan kosong.
(bagi pecinta kecantikan, Anda tidak hanya dapat memasukkan file, tetapi juga "header" yang berisi informasi meta: nama file, hak, waktu modifikasi terakhir, dll.)
Otomatisasi permulaan
Demi kenyamanan, skrip bash ditulis untuk mengotomatiskan peluncuran di Linux (diuji pada Ubuntu 16.04.3 LTS).
Mari kita lihat peluncurannya selangkah demi selangkah.
Rekam:
- sudo Copy_Flash.sh “DEVICE” - dapatkan gambar FS dari DEVICE (flash);
- ./Write.sh “FILE” “KEY” “MARKER” – membuat lingkungan virtual, mengunduh perpustakaan yang diperlukan dan menjalankan skrip penulisan;
- sudo ./Write_Flash.sh “DEVICE” – tulis lagi FS yang diubah ke DEVICE.
Membaca:
- sudo Copy_Flash.sh “DEVICE” - dapatkan gambar FS dari DEVICE (flash);
- ./Read.sh “KEY” 'MARKER” - buat lingkungan virtual, unduh perpustakaan yang diperlukan dan jalankan skipt untuk membaca;
- Di direktori saat ini, buka file Baca - ini adalah informasi zip.
Kesimpulan
Metode steganografi ini mungkin memerlukan perbaikan, pengujian tambahan dan perluasan ke sistem file yang lebih populer, seperti
Namun tujuan dari pekerjaan ini adalah untuk menunjukkan prinsip yang memungkinkan untuk melakukan penyimpanan informasi tersembunyi dalam sistem file.
Dengan bantuan algoritme semacam itu, Anda dapat menyimpan informasi tanpa rasa takut, dan jika, jika Anda mengetahui kuncinya, sistem seperti itu dapat diretas bukan dengan kekerasan (tetapi dengan algoritme yang sangat panjang), maka tanpa mengetahui kuncinya, ini sistem menurut saya benar-benar stabil, namun, ini mungkin menjadi alasan untuk artikel terpisah.
Semua kode diimplementasikan dalam Python versi 3.5.2.
(Ya, ya, saya tahu bahwa untuk versi produksi Anda perlu menulis sesuatu yang "cepat", misalnya C 😉)
Dalam implementasi ini, ukuran file masukan untuk steganografi tidak boleh melebihi 1000 kB.
Saya ingin mengucapkan terima kasih kepada pengguna
Sumber: www.habr.com