Hvordan gjorde man i "gamle dage", når en meddelelse skulle holdes hemmelig? Det er det, denne tekst kort omhandler ved at give en lettere beskrivelse af forskellige teknikker anvendt og eventuelt illustreret ved et lille program heraf. Teksten tager udgangspunkt i en større skriftlig opgave (datalogi) produceret i gymnasiel sammenhæng.
Steganografi er ikke kryptering i rigtig forstand, da der her blot er tale om at skjule, at der sker datatransmission, og ikke - som ved rigtig kryptering - at skjule, hvad der transmiteres.
Der har gennem tiden været gjort mange forskellige forsøg på at skjule, at der sker en datatransport. I følge Plutarchos, en græsk forfatter fra ca. år 400 f.kr., skulle en Histiæus have anvendt kronragning af en slave, hvorpå dennes hoved blev tatoveret en besked, hvorefter slaven, da håret var groet ud igen, blev sendt afsted med beskeden.[1]
Den "klassiske" i spionromaner med "usynligt blæk" (fx urin, citronsaft eller løgsaft) blev faktisk anvendt op til Første Verdenskrig. Der var endda et tilfælde med anvendelse af "usynlig blæk" under Anden Verdenskrig, hvor en mand til britterne påstod, han var en undsluppet frihedskæmper. Det underlige var, da han fik ophold i UK, at han via Røde Kors sendte mange breve til hans venner i fangelejeren. Det viste sig da også, at der i disse breve var skrevet med "usynligt blæk", og manden var tysk spion[1].
Måske lyder steganografi ikke lige anvendeligt i dag med de eksempler, vi har set. Det vil næppe blive et hit at skrive med urin, eller fremstå som slaveejer i telefonbogen, men elektronisk er steganografi i dag ikke helt umuligt. Et nyere eksempel på steganografi er data skjult i fx billedfiler på computeren. Et billede er bygget op af billedpunkter (pixels). En pixel kan bestå af fx 8 bit af data. For at skjule data i et billede kan man tage den mindst betydende bit af disse 8 bit for hvert billedpunkt og anvende denne som en del af den skjulte data. Det lyder måske ikke af meget kun at tage én bit fra hvert punkt, men det svarer faktisk til en god del tekst. Til eksempel kan et billede på størrelsen 640*480 (det mindste man normalt anvender af billedpunkter på en 14" skærm) bære 640*480 = 307.200 bits = 38.400 B = 37,5 KiB eller ca. 15 A4-sider med ren tekst. Da der kun røres ved den mindst betydende bit, vil det med det blotte øje være svært at se på et billede, at det indeholder skjult data.
Referencer:
Klartekst: Indled en offensiv mod alle pingviner
Nøgle : 6 (læs ned-højre)
Rektangel: 1 2 3 4 5 6
I n d l e d
e n o f
f e n s i v
m o d a
l l e p i
n g v i n e
r
Kryptotekst: I f lnrneemlgdnnoevl sd ieoi pndfvaie
En udgave, hvor et nøgleord også indgår som bestemmende for rækkefølgende af søjlerne, blev anvendt under den Amerikanske Borgerkrig[1]. Nøgleordet havde samme længde som den tidligere omtalte nøgle, fx 6, og blev skrevet over rektanglet, således at hver søjle fik et bogstav fra nøgleordet tilknyttet. Før man begyndte at enkryptere, det vil sige danne kryptoteksten ved at afskrive søjlerne nedaf, flyttede man rundt på nøgleordets bogstaver (og de dertilhørende søjler), så disse stod i alfabetisk orden.
Klartekst: Indled en offensiv mod alle pingviner
Nøgleord : H U S K A T
Rektangel: I n d l e d
e n o f
f e n s i v
m o d a
l l e p i
n g v i n e
r
A H K S T U (nøgleord i alfabetisk orden)
Rektangel: e i l d d n
(flyttet) o n f e
i f s n v e
d o a m
p l e i l
n n i v e g
r
Kryptotekst: eoi pni f lnrl sd i dnnoevdfvaieneemlg
Der findes selvsagt mange forskellige stier at følge end blot at læse søjlerne op-ned, venstre-højre, når man ønsker kryptering, og man kan også dobbeltkryptere efter forskellige stier for bedre sikkerhed.
Referencer:Der er en sammenhæng mellem hver klartekst-tegn og hver kryptotekst-tegn i et bestemt forhold. Det kunne fx være forholdet +3, der betyder, at klartekst-A bliver til kryptotekst-D, klartekst-B bliver til kryptotekst-E osv. Det skulle efter sigende være denne metode, Cæsar benyttede i sin tid. Kejser Augustus (63 f.kr - 14 e.kr.) anvendte også denne metode, men flyttede dog kun +1[1].
Denne form for kryptering finder dog også anvendelse i nutiden som ROT13 (+13), men ikke som en egentlig kryptering, da den er ret let at bryde, men for at skjule et budskab, således at modtageren aktivt må gøre en handling for at kunne læse dette, og dermed ikke ved et uheld får læst det. Det kunne fx være svaret på en gåde eller "spoileres" af films handlinger. Ud fra denne funktion findes en- og dekryptering af ROT13 implementeret i mange Usenet-newsreaderes.
Det monoalfabetiske element optræder ud fra, at der mellem klartekst og kryptotekst er en en-til-en sammenhæng. Det vil sige, at ét klartekst bogstav nøjagtigt passer til ét andet kryptotekst-bogstav.
Eksempel på additiv (+3) substitution Klartekst-alfabet: ABCDEFGHIJKLMNOPQRSTUVWXYZ Kryptotekst-alfabet: DEFGHIJKLMNOPQRSTUVWXYZABC Klartekst: Skyd alle fluer Kryptotek: Vnbg dooh ioxhuNøglen i dette er antalle af adderinger
TEKST
NØGLE A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
A z y x w v u t s r q p o n m l k j i h g f e d c b a
B a z y x w v u t s r q p o n m l k j i h g f e d c b
C b a z y x w v u t s r q p o n m l k j i h g f e d c
D c b a z y x w v u t s r q p o n m l k j i h g f e d
E d c b a z y x w v u t s r q p o n m l k j i h g f e
F e d c b a z y x w v u t s r q p o n m l k j i h g f
G f e d c b a z y x w v u t s r q p o n m l k j i h g
H g f e d c b a z y x w v u t s r q p o n m l k j i h
I h g f e d c b a z y x w v u t s r q p o n m l k j i
J i h g f e d c b a z y x w v u t s r q p o n m l k j
K j i h g f e d c b a z y x w v u t s r q p o n m l k
L k j i h g f e d c b a z y x w v u t s r q p o n m l
M l k j i h g f e d c b a z y x w v u t s r q p o n m
N m l k j i h g f e d c b a z y x w v u t s r q p o n
O n m l k j i h g f e d c b a z y x w v u t s r q p o
P o n m l k j i h g f e d c b a z y x w v u t s r q p
Q p o n m l k j i h g f e d c b a z y x w v u t s r q
R q p o n m l k j i h g f e d c b a z y x w v u t s r
S r q p o n m l k j i h g f e d c b a z y x w v u t s
T s r q p o n m l k j i h g f e d c b a z y x w v u t
U y s r q p o n m l k j i h g f e d c b a z y x w v u
V u y s r q p o n m l k j i h g f e d c b a z y x w v
W v u y s r q p o n m l k j i h g f e d c b a z y x w
X w v u y s r q p o n m l k j i h g f e d c b a z y x
Y x w v u y s r q p o n m l k j i h g f e d c b a z y
Z y x w v u y s r q p o n m l k j i h g f e d c b a z
Ekempel på enkryptering:
Klartekst: USA vil bestemme verden
Nøgle: notatnotatnotatnotatnot (nøglen gentaget)
De første bogstave bliver ud fra skemaet:
(U,n) = S, (S,o) = V, (A,t) = S osv....
Kryptotekst: SVS xec youuongi xvbjjf
Modsat de andre nævnte kryptosystemer er denne One Time Pad meget sikker og blev anvendt under Anden Verdenskrig[1]. Den er dog noget upraktisk ud fra, at nøglen skal være lang og må kun benyttes én gang.
Den tager udgangspunkt i en nøgler, der er dannet helt tilfældigt og som mindst er af samme længde, som klarteksten er. Nøglen må kun benyttes én gang per enkryptering afsendt, så derfor må modtager og afsender på forhånd have udvekslet en "one time pad" med en masse nøgler alt efter, hvor mange gange de nu ønsker at kommunikere med hinanden fremover.
Systemet virker ved, at hvert tegn har en talværdi tilknyttet. Et nøgletegns talværdi angiver fx det, der skal adderes til den talrepræsentation, et givet klartekst-tegn har, eller i eksemplet herunder antallet af pladser et klartekst-bogstav skal flyttes frem, når alfabetet opfattes som en cirkel.
Tegn/tal-sammenhæng ABCDEFGHIJ K L M N O P Q R S T U V W X Y Z 0123456789 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Nøgle: y g u f d o i j p d f (tilfældig) Tekst: f l o w e r p o w e r F: 5 + 24 = 29 = 29 - 26 = 3 = D L: 11 + 6 = 17 = R O: 14 + 20 = 34 = 34 - 26 = 8 = I ...osv... Kryptotekst: d r i b h f x x l h w
I en computer bliver hvert tegn naturligt repræsenteret som et tal binært. Den tidligere omtalte addering kan her udføres på en lignende måde ved at udføre XOR (eksklusivt eller) bit for bit og resultatet er igen et nyt tal, som så er det enkrypterede.
Det vil sige: To talværdier (i binær repræsentation) for hhv. klartekst-tegnet og nøgle-tegnet bliver XOR'et med hinanden, således at der igen fremkommer et nyt tal, som kryptotekst-tegnet så bliver repræsenteret ved. Konkret vil det sige, at den k'ende bit i den hemmelige tekst XORes med den k'ende bit i nøglen. Sagt på en anden måde "flippes" den k'ende bit i teksten, hvis den k'ende bit i nøglen er 1, og resultatet er den k'ende bit i kryptoteksten.
Tegn/tal-sammenhæng: ASCII/ISO-8859-1.
Klartekst: KRIG!
Nøglen : aæ%;4
K R I G !
Klartekst (bin) : 75,82,73,71,33 : 01001011 01010010 01001001 01000111 00100001
a æ % ; 4
Nøglen (bin) : 97,230,37,59,52 : 01100001 11100110 00100101 00111011 00110100
------------------ X O R -----------------
Krypteret (bin) :42,180,108,124,21: 00101010 10110100 01101100 01111100 00010101
* ´ l | NAK