MD5 og SHA-256 dukker begge opp i logger, sertifikater og kodebaser hver eneste dag, men de to hashfunksjonene lever i to helt forskjellige tidsaldre. MD5 ble tegnet av Ronald Rivest i 1992, lenge før noen tenkte på GPU-klynger som kunne knekke kryptografi for en slikk og ingen ting. SHA-256 kom i 2001 som en del av NSA og NIST sin SHA-2-familie, og er fortsatt den ubestridte standarden for TLS-sertifikater, kodesignering og blokkjeder i 2026. Spørsmålet mange norske utviklere og IT-ansvarlige stiller er ikke lenger “hvilken er raskest”, men “hvor mye lenger kan vi la MD5 henge igjen i systemene våre”. Svaret, som denne artikkelen viser med tall fra OpenSSL-benchmarker, NIST-dokumenter og reelle datainnbrudd, er: ikke lenge.

For nordiske selskaper er dette ikke bare en akademisk øvelse. EU-betalingsrådets kryptografiske retningslinje EPC342-08 (versjon 15.0, 2025) peker eksplisitt på SHA-256 og SHA3-256 som anbefalt for betalingssystemer, mens amerikanske CISA i januar 2025 ba alle programvareleverandører om å slutte å bruke MD5 og SHA-1 helt. Samtidig lever MD5 fortsatt videre i pakkefiler, ETag-hoder, databasekolonner og gamle nettverksprotokoller. Denne artikkelen går gjennom spesifikasjonene, ytelsen, sikkerhetshullene, kostnaden ved å knekke hver algoritme, og en konkret migreringsplan for team som fortsatt har MD5 liggende i produksjon.

Sammenligningen er også en påminnelse om hvor fort kryptografisk styrke forvitrer. Da MD5 ble lansert, tok det datamaskiner tiår å bryte gjennom et 128-bits rom med brute force. I dag koster en fullverdig kollisjon mindre enn en handlevogn med dagligvarer, mens SHA-256 fortsatt står som en solid vegg mot samme type angrep. Denne artikkelen legger fram tallene bak akkurat den utviklingen, med kildehenvisninger til NIST, CISA, OWASP og uavhengige benchmarker, slik at du kan ta en informert beslutning om hvor MD5 fortsatt kan brukes trygt i din organisasjon, og hvor den må ut umiddelbart.

Hva er MD5? Den 32 år gamle algoritmen som nekter å dø

MD5 (Message Digest Algorithm 5) er en hashfunksjon som tar en vilkårlig mengde data og komprimerer den til et 128-bits fingeravtrykk, vanligvis vist som 32 heksadesimale tegn. Rivest publiserte algoritmen i RFC 1321 i 1992 som en oppgradering av MD4, og i mer enn et tiår var MD5 selve standardverktøyet for sjekksummer, digitale signaturer og passordlagring. Algoritmen behandler data i blokker på 512 bit og kjører gjennom 64 operasjoner fordelt på fire runder før den produserer et digest.

Populariteten kom av gode grunner den gangen. MD5 var rask, enkel å implementere og ble raskt innebygd i alt fra Linux-distribusjoner sine pakkesystemer til tidlige versjoner av SSL. Utviklere lærte å stole på MD5-summer som en garanti for at en nedlastet fil ikke var korrupt, og mange eldre API-er og protokoller ble bygget med et MD5-felt som grunnleggende byggekloss. Den brede utbredelsen er nettopp derfor MD5 fortsatt henger igjen i så mange systemer i 2026, selv etter at kryptografene forlot algoritmen for nesten to tiår siden.

Problemet oppstod for alvor i 2004, da det kinesiske forskerteamet ledet av Xiaoyun Wang publiserte de første praktiske kollisjonsangrepene mot MD5. Innen 2007-2009 hadde Marc Stevens, Alexander Sotirov og kolleger videreutviklet dette til “chosen-prefix”-kollisjoner, der en angriper kan velge to helt forskjellige innledninger og likevel få identiske MD5-hasher ved å legge til beregnede suffikser. Denne teknikken krever rundt 2^39 MD5-kompresjonskall, et tall som i 2026 er trivielt å nå med leid GPU-kraft. Til tross for dette er MD5 fortsatt “overalt i pakkemanifester, databasekolonner og ETag-hoder”, som en 2026-artikkel om moderne sjekksumbruk formulerer det, men da typisk i sammenhenger uten sikkerhetskrav.

Hva er SHA-256? Standarden bak TLS, Bitcoin og Git 3.0

SHA-256 tilhører SHA-2-familien som NIST publiserte i FIPS 180-2 i 2001, og er i dag spesifisert i FIPS 180-4. Algoritmen produserer et 256-bits digest, altså dobbelt så langt som MD5, og bygger på samme grunnstruktur med 512-bits blokker, men kjører 64 runder med en helt annen komprimeringsfunksjon og flere interne tilstandsvariabler. NIST beskriver kollisjonssikkerheten til SHA-256 som rundt 2^128 operasjoner og preimage-sikkerheten som rundt 2^256, tall som ligger milevis utenfor det noen kjent datamaskin kan gjennomføre.

