Sveiki, Habr.
Norėčiau jums pristatyti nedidelį projektą
Sukūriau paslėpto informacijos saugojimo failų sistemoje projektą (toliau FS).
Tai gali būti naudojama siekiant pavogti konfidencialią informaciją švietimo tikslais.
Kaip prototipas buvo pasirinktas labai senas Linux FS
Vykdymas
Įgyvendinimo svarstymai
Jei gerai „išnarplioti“ ext2 standartą, tuomet galite pakeisti, kad FS yra vadinamasis.
Jei saugote paslėptą informaciją be šifravimo, tada, nepaisant jos neryškumo FS, ji vis tiek bus per daug ryški, ypač jei programuotojas žino, ko ieškoti. Todėl buvo nuspręsta užšifruoti visus šaltinio failo blokus. Pasirinkau blokinį šifrą
Norint atskirti reikiamus blokus nuo visų kitų skaitant, buvo nuspręsta prie kiekvieno bloko bloko pradžioje pridėti specialų žymeklį. Šis prieigos raktas buvo užšifruotas atsižvelgiant į bloko numerį šaltinio faile. Šis triukas iš karto leido ne tik rasti reikiamus blokus, bet ir atpažinti teisingą jų tvarką.
Bendras sistemos veikimo principas.
Įrašymo algoritmas
Taškai:
- Pirmiausia įrašykite tam tikrą informaciją į šaltinio failų sistemą;
- Ištrinkite šią informaciją (nebūtinai visą);
- Slėptinas failas padalijamas į vienodo ilgio blokus, pridedant žymeklį;
- Užšifruoti šiuos blokus;
- Įdėkite užšifruotus blokus į tuščius FS blokus.
Blokinių schemų mėgėjams
Žemiau pateikiama įrašymo algoritmo blokinė schema. Algoritmas kaip įvestį gauna keturis failus:
-Modifikuojamos failų sistemos vaizdas;
- Failai, kuriems taikoma steganografija;
-Failas su AES šifravimo raktu;
- Failas su žymekliu.
Iš karto verta paminėti, kad šis algoritmas turi vieną trūkumą: įrašę failą į FS, negaliu įrašykite ką nors naujo į FS, nes bet kokia nauja informacija gali patekti į blokus, kuriuos skyrėme mūsų suglaudintam failui, nors tai taip pat atveria galimybę „greitai uždengti mūsų pėdsakus“.
Tačiau visiškai akivaizdu, kaip tai galima ištaisyti: būtina perrašyti blokų rašymo algoritmą FS. Tai suprantama, bet neįtikėtinai daug laiko reikalaujanti užduotis.
„Proof Of Consept“ to neįgyvendinau.
Dėl to FS bus atlikti šie pakeitimai; taip FS atrodo prieš steganografiją (anksčiau buvo įrašytas garso failas).
Štai kaip atrodo FS su jau supakuota informacija.
Skaitymo algoritmas
Taškai:
- Žinodami raktą ir žymeklių konstravimo metodą, sukurkite pirmuosius N žymeklius, užtikrindami, kad N, padaugintas iš failų sistemos bloko ilgio, yra didesnis nei suglaudinto failo ilgis;
- Ieškokite blokų FS, pradedant žymekliais;
- Iššifruoti gautus blokus ir atskirti žymeklius;
- Surinkite gautus blokus teisinga tvarka ir gaukite šaltinio failą.
Blokinių schemų mėgėjams
Žemiau pateikiama įrašymo algoritmo blokinė schema. Algoritmas kaip įvestį gauna tris failus:
-Failų sistemos vaizdas;
-Failas su AES šifravimo raktu;
- Failas su žymekliu.
Paleidus programą, pasirodo skaitymo failas, kuris bus iš steganografinės failų sistemos ištrauktas failas; jei raktas arba žymeklis buvo nurodytas neteisingai, skaitymo failas bus tuščias.
(grožio mėgėjams galite įterpti ne tik failą, bet ir „antraštę“, kurioje yra metainformacija: failo pavadinimas, teisės, paskutinio modifikavimo laikas ir kt.)
Paleidimo automatizavimas
Patogumui buvo parašyti bash scenarijai automatizuoti paleidimą Linux sistemoje (išbandyta Ubuntu 16.04.3 LTS).
Pažvelkime į paleidimą žingsnis po žingsnio.
Įrašas:
- sudo Copy_Flash.sh "DEVICE" - gaukite FS vaizdą iš DEVICE (flash);
- ./Write.sh „FILE“ „KEY“ „MARKER“ – sukurkite virtualią aplinką, atsisiųskite reikiamas bibliotekas ir paleiskite rašymo scenarijų;
- sudo ./Write_Flash.sh „DEVICE“ – pakeistą FS dar kartą įrašykite į DEVICE.
Skaitymas:
- sudo Copy_Flash.sh "DEVICE" - gaukite FS vaizdą iš DEVICE (flash);
- ./Read.sh „KEY“ „MARKER“ – sukurkite virtualią aplinką, atsisiųskite reikiamas bibliotekas ir paleiskite praleidimą skaitymui;
- Dabartiniame kataloge atidarykite skaitymo failą - tai yra supakuota informacija.
išvada
Šį steganografijos metodą tikriausiai reikia tobulinti, papildomai išbandyti ir išplėsti į populiaresnes failų sistemas, pvz
Tačiau šio darbo tikslas buvo parodyti principą, pagal kurį galima atlikti paslėptą informacijos saugojimą failų sistemoje.
Tokių algoritmų pagalba galima be baimės saugoti informaciją, o jei žinant raktą į tokią sistemą galima nulaužti ne žiauria jėga (o labai ilgu algoritmu), tai nežinant rakto, tai sistema man atrodo visiškai stabili, tačiau tai gali būti atskiro straipsnio priežastis.
Visas kodas įdiegtas Python 3.5.2 versijoje.
(Taip, taip, žinau, kad gamybinei versijai reikia rašyti kažką „greitai“, pvz., C 😉)
Šiuo atveju steganografijos įvesties failo dydis neturėtų viršyti 1000 kB.
Noriu išreikšti savo dėkingumą vartotojui
Šaltinis: www.habr.com