Hva er SHA-256?

SHA-256 er en kryptografisk hashfunksjon som tar inn data av vilkårlig lengde og produserer en verdi på nøyaktig 256 bits. Denne verdien kalles ofte en hash, et avtrykk eller en sjekksum, og den fungerer som et kompakt fingeravtrykk av innholdet. Uansett om du mater inn et enkelt ord eller en stor fil på flere gigabyte, blir resultatet alltid like langt: 256 bits, som vanligvis vises som 64 tegn i heksadesimal form.

SHA-256 er i dag et av de mest brukte valgene innen kryptografi. Den ligger bak hengelåsen i nettleseren, bak signeringen av programvare og bak måten Bitcoin fungerer på. I denne artikkelen ser vi på hvor SHA-256 hører hjemme, hvordan den oppfører seg, og hvor den faktisk brukes.

Hvor SHA-256 hører hjemme i SHA-2

SHA-256 er en del av familien som kalles SHA-2, utviklet og standardisert i regi av NIST i USA. SHA-2 er en samling beslektede funksjoner, og tallet i navnet angir hvor mange bits resultatet er på. SHA-256 gir 256 bits, mens for eksempel SHA-512 gir 512 bits. De deler den samme grunnleggende ideen, men er tilpasset ulike behov for sikkerhetsmargin og ytelse.

Det er viktig å skille SHA-2 fra den eldre SHA-1. SHA-1 ga 160 bits og var lenge standardvalget, men ble regnet som usikker etter at en praktisk kollisjon ble demonstrert i 2017. SHA-2 er ikke bare en lengre versjon av SHA-1, det er et eget design. Derfor påvirket ikke kollisjonen i SHA-1 sikkerheten til SHA-256, som fortsatt regnes som trygg. Det finnes også en nyere standard, SHA-3, som bygger på en helt annen indre konstruksjon og fungerer som et alternativ og en reserve.

Hva 256 bits faktisk betyr

At hashen er på 256 bits, betyr at det finnes et astronomisk stort antall mulige verdier. Antallet er to opphøyd i 256, et tall så stort at det i praksis er umulig å gjette eller søke seg gjennom alle mulighetene med dagens eller forutsigbar fremtidig teknologi.

Denne enorme verdimengden er grunnen til at det er trygt å bruke et kort avtrykk til å representere et stort innhold. Selv om det rent teoretisk finnes uendelig mange meldinger og bare et endelig antall hashverdier, er antallet verdier så svimlende stort at to tilfeldige meldinger i praksis aldri vil kollidere. En angriper som forsøker å finne en kollisjon ved ren prøving, står overfor en oppgave som ikke lar seg gjennomføre.

Hvordan SHA-256 oppfører seg

Det er ikke lengden alene som gjør SHA-256 nyttig. Det er måten den oppfører seg på. Tre egenskaper er sentrale.

Deterministisk

SHA-256 er deterministisk. Den samme inndataen gir alltid nøyaktig samme hash, hver gang, på enhver maskin. Dette er det som gjør funksjonen brukbar til å sjekke integritet: du kan beregne hashen på ett sted og sammenligne med en hash beregnet et annet sted, og hvis innholdet er identisk, vil verdiene stemme overens.

Lavineffekt

SHA-256 har en sterk lavineeffekt. Endrer du så lite som en eneste bit i inndataen, for eksempel ett tegn i en tekst, blir hele den resulterende hashen helt annerledes. Det finnes ingen gradvis likhet der en liten endring gir en liten endring i avtrykket. Selv den minste forskjellen i innholdet sprer seg gjennom hele resultatet og gir et fullstendig nytt avtrykk. Dette gjør det enkelt å oppdage selv bittesmå endringer eller forsøk på tukling.

Enveis og kollisjonsmotstand

SHA-256 er ment å være praktisk umulig å reversere. Ut fra en hash skal du ikke kunne regne deg tilbake til den opprinnelige meldingen. Denne egenskapen kalles preimage-motstand. På et beslektet vis skal det også være praktisk umulig å finne to forskjellige meldinger som gir samme hash, noe som kalles kollisjonsmotstand. For SHA-256 regnes begge disse egenskapene fortsatt som intakte, og det er nettopp dette som gjør at funksjonen fremdeles er anbefalt der sikkerheten teller.

Hvordan disse egenskapene oppstår av algoritmens indre virkemåte er et teknisk tema i seg selv. SHA-256 bygger hashen ved å bearbeide innholdet i flere runder med blanding og kombinasjon, men for å forstå hvordan funksjonen brukes trenger du ikke kjenne hvert enkelt steg. Det vesentlige er hvordan den oppfører seg utad: deterministisk, med kraftig lavineeffekt og uten praktisk mulighet for å reversere eller kollidere.

