Tere Habr.
Tahaksin teile tutvustada väikest projekti
Tegin projekti teabe varjatud salvestamiseks failisüsteemis (edaspidi ФС).
Seda saab kasutada konfidentsiaalse teabe varastamiseks hariduslikel eesmärkidel.
Prototüübiks valiti väga vana Linux FS
Реализация
Rakendamise kaalutlused
Kui ext2 standardit on hea “lahti harutada”, siis võid asendada selle, et FS-is on nn.
Kui salvestate peidetud teavet ilma krüptimiseta, on see isegi FS-i hägususest hoolimata liiga silmatorkav, eriti kui programmeerija teab, mida otsida. Seetõttu otsustati kõik lähtefaili plokid krüpteerida. Valisin plokkšifri
Et lugemisel vajalikud klotsid kõigist teistest eraldada, otsustati igale plokile ploki algusesse lisada spetsiaalne marker. See luba krüpteeriti sõltuvalt lähtefaili ploki numbrist. See trikk võimaldas kohe mitte ainult vajalike klotside leidmise, vaid ka nende õige järjekorra äratundmise.
Süsteemi üldine tööpõhimõte.
Salvestusalgoritm
Punktid:
- Esmalt kirjutage osa teavet lähtefailisüsteemi;
- Kustutage see teave (mitte tingimata kõik);
- Peidetav fail jagatakse võrdse pikkusega plokkideks, lisades sellele markeri;
- Krüpteeri need plokid;
- Asetage krüpteeritud plokid tühjadesse FS-plokkidesse.
Plokkskeemide armastajatele
Allpool on salvestusalgoritmi plokkskeem. Algoritm saab sisendiks neli faili:
-Muudetatava failisüsteemi pilt;
-Steganograafiale allutatud fail;
-AES-i krüpteerimisvõtmega fail;
-Viil markeriga.
Tasub kohe märkida, et sellel algoritmil on üks puudus: pärast faili FS-i kirjutamist, ei tohi kirjutage FS-i midagi uut, kuna igasugune uus teave võib sattuda plokkidesse, mille oleme oma ZIP-failile eraldanud, kuigi see avab ka võimaluse "meie rajad kiiresti katta".
Kuid on üsna ilmne, kuidas seda parandada: FS-i plokkide kirjutamise algoritm on vaja ümber kirjutada. See on arusaadav, kuid uskumatult aeganõudev ülesanne.
Proof Of Consept puhul ma seda ei rakendanud.
Selle tulemusena tehakse FS-is järgmised muudatused: selline näeb FS välja enne steganograafiat (eelnevalt salvestati helifail).
Ja selline näeb FS välja, kui teave on juba kokku pandud.
Lugemisalgoritm
Punktid:
- Teades võtit ja markerite koostamise meetodit, koostage esimesed N markerit, tagades, et N korrutatuna failisüsteemi ploki pikkusega on suurem kui pakitud faili pikkus;
- Otsige FS-st markeritega algavaid plokke;
- Dešifreerige saadud plokid ja eraldage markerid;
- Koguge saadud plokid õiges järjekorras ja hankige lähtefail.
Plokkskeemide armastajatele
Allpool on salvestusalgoritmi plokkskeem. Algoritm saab sisendiks kolm faili:
-Failisüsteemi pilt;
-AES-i krüpteerimisvõtmega fail;
-Viil markeriga.
Pärast programmi käivitamist kuvatakse lugemisfail, mis on steganograafiga failisüsteemist ekstraktitud fail; kui võti või marker on valesti määratud, on lugemisfail tühi.
(ilusõpradele saate sisestada mitte ainult faili, vaid ka "päise", mis sisaldab metateavet: faili nimi, õigused, viimati muudetud aeg jne.)
Käivitamise automatiseerimine
Mugavuse huvides kirjutati bash-skriptid Linuxis käivitamise automatiseerimiseks (testitud Ubuntu 16.04.3 LTS-is).
Vaatame käivitamist samm-sammult.
Kirje:
- sudo Copy_Flash.sh “DEVICE” - hankige FS-pilt seadmest DEVICE (flash);
- ./Write.sh “FILE” “KEY” “MARKER” – loo virtuaalne keskkond, lae alla vajalikud teegid ja käivita kirjutamisskript;
- sudo ./Write_Flash.sh “DEVICE” – kirjuta muudetud FS uuesti seadmesse DEVICE.
Lugemine:
- sudo Copy_Flash.sh “DEVICE” - hankige FS-pilt seadmest DEVICE (flash);
- ./Read.sh “KEY” MARKER – loo virtuaalne keskkond, laadi alla vajalikud teegid ja käivita lugemiseks vahelejätmine;
- Avage praeguses kataloogis fail Read - see on pakitud teave.
Järeldus
See steganograafia meetod vajab ilmselt täiustamist, täiendavat testimist ja laiendust populaarsematele failisüsteemidele, nt
Kuid selle töö eesmärk oli näidata põhimõtet, mille järgi on võimalik failisüsteemis teavet varjatud salvestada.
Selliste algoritmide abil saate kartmatult teavet salvestada ja kui võtit teades on võimalik sellist süsteemi häkkida mitte toore jõu (vaid väga pika algoritmi) abil, siis võtit teadmata on see süsteem tundub mulle täiesti stabiilne, kuid see võib olla põhjus eraldi artikli jaoks.
Kogu kood on rakendatud Pythoni versioonis 3.5.2.
(Jah, jah, ma tean, et tootmisversiooni jaoks on vaja kirjutada midagi “kiire”, näiteks C 😉)
Selles teostuses ei tohiks steganograafia sisendfaili suurus ületada 1000 kB.
Tahan avaldada kasutajale tänu
Allikas: www.habr.com