{"id":10,"date":"2026-06-10T09:13:56","date_gmt":"2026-06-10T09:13:56","guid":{"rendered":"https:\/\/shattered.io\/no\/2026\/06\/10\/digitale-signaturer\/"},"modified":"2026-06-10T13:35:45","modified_gmt":"2026-06-10T13:35:45","slug":"digitale-signaturer","status":"publish","type":"post","link":"https:\/\/shattered.io\/no\/cryptography\/digitale-signaturer\/","title":{"rendered":"Digitale signaturer: hashfunksjoner og asymmetriske n\u00f8kler"},"content":{"rendered":"<h2 id=\"hva-er-en-digital-signatur\">Hva er en digital signatur?<\/h2>\n<p>En digital signatur er en kryptografisk metode for \u00e5 bevise to ting samtidig: at en melding virkelig kommer fra den oppgitte avsenderen, og at den ikke er endret underveis. Den fyller mye av den samme rollen som en h\u00e5ndskrevet underskrift, men er langt vanskeligere \u00e5 forfalske, og den er knyttet direkte til selve innholdet i meldingen.<\/p>\n<p>Digitale signaturer er en grunnstein i tilliten p\u00e5 nett. De ligger bak sertifikatene som sikrer nettforbindelser, bak signert programvare og bak mange former for elektronisk dokumentutveksling. To byggeklosser gj\u00f8r dette mulig: en kryptografisk hashfunksjon og et par med asymmetriske n\u00f8kler. I denne artikkelen ser vi p\u00e5 hvordan de spiller sammen, og hvorfor en kollisjon i hashfunksjonen kan true hele ordningen.<\/p>\n<h2 id=\"asymmetriske-nokler-et-par-som-horer-sammen\">Asymmetriske n\u00f8kler: et par som h\u00f8rer sammen<\/h2>\n<p>Digitale signaturer bygger p\u00e5 asymmetrisk kryptografi. I motsetning til en delt hemmelighet bruker dette to forskjellige, men matematisk sammenkoblede n\u00f8kler:<\/p>\n<ul>\n<li>En <strong>privat n\u00f8kkel<\/strong> som eieren holder strengt hemmelig.<\/li>\n<li>En <strong>offentlig n\u00f8kkel<\/strong> som kan deles fritt med hvem som helst.<\/li>\n<\/ul>\n<p>Det som er signert med den private n\u00f8kkelen, kan kontrolleres med den tilh\u00f8rende offentlige n\u00f8kkelen, men ikke omvendt. Den offentlige n\u00f8kkelen lar andre bekrefte en signatur, men gir dem ikke mulighet til \u00e5 lage nye signaturer i eierens navn. Hele sikkerheten hviler p\u00e5 at den private n\u00f8kkelen forblir hemmelig. Mister eieren kontroll over den, kan en angriper signere i eierens sted.<\/p>\n<h2 id=\"hvorfor-hashfunksjonen-er-med\">Hvorfor hashfunksjonen er med<\/h2>\n<p>Man kunne i teorien tenke seg \u00e5 signere hele meldingen direkte, men i praksis signerer man ikke selve dokumentet. I stedet beregnes f\u00f8rst en kryptografisk hash av meldingen, et kort avtrykk med fast lengde, og det er denne hashen som signeres med den private n\u00f8kkelen.<\/p>\n<p>Det er flere grunner til dette. For det f\u00f8rste er meldinger ofte store, mens en hash er kort. \u00c5 signere et lite avtrykk er mye raskere og mer praktisk enn \u00e5 bearbeide hele innholdet. For det andre gir hashen et fast format uavhengig av hvor lang eller kort meldingen er. Og fordi en god hashfunksjon har sterk lavineeffekt, vil enhver endring i meldingen, selv en eneste bit, gi et helt annet avtrykk. Dermed vil en endret melding ikke lenger passe til signaturen.<\/p>\n<p>Resultatet er at signaturen knytter seg til n\u00f8yaktig dette innholdet. Hashen fungerer som et stedfortredende fingeravtrykk: signerer du avtrykket, har du i praksis signert meldingen, s\u00e5 lenge avtrykket entydig representerer innholdet.<\/p>\n<h2 id=\"slik-foregar-signering-og-verifisering\">Slik foreg\u00e5r signering og verifisering<\/h2>\n<p>Prosessen kan deles i to deler: avsenderen signerer, og mottakeren kontrollerer.<\/p>\n<h3 id=\"signering-med-privat-nokkel\">Signering med privat n\u00f8kkel<\/h3>\n<p>N\u00e5r avsenderen vil signere en melding, skjer f\u00f8lgende. F\u00f8rst beregnes en kryptografisk hash av meldingen. Deretter bearbeides denne hashen med avsenderens private n\u00f8kkel, og resultatet blir selve signaturen. Signaturen sendes vanligvis sammen med meldingen. Avsenderen kan ogs\u00e5 dele, eller henvise til, sin offentlige n\u00f8kkel slik at andre kan kontrollere signaturen.<\/p>\n<h3 id=\"verifisering-med-offentlig-nokkel\">Verifisering med offentlig n\u00f8kkel<\/h3>\n<p>Mottakeren som vil kontrollere signaturen, gj\u00f8r to ting. Han beregner selv hashen av meldingen han har mottatt, helt uavhengig. Deretter bruker han avsenderens offentlige n\u00f8kkel p\u00e5 signaturen for \u00e5 utlede hvilket avtrykk signaturen svarer til. Til slutt sammenlignes de to. Hvis avtrykket mottakeren regnet ut, stemmer med det signaturen peker p\u00e5, vet han to ting: meldingen er uendret siden den ble signert, og den m\u00e5 ha blitt signert med den private n\u00f8kkelen som h\u00f8rer til den offentlige n\u00f8kkelen han brukte. Stemmer de ikke, er enten meldingen endret, eller s\u00e5 er signaturen ikke ekte.<\/p>\n<p>Det fine med denne ordningen er at hvem som helst kan kontrollere signaturen med den offentlige n\u00f8kkelen, mens bare eieren av den private n\u00f8kkelen kan lage en gyldig signatur i utgangspunktet.<\/p>\n<h2 id=\"hva-en-digital-signatur-faktisk-garanterer\">Hva en digital signatur faktisk garanterer<\/h2>\n<p>En gyldig digital signatur gir tre ting p\u00e5 \u00e9n gang, og det er nyttig \u00e5 holde dem fra hverandre.<\/p>\n<p>For det f\u00f8rste gir den integritet: meldingen er ikke endret siden den ble signert. Endrer noen s\u00e5 mye som ett tegn, endres avtrykket, og signaturen passer ikke lenger. For det andre gir den autentisitet: signaturen kan bare ha blitt laget med den private n\u00f8kkelen som h\u00f8rer til den offentlige n\u00f8kkelen mottakeren bruker, s\u00e5 den knytter meldingen til en bestemt n\u00f8kkeleier. For det tredje gir den et grunnlag for ikke-benektelse: ettersom bare eieren har den private n\u00f8kkelen, er det vanskelig for ham i ettertid \u00e5 nekte for \u00e5 ha signert meldingen.<\/p>\n<p>Disse tre egenskapene forutsetter alle at den private n\u00f8kkelen er holdt hemmelig, og at hashfunksjonen er sterk. Svikter noen av disse forutsetningene, svikter garantiene med dem. Det er ogs\u00e5 grunnen til at h\u00e5ndtering og beskyttelse av private n\u00f8kler er et eget tema i praksis: en lekket privat n\u00f8kkel lar en angriper signere i eierens navn, helt uavhengig av hvor god hashfunksjonen er.<\/p>\n<h2 id=\"hvorfor-en-hash-kollisjon-truer-signaturer\">Hvorfor en hash-kollisjon truer signaturer<\/h2>\n<p>Hele tryggheten i en digital signatur hviler p\u00e5 en stilltiende antakelse: at hashen entydig representerer innholdet. Signaturen dekker jo strengt tatt bare avtrykket, ikke hele meldingen direkte. S\u00e5 lenge det er umulig \u00e5 finne to meldinger med samme hash, er dette helt trygt, fordi en gyldig signatur over et avtrykk i praksis bare kan passe til den ene meldingen som ga det avtrykket.<\/p>\n<p>Men hvis hashfunksjonen er s\u00e5rbar for kollisjoner, faller denne antakelsen. Tenk deg at en angriper klarer \u00e5 lage to dokumenter med n\u00f8yaktig samme hash, ett harml\u00f8st og ett skadelig. Han kan da f\u00e5 det harml\u00f8se dokumentet signert, for eksempel ved \u00e5 sende det til en intetanende part for godkjenning. Etterp\u00e5 bytter han ut dokumentet med den skadelige varianten. Fordi de to har samme hash, gjelder den opprinnelige signaturen fortsatt for det nye innholdet. En mottaker som kontrollerer signaturen, vil f\u00e5 et gyldig resultat og bli lurt til \u00e5 tro at det skadelige dokumentet er ekte og godkjent.<\/p>\n<p>Dette er ikke et tenkt scenario uten forankring. I 2017 ble den f\u00f8rste praktiske kollisjonen for SHA-1 demonstrert, kalt SHAttered, der to forskjellige PDF-filer fikk samme SHA-1-verdi. Det var nettopp denne typen trussel som gjorde funnet s\u00e5 alvorlig for alle systemer som signerte SHA-1-avtrykk. En signatur er aldri sterkere enn hashfunksjonen den bygger p\u00e5. Derfor ble SHA-1 frar\u00e5det til signering, og sterkere funksjoner som SHA-256 tok over.<\/p>\n<h2 id=\"sertifikater-og-kodesignering-i-praksis\">Sertifikater og kodesignering i praksis<\/h2>\n<p>To av de mest synlige bruksomr\u00e5dene for digitale signaturer er sertifikater og kodesignering.<\/p>\n<p>Et digitalt sertifikat binder en identitet, for eksempel et domenenavn, til en offentlig n\u00f8kkel. Sertifikatet er selv signert av en betrodd utsteder. N\u00e5r nettleseren din kobler seg til et nettsted, kontrollerer den signaturen p\u00e5 sertifikatet for \u00e5 bekrefte at den offentlige n\u00f8kkelen virkelig tilh\u00f8rer domenet. Dette er en av grunnene til at overgangen fra SHA-1 til SHA-256 i sertifikater var s\u00e5 viktig: en svak hashfunksjon her ville undergrave tilliten til hele forbindelsen.<\/p>\n<p>Kodesignering fungerer etter samme prinsipp. N\u00e5r en utvikler signerer et program eller en oppdatering, lages et hash-avtrykk av filen, og dette signeres med utviklerens private n\u00f8kkel. N\u00e5r du installerer programmet, kan systemet kontrollere signaturen og dermed bekrefte at filen kommer fra riktig avsender og ikke er endret. Endrer noen s\u00e5 mye som en byte i filen, stemmer ikke lenger avtrykket, og signaturen blir ugyldig. Men dersom hashfunksjonen tillater kollisjoner, kunne en angriper i prinsippet smugle inn endret kode under en signatur som fortsatt ser gyldig ut.<\/p>\n<h2 id=\"tillit-bygget-pa-to-byggeklosser\">Tillit bygget p\u00e5 to byggeklosser<\/h2>\n<p>Digitale signaturer viser hvordan to enkle ideer, en enveis hashfunksjon og et par med asymmetriske n\u00f8kler, til sammen gir noe sv\u00e6rt kraftfullt: et bevis p\u00e5 b\u00e5de avsender og uendret innhold som hvem som helst kan kontrollere, men nesten ingen kan forfalske. Hashfunksjonen s\u00f8rger for at signaturen er knyttet til n\u00f8yaktig dette innholdet, og n\u00f8kkelparet s\u00f8rger for at bare rett eier kan signere.<\/p>\n<p>Samtidig understreker historien om SHAttered hvor avhengig denne ordningen er av en sterk hashfunksjon. Den dagen avtrykket ikke lenger er unikt, sl\u00e5r sikkerheten sprekker. Derfor er valget av hashfunksjon ikke en teknisk detalj, men en forutsetning for at en digital signatur i det hele tatt skal v\u00e6re verdt \u00e5 stole p\u00e5.<\/p>\n<div class=\"shat-sources\">\n<h2 id=\"kilder\">Kilder<\/h2>\n<ul>\n<li><a href=\"https:\/\/csrc.nist.gov\/pubs\/fips\/186-5\/final\" rel=\"noopener\">NIST FIPS 186-5: Digital Signature Standard<\/a><\/li>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8032\" rel=\"noopener\">RFC 8032: Edwards-Curve Digital Signature Algorithm<\/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\/hashfunksjoner\/\">Kryptografiske hashfunksjoner: egenskaper og bruk<\/a><\/li>\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\/sha1-kollisjon\/\">SHAttered: den f\u00f8rste praktiske SHA-1-kollisjonen i 2017<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Hva er en digital signatur? En digital signatur er en kryptografisk metode for \u00e5 bevise to ting samtidig: at en melding virkelig kommer fra den oppgitte avsenderen, og at den\u2026<\/p>\n","protected":false},"author":2,"featured_media":25,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-10","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\/10","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=10"}],"version-history":[{"count":2,"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/posts\/10\/revisions"}],"predecessor-version":[{"id":41,"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/posts\/10\/revisions\/41"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/media\/25"}],"wp:attachment":[{"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/media?parent=10"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/categories?post=10"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/shattered.io\/no\/wp-json\/wp\/v2\/tags?post=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}