
Steganografija pa ni omejena le na računalniški svet. Njeni začetki namreč segajo daleč v zgodovino. Znane so legendarne stvari, kot je na primer tista, ko je nek rimski vojskovodja kurirju obril glavo, na kožo vtetoviral skrivno sporočilo, počakal, da so mu lasje ponovno zrasli in ga odposlal na nalogo. Stvar je delovala toliko časa, dokler niso tega izvedeli njegovi nasprotniki in vsem ujetim kurirjem začeli briti glave. Veliko kasneje so se pojavile še druge metode. Kdo še ni slišal za skrivna sporočila napisana s nevidnim črnilom. Še kot otroci smo pisali sporočila napisana z limoninim sokom.
Z razmahom računalništva in še posebej kasneje interneta, je steganografija dobila krila. Sporočila je moč skriti vsepovsod, v različne datoteke, v zaglavja paketkov v komunikacijskem omrežju in še marsikam drugam. Pojavila se je gora programske opreme, ki bolj ali manj uspešno skriva sporočila, hkrati pa tudi orodja, ki sporočila iščejo. Znana igra torej. Nov, boljši algoritem za skrivanje sporočil, hitro povzroči nastanek orodja za njegovo odkrivanje. In tako v nedogled. Velja pa eno pravilo. Kdor želi uspešno skriti sporočilo, pri čemer je seveda govora o različnih državnih službah, kriminalnih združbah in terorističnih organizacijah, napiše svoj lasten algoritem (program), ki je znan le peščici ljudi. Zato si bomo pogledali nekaj osnovnih metod skrivanja sporočil v različne tipe datotek, ki so splošno znana.
PSIHOLOGIJA SKRIVANJA – ZAKAJ SKRIVAMO?
Največkrat skrivamo zato, ker vemo, da delamo nedovoljenega oziroma nevarnega. V računalniku osumljenca za pedofilijo so na trdem disku našli polno slik – a vse so bile popolnoma nedolžne. Šele strokovnjak za steganografijo je v teh slikah našel skrite slike otroške pornografije. In osumljenec je postal obsojenec. Takih primerov je v svetu ogromno. Od izdajanja poslovnih skrivnosti konkurenčnim podjetjem, vohunjenja, pranja denarja, pa do izmenjave sporočil med teroristi. A vse le ni negativno. Poslovna sfera se boji industrijskega vohunjenja in izdajanja poslovnih skrivnosti, zato v zadnjem času poleg kodiranja sporočil uporabljajo tudi tehnike steganografije in sategonalize – ugotavljanje ali skrito sporočilo obstaja ali ne. S kodiranjem ni nič narobe, vendar že dejstvo, da je neko sporočilo kodirano, lahko sproži sume in poskuse razbitje kode. Samodejna programska oprema lahko v zelo hitrem času in z dovolj visoko verjetnostjo z analizo razporejenosti posameznih simbolov ugotovi, katera sporočila so kodirana. Pri kodiranih sporočilih se simboli dokaj enakomerno razporejeni, pri običajnih sporočilih pa ni tako. Jasno je, da se na primer v slovenskih besedilih večkrat pojavljajo samoglasniki, kot na primer črka ž. Primerjava histogramov kaže na očitne razlike.


