13Jul

Hur Datorer genererar slumptal

click fraud protection

tärningar-random-nummer

Datorer genererar slumpmässigt antal för allt från kryptografi till dataspel och spel. Det finns två kategorier av slumpmässiga siffror - "sanna" slumptal och pseudorandomtal - och skillnaden är viktig för säkerheten för krypteringssystem.

Datorer kan generera verkliga slumpmässiga siffror genom att observera vissa externa data, som musrörelser eller fläktbuller, vilket inte är förutsägbart och skapar data från den. Detta kallas entropi. Andra gånger genererar de "pseudorandom" -tal med hjälp av en algoritm så resultaten visas slumpmässigt, även om de inte är.

Detta ämne har blivit mer kontroversiellt förrän, med många människor ifrågasatte om Intels inbyggda hårdvara slumpmässigt generatorns chip är pålitligt. För att förstå varför det kanske inte är trovärdigt, måste du förstå hur slumpmässiga nummer genereras i första hand och vad de är vana vid.

Vilka slumpmässiga nummer används för

Slumpmässiga nummer har använts i tusentals år. Oavsett om det vänder ett mynt eller rullar en tärning, är målet att lämna slutresultatet upp till slumpmässig chans. Slumpmässiga talgeneratorer i en dator är likartade - de är ett försök att uppnå ett oförutsägbart, slumpmässigt resultat.

instagram viewer

Slumptalsgeneratorer är användbara för många olika ändamål. Bortsett från uppenbara applikationer som att generera slumptal i syfte att spela eller skapa oförutsägbara resultat i ett datorspel är slumpmässigt viktigt för kryptografi.

-kryptering kräver nummer som angripare inte kan gissa. Vi kan inte bara använda samma nummer om och om igen. Vi vill skapa dessa nummer på ett mycket oförutsägbart sätt så att angripare inte kan gissa dem. Dessa slumpartier är viktiga för säker kryptering, oavsett om du krypterar dina egna filer eller bara använder en HTTPS -webbplats på Internet.

video-poker-spel-slumpmässighet

Sann slumpmässiga nummer

Du kanske undrar hur en dator faktiskt kan generera ett slumptal. Var kommer denna "slump" från. Om det bara är en del datorkod, är det inte möjligt att de siffror som datorn genererar kan vara förutsägbara?

Vi grupperar i allmänhet slumpmässiga tal som datorer genererar i två typer, beroende på hur de genereras: "Sann" slumpmässiga tal och pseudoslumpmässiga tal.

För att skapa ett "sant" slumptal, mäter datorn någon typ av fysiskt fenomen som äger rum utanför datorn. Till exempel kan datorn mäta radioaktivt förfall av en atom. Enligt kvantteori finns det ingen väg att veta säkert när radioaktivt förfall kommer att inträffa, så detta är i grunden "ren slumpmässighet" från universum. En angripare skulle inte kunna förutse när radioaktivt förfall skulle inträffa, så att de inte skulle få veta slumpmässigt värde.

För ett mer dagligt exempel kan datorn lita på atmosfärstörningar eller helt enkelt använda exakt tiden du trycker på tangenterna på tangentbordet som en källa till oförutsägbar data eller entropi. Till exempel kan datorn märka att du tryckte på en knapp vid exakt 0.23423523 sekunder efter 2 pm. Ta noggrann av de specifika tiderna i samband med dessa tangenttryck och du kommer att få en entropi som du kan använda för att skapa en "sann" slumpmässigsiffra. Du är inte en förutsägbar maskin, så en angripare kan inte gissa det exakta ögonblicket när du trycker på dessa tangenter. /dev/ slumpmässig enhet på Linux, som genererar slumptal, "block" och returnerar inte ett resultat förrän det samlar tillräckligt entropi för att returnera ett verkligt slumpmässigt nummer.

linux-generera-random-data som

Pseudorandom Numbers

Pseudorandom tal är ett alternativ till "sanna" slumptal. En dator kan använda ett frövärde och en algoritm för att generera nummer som verkar vara slumpmässiga, men det är faktiskt förutsägbart. Datorn samlar inte några slumpmässiga data från miljön.

Detta är inte nödvändigtvis en dålig sak i varje situation. Om du till exempel spelar ett videospel spelar det ingen roll om händelserna som inträffar i det spelet är förkroppsliga av "sanna" slumpmässiga tal eller pseudorandom-nummer.Å andra sidan, om du använder kryptering, vill du inte använda pseudorandom nummer som en angripare kan gissa.

Låt oss exempelvis säga att en angripare vet att algoritmen och frösvärdet använder en pseudorandom-nummergenerator. Och låt oss säga att en krypteringsalgoritm får ett pseudorandomtal från denna algoritm och använder den för att generera en krypteringsnyckel utan att lägga till ytterligare slumpmässighet. Om en angripare vet tillräckligt kan de arbeta bakåt och bestämma det pseudorandomtal som krypteringsalgoritmen måste ha valt i det fallet, bryta krypteringen.

pseudoslump-nummer

NSA och Intels maskinvaru Random Number Generator

För att underlätta för utvecklare och hjälpa till att generera säkra slumptal inkluderar Intel-chips en hårdvarubaserad slumptalsgenerator som kallas RdRand. Detta chip använder en entropi-källa på processorn och tillhandahåller slumptal till programvara när programvaran begär dem.

Problemet här är att slumptalgenerern är väsentligen en svart låda och vi vet inte vad som händer inom den. Om RdRand innehöll en NSA-bakdörr skulle regeringen kunna bryta krypteringsnycklar som genererades med endast data som levererades av den slumptalsgeneratorn.

Detta är ett allvarligt problem. I december 2013 avlägsnade FreeBSDs utvecklare stöd för att använda RdRand direkt som en slumpmässig källa och sa att de inte kunde lita på det.[Source] Utgången från RdRand-enheten skulle matas in i en annan algoritm som lägger till ytterligare entropi, vilket säkerställer att eventuella bakdörrar i slumptalsgeneratorn inte spelar någon roll. Linux har redan arbetat på detta sätt, ytterligare randomisering av de slumpmässiga data som kommer från RdRand så att det inte skulle vara förutsägbart även om det fanns en bakdörr.[Source] I en nyligen AMA( "Ask Me Anything") på Reddit svarade inte Intel VD Brian Krzanich frågor om dessa problem.[Source]

Det här är naturligtvis inte bara ett problem med Intel-chips. FreeBSDs utvecklare ropade Via's chips med namn också.Denna kontrovers visar varför att generera slumptal som är verkligt slumpmässiga och inte förutsägbara är så viktigt.

intel

För att generera "sanna" slumptal, samlar slumptalsgeneratorer "entropi" eller till synes slumpmässiga data från den fysiska världen kring dem. För slumpmässiga tal som inte verkligen behöver vara slumpmässiga, kan de bara använda en algoritm och ett frövärde.

Bild Kredit: Rekre89 på Flickr, Lisa Brewster på Flickr, Ryan Somma på Flickr, Huangjiahui på Flickr