Kan datorer skapa äkta slump? Så fungerar slumptalsgeneratorer

Optisk slumptalsgenerator med laser, fotondetektorer och datorkretsar som skapar digital slump.

Slumpmässiga tal används överallt i den digitala världen. De avgör vilka symboler som visas i ett datorspel, skapar nycklar som skyddar krypterad kommunikation och hjälper forskare att genomföra avancerade simuleringar. Samtidigt bygger datorer på instruktioner som följs steg för steg. Om samma beräkning utförs med samma startvärden ska resultatet bli detsamma.

Det leder till en till synes enkel fråga: Kan en maskin som arbetar deterministiskt verkligen skapa något oförutsägbart?

Svaret beror på vad som menas med äkta slump. Ett vanligt datorprogram kan inte på egen hand skapa ny fysisk oförutsägbarhet. Det kan däremot generera talföljder som är så svåra att förutsäga att de fungerar som slump i praktiken. Om datorn dessutom får information från en fysisk eller kvantmekanisk process kan den även samla in verklig entropi från omvärlden.

Vad är en slumptalsgenerator?

En slumptalsgenerator, ofta förkortad RNG efter engelskans random number generator, är ett system som producerar tal eller bitar som ska vara svåra att förutsäga.

Generatorn skapar vanligtvis först en lång följd av nollor och ettor. Dessa bitar kan sedan omvandlas till heltal, decimaltal, kortpositioner, spelresultat eller andra värden som programmet behöver.

Hur bra en generator är beror på användningsområdet. Vid en enkel simulering kan det räcka att talföljden har en jämn statistisk fördelning. Vid kryptering måste kraven vara betydligt högre. Där får en angripare inte kunna förutsäga nästa värde även om tidigare resultat och delar av systemet är kända.

Det finns därför en viktig skillnad mellan vanliga pseudorandomiserade generatorer och kryptografiskt säkra slumptalsgeneratorer.

Pseudorandomness skapas med matematik

De flesta slumptal som används av datorer är egentligen pseudoslumptal. De skapas genom en matematisk algoritm som börjar med ett startvärde, ett så kallat frö eller seed.

Algoritmen omvandlar fröet till en lång serie tal som ser slumpmässig ut. Om samma algoritm startas med exakt samma frö kommer den dock att producera exakt samma serie igen. Processen är alltså helt deterministisk.

Det behöver inte vara en nackdel. Vid vetenskapliga simuleringar och programtester är det ofta värdefullt att kunna återskapa samma resultat. En forskare kan då ange vilket frö som användes och låta andra upprepa experimentet med samma följd av pseudoslumptal.

En bra pseudorandomiserad generator kan ha en oerhört lång period innan talföljden börjar upprepas. Den kan också ge resultat som klarar omfattande statistiska tester. Trots detta är serien i princip möjlig att förutsäga om någon känner till algoritmen och generatorns interna tillstånd.

Kryptografiskt säker RNG ställer högre krav

När slumptal används för lösenord, säkerhetstoken, krypteringsnycklar eller digitala signaturer räcker det inte att talen ser slumpmässiga ut. De måste vara praktiskt omöjliga att förutsäga.

En kryptografiskt säker pseudorandomiserad generator, ofta kallad CSPRNG, är konstruerad så att en angripare inte ska kunna räkna ut framtida resultat genom att studera tidigare värden. Ett fåtal läckta bitar får inte heller avslöja generatorns interna tillstånd.

Sådana generatorer kan byggas med kryptografiska hashfunktioner eller blockchiffer. Det amerikanska standardiseringsinstitutet NIST beskriver flera godkända konstruktioner i standarden SP 800-90A.

Även en mycket stark algoritm behöver dock ett oförutsägbart startvärde. Om fröet är enkelt att gissa kan hela talföljden bli möjlig att återskapa. En generator som startas med exempelvis aktuell tid kan vara tillräcklig för en enkel simulering, men är normalt olämplig för säkerhetskritiska uppgifter.

Entropi hämtas från den fysiska omvärlden

För att skapa ett svårgissat frö samlar moderna operativsystem in entropi. Entropi kan i detta sammanhang beskrivas som mängden osäker eller oförutsägbar information i en datakälla.

Beroende på dator och operativsystem kan informationen komma från exempelvis:

  • tidsvariationer i hårdvaran
  • elektroniskt eller termiskt brus
  • avvikelser mellan oberoende klockor
  • särskilda säkerhetskretsar
  • variationer i enheters och komponenters svarstider

Informationen blandas i en intern entropipool. Därifrån hämtar operativsystemets kryptografiska slumptalsgenerator sitt startvärde och kan snabbt producera stora mängder säkra pseudorandomiserade bitar.

Rådata från en fysisk källa är inte automatiskt perfekt. Elektroniskt brus kan påverkas av temperatur, komponentfel eller yttre störningar. Därför behöver källorna övervakas och informationen efterbehandlas för att minska snedfördelningar och återkommande mönster.