Steganografija je ozko povezana z varnostjo sporočanja. Kodiranje (šifriranje) sporočil, je postalo običaj pri posredovanju občutljivejših informacij. Vendar takšno sporočilo pritegne veliko pozornosti, z dovolj zmogljivo računalniško opremo in dovolj časa je moč odkodirati skoraj vse. Manj je opazno običajno sporočilo, ki na prvi pogled ne vsebuje nič posebnega (slikovna ali zvočna datoteka), vendar je znotraj njega tudi skrivno sporočilo. Če je to še kodirano, je varnost toliko večja.
Pa tudi pri tem je potrebno biti dovolj previden, saj že samo dejstvo, da nekomu nekaj pošiljamo, lahko povzroči sume. Recimo da komunikacijo med vami in vašim sogovornikom nekdo nadzira. Če ste mu do sedaj pošiljali zgolj kratka sporočila, sedaj pa mu začnete pošiljati ogromne slikovne datoteke, je to lahko sumljivo. Skrita sporočila morajo biti skrita tako, da nihče ne posumi, da obstajajo. Poglejmo si banalni primer. Vi in vaš sogovornik sta ljubitelja ribarjenja in sedaj, ko so na voljo digitalni fotoaparati si redno pošiljata slike svojih trofej. Ker to počneta že dlje časa se tistemu, ki vaju nadzira, te slike ne zdijo sumljive. Zato so dober medij za prenos skrivnih sporoči. Če pa nadzorovalec ve, da vaju ribe niti malo ne zanimajo, bo prej ali slej posumil, da takšna komunikacija skriva več kot izgleda na prvi pogled. Pametno je potrebno izbrati medij, v katerega bomo sporočilo skrili in obenem paziti, da skrivno sporočilo originala ne pokvari preveč.
Dokaj pogost je tudi način posrednega komuniciranja, pri katerem se sogovornika ne pogovarjata neposredno in si ne pošiljata sporočil. V tem primeru pošiljatelj medij s skritim sporočilom (datoteka, nedolžen tekst) odloži na kakšno nedolžno novičarsko skupino, strežnik ftp, forum, blog ali kaj podobnega. Prejemnik ga najde in prebere sporočilo. V tem primeru, in tudi v prvem, morata oba sogovornika poznati način, kako je bilo sporočilo skrito in kakšno je geslo za izluščenje sporočila oziroma njegovo dekodiranje.
KAKO DOBER JE ALGORITEM?
Dogovoriti se morata kateri algoritem skrivanja bosta uporabljala in eventualni tudi katero metodo kodiranja. Steganografski algoritem je matematična formula, ki sporočilo zapiše v izbrano nosilno datoteko in ga nato tudi zna iz nje ponovno prebrati. Poglejmo si primer vsem Slovencem poznanega besedila, kjer skrijemo po eno črko sporočila v vsako vrstico. Pošiljanje nacionalne himne drugemu predstavniku istega naroda, običajno ne poraja sume.
Prijatli ! obrodile so trte vince Nam sladko,
ki nAm oživlja žile, serce razjasni in oko,
ki vtoPi vse skerbi, v potrtih prsih up budi !
Komi nAr pred veselo zdravljico, bratje ! čmo zapet ?
Bog našo nam Deželo, Bog živi ves slovenski svet,
brate vse, kar nas je sinov sloveče matere !
V sovražnike ' s Oblakov rodu naj naš'ga trešči grom;
Prost, ko je Bil očakov, naprej naj bo Slovenčev dom,
naj Zdrobe njih roke si spone, ki jih še teže !
EdinOst, sreča, sprava k nam naj nazaj se vrnejo;
Otrok, kar ima slava, vsi naj si v Roke sežejo,
de oblast In z njo čast, ko pred, spet naša boste last !
Kaj lahko storimo? Lahko pošljemo takšen tekst, pri tem pa mora naslovnik vedeti, katere črke sestavljajo skrito sporočilo. V takšnih primerih gre za tajen algoritem, ki je enak ne glede na tekst. Kar dosti dela je, da najdete primerno besedilo, kjer so črke na pravih mestih. Običajnejše je bilo, da so se dogovorili za stalno besedilo (na primer biblijo), nato pa so si pošiljali zgolj algoritem. Da ga sovražnik ne bi prebral, so algoritem še zakodirali. V zgornjem primeru bi bil algoritem za prebiranje skrivnega sporočila lahko 29 (prva črka sporočila je 29. po vrsti če ne upoštevamo presledkov), 4, 6, in tako naprej za celotno skrivno sporočilo.
Uspešnost algoritma lahko ocenjujemo na več načinov, običajno pa se uporabljajo sledeči:
Količina skritih podatkov. Več kot je skritih podatkov, boljša je tehnika skrivanja. Pod pogojem seveda, da vneseni podatki ne spremenijo originalne datoteke do te mere, da postane sumljiva. Pri zgornjem primeru je jasno, da je prostora za skrivanje bolj malo. Če bi v vsako vrstico skrili več kot zgolj eno črko, bi lahko skrili daljše sporočilo.
Detekcija skritih podatkov. Kako preprosto oziroma težko drugi zaznajo, da je v neki datoteki skrito sporočilo. Težja kot je detekcija, boljši je algoritem. Obstaja določena povezava s prvim merilom. Običajno je tako, da več ko je podatkov, lažja je detekcija. Ni pa vedno tako! Tu pride do izraza tudi psihologija. Ali pri zgornjem primeru bi bilo malo čudno, če bi Prešernovo Zdravljico pošiljali svojim zaveznikom, ki bi bili Švedi in seveda ti ne bi znali Slovensko.
Pridobivanje skritih podatkov. Kako težko je iz datoteke izluščiti skrito sporočilo, tudi če vemo, da je le to prisotno. Ni dovolj, da tisti ki nekoga nadzira tudi ve, da neka datoteka sporočilo vsebuje. Znati ga mora tudi prebrati. Več kot je črk sporočila, skritega v eni sami vrstici zgornjega primerna, lažje je pametnemu sovražniku dojeti, kaj smo hoteli sporočiti.
Če bi namesto besedila v zgornjem primeru pošiljali sogovorniku zgolj algoritem, sovražnik s tem ne bi imel kaj dosti početi, če ne bi vedel, katero besedilo uporabljate. V primeru, da bi besedilo poznal, pa bi z lakoto prebral skrito sporočilo. Malce bi mu otežili življenje, če bi sporočanje algoritma šifrirali. Ne glede, da se takšni načini skrivanja sporočil danes ne uporabljajo več, pa principi veljajo tudi pri bolj dodelanih metodah skrivanja sporočil.
KAM IN KAKO SKRITI?
Steganografske metode lahko razdelimo po dveh kriterijih. Prvi je mesto skrivanja oziroma kateri je nosilni medij, drugi pa način skrivanja. Največkrat govorimo o skrivanju v na prvi pogled običajne datoteke (slikovne, zvočne ali tekstovne), sporočilo pa je mogoče skriti tudi na pomnilniške medije ali med IP-promet v omrežju. Ne glede na uporabljen medij se metode med seboj ločijo tudi po načinu zapisa skritega sporočila.
Metoda Vrivanja. Pri tej metodi algoritem preveri izbrani nosilni medij in poišče področja, kjer lahko vrinemo dodatne podatke, ne da bi to vplivalo na delovanje datoteke.

