Artikel top billede

(Foto: Computerworld)

Hvorfor er kryptering så vigtigt?

Kryptering blev brugt helt tilbage i Romerrigets tid af Julius Cæsar. Men hvad er kryptering, og hvorfor er det så vigtigt?.

Af Tom Madsen, 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 de seneste måneder har vi gentagne gange hørt fra flere landes regeringer, at den kryptering, vi bruger til daglig, er for svær at bryde, og at den derfor skal svækkes, eller at der ligefrem skal bygges bagdøre ind i den. Dette foreslag indeholder visse problematikker, da bagdøre eller en svækket kryptering vil betyde, at vores transaktioner på internettet eller i vores netbank, alle sammen vil blive mindre sikre at bruge. Det er en udvikling, der er bekymrende i disse tider med et stadigt stigende antal cyberangreb på vores infrastruktur og den mænge af data, som forskellige virksomheder til stadighed mister om deres kunder.

Krypteringens historie
Men hvad er kryptering egentlig, hvordan virker det, og hvorfor vil regeringerne svække den? Det tager vi et kig på i denne artikel.
Inden du bliver nervøs og tror, at den vil komme til at indeholde en masse uforståelig matematik, så kan vi berolige dig med, at matematikken i denne artikel ikke vil være mere vanskelig end 10. klasses matematik! Når det så er sagt, så er den kryptering, vi bruger i dag, meget matematisk. Den bygger på en af de meste fundamentale dele af matematikken, nemlig talteori. I mange år var talteorien regnet for en af de mest rene matematiske områder, der ikke kunne anvendes til noget. Det ændrede sig dramatisk i halvfjerdserne med fremkomsten af asymmetrisk kryptering. Men det vender vi tilbage til, lad os først kigge lidt på historien om kryptering.

En af de første historiske anvendelser af kryptering bliver brugt af Julius Cæsar før Kristi fødsel. Der har utvivlsomt været andre anvendelser, men her har vi historisk belæg for brugen af kryptering. Den kryptering, som Cæsar brugte, var en simpel substitu-tionskode. Som det ligger i navnet, så består koden i at skifte, substituere, et bogstav for et andet. På figur 1, kan du se, hvordan et skifte på 13 foregår. Her bliver der brugt et skifte på 13. Det vil sige, at når du vil kryptere H, så bevæger du dig 13 pladser videre i alfabetet og skifter H ud med U. Når du så vil dekryptere, så bevæger du dig 13 pladser tilbage fra bogstavet U til bogstavet H. Udtrykt matematisk, bliver det til:
Kx(x) = (x +n)
Og dekryptering er så:
Dx(x) = (x - n)
 X er her det bogstav, vi gerne vil kryptere/dekryptere og n er det antal pladser, vi skal flytte i alfabetet. Cæsar-koden, som denne kryptering kaldes, er ikke særligt sikker, men i en tid hvor langt de fleste mennesker, var analfabeter, var den god nok.

Når vi ved, hvordan vi krypterer og dekrypterer med en Cæsar-kode, hvordan kan vi så knække koden, hvis vi ikke ved, hvordan en besked er krypteret med Cæsar-kode?
Det viser sig at være ganske simpelt at knække en Cæsar-kode. Tag et kig på figur 2. Der kan du se, hvordan bogstaver i en typisk engelsk tekst fordeler sig. En tilsvarende fordeling gælder for dansk, men nogle andre bogstaver som de mest forekommende. Eftersom en Cæsar kode kun laver et bogstav om til et andet, så vil den fordeling, du ser på figur 2, også gælde for den krypterede tekst. Det vil bare være nogle andre bogstaver, der er de mest forekommende. Med sådan en liste i hånden er det nemt at dekryptere en tekst kodet med en Cæsar-kode. Når vi så også f.eks. på engelsk kan regne med at th, er de bogstaver, der forekommer sammen allermest, så kan vi dekryptere en Cæsar-kodet tekst manuelt. En computer kan gøre det på sekunder. En kode som den Cæsar har brugt, kaldes også for en monoalfabetisk kode, fordi der kun bliver brugt et enkelt alfabet til at kryptere en tekst.

Polyalfabetisk kode
Det bringer os videre til den næste udvikling inden for kryptering, nemlig en polyalfabetisk kode, hvor der bliver brugt mere end ét alfabet til at kryptere en tekst. Den mest berømte krypteringsmetode indenfor polyalfabetiske koder er Vigenêre-koden. Faktisk var denne form for kryptering allerede opfundet af Giovan Batitsta Bellaso hundrede år før, Vigenêre blev associeret med den.

På figur 3 kan du se den tabel, som bliver brugt i en Vigenêre-kode. Selve ideen bag koden er simpel. Den første linje i tabellen består af det alfabet, som den tekst, der skal krypteres, er skrevet i. De næste linjer i tabellen er så det samme alfabet, men flyttet en plads for den første linje, to pladser for den næste igen, og så fremdeles. Så en Vigenêre-kode er baseret på samme idé som Cæsar-koden er, den bruger bare mange flere alfabeter til krypteringen. Nøglen, der bliver brugt til krypteringen, er så numrene på de linjer i tabellen, som er blevet brugt til at kryptere teksten med. Nøglen kunne f.eks. være 2579, hvor det så betyder, at linjerne 2, 5, 7 og 9 er blevet brugt.