NIST SP 800-90B beskriver hur entropikällor ska utvärderas och hälsotestas. Den nyare SP 800-90C beskriver hur sådana källor kan kombineras med deterministiska generatorer till kompletta system.

Vad är en fysisk slumptalsgenerator?

En fysisk slumptalsgenerator mäter en process i den verkliga världen i stället för att enbart använda en matematisk algoritm. Den kan exempelvis registrera elektroniskt brus, radioaktivt sönderfall eller små variationer i när en elektrisk signal passerar en krets.

Sådana system kallas ibland TRNG, vilket står för true random number generator. Benämningen kan vara något förenklad. En fysisk process kan vara mycket svår att förutsäga utan att för den skull vara bevisat slumpmässig på en fundamental nivå.

En klassisk fysisk händelse kan i teorin vara deterministisk men praktiskt omöjlig att mäta med tillräcklig noggrannhet. Resultatet fungerar då som slump för användaren, även om processen kanske hade kunnat förutsägas med fullständig kunskap om alla startvillkor.

Det avgörande för säkerheten är inte bara var bruset kommer ifrån. Systemet måste även skyddas mot fel, manipulation och felaktiga uppskattningar av hur mycket entropi källan faktiskt innehåller.

Kvantfysik kan ge fundamental slump

Kvantmekaniska processer erbjuder en starkare kandidat till äkta slump. När en enskild fotons polarisation eller väg mäts kan utfallet enligt kvantmekaniken vara fundamentalt oförutsägbart.

En kvantbaserad slumptalsgenerator kan exempelvis skicka fotoner mot en optisk komponent och registrera vilken detektor som reagerar. Varje mätning omvandlas till en nolla eller etta. Många mätningar tillsammans bildar en lång slumpmässig bitföljd.

Även här finns praktiska problem. Detektorer kan ha olika känslighet och mätutrustningen kan introducera snedfördelningar. De råa värdena behöver därför kontrolleras och bearbetas med en så kallad slumpmässighetsextraktor.

År 2025 presenterade NIST och University of Colorado Boulder en offentlig tjänst som använder sammanflätade fotoner och Belltester för att producera verifierbara kvantslumptal. Systemet, kallat CURBy, gör det möjligt att spåra och kontrollera hur slumpvärdena skapades. Forskarna beskriver tekniken som ett sätt att certifiera att resultaten inte kan förklaras av en klassisk, förutsägbar process.

Ett slumpmässigt resultat behöver inte vara jämnt fördelat

Slumpmässighet betyder inte att alla resultat måste ha samma sannolikhet. En generator kan först skapa jämnt fördelade bitar och sedan använda dem i ett system där vissa utfall har större sannolikhet än andra.

Ett sexsidigt tärningskast ska normalt ge varje sida samma chans. I en vädersimulering kan däremot vissa temperaturer vara mycket vanligare än andra. Resultaten kan fortfarande vara slumpmässiga så länge de följer den avsedda sannolikhetsfördelningen.

Samma princip används i digitala spel. En RNG producerar grundvärden som programmet översätter till symboler, kort eller andra resultat enligt spelets regler. Slumptalsgeneratorn avgör inte i sig hur ofta spelaren ska vinna. Det bestäms även av sannolikhetsmodellen, vinsttabellen och hur generatorns värden kopplas till möjliga utfall.

En oförutsägbar RNG garanterar därför inte att ett spel är fördelaktigt för spelaren. Den ska i första hand säkerställa att nästa resultat inte kan räknas ut från tidigare resultat.

Kan statistiska tester bevisa att en följd är slumpmässig?

Slumpmässiga talföljder kan granskas med tester som undersöker fördelningen mellan nollor och ettor, längden på återkommande serier, korrelationer och andra mönster.

Testerna är bra på att upptäcka tydliga fel. Om en generator producerar ovanligt många ettor eller upprepar samma sekvenser kan det tyda på en bristfällig algoritm eller en trasig entropikälla.

Att en följd klarar testerna bevisar däremot inte att den är oförutsägbar. En skickligt konstruerad deterministisk serie kan se statistiskt perfekt ut. NIST betonar därför i sin vägledning om slumpmässighetstester att statistiska tester inte kan ersätta granskning av generatorns konstruktion och kryptografiska säkerhet.

För att bedöma en RNG måste man alltså undersöka både resultatet och processen som skapade det.

Datorn skapar inte alltid slumpen – men den kan förädla den

Ett rent deterministiskt program skapar pseudoslump. Det kan producera enorma mängder tal som ser slumpmässiga ut, men samma interna tillstånd leder alltid till samma fortsättning.

Ett komplett datorsystem kan däremot samla in oförutsägbara fysiska mätvärden och använda dem som entropi. Därefter kan en kryptografiskt säker generator förädla en liten mängd entropi till en snabb ström av användbara slumptal.

Med kvantmekaniska mätningar går det dessutom att producera slump som enligt modern fysik inte går att förutsäga ens med fullständig kunskap om systemet. Datorn är då inte den ursprungliga källan till slumpen. Den mäter, kontrollerar och omvandlar en oförutsägbar fysisk process till digitala nollor och ettor.