Tere, Habr.
Soovin tutvustada teile väikest projekti , mis on tehtud vabal ajal õppimisest.
Tegin projekti info peitmise kohta failisüsteemis (edaspidi FS).
See võib olla rakendatav konfidentsiaalse info varastamiseks hariduslikel eesmärkidel.

Katseseadmeks valiti päris vana Linuxi FS .
Rakendamine
Rakendamise kaalutlused
Kui korralikult "peenestada" standard ext2, siis saab asendada niiöelda , kus on antud põhiteave süsteemi kohta. Minu poolt leiti ja . Peaaegu kohe sündis idee salvestada teavet FS-i hetkel tühjadesse plokkidesse. Nüüd tuli välja mõelda kaitse programmeerija eest, relvastatud .
Kui hoida peidetud teavet ilma krüpteerimiseta, siis isegi hoolimata selle hajutatusest FS-is, jääb see ikkagi liiga silmatorkavaks, eriti kui programmeerija teab, mida otsida. Seetõttu otsustati krüpteerida kõik algse faili plokid. Valisin plokkkrüpteerimise , kuid nagu te mõistate, ei ole see põhimõtteline.
Kasutades plokkide eristamiseks lugemise ajal, otsustati iga ploki algusesse lisada spetsiaalne märk. See märk krüpteeriti sõltuvalt ploki numbrist algses failis. Selline nipp võimaldas mitte ainult vajalikku plokki leida, vaid ka tuvastada nende õige järjekord.
Süsteemi töö üldpõhimõte.

Salvestamise algoritm
Punktide kaupa:
- Esmalt salvestage algsesse failisüsteemi mingi teave;
- Kustutage see teave (mitte tingimata kogu);
- Fail peitmiseks jagada plokkideks, millel on sama pikkus, lisades märgi;
- Krüpteerida need plokid;
- Paigutada krüpteeritud plokid FS-i tühjadesse plokkidesse.
Plokkdiagrammide armastajatele
Allpool on esitatud salvestamise algoritmi plokkdiagramm. Algoritm saab neli faili sisendiks:
- Muudetud failisüsteemi pilt;
- Fail, mis läheb steganograafia alla;
- AES-ks krüpteerimise võti;
- Märgiga fail.

Tasub märkida, et sellel algoritmil on üks puudus: pärast faili salvestamist FS-i, sisestada URL-i (see ei ole kunagi töötanud, kuid sisestusala lubas URL-i määrata, mis segas kasutajaid). salvestada midagi uut failisüsteemi, kuna iga uus teave võib sattuda nendesse plokkidesse, mis me oleme määranud meie steganograafilisele failile, tõsi, see avab võimaluse "kiireks jälgede peitmiseks".
Aga on üsna selge, kuidas seda parandada: on vajalik failisüsteemi plokkide kirjutamise algoritmi ümberkirjutamine. See on arusaadav, kuid erakordselt töömahukas ülesanne.
Proof Of Concept'i jaoks ei ole ma seda rakendanud.
Tulemusena saab olema järgmised muutused failisüsteemis, nii näeb failisüsteem välja enne steganograafiat (enne on salvestatud helifail).

Ja nii näeb failisüsteem välja koos juba steganograafilise teabega.

Lugemise algoritm
Punktide kaupa:
- Teades võtit ja markerite koostamise meetodit, koostada esimesed N markereid, tagades et N, korrutatud failisüsteemi ploki pikkusega, on suurem steganograafilise faili pikkusest;
- Otsida failisüsteemist plokke, mis algavad markeritest;
- Dekodeerida saadud plokid ja eraldada markerid;
- Koguda saadud plokid õiges järjestuses ja saada algne fail.
Plokkdiagrammide armastajatele
Allpool on esitatud algoritmi kirjutamise vooskeem. Algoritmi sisendiks on kolm faili:
-Failisüsteemi image;
- AES-ks krüpteerimise võti;
- Märgiga fail.

Pärast programmi töötamist ilmub fail Read, mis on steganograafilisest failisüsteemist ekstraheeritud fail; kui võti või marker oli valesti määratud, on fail Read tühi.
(ilusate asjade armastajatele on võimalik lisada mitte ainult faili, vaid ka "päist", mis sisaldab metaandmeid: faili nimi, õigused, viimase muutmise aeg jne.)
Käivitamise automatiseerimine
Mugavuse huvides on kirjutatud bash skriptid, mis automatiseerivad käivitamise Linuxis (katsetatud Ubuntu 16.04.3 LTS peal).
Analüüsime käivitamist samm-sammult.
Salvestamine:
- sudo Copy_Flash.sh "DEVICE" — saame failisüsteemi pildi DEVICE'ist (mälupulk);
- .\/Write.sh "FILE" "KEY" "MARKER" – loome virtuaalse keskkonna, allalaadime vajalikud raamatukogud ja käivitame kirjutamis skripti;
- sudo .\/Write_Flash.sh "DEVICE" – salvestame muudetud failisüsteemi uuesti DEVICE'ile.
Lugemine:
- sudo Copy_Flash.sh "DEVICE" — saame failisüsteemi pildi DEVICE'ist (mälupulk);
- .\/Read.sh "KEY" 'MARKER' — loome virtuaalse keskkonna, allalaadime vajalikud raamatukogud ja käivitame lugemis-skripti;
- Avame praeguses kataloogis faili Read – see on steganograafiline teave.
Kokkuvõte
See steganograafia meetod vajab tõenäoliselt täiendavat töötlemist, testimist ja laiemat rakendamist populaarsematele failisüsteemidele, nagu , ja .
Käesoleva töö eesmärgiks oli näidata põhimõtet, mille abil saab teostada peidetud teabe salvestamist failisüsteemis.
Sarnaste algoritmide abil on võimalik teavet ohutult salvestada. Kui süsteemi, mille puhul on teada võti, saab murda, kuigi see nõuab pikka algoritmi, siis ilma võtmeta tundub see süsteem mulle täiesti kindel. Sellegipoolest võib see olla põhjus eraldi artikli jaoks.
Kogu kood on kirjutatud Python 3.5.2 keeles. on esitatud minu YouTube kanalis. Projekti täiskood on saadaval .
(Jah, ma tean, et tootmisversiooni jaoks tuleb kirjutada millegi „kiirema” peale, näiteks C keeles 😉 )
Käesolevas teostuses ei tohi steganograafia sisendfaili suurus ületada 1000 kB.
Soovin tänada kasutajat kasulike nõuannete eest uurimistöö planeerimisel ja artikli vormimise kohta.
Allikas: habr.com