Konstruksjonen bygger på Merkle-Damgård-prinsippet, der hver 512-bits blokk med tekst kjøres gjennom en komprimeringsfunksjon sammen med tilstanden fra forrige blokk. Internt jobber SHA-256 med åtte 32-bits tilstandsvariabler og et utvidet meldingsskjema på 64 ord, mot MD5 sine fire tilstandsvariabler og et enklere skjema. Denne ekstra kompleksiteten er hovedgrunnen til at SHA-256 har stått imot to og et halvt tiår med kryptoanalyse, mens MD5 sin enklere struktur ga forskerne et mye mindre matematisk problem å angripe.

Det nærmeste noen har kommet et reelt angrep er forskning presentert på EUROCRYPT 2024, der Li og kolleger fant praktiske kollisjoner for 31 av 64 runder, med en tidskompleksitet på cirka 2^49,8 og minnebruk på 2^48. Det er et akademisk gjennombrudd, men et 2026-sammendrag av forskningen slår fast at resultatet er “langt fra å true den fulle algoritmen”. SHA-256 driver i dag alt fra TLS 1.3-håndtrykk (cipher-suiten TLS_AES_128_GCM_SHA256 er den mest brukte i moderne målinger) til Bitcoins proof-of-work, og Git forbereder seg på å gjøre SHA-256 til standard objektformat i Git 3.0, etter at støtten kom eksperimentelt i Git 2.30 i 2021.

MD5 vs SHA-256: Tekniske spesifikasjoner side om side

Tabellen under samler de tekniske egenskapene som faktisk betyr noe når man skal vurdere hvilken hashfunksjon som passer til en gitt jobb, fra digest-lengde til hvilke protokoller som fortsatt godtar hver algoritme.

EgenskapMD5SHA-256
Utgitt1992 (RFC 1321, Ronald Rivest)2001 (FIPS 180-2, NIST/NSA)
Digest-lengde128 bit (32 hex-tegn)256 bit (64 hex-tegn)
Blokkstørrelse512 bit512 bit
Antall runder/operasjoner64 (4 runder x 16)64 runder
Interne tilstandsvariabler4 x 32-bit8 x 32-bit
Teoretisk kollisjonssikkerhet2^64 (birthday bound)2^128
Praktisk kollisjonskompleksitet~2^39 (chosen-prefix)Ingen kjent for full algoritme
Praktisk kollisjon funnet?Ja, siden 2004/2007Nei (kun 31 av 64 runder, 2024)
Godkjent av NIST (FIPS)Nei, avvikletJa, FIPS 180-4
Maskinvareakselerasjon (SHA-NI)Ingen native CPU-instruksjonJa, Intel/AMD SHA-utvidelser
Brukt i TLS 1.3NeiJa (TLS_AES_128_GCM_SHA256)
Brukt i Bitcoin/blokkjedeNeiJa, dobbel SHA-256 i proof-of-work
Status i GitBrukes ikkeBlir standard objektformat i Git 3.0
Egnet for passordhashing aleneNei, forbudtNei, for raskt (kun som primitiv i PBKDF2)

Legg merke til at begge algoritmene faktisk kjører 64 runder og bruker samme blokkstørrelse på 512 bit. Det er ikke rundeantallet som skiller dem, men hvor motstandsdyktig den interne komprimeringsfunksjonen er mot differensielle angrep. MD5 sin enklere struktur ble brutt matematisk, mens SHA-256 sin mer komplekse Davies-Meyer-konstruksjon med 32-bits ord og flere ikke-lineære funksjoner har stått imot 25 år med kryptoanalyse. Digest-lengden alene forklarer ikke hele forskjellen heller: SHA-1 har 160 bit og ble likevel brutt praktisk i 2017 gjennom SHAttered-angrepet, noe som viser at både lengde og indre struktur teller.

Sikkerhet: Hvorfor MD5 regnes som kryptografisk brutt

Amerikanske marineakademiet sitt kursmateriell i kryptografi oppsummerer situasjonen kontant: “The security of the MD5 hash function is severely compromised. Don’t use this.” (USNA, IT430-forelesning). Det er ikke en overdrivelse. Chosen-prefix-kollisjonsangrepet mot MD5 lar en angriper konstruere to forskjellige filer, sertifikater eller meldinger som produserer identisk hash, og dermed narre systemer som stoler blindt på at like hasher betyr identisk innhold. IBMs egen dokumentasjon bekrefter det samme mønsteret: “Security flaws have been identified in both the SHA1 and MD5 algorithms” (IBM i-dokumentasjon).

SHA-256 har ikke det samme problemet, i alle fall ikke ennå. NIST sin egen oversikt over hashfunksjoner plasserer SHA-2- og SHA-3-familiene som de eneste algoritmene som er godkjent for alle hashformål under den kommende revisjonen av SP 800-131A Rev. 3, som ble sendt ut som utkast 21. oktober 2024 med høringsfrist 4. desember samme år. Utkastet foreslår i tillegg å pensjonere SHA-1 og 224-bits hashvarianter innen 2030, mens SHA-256 og lengre varianter forblir godkjent. For MD5 finnes det ingen tilsvarende vei tilbake: algoritmen er allerede utenfor enhver liste over godkjente valg.

