Fayl sistemində steqanoqrafiya

Hey Habr.

Sizə kiçik bir layihə təqdim etmək istərdim steqanoqrafiya, təhsildən asudə vaxtlarımda etdim.

Fayl sistemində məlumatın gizli saxlanması ilə bağlı layihə hazırladım (bundan sonra FS).
Bu, təhsil məqsədləri üçün məxfi məlumatları oğurlamaq üçün istifadə edilə bilər.

Fayl sistemində steqanoqrafiya

Prototip olaraq çox köhnə Linux FS seçilmişdir ext2.

Tətbiq

İcra Mülahizələri

Ext2 standartını "açmaq" yaxşıdırsa, FS-də sözdə olanı əvəz edə bilərsiniz. Superbloklarsistem haqqında əsas məlumatları təmin edən . Məni tapdıqdan sonra Bitmapı bloklayın и Inode Cədvəli. Demək olar ki, dərhal məlumatı hazırda boş FS bloklarına yazmaq ideyası yarandı. İndi silahlı bir proqramçıdan qorunmaq barədə düşünməyə dəyərdi hex redaktoru.

Gizli məlumatları şifrələmədən saxlayırsınızsa, FS-də bulanıq olmasına baxmayaraq, o, hələ də çox nəzərə çarpacaq, xüsusən də proqramçı nə axtaracağını bilirsə. Buna görə də mənbə faylın bütün bloklarını şifrələmək qərara alındı. Mən blok şifrəsini seçdim AES, amma başa düşdüyünüz kimi, bu vacib deyil.

Oxuyarkən zəruri blokları bütün digərlərindən ayırmaq üçün blokun əvvəlində hər bloka xüsusi marker əlavə etmək qərara alındı. Bu işarə mənbə faylındakı blok nömrəsindən asılı olaraq şifrələnmişdir. Bu hiylə dərhal lazımi blokları tapmağa deyil, həm də onların düzgün sırasını tanımağa imkan verdi.

Sistemin ümumi iş prinsipi.

Fayl sistemində steqanoqrafiya

Qeyd alqoritmi

Nöqtələr:

  • Əvvəlcə mənbə fayl sisteminə bəzi məlumatları yazın;
  • Bu məlumatı silin (mütləq hamısı deyil);
  • Gizlənəcək fayl marker əlavə edərək bərabər uzunluqlu bloklara bölünür;
  • Bu blokları şifrələyin;
  • Şifrələnmiş blokları boş FS bloklarına yerləşdirin.

Blok diaqramı sevənlər üçün

Aşağıda qeyd alqoritminin blok diaqramı verilmişdir. Alqoritm dörd faylı giriş kimi qəbul edir:
-Dəyişdirilə bilən fayl sisteminin təsviri;
-Steqanoqrafiyaya məruz qalan fayl;
-AES üçün şifrələmə açarı olan fayl;
- Marker ilə fayl.
Fayl sistemində steqanoqrafiya

Dərhal qeyd etmək lazımdır ki, bu alqoritmin bir çatışmazlığı var: faylı FS-ə yazdıqdan sonra, edə bilməz FS-ə yeni bir şey yazın, çünki hər hansı yeni məlumat ziplənmiş faylımıza ayırdığımız bloklara düşə bilər, baxmayaraq ki, bu da "izlərimizi tez bir zamanda örtmək" imkanını açır.

Ancaq bunun necə düzəldiləcəyi tamamilə aydındır: FS-də blokların yazılması alqoritmini yenidən yazmaq lazımdır. Bu başa düşülən, lakin inanılmaz dərəcədə vaxt aparan bir işdir.
Proof Of Consept üçün bunu həyata keçirməmişəm.

Nəticədə, FS-də aşağıdakı dəyişikliklər ediləcək; FS steqanoqrafiyadan əvvəl belə görünür (əvvəllər audio fayl qeydə alınıb).
Fayl sistemində steqanoqrafiya
FS artıq sıxılmış məlumatlarla belə görünür.
Fayl sistemində steqanoqrafiya

Oxuma alqoritmi

