Hvordan computere genererer tilfældige tal

Computere genererer tilfældigt tal for alt fra kryptografi til videospil og hasardspil. Der er to kategorier af tilfældige tal - "sande" tilfældige tal og pseudorandomnumre - og forskellen er vigtig for sikkerheden ved krypteringssystemer.

Computere kan generere virkelig tilfældige tal ved at observere nogle udvendige data, som musebevægelser eller ventilatorstøj, som ikke er forudsigelig, og oprette data derfra. Dette er kendt som entropi. Andre gange genererer de "pseudorandom" -numre ved hjælp af en algoritme, så resultaterne ser tilfældige ud, selvom de ikke er det.

Dette emne er for nylig blevet mere kontroversielt, hvor mange mennesker stiller spørgsmålstegn ved, om Intels indbyggede chip til tilfældig talgenerator til hardware er troværdig. For at forstå hvorfor det måske ikke er troværdigt, bliver du nødt til at forstå, hvordan tilfældige tal genereres i første omgang, og hvad de bruges til.

Hvad tilfældige tal bruges til

Tilfældige tal er blevet brugt i mange tusinder af år. Uanset om det er at vende en mønt eller kaste terninger, er målet at lade slutresultatet være tilfældigt. Tilfældige talgeneratorer på en computer er ens - de er et forsøg på at opnå et uforudsigeligt, tilfældigt resultat.

RELATERET: Hvad er kryptering, og hvordan fungerer det?

Tilfældige talgeneratorer er nyttige til mange forskellige formål. Bortset fra åbenlyse applikationer som at generere tilfældige tal med det formål at spille eller skabe uforudsigelige resultater i et computerspil, er tilfældighed vigtig for kryptografi.

Kryptografi kræver tal, som angribere ikke kan gætte. Vi kan ikke bare bruge de samme numre igen og igen. Vi vil generere disse tal på en meget uforudsigelig måde, så angribere ikke kan gætte dem. Disse tilfældige tal er vigtige for sikker kryptering, uanset om du krypterer dine egne filer eller bare bruger et HTTPS-websted på Internettet.

Ægte tilfældige tal

Du undrer dig måske over, hvordan en computer rent faktisk kan generere et tilfældigt tal. Hvor kommer denne "tilfældighed" fra. Hvis det bare er et stykke computerkode, er det ikke muligt, at de numre, computeren genererer, kunne være forudsigelige?

Vi grupperer generelt tilfældige tal, som computere genererer i to typer, afhængigt af hvordan de genereres: “Ægte” tilfældige tal og pseudotilfældige tal.

For at generere et ”sandt” tilfældigt tal måler computeren en slags fysisk fænomen, der finder sted uden for computeren. For eksempel kunne computeren måle et atoms radioaktive henfald. Ifølge kvanteteorien er der ingen måde at vide med sikkerhed, hvornår radioaktivt henfald vil forekomme, så dette er i det væsentlige "ren tilfældighed" fra universet. En angriber ville ikke være i stand til at forudsige, hvornår radioaktivt henfald ville forekomme, så de ikke ville kende den tilfældige værdi.

For et mere dagligt eksempel kan computeren stole på atmosfærisk støj eller blot bruge det nøjagtige tidspunkt, du trykker på tasterne på dit tastatur, som en kilde til uforudsigelige data eller entropi. For eksempel bemærker din computer muligvis, at du trykkede på en tast nøjagtigt 0.23423523 sekunder efter kl. Tag nok af de specifikke tidspunkter, der er forbundet med disse tastetryk, og du får en kilde til entropi, som du kan bruge til at generere et "sandt" tilfældigt tal. Du er ikke en forudsigelig maskine, så en angriber kan ikke gætte det præcise øjeblik, når du trykker på disse taster. Den / dev / tilfældige enhed på Linux, der genererer tilfældige tal, “blokerer” og returnerer ikke et resultat, før den samler nok entropi til at returnere et virkelig tilfældigt tal.

Pseudorandom-numre

Pseudorandom-tal er et alternativ til "sande" tilfældige tal. En computer kunne bruge en frøværdi og en algoritme til at generere tal, der ser ud til at være tilfældige, men som faktisk er forudsigelige. Computeren samler ikke tilfældige data fra miljøet.

Dette er ikke nødvendigvis en dårlig ting i enhver situation. For eksempel, hvis du spiller et videospil, betyder det ikke rigtig, om de begivenheder, der opstår i det spil, er forårsaget af "ægte" tilfældige tal eller pseudorandom-tal. På den anden side, hvis du bruger kryptering, vil du ikke bruge pseudorandom-numre, som en angriber kan gætte.

Lad os for eksempel sige, at en hacker kender algoritmen og frøværdien, som en pseudorandom-talgenerator bruger. Og lad os sige, at en krypteringsalgoritme får et pseudorandomnummer fra denne algoritme og bruger den til at generere en krypteringsnøgle uden at tilføje yderligere tilfældighed. Hvis en angriber ved nok, kan de arbejde baglæns og bestemme det pseudorandomnummer, som krypteringsalgoritmen skal have valgt i så fald og bryde krypteringen.

NSA og Intels Hardware Random Number Generator

For at gøre det lettere for udviklere og hjælpe med at generere sikre tilfældige tal inkluderer Intel-chips en hardwarebaseret tilfældig talgenerator kendt som RdRand. Denne chip bruger en entropikilde på processoren og leverer tilfældige tal til software, når softwaren anmoder om det.

Problemet her er, at tilfældig talgenerator i det væsentlige er en sort boks, og vi ved ikke, hvad der foregår inde i den. Hvis RdRand indeholdt en NSA bagdør, ville regeringen være i stand til at bryde krypteringsnøgler, der blev genereret med kun data leveret af den tilfældige talgenerator.

Dette er en alvorlig bekymring. I december 2013 fjernede FreeBSD's udviklere support til at bruge RdRand direkte som en tilfældighedskilde og sagde, at de ikke kunne stole på det. [Kilde] Outputtet fra RdRand-enheden føres ind i en anden algoritme, der tilføjer yderligere entropi, hvilket sikrer, at bagdøre i tilfældig talgenerator ikke betyder noget. Linux har allerede arbejdet på denne måde og yderligere randomiseret tilfældige data, der kommer fra RdRand, så det ikke ville være forudsigeligt, selvom der var en bagdør. [Kilde] I en nylig AMA ("Ask Me Anything") på Reddit besvarede Intels CEO Brian Krzanich ikke spørgsmål om disse bekymringer. [Kilde]

Selvfølgelig er dette sandsynligvis ikke kun et problem med Intel-chips. FreeBSDs udviklere kaldte også Via's chips ud ved navn. Denne kontrovers viser, hvorfor generering af tilfældige tal, der virkelig er tilfældige og ikke er forudsigelige, er så vigtigt.

For at generere "ægte" tilfældige tal indsamler tilfældige talgeneratorer "entropi" eller tilsyneladende tilfældige data fra den fysiske verden omkring dem. For tilfældige tal, der ikke rigtig behøver at være tilfældige, kan de bare bruge en algoritme og en frøværdi.

Billedkredit: rekre89 på Flickr, Lisa Brewster på Flickr, Ryan Somma på Flickr, huangjiahui på Flickr