Det er verdt å skille mellom to typer trusler. Kollisjonsangrep, der en angriper lager to forskjellige input med samme hash, rammer MD5 hardt fordi angriperen kontrollerer begge filene, typisk i sertifikatforfalskning eller manipulerte kodesignaturer. Preimage-angrep, der man prøver å finne en input som gir en gitt hash, er fortsatt upraktisk mot MD5 med dagens metoder, men det spiller mindre rolle: kollisjonssvakheten alene diskvalifiserer MD5 fra enhver sikkerhetskritisk bruk, ifølge samtlige kilder fra NIST til OWASP.

Historien har allerede vist hva som skjer når bransjen venter for lenge med å fase ut en svekket hashfunksjon. SHA-1, som i sin tid erstattet MD5 mange steder, ble praktisk knekket gjennom det såkalte SHAttered-angrepet i 2017, utført av forskere fra Google og CWI Amsterdam. Parallellen er ikke tilfeldig: begge algoritmene fulgte samme utviklingsløp, fra “teoretisk svakhet” til “praktisk kollisjon” til “brukt i reelle angrep”, og SHA-256 er i dag den eneste av de tre som fortsatt mangler det siste steget i den kjeden.

Det som gjør MD5 spesielt farlig sammenlignet med andre avviklede algoritmer, er hvor lenge den har fått lov til å ligge i produksjon etter at svakheten ble kjent. Mens SHA-1 stort sett forsvant fra offentlig TLS-infrastruktur i løpet av noen år etter SHAttered, har MD5 hatt over 20 år på seg til å grave seg dypere inn i legacy-systemer, interne protokoller og tredjepartsbiblioteker. Det gjør selve kartleggingsjobben, ikke det tekniske hashbyttet, til den egentlige utfordringen for de fleste organisasjoner som endelig tar tak i problemet i 2026.

Ytelse-benchmark: Hvem er raskest i 2026?

Her blir bildet mer komplisert enn de fleste artikler later til å tro. Uten maskinvareakselerasjon er MD5 ofte raskere fordi den gjør færre matematiske operasjoner per byte. Men moderne x86-64-prosessorer fra Intel og AMD har egne SHA-utvidelser (SHA-NI) som akselererer SHA-256 direkte i maskinvaren, uten noe tilsvarende for MD5. Resultatet er at “raskest” avhenger fullstendig av hvilken CPU-generasjon koden kjører på, og av blokkstørrelsen dataene kommer i. Tabellen under samler fem uavhengige målinger fra forskjellige verktøy og tidsperioder.

KildeMD5SHA-256MaskinvareakselerasjonVinner
OpenSSL 1.1.1 vs 3.1.0, store blokker~426 MB/s~532 MB/sNeiSHA-256 (~1,25x)
Eldre OpenSSL speed-test, store blokker~302 MB/s~88 MB/sNeiMD5 (~3,4x)
2026 hash-benchmark, 1 MB input605 MB/s2 709 MB/sJa (SHA-NI)SHA-256 (~4,5x)
Microsoft Virtual Client, 8192-byte blokker~654 MB/s~421 MB/sNeiMD5 (~1,55x)
Akademisk avhandling 2026, filhashing x1000495 ms655 msNeiMD5 (~1,3x)

Mønsteret er tydelig når man ser alle fem kildene under ett: uten SHA-NI vinner MD5 gjerne med 1,3 til 3,4 ganger høyere gjennomstrømming, men på maskinvare med SHA-utvidelser snur bildet fullstendig, og SHA-256 løper fra MD5 med opptil 4,5 ganger høyere hastighet. Siden nesten alle serverprosessorer og bærbare datamaskiner solgt etter 2016 har SHA-NI innebygd, er argumentet om at “MD5 er raskere” i praksis foreldet for de fleste produksjonsmiljøer i 2026. Ytelsesgevinsten ved å beholde MD5 er med andre ord i beste fall marginal, og ofte fraværende, mens sikkerhetskostnaden er reell.

Verdt å nevne er også at eldre og innebygde systemer, som rutere og IoT-enheter uten SHA-utvidelser, fortsatt kan oppleve en reell ytelsesforskjell til fordel for MD5. Det er nettopp i disse miljøene MD5 lever lengst, ikke fordi noen har tatt en bevisst sikkerhetsvurdering, men fordi maskinvaren aldri ble oppgradert. For enhver server, container eller tjeneste kjøpt eller leid etter 2018, er derimot SHA-NI så godt som garantert til stede, og da forsvinner ytelsesargumentet for MD5 fullstendig.

Kostnad: Hva koster det faktisk å knekke hver algoritme?

Den mest slående statistikken i hele denne sammenligningen handler ikke om megabyte per sekund, men om kroner og øre. I 2014 replikerte forskere den samme typen MD5-kollisjon som Flame-malwaren brukte i 2012, og klarte det på rundt 10 timer GPU-tid i skyen, til en kostnad på 0,65 dollar. Med 2026-generasjonens GPU-er, der en enkelt RTX 5090 ifølge passordknekkingsbenchmarker når opptil 219,5 GH/s på MD5, er kollisjonsangrep enda billigere og raskere å utføre enn for et tiår siden.