Nöqtələr:

  • Açar və markerlərin qurulması üsulunu bilməklə, N-nin fayl sistemi blokunun uzunluğuna vurulan N-nin sıxılmış faylın uzunluğundan böyük olduğuna zəmanət verərək, ilk N markerləri tərtib edin;
  • FS-də markerlərdən başlayaraq blokları axtarın;
  • Qəbul edilmiş blokları deşifrə etmək və markerləri ayırmaq;
  • Yaranan blokları düzgün ardıcıllıqla toplayın və mənbə faylını əldə edin.

Blok diaqramı sevənlər üçün

Aşağıda qeyd alqoritminin blok diaqramı verilmişdir. Alqoritm üç faylı giriş kimi qəbul edir:
-Fayl sisteminin təsviri;
-AES üçün şifrələmə açarı olan fayl;
- Marker ilə fayl.
Fayl sistemində steqanoqrafiya

Proqram işə salındıqdan sonra Oxu faylı görünür, bu, steqanoqrafiya fayl sistemindən çıxarılan fayl olacaq; açar və ya marker səhv göstərilibsə, Oxu faylı boş olacaq.
(gözəlliyi sevənlər üçün yalnız faylı deyil, meta-məlumatı ehtiva edən "başlığı" kəsə bilərsiniz: fayl adı, hüquqlar, son dəyişdirmə vaxtı və s.)

Başlanğıc avtomatlaşdırılması

Rahatlıq üçün Linux-da işə salınmanı avtomatlaşdırmaq üçün bash skriptləri yazılmışdır (Ubuntu 16.04.3 LTS-də sınaqdan keçirilmişdir).
Başlanğıc mərhələsinə addım-addım baxaq.
Qeyd:

  1. sudo Copy_Flash.sh “DEVICE” - DEVICE-dən FS şəklini əldə edin (flash);
  2. ./Write.sh “FILE” “KEY” “MARKER” – virtual mühit yaratmaq, lazımi kitabxanaları yükləmək və yazma skriptini işə salmaq;
  3. sudo ./Write_Flash.sh “DEVICE” – dəyişdirilmiş FS-i yenidən DEVICE-ə yazın.

Oxu:

  1. sudo Copy_Flash.sh “DEVICE” - DEVICE-dən FS şəklini əldə edin (flash);
  2. ./Read.sh “KEY” 'MARKER” - virtual mühit yaratmaq, lazımi kitabxanaları yükləmək və oxumaq üçün skipti işə salmaq;
  3. Cari kataloqda Oxu faylını açın - bu sıxılmış məlumatdır.

Nəticə

Bu steqanoqrafiya metodu yəqin ki, dəqiqləşdirməyə, əlavə sınaqlara və daha populyar fayl sistemlərinə genişlənməyə ehtiyac duyur Yağ 32, NTFS и ext4.
Lakin bu işin məqsədi fayl sistemində məlumatların gizli saxlanmasını həyata keçirməyin mümkün olduğu prinsipi göstərmək idi.
Bu cür alqoritmlərin köməyi ilə siz məlumatı qorxmadan saxlaya bilərsiniz və əgər açarı bilirsinizsə, belə bir sistemi kobud güclə deyil (çox uzun bir alqoritmlə) sındırmaq mümkündürsə, açarı bilmədən bu sistem mənə tamamilə sabit görünür, lakin bu, ayrı bir məqalə üçün səbəb ola bilər.

Bütün kodlar Python 3.5.2 versiyasında həyata keçirilir. İş nümunəsi youtube kanalımda təqdim olunub. Layihənin tam kodu saytda yerləşdirilib GitHub.
(Bəli, bəli, bilirəm ki, istehsal versiyası üçün "sürətli" bir şey yazmalısınız, məsələn C 😉)
Bu tətbiqdə steqanoqrafiya üçün giriş faylının ölçüsü 1000 kB-dən çox olmamalıdır.

İstifadəçiyə öz təşəkkürümü bildirmək istəyirəm PavelMSTU tədqiqatın planlaşdırılmasında dəyərli məsləhətlər və məqalənin tərtibatı ilə bağlı tövsiyələr üçün.

Mənbə: www.habr.com

Добавить комментарий