Datoteke niso vedno optimalne, to pomeni, da je v njih lahko tudi več podatkov, kot bi jih pričakovali. Na primer večina datotek ima v sebi oznako »konec datoteke« (EOF). Vsi podatki umeščeni za to oznako ali v nekaterih primerih pred oznako za »začetek datoteke« (BOF) ne vplivajo na delovanje. Na sliki lahko vidite dolžine dveh dokumentov, napisanih z urejevalnikom Word. V obeh primerih je v dokumentih zgolj besedica »pozdravljeni«. Word namreč, če je tako nastavljen, izbrisanega besedila fizično ne umakne iz datoteke. To sicer več ni vidno, a je še vedno tam. Namesto izbrisanega besedila bi lahko bilo tudi skrito sporočilo.
Dobra stran metode zamenjave je, da lahko z njo skrijemo sporočilo poljubne dolžine. Slabost pa, da poveča dolžino datoteke. Če imamo na voljo tudi originalno datoteko lahko kaj hitro vidimo, da je nekaj narobe. Enako velja tudi za naš primer wordove datoteke. Kdor jo bo odprl in videl zgolj eno besedico, se bo začudil njeni dolžini.
Metoda Zamenjave. Tu algoritem ničesar ne vriva, pač pa določi posamezne bite podatkov, ki so manj pomembni (LBS) in jih zamenja z biti skritega sporočila. Največkrat se ta metoda uporablja pri skrivanju sporočil znotraj slikovnih oziroma zvočnih datotek. Ne deluje pa vedno in zgolj na nivoju bitov. Že zgornji primer Wordovih datotek lahko uporabimo kot primer vrivanja. Namreč obstoječe podatke za EOF lahko zamenjamo s svojimi.

