Artikel top billede

(Foto: Computerworld)

Gem dine hemmeligheder i fuld offentlighed

Hvis man vil holde på en hemmelighed, skal man sørge for, at ingen kan se den.

Af Rasmus Elm Rasmussen, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

I 480 f.Kr. samlede den persiske kong Xerxes verdens hidtil største hær under sit imperiums langvarige konflikt med Grækenland. Den udvikling gik ikke hen over på hovedet på Demaratus, en græker, der levede i eksil i Persien.

Han satte sig for at advare grækerne mod den kommende invasion. For ikke at blive afsløret skrabede han bivoksen af en skriveplade, skrev meddelelsen på træpladen og smurte voksen på igen.

Ingen vagter på vejen til Grækenland lagde mærke til de tilsyneladende ubeskrevne plader. Da kureren nåede frem, bad han modtageren skrabe vokslaget af. Overraskelsesmomentet gik tabt, og den vældige persiske invasionsstyrke blev slået.

Det er den første kendte brug af den teknik, der kaldes steganografi. Ordet stammer fra de græske ord for ”dækkende” og ”skrift”. Det er muligt, at du ikke har kendt ordet, men hvis du som barn har skrevet beskeder med usynligt blæk, har også du beskæftiget dig med steganografi.

Skjult skrift behøver imidlertid ikke at inddrage voksplader eller kemiske blandinger, for også den er blevet ført ind i den digitale tidsalder, og her udgør den et alternativ til den mere velkendte krypteringsteknik.

Digitale teknikker

Digital steganografi består som regel i, at man gemmer en form for meddelelse i en transportfil. Denne fil kan være en jpg-fil eller et Word-dokument, men i alle tilfælde er meddelelsen skjult, således at de, der får adgang til filen, ikke bemærker, at den er andet end et feriefotografi eller en rapport for eksempel. Kun den, der kender hemmeligheden, og typisk har den nødvendige software til at uddrage det skjulte indhold, er i stand til at læse meddelelsen.

For at vise, hvordan det kan lade sig gøre, vil vi skjule en meddelelse i et Word-dokument. Det er bestemt ikke nogen sikker metode, men det er et godt sted at starte, når man vil vise et letforståeligt eksempel.

Først skal du åbne et Word-dokument, der skal fungere som transportfil. Vælg et, der bruger en enkelt farve, og som ikke inddrager understregning. Skriv så din hemmelige meddelelse i mellemrummene mellem ordene, og sørg for, at hvert bogstav er understreget. Det er også en god ide at give de indsatte tegn en farve, der er anderledes end resten af teksten, så du nemt kan overskue dit værk.

Hvis filen for eksempel begynder med ”Denne rapport er udarbejdet i overensstemmelse med virksomhedens løbende indsats for kvalitetssikring og effektivitet”, og du vil gemme ”HemmeligTekst”, kommer teksten til at se sådan ud, efter at du har sat meddelelsen ind i den:

”DenneHrapporteermudarbejdetmie-overensstemmelselmedivirksomhedensgløbende-Tindsatseforkkvalitetssikringsogteffektivitet”.

Gå nu tilbage til hvert af disse bogstaver, og vælg hvid som skrifttypens farve. Det ser nu ud, som om disse understregede bogstaver forsvinder, og du sidder med et dokument, der ligner det oprindelige. Sørg for, at der ikke er stavefejl eller grammatiske fejl i dokumentet, ellers fremgår det, at der er noget ejendommeligt ved teksten.

Nu skal modtageren af teksten blot fremhæve alt og ændre skrifttypens farve til sort. Så kan man læse den skjulte meddelelse ved at plukke de understregede bogstaver ud.

Gør det automatisk

Vi skal nu se på en tidlig steganografisk teknik til at skjule data i en tekstfil. Den bliver ikke længere betragtet som sikker, men den giver et indblik i udviklingen af steganografi. Vi skal bruge en ascii-tekstfil, som man kan lave ved hjælp af Notesblok. Kald filen ”test.txt”, og sørg for, at den har mindst ti linjer med omkring 60 tegn. Der skal være hårdt linjeskift ved slutningen af hver linje.

Download Snow og pak zipfilen ud i en mappe, der hedder c:snow. Start kommandolinjevinduet (klik ’Start | Alle programmer | Tilbehør | Kommandoprompt’).

Ved prompten skal du skrive cdsnow og derefter trykke [Enter] for at komme til mappen snow. Skriv så kommandoen snow-C -m ”Secret” -p ”xyz” test.txt output.txt. Den beder Snow gemme meddelelsen ”Secret” i filen test.txt og vise resultatet i en fil, der hedder output.txt, med ”xyz” som et (ikke ret sikkert) kodeord.