MålMD5SHA-256
Kjent kollisjonsmetodeChosen-prefix, ~2^39 beregningerIngen for full algoritme
Reell kostnad for kollisjon$0,65 i AWS GPU-tid (2014-replikasjon)Ikke gjennomførbart
Teoretisk angrepskostnadUnder en dollar med moderne GPU-leie~2^128 operasjoner, utenfor rekkevidde
GPU-hastighet 2026 (Hashcat-type test)Opptil 219,5 GH/s (RTX 5090)Irrelevant for kollisjon, kun brute-force av korte input
Praktisk konsekvensKollisjon er triviell og nesten gratisIngen kjent praktisk angrepskostnad

Til sammenligning krever det beste kjente angrepet mot SHA-256 fortsatt rundt 2^128 operasjoner for en generisk kollisjon, et tall som ifølge en 2026-gjennomgang av algoritmens sikkerhetsstatus ligger utenfor det som er praktisk oppnåelig i dag. Selv det snevre akademiske gjennombruddet mot 31 av 64 runder krever 2^49,8 tid og 2^48 minne, noe som er milevis fra noe en angriper kan utnytte i produksjon. Konklusjonen for enhver risikovurdering er enkel: MD5-kollisjoner koster mindre enn en kaffekopp, mens SHA-256 fortsatt ikke har noen realistisk prislapp i det hele tatt.

For et sikkerhetsteam som skal prioritere ressurser, betyr dette regnestykket at MD5 må behandles som om kollisjonen allerede er skjedd, ikke som en teoretisk risiko langt fram i tid. Når kostnaden for et vellykket angrep er lavere enn timeprisen for en junior-konsulent, er det ikke lenger et spørsmål om en angriper kan knekke MD5, men om noen faktisk har grunn til å prøve mot akkurat ditt system.

Fem virkelige hendelser der hashvalget fikk konsekvenser

Teori er én ting, men MD5s svakheter har forårsaket konkret skade flere ganger. Her er fem dokumenterte eksempler fra de siste 15 årene, fra nasjonalstat-nivå spionasje til vanlige forbrukerdatabrudd.

  • Flame-malwaren mot Microsoft (2012): Angriperne bak Flame utnyttet en MD5 chosen-prefix-kollisjon til å forfalske et Microsoft-kodesigneringssertifikat fra Terminal Server Licensing Service, som feilaktig fortsatt var aktivert for kodesignering med algoritmen md5RSA. Det forfalskede sertifikatet lot malwaren spoofe Windows Update via et man-in-the-middle-angrep og installere ondsinnet kode som så ut til å komme fra Microsoft selv, ifølge Microsofts sikkerhetsrådgivning 2718704. Tidlige anslag satte kostnaden for angrepet så høyt som 200 000 dollar i regnekraft, mens den senere replikasjonen i 2014 viste at samme resultat kunne oppnås for under en dollar.
  • Ixigo-bruddet (India, januar 2019): Reiseplattformen Ixigo mistet rundt 17 millioner brukerrekorder, inkludert passord lagret med MD5, en hashmetode etterforskere pekte på som lett å knekke offline med moderne GPU-utstyr.
  • Aakash Institute-bruddet (India, 2019): Utdanningsplattformen Aakash Institute eksponerte rundt 140 000 brukerkontoer, også her med passord hashet med MD5 uten salting, noe som gjorde offline-knekking av store deler av databasen realistisk i løpet av timer.
  • CVE-2026-43383, TCP-MD5 i Linux-kjernen: En nylig avdekket sårbarhet viser at en angriper på nettverksbanen kan måle tidsforskjeller under MAC-validering i TCP-MD5, en mekanisme fortsatt brukt til å sikre BGP-sesjoner, og potensielt forfalske signaturer som skulle beskytte ruteinformasjon mellom internettleverandører.
  • Nesten total utfasing i offentlig TLS (2026): En fersk kartlegging av TLS på det offentlige nettet fant kun to verter som fortsatt serverer sertifikater signert med SHA-1 eller MD5, etter at nettlesere sluttet å stole på MD5-signerte sertifikater rundt 2012 og SHA-1 rundt 2017. Tallet illustrerer hvor fullstendig MD5 er utryddet fra offentlig sertifikatinfrastruktur, selv om algoritmen lever videre i interne og eldre systemer.

Hva sier fagmiljøet om MD5 og SHA-256?

Vurderingene fra fagfolk som jobber daglig med filintegritet og sikkerhet peker samme vei. En bidragsyter på utviklerforumet Stack Overflow oppsummerer nyansen mellom MD5 til sjekksum og MD5 til sikkerhet slik: “The underlying MD5 algorithm is no longer deemed secure, thus while md5sum is well-suited for identifying known files in situations that are not security related, it should not be relied on if there is a chance that files have been purposefully and maliciously tampered.” (Stack Overflow).

