Failų sistemos steganografija

Sveiki, Habr.

Norėčiau jums pristatyti nedidelį projektą steganografija, pagamintas laisvu nuo studijų laiku.

Sukūriau paslėpto informacijos saugojimo failų sistemoje projektą (toliau FS).
Tai gali būti naudojama siekiant pavogti konfidencialią informaciją švietimo tikslais.

Failų sistemos steganografija

Kaip prototipas buvo pasirinktas labai senas Linux FS ext2.

Vykdymas

Įgyvendinimo svarstymai

Jei gerai „išnarplioti“ ext2 standartą, tuomet galite pakeisti, kad FS yra vadinamasis. Superblokai, kuriame pateikiama pagrindinė informacija apie sistemą. Po to, kai buvau surastas Blokuoti bitmapą и Inode lentelė. Beveik iš karto gimė idėja įrašyti informaciją į šiuo metu tuščius FS blokus. Dabar vertėjo pagalvoti apie apsaugą nuo ginkluoto programuotojo šešioliktainis redaktorius.

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ą AES, bet kaip suprantate, tai nėra svarbu.

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.

Failų sistemos steganografija

Į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.
Failų sistemos steganografija

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).
Failų sistemos steganografija
Štai kaip atrodo FS su jau supakuota informacija.
Failų sistemos steganografija

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.
Failų sistemos steganografija

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:

  1. sudo Copy_Flash.sh "DEVICE" - gaukite FS vaizdą iš DEVICE (flash);
  2. ./Write.sh „FILE“ „KEY“ „MARKER“ – sukurkite virtualią aplinką, atsisiųskite reikiamas bibliotekas ir paleiskite rašymo scenarijų;
  3. sudo ./Write_Flash.sh „DEVICE“ – pakeistą FS dar kartą įrašykite į DEVICE.

Skaitymas:

  1. sudo Copy_Flash.sh "DEVICE" - gaukite FS vaizdą iš DEVICE (flash);
  2. ./Read.sh „KEY“ „MARKER“ – sukurkite virtualią aplinką, atsisiųskite reikiamas bibliotekas ir paleiskite praleidimą skaitymui;
  3. 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 Riebalai32, NTFS и ext4.
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. Darbo pavyzdys pristatytas mano youtube kanale. Visas projekto kodas paskelbtas GitHub.
(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 PavelMSTU už vertingus patarimus planuojant tyrimą ir rekomendacijas dėl straipsnio dizaino.

Šaltinis: www.habr.com

Добавить комментарий