Hei Habr.
Aș dori să vă prezint un mic proiect despre
Am realizat un proiect privind stocarea ascunsă a informațiilor în sistemul de fișiere (mai departe FS).
Acesta poate fi folosit pentru a fura informații confidențiale în scopuri educaționale.
Un Linux FS foarte vechi a fost ales ca prototip
punerea în aplicare
Considerații de implementare
Dacă este bine să „descălci” standardul ext2, atunci poți înlocui că în FS există așa-numitul
Dacă stocați informații ascunse fără criptare, atunci, chiar și în ciuda neclarității sale în FS, acestea vor fi în continuare prea vizibile, mai ales dacă programatorul știe ce să caute. Prin urmare, s-a decis criptarea tuturor blocurilor din fișierul sursă. Am ales cifrul bloc
Pentru a separa blocurile necesare de toate celelalte la citire, s-a decis să se adauge un marker special fiecărui bloc la începutul blocului. Acest token a fost criptat în funcție de numărul blocului din fișierul sursă. Acest truc a făcut imediat posibilă nu numai găsirea blocurilor necesare, ci și recunoașterea ordinii corecte a acestora.
Principiul general de funcționare al sistemului.
Algoritm de înregistrare
Punctele:
- Mai întâi scrieți câteva informații în sistemul de fișiere sursă;
- Ștergeți aceste informații (nu neapărat toate);
- Fișierul de ascuns este împărțit în blocuri de lungime egală, adăugând un marker;
- Criptați aceste blocuri;
- Plasați blocuri criptate în blocuri FS goale.
Pentru iubitorii de diagrame bloc
Mai jos este o diagramă bloc a algoritmului de înregistrare. Algoritmul primește patru fișiere ca intrare:
-Imaginea unui sistem de fișiere modificabil;
-Dosar supus steganografiei;
-Fișier cu cheie de criptare pentru AES;
-Fișier cu marker.
Merită remarcat imediat că acest algoritm are un dezavantaj: după ce ați scris fișierul în FS, nu poate scrieți ceva nou în FS, deoarece orice informație nouă poate ajunge în blocurile pe care le-am alocat fișierului nostru arhivat, deși acest lucru deschide, de asemenea, posibilitatea de a „acoperi rapid urmele noastre”.
Dar este destul de evident cum poate fi remediat acest lucru: este necesar să rescrieți algoritmul pentru scrierea blocurilor în FS. Aceasta este o sarcină de înțeles, dar incredibil de consumatoare de timp.
Pentru Proof Of Consept nu am implementat acest lucru.
Ca rezultat, următoarele modificări vor fi aduse FS; așa arată FS înainte de steganografie (un fișier audio a fost înregistrat anterior).
Și așa arată FS cu informațiile deja arhivate.
Algoritm de citire
Punctele:
- Cu cunoștințele cheii și a metodei de construire a markerilor, compuneți primii N markeri, cu garanția că N înmulțit cu lungimea blocului sistemului de fișiere este mai mare decât lungimea fișierului zip;
- Căutați blocuri în FS începând cu markeri;
- Descifrați blocurile primite și separați marcajele;
- Colectați blocurile rezultate în ordinea corectă și obțineți fișierul sursă.
Pentru iubitorii de diagrame bloc
Mai jos este o diagramă bloc a algoritmului de înregistrare. Algoritmul primește trei fișiere ca intrare:
-Imaginea sistemului de fișiere;
-Fișier cu cheie de criptare pentru AES;
-Fișier cu marker.
După rularea programului, apare fișierul Citire, care va fi fișierul extras din sistemul de fișiere steganograf; dacă cheia sau marcatorul a fost specificat incorect, atunci fișierul Citire va fi gol.
(pentru iubitorii de frumos, puteți introduce nu numai fișierul, ci și un „antet” care conține metainformații: numele fișierului, drepturile, ora ultimei modificări etc.)
Automatizarea pornirii
Pentru comoditate, scripturile bash au fost scrise pentru a automatiza lansarea pe Linux (testat pe Ubuntu 16.04.3 LTS).
Să ne uităm la lansare pas cu pas.
înregistrare:
- sudo Copy_Flash.sh „DEVICE” - obțineți imaginea FS de la DEVICE (flash);
- ./Write.sh „FIȘIER” „CHEIE” „MARKER” – creați un mediu virtual, descărcați bibliotecile necesare și rulați scriptul de scriere;
- sudo ./Write_Flash.sh „DEVICE” – scrieți din nou FS modificat în DEVICE.
Citind:
- sudo Copy_Flash.sh „DEVICE” - obțineți imaginea FS de la DEVICE (flash);
- ./Read.sh „KEY” „MARKER” - creați un mediu virtual, descărcați bibliotecile necesare și rulați skipt pentru citire;
- În directorul curent, deschideți fișierul Citire - acestea sunt informațiile arhivate.
Concluzie
Această metodă de steganografie necesită probabil îmbunătățiri, testare suplimentară și extindere la sisteme de fișiere mai populare, cum ar fi
Dar scopul acestei lucrări a fost de a arăta principiul prin care este posibilă stocarea ascunsă a informațiilor în sistemul de fișiere.
Cu ajutorul unor astfel de algoritmi, puteți stoca informații fără teamă și, dacă, dacă cunoașteți cheia, este posibil să piratați un astfel de sistem nu prin forță brută (ci printr-un algoritm foarte lung), atunci fără a cunoaște cheia, aceasta sistemul mi se pare absolut stabil, cu toate acestea, acest lucru poate servi drept motiv pentru un articol separat.
Tot codul este implementat în versiunea Python 3.5.2.
(Da, da, știu că pentru versiunea de producție trebuie să scrieți ceva „rapid”, de exemplu C 😉)
În această implementare, dimensiunea fișierului de intrare pentru steganografie nu trebuie să depășească 1000 kB.
Vreau să-mi exprim recunoștința față de utilizator
Sursa: www.habr.com