Kryptering

(eller: encryption, enciphering, kryptografering).

Ordet er en moderne forenkling af den traditionelle betegnelse kryptografering, som kommer fra græsk "kryptós", skjult, og "gráphein", skrive, med betydningen hemmelig skrift. Kryptering er en vigtig del af kryptografi.

Kryptering er omformning af klartekst (tekst eller data) til chiffertekst, således at denne ikke er umiddelbart forståelig for uindviede. Et kryptografisk system består af en mængde mulige klartekster, en mængde af mulige chiffertekster, en mængde af mulige nøgler, samt to funktioner: en krypteringsfunktion E og den tilsvarende funktion D til dekryptering.

Kaldes en klartekst P (engelsk Plaintext) og en chiffertekst C (engelsk Ciphertext), er C = E(P,K1) og P = D(C,K2); E og D er de to algoritmer, og K1, K2 samme nøgle eller et par af nøgler. Ofte er E og D offentligt kendt, og sikkerheden hviler på, at K2 er hemmelig. E konstrueres således, at C fremtræder som tilfældig eller meningsløs, eller ligner støj. Hvis E og D anvender samme hemmelige nøgle (K1=K2), kaldes kryptosystemet symmetrisk, og hvis der er tale om to forskellige nøgler, kaldes kryptosystemet asymmetrisk. Af de to nøgler vil den ene (oftest K1) kunne være offentlig kendt.

Shannon formulerede i 1949 krav til og egenskaber ved kryptering ved brug af to grundlæggende begreber, kaldet "confusion" og "diffusion". Confusion tilslører sammenhængen mellem klartekst og chiffertekst, f.eks. ved substitution: de enkelte dele af klarteksten erstattes med chiffertekst efter et system, der er svært eller umuligt at gennemskue. Diffusion spreder redundansen i klarteksten ud i hele chifferteksten, f.eks. ved transposition: flytning af de enkelte dele af klarteksten til et andet sted.

Shannon formulerede også et mål for krypteringens styrke kaldet "key equivocation" ud fra entropien i mængden af mulige klartekster H(P) (som er et udtryk for redundansen i P), entropien i mængden af mulige chiffertekster H(C), og entropien i mængden af mulige nøgler H(K), idet

         KE = H(K) + H(P) - H(C)
Hvis H(K) er stor, dvs. nøgler vælges tilfældigt og ud af en tilstrækkelig stor mængde, er KE stor og systemet stærkest. Dette er i øvrigt baggrunden for eksistensen af perfekte kryptografiske systemer.

Kryptering kan enten ske ved, at klarteksten opdeles i blokke (ofte på 64 bit), der krypteres hver for sig og sendes til modtageren, eller ved, at klarteksten opfattes som en strøm af enkeltdele, der løbende krypteres og sendes. Moderne kryptering foregår ofte som en kombination af transposition, aritmetiske operationer og substitution. Sidstnævnte har bl.a. til formål at udjævne forskellen i tegnhyppighed, idet bestemte tegn (bogstaver) inden for et sprogområde forekommer med nogenlunde konstant hyppighed, som udviser store variationer tegnene imellem. Dette giver høj redundans, da entropien ikke er maksimal, og dette er et af kryptoanalytikerens bedste udgangspunkter for at finde den oprindelige klartekst ud fra en chiffertekst. En vigtig egenskab ved algoritmer til kryptering er derfor at mindske redundansen, en egenskab også datakompressionsalgoritmer har.

Det er i mange sammenhænge en god ide at komprimere data før kryptering (at formindske redundansen gør leddet H(P) ovenfor størst). Dette betyder ikke nødvendigvis, at anvendelsen af et komprimeringsprogram som UNIX' "compress" er en god ide, idet sådanne programmer ofte indleder de komprimerede data med et fast hoved, der f.eks. indeholder et kendt "magic number".

Fremkomsten af computere (og her er betegnelsen for edb-maskinerne meget passende) har betydet meget for såvel kryptering som kryptoanalyse. Der er i dette århundrede imidlertid også sket markante fremskridt af teoretisk art; her kan nævnes den perfekte algoritme baseret på "one time pad", Shannons informationsteoretiske overvejelser, og systemer med offentlig nøgle.

Det er værd at understrege, at der eksisterer perfekte systemer til kryptering, dvs. som er umulige at bryde. De er imidlertid besværlige at anvende, fordi det er systemer med én hemmelig nøgle, som skal være lige så lang som klarteksten og bestå af tilfældige data (se random), og fordi nøglen kun må bruges én gang ("one-time pad"); udvekslingen af nøgler kan derfor være et svagt punkt. Et eksempel på et perfekt system er Joseph Mauborgne og Gilbert Vernams system fra 1917. I praksis benyttes derfor systemer, der nok ikke er teoretisk perfekte, men som i teorien ikke kan brydes, selv hvis der anvendes store mængder edb-regnetid; de perfekte systemer reserveres til situationer, hvor det ekstra besvær kan retfærdiggøres.

Mange moderne algoritmer baseres på såkaldte "one-way functions" eller énvejsfunktioner, dvs. hvor det er let at beregne C=E(P), men beregningsmæssigt meget tungt at beregne den inverse E' af E og dermed P=E'(C). Et specialtilfælde af énvejsfunktionerne er de funktioner, der har en indbygget "trapdoor" eller bagdør; her har E' en ekstra parameter, således at P=E'(C, K) er let at beregne, hvis K er kendt, men ellers meget tung. De moderne algoritmer baseres gerne på matematiske og datalogiske problemstillinger, som erfaringsmæssigt er vanskelige at løse, men hvor det omvendte, ud fra en løsning at finde problemet, er let. Eksempler på dette er at finde store primtalsfaktorer i sammensatte tal, eller at pakke en rygsæk ("knapsack algorithms"). Se kompleksitet.

Som eksempler på moderne metoder kan nævnes DES (1976), som anvender transpositioner og substitutioner og en hemmelig nøgle; RSA (1978), som anvender et par af nøgler; Skipjack (1993), som er udviklet i USA og danner basis for Clipper-teknologien, men hvor algoritmen er klassificeret; IDEA, International Data Encryption Algorithm (1992), som bruger en hemmelig nøgle på 128 bit og bygger på transpositioner, XOR, addition modulo 216 og multiplikation modulo 216+1 i otte runder; og MD2 og MD5, som begge er "one-way hash functions", dvs. kan levere en sikker checksum til validering af dataintegritet. Internettets PGP og PEM benytter henholdsvis IDEA/RSA/MD5 og DES/RSA/MD2/MD5. UNIX crypt(3) og Kerberos er baseret på DES.

Sikkerheden ved en bestemt krypteringsmetode beror dels på konstruktionsprincipperne for algoritmen, dels på nøglen. Det er en misforståelse at tro, at det kun er længden af nøglen, der er vigtig; det er i lige så høj grad måden, at den vælges på. Der gælder stort set de samme principper for nøglevalg som for valg af password. Nøglelængden for de ovennævnte metoder svinger fra 56 bit for DES til 508/512/664/1024/1280 bit for RSA. Skipjack benytter 80 bit lange nøgler.

Forfattere: 
Klaus Hansen
Casper Thomsen