Åbn output.txt i Notesblok. Nu kan du se den tekst, du har lavet som test.txt uden noget tegn på det skjulte ord. For at se, at det faktisk er der, skal du gå tilbage til kommandolinjevinduet og skrive snow -C -p ”xyz” output.txt. Nu viser Snow den skjulte meddelelse ”Secret”. Dengang alle brugte almindelige tekstbehandlingsprogrammer, kunne den metode måske give et minimum af sikkerhed, men det gælder ikke længere, som man kan konstatere ved at åbne output.txt i Word.

Man kan se afsnitsmarkører og skjulte formateringssymboler. Det gør man i Word 2007 og 2010 ved at klikke på det ikon, der ligner et omvendt P. Nu kan man se afsnitsslutninger, mellemrum bliver vist som prikker, og tabulatorer fremstår som pile. Man kan se, at mange af linjerne har en række mellemrum og tabulatorer, og det er her, meddelelsen er skjult i komprimeret form. Disse tegn, der ikke bliver skrevet ud, kalder man hvide mellemrum, og det kan forklare programpakkens kuriøse navn – jagten på den skjulte meddelelse minder om at lede efter en isbjørn i en snestorm.

Transport af billeder

En af de mest populære former for digital steganografi består i, at man gemmer en meddelelse i en jpg-fil. Dette format koder hver pixel ved hjælp af 8 bits for hver af de tre primærfarver (rød, grøn og blå), hvilket giver mulighed for at vise 16,7 millioner forskellige farver. Der er flere muligheder, men lad os antage, at meddelelsen er blevet skjult ved hjælp af den mindst signifikante del af hver tiende pixel. Det betyder, at hver af disse pixels kun kan repræsentere 8,3 millioner. I mange tilfælde vil farven derfor være en anelse forkert.

Man bemærker imidlertid næppe så små variationer – navnlig hvis man, som i vores tilfælde, kun ændrer nogle pixels, og de er spredt vidt omkring. Sammenlignet med det at skjule en meddelelse i en tekstfil er dette langt mere sikkert. Sikkerheden bliver også øget ved, at man vælger et billede, der ikke har store områder med nøjagtig samme farve. Ellers risikerer man, at pixels med andre farver springer i øjnene.

Der er grænser for, hvor megen information man kan gemme på denne måde, og en hovedregel inden for steganografi er, at jo større mængden af skjulte data er, desto større er sandsynligheden for afsløring. Hvis vi holder os til blot 1 ud af 10 pixels, kan vi dog gemme 800.000 bits i et fotografi på 8 megapixels. Det bliver til 100.000 tegn, 20.000 ord eller et dokument på 40 sider.

QuickStego er en gratis pakke, der skjuler tekst i billedfiler ved hjælp af en teknik, der minder om den, vi her har beskrevet. Man skal blot åbne sit transportbillede, skrive sin hemmelige tekstmeddelelse i boksen til højre eller importere den fra en tekstfil og klikke på knappen ’Hide Text’ efterfulgt af ’Save image’.

Når du har gjort det, vil vi bede dig se, om der er noget som helst mærkeligt ved billedet, uanset hvor meget du zoomer ind i dit fotoredigeringsprogram. Hvis du vil sikre dig, at fotografiet virkelig indeholder din skjulte hemmelighed, skal du lukke QuickStego og genstarte det. Derefter skal du åbne dit billede igen og klikke på ’Get Text’ for at se din hemmelige tekst i al sin pragt.

Wav, mp3 og mere

Grunden til, at meddelelser er så meget nemmere at gemme i et billede end i en tekstfil, er, at billeder indeholder information, der ikke påkalder sig opmærksomhed, hvis den bliver ændret en smule.

Det samme gælder for andre former for mediefiler, og audiofiler er en anden udbredt transportform til steganografi. OpenPuff er et værktøj, der giver mulighed for at gemme meddelelser i en lang række transportformer.

Vi vil bruge en wav-fil – selvom mp3 formodes at være understøttet, blev vi ved med at få en fejlmeddelelse, når vi prøvede dette format. OpenPuff bliver ikke installeret på normal vis, og det kommer derfor ikke frem i ’Start’-menuen. Hvis du vil køre det, skal du finde den eksekverbare fil, der blev pakket ud fra distributionsfilen, og dobbeltklikke på den.

I åbningsvinduet klikker du ’Hide’ for at komme til dialogboksen ’Data Hiding’. Du vil bemærke, at der er fire sektioner (1 til 4), som du skal igennem, før du går videre. Skriv først tre kodeord i sektion 1. Det skal ikke blot kontrollere adgangen som i Snow (som beskrevet i tekstboksen Få det bedste fra begge verdener).

Hvis softwaren accepterer dine kodeord, bliver boksen ’Passwords check’ grøn. Hvis den bliver ved med at være rød, må du prøve igen. I sektion 2 skal du skrive navnet på den fil, du vil gemme, og i sektion 3 skriver du navnet på transportfilen. Du kan vælge at bruge flere transporter, hvis dine skjulte data ikke kan være i en. I så fald bliver dataene spredt mellem dem.

