Hai Habr.
Saya ingin membentangkan projek kecil kepada anda
Saya membuat projek mengenai penyimpanan maklumat tersembunyi dalam sistem fail (selanjutnya FS).
Ini boleh digunakan untuk mencuri maklumat sulit untuk tujuan pendidikan.
Linux FS yang sangat lama telah dipilih sebagai prototaip
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
Pertimbangan Pelaksanaan
Jika adalah baik untuk "merungkai" standard ext2, maka anda boleh menggantikannya dalam FS terdapat apa yang dipanggil
Jika anda menyimpan maklumat tersembunyi tanpa penyulitan, maka, walaupun ia kabur dalam FS, ia masih akan menjadi terlalu ketara, terutamanya jika pengaturcara tahu apa yang perlu dicari. Oleh itu, ia telah memutuskan untuk menyulitkan semua blok fail sumber. Saya memilih sifir blok
Untuk memisahkan blok yang diperlukan daripada semua yang lain semasa membaca, ia telah memutuskan untuk menambah penanda khas pada setiap blok pada permulaan blok. Token ini disulitkan bergantung pada nombor blok dalam fail sumber. Silap mata ini serta-merta membolehkan bukan sahaja untuk mencari blok yang diperlukan, tetapi juga untuk mengenali susunan yang betul.
Prinsip operasi umum sistem.
Algoritma rakaman
Mengenai perkara:
- Mula-mula tulis beberapa maklumat ke sistem fail sumber;
- Padamkan maklumat ini (tidak semestinya semua);
- Fail yang akan disembunyikan dibahagikan kepada blok yang sama panjang, menambah penanda;
- Sulitkan blok ini;
- Letakkan blok yang disulitkan dalam blok FS kosong.
Untuk pencinta gambarajah blok
Di bawah ialah gambarajah blok algoritma rakaman. Algoritma menerima empat fail sebagai input:
-Imej sistem fail yang boleh diubah suai;
-Fail tertakluk kepada steganografi;
-Fail dengan kunci penyulitan untuk AES;
-Fail dengan penanda.
Perlu diperhatikan dengan segera bahawa algoritma ini mempunyai satu kelemahan: selepas menulis fail ke FS, tidak boleh tulis apa-apa yang baharu ke dalam FS, kerana sebarang maklumat baharu boleh berakhir dalam blok yang telah kami peruntukkan pada fail zip kami, walaupun ini juga membuka kemungkinan "menutup jejak kami dengan cepat."
Tetapi agak jelas bagaimana ini boleh diperbaiki: adalah perlu untuk menulis semula algoritma untuk menulis blok dalam FS. Ini adalah tugas yang boleh difahami, tetapi sangat memakan masa.
Untuk Proof Of Consept saya tidak melaksanakan ini.
Hasilnya ialah perubahan berikut dalam FS, ini adalah rupa FS sebelum steganografi (fail audio telah dirakam sebelum ini).
Dan ini adalah rupa FS dengan maklumat yang telah dizipkan.
Algoritma membaca
Mengenai perkara:
- Dengan pengetahuan tentang kunci dan kaedah membina penanda, karang penanda N pertama, dengan jaminan bahawa N didarab dengan panjang blok sistem fail adalah lebih besar daripada panjang fail berzip;
- Cari blok dalam FS bermula dengan penanda;
- Jelaskan blok yang diterima dan pisahkan penanda;
- Kumpulkan blok yang terhasil dalam susunan yang betul dan dapatkan fail sumber.
Untuk pencinta gambarajah blok
Di bawah ialah gambarajah blok algoritma rakaman. Algoritma menerima tiga fail sebagai input:
-Imej sistem fail;
-Fail dengan kunci penyulitan untuk AES;
-Fail dengan penanda.
Selepas program berjalan, fail Baca muncul, yang akan menjadi fail yang diekstrak daripada sistem fail steganografi; jika kunci atau penanda dinyatakan secara salah, maka fail Baca akan kosong.
(untuk pencinta kecantikan, anda boleh memasukkan bukan sahaja fail, tetapi "pengepala" yang mengandungi meta-maklumat: nama fail, hak, masa terakhir diubah suai, dsb.)
Automasi permulaan
Untuk kemudahan, skrip bash telah ditulis untuk mengautomasikan pelancaran pada Linux (diuji pada Ubuntu 16.04.3 LTS).
Mari lihat langkah demi langkah pelancaran.
Rekod:
- sudo Copy_Flash.sh βDEVICEβ - dapatkan imej FS daripada DEVICE (flash);
- ./Write.sh βFILEβ βKEYβ βMARKERβ β cipta persekitaran maya, muat turun perpustakaan yang diperlukan dan jalankan skrip tulis;
- sudo ./Write_Flash.sh βDEVICEβ β tulis semula FS yang ditukar kepada DEVICE.
Membaca:
- sudo Copy_Flash.sh βDEVICEβ - dapatkan imej FS daripada DEVICE (flash);
- ./Read.sh βKEYβ 'MARKER" - cipta persekitaran maya, muat turun perpustakaan yang diperlukan dan jalankan langkau untuk membaca;
- Dalam direktori semasa, buka fail Baca - ini ialah maklumat yang dizip.
Kesimpulan
Kaedah steganografi ini mungkin memerlukan penambahbaikan, ujian tambahan dan sambungan kepada sistem fail yang lebih popular, seperti
Tetapi tujuan kerja ini adalah untuk menunjukkan prinsip yang memungkinkan untuk menjalankan penyimpanan maklumat tersembunyi dalam sistem fail.
Dengan bantuan algoritma sedemikian, anda boleh menyimpan maklumat tanpa rasa takut, dan jika, jika anda mengetahui kuncinya, adalah mungkin untuk menggodam sistem sedemikian bukan dengan kekerasan (tetapi dengan algoritma yang sangat panjang), maka tanpa mengetahui kuncinya, ini sistem nampaknya benar-benar stabil, bagaimanapun, ini boleh menjadi alasan untuk artikel yang berasingan.
Semua kod dilaksanakan dalam Python versi 3.5.2.
(Ya, ya, saya tahu bahawa untuk versi pengeluaran anda perlu menulis dalam sesuatu "cepat", contohnya C π)
Dalam pelaksanaan ini, saiz fail input untuk steganografi tidak boleh melebihi 1000 kB.
Saya ingin mengucapkan terima kasih kepada pengguna
Sumber: www.habr.com