Hva SHA-256 egentlig er Cuadernos Lacre · Konsept · 19. mai 2026 https://solo2.net/nb/notisboeker/articulos/hva-sha-256-egentlig-er.html Et matematisk fingeravtrykk på sekstifire tegn som endres fullstendig hvis bare ett komma i originalteksten flyttes. Hvorfor vi kaller det et digitalt segl. --- Den enkle ideen bak det tekniske navnet Se for deg en maskin med bare én åpning og én skjerm. Gjennom åpningen legger du inn en tekst: et ord, en setning, en hel roman. På skjermen vises det, øyeblikk senere, en sekvens på nøyaktig sekstifire tegn. Denne sekvensen kaller vi for hash eller kryptografisk sammendrag; for den vanlige leseren kan vi foreløpig kalle det et matematisk fingeravtrykk av teksten, akkurat som et fingeravtrykk er unikt for en person. Hvis du legger inn den samme teksten to ganger, viser maskinen det samme fingeravtrykket begge gangene. Hvis du legger inn en tekst som er bare litt annerledes —et komma er flyttet, eller en stor bokstav blir liten— viser maskinen et fingeravtrykk som er fullstendig annerledes enn det første. Ikke bare likt: helt annerledes. Disse to egenskapene sammen —determinisme og følsomhet— er den enkle ideen. Alt annet ved SHA-256 er maskineriet som sørger for at disse egenskapene overholdes. Det er greit å si med en gang hva maskinen ikke gjør. Den krypterer ikke teksten. Den skjuler den ikke. Den lagrer den ikke. Maskinen ser på teksten, beregner fingeravtrykket, og glemmer teksten. Fingeravtrykket gjør det ikke mulig å gjenskape teksten som produserte det; det gjør det bare mulig, gitt en annen tekst, å sjekke om den stemmer overens med originalen eller ikke. Derfor sier vi at det er et enveis sammendrag: du kan gå én vei, men ikke tilbake. En hash er ikke det samme som kryptering Det er ofte forvirring rundt dette, og det er greit å avklare: kryptering og hashing er to forskjellige operasjoner. Kryptering går ut på å transformere en tekst slik at bare den som har nøkkelen kan få den tilbake til original form. Hashing går ut på å produsere et fingeravtrykk av teksten der originalteksten aldri kan gjenskapes, verken med eller uten nøkkel. Den første er reversibel ved design; den andre er irreversibel ved design. Den praktiske konsekvensen er viktig. Når en applikasjon sier «vi lagrer passordet ditt kryptert», er det noen som har nøkkelen til å dekryptere det — applikasjonen selv, i alle fall. Når en applikasjon sier «vi lagrer passordet ditt hashet», kan ikke applikasjonen selv lese originalpassordet selv om den ville; den kan bare sjekke om det du skriver inn produserer det samme fingeravtrykket igjen. Den andre modellen, når den er gjort riktig, er langt å foretrekke fremfor den første når det gjelder lagring av passord. Senere skal vi se hvorfor «gjort riktig» krever noe mer enn bare SHA-256 i seg selv. De fire egenskapene som gjør en kryptografisk hash nyttig En hash-funksjon som fortjener betegnelsen kryptografisk oppfyller fire egenskaper: 1. Determinisme. Samme inndata gir alltid samme fingeravtrykk. 2. Snøballeffekt (Avalanche effect). En liten endring i inndata gir et fullstendig annerledes fingeravtrykk, uten noen synlig likhet med det forrige. 3. Motstand mot reversering. Gitt et fingeravtrykk, er det ikke beregningsmessig gjennomførbart å finne teksten som produserte det. 4. Motstand mot kollisjoner. Det er ikke beregningsmessig gjennomførbart å finne to forskjellige tekster som produserer samme fingeravtrykk. «Ikke beregningsmessig gjennomførbart» betyr ikke «matematisk umulig». Det betyr at kostnaden i tid, energi og penger for å oppnå det overstiger den samlede kapasiteten til all rimelig tilgjengelig datakraft med mange størrelsesordener. For SHA-256 måles denne grensen i tusenvis av billioner år, selv med de mest optimistiske anslagene med spesialisert maskinvare. Noe som for alle praktiske formål betyr at «det ikke går». SHA-256, helt konkret Navnet sier alt. SHA er forkortelsen for Secure Hash Algorithm: en sikker hash-algoritme. Tallet 256 angir størrelsen på fingeravtrykket i bits: to hundre og femti-seks bits, det vil si trettito bytes, som i heksadesimal form er de sekstifire tegnene som leseren allerede gjenkjenner. Standarden ble publisert av amerikanske NIST, organet som standardiserer denne typen funksjoner, i 2001 som en del av SHA-2-familien; den gjeldende versjonen av standarden, FIPS 180-4, er fra 2015. Dimensjonene fortjener et øyeblikks oppmerksomhet. To hundre og femti-seks bits gir to opphøyd i to hundre og femti-seks forskjellige verdier: et tall med syttiåtte desimaltegn, mange størrelsesordener større enn det anslåtte antallet atomer i det observerbare universet. Hver tekst i verden —hver bok, hver e-post, hver melding— havner på en av disse verdiene. Sannsynligheten for at to forskjellige tekster skal treffe samme verdi ved en tilfeldighet er for alle praktiske formål lik null. Hvordan det ser ut i kode Hvorfor vi kaller det et segl I europeisk korrespondanse fra det femtende til det nittende århundre ble brev lukket med lakk. En dråpe smeltet voks, et segl presset ned i den, og brevet ble merket på en måte som ikke kunne gjentas. Det beskyttet ikke innholdet mot en bestemt snoker —papiret kunne leses mot lyset, og lakken kunne brytes— men det gjorde det synlig. Enhver endring av lukkingen var synlig for mottakeren før brevet i det hele tatt ble åpnet. Lakken hindret ikke skaden; den erklærte den. SHA-256 i innholdet i hvert Cuaderno fyller den samme funksjonen i digital versjon. Hvis bare ett enkelt ord i artikkelen endres mellom publiseringstidspunktet og tidspunktet du leser den, vil det heksadesimale seglet nederst i teksten ikke lenger stemme overens med SHA-256 av teksten du har foran deg. Enhver leser med fem linjer kode kan sjekke dette. En publikasjon kan ikke skrive om sin egen historie uten at seglet avslører det. Det beskytter ikke mot skade; det gjør den etterprøvbar. Hva en hash ikke er Det forventes av og til fire bruksområder for SHA-256 som den ikke er ment for: 1. Kryptering. En hash oppsummerer; den skjuler ikke. Hvis du vil at teksten ikke skal kunne leses, må du kryptere den, ikke hashe den. 2. Autentisere forfatteren. En hash forteller ikke hvem som skrev teksten, bare hvilken tekst som ble hashet. For å knytte forfatterskap til teksten kreves en kryptografisk signatur på toppen av hashen, ikke bare hashen alene. 3. Lagring av passord. Her er det en felle man bør forstå. SHA-256 er designet for å være veldig rask —noe som er bra for mye, men dårlig for akkurat dette. En angriper med spesialisert maskinvare kan prøve milliarder av passord per sekund mot en SHA-256-hash helt til de finner ditt. For å lagre passord må man bruke funksjoner for nøkkelutledning som er bevisst trege, som Argon2, scrypt eller bcrypt, kombinert med en salt (en unik tilfeldig verdi per bruker, som hindrer at to personer med samme passord får samme hash). 4. Lese hashen som identifikator for forfatteren. Det er den ikke. En hash identifiserer innholdet. Hvis to personer hasher ordet hei med SHA-256, får begge det samme sammendraget — og det er selve hovedegenskapen, ikke en feil: hvis de var forskjellige, kunne vi ikke kontrollert om det som ble publisert og det som ble mottatt er det samme. Hvor SHA-256 dukker opp i hverdagen din Selv om du ikke ser det, støtter SHA-256 mye av det du bruker daglig på internett. Bitcoins blokkjede er bygget ved å lenke SHA-256 av hver blokk til den neste; å endre en tidligere blokk tvinger frem en ny beregning av hele den etterfølgende kjeden. Git, systemet som brukes til versjonskontroll av kode over hele verden, identifiserer hver bekreftelse (commit) med SHA-256 (i nyere versjoner) eller med forgjengeren SHA-1 (i eldre versjoner) av hele innholdet. HTTPS-sertifikater som bekrefter identiteten til et nettsted når du besøker det, har et tilknyttet SHA-256-fingeravtrykk. Programvarenedlastinger følges ofte av en SHA-256 publisert av utvikleren, slik at du kan bekrefte at filen ikke ble endret underveis. Og, som vi har sagt, nederst i hvert Cuaderno Lacre. For den profesjonelle leseren Fire påminnelser til de som tar beslutninger eller auditerer systemer: 1. Hash er ikke kryptering. Hvis en leverandør forveksler de to begrepene i sin tekniske dokumentasjon, er det lurt å spørre nøyaktig hva de mener. 2. For lagring av passord bør man aldri bruke SHA-256 alene. SHA-256 er for rask til denne oppgaven (se punkt 3 under Hva en hash ikke er). Gjeldende standard er Argon2id: treg ved design, konfigurerbar etter serverens kapasitet, kombinert med en unik og tilfeldig salt per bruker. 3. For dokumentintegritet —kontrakter, saksmapper, filer— er SHA-256 fortsatt referansestandarden. Det er dette som brukes av kvalifiserte tidsstemplingstjenester i EU. 4. For langtidslagring (tiår) er det lurt å beregne og arkivere en SHA-3 eller SHA-512 sammen med SHA-256; kryptografisk forsiktighet tilsier at man ikke bør stole på bare én funksjon for arkiver som skal vare i hundre år. Forestill deg at du har bygget verdens mest forseggjorte dominobane: tusenvis av brikker, dusinvis av forgreninger, mekaniske broer og ramper som krysser hele rommet, møysommelig plassert brikke for brikke. Hvis du gir den første brikken et dytt, faller rekken i en nøyaktig og repeterbar sekvens. Samme oppsett, samme første dytt → identisk sluttmønster av falne brikker, gang på gang. Her er det interessante: flytt bare én brikke en halv centimeter til siden før du begynner og dytt igjen. En rampe som burde ha blitt aktivert forblir død, en bro faller ikke, en annen forgrening utløses. Sluttmønsteret av brikker på gulvet er helt ugjenkjennelig sammenlignet med det første. SHA-256 er matematisk sett denne banen. Teksten du skriver er brikkenes startposisjon. Algoritmen er dyttet som utløser kaskaden. Og sluttresultatet — det vi kaller hash — er det frosne bildet av gulvet når alt har stoppet. Endre ett eneste komma i originalteksten og bildet blir radikalt annerledes. Så enkelt, og så drastisk. --- Hvis du går tilbake til slutten av denne artikkelen, vil du se et heksadesimalt segl på sekstifire tegn. Det er SHA-256 av teksten du nettopp har lest, på dette språket. Hvis vi oversatte artikkelen, ville seglet vært et annet; hvis ett ord i den norske versjonen ble endret, ville det norske seglet endret seg. Seglet beskytter ikke innholdet —det finnes andre verktøy for det— men det identifiserer det unikt. Og det, uansett hvor beskjedent det høres ut, er nok til at ingen ledd i den redaksjonelle kjeden kan endre det som er sagt uten at det merkes. Resten —kryptering, signering, identifisering— er bygget på toppen av denne enkle ideen. Kilder og videre lesing - NIST — FIPS PUB 180-4: Secure Hash Standard (SHS), august 2015. Offisiell spesifikasjon for SHA-2-familien, inkludert SHA-256. - RFC 6234 — US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF), IETF, mai 2011. Normativ versjon for implementører. - Ferguson, N.; Schneier, B.; Kohno, T. — Cryptography Engineering: Design Principles and Practical Applications (Wiley, 2010). Kapittel 5 og 6 dekker hash-funksjoner og deres legitime og illegitime bruksområder. - Nakamoto, S. — Bitcoin: A Peer-to-Peer Electronic Cash System (2008). Praktisk eksempel på bruk av SHA-256 for å lenke sammen blokker i en struktur som er uforanderlig ved konstruksjon. - Forordning (EU) 910/2014 (eIDAS) — rammeverk for kvalifiserte tidsstemplingstjenester. SHA-256 er referansefunksjonen for kvalifiserte elektroniske signaturer og segl utstedt i EU. - Referanseimplementering i Zig: std.crypto.hash.sha2.Sha256 i språkets offisielle repositorium (github.com/ziglang/zig → lib/std/crypto/sha2.zig). Dette er den optimaliserte og auditerte versjonen som faktisk brukes av Solo2. Nyttig for å sammenligne med den pedagogiske implementeringen i appendikset. --- Cuadernos Lacre · En utgivelse fra Menzuri Gestión S.L. · skrevet av R.Eugenio · redigert av teamet bak Solo2. https://solo2.net/nb/notisboeker/