Fayl tizimi steganografiyasi

Salom, Xabr.

Men sizga kichik loyihani taqdim qilmoqchiman steganografiya, o'qishdan bo'sh vaqtlarimda qilingan.

Men fayl tizimidagi ma'lumotlarni yashirin saqlash loyihasini yaratdim (bundan keyin FS).
Bu ta'lim maqsadlarida maxfiy ma'lumotlarni o'g'irlash uchun ishlatilishi mumkin.

Fayl tizimi steganografiyasi

Prototip sifatida juda eski Linux FS tanlangan ext2.

РСализация

Amalga oshirish masalalari

Agar ext2 standartini "ochish" yaxshi bo'lsa, uni FSda o'zgartirishingiz mumkin. Superbloklar, bu tizim haqida asosiy ma'lumotlarni taqdim etadi. Men topilganimdan keyin Bitmapni bloklash ΠΈ Inode jadvali. Deyarli darhol ma'lumotni hozirgi bo'sh FS bloklariga yozib olish g'oyasi tug'ildi. Endi qurollangan dasturchidan himoya qilish haqida o'ylash kerak edi hex muharriri.

Agar siz yashirin ma'lumotni shifrlashsiz saqlasangiz, FSda uning xiralashganligiga qaramay, u juda ko'zga tashlanadigan bo'ladi, ayniqsa dasturchi nimani izlash kerakligini bilsa. Shuning uchun, manba faylning barcha bloklarini shifrlashga qaror qilindi. Men blokli shifrni tanladim AES, lekin siz tushunganingizdek, bu muhim emas.

O'qish paytida kerakli bloklarni barcha boshqalardan ajratish uchun blokning boshida har bir blokga maxsus marker qo'shishga qaror qilindi. Ushbu token manba faylidagi blok raqamiga qarab shifrlangan. Ushbu hiyla nafaqat kerakli bloklarni topishga, balki ularning to'g'ri tartibini aniqlashga ham imkon berdi.

Tizimning umumiy ishlash printsipi.

Fayl tizimi steganografiyasi

Yozib olish algoritmi

Mahsulotlar bo'yicha:

  • Avval manba fayl tizimiga ba'zi ma'lumotlarni yozing;
  • Ushbu ma'lumotni o'chirib tashlang (barchasi shart emas);
  • Yashirish kerak bo'lgan fayl marker qo'shib, teng uzunlikdagi bloklarga bo'linadi;
  • Ushbu bloklarni shifrlash;
  • Shifrlangan bloklarni bo'sh FS bloklariga joylashtiring.

Blok diagramma sevuvchilar uchun

Quyida ro'yxatga olish algoritmining blok diagrammasi keltirilgan. Algoritm kirish sifatida to'rtta faylni oladi:
-O'zgartirilishi mumkin bo'lgan fayl tizimining tasviri;
-Steganografiyaga tegishli fayl;
-AES uchun shifrlash kaliti bilan fayl;
- Marker bilan fayl.
Fayl tizimi steganografiyasi

Darhol shuni ta'kidlash kerakki, ushbu algoritmning bitta kamchiligi bor: faylni FSga yozgandan so'ng, mumkin emas FS-ga yangi narsalarni yozing, chunki har qanday yangi ma'lumot bizning ziplangan faylimizga ajratilgan bloklarga tushishi mumkin, ammo bu "izimizni tezda yopish" imkoniyatini ham ochadi.

Ammo buni qanday tuzatish mumkinligi aniq: FSda bloklarni yozish algoritmini qayta yozish kerak. Bu tushunarli, ammo juda ko'p vaqt talab qiladigan ish.
Proof Of Consept uchun men buni amalga oshirmadim.

Natijada, FSga quyidagi o'zgartirishlar kiritiladi; FS steganografiyadan oldin shunday ko'rinadi (audio fayl avvalroq yozilgan).
Fayl tizimi steganografiyasi
Va FS allaqachon ziplangan ma'lumotlar bilan shunday ko'rinadi.
Fayl tizimi steganografiyasi

O'qish algoritmi