Hvis du ønsker det, kan du vælge muligheder for din transportfiltype i sektion 4. Her kan du bestemme, hvor tæt dataene bliver indsat i transportfilen. Til at begynde med vil du måske foretrække at bruge standardindstillingerne. Til sidst klikker du på ’Hide data’ og angiver en mappe, hvor dit output bliver placeret.

Hvis du vil overbevise dig selv om, at det har virket, skal du først lytte til wav-filen for at sikre dig, at den lyder som originalen. Når du kommer tilbage til OpenPuffs åbningsvindue, klikker du på ’Unhide’ for at sikre dig, at du kan uddrage dine data.

OpenPuff er langt det mest avancerede software til steganografi, vi har brugt her. Der er et rigt udvalg af transportfilformater og mange andre fikse funktioner, men dem må du selv undersøge.

Få det bedste fra begge verdener

Steganografi og kryptering har deres fordele og ulemper. Med steganografi er det ikke umiddelbart indlysende, at der ligger en meddelelse gemt i en fil, men hvis nogen opdager det, er det næppe umuligt at uddrage de skjulte data. På den anden side er det indlysende, at en krypteret fil indeholder hemmeligheder, men det er mildt sagt problematisk at dechifrere informationen. Hvis man bruger både steganografi og kryptering, får man det bedste fra begge verdener.

Det kan man gøre på to måder. Den første består i at bruge en enkeltstående krypteringspakke plus steganografisoftware, der accepterer en fil (det vil sige outputtet fra ens krypteringssoftware) som de data, der skal gemmes, i modsætning til den tekststreng, som QuickStego accepterer.

Den anden mulighed er at bruge en pakke, der først krypterer data og derefter gemmer dem i en transportfil. Der findes flere sådanne produkter. Du kan for eksempel overveje QuickCrypto, der koster 250 kroner og kommer fra den samme udbyder, som leverer den gratis QuickStego, som vi bruger i denne artikel.

Ikke helt så brugervenlig, men nok stærkere er OpenPuff, som vi har brugt til at gemme data i en wav-fil. Her får du ingen valgmuligheder – alle data bliver krypteret, før de bliver indsat i transportfilen. Det er grunden til, at vi måtte skrive de tre kodeord, der bliver brugt til at konstruere en kryptografinøgle.

En ret speciel, men ikke ualmindelig form for steganografi bruger slet ingen transportfil – eller mere nøjagtigt: Den opretter transportfilen som en del af processen, således at man ikke selv behøver at levere den. Prøv onlinedemonstrationen af Texto-programmet på www.eberl.net/cgi-bin/stego.pl (her kan man også downloade applikationen). Skriv blot din tekst i boksen, og klik på knappen ’Encode’.

I stedet for din tekst fremkommer der noget pseudoengelsk sludder. Det er transportfilen til din hemmelige meddelelse. Nogle af ordene i transportfilen bliver oversat til bestemte bogstaver, mens andre blot er udfyldning.

Selvom folk med det samme ser, at den genererede tekst er ret sær, er det output, softwaren laver, åbenbart godt nok til at narre sikkerhedsrelateret software, der automatisk scanner e-mails og deres vedhæftede filer for at finde noget mistænkeligt (for eksempel nøgleord som ”bombe” og ”angreb”), og det går glat igennem filtrene.

Du kender måske de synlige vandmærker, der ofte er på fotografier med det formål at forhindre, at de bliver brugt, uden at der er betalt for det. Man kan også sætte usynlige vandmærker på fotografier ved hjælp af teknikker, der minder om dem, man bruger i steganografi.

Der er imidlertid en vigtig forskel: I steganografi betyder det faktisk ikke noget, hvor i fotografiet meddelelsen er gemt. Men med nogle former for vandmærker – navnlig den type, man kalder ”robust” – er formålet at sikre, at vandmærket går direkte gennem billedet. Det betyder, at selvom fotografiet bliver beskåret, roteret, komprimeret eller på anden måde redigeret, kan man stadig spore det tilbage til dets retmæssige ejer.

OpenPuff er et gratis værktøj, der gør det muligt at bruge både vandmærker og steganografi – man bruger knapperne ’Setmark’ og ’Checkmark’ på åbningsbilledet. Vores test viste imidlertid, at vandmærket ikke er modstandsdygtigt over for redigering. Den form for vandmærker kalder man ”skrøbelig”, og formålet er at afgøre, om et billede er blevet redigeret.

[themepacific_accordion]
[themepacific_accordion_section title="Fakta"]

Det skal du bruge:

[/themepacific_accordion_section]
[themepacific_accordion_section title="Fakta"]

Det barberede hoved

[/themepacific_accordion_section]
[themepacific_accordion_section title="Fakta"]

Gem i html

[/themepacific_accordion_section]
[/themepacific_accordion]