Kursmateriellet fra US Naval Academy er enda mer kontant i sin dom over algoritmen, som sitert lenger opp, mens IBMs offisielle produktdokumentasjon rett og slett slår fast at begge de eldste hashfunksjonene har kjente svakheter. Det som gjør disse tre kildene nyttige sammen, er at de dekker tre forskjellige perspektiver, praktiker, akademia og leverandørdokumentasjon, og likevel lander på nøyaktig samme konklusjon: bruk MD5 kun der ingen forsøker å lure systemet, og bruk SHA-256 overalt ellers. Ingen av kildene tar til orde for et fullstendig forbud mot MD5 i alle sammenhenger, men samtlige er tydelige på at grensen går ved sikkerhetsrelevans, ikke ved bekvemmelighet eller vane.

Det er også verdt å legge merke til hva ingen av kildene sier. Ingen av dem hevder at SHA-256 er en fullstendig løsning for alle hashformål, og ingen av dem anbefaler å hoppe rett fra MD5 til en enda tregere eller mer eksotisk algoritme uten grunn. Rådet er konsekvent nøkternt: match algoritmen til trusselbildet, ikke til hva som er nyest eller mest omtalt, og reserver de tyngste verktøyene som Argon2id for der de faktisk trengs, altså passordlagring.

Bruksområder: Når passer MD5, og når må du ha SHA-256?

Den ærlige sannheten er at MD5 fortsatt har en snever, men reell plass i verktøykassen, forutsatt at ingen kan tjene på å manipulere input. Under følger seks konkrete scenarier og hvilken algoritme som faktisk hører hjemme der, med begrunnelsen for hvert valg.

  • Sjekksum for tilfeldig filkorrupsjon: MD5 er fortsatt akseptabelt for å oppdage nedlastingsfeil eller diskkorrupsjon, siden ingen fiende prøver å konstruere en kollisjon i disse tilfellene, og hastigheten på eldre maskinvare kan være en reell fordel.
  • Deduplisering og cache-nøkler: Interne systemer som bruker hash for å finne duplikatfiler kan fortsatt bruke MD5 trygt, fordi konsekvensen av en tilfeldig kollisjon er ubetydelig og ingen ekstern part styrer input til systemet.
  • Nedlastingsverifisering fra internett: Så snart filen kommer fra en tredjepart en angriper kunne infiltrert, må SHA-256 brukes, siden en forfalsket fil med matchende MD5-hash er triviell å konstruere for under en dollar i regnekraft.
  • Digital signering og kodesignering: Her er SHA-256 obligatorisk, uten unntak. Flame-hendelsen er beviset på hva som skjer når MD5 signerer kode andre systemer stoler blindt på.
  • Blokkjede og kryptovaluta: Bitcoin og Bitcoin Cash bruker dobbel SHA-256 i proof-of-work, og ingen seriøs blokkjede benytter MD5 til konsensusmekanismer eller blokkhoder.
  • Passordlagring: Verken MD5 eller ren SHA-256 er riktig svar. NIST SP 800-63B og OWASP anbefaler Argon2id, bcrypt eller PBKDF2-HMAC-SHA-256 med høyt iterasjonstall, der SHA-256 kun opptrer som en byggekloss inni en tregere konstruksjon designet for å motstå GPU-angrep.

Migreringsguide: Slik fjerner du MD5 fra sikkerhetskritiske systemer

De fleste organisasjoner arver MD5-bruk fra kode skrevet for 10-15 år siden, ofte uten at noen husker hvorfor valget ble tatt. Slik strukturerer du en trygg overgang til SHA-256 uten å bryte eksisterende integrasjoner underveis.

  • 1. Kartlegg all MD5-bruk. Søk gjennom kildekode, konfigurasjonsfiler, databaseskjemaer og nettverksprotokoller etter referanser til md5, md5sum eller TCP-MD5. Ikke glem tredjepartsbiblioteker og CI/CD-pipeliner, der MD5 ofte gjemmer seg i signerte artefakter.
  • 2. Klassifiser hvert funn. Skill mellom ikke-adversarial bruk (cache, dedup, intern sjekksum) og sikkerhetskritisk bruk (signaturer, sertifikater, passord, autentisering), og prioriter etter hvor stor skade en kollisjon faktisk kan gjøre.
  • 3. Bytt sikkerhetskritisk kode først. Erstatt hashkallet direkte der det er mulig, som vist i kodeeksemplet under, og test grundig at eksisterende integrasjoner fortsatt fungerer med lengre digest-verdier.
  • 4. Ikke bruk ren SHA-256 til passord. Rut passordhashing gjennom Argon2id, bcrypt eller PBKDF2-HMAC-SHA-256 i stedet for å bare bytte ut MD5 med rå SHA-256, som fortsatt er for raskt for dette formålet.
  • 5. Oppdater sertifikater og signeringsnøkler. Sørg for at CA-er og kodesigneringspolicyer eksplisitt forbyr MD5- og SHA-1-signaturer, og reutsted eldre sertifikater som fortsatt bruker dem før de utløper naturlig.
  • 6. Publiser begge hashene under overgangen. For offentlige nedlastingssider kan SHA-256 legges til ved siden av MD5 en periode, slik at gamle klienter ikke brekker, før MD5 fjernes helt fra manifestet.
  • 7. Migrer nettverksprotokoller. Bytt TCP-MD5 i BGP-sesjoner til TCP-AO, som støtter sterkere algoritmer og løser svakheten bak CVE-2026-43383, i samarbeid med aktuelle nettverkspartnere.
  • 8. Dokumenter endringen. Loggfør migreringen opp mot NIST SP 800-131A og eventuelle compliance-krav fra kunder eller revisorer, spesielt i finans- og betalingssektoren der EPC-retningslinjen gjelder.

