
What Is a Nonce in Crypto? Definition and Examples
Hvis du noen gang har lurt på hvordan Bitcoin-gruvearbeidere finner gyldige blokker, eller hvordan påloggingssystemer hindrer noen i å kapre økten din, har du allerede møtt konseptet nonce. I denne artikkelen ser vi på hva en kryptografisk nonce er, med konkrete eksempler fra Bitcoin-gruvedrift og OAuth-autentisering. Ifølge NIST (US National Institute of Standards and Technology) er en nonce en tilfeldig eller ikke-repeterende verdi som brukes for å garantere levende overføring og forhindre replay-angrep. Du vil forstå hvorfor denne lille verdien er avgjørende for både sikkerhet og konsensus.
Bitcoin nonce-bredde: 32 bits ·
Omrentlige hash-forsøk per sekund (nettverk): 350 exahashes ·
Typisk OAuth-nonce-lengde: 128 bits ·
Første dokumenterte bruk av nonce: 1981 (Needham-Schroeder)
Rask oversikt
- Nonce må være unik per kryptografisk operasjon (NIST)
- Bitcoin-nonce er et 32-bits heltall (Investopedia)
- Ethereum-kontononce øker med én per transaksjon (Tatum)
- Nøyaktig sannsynlighet for nonce-kollisjon i SHA-256-gruvedrift ved dagens hashrate er estimert, men ikke presist dokumentert. (Reddit r/cryptography)
- Fremtidige blokkjeder kan erstatte eller modifisere nonce-mekanismer – eksakte design er ennå ikke spesifisert. (Gopher Security)
- Nøyaktig virkemåte for nonce i praktisk kryptering for å produsere ulike utdata ved gjentatt kryptering av samme data er fortsatt gjenstand for diskusjon. (Reddit r/cryptography)
- Bruk av tidsstempler med nonce for å avvise gamle forespørsler har varierende implementering på tvers av protokoller. (Reddit r/cryptography)
- 1981 – Needham-Schroeder-protokollen introduserer nonce for autentisering. (Wikipedia)
- 1997 – Hashcash bruker nonce for proof-of-work (anti-spam). (Gate)
- 2009 – Bitcoin adopterer Hashcash-stil nonce for gruvedrift. (Money on Chain)
- 2012 – OAuth 2.0-spesifikasjonen definerer nonce-parameter for ID-tokens. (Auth0)
- Nye protokoller kan utvide nonce til kvantesikre kryptosystemer. (NHIMG)
- Flere blokkjeder vurderer å erstatte nonce med alternative konsensusmekanismer. (Cube Exchange)
Nøkkelfakta om nonce-størrelser og bruksområder:
| Parameter | Verdi |
|---|---|
| Bitcoin nonce-feltstørrelse | 32 bits (4 byte) |
| Ethereum-kontononce | Rekkefølgenummer som starter på 0 per konto |
| OAuth 2.0 nonce-parameter | Valgfri streng i ID-token, bundet til sesjon |
| Første kjente nonce-bruk | 1981, Needham–Schroeder-protokollen |
Hva er en nonce i krypto?
En kryptografisk nonce (number used once) er en verdi som brukes nøyaktig én gang i en kommunikasjonssesjon. Formålet er å skille hver forespørsel eller transaksjon fra alle tidligere, slik at en angriper ikke kan kopiere og sende den på nytt – det vi kaller et replay-angrep.
Uten nonce ville en hacker kunne fange opp Bitcoin-transaksjonen din og sende den på nytt, og dermed tømme lommeboken din to ganger. Noncen gjør hver overføring unik.
Hvordan genereres en nonce?
- I gruvedrift: gruvearbeidere itererer et 32-bits heltall fra 0 til 4 294 967 295.
- I autentisering: serveren genererer en tilfeldig UUID eller en kryptografisk sikker tilfeldig streng.
- Kravene er enten unikhet eller uforutsigbarhet – ofte begge (se NIST-definisjon).
Hva er kjerneegenskapene til en kryptografisk nonce?
- Unik per bruk (samme nonce skal ikke forekomme to ganger innenfor protokollens levetid).
- Ofte tilfeldig eller pseudo-tilfeldig for å forhindre gjetting.
- Tilstrekkelig bitlengde for å unngå kollisjon – typisk 32–128 bits avhengig av bruksområde.
Konsekvensen: Enten du miner Bitcoin eller logger på en nettbank, avhenger sikkerheten av at denne verdien forblir unik. Uten den ville kryptografien falle sammen.
Hva er et eksempel på en nonce?
To helt forskjellige domener – Bitcoin-gruvedrift og OAuth 2.0 – viser hvordan samme konsept får ulik implementasjon.
Eksempel: Bitcoin-gruvedrift (hash-nonce)
Bitcoin-gruvearbeidere tar en blokk med transaksjoner, legger til en nonce (32-bit verdi), hasher alt, og sjekker om resultatet er under et mål. Hvis ikke, øker de nonce med 1 og prøver igjen. Investopedia forklarer at dette gjentas milliarder av ganger per sekund. En vellykket hash kan se slik ut: 00000000000000000002a7… – de innledende nullene bekrefter at noncen var riktig.
Et konkret nonce-eksempel i heksadesimal: d36e3c7b (8 heks-sifre = 32 bits).
Eksempel: OAuth 2.0-autentisering (autentiserings-nonce)
Når du logger inn med Google eller Facebook, sendes en nonce med i forespørselen. Auth0 (identitetsplattform) beskriver nonce som et replay-angrepsvern: etter at tokenet er utstedt, inkluderer ID-tokenet en nonce – en UUID på 128 bits. Klienten verifiserer at denne matcher den opprinnelige verdien, ellers avvises tokenet.
Eksempel på en OAuth-nonce: d36e3c7b-5e8a-4f1c-9d2b-1a2b3c4d5e6f (128 bits UUID).
Forskjellen er tydelig: Bitcoin-noncen må varieres raskt og er liten (32 bits), mens OAuth-noncen må være uforutsigbar og stor nok til å unngå gjetting.
Hva er formålet med en nonce?
Hovedoppgaven er å sikre ferskhet og forhindre replay-angrep. I blokkjeder fungerer noncen samtidig som mekanismen for proof-of-work – den gjør at gruvearbeidere må bruke regnekraft for å finne en gyldig hash.
Hvorfor er unikhet viktig i kryptografi?
Uten unikhet ville en angriper kunne kopiere en gyldig melding og sende den på nytt. Okta (skyleverandør for autentisering) understreker at nonce er et av de mest grunnleggende verktøyene for å sikre live-dataoverføring.
Hvordan forhindrer en nonce replay-angrep?
I autentisering: serveren sender en nonce til klienten. Klienten inkluderer nonce i sitt svar. Serveren sjekker at nonce ikke er brukt før. Hvis en angriper prøver å sende det samme svaret på nytt, blir noncen avvist fordi den allerede er sett. FortyTwo Docs bekrefter at OpenID Connect krever nonce i implisitt flyt for å redusere replay-risiko.
Konsekvensen: Én enkelt verdi skiller mellom en legitim forespørsel og et angrep.
Hva er forskjellen mellom hash og nonce?
En hash er et utdata fra en kryptografisk hashfunksjon – for eksempel SHA-256. En nonce er et inndata. Du kan tenke på nonce som en knot du vrir på for å endre hash-resultatet.
Fire egenskaper, ett mønster:
| Egenskap | Hash | Nonce |
|---|---|---|
| Rolle | Utdata | Inndata |
| Deterministisk? | Ja – samme inndata gir samme hash | Nei – varieres av brukeren |
| Lengde (Bitcoin) | 256 bits | 32 bits |
| Bruk i gruvedrift | Måles mot målverdi | Endres for å oppnå gyldig hash |
Hvorfor dette betyr noe: Uten nonce ville gruvearbeidere ikke kunne variere blokkhashen – da ville alle blokker være forhåndsbestemt og proof-of-work ville mistet sin hensikt.
Hva er nonce i autentisering?
I autentisering fungerer nonce som en engangskode som binder en sesjon til en konkret forespørsel. Både OAuth 2.0 og HTTP Digest Access Authentication bruker det.
Nonce i OAuth 2.0 og OpenID Connect
Auth0s dokumentasjon (2025) viser at nonce er obligatorisk i implisitt flyt med form post – klienten sender en nonce i autorisasjonsforespørselen, og ID-tokenet returnerer samme verdi. Hvis verdiene ikke stemmer, avvises tokenet.
Nonce i HTTP Digest Access Authentication
I eldre protokoller som Digest Authentication sender serveren en nonce som klienten hasher sammen med passordet. Securing.pl (sikkerhetsblogg) påpeker at dette forhindrer at passordet sendes i klartekst, men noncens rolle er likevel å forhindre replay.
Kjernen: I autentisering er nonce en forhandlingsverdi som sikrer at svaret kun er gyldig for akkurat den økten.
Tre varianter, ett formål: unikhet. Bitcoin hash-nonce (32 bits) varieres raskt for proof-of-work. Ethereum-kontononce (økende heltall) teller transaksjoner. OAuth-nonce (128 bits UUID) beskytter mot sesjonskapring. Hver tilpasset sitt sikkerhetsmål.
Bekreftede fakta
- Nonce må være unik per kryptografisk operasjon (Okta).
- Bitcoin-nonce er et 32-bits heltall (Securing.pl).
- Ethereum-kontononce øker med én per transaksjon (FortyTwo Docs).
- OAuth 2.0 bruker nonce for å binde ID-token til sesjon (Auth0 Docs).
Hva som er uklart
- Nøyaktig sannsynlighet for nonce-kollisjon i SHA-256-gruvedrift ved dagens hashrate er estimert, men ikke presist dokumentert.
- Fremtidige blokkjeder kan erstatte eller modifisere nonce-mekanismer – eksakte design er ennå ikke spesifisert.
«I cryptography, a nonce is an arbitrary number that can be used just once in a cryptographic communication.»
«A Bitcoin nonce is a 32-bit number that miners use to attempt to generate a valid hash.»
Kort sagt: En nonce er ikke bare en tekniske detalj – den er limet som holder kryptografisk sikkerhet sammen. For Bitcoin-gruvearbeidere: uten nonce, ingen proof-of-work. For utviklere som implementerer OAuth: uten nonce, åpne dører for replay-angrep. Valget er klart: inkluder nonce, eller aksepter risikoen.
For en mer grundig forklaring på hva en nonce i krypto er, kan du lese en annen artikkel som går i dybden på definisjonen og bruksområdene.
Ofte stilte spørsmål
Hva er en nonce i blokkjede?
En nonce i blokkjede er en verdi som gruvearbeidere varierer for å finne en gyldig hash. For Bitcoin er det et 32-bits heltall. For Ethereum er det et rekkefølgenummer som teller transaksjoner per konto.
Hvor lang er en Bitcoin-nonce?
32 bits (4 byte), med en verdiområde fra 0 til 4 294 967 295.
Kan en nonce gjenbrukes?
Nei – det grunnleggende prinsippet er at den brukes én gang. Gjenbruk ville åpne for replay-angrep.
Hva skjer hvis to gruvearbeidere finner samme nonce?
Det er mulig, men sannsynligheten er ekstremt liten. Hvis det skjer, godtar nettverket den første blokken den mottar; den andre forkastes.
Er nonce det samme som salt?
Nei. Salt brukes i passordhashing for å gjøre samme passord til forskjellige hasher. Nonce brukes for å sikre ferskhet i en protokoll.
Bruker Ethereum nonce for gruvedrift også?
Ethereum brukte tidligere proof-of-work med en nonce, men etter overgangen til proof-of-stake i 2022 brukes ikke lenger nonce for gruvedrift. Ethereum-kontononce eksisterer fortsatt for transaksjonsrekkefølge.
Er en nonce alltid tilfeldig?
Ikke nødvendigvis. Bitcoin-noncen er sekvensiell (0,1,2…). OAuth-noncer er ofte tilfeldige UUID-er. Kravet er unikhet, ikke tilfeldighet.
Hva brukes nonce i OAuth 2.0 til?
Den brukes for å binde ID-tokenet til en spesifikk autentiseringsforespørsel og forhindre replay-angrep. Hvis noncen i tokenet ikke matcher den opprinnelige verdien, avvises det.
Relatert lesning