Hvad er SHA-256?
SHA-256 er en kryptografisk hashfunktion, der tager et input af vilkårlig størrelse og frembringer et fingeraftryk på præcis 256 bit. Den hører til SHA-2-familien, en gruppe af hashfunktioner udviklet med medvirken fra det amerikanske standardiseringsorgan NIST. Tallet 256 henviser til længden af resultatet, og det skrives typisk som 64 hexadecimale tegn.
SHA-256 er i dag en af de mest udbredte hashfunktioner overhovedet. Den dukker op i TLS-certifikater, i softwaresignering, i Bitcoin og i utallige værktøjer til at kontrollere, om en fil er uændret. Hvor den ældre SHA-1 er blevet udfaset, fordi det er blevet praktisk muligt at fremstille kollisioner, anses SHA-256 fortsat for sikker til praktisk brug.
Hvor SHA-256 sidder i SHA-2
Det er let at blande SHA-1, SHA-2 og SHA-3 sammen, men de er adskilte ting:
- SHA-1 giver et 160-bit hash og betragtes nu som usikker.
- SHA-2 er en familie med flere varianter, blandt andet SHA-224, SHA-256, SHA-384 og SHA-512. Tallet angiver længden af resultatet. SHA-256 er den mest brugte.
- SHA-3 er en nyere standard bygget på en helt anden intern konstruktion, og den fungerer som et selvstændigt alternativ snarere end en efterfølger til SHA-2.
SHA-256 er altså ét bestemt medlem af SHA-2-familien, valgt fordi 256 bit giver en god balance mellem sikkerhed og effektivitet for de fleste formål. Den større 256-bit digest gør kollisionsangreb dramatisk sværere end mod SHA-1, fordi antallet af mulige hashværdier vokser eksplosivt med hver ekstra bit.
Det er vigtigt at forstå, at flere bit ikke kun betyder lidt mere sikkerhed. Hver ekstra bit fordobler antallet af mulige hashværdier. Spranget fra 160 bit i SHA-1 til 256 bit i SHA-256 betyder derfor, at mængden af mulige fingeraftryk er astronomisk meget større. Det giver i sig selv en betydelig margen mod kollisionsangreb, og kombineret med en mere modstandsdygtig intern konstruktion er det en stor del af grunden til, at SHA-256 har holdt, hvor SHA-1 faldt.
Hvordan SHA-256 opfører sig
Man behøver ikke kende algoritmens indre maskineri for at forstå, hvad den gør, og hvorfor den er nyttig. Det interessante er dens udadtil observerbare adfærd.
Deterministisk
Det samme input giver altid det samme output. Hasher du den samme fil to gange på to forskellige maskiner, får du den samme 256-bit værdi. Det er denne forudsigelighed, der gør det muligt at bruge hashet som et stabilt fingeraftryk.
Lavineeffekt
Ændrer du blot en enkelt bit i inputtet, ændrer omkring halvdelen af bittene i outputtet sig, og det nye hash ser fuldstændig urelateret ud. To næsten ens filer giver altså to vidt forskellige hash. Det betyder, at man ikke kan slutte noget om, hvor lig to input er, ved at sammenligne deres hash. Enten er de identiske og giver samme hash, eller også er de forskellige og giver hash, der ikke ligner hinanden.
Modstand mod preimage
Givet et hash skal det i praksis være umuligt at regne baglæns og finde et input, der frembringer netop det hash. Funktionen er med andre ord enkelt at beregne forlæns, men i praksis umulig at vende om. Det er denne egenskab, der gør det forsvarligt at offentliggøre et hash uden at afsløre det underliggende data.
Modstand mod kollisioner
Det skal være praktisk umuligt at finde to forskellige input, der giver det samme 256-bit hash. Med en så lang digest er antallet af mulige værdier så enormt, at et kollisionsangreb mod SHA-256 ligger langt uden for, hvad nogen kan udføre med kendt teknologi. Det er præcis denne egenskab, SHA-1 mistede, og som SHA-256 stadig holder på.
Det er værd at understrege, at disse egenskaber beskrives på et begrebsligt plan. SHA-256 arbejder internt i runder over blokke af data, men de præcise tekniske trin er ikke det, der gør funktionen forståelig i praksis. Det vigtige er, at den opfører sig deterministisk, spreder ændringer aggressivt og modstår både preimage- og kollisionsangreb.
På et helt overordnet niveau virker funktionen ved at læse inputtet ind i faste blokke og blande dem gennem en række interne runder, hvor data løbende kombineres og omrokeres. Resultatet af hver blok føres videre til den næste, så hele inputtet til sidst påvirker det færdige hash. Det er denne gentagne blanding, der giver lavineeffekten og gør det praktisk umuligt at styre, hvilket hash et bestemt input ender med. Man behøver dog ikke kende disse trin i detaljer for at bruge funktionen korrekt. Det afgørende er adfærden udadtil, ikke den interne mekanik.
Hvor SHA-256 bruges
SHA-256 er ikke en akademisk kuriositet. Den er en arbejdshest, der holder konkrete systemer sikre hver dag.
TLS-certifikater
Når din browser opretter en sikker forbindelse til en hjemmeside, indgår hashing i valideringen af serverens certifikat. SHA-256 bruges til at sikre, at certifikatet ikke er blevet ændret, og er en del af kæden af tillid, der gør, at hængelåsen i adresselinjen betyder noget. Da SHA-1 blev udfaset i certifikater, var SHA-256 det naturlige skridt op.
Softwaresignering
Udgivere af software signerer deres programmer, så du kan kontrollere, at de stammer fra den rette kilde og ikke er blevet manipuleret. I praksis signeres et hash af softwaren, og her er SHA-256 et almindeligt valg. Hvis bare en enkelt byte i programmet ændres efter signeringen, passer hashet ikke længere, og manipulationen afsløres.
Bitcoins proof-of-work
Bitcoin bygger i høj grad på SHA-256. Minere konkurrerer om at finde et input, der hashet med SHA-256 giver et resultat under en bestemt grænse. Eftersom man ikke kan regne baglæns, er den eneste vej frem at prøve sig frem med enorme mængder forsøg. Denne svære, men let kontrollerbare opgave er kernen i, hvordan netværket bliver enigt om transaktionernes rækkefølge og modstår forfalskning.
Filintegritet
Når du henter en fil, offentliggør udgiveren ofte dens SHA-256-hash. Du beregner selv hashet af din kopi og sammenligner. Er de ens, er filen intakt. Er de forskellige, er filen enten beskadiget under overførslen eller blevet ændret. Det er en enkel, men effektiv kontrol, der bygger direkte på funktionens determinisme og kollisionsmodstand.
Versionsstyring og datastrukturer
SHA-256 og beslægtede funktioner bruges også til at give data en stabil identitet. I systemer, der skal kunne genkende, om to indholdsdele er ens, kan man bruge et hash som en kompakt nøgle: samme indhold giver samme hash, forskelligt indhold giver forskellige hash. Det gør det muligt at sammenligne og opslå store datamængder uden at gennemgå dem byte for byte hver gang. Denne idé går igen i alt fra arkivsystemer til distribuerede databaser, og den fungerer netop, fordi hashet opfører sig deterministisk og spreder ændringer kraftigt.
Hvorfor SHA-256 stadig holder
SHA-1 faldt, fordi dens 160-bit digest og interne svagheder til sidst gjorde et kollisionsangreb praktisk gennemførligt for en velfinansieret aktør. SHA-256 har en markant større digest og er ikke ramt af tilsvarende kendte praktiske angreb. Det gør den til et fornuftigt standardvalg i dag.
Samtidig gælder den samme lære som altid i kryptografi: ingen algoritme er garanteret sikker for evigt. Regnekraften vokser, og analysemetoderne bliver bedre. Derfor findes der allerede stærkere alternativer som SHA-512 og den nyere SHA-3, klar til brug, hvis behovet skulle opstå. Lige nu er SHA-256 dog et solidt og bredt anbefalet fundament for hashing, og det er grunden til, at den findes overalt, hvor digital tillid skal sikres.