Mahsulotlar bo'yicha:

  • Kalit va markerlarni qurish usulini bilgan holda, birinchi N markerlarni tuzing, bunda N fayl tizimi blokining uzunligiga ko'paytirilsa, ziplangan fayl uzunligidan kattaroqdir;
  • FSda markerlardan boshlab bloklarni qidiring;
  • Qabul qilingan bloklarni dekodlash va markerlarni ajratish;
  • Olingan bloklarni to'g'ri tartibda to'plang va manba faylini oling.

Blok diagramma sevuvchilar uchun

Quyida ro'yxatga olish algoritmining blok diagrammasi keltirilgan. Algoritm kirish sifatida uchta faylni oladi:
-fayl tizimi tasviri;
-AES uchun shifrlash kaliti bilan fayl;
- Marker bilan fayl.
Fayl tizimi steganografiyasi

Dastur ishga tushirilgandan so'ng, steganografiya qilingan fayl tizimidan olingan fayl bo'lgan Read fayli paydo bo'ladi; agar kalit yoki marker noto'g'ri ko'rsatilgan bo'lsa, Read fayli bo'sh bo'ladi.
(go'zallikni sevuvchilar uchun siz nafaqat faylni, balki meta-ma'lumotni o'z ichiga olgan "sarlavha" ni ham kiritishingiz mumkin: fayl nomi, huquqlar, oxirgi o'zgartirilgan vaqt va hk.)

Ishga tushirishni avtomatlashtirish

Qulaylik uchun Linuxda ishga tushirishni avtomatlashtirish uchun bash skriptlari yozilgan (Ubuntu 16.04.3 LTS da sinovdan o'tgan).
Keling, ishga tushirishni bosqichma-bosqich ko'rib chiqaylik.
Yozuv:

  1. sudo Copy_Flash.sh "DEVICE" - DEVICE (flesh) dan FS tasvirini oling;
  2. ./Write.sh β€œFILE” β€œKEY” β€œMARKER” – virtual muhit yaratish, kerakli kutubxonalarni yuklab olish va yozish skriptini ishga tushirish;
  3. sudo ./Write_Flash.sh β€œDEVICE” – oβ€˜zgartirilgan FSni yana QURILMA ga yozing.

O'qish:

  1. sudo Copy_Flash.sh "DEVICE" - DEVICE (flesh) dan FS tasvirini oling;
  2. ./Read.sh β€œKEY” 'MARKER” - virtual muhit yaratish, kerakli kutubxonalarni yuklab olish va o'qish uchun skipni ishga tushirish;
  3. Joriy katalogda Read faylini oching - bu ziplangan ma'lumot.

xulosa

Ushbu steganografiya usuli, ehtimol, takomillashtirishga, qo'shimcha sinovlarga va mashhurroq fayl tizimlariga kengaytmaga muhtoj Yog '32, NTFS ΠΈ ext4.
Ammo bu ishning maqsadi fayl tizimida ma'lumotlarni yashirin saqlashni amalga oshirish mumkin bo'lgan printsipni ko'rsatish edi.
Bunday algoritmlar yordamida siz ma'lumotni qo'rqmasdan saqlashingiz mumkin va agar siz kalitni bilsangiz, bunday tizimni qo'pol kuch bilan emas (lekin juda uzoq algoritm bilan) buzish mumkin bo'lsa, kalitni bilmasdan, bu Menimcha, tizim mutlaqo barqaror bo'lib tuyuladi, ammo bu alohida maqola uchun sabab bo'lishi mumkin.

Barcha kodlar Python 3.5.2 versiyasida amalga oshiriladi. Ishga misol mening youtube kanalimda taqdim etilgan. Loyihaning to'liq kodi saytga joylashtirilgan Github.
(Ha, ha, bilaman, ishlab chiqarish versiyasi uchun siz "tezda" yozishingiz kerak, masalan, C πŸ˜‰)
Ushbu amalga oshirishda steganografiya uchun kirish faylining hajmi 1000 kB dan oshmasligi kerak.

Men foydalanuvchiga o'z minnatdorchiligimni bildirmoqchiman PavelMSTU o'rganishni rejalashtirishda qimmatli maslahatlar va maqola dizayni bo'yicha tavsiyalar uchun.

Manba: www.habr.com

a Izoh qo'shish