Kako metoda deluje, je najbolje pogledati na primeru skrivanja sporočila v slikovno datoteko (raster BMP) z barvno globino 24 bitov. V tem primeru je vsaka pika na sliki zapisana s tremi zlogi (byte), ki določajo delež barv RBG. Vzeli bomo štiri točke iz zgornje slike, tako dobimo 12 zlogov, v katera bomo skrili dvanajstbitno skrito sporočilo. Ker zamenjava poteka na nivoju bitov, bomo številke zapisali binarno.
10111111 11000101 11001100
10111100 11000010 11000110
10110101 10111111 10111101
10110000 10111011 10111001
Naše skrito sporočilo je 100101111001. Sedaj zadnji bit v vsakem zlogu zamenjamo z enim bitom iz sporočila.
10111111 11000100 11001100
10111101 11000010 11000111
10110101 10111111 10111101
10110000 10111010 10111001
Zadnji biti v vseh devetih zlogih nosijo naše sporočilo, spremembe pa so le na štirih mestih. Pa tudi te ne vplivajo veliko, saj se barva posamezne pike tako malo spremeni, da tega ni moč opaziti. (kar je lepo razvidno na zgornji sliki). Podobno je tudi pri slikovnih datotekah z osembitno barvno globino (GIF) s to razliko, da vanjo lahko shranimo manj podatkov, pa še negativni učinki so lahko večji. Tako skrito sporočilo pa je zelo občutljivo na spreminjanje datotek. Stiskanje v format JPEG na primer, tako zapisano sporočilo uniči. To pa ne pomeni, da v slike tega zapisa sporočila ni moč zapisati, le da se sporočila ne skrivajo na nivoju točk. Podobno velja tudi pri zvočnih datotekah, kjer zamenjava manj pomembnih bitov ne vpliva na zvok. Spremembe so tako majhne, da jih človeško uho ne zazna.
Orodje J-Steg skriva podatke v slike formata JPEG. Takšen način se od drugih kar precej razlikuje. JPEG za stiskanje namreč uporablja algoritem, s katerim odstranjuje podatke, ki so za ogled slike manj oziroma nepomembni. Stiskanju JPEG zato pravimo lossy (to lose - izgubiti), saj slika "izgubi" določene podatke oziroma so namerno izpuščeni, tako da se zmanjša količina podatkov, ki jo opisuje. Ob uporabi takšne "izgubne" kompresije bi bilo logično sklepati, da se bo tudi sporočilo, skrito v sliki, izgubilo in da format JPEG za skrivanje sporočil ni primeren. A snovalci programa J-Steg so se domislili načina, kako to izgubo preprečiti. Program uporablja za shranjevanje podatkov tako imenovane kompresijske koeficiente. Kaj je to? Za razumevanje postopka je potrebno malce teorije. Stiskanje JPEG uporablja tako imenovano diskretno kosinusno transformacijo (DCT). Kompresijski podatki so shranjeni kot cela števila. Kompresija sama zahteva kar precej računanja s tako imenovano plavajočo vejico, končni rezultat program zaokroži bodisi navzgor bodisi navzdol, da dobi celo število. In prav to odločanje o zaokroževanju navzgor ali navzdol uporablja J-Steg za skrivanje sporočila, ki ga vstavi v obliki koeficientov DCT. Slišati je dokaj zapleteno. In tudi je, pa tudi sporočila, skrita na ta način, je dokaj težko odkriti.
Dobra stran te metode je, da se velikost datoteke običajno ne poveča. Slabost pa omejena dolžina skritega sporočila, ki je močno odvisna od izbrane nosilne datoteke, možnost uničenja sporočila pri spreminjanju datototeke (stiskanju) in pa verjetnost, da bo vnos sporočila tako spremenil original, da bo to očitno že na prvi pogled. V praksi se največkrat uporablja skrivanje v formate gif oziroma jpg, saj so takšne datoteke dovolj majhne za pošiljanje preko spleta.
Metoda generacije. Ta metoda ni toliko uporabljena kot gornji dve. Njena velika prednost je v tem, da ne potrebuje nosilnega medija, v katerega zapiše skrito sporočilo. Namesto tega datoteko generira na podlagi matrike (vzorca ponavljanja besed v angleščini, zvoka, fraktala). V zadnjem času so popularni fraktali in pa seveda »odštekani« zvoki, ki jih lahko kaj hitro zamenjate s ponorelo rave glasbo. Pri tej metodi je potrebno biti pazljiv do te mere, da takšne datoteke ne porajajo sumničenj. Je pa rezultat močno odvisen od kvalitete algoritma, ki lahko, če je dovolj dober, generira besedilo ali zvok, ki ni sumljiv in morda izgleda kot pristno sporočilo. Če pa je njegova kvaliteta slaba, lahko postane sumljivo ponavljanje besedil brez repa in glave ali čudno prasketanje v zvočniku.
Tehniki digitalnega vodnega žiga in »prsnih odtisov« (fingerprints) nekateri uvrščajo med metode skrivanja podatkov. In čeprav s pomočjo nevidnega vodnega žiga lahko skrijemo krajše sporočilo, vodni žig ni namenjen skrivanju. Njegova primarna naloga je ščitenja pravic avtorjem glede vsebin, ki krožijo po internetu. Cilja sta dva. Vodni žig mora biti vstavljen tako, da ne spremeni originalne datoteke in da ga je težko oziroma nemogoče odstraniti, ne da bi uničili datoteko. V primeru slik mora biti žig tak, da še vedno brez problemov vidimo celotno sliko, po drugi strani pa poizkus njegove odstranitve uniči original tako, da ni več uporaben. To kar smo mi naredili v primeru gornje slike, ni pravi vodni žig, služi pa kot njegov primer. Še vedno vidimo vse, kar je pomembno, vendar teksta iz slike ne moremo odstraniti in jo »ukrasti«.
Med novicami v prejšnji številki revije smo omenili, da nekateri barvni laserski tiskalniki na vsak izpis nevidno zapišejo tudi svojo serijsko številko. Seveda zgolj zato, da bi lahko ugotovili, kdo ponareja denar ali druge uradne listine. Vendar bi bila tehnika uporabna tudi za pošiljanje skrivnih sporočil. Za kaj takega ali pa za primer zapisovalnika CD, ki piše na običajno neuporabljena področja, je potreben poseg v strojno opremo naprave. Sami doma kaj takega ne moremo narediti, še manj pa lahko to preberemo z običajno računalniško opremo. Verjamemo pa, da so tudi takšne naprave v kakšnih skrivnih laboratorijih.
SKRIVNO KOMUNICIRANJE
Eno je skriti sporočilo v nosilni medij, drugo pa je tako datoteko skrivno poslati. Pri neposrednem komuniciranju se v zadnjem času uporablja še ena metoda – Spam. Če želimo zakriti dejstvo, da komuniciramo z neko osebo, lahko takšno sporočilo pošljemo na čim več naslovov in ga tako zakamufliramo kot spam, med naslovniki pa je seveda tudi tista oseba, ki ji je sporočilo namenjeno. Naslovnik bo vedel, kaj z njim storit, ostali prejemniki pa bodo malce jezni! Pri ogromni količini spama, ki kroži na spletu, je kar nekaj opremljenih tudi s skrivnim sporočilom. Med že omenjenimi načini posrednega komuniciranje je možna tudi objava datotek s skrivnim sporočilom na lastni spletni strani. Ker je fizična lokacija take spletne strani lahko tudi na strežnikih, ki prostora ne zaračunavanja, je z malce spretnosti možno zakriti vse sledi, ki bi kogarkoli pripeljali do nas. Skrivno sporočilo lahko skrijemo tudi v zaglavja paketkov, ki krožijo po internetu ali pa te zakrijemo tako, da izgledajo kot normalni omrežni promet.
Načeloma lahko skrivanje v omrežju razdelimo na štiri načine:
Skrivanje v priponki sporočila. V tem primeru nosilno datoteko pripnemo v sporočilo elektronske pošte ali jo odložimo na kakšnem spletnem mestu (posredni način komunikacije: ftp strežniki, forumi, spletne strani in podobno). Paziti je potrebno, da takšno sporočilo ni preveliko, ni že na prvi pogled očitno, da vsebuje skrito sporočilo. Za skritje sporočila uporabimo en program, za pošiljanje pa odjemalca elektronske pošte ali spletni brskalnik.
Skrivanje v prenosu. Na spletu je moč najti programska orodja, ki najprej skrijejo sporočilo v nosilno datoteko, nato pa le to še pošljejo preko izbranega načina prenosa. Gre za podoben način kot zgoraj omenjeni, z razliko, da vse naredi en sam program. Primera takšnih programov sta Invisible Secrets in CameraShy.