Selve kodeendringen er ofte den enkleste delen av jobben. I Node.js er byttet en enlinjes justering:

const crypto = require('crypto');

// Før: usikker, ikke bruk til noe sikkerhetskritisk
const oldHash = crypto.createHash('md5').update(data).digest('hex');

// Etter: SHA-256, godkjent for sertifikater, signaturer og integritet
const newHash = crypto.createHash('sha256').update(data).digest('hex');

Fra kommandolinjen er overgangen like enkel å verifisere:

# Gammel sjekksum
md5sum installer.pkg

# Ny, sikkerhetsgodkjent sjekksum
openssl dgst -sha256 installer.pkg
sha256sum installer.pkg

Den vanskeligste delen er sjelden å skrive om koden, men å finne alle stedene MD5 gjemmer seg, spesielt i tredjepartsbiblioteker, gamle API-kontrakter og protokoller som TCP-MD5 der endringen krever koordinering med motparten. Sett av god tid til kartleggingsfasen, siden det er her de fleste migreringsprosjekter overrasker teamet med hvor utbredt MD5 faktisk har vært.

Kodeeksempler: MD5 og SHA-256 i Python og Go

De fleste norske utviklerteam jobber i mer enn ett språk, og overgangen fra MD5 til SHA-256 følger samme mønster uansett plattform: bytt algoritmenavnet i hashkallet, og forvent en dobbelt så lang digest-streng tilbake. I Python, som fortsatt er utbredt i dataanalyse og interne verktøy i mange nordiske selskaper, ser koden slik ut:

import hashlib

# Før: usikker, kun til ikke-adversarial sjekksum
old_hash = hashlib.md5(data).hexdigest()

# Etter: SHA-256, sikkerhetsgodkjent
new_hash = hashlib.sha256(data).hexdigest()

I Go, som mange skyplattformer og infrastrukturverktøy er skrevet i, er mønsteret identisk, bare med et annet pakkenavn og en byte-array som returverdi i stedet for en heksstreng direkte:

import (
    "crypto/md5"
    "crypto/sha256"
)

// Før: usikker, kun til ikke-adversarial sjekksum
oldHash := md5.Sum(data)

// Etter: SHA-256, sikkerhetsgodkjent
newHash := sha256.Sum256(data)

Legg merke til at ingen av disse endringene krever nye avhengigheter. Både Python og Go har SHA-256 innebygd i standardbiblioteket på samme måte som MD5, så migreringen handler nesten utelukkende om å finne alle kallene og oppdatere eventuelle databasekolonner eller API-kontrakter som forventer en 32-tegns streng til å håndtere 64 tegn i stedet. Det er nettopp denne enkle tekniske overgangen som gjør at manglende MD5-utfasing sjeldnere handler om teknisk kompleksitet, og oftere om at ingen har prioritert å gjøre jobben.

Fordeler og ulemper: MD5 mot SHA-256

En ærlig oppsummering krever at vi ser på begge sider, selv om vektskålen tydelig heller én vei når sikkerhet er en faktor.

MD5: fordeler og ulemper

  • Fordel: Mindre digest (128 bit) gir noe lavere lagrings- og båndbreddebehov ved massive sjekksum-databaser.
  • Fordel: Kan være raskere enn SHA-256 på eldre CPU-er uten SHA-NI, opptil 3,4x i enkelte OpenSSL-tester.
  • Fordel: Bred kompatibilitet med eldre verktøy og systemer som fortsatt forventer et MD5-felt.
  • Ulempe: Kryptografisk brutt siden 2004/2007, kollisjoner koster under en dollar å produsere.
  • Ulempe: Forbudt av NIST, OWASP, CISA og EU-betalingsrådets retningslinjer i enhver sikkerhetskritisk sammenheng.
  • Ulempe: Har allerede forårsaket reelle brudd og angrep, fra Flame til passordlekkasjer hos Ixigo og Aakash Institute.

SHA-256: fordeler og ulemper

  • Fordel: Ingen kjent praktisk kollisjon mot full algoritme, kollisjonssikkerhet på rundt 2^128.
  • Fordel: Godkjent under FIPS 180-4 og industristandard for TLS, kodesignering og blokkjede.
  • Fordel: Opptil 4,5x raskere enn MD5 på moderne CPU-er med SHA-NI-akselerasjon.
  • Ulempe: Dobbelt så stort digest gir noe høyere lagrings- og overføringskostnad ved svært store datamengder.
  • Ulempe: Kan være tregere enn MD5 på eldre maskinvare uten hardware-akselerasjon.
  • Ulempe: For rask til å brukes alene som passordhash, må kombineres med PBKDF2, bcrypt eller Argon2id.

Alternativer verdt å kjenne til: SHA-3, BLAKE3 og Argon2

