Kryptografi og fundamentet for tillid online
Næsten alt, hvad vi gør på internettet, hviler på en stilfærdig antagelse: at data ikke er blevet ændret undervejs, og at den, vi taler med, faktisk er den, vi tror. Når du logger ind i din netbank, henter en softwareopdatering eller verificerer en betaling, arbejder kryptografiske teknikker i baggrunden for at gøre den antagelse holdbar. En af de vigtigste byggesten i hele dette maskineri er den kryptografiske hashfunktion.
Denne sektion handler om hashfunktioner, om SHA-familien af algoritmer, om hvordan digitale signaturer bruger hashing, og om hvad der sker, når en hashfunktion bryder sammen, sådan som SHA-1 gjorde i 2017. Målet er at give en præcis, men læsbar forståelse af, hvorfor disse begreber betyder noget, ikke kun for kryptografer, men for alle, der stoler på, at en hjemmeside, en fil eller en signatur er ægte.
Hvad er en kryptografisk hash?
En hashfunktion tager et input af vilkårlig størrelse, det kan være et enkelt ord, en hel bog eller en filmfil på flere gigabyte, og omdanner det til en kort streng af fast længde. Denne streng kaldes ofte et hash, en digest eller et fingeraftryk. Uanset hvor stort inputtet er, har resultatet altid samme længde. SHA-256 producerer for eksempel altid 256 bit, svarende til 64 hexadecimale tegn.
En almindelig hashfunktion, som dem der bruges i databaser til hurtig opslag, behøver kun at fordele værdier nogenlunde jævnt. En kryptografisk hashfunktion stiller langt strengere krav. Den skal opfylde flere egenskaber på én gang:
- Deterministisk: Det samme input giver altid det samme output. Ændrer du blot et enkelt tegn, skal resultatet være forudsigeligt og reproducerbart.
- Hurtig at beregne: Det skal være effektivt at udregne et hash fra et input.
- Modstand mod preimage: Givet et hash skal det i praksis være umuligt at finde et input, der frembringer netop det hash. Funktionen kan med andre ord ikke vendes om.
- Modstand mod kollisioner: Det skal være praktisk umuligt at finde to forskellige input, der giver det samme hash.
- Lavineeffekt: En lille ændring i inputtet, helt ned til en enkelt bit, skal ændre omkring halvdelen af bittene i outputtet, så det nye hash ser fuldstændig urelateret ud.
Det er kombinationen af disse egenskaber, der gør en hashfunktion brugbar som et digitalt fingeraftryk. Hvis to filer har det samme kryptografiske hash, antager vi i praksis, at de er identiske. Hele tilliden afhænger af, at denne antagelse holder.
SHA-familien i fugleperspektiv
SHA står for Secure Hash Algorithm, en familie af hashfunktioner udviklet med medvirken fra det amerikanske standardiseringsorgan NIST. Familien er ikke én algoritme, men flere generationer:
- SHA-1 producerer et 160-bit hash. Den var i mange år arbejdshesten bag TLS-certifikater, versionsstyring og digitale signaturer. I dag betragtes den som usikker, fordi det er blevet praktisk muligt at fremstille kollisioner.
- SHA-2 er en gruppe funktioner med større digests, herunder SHA-224, SHA-256, SHA-384 og SHA-512. SHA-256 er den mest udbredte og anses fortsat for sikker til praktisk brug.
- SHA-3 er en nyere standard, bygget på en helt anden intern konstruktion (kendt som Keccak). Den fungerer som et selvstændigt alternativ, ikke som en lapning af SHA-2.
Når SHA-1 svigtede, var det ikke et tegn på, at hashing som idé var fejlbehæftet. Det var et tegn på, at en konkret, ældre algoritme var blevet for svag i forhold til den regnekraft, angribere råder over i dag. Overgangen til SHA-256 og senere SHA-3 er en del af en løbende proces, hvor algoritmer pensioneres, før de bliver farlige.
Hvorfor hashing bærer tilliden online
Hashing dukker op overalt, hvor man har brug for at vide, om noget er uændret eller ægte. Et par konkrete eksempler:
- Filintegritet: Når du downloader software, offentliggør udgiveren ofte hashet af filen. Du kan beregne hashet af din egen kopi og sammenligne. Stemmer de ikke, er filen beskadiget eller manipuleret.
- Adgangskoder: Veldrevne systemer gemmer ikke dine adgangskoder direkte, men derimod et hash af dem (kombineret med en tilfældig salt). Selv hvis databasen lækker, afslører hashene ikke umiddelbart de oprindelige kodeord.
- Digitale signaturer: I stedet for at signere en hel besked signerer man hashet af beskeden. Det er hurtigere og lige så sikkert, så længe hashfunktionen er stærk.
- Blockchains: Kryptovalutaer som Bitcoin bruger hashing til at lænke blokke sammen og til at sikre selve mineprocessen. Et ændret historisk data ville give et helt andet hash og dermed straks afsløre manipulationen.
Det fælles tema er, at et lille fingeraftryk kan stå i stedet for en stor mængde data, så længe vi kan stole på, at to forskellige data ikke kan dele samme fingeraftryk. Netop derfor er en kollision så alvorlig: den underminerer hele forudsætningen.
Hvad denne sektion dækker
De følgende artikler går i dybden med hvert sit emne:
- SHA-1-kollisionen fra 2017 gennemgår SHAttered, den første praktiske SHA-1-kollision, hvordan den blev fremstillet, og hvad den betød for sikkerheden på nettet.
- SHA-256 forklaret beskriver, hvad SHA-256 er, hvordan den opfører sig, og hvor den bruges i praksis.
- Hashfunktioner tager et bredere blik på de egenskaber, en kryptografisk hash skal have, og hvordan den adskiller sig fra almindelige hashfunktioner.
- Digitale signaturer viser, hvordan hashing og asymmetriske nøgler tilsammen gør det muligt at bevise, hvem der har skrevet under på en besked.
Tilsammen tegner artiklerne et billede af, hvordan tilliden online faktisk er bygget op, og hvorfor valget af den rette hashfunktion er en afgørende detalje og ikke en teknisk bagatel.