Skrivanje v zaglavjih paketkov. V ta namen se lahko uporabljajo nekatera polja v zaglavjih paketkov, ki bodisi niso v uporabi, ali pa njihovo spreminjanje ne vpliva na prenos. V ta namen se lahko uporabijo paketki protokolov IP, TCP, UDP ali ICMP – največkrat prva dva. Natančneje - pri protokolu IP lahko uporabimo polje »IP number«, pri protokolu TCP pa polji »Sequence number« in »Acknowledment number«. Tudi za ta način obstaja program in sicer Covert tcp.
Kamufliranje podatkov. Ta način zahteva še največ znanja. Ideja je zelo banalna. Neposredno povezavo med sogovornikoma oziroma paketke podatkov, ki se pretakajo po omrežju, zakamufliramo tako, da izgledajo kot običajni omrežni promet. Ena metoda naredi to tako, da ves promet izgleda, kot da bi šlo za brskanje po spletu. To metodo uporablja program Reverse WWW Shell. Ima pa eno slabost. Če resnično brskamo po internetu, potem v smeri k nam priteka veliko podatkov in zanemarljivo malo v obratni smeri. Nadzor prometa in smer lahko poraja sum, še posebej, če zgleda da brskamo, pa pošiljamo več podatkov, kot jih sprejemamo.
STEGO ANALIZA
Vsaka izboljšava metode ali orodja za skrivanje sporočil povzroči iskanje načina njene detekcije. Stegoanaliza ni tako preprosta, ko morda izgleda na prvi pogled. Njena naloga je odkrivanje skritih sporočil v različnih medijih, sloni pa na statističnih analizah. Torej ali sporočilo obstaja ali ne. Osnovna metoda je zgolj teoretična in v praksi redko možna. Imeti moramo originalno datoteko in datoteko s skritim sporočilom. Nato primerjamo dolžine datotek ali zaporedje posameznih bitov. Razlike pokažejo ali obstaja skrito sporočilo ali ne. Ker pa velja pravilo, da takoj ko sporočilo skrijemo, originalno datoteko nepovratno zbrišemo (tudi za to obstajajo orodja), je verjetnost takšnega primera enaka ničli.
Če imamo opravka z slabše skritim sporočilo, je detekcija lažja. Če se nam zdi, da neka slika ali nek zvok, ne izgleda ali zveni, tako kot bi pričakovali, je možno, da vsebuje skrito sporočilo. Nadaljnji koraki so odvisni od tipa datoteke ali od načina skrivanja sporočila. Če gre za vrivanje, nas lahko zmoti dolžina datoteke, če gre za zamenjavo, pa statistične analize palete barv (8 bitno grafika). Že samo dejstvo, da nekdo pošilja nestisnjeno datoteko s 24 bitno barvno globino lahko sproži sume. Te datoteke so namreč prevelike, da bi jih običajno pošiljali preko spleta. Omenili smo že, da je skrita sporočila v datotekah jpg izredno težko najti – hudo, saj je teh datotek na spletu daleč največ. Pri že omenjenem programu J-Steg je moč narediti statistično analizo razporeditve kompresijskih koeficientov. Pri datotekah brez skritega sporočila je razporeditev simetrična, skrito sporočilo pa simetrijo pokvari. V praksi je to veliko težje izvesti, kot morda izgleda na prvi pogled.
Stegoanaliza je uspešnejša za znane algoritme stiskanja in metode prenosa skritih sporočil. Veliko težje pa je, če gre za nekaj popolnoma novega. Teoretično lahko z določenimi statističnimi analizami z večjo ali manjšo verjetnostjo zatrdimo, da je nekje skrito sporočilo ali ni. Gre pa za dokaj zapletene analize.
Sodoben svet je tak, da se bo v prihodnjih letih steganografija hitro razvijala, prav tako pa tudi metode odkrivanja. Razvoj bo šel predvsem v smeri razvoja novih algoritmov, ki bodo bolj odporni proti odkrivanju, in bodo lahko skrili večjo količino podatkov. Druga stran bo napenjala možgane v smeri razbijanja algoritmov in detekciji skritih sporočil. Začaran krog, kot smo ga vajeni že celo človeško zgodovino. Edina razlika med rimskim vojskovodjo in sodobnim svetom je v tehnologiji – principi pa so ostali enaki. Pa še nekaj se dogaja. Steganografije ne bodo uporabljali zgolj nepridipravi in vohunske organizacije, temveč bo svoje mesto našla tudi v poslovnem svetu.