Selve tabellen bliver kaldt for en Vigenêre-tabel eller somme tider for Tabula Recta. Når man bruger en Vigenêre-kode, så kan den metode, der blev brugt til at bryde en Cæsar-kode ikke længere bruges, fordi to ens bogstaver vil blive krypteret forskelligt i en Vigenêre-kode. Dermed bliver de statistiske oplysninger, vi brugte til Cæsar-koden langt mere obskure og vanskelige at bruge. Vigenêre-koden er en stærk kryptering, men blev aldrig rigtigt populær i Europa. Det gjorde i stedet Gronsfeld-koden, som er essentielt den samme form for kryptering, men bruger kun ti alfabeter til krypteringen. Det gjorde Gronsfeld-koden svagere end Vigenêre-koden, men nemmere at have med at gøre.

Åbne krypteringsalgoritmer
Nu springer vi en masse krypteringshistorie over og springer frem til 2. Verdenskrig, men inden vi gør det, stopper vi lige i 1883. For her udgiver Auguste KerckHoff nogle artikler, som er blevet basis for al den krypteringsforskning, der er blevet lavet lige siden. I artiklerne beskriver han nogle principper, som skal være basis for en sikker krypteringskode. Det mest kendte af disse principper er, at selve den algoritme, der bliver brugt til krypteringen, ikke skal være hemmelig. Algoritmen skal være tilgængelig for alle, og for deres eksperimenter med at forsøge at finde huller i den. Kun den nøgle, der er blevet brugt til krypteringen, skal være hemmelig. Det er et princip, som er blevet ignoreret mange gange siden, og altid med det resultat, at den algoritme, der er blevet udviklet, er blevet vist svagere end dem, der har udviklet den tro mod princippet. Det er derfor, at alle de krypteringsalgoritmer, der bliver brugt i vore dage er offentligt tilgængelige, og dermed åbne for analyse af eksperter fra hele verden.

Kryptering under 2. verdenskrig
Men videre til 2. Verdenskrig og computerens fremkost inden for kryptering. Der er mange, og gode, historier om den indsats, der blev gjort under 2. Verdenskrig for at bryde de tyske og japanske koder, men her vil jeg fokusere på den indsats, der blev gjort i England for at bryde tyskernes Enigma-kode.
Enigma-koden var baseret på en maskine. Du kan se, hvordan den så ud på figur 4. Enigma-maskinen var en såkaldt rotormaskine. Teksten, der skulle krypteres, blev tastet ind på maskinen, og den tekst, der kom ud af det, var den krypterede tekst. Nøglen til krypteringen var så den indstilling, som rotorerne i maskinen var sat til under krypteringen.

Antallet af nøgler som en Enigma-maskine kunne indstilles til var enormt. Der var 150.738.274.937.250 mulige indstillinger af Enigma-maskinen. Hvis man ikke kan finde et hul i selve krypteringsalgoritmen, så er den eneste mulighed for at bryde en kryptering at prøve alle de mulige nøgler af, én efter én. At bryde en kryptering på den måde, kaldes for ’brute force’, og er altid en metode, der kan bringes i anvendelse, også på de krypterings-algoritmer vi anvender i dag.

I dag bruger vi computere til at brute force en krypteret tekst, men under 2. Verdenskrig havde de ikke den slags, men hvad gjorde de så? De byggede en mekanisk computer, ved hjælp af en teori udviklet af Alan Turing. Alan Turing er den mest berømte af de matematikere, der hjalp med at bryde tyskernes koder under 2. Verdenskrig. Den computer, de udviklede, kaldte de for Colossus. Du kan se et foto af en rekonstruktion af maskinen fra 1994 på figur 5. Den maskine, sammen med nogle svagheder i Enigma, hjalp de allierede med at vinde 2. Verdenskrig.

Kryptering på internettet
Efter 2. Verdenskrig var informationerne om kryptering hemmelige, og ikke anvendt i vid udstrækning uden militære- og regeringsorganisationer. Det ændrede sig i løbet af halvfjerdserne, med fremkomsten af forløberen for internettet, ARPANET. De amerikanske myndigheder indså, at der var et behov for, at kommercielle virksomheder kunne sikre deres kommunikation imod at blive opsnappet og læst af andre end dem selv. IBM foreslog en krypteringsalgoritme baseret på en Feistel-kode.

Horst Feistel var en tysk kryptograf, der levede fra 1915 til 1990. Det var forslaget fra IBM, der blev til den første internationale standard for kryptering, DES. Oprindeligt skulle DES have haft en nøglelængde på 64-bit, men efter at have været rundt om NSA, blev længden af nøglen reduceret til 56-bit. Det, at nøglelængden blev forkortet, og at algoritmen havde været forbi NSA, gav anledning til mistanker om, at der var bygget bagdøre ind i DES.
DES blev alligevel anvendt internationalt de næste mange år. I løbet af halvfemserne og fordi computerne blev hurtigere og hurtigere, blev DES erstattet med Triple DES. Den korte nøglelængde blev anset for at være for kort til moderne brug, og DES blev da også brudt i 1999. Med Triple DES blev nøglelængden forlænget til 168-bit. Triple DES kan bruges den dag i dag, men er ved at blive erstattet af AES.