MD5 og SHA-256 er ikke de eneste alternativene på markedet, selv om de er de to mest omtalte. SHA-3, standardisert av NIST i 2015, bruker en helt annen indre konstruksjon (Keccak-svampfunksjonen) enn både MD5 og SHA-256, og regnes som et solid reserveval dersom det noen gang skulle dukke opp et gjennombrudd mot SHA-2-familien. BLAKE3, en nyere og ikke-NIST-standardisert algoritme, er bygget for rå hastighet og kan hashe data flere ganger raskere enn SHA-256 på visse arbeidsmengder takket være parallellisering, men mangler foreløpig samme grad av regulatorisk godkjenning som SHA-256 har gjennom FIPS 180-4.

For passordlagring spesifikt er verken MD5, SHA-256, SHA-3 eller BLAKE3 riktig verktøy alene. Argon2, vinneren av Password Hashing Competition i 2015, er designet spesifikt for å være treg og minnekrevende, noe som gjør GPU- og ASIC-baserte angrep dyre selv når selve algoritmen er offentlig kjent. Team som allerede planlegger en migrering bort fra MD5 bør derfor vurdere om SHA-256 er sluttdestinasjonen, eller bare et mellomsteg på vei mot en formålsbygget løsning som Argon2id for nettopp passordbruk.

Vanlige misforståelser om MD5 og SHA-256

En del av forvirringen rundt disse to algoritmene kommer av gamle vaner og myter som fortsatt lever i utviklermiljøer. Den første misforståelsen er at MD5 er “kryptering” som kan reverseres. MD5 er en enveis hashfunksjon, ikke kryptering, og det finnes ingen matematisk måte å gå fra digest tilbake til originaldata. Det angriperne faktisk gjør når de “knekker” MD5-passord, er å prøve enorme mengder kandidatpassord og se hvilke som gir samme hash, noe som er mulig fordi MD5 er så rask å beregne at milliarder av gjetninger kan testes per sekund.

Den andre misforståelsen er at “lengre hash betyr automatisk tryggere hash” i alle sammenhenger. Det stemmer for MD5 mot SHA-256, men SHA-1 sitt 160-bits digest var lenger enn MD5 sitt 128-bits digest, og SHA-1 ble likevel praktisk knekket i 2017 gjennom SHAttered-angrepet. Digest-lengde setter en øvre grense for sikkerheten, men det er den interne konstruksjonen som avgjør om algoritmen faktisk når den grensen i praksis.

Den tredje misforståelsen er at SHA-256 er “for tregt” til produksjonsbruk. Som benchmarkene tidligere i artikkelen viser, er dette rett og slett feil på moderne maskinvare med SHA-NI, der SHA-256 ofte er raskere enn MD5. Selv i de tilfellene der SHA-256 er noe tregere, er forskjellen typisk milliondeler av et sekund per operasjon, noe som sjelden er merkbart for sluttbrukeren, men som utgjør hele forskjellen mellom et sikkert og et sårbart system.

Standarder og regelverk i 2026: Hva krever myndighetene?

Regelverket har beveget seg fra anbefaling til krav de siste årene. FIPS 180-4 er fortsatt selve sikkerhetsstandarden for hashfunksjoner i USA, og spesifiserer SHA-256 som en av de godkjente algoritmene for all bruk. CISAs “Product Security Bad Practices”-veiledning versjon 2.0, publisert 17. januar 2025, plasserer MD5 og SHA-1 i samme kategori som TLS 1.0/1.1 og DES: kryptografi programvareleverandører bør unngå helt i nye produkter.

For norske og nordiske selskaper med kunder i finanssektoren er EU-betalingsrådets kryptografiske retningslinje EPC342-08 versjon 15.0 fra 2025 spesielt relevant, siden den lister SHA-256 og SHA3-256 som anbefalte hashalgoritmer for betalingssystemer og dermed indirekte utelukker MD5 fra enhver rolle med sikkerhetsbetydning. OWASPs Password Storage Cheat Sheet går enda lenger og beskriver en konkret migreringsprosess: når en bruker logger inn med et gammelt MD5-passord, rehashes det med den nye algoritmen og den gamle hashen kastes, slik at brukerbasen gradvis vandrer over uten et stort “big bang”-skifte.

Selv Git-prosjektet, som lenge har vært mer konservativt enn sikkerhetsmiljøet skulle ønske, beveger seg nå mot SHA-256 som standard objektformat i Git 3.0, ifølge dokumentasjonen for hash-function-transition. RFC 6151, som spesifikt dokumenterer sikkerhetsvurderinger for MD5 og HMAC-MD5, er fortsatt den viktigste normative kilden for hvorfor MD5 ble ansett som utrygt allerede før dagens GPU-kraft gjorde kollisjoner enda billigere. For selskaper underlagt NIS2 i Norge og resten av EU er det verdt å merke seg at bruk av avviklede hashalgoritmer i sikkerhetskritiske systemer stadig oftere trekkes fram som et konkret funn i revisjoner og sikkerhetsgjennomganger.

Konklusjon: Den klare vinneren, med tall som beviser det

Ser man kun på rå hastighet uten kontekst, er svaret uklart, siden fire av fem benchmarker i denne artikkelen viser at vinneren avhenger fullstendig av om CPU-en har SHA-NI eller ikke. Men ytelse er aldri det eneste kriteriet for en hashfunksjon brukt i sikkerhetsøyemed. Ser man på kollisjonssikkerhet, kostnad ved angrep og faktiske hendelser, er dommen entydig: SHA-256 vinner på alle punkter som har med sikkerhet å gjøre, mens MD5 sin eneste gjenværende fordel er marginal hastighet på eldre maskinvare i ikke-adversariale scenarier.

For beslutningstakere er regnestykket enkelt: en MD5-kollisjon koster under en dollar å produsere med 2026-tallets GPU-kraft, mens et tilsvarende angrep mot SHA-256 krever ressurser ingen kjent aktør har tilgang til. Kombinert med at moderne CPU-er ofte gjør SHA-256 raskere enn MD5 takket være SHA-NI, finnes det i 2026 svært få gode grunner til å beholde MD5 noe sted en angriper kan påvirke input. Bruk MD5 kun til rene sjekksummer mot tilfeldig korrupsjon, og flytt alt annet til SHA-256, eventuelt pakket inn i Argon2id eller PBKDF2 for passord.

Sett i et litt lengre perspektiv er ikke SHA-256 nødvendigvis det siste ordet heller. Kvantedatamaskiner truer i teorien hashfunksjoner via Grovers algoritme, som halverer effektiv sikkerhet, men selv da ville SHA-256 sitte igjen med rundt 2^128 sikkerhet mot 2^64, fortsatt godt innenfor trygg margin i overskuelig framtid. MD5 har derimot ingen slik margin å tære på i dag, kvantedatamaskiner eller ei. Det gjør valget mellom de to algoritmene til noe av det enkleste en sikkerhetsansvarlig kan ta stilling til i 2026: én av dem er ferdig, den andre er fortsatt riktig verktøy for jobben.

Ofte stilte spørsmål om MD5 og SHA-256

Er MD5 fortsatt trygt å bruke i 2026?

Kun til ikke-sikkerhetskritiske formål som å oppdage tilfeldig filkorrupsjon eller deduplisere filer internt. Til alt som involverer en potensiell angriper, som nedlastingsverifisering, signaturer eller passord, er MD5 uegnet og frarådes av NIST, OWASP og CISA. Grensen går ved om noen kan tjene på å manipulere input, ikke ved hvor “gammel” bruken føles.

Hva er den viktigste forskjellen mellom MD5 og SHA-256?

MD5 produserer et 128-bits digest og har kjente, billige kollisjonsangrep siden 2004-2007. SHA-256 produserer et 256-bits digest og har ingen kjent praktisk kollisjon mot den fulle algoritmen, noe som gjør den til den eneste av de to som er godkjent for sikkerhetskritisk bruk i 2026.

Er SHA-256 alltid tregere enn MD5?

Nei. Uten maskinvareakselerasjon er MD5 ofte 1,3 til 3,4 ganger raskere i ulike benchmarker. Men på moderne CPU-er med SHA-NI-utvidelser snur bildet, og SHA-256 kan bli opptil 4,5 ganger raskere enn MD5. De fleste servere og bærbare maskiner solgt etter 2016 har denne akselerasjonen innebygd.

Kan jeg bruke SHA-256 alene til å lagre passord?

Nei. SHA-256 er for rask til å stå alene som passordhash, siden moderne GPU-er kan gjette milliarder av kombinasjoner i sekundet. NIST og OWASP anbefaler i stedet Argon2id, bcrypt eller PBKDF2-HMAC-SHA-256 med høyt iterasjonstall, der SHA-256 kun inngår som en komponent i en tregere konstruksjon.

Hva var Flame-angrepet, og hvorfor nevnes det i denne sammenhengen?

Flame var en avansert malware oppdaget i 2012 som utnyttet en MD5 chosen-prefix-kollisjon til å forfalske et Microsoft-kodesigneringssertifikat. Det forfalskede sertifikatet lot angriperne spoofe Windows Update og distribuere ondsinnet kode som fremstod som legitim, ifølge Microsofts sikkerhetsrådgivning 2718704. Hendelsen er fortsatt det tydeligste eksempelet på hvorfor MD5 ikke hører hjemme i kodesignering.

Bør vi fjerne all MD5-bruk fra systemene våre umiddelbart?

Prioriter sikkerhetskritisk bruk først, som sertifikater, signaturer, passord og nettverksprotokoller som TCP-MD5. Rene interne sjekksummer mot tilfeldig korrupsjon kan vente, men bør fortsatt fases ut over tid som del av god praksis og for å forenkle compliance-rapportering mot NIST- og EU-krav.

Hvilken hashfunksjon bruker Bitcoin og andre blokkjeder?

Bitcoin og Bitcoin Cash bruker dobbel SHA-256 i proof-of-work og blokkhoder. Ethereum og andre EVM-baserte kjeder bruker i stedet Keccak-256 fra SHA-3-familien. MD5 brukes ikke av noen seriøs blokkjede, verken til konsensus eller adressegenerering.