RUC-logo/link
Historisk Kryptering
CBHs RUCiske webforbindelse/sitelogo
Hovedmenu
Forside
Studiet
EDB-citater
Binære præfikser
→ His. kryptering
TalSysKonv
Hvorfor Opera
RUC-LaTeX
OperaShow
Link

Sort
Intet
Bogo-sort
04:15

Computer Science is no more about computers than astronomy is about telescopes.
–E.W. Dijkstra

Opera logo/link


opera.softwolves.dk

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

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:
[1]G. Møller: "Hemmelig skrift & kode", Høst & Søn, 1968
Steganografi
Steganografi-software

Transposition

Metoden går ud på blot at flytte rundt på tegnen i teksten således at alle de originale tegn også optræder i krypto-teksten, men bare i en anden rækkefølge.

Rektangulær transposition

Omflytningen af tegnene kan ske på flere måder, hvoraf en er rektangulær transposition. Man oplister tegnene et efter et vandret indtil man har skrevet X tegns op. Så fortsætter man på næste linje og bliver ved sådan. X'et er nøglen. Man følger så en bestemt sti i firkanten og dette mønster af bogstaver, man får ud af at følge stien, er kryptoteksten. Man kan fx følge den sti, at man går ned gennem hver søjle fra top til bund og fra venstre mod højre.
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
		
[==== Java-applet kunne ikke vises, idet din browser enten ikke har Java aktiveret eller er Internet Explorer. Sidstnævnte forstår ikke XHTML-koden anvendt til Java-indsættelse. Aktiver Java eller hent f.eks. Opera ===]

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:
[1] P. Landrock/K. Nissen: "Kryptologi", Abacus, 1997
Transposition

Substitution

I stedet for blot at flytte rundt på tegnene, som man gør i tranposition, kan man helt udskifte dem med andre tegn. Dette kan igen gøres på mange måder fra helt tilfældige sammenhænge mellem klartekst-tegn og kryptotekst-tegn til mere ordnede som fx additiv nævnt herunder.

Additiv monoalfabetisk substitution

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 ioxhu
Nøglen i dette er antalle af adderinger
[==== Java-applet kunne ikke vises, idet din browser enten ikke har Java aktiveret eller er Internet Explorer. Sidstnævnte forstår ikke XHTML-koden anvendt til Java-indsættelse. Aktiver Java eller hent f.eks. Opera ===]
Bemærk ved implementeringen: Kun A-Z en- og dekrypteres. Andre tegn overføres direkte. Nøglen et positivt tal.

Polyalfabetisk / Beaufort

Beauforts kryptosystem er additivt, men ikke monoalfabetisk. Det kobler klartekst-tegn til flere forskellige kryptotekst-tegn, og der er således ikke en en-til-en sammenhæng mellem klartekst-tegn og kryptotekst-tegn. Et A bliver måske enkrypteret til et X den ene gang, og et D den anden gang i samme tekst.
Beauforts kryptosystem består mere præcist af et skema med et klartekst-alfabet vandret og et nøgle-alfabet lodret. For at finde kryptoteksten går man således ind i skemaet ud fra (klartekst-tegn, nøgle-tegn) og ser krypto-tegnet. Selve krypto-alfabeterne i skemaet er alfabetet skrevet omvendt op og for hvert nyt alfabet er det rykket 1 frem. Det er lettere at se end at beskrive:
                           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
[==== Java-applet kunne ikke vises, idet din browser enten ikke har Java aktiveret eller er Internet Explorer. Sidstnævnte forstår ikke XHTML-koden anvendt til Java-indsættelse. Aktiver Java eller hent f.eks. Opera ===]
Bemærk ved implementeringen: Kun A-Z en- og dekrypteres. Andre tegn overføres direkte, og disse tegn "forbruger" også en nøgleposition. Nøglen må kun indeholde A-Z.

The Pig-pen code

En type for subtitution er med med helt andre tegn end de oprindeligt anvendte. Det vil sige, de "normale" bogstaver bliver subtitueret med andre tegn. Nøglen i dette er at kende sammenkædningen mellem klartekst og kryptotekst og at undgå, at denne falder i forkerte hænder. Under borgerkrigen i Amerika i 1800-tallet anvendte man "the pig-pen code", hvor hvert klartekst-tegn netop i kryptoteksten er udskiftet med noget helt andet, som det ses på grafikken herunder, hvor hvert bogstav svarer til den "udformning", det står i[2].
Sammenkædning ml. klartekst/kryptotekst
The Pig-Pen Code
Referencer:
[1] P. Landrock/K. Nissen: "Kryptologi", Abacus, 1997
[2] G. Møller: "Hemmelig skrift & kode", Høst & Søn, 1968
Substitution

One Time Pad

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
			

Eletronisk implementering

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
[==== Java-applet kunne ikke vises, idet din browser enten ikke har Java aktiveret eller er Internet Explorer. Sidstnævnte forstår ikke XHTML-koden anvendt til Java-indsættelse. Aktiver Java eller hent f.eks. Opera ===]
Referencer:
[1]L. Lovász/K. Vestergombi: "Discrete Mathematics", Lectur Notes, Yale Uni, 1999
One Time Pad
One Time Pad
One Time Pad
One Time Pad-generator (tilfældige nøgler)
Valid XHTML 1.0! Get Opera! Valid CSS!
Livet – pausen i døden
Drømmen – flugten fra livet