Kryptografi og grunnlaget for tillit på nett
Hver gang du logger inn på en tjeneste, laster ned en programvareoppdatering eller besøker et nettsted med hengelås i adressefeltet, stoler du på kryptografi uten å tenke over det. En sentral byggekloss i alt dette er den kryptografiske hashfunksjonen. Den er kanskje ikke like synlig som passord eller krypteringsnøkler, men den ligger under nesten alle systemer som skal bevise at data er ekte og uendret.
Denne delen av nettstedet forklarer hva en kryptografisk hash er, hvordan SHA-familien fungerer på et overordnet nivå, og hvorfor hashing er en forutsetning for tillit på internett. Vi går også gjennom det kjente SHAttered-angrepet fra 2017, som viste at SHA-1 ikke lenger kunne regnes som trygg.
Hva er en kryptografisk hash?
En kryptografisk hashfunksjon tar inn data av vilkårlig lengde, for eksempel en kort tekst, en hel bok eller en stor programfil, og produserer en kort verdi med fast lengde. Denne verdien kalles ofte en hash, en sjekksum eller et avtrykk. SHA-256 gir for eksempel alltid 256 bits ut, uansett hvor lite eller stort innholdet er.
Det spesielle med en kryptografisk hash er ikke bare at den komprimerer data. Den har noen egenskaper som gjør den egnet til sikkerhet:
- Deterministisk. Den samme inndataen gir alltid den samme hashen. Endrer du så mye som ett tegn, blir resultatet et helt annet.
- Rask å regne ut. Det skal være billig å beregne hashen av en melding, slik at funksjonen kan brukes i stor skala.
- Vanskelig å reversere. Det skal i praksis være umulig å finne tilbake til den opprinnelige meldingen ut fra hashen alene. Denne egenskapen kalles preimage-motstand.
- Kollisjonsmotstand. Det skal være praktisk umulig å finne to ulike meldinger som gir nøyaktig samme hash. Når noen klarer akkurat det, sier vi at funksjonen er knekt.
Den siste egenskapen er kjernen i historien om SHA-1. En kollisjon høres uskyldig ut, men den undergraver hele ideen om at en hash er et unikt avtrykk av innholdet.
SHA-familien på et overordnet nivå
SHA står for Secure Hash Algorithm og er en gruppe standarder utviklet og publisert i regi av amerikanske myndigheter, nærmere bestemt NIST. Over tid har det kommet flere generasjoner:
- SHA-1 gir en hash på 160 bits. Den var i mange år standardvalget for digitale sertifikater, signaturer og versjonskontroll. I dag regnes den som usikker etter at en praktisk kollisjon ble demonstrert.
- SHA-2 er en familie som omfatter blant annet SHA-256 og SHA-512. Tallet angir antall bits i resultatet. SHA-256 er i dag et av de mest brukte valgene for sertifikater, signering og blokkjeder.
- SHA-3 er en nyere standard som bygger på en helt annen indre konstruksjon enn SHA-2. Den finnes som et alternativ og en reserve dersom det skulle dukke opp svakheter i SHA-2.
Det er verdt å merke seg at SHA-2 og SHA-1 ikke er samme funksjon med ulik nøkkellengde. De er forskjellige design. At SHA-1 ble knekt, betyr ikke automatisk at SHA-256 er svekket, og i praksis regnes SHA-256 fortsatt som trygg.
Hvorfor hashing skaper tillit
Tillit på nett handler ofte om to spørsmål: er disse dataene uendret, og kommer de virkelig fra den jeg tror? Hashfunksjoner er svaret på det første spørsmålet og en viktig del av svaret på det andre.
Når du laster ned en fil, kan utgiveren publisere hashen av den ekte filen. Du kan beregne hashen av det du faktisk lastet ned og sammenligne. Stemmer de, er filen sannsynligvis uendret. Endrer en angriper så mye som én byte, endres hashen, og avviket avsløres.
I digitale signaturer brukes hashen som et kompakt avtrykk av en hel melding. I stedet for å signere hele dokumentet, signerer man hashen. Det gjør signaturen rask og praktisk, men det betyr også at hele sikkerheten hviler på at det er umulig å finne to dokumenter med samme hash. Hvis noen kan lage en kollisjon, kan de bytte ut et harmløst dokument med et skadelig dokument som har samme signatur. Nettopp derfor var SHA-1-kollisjonen i 2017 så alvorlig.
Hashing er også grunnlaget for hvordan passord lagres på en forsvarlig måte, for hvordan blokkjeder binder transaksjoner sammen, og for hvordan systemer raskt kan oppdage om noe har blitt tuklet med.
Hva denne delen dekker
Vi har delt temaet i fire artikler som hver tar for seg en bit av bildet:
- SHA-1-kollisjonen fra 2017 forteller historien om SHAttered, det første praktiske angrepet som produserte to ulike filer med samme SHA-1-verdi, og hva det betydde for sertifikater, Git og signering.
- SHA-256 forklart tar for seg hvor SHA-256 hører hjemme i SHA-2, hva en 256-bits hash innebærer, og hvor algoritmen brukes i praksis.
- Hashfunksjoner generelt går grundig gjennom egenskapene som skiller en kryptografisk hash fra en vanlig sjekksum, og hvorfor de egenskapene betyr noe.
- Digitale signaturer viser hvordan hashfunksjoner og asymmetriske nøkler sammen lar oss bevise hvem som har laget en melding, og hvorfor en kollisjon truer hele ordningen.
Til sammen gir disse artiklene et bilde av hvordan en liten verdi med fast lengde kan bære så mye av tilliten vi har til digitale systemer, og hva som skjer den dagen en slik byggekloss viser seg å være sårbar.
En byggekloss du sjelden ser, men alltid bruker
Det meste av kryptografien som beskytter hverdagen din, kjører i bakgrunnen. Du merker den først når noe går galt, eller når en svakhet blir kjent. Historien om SHA-1 er et godt eksempel: en algoritme som hadde tjent trofast i mange år, måtte fases ut da det ble klart at avtrykket den lagde ikke lenger var unikt nok. Å forstå hvordan hashfunksjoner virker, gjør det lettere å skjønne hvorfor slike overganger skjer, og hvorfor valget av algoritme har reelle konsekvenser for sikkerheten din.




