Tere, Habr.
Tahaksin teile tutvustada väikest projekti, mis käsitleb , mille tegin oma õpingute kõrvalt.
Tegin projekti, mis tegeleb teabe salajase hoidmisega failisüsteemis (edaspidi FS).
). Seda saab kasutada konfidentsiaalse teabe varastamiseks hariduslikel eesmärkidel.

Demona valisin üsna vana Linuxi failisüsteemi .
Rakendus
Rakenduse kaalutlused
Kui standardit ext2 korralikult analüüsida, selgub, et failisüsteemis on olemas nii nimetatud , milles on esitatud põhiteave süsteemi kohta. Olen leidnud ja . Peaaegu kohe tekkis idee salvestada teavet hetkeseisuga tühjadesse failisüsteemi blokki. Nüüd oli vaja mõelda kaitsele programmeerija eest, kes on relvastatud .
Kui peidetud teavet salvestada ilma krüpteerimiseta, siis isegi kui see on failisüsteemis hajutatud, on see ikkagi liiga silmatorkav, eriti kui programmeerija teab, mida otsida. Seetõttu otsustasin krüpteerida kõik algfaili blokid. Valisin plokkkrüpteeringu , kuid nagu te mõistate, pole see põhimõtteline.
Iga plokkide eristamiseks kõikidest teistest lugemise ajal otsustati igasse plokki lisada spetsiaalne markeerimismarker. See marker krüpteeriti sõltuvalt ploki numbrist algses failis. See trikk võimaldas mitte ainult vajalikke plokke leida, vaid ka nende õiget järjekorda teada.
Süsteemi töö üldpõhimõte.

Salvestamisalgoritm
Samm-sammult:
- Esialgsesse failisüsteemi tuleb salvestada mingi teave;
- Kustutada see teave (mitte tingimata kogu);
- Fail, mida tuleb peita, jagada sama pikkusega plokkideks, lisades markeri;
- Krüpteerida need plokid;
- Paigutada krüpteeritud plokid tühjadesse plokkidesse FS-is.
Plokkdiagrammi armastajatele
Allpool on esitatud salvestamisalgoritmi plokkdiagramm. Algoritm saab sisendiks neli faili:
- Muudetava failisüsteemi pilt;
- Fail, mis tuleb steganograafia alla;
- AES krüpteerimisvõti sisaldav fail;
- Markerifail.

Tuleb kohe märkida, et sellel algoritmil on üks puudus: faili salvestamisel FS-i, ei tohi salvestada FS-i mis tahes uut, kuna iga uus teave võib sattuda neisse plokkidesse, mille oleme määranud meie steganograafilisele failile, kuigi see avab võimaluse „kiirete jälgede peitmiseks”.
Aga on üsna selge, kuidas seda parandada: tuleb ümber kirjutada plokkide salvestamise algoritm FS-is. See on arusaadav, kuid äärmiselt töömahukas ülesanne.
Proof Of Concept'i jaoks ma seda ei rakendanud.
Kokkuvõttes saavad FS-is järgmised muudatused, nii näeb FS välja enne steganograafiat (eelnevalt on salvestatud audifail).

Ja nii näeb FS välja juba steganograafilise teabega.

Lugemisalgoritm
Samm-sammult:
- Teades võtit ja markerite ülesehituse viisi, koostada esimesed N markerit, tagades, et N, korrutatud failisüsteemi ploki pikkusega on suurem kui steganograafilise faili pikkus;
- Teha otsing FS-is plokkide leidmiseks, mis algavad markeritest;
- Dešifreerida saadud plokid ja eraldada markerid;
- Koguda saadud plokid õiges järjekorras ja saada lähtetükk.
Plokkdiagrammi armastajatele
Allpool on esitatud algoritmi salvestamise vooskeem. Algoritm saab sisendina kolm faili:
-Failisüsteemi pilt;
- AES krüpteerimisvõti sisaldav fail;
- Markerifail.

Programmi töö lõpetamisel ilmub fail Read, mis on steganograafiliselt salvestatud fail. Kui võti või marker on valesti määratud, jääb fail Read tühjaks.
(ilusate elementide armastajatele võib mitte ainult faili, vaid ka "pealkirja" lisada, mis sisaldab metaandmeid: faili nimi, õigused, viimane muutmise aeg jne.)
Käivitamise automatiseerimine
Mugavuse huvides on kirjutatud bash skriptid, mis automatiseerivad käivitamist Linuxis (katsetatud Ubuntu 16.04.3 LTS-l).
Lähme käivitamist samm-sammult läbi.
Salvestamine:
- sudo Copy_Flash.sh “DEVICE” — saame FS pildi DEVICE'ist (mälupulk);
- ./Write.sh “FILE” “KEY” “MARKER” – loome virtuaalse keskkonna, laeme vajalikud teegid ja käivitame kirjutamisskripti;
- sudo ./Write_Flash.sh “DEVICE” – kirjutame muudetud FS uuesti DEVICE'isse.
Lugemine:
- sudo Copy_Flash.sh “DEVICE” — saame FS pildi DEVICE'ist (mälupulk);
- ./Read.sh “KEY” ‘MARKER” — loome virtuaalse keskkonna, laeme vajalikud teegid ja käivitame lugemisskripti;
- Avasime praeguses kataloogis faili Read – see on steganograafiline teave.
Kokkuvõte
Käesolev steganograafia meetod vajab tõenäoliselt täiustamist, täiendavat testimist ja laiemat rakendamist populaarsematele failisüsteemidele, nagu , ja .
Käesoleva töö eesmärk oli näidata põhimõtet, mille abil on võimalik teavet varjatult salvestada failisüsteemis.
Sarnaste algoritmide abil on võimalik teavet ohutult salvestada. Kui võtme tundmise korral on sarnast süsteemi võimalik purustada, kasutades kuigi mitte täielikku proovimist, siis tundmatu võtmega paistab see süsteem olema täiesti vastupidav. See võib aga olla põhjuseks eraldi artikli kirjutamiseks.
Kogu kood on kirjutatud Python'i versioonis 3.5.2. on esitatud minu YouTube'i kanalil. Projekti täielik kood on saadaval .
(Jah-jah, ma tean, et tootmisversiooniks peaks kirjutama millegil 'kiiremal', näiteks C keeles 😉 )
Käesolevas teostuses ei tohi steganograafia sisendfaili suurus ületada 1000 kB.
Soovin tänada kasutajat hindamatute soovituste eest uurimistöö planeerimisel ja artikli vormistamise osas.
Allikas: habr.com