Hvor SHA-256 brukes

SHA-256 er ikke en teoretisk øvelse. Den er en arbeidshest i moderne digital infrastruktur.

  • TLS-sertifikater. Når du besøker et nettsted med kryptert forbindelse, brukes SHA-256 i signeringen av sertifikatet som binder domenet til en offentlig nøkkel. Da SHA-1 ble faset ut, var SHA-256 det naturlige valget å gå over til, og det er i dag standarden for slike sertifikater.
  • Programvaresignering. Når en utvikler signerer et program eller en oppdatering, lages det først et SHA-256-avtrykk av innholdet, og dette avtrykket signeres. Brukeren kan dermed kontrollere at filen er uendret og kommer fra riktig avsender. Endrer noen så mye som en byte, stemmer ikke lenger avtrykket.
  • Bitcoin og proof-of-work. Bitcoin bygger i stor grad på SHA-256. Nettverket bruker funksjonen i sin proof-of-work, der maskiner konkurrerer om å finne en inndata som gir en hash med bestemte egenskaper. Den enorme verdimengden og lavineeffekten er det som gjør denne mekanismen meningsfull.
  • Integritetssjekk av filer. Mange nedlastinger publiseres sammen med en SHA-256-sjekksum. Du kan beregne hashen av filen du lastet ned og sammenligne med den oppgitte verdien. Stemmer de, er filen sannsynligvis uendret og fullstendig. Avviker de, er noe galt, enten en feil under nedlastingen eller en endring underveis.

Hvordan en SHA-256-verdi ser ut

I praksis møter du sjelden de rå 256 bitene direkte. De vises nesten alltid som en tekststreng på 64 tegn i heksadesimal form, der hvert tegn representerer fire bits. To filer som er identiske, gir nøyaktig samme streng, mens to filer som skiller seg med så lite som ett tegn, gir to strenger uten synlig likhet. Det er denne enkle sammenligningen som gjør SHA-256 så praktisk: et menneske eller et program kan raskt avgjøre om to avtrykk er like, uten å vite noe om innholdet de stammer fra.

Det er også verdt å merke seg at samme melding gir samme hash uavhengig av hvilket program eller operativsystem som beregner den. SHA-256 er en standardisert algoritme, så en verdi beregnet på én maskin kan trygt sammenlignes med en verdi beregnet på en helt annen. Dette er en forutsetning for at sjekksummer publisert av en utgiver skal være nyttige for alle som laster ned.

Hva SHA-256 ikke gjør

Det er like viktig å forstå hva en hashfunksjon ikke er. SHA-256 er ikke kryptering. Kryptering er reversibel for den som har riktig nøkkel, mens en hash er ment å være en enveis prosess uten vei tilbake. Du kan ikke “dekryptere” en SHA-256-verdi for å få den opprinnelige meldingen, rett og slett fordi avtrykket er kortere enn innholdet og kaster bort informasjon underveis.

SHA-256 alene gir heller ikke noe bevis på hvem som har laget en melding. Den forteller bare om innholdet er uendret, ikke hvem som står bak det. For å knytte et avtrykk til en bestemt avsender trengs i tillegg asymmetriske nøkler, slik det gjøres i digitale signaturer. Hashen er en byggekloss, ikke en komplett løsning, og den brukes nesten alltid sammen med andre mekanismer.

Til slutt er det viktig å huske at en vanlig SHA-256-hash av et passord ikke i seg selv er nok til trygg passordlagring. Fordi funksjonen er rask, kan en angriper prøve enormt mange gjettede passord per sekund. Til passord brukes derfor bevisst trege, saltede funksjoner i stedet for en rå SHA-256. SHA-256 er ypperlig til integritet og signering, men hvert bruksområde har sine egne krav.

Et pålitelig avtrykk for moderne sikkerhet

SHA-256 har blitt et standardvalg fordi den kombinerer en praktisk størrelse med sterke sikkerhetsegenskaper. Et fast avtrykk på 256 bits er kort nok til å være håndterlig og langt nok til at kollisjoner er praktisk umulige å finne. Den oppfører seg forutsigbart, avslører den minste endring og lar seg ikke reversere.

Da SHA-1 viste seg å være sårbar, var SHA-256 allerede klar til å ta over de samme oppgavene med solid margin. Så lenge den fortsatt regnes som trygg, vil den være en av de mest brukte byggeklossene for tillit på nett, fra sertifikatet i nettleseren til signaturen på programvaren du installerer.