Hoppa till innehåll

Vad är en nonce i krypto? Så fungerar den

En nonce är en liten men avgörande komponent i blockkedjeteknik. Ordet står för ”number used once” – ett tal som bara ska användas en gång. Men begreppet betyder lite olika saker beroende på sammanhang, och det leder ofta till förvirring. Här går vi igenom vad en nonce är, de tre huvudbetydelserna i kryptovärlden och hur noncen skapar unikhet och säkerhet. Alla facktermer förklaras på vägen.

Snabbfakta: nonce

Vad det betyder”Number used once” – ett tal som bara ska användas en gång
I mining (PoW)Variabeln i blockhuvudet som miners ändrar för att hitta en giltig hash
I EthereumEn räknare per konto som numrerar transaktioner (börjar på 0)
I kryptografiEtt engångsvärde i digitala signaturer och kryptering
HuvudsyfteSkapa unikhet och skydda mot återuppspelning (replay)
Storlek i Bitcoin32 bitar (~4,29 miljarder möjliga värden)

Viktiga punkter

  • En nonce (”number used once”) är ett tal som bara ska användas en gång i en viss kryptografisk operation.
  • Begreppet har tre huvudbetydelser i kryptovärlden: mining-nonce (proof of work), konto-nonce (t.ex. i Ethereum) och kryptografisk nonce (i signaturer och kryptering).
  • I mining är noncen den variabel som ändras miljardtals gånger per sekund för att hitta ett giltigt hashvärde.
  • I kontobaserade nätverk numrerar noncen transaktioner så att de körs i rätt ordning och inte kan spelas upp igen.
  • Att återanvända en nonce i en digital signatur är en allvarlig säkerhetsrisk som kan avslöja den privata nyckeln.

Vad är en nonce?

En nonce är i sin enklaste form ett tal som endast får användas en gång i en viss kryptografisk operation. Grundtanken är alltid densamma: att skapa unikhet så att samma indata inte ger samma resultat om och om igen, vilket är centralt för säkerhet.

Det som förvirrar många är att ”nonce” används om tre ganska olika saker inom krypto. För att förstå begreppet är det bäst att hålla isär dem:

  • Mining-nonce: den variabel som miners ändrar i proof of work för att hitta ett giltigt block.
  • Konto-nonce: en räknare som numrerar transaktioner i kontobaserade nätverk som Ethereum.
  • Kryptografisk nonce: ett engångsvärde som används i digitala signaturer och vid kryptering.

Nedan går vi igenom var och en.

Nonce i mining (proof of work)

Inom proof of work (PoW) är noncen den centrala pusselbiten. När en miner bygger ett nytt block samlar den ihop transaktioner, en tidsstämpel och en referens till föregående block. All den datan är fast, vilket betyder att hashen (det unika ”fingeravtryck” som en algoritm räknar fram) alltid skulle bli densamma om inget ändrades.

Här kommer noncen in. Den är den variabel som minern kan ändra för att få ett nytt hashvärde varje gång, utan att röra själva transaktionerna. Målet är att hitta en hash som är lägre än ett visst målvärde (ofta beskrivet som att den ska ”börja med ett antal nollor”). Det kräver enormt många försök, men när väl en giltig nonce hittats kan alla andra i nätverket verifiera den ögonblickligen.

Steg i brytningÅtgärdResultat
DatainsamlingTransaktioner grupperas i ett blockFast blockdata skapas
Nonce-valEtt värde läggs till i blockhuvudetIndata blir unik
Hash-testAlgoritmen (SHA-256 i Bitcoin) körsGodkänt om hashen är under målvärdet

Det är detta som gör mining både svårt att utföra och enkelt att kontrollera. Vill du läsa mer om själva utvinningen finns en egen guide om bitcoin miners.

Svårighetsgrad och 32-bitars gränsen

I Bitcoin är nonce-fältet 32 bitar stort, vilket ger drygt 4,29 miljarder möjliga värden. Det låter mycket, men dagens miners testar så många kombinationer per sekund att de går igenom hela det spannet på en bråkdel av en sekund. När alla värden är uttömda måste minern ändra ett annat fält – ofta en så kallad ”extra nonce” i den första transaktionen (coinbase) – för att nollställa den vanliga noncen och kunna börja om.

Konto-nonce (till exempel i Ethereum)

I kontobaserade nätverk som Ethereum har varje konto en nonce som fungerar som en räknare för hur många transaktioner kontot skickat. Den första transaktionen har nonce 0, nästa nonce 1, och så vidare. Detta fyller två viktiga funktioner:

  • Ordning: transaktioner körs i rätt följd. Nätverket accepterar inte nonce 6 innan nonce 5 har inkluderats i ett block.
  • Skydd mot återuppspelning (replay): eftersom varje nonce bara används en gång kan ingen kopiera en tidigare signerad transaktion och skicka den på nytt – nätverket ser att den noncen redan är förbrukad.

Detta skiljer sig från Bitcoin, som är UTXO-baserat (varje ”mynt” kan bara spenderas en gång) i stället för konto-baserat. Konto-noncen är också viktig i samspel med smarta kontrakt, där ordningen på kommandon kan påverka utfallet.

Vanliga nonce-problem för användare

