Frekvensanalyse

Fra SPJDRpedia
Skift til: Navigation, Søgning

I det danske sprog, bruger vi ikke alle bogstaverne lige meget. Man kan lave statistik på danske tekster, og finde en typisk fordeling af bogstaver. Det mest brugte tegn er bogstavet "E", der udgør omkring 16% af alle danske tekster.

Når du bryder koder, kan du udnytte fordelingen af bogstaver og hurtigt finde klarteksten.

Indholdsfortegnelse

Bogstavhyppighed

Man kan lave statistik på fordelingen af bogstaverne i danske tekster. Tæller man alle bogstaverne i oversættelsen af Jules Vernes klassiker "En verdensomsejling under havet", får man denne fordeling:

Bogstavhyppighed
Bogstav Hyppighed
a 6.01%
b 1.41%
c 0.29%
d 7.24%
e 16.70%
f 2.27%
g 4.56%
h 1.88%
i 5.55%
j 1.11%
k 3.07%
l 4.85%
m 3.40%
n 7.55%
o 4.14%
p 1.33%
q 0.01%
r 7.61%
s 5.67%
t 7.03%
u 1.85%
v 2.88%
w 0.02%
x 0.02%
y 0.72%
z 0.02%
æ 0.93%
ø 0.84%
å 1.03%

Da foredelingen af bogstaver kan variere lidt fra tekst til tekst, er det lettere at opdele bogstaverne i overordnede grupper efter deres hyppighed. Sorterer vi tabellen efter hyppigheden, ser vi at bogstaverne kan opdeles i omkring syv grupper:

E 
R T N 
I A D S O
L G K V M F 
P U B H Æ Y 
Å Ø J C W 
X Z Q

Bogstavet E er i en klasse for sig og fylder 16% af teksten. Både R, T og N er de næsthyppigste bogstaver, der hver udgør ca. 7,5%. E, R, T og N er altså de fire bogstaver, som gør det lettest at anvende frekvensanalyse.

Man kan tilsvarende se på bogstaver, der oftest står ved siden af hinanden. To bogstaver, der står ved siden af hinanden, kalder vi for et digram. På dansk er de mest almindelige digrammer:

ER DE EN ET GE RE TE TI

"Trigrammer" er tre bogstaver, der optræder ved siden af hinanden. På dansk er de mest almindelige trigrammer:

DET DEN ERE DER

Bogstavoptæller

Du kan selv forsøge dig som kodebryder, ved at bruge denne lille bogstav-optællings-maskine, der lynhurtigt tæller bogstaver i din kodede besked og viser hvilket bogstav der bruges oftest.

Eksempler

Lad os gennemgå to eksempler, der viser hvordan man bruger frekvensanalyse til at bryde forskellige ombytningskoder.

Frekvensanalyse af en Cæsarkode

Vi har opsnappet den hemmelige besked:

bøfø axffcøh øl ijæøfn c nlø æøfø, bpilxå yøfaxø yøyil æøh øhø, 
xkocnxhc æøh xhæøh, æø, æøl jw æøløm øaøn mjlia exfæøm eøfnølhø, 
c piløm mjlia axffølø, æøh nløædø. xffø æcmmø xæmecfføl mca ålx 
bchxhæøh c mjlia, meceeø ia fipø. åfiæøh axlihhø xæmecfføl 
axffølhø ålx xkocnxhc; gxlhø ia møchø xæmecfføl æøg ålx yøfaxø. 

Tæller vi bogstavhyppighederne med optællemaskinen, får vi denne fordeling:

Frekvensanalyse af Caesarkode.png

Det er tydeligt at Ø er det mest almindelige tegn, og at fordelingen af bogstaver ligner den almindelige danske fordeling. Hvis der er tale om en almindelig Cæsarkode hvor E krypteres med Ø, må A bliver krypteret med X. Oversætter vi teksten udfra det gæt, får vi klarteksten:

Hele Gallien er opdelt i tre dele, hvoraf Belgae bebor den ene, 
Aquitani den anden, de, der på deres eget sprog kaldes kelterne,
i vores sprog gallere, den tredje. Alle disse adskiller sig fra 
hinanden i sprog, skikke og love. Floden Garonne adskiller 
gallerne fra Aquitani; Marne og Seine adskiller dem fra Belgae. 

Teksten er de første to sætninger fra indledningen til Cæsars første galliske krigsberetninger fra 58 f.Kr.

Frekvensanalyse af en kodeordskode

Vi har nu opsnappet yderligere en besked, men denne gang er den ikke kodet med en almindelig Cæsarkode:

OV OCCU TZNNU, UP QUCXOU TU ÆATZXNDU, VAPTZ TU UP CMSXND VPO 
LZFZCZNODZASUS AX VAPVZSUCNUS Z [FAPUN] RPAFZSN, AX YOSTCUSTU DHP
NØMCTUSD DZC TUÆ, AX ZÆRAPDUPUP TU DZSX, NAÆ YOP DUSTUSN DZC OD 
VUÆZSZNUPU NZSTUD; AX TU CUFUP DMDDUND RK DHNÅUPSU, TUP QAP ET 
AFUP PYZSUS, ÆUT YFUÆ TU YUCU DZTUS UP Z ÅPZX; YFAPVAP YUCFUDZZ
AXNK AFUPXKP PUNDUS OV ​​XOCCUPSU Z DORRUPYUT, TO TU NCKN ÆUT 
DHNÅUPSU Z SMNDUS TOXCZXU ÅOÆRU, SKP TU USDUS NÆZTUP TUÆ ET VPO
TUPUN UXSU AÆPKTUP, UCCUP NUCF VJPUP ÅPZX ÆAT TUPUN XPMSNUP.

Tæller vi bogstaverne, får vi denne fordeling:

Frekvensanalyse af kodeordskode.png

Fordelingen ligner den almindelige danske, og vi gætter at U svarer til E. For at bryde koden, må vi også gætte de andre bogstaver.

Kig på de korte ord, hvor U indgår:

UP, TU, TUÆ, TUP, ÆUT

Vi ved at T og P hører til de hyppige bogstaver, og vi gætter på at PR, mens T bliver til D. Vi får så denne tekst:

Frekvensanalyse af kodeordskode2.png

Her falder blikket hurtigt på ordet AX, som klart ligner ordet OG. Derudover tyder de halvfærdige ord: DEÆ og ÆED, på at ÆM.

Derudover gætter vi ordene:

  • VARDIFORDI.
  • DINNEDISSE.
  • ECCERELLER.

Den delvist løste kode, ser nu sådan ud:

Frekvensanalyse af kodeordskode3.png

Det er nu klart at OA, DT (fra f.eks. DILTIL), og FV.

Vi bemærker, at vores oversættelser optræder i par med både A→O og O→A, ligesom V→F og F→V. Det tyder på at der er tale om en kodeordskode. Udfylder vi resten af parrene, er det ingen sag at gætte de sidste tegn, så vi ender med klarteksten:

Af alle disse, er Belgae de modigste, fordi de er længst fra 
civilisationen og forfinelsen i [vores] provins, og handlende tyr 
sjældent til dem, og importerer de ting, som har tendens til at 
feminisere sindet; og de lever tættest på tyskerne, der bor ud 
over Rhinen, med hvem de hele tiden er i krig; hvorfor Helvetii 
også overgår resten af ​​gallerne i tapperhed, da de slås med 
tyskerne i næsten daglige kampe, når de enten smider dem ud fra 
deres egne områder, eller selv fører krig mod deres grænser.

Det er (overraskende nok :-P) den næste sætning (!) fra indledningen til Cæsars galliske krigsberetninger. Det er præcis denne tekst, som tegneserien Asterix i Belgien er skrevet over.

Tilbage er kun at finde kodeordet i kodeordskoden. Kan du klare det?

Forholdsregler mod frekvensanalyse

Vil du gerne gøre din kode sikker mod frekvensanalyse, kan du ændre fordelingen af bogstaver. Du kan blandt andet skrive dine ord mæd ztåvefejl zå dæ hyppige bogszaver ikkæ optrædep zå ofte. Alternativt kan du "salte" sin kode med nogle ekstra tegn. På dansk kan du for eksempel indsætte bogstaverne "x","z","w" og "q" tilfældige steder i teksten, og på den måde slører du den oprindelige fordeling af bogstaver. Bruger du et større alfabet, kan du vælge at have rigtig mange "tomme" tegn.

Personlige værktøjer
Navnerum

Varianter
Handlinger
Navigation
Værktøjer