AES står for Advanced Encryption Standard. AES blev udviklet i skøn forening af forskellige internationale hold af kryptografer. Den endelige algoritme, der blev valgt, er blevet udviklet af to belgiske kryptografer: Joan Daemen og Vincent Rijmen. AES blev godkendt som standard i 2002, og den er blevet implementeret i alle de forskellige typer af sikkerhedsprodukter, du kan købe i dag. Står du f.eks. overfor at skulle implementere en VPN-forbindelse og bliver bedt om at vælge imellem Triple DES og AES, så skal du vælge AES.
AES kommer i tre forskellige nøglelængder: 128-, 192- og 256-bit. Langt de fleste vælger en 256-bit nøgle, men der er ikke nogle indikationer på, at det er nødvendigt med så lang en nøgle for AES. Når alt kommer til alt, så er valget af nøglelængde et spørgsmål om, hvad man er mest tryg ved.

NSA i kamp mod aktivister
I halvfemserne var vi vidne til, at NSA kæmpede en brav kamp for at sikre, at de forskellige leverandører af kryptering ikke leverede en kryptering, som NSA ikke kunne bryde. Aktivister kæmpede en lige så brav kamp for at kunne kryptere med en algoritme, som NSA ikke ville kunne bryde. På figur 6 kan du se en af de T-shirts, der blev produceret i protest imod den lov, der var gældende på det tidspunkt.

En af de ting som gjorde, at NSA på det tidspunkt opgav kampen imod kryptering, var en bog der blev skrevet af Phil Zimmerman. Bogen hedder ’The Official PGP Users guide’. I bogen var inkluderet den kildekode, han havde skrevet for at implementere RSA-algoritmen, som er basis for en masse af den kryptering, der er baseret på offentlige og private nøgler. Kildekoden var allerede offentliggjort på FTP-servere, til download fra hele verden, men han fik problemer med både RSA og de amerikanske myndigheder for det. Hans reaktion var at skrive bogen med kildekoden inkluderet. Kildekoden i sig selv blev betragtet som et våben af myndighederne, mens en bog ikke var det. Af den vej fik vi alle sammen adgang til at kunne lave vores egen private og offentlige nøgler.

Det var et hurtigt overblik over historien om kryptering. Hvis du gerne vil dybere ned i den historie, og det kan jeg kun anbefale, så læs bogen af Simon Singh, der hedder Kodebogen. Den findes på dansk. For en endnu dybere introduktion findes bogen Secret History - The Story of Cryptology. Den findes dog kun på engelsk.

Hvorfor er kryptering vigtig?
Nu tilbage til spøgsmålet fra begyndelsen, hvorfor er kryptering vigtig? Kryptering er en vital del af vores allesammens sikkerhed. Kryptering findes alle vegne på internettet og i vores daglige liv. Når du hæver penge i en hæveautomat, så er den kommunikation, der sker imellem maskinen og din bank krypteret. Det samme gælder, når du bruger dit betalingskort til at betale for varer i butikker. Kommunikationen imellem kortlæseren og banken er krypteret. Når du kommunikerer med banken via onlinebanking, så er den kommunikation naturligvis også krypteret, det samme gælder, når du bruger dit kreditkort til at betale for varer over nettet.

På grund af overvågning er mange websider nu begyndt at kryptere den kommunikation, der sker imellem deres brugere og websiden. Det uanset, om det, websiden tilbyder, er hemmeligt eller ej. Google og Microsoft krypterer også al den trafik, der sker imellem deres forskellige datacentre. Det gør de, fordi det kom frem med Snowden-afsløringerne, at NSA koblede sig direkte på de kommunikationslinjer, der findes imellem de enkelte datacentre.

Indtil det kom frem med Snowden, at NSA, og GCHQ i England ikke at forglemme, koblede sig direkte på linjerne, var disse linjer ikke krypterede. Reaktionen fra det meste af verden i den forbindelse var et kollektivt kald for mere og bedre kryptering. Nu melder spørgsmålet sig, om det ikke er efterretningstjenesternes egen skyld, at de ikke længere er i stand til at opsnappe og læse al den information de tidligere var i gang med? Det er grunden til, at vi nu hører krav fra de forskellige regeringer om, at it-selskaber enten skal sætte bagdøre ind i krypteringen eller reducere effektiviteten af krypteringen, så den kan brydes af myndighederne.

Hvis regeringerne får held med at implementere en lov, der svækker den kryptering, vi bruger i dag, så vil det betyde, at vores kollektive sikkerhed bliver markant reduceret. Husk på at krypteringen ikke kun vil kunne brydes af en regering, men i lige så høj grad af en hacker. Uanset om denne hacker kommer fra en af undergrundsgrupperne eller en statssponsoreret hacker. Al vores sikkerhed vil sandsynligvis blive svækket.