Många nybörjarproblem beror på just konto-noncen. Om du skickar en transaktion med för låg avgift som ”fastnar”, blir alla efterföljande transaktioner stående, eftersom de väntar på att den saknade noncen i sekvensen ska bekräftas. Ofta går det att lösa genom att skicka en ny transaktion med samma nonce men högre avgift, vilket ersätter den gamla (kallas ”replace-by-fee”).

Kryptografisk nonce (signaturer och kryptering)

Den tredje betydelsen är den ursprungliga: ett engångsvärde i kryptografiska protokoll. Vid kryptering och digitala signaturer används en nonce för att se till att samma meddelande inte ger exakt samma krypterade utdata varje gång.

Här finns också en av de allvarligaste fallgroparna i all kryptografi. I signatursystemet ECDSA, som Bitcoin använder, ingår ett hemligt slumptal (noncen, ofta kallad ”k”). Om samma nonce återanvänds för att signera två olika meddelanden med samma privata nyckel, kan en angripare med relativt enkel matematik räkna ut den privata nyckeln. Detta är ingen teoretisk risk – svaga slumptalsgeneratorer har historiskt lett till att både plånböcker och andra system läckt nycklar.

För att undvika detta använder moderna system ofta deterministiska noncer: i stället för att slumpa fram ett tal skapas noncen genom att kombinera meddelandet med den privata nyckeln (enligt standarden RFC 6979). Då blir noncen alltid unik för varje nytt meddelande, men ändå omöjlig att förutse.

Nonce, salt och initialiseringsvektor (IV)

En nonce förväxlas lätt med närliggande begrepp som salt och initialiseringsvektor. Alla lägger till slumpmässighet, men de har olika syften.

BegreppPrimärt syfteVaraktighet
NonceGarantera engångsanvändning i realtidEngångs
SaltSkydda lagrade lösenord mot förberäknade attackerPermanent (lagras med datan)
IVStarta ett chifferflöde vid krypteringPer meddelande

Nonce i proof of stake och nyare protokoll

I takt med att många nätverk gått från proof of work till mer energieffektiv proof of stake har noncens roll delvis förändrats. I proof of stake behövs ingen mining-nonce för att lösa energikrävande pussel. I stället används noncer främst för att hålla ordning på transaktioner och skydda mot återuppspelning, och i vissa system ingår slumpmässighet när validerare ska väljas ut. Cardano, som använder proof of stake-protokollet Ouroboros, är ett exempel på ett nätverk där ingen sådan mining-nonce behövs.

Nonce-liknande koncept dyker även upp i nyare teknik: inom integritetslösningar (zero-knowledge proofs) används värden som ibland kallas ”nullifiers” för att förhindra dubbelspendering utan att avslöja detaljer, och i lager 2-lösningar används löpande värden för att ogiltigförklara gamla tillstånd i en betalningskanal.

Varför noncer är viktiga

Noncen är en teknisk detalj som de flesta användare aldrig ser, men den är grundläggande för hur blockkedjor fungerar. Samma enkla idé – ett tal som bara används en gång – gör tre olika saker möjliga: den driver utvinningen i proof of work, den håller ordning på transaktioner i kontobaserade nätverk, och den skyddar digitala signaturer från att knäckas. Det lilla talet är på så vis en av de mest mångsidiga byggstenarna i den kryptografiska verktygslådan.

Vanliga frågor (FAQ)

Vad betyder ordet nonce i kryptosammanhang?

Det står för ”number used once” och syftar på ett tal som bara används en gång för att göra en kryptografisk operation unik och förhindra att den upprepas.

Hur hittar en miner rätt nonce?

Genom att med kraftfull hårdvara testa miljardtals värden i följd tills ett ger en hash som är lägre än nätverkets aktuella svårighetsgrad.

Kan två block ha samma nonce?

Ja, i teorin. Men eftersom blockens övriga data (transaktioner, tidsstämpel) skiljer sig blir deras slutliga hashvärden ändå helt olika.

Vad händer om jag använder fel nonce i en Ethereum-transaktion?

Om noncen är för hög blir transaktionen liggande i nätverkets väntrum (mempool) tills de saknade noncerna i sekvensen skickats och bekräftats.

Varför räcker det inte med en tidsstämpel i stället för en nonce?

En tidsstämpel är inte tillräckligt exakt. Flera transaktioner kan ske under samma sekund, och en miner testar miljontals värden snabbare än klockan tickar.

Är noncen hemlig?

Mining-noncen och konto-noncen är publika och syns för alla, så att nätverket kan verifiera dem. Den kryptografiska noncen i en signatur måste däremot hållas hemlig.

Hur stor är en standardnonce i Bitcoin?

Det primära nonce-fältet är 32 bitar, vilket ger 4 294 967 296 möjliga värden innan andra delar av blocket måste ändras.

Varför är det farligt att återanvända en nonce?

I digitala signaturer kan återanvändning av samma nonce med samma privata nyckel göra att nyckeln kan räknas ut av en utomstående. Det är en av de allvarligaste riskerna i kryptografi.

Har alla kryptovalutor noncer?

De flesta använder någon form av nonce, antingen för utvinning (proof of work) eller för att hålla ordning på transaktioner och skydda mot återuppspelning (proof of stake).