{"id":14,"date":"2026-06-10T09:14:09","date_gmt":"2026-06-10T09:14:09","guid":{"rendered":"https:\/\/shattered.io\/no\/2026\/06\/10\/sha1-kollisjon\/"},"modified":"2026-06-10T13:35:45","modified_gmt":"2026-06-10T13:35:45","slug":"sha1-kollisjon","status":"publish","type":"post","link":"https:\/\/shattered.io\/no\/2026\/06\/10\/sha1-kollisjon\/","title":{"rendered":"SHAttered: den f\u00f8rste praktiske SHA-1-kollisjonen i 2017"},"content":{"rendered":"<h2 id=\"dagen-sha-1-ble-knekt-i-praksis\">Dagen SHA-1 ble knekt i praksis<\/h2>\n<p>Den 23. februar 2017 kunngjorde forskningsinstituttet CWI i Amsterdam sammen med Google at de hadde funnet den f\u00f8rste praktiske kollisjonen for hashfunksjonen SHA-1. Angrepet fikk navnet SHAttered. For f\u00f8rste gang fantes det to forskjellige filer som ga n\u00f8yaktig samme SHA-1-verdi, laget med vilje og dokumentert offentlig. Det som lenge hadde v\u00e6rt en teoretisk bekymring, var n\u00e5 et konkret faktum.<\/p>\n<p>Resultatet var ikke bare en akademisk kuriositet. Det fungerte som et tydelig signal til hele bransjen om at SHA-1 ikke lenger kunne brukes der sikkerheten avhang av at hashen var unik. Denne artikkelen forklarer hva en kollisjon er, hva forskerne faktisk demonstrerte, hvor mye arbeid det krevde, og hvilke konsekvenser det fikk.<\/p>\n<h2 id=\"hva-er-en-kollisjon-og-hvorfor-er-den-farlig\">Hva er en kollisjon, og hvorfor er den farlig?<\/h2>\n<p>En kryptografisk hashfunksjon skal lage et kort, fast avtrykk av data. Et av de viktigste kravene er kollisjonsmotstand: det skal v\u00e6re praktisk umulig \u00e5 finne to ulike meldinger som gir samme hash.<\/p>\n<p>En kollisjon oppst\u00e5r n\u00e5r to forskjellige inndata likevel ender p\u00e5 den samme hashverdien. I teorien finnes det alltid kollisjoner, fordi det er uendelig mange mulige meldinger, men bare et endelig antall mulige hashverdier. Poenget med en god hashfunksjon er ikke at kollisjoner er umulige \u00e5 eksistere, men at de skal v\u00e6re umulige \u00e5 finne innenfor rimelig tid og ressurser.<\/p>\n<p>N\u00e5r noen f\u00f8rst klarer \u00e5 finne en kollisjon, faller en grunnleggende antakelse bort. Tenk p\u00e5 et system som stoler p\u00e5 at hashen identifiserer innholdet entydig. Hvis en angriper kan lage to filer med samme hash, kan han vise frem den harml\u00f8se filen for \u00e5 f\u00e5 en godkjenning, en signatur eller et sertifikat, og deretter bytte den ut med den skadelige filen som har akkurat samme hash. Mottakeren som bare sjekker hashen, ser ingen forskjell. Dette er kjernen i hvorfor en kollisjon undergraver tillit: avtrykket er ikke lenger et p\u00e5litelig bevis p\u00e5 hva innholdet faktisk er.<\/p>\n<h2 id=\"hva-forskerne-demonstrerte\">Hva forskerne demonstrerte<\/h2>\n<p>SHAttered besto av to PDF-filer. De to filene var forskjellige. De hadde ulikt synlig innhold, men de delte den samme SHA-1-verdien:<\/p>\n<pre><code>38762cf7f55934b34d179ae6a4c80cadccbb7f0a\n<\/code><\/pre>\n<p>Begge filene ga alts\u00e5 dette ene avtrykket n\u00e5r man kj\u00f8rte SHA-1 over dem. Samtidig var de fullstendig forskjellige under en sterkere funksjon: kj\u00f8rte du SHA-256 over de samme to filene, fikk du to ulike verdier. Det er en viktig presisering. Det var SHA-1 som ble knekt, ikke SHA-256. SHA-256 skilte tvert imot de to filene fra hverandre uten problemer, slik en trygg hashfunksjon skal.<\/p>\n<p>De to dokumentene kan du laste ned og kontrollere selv:<\/p>\n<ul>\n<li><a href=\"https:\/\/shattered.io\/static\/shattered-1.pdf\">shattered-1.pdf<\/a><\/li>\n<li><a href=\"https:\/\/shattered.io\/static\/shattered-2.pdf\">shattered-2.pdf<\/a><\/li>\n<\/ul>\n<p>Den fullstendige vitenskapelige beskrivelsen av angrepet er publisert i et eget dokument:<\/p>\n<ul>\n<li><a href=\"https:\/\/shattered.io\/static\/shattered.pdf\">Den akademiske artikkelen om angrepet<\/a><\/li>\n<\/ul>\n<p>Det forskerne viste, var en s\u00e5kalt kollisjon der angriperen kan styre deler av innholdet. De konstruerte to filer som begynte med en felles del, og deretter f\u00f8yde til n\u00f8ye beregnede forskjeller slik at SHA-1-verdiene m\u00f8ttes igjen i n\u00f8yaktig samme punkt. At de valgte PDF som format, var ikke tilfeldig: formatet gj\u00f8r det mulig \u00e5 gjemme de tekniske forskjellene slik at hver fil likevel vises som et meningsfullt dokument.<\/p>\n<h2 id=\"et-angrep-med-praktiske-folger-ikke-bare-et-tall\">Et angrep med praktiske f\u00f8lger, ikke bare et tall<\/h2>\n<p>Forskjellen mellom en ren tallkollisjon og det SHAttered demonstrerte, er nettopp at filene var fullverdige dokumenter. Det er \u00e9n ting \u00e5 finne to tilfeldige bitstrenger som tilfeldigvis m\u00f8tes i samme hash. Det er noe ganske annet \u00e5 lage to filer som begge \u00e5pner seg som lesbare PDF-dokumenter, ser troverdige ut, og likevel deler samme avtrykk. Det er denne kontrollen over innholdet som gj\u00f8r et angrep farlig i den virkelige verden, fordi den lar en angriper bygge et par der det ene dokumentet er uskyldig og det andre er noe han egentlig vil ha godkjent.<\/p>\n<p>Forskerne understreket ogs\u00e5 at de to filene kunne deles et felles oppsett, og at den samme teknikken i prinsippet kunne gjenbrukes til \u00e5 lage flere kolliderende par p\u00e5 en mer effektiv m\u00e5te enn \u00e5 starte helt fra bunnen hver gang. Med andre ord var ikke dette en engangshendelse knyttet til akkurat disse to PDF-ene, men en demonstrasjon av en metode.<\/p>\n<h2 id=\"bakgrunnen-en-svakhet-som-lenge-var-varslet\">Bakgrunnen: en svakhet som lenge var varslet<\/h2>\n<p>SHA-1 ble tatt i bruk p\u00e5 1990-tallet og var i lang tid et standardvalg for digitale sertifikater, signaturer og integritetssjekk. Allerede flere \u00e5r f\u00f8r 2017 hadde imidlertid kryptografer publisert teoretiske angrep som viste at SHA-1 var svakere enn den burde v\u00e6re. Disse arbeidene anslo at en kollisjon ville kreve langt mindre arbeid enn et idealisert, perfekt design ville krevd, og de fungerte som en advarsel om at en praktisk kollisjon bare var et sp\u00f8rsm\u00e5l om tid og ressurser.<\/p>\n<p>Mange akt\u00f8rer reagerte p\u00e5 disse advarslene ved \u00e5 begynne planleggingen av en overgang til sterkere funksjoner. Likevel manglet det et endelig, konkret bevis. S\u00e5 lenge ingen faktisk hadde produsert en kollisjon, var det fristende \u00e5 utsette arbeidet og fortsette \u00e5 bruke SHA-1 der det allerede var innarbeidet. SHAttered fjernet dette pusterommet ved \u00e5 gj\u00f8re den teoretiske risikoen til et h\u00e5ndfast resultat hvem som helst kunne kontrollere selv.<\/p>\n<h2 id=\"hvor-mye-arbeid-krevde-angrepet\">Hvor mye arbeid krevde angrepet?<\/h2>\n<p>Det som gj\u00f8r SHAttered imponerende, er ikke bare at en kollisjon ble funnet, men hvor mye regnekraft det krevde \u00e5 presse den frem. Selve angrepet innebar i st\u00f8rrelsesorden 9,2 trillioner SHA-1-beregninger. Tallet er enormt, og det illustrerer hvorfor en slik kollisjon ikke hadde blitt demonstrert tidligere.<\/p>\n<p>For \u00e5 sette mengden arbeid i perspektiv tilsvarte innsatsen omtrent 6 500 CPU-\u00e5r pluss rundt 110 GPU-\u00e5r med regnetid. Med andre ord: det ville tatt en enkelt vanlig prosessor flere tusen \u00e5r \u00e5 gj\u00f8re dette alene. Forskerne fordelte arbeidet over store mengder maskinvare for \u00e5 gjennomf\u00f8re det innenfor rimelig tid.<\/p>\n<p>To ting er verdt \u00e5 merke seg. For det f\u00f8rste var dette langt billigere enn et rent tilfeldig s\u00f8k gjennom alle muligheter. Angrepet utnyttet kjente svakheter i SHA-1 sin indre struktur og var derfor mye mer effektivt enn \u00e5 pr\u00f8ve seg frem blindt. For det andre er regnekraft noe som bare blir billigere over tid. Et angrep som krevde ekstreme ressurser i 2017, blir gradvis mer overkommelig. Det var en del av poenget: dersom en velfinansiert akt\u00f8r kunne klare dette n\u00e5, ville stadig flere kunne klare det senere.<\/p>\n<h2 id=\"konsekvensene-rask-utfasing-av-sha-1\">Konsekvensene: rask utfasing av SHA-1<\/h2>\n<p>SHAttered var ikke det f\u00f8rste tegnet p\u00e5 at SHA-1 var p\u00e5 vei ut. Svakheter i algoritmen hadde v\u00e6rt kjent og diskutert i flere \u00e5r, og mange akt\u00f8rer hadde allerede begynt \u00e5 planlegge en overgang. Men en konkret, fungerende kollisjon endret tempoet i diskusjonen fra teoretisk uro til praktisk hastesak. Det ble vanskelig \u00e5 argumentere for \u00e5 beholde SHA-1 n\u00e5r alle kunne laste ned to filer med samme verdi.<\/p>\n<p>Resultatet var at utfasingen av SHA-1 ble fremskyndet p\u00e5 flere viktige omr\u00e5der:<\/p>\n<ul>\n<li><strong>TLS-sertifikater.<\/strong> Sertifikater som binder et domene til en offentlig n\u00f8kkel, hadde lenge brukt SHA-1 i signaturen. Etter hvert ble SHA-1-baserte sertifikater avvist, og nettlesere og sertifikatutstedere gikk over til sterkere funksjoner som SHA-256.<\/li>\n<li><strong>Git.<\/strong> Versjonskontrollsystemet Git identifiserer innhold ved hjelp av SHA-1. En kollisjon var derfor en reell bekymring for prosjekter der innholdets identitet m\u00e5 v\u00e6re til \u00e5 stole p\u00e5. Hendelsen ga ekstra fart til arbeidet med \u00e5 h\u00e5ndtere kollisjoner og p\u00e5 sikt bevege seg bort fra SHA-1 alene.<\/li>\n<li><strong>Digital signering.<\/strong> Alle systemer som signerte hashen av en melding med SHA-1, var i prinsippet s\u00e5rbare for at en angriper kunne bytte ut innholdet under samme signatur. Anbefalingen ble klar: ikke bruk SHA-1 til nye signaturer.<\/li>\n<\/ul>\n<h2 id=\"hvordan-man-forsvarte-seg-i-overgangsperioden\">Hvordan man forsvarte seg i overgangsperioden<\/h2>\n<p>En fullstendig overgang bort fra SHA-1 skjer ikke over natten. Mange systemer hadde SHA-1 dypt innebygd, og data som allerede var signert eller lagret med SHA-1 forsvant ikke bare fordi en kollisjon var blitt vist. I overgangsperioden ble derfor flere tiltak tatt i bruk.<\/p>\n<p>Det viktigste og mest \u00e5penbare var \u00e5 slutte \u00e5 bruke SHA-1 til alt nytt: nye sertifikater, nye signaturer og nye integritetsmekanismer skulle bruke sterkere funksjoner. I tillegg ble det utviklet metoder for \u00e5 oppdage nettopp den typen kolliderende filer som SHAttered besto av. Slike teknikker ser etter de karakteristiske m\u00f8nstrene som oppst\u00e5r n\u00e5r noen konstruerer en SHA-1-kollisjon, og kan flagge mistenkelige filer f\u00f8r de gj\u00f8r skade. Dette ga systemer som enn\u00e5 brukte SHA-1, en ekstra forsvarslinje mens den fullstendige utfasingen p\u00e5gikk.<\/p>\n<p>L\u00e6rdommen for praktikere var tydelig: n\u00e5r en hashfunksjon f\u00f8rst er svekket, holder det ikke \u00e5 vente p\u00e5 at alle skal bytte samtidig. Man m\u00e5 stanse ny bruk umiddelbart og samtidig beskytte det som enn\u00e5 ikke er migrert.<\/p>\n<h2 id=\"hva-vi-kan-laere-av-shattered\">Hva vi kan l\u00e6re av SHAttered<\/h2>\n<p>Historien om SHA-1 er en p\u00e5minnelse om at kryptografiske antakelser har en holdbarhetsdato. En algoritme som var god nok da den ble innf\u00f8rt, kan bli utdatert etter hvert som forskningen finner svakheter og maskinvaren blir kraftigere. SHAttered viste dette p\u00e5 en konkret og overbevisende m\u00e5te, ikke gjennom et teoretisk argument, men gjennom to filer hvem som helst kunne laste ned og kontrollere.<\/p>\n<p>L\u00e6rdommen er ikke at hashfunksjoner er up\u00e5litelige, men at valg av algoritme m\u00e5 f\u00f8lge med tiden. N\u00e5r en funksjon viser tegn til svakhet, er det fornuftig \u00e5 bytte f\u00f8r noen klarer \u00e5 utnytte den i praksis. For SHA-1 kom byttet for sent for noen og akkurat tidsnok for andre. I dag st\u00e5r SHA-256 og resten av SHA-2-familien for den jobben SHA-1 en gang gjorde, og overgangen fortsatte raskere nettopp p\u00e5 grunn av det som ble vist denne dagen i februar 2017.<\/p>\n<div class=\"shat-sources\">\n<h2 id=\"kilder\">Kilder<\/h2>\n<ul>\n<li><a href=\"https:\/\/eprint.iacr.org\/2017\/190\" rel=\"noopener\" target=\"_blank\">Stevens et al., The first collision for full SHA-1 (IACR ePrint 2017\/190)<\/a><\/li>\n<li><a href=\"https:\/\/security.googleblog.com\/2017\/02\/announcing-first-sha1-collision.html\" rel=\"noopener\" target=\"_blank\">Google Security Blog: Announcing the first SHA-1 collision<\/a><\/li>\n<\/ul>\n<\/div>\n<div class=\"shat-related\">\n<h2 id=\"relaterte-artikler\">Relaterte artikler<\/h2>\n<ul>\n<li><a href=\"https:\/\/shattered.io\/no\/cryptography\/\">Kryptografi: hashfunksjoner, SHA og digital tillit<\/a><\/li>\n<li><a href=\"https:\/\/shattered.io\/no\/cryptography\/sha-256\/\">SHA-256 forklart: 256-bits avtrykk i praksis<\/a><\/li>\n<li><a href=\"https:\/\/shattered.io\/no\/cryptography\/hashfunksjoner\/\">Kryptografiske hashfunksjoner: egenskaper og bruk<\/a><\/li>\n<li><a href=\"https:\/\/shattered.io\/no\/cryptography\/digitale-signaturer\/\">Digitale signaturer: hashfunksjoner og asymmetriske n\u00f8kler<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Dagen SHA-1 ble knekt i praksis Den 23. februar 2017 kunngjorde forskningsinstituttet CWI i Amsterdam sammen med Google at de hadde funnet den f\u00f8rste praktiske kollisjonen for hashfunksjonen SHA-1. Angrepet\u2026<\/p>\n","protected":false},"author":2,"featured_media":21,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-14","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cryptography"],"_links":{"self":[{"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/posts\/14","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/comments?post=14"}],"version-history":[{"count":2,"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/posts\/14\/revisions"}],"predecessor-version":[{"id":45,"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/posts\/14\/revisions\/45"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/media\/21"}],"wp:attachment":[{"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/media?parent=14"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/categories?post=14"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/tags?post=14"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}