U ovom seminaru analiziraju se steganografske tehnike implementirane u aplikaciji JavaStegano, razvijenoj za skrivanje tekstualnih poruka u slikama (PNG) te u audio i video datotekama (MP3 i MP4). Na temelju uvida u implementacijski kod i pregledane radove daje se kritička procjena pogodnosti korištenih pristupa u kontekstu sigurnog prijenosa podataka.
Ključne riječi: steganografija, slikovna steganografija, audio steganografija, video steganografija
Steganografija je disciplina koja se bavi skrivanjem poruke unutar naizgled bezazlenog nositelja na način da postojanje skrivene komunikacije ostaje neprimjetno. Za razliku od kriptografije, čiji je cilj onemogućiti razumijevanje poruke bez ključa, steganografija prvenstveno nastoji sakriti samu činjenicu da se komunikacija odvija. U digitalnom okruženju to se tipično postiže manipulacijom redundantnih ili ljudskom osjetilu manje značajnih dijelova podatkovnog toka.
U svim trima načinima ugradnje koje JavaStegano podržava (PNG, MP3, MP4) primjenjuje se zajednička shema predstavljanja korisničke poruke: prvo se zapisuju 16 bita koji kodiraju duljinu efektivnog payloada u bitovima (MSB-prvo), a tek zatim slijede sami podaci. Time se pri dekodiranju omogućuje pouzdano rekonstruiranje točnog broja bitova koji pripadaju skrivenoj poruci. Dodatno, aplikacija omogućuje da se poruka prije ugradnje šifrira simetričnim algoritmom AES u GCM načinu rada; u tom slučaju se u medij ne ugrađuje čisti tekst, nego kriptirani blok podataka.
Za slike, JavaStegano koristi klasičnu LSB-metodu, opisanu u literaturi kao jednu od najjednostavnijih tehnika. Ulazna PNG slika učitava se kao raster, a zatim se nad svakim pikselom iterira po redovima. Za svaki piksel izdvajaju se crvena (R), zelena (G) i plava (B) komponenta te se u njihovom najmanje značajnom bitu pohranjuju bitovi skrivene poruke. Tijekom dekodiranja, program najprije iz LSB-ova rekonstruira duljinu, a zatim iz istih kanala R, G i B izdvaja pripadajući broj bitova payloada.
Ovakav pristup osigurava više važnih svojstava. Prvo, promjene u RGB kanalima su minimalne (svaki kanal se može promijeniti za najviše 1), pa je vizualna razlika između originalne i stego slike za ljudsko oko praktički neprimjetna. Drugo, raspodjela bitova poruke po sva tri kanala povećava kapacitet, budući da se po pikselu mogu pohraniti do tri bita podataka, uz i dalje prihvatljivu distorziju. S druge strane, primijenjena metoda nema otpornost na agresivnu obradu slike (kompresija s gubitkom, skaliranje), pa robusnost ostaje ograničena, što je tipičan kompromis LSB tehnika.
Za MP3 datoteke, JavaStegano ne mijenja audio uzorke niti komprimirane podatke, već koristi ID3v2 zaglavlje kao nositelj skrivene poruke. Na početak izlazne datoteke generira se novo ID3v2.3 zaglavlje unutar kojeg se stvara PRIV (private) okvir s identifikatorom vlasnika “steg”. U tijelo tog okvira najprije se zapisuje 16-bitna duljina poruke u bitovima, a zatim slijede bajtovi skrivenog sadržaja. Izvorni MP3 audio tok potom se neizmijenjen dodaje iza ID3 zaglavlja.
Ovakav pristup pripada metodama koje iskorištavaju metapodatke i zaglavlja MP3 formata, bez zahvata u stvarne audio podatke. Prednost je potpuno očuvanje kvalitete zvuka i visoka kompatibilnost, jer većina reproduktora ignorira privatne ID3 okvire. Nedostatci su ograničen kapacitet skrivanja te relativno laka detekcija prisutnosti neuobičajenog PRIV okvira naprednom analizom metapodataka.
Dekodiranje se provodi čitanjem ID3 zaglavlja, pronalaskom PRIV okvira s vlasnikom “steg” te rekonstrukcijom duljine i sadržaja poruke iz njegova tijela. Na taj način JavaStegano pokazuje kako se steganografija temeljena na zaglavljima može implementirati jednostavno i bez utjecaja na audio signal.
Za video datoteke u MP4 formatu program koristi pristup koji se temelji na izmjeni podataka unutar „mdat“ polja, koje u ISO Base Media File formatu sadrži komprimirane video i audio tokove. Tijekom obrade strukture MP4 datoteke program identificira kutije tipa „mdat“ te u njihovom sadržaju zamjenjuje najmanje značajan bit (LSB) svakog bajta bitovima duljine poruke i same skrivene poruke.
Opisani postupak može se promatrati kao LSB steganografija nad komprimiranim podacima. Iako se promjene provode izravno nad bajtovima komprimiranog toka, izmjena jednog bita po bajtu ima vrlo malen utjecaj na cjelokupni zapis te u praksi ne uzrokuje vidljive ili čujne artefakte. Poruka se pritom raspoređuje kroz velik broj bajtova, čime se smanjuje lokalni utjecaj pojedinačnih izmjena.
Dekodiranje se provodi obrnutim postupkom, odnosno ponovnim prolaskom kroz strukturu MP4 kutija i čitanjem LSB bitova iz svih „mdat“ sekcija istim redoslijedom. Prednost ovog pristupa je velik kapacitet skrivanja, budući da „mdat“ polja zauzimaju većinu datoteke, dok je glavni nedostatak osjetljivost na ponovnu kompresiju čime se skriveni podaci mogu izgubiti.
Na Slici 1 prikazana je kartica za enkodiranje poruke. U ovom dijelu aplikacije korisnik odabire izvornu datoteku u koju želi ugraditi skrivenu poruku, unosi proizvoljni ključ za šifriranje te upisuje tekstualni payload koji će biti skriven. Nakon potvrde, aplikacija šifrira poruku zadanim ključem i zatim je ugrađuje u novu datoteku primjenom odgovarajuće steganografske metode.
Slika 1 Kartica za enkodiranje sa popunjenim podacima
Slika 2 prikazuje karticu za dekodiranje poruke. Korisnik u ovom koraku odabire datoteku za koju pretpostavlja da sadrži skrivene podatke te unosi ključ za dešifriranje. Aplikacija potom iz datoteke izdvaja skrivene bitove, rekonstruira šifriranu poruku i pokušava je dešifrirati pomoću unesenog ključa.
Slika 2 Kartica za dekodiranje sa izabranom datotekom i popunjenom šifrom
Nakon uspješnog dekodiranja, korisniku se prikazuje prozor uspješnog dekodiranja, prikazan na Slici 3, u kojem je vidljiv izvorni tekst poruke. Na taj se način potvrđuje ispravnost postupka enkodiranja i dekodiranja te se korisniku omogućuje jednostavan uvid u skriveni sadržaj.
Slika 3 Prozor za uspješno dekodiranu poruku, prikazuje originalnu poruku
U ovom seminaru analizirana je aplikacija JavaStegano kao praktična implementacija temeljnih steganografskih tehnika nad različitim vrstama digitalnih medija. Prikazani pristupi za PNG slike, MP3 audio i MP4 video datoteke ilustriraju kako se isti koncept skrivanja poruke može prilagoditi specifičnostima pojedinog formata, uz različite kompromise između kapaciteta, robusnosti i neprimjetnosti.
Rezultati analize pokazuju da su LSB-tehnike u slikama i videozapisima jednostavne za implementaciju i omogućuju relativno velik kapacitet skrivanja, ali su osjetljive na naknadnu obradu i kompresiju. S druge strane, pristup temeljen na ID3 zaglavljima MP3 datoteka u potpunosti očuva kvalitetu zvuka i osigurava visoku kompatibilnost, ali uz znatno ograničen kapacitet i manju otpornost na detekciju analizom metapodataka. Dodatna primjena simetrične kriptografije prije ugradnje poruke povećava sigurnost sadržaja, ali ne utječe na steganografsku nevidljivost samog kanala. Zaključno, JavaStegano predstavlja jasan edukativni primjer primjene steganografije u praksi te pokazuje prednosti i ograničenja jednostavnih metoda opisanih u literaturi. Aplikacija potvrđuje da izbor steganografske tehnike mora biti uvjetovan vrstom medija i zahtjevima primjene.