Steganografija je tehnika skrivanja tajnih poruka u drugim porukama. Steganografskim tehnikama moguće je skriti poruku u zvučni zapis. Primjeri tehnika za skrivanje poruka u zvučnim zapisima su: kodiranje poruke u najmanje značajne bitove uzoraka signala (LSB kodiranje), kodiranje poruke u fazni spektar segmenta signala (fazno kodiranje), kodiranje poruke dodavanjem jeke u signal (skrivanje pomoću jeke). 2019. godine otkriveni su napadi zloćudnim kodom koji je skriven u zvučni zapis steganografskim postupkom LSB kodiranja. Tijekom forenzičke analize treba provjeriti sumnjive zvučne datoteke za mogući skriveni sadržaj.
Ključne riječi: steganografija; audio; zvučni zapis; skrivanje informacija;
Steganografija je tehnika skrivanja tajnih poruka u drugim porukama tako da osoba kojoj tajna poruka nije namijenjena ne zna da poruka postoji. Razlikuje se od kriptografije, koja štiti poruku da je ne mogu pročitati osobe kojima nije namijenjena, ali ne skriva njeno postojanje. Za dodatnu sigurnost moguće je poruku skrivenu steganografskim postupcima kriptografski zaštititi. Steganografijom se često poruke skrivaju u tekstu ili multimedijskim podatcima.
Steganografijom se često poruke skrivaju u tekstu, zvučnim zapisima, slikama i videozapisima.
Kod steganografije u zvučnim zapisima, moguće je poruku skriti u metapodatke datoteke ili u sam zvučni zapis. Stavljanje poruke u metapodatke nije dobro rješenje jer mnogi alati mogu jednostavno pročitati te metapodatke. Pokušaji skrivanja poruke u metapodatke mijenjanjem samo određenih bitova mogu dovesti do nemogućnosti normalne reprodukcije zvučnog zapisa, odnosno može dovesti do korupcije datoteke jer metapodatci često sadrže važna svojstva zapisa poput frekvencije uzorkovanja. Iz ovih razloga, steganografijom se poruke skrivaju u sam zvučni zapis.
Neke od tehnika za steganografiju u zvučnim zapisima su: LSB kodiranje, fazno kodiranje i skrivanje pomoću jeke.
Pri steganografiji se najčešće koristi nekomprimirani zvučni zapis u Wave formatu. Osim njega, mogu se koristiti formati koji koriste kompresiju bez gubitaka, kao što su FLAC ili Monkey's Audio jer se iz njih može savršeno rekonstruirati izvorni signal.
Razlog korištenja nekomprimiranog zvučnog zapisa je njegova jednostavnost jer je moguće izravno upisivati tajne podatke u uzorke zvučnog signala. Korištenje formata koji koriste kompresiju s gubitcima, kao što su MP3 ili Vorbis, rjeđe je jer oni koriste složeniji način zapisa podataka i moguće je da će mijenjanje takvog zapisa uvesti primjetljive promjene u zvučni zapis, što se želi izbjeći.
Primjeri programske podrške koji mogu skrivati podatke u zvučne zapise su: Steghide, DeepSound i OpenPuff.
LSB kodiranje (engl. least significant bit) je upisivanje poruke koristeći najmanje značajan bit u uzorcima zvučnog signala. Ovime je omogućeno stavljanje vrlo velikih skrivenih poruka jer se u zvučnim zapisima nalazi vrlo velik broj uzoraka. Primjerice, ako je zvučni signal uzorkovan frekvencijom od 44 kHz, za svaku se sekundu zapisa u datoteci nalazi 44000 uzoraka, odnosno može se zapisati 44 kilobita ili preko 5 kB podataka u sekundi.
Kod dekodiranja poruke treba jednostavno pročitati najmanje značajne bitove iz zapisa te ih konkatenirati u originalnu poruku.
Način rada LSB kodiranja može se vidjeti u sljedećim slikama preuzetim iz [3].
Negativna strana korištenja ove tehnike je činjenica da njome izravno mijenjamo bitove zvučnog zapisa i time dodajemo aditivan bijeli šum u zvučni zapis. Ljudski auditorni sustav je jako osjetljiv na takav šum i lako se čuje da je datoteka promijenjena. Zato se pri korištenju ove tehnike često ne zapisuje poruka u niz slijednih uzoraka, već se poruka raspršuje po datoteci.
Primjer zvučnog zapisa bez upisane poruke. Zvučni zapis preuzet iz [5].
Primjer zvučnog zapisa s upisanom porukom korištenjem koda iz [3]. Lako se čuje šum.
Još je važno napomenuti da će bilo kakve promjene u datoteci, poput kompresije, uništiti poruku jer je za ispravan prijenos važno da svi bitovi ostanu netaknuti.
Fazno kodiranje je tehnika koje se oslanje na neosjetljivost ljudskog auditornog sustava na određene promjene u zvučnom signalu. Opis faznog kodiranja može se vidjeti pomoću sljedećih slika, preuzetih iz [1].
Pri faznom kodiranju prvo se zvučni zapis podijeli na segmente.
Nad svakim segmentom zvučnog zapisa provede se diskretna Fourierova transformacija (DFT) i time se za svaki segment dobiva njegov amplitudni i fazni spektar.
Izračunaju se razlike u faznom spektru između dva susjedna segmenta signala.
Poruka koja treba biti skrivena pretvori se u zapis faznog spektra, gdje vrijednost pi/2 označava binarnu vrijednost 0, a vrijednost -pi/2 označava binarnu vrijednost 1 ili obratno, i upiše se kao fazni spektar prvog segmenta signala.
Pomoću izračunatih razlika u faznom spektru između dva susjedna segmenta signala izračunaju se novi fazni spektri za svaki segment počevši od drugog.
Računanjem inverzne diskretne Fourierove transformacije (IDFT) koristeći originalne amplitudne i nove fazne spektre segmenti signala se vraćaju u vremensku domenu i nakon toga se konkateniraju u cjelovit zvučni zapis.
Ljudsko auditorni sustav je puno osjetljiviji na razlike u faznom spektru između dva dijela signala, nego na sam fazni spektar signala. Razlike u faznom spektru su očuvane pri faznom kodiranju skrivene poruke, pa se promjena neće lako čuti.
Za dekodiranje ovakvog zapisa treba poznavati duljinu segmenta i duljinu poruke. Tada se može, diskretnom Fourierovom transformacijom prvog segmenta, iz faznog spektra pročitati poruka.
Negativna strana ove tehnike je mala veličina poruke koja se može skriti, u odnosu na veličinu datoteke, jer se cijela poruka mora zapisati u prvi segment zvučnog zapisa. Također, promjene u datoteci, poput kompresije, uništit će poruku jer će promijeniti fazni spektar signala.
Poruka zapisana u faznim kodiranjem u zvučni zapis u Wave formatu. Prikazan je dio faznog spektra prvog segmenta signala. Visoke i niske vrijednosti predstavljaju nule i jedinice poruke.
Segment zvučnog zapisa u koji je zapisana poruka, nakon konverzije u MP3 format. Vidljivo je da je fazni spektar promijenjen, i da poruka nije čitljiva.
Korištenjem ove tehnike poruka se skriva stvaranjem jeke u zvučnom zapisu. Ako je razlika u vremenu između originalnog signala i jeke dovoljno mala, ljudski auditorni sustav neće čuti jeku. Za većinu slušatelja jeka koja se pojavljuje manje od 1 milisekunde nakon izvornog signala neće biti primjetljiva [1].
Za kodiranje bitova poruke koriste se dvije različite vrijednosti kašnjenja jeke za originalnim signalom. Obje vrijednosti kašnjenja jeke trebaju biti dovoljno male da ih ljudski auditorni sustav ne može primijetiti. Zvučni signal treba biti podijeljen u dijelove kako bi se moglo kodirati više bitova poruke. Svakom segmentu signala dodaje se jeka koja označava nulu ili jedinicu.
Originalni signal podijeljen u segmente. U svaki segment zapisat će se jedan bit poruke koja se skriva. Slika je preuzeta iz [1].
Signal s jekom koja označava vrijednost 1 (ljubičasta linija je jeka). Slika je preuzeta iz [1].
Signal s jekom koja označava vrijednost 0 (ljubičasta linija je jeka). Slika je preuzeta iz [1].
Za dekodiranje potrebno je znati veličinu segmenta i vrijednosti kašnjenja jeke za vrijednosti 0 i 1. Kašnjenje jeke može se izračunati iz segmenta signala promatranjem realnog cepstruma signala. Realni cepstrum računa se tako da se odredi Fourierova transformacija signala, izračuna logaritam apsolutne vrijednosti transformiranog signala pa se nad tim logaritmom izračuna inverzna Fourierova transformacija. Realni cepstrum segmenta imat će visoku vrijednost u trenutku u kojem se pojavljuje jeka.
Primjer cepstruma dvaju signala s dodanom jekom. Crvenom bojom označen je signal s jekom koja označuje 0, a plavom bojom signal s jekom koja označuje 1. Na x-osi ovakvog grafa stoji vrijeme i moguće je odrediti točno kašnjenje jeke za originalnim signalom.
Za razliku od prošle dvije tehnike, moguće je komprimirati zvučni zapis s gubitcima, a da i dalje poruka ostane sačuvana ako se jeka očuva pri kompresiji.
2019. godine poznat je slučaj skrivanja zloćudnog koda u zvučne zapise steganografskim postupkom. Pronađena su tri različita zvučna zapisa.
Prvi zvučni zapis sadrži XMRig Monero CPU miner, skriven metodom LSB kodiranja. Nužno je da na zaraženom računalu već postoji zloćudni program ("loader") koji će dekodirati i pokrenuti izvršnu datoteku iz zvučnog zapisa. U ovom primjeru takav program skriven je pod imenom “Microsoft MediaPlayer” kako ne bi bilo sumnjivo njegovo pristupanje zvučnim zapisima. Drugi zapis također sadrži XMRig Monero CPU miner, ali je kodiran pomoću niza pseudoslučajnih brojeva. Zaglavlje .wav datoteke je ispravno, ali datoteka ne sadrži stvaran zvučni zapis (čuje se samo šum). Izvršna datoteka dekodira se oduzimanjem pseudoslučajnog broja od svakog okteta nakon zaglavlja. Funkcijom srand s fiksnom vrijednosti određuje se deterministički niz pseudoslučajnih brojeva. Treći zapis pokreće “reverse shell” sa zaraženog računala, a kodiran je na isti način kao i drugi zapis.
Steganografija u zvučnim zapisima područje je u kojemu postoje raznovrsne tehnike skrivanja podataka od kojih su mnoge temeljene na manjkavostima ljudskog auditornog sustava, kao što su fazno kodiranje i skrivanje pomoću jeke. Tehnike za skrivanje poruka u zvučnim zapisima razlikuju se po složenosti, veličini poruke koju je moguće skriti, u odnosu na veličinu datoteke, i po otpornosti na promjene u zvučnom zapisu.
S obzirom na pronađene zloćudne datoteke skrivene ovakvim postupcima, postaje nužno pri zaštiti od zloćudnog koda i forenzičkoj analizi provjeriti zvučne zapise za potencijalne skrivene podatke.