Hjemmeside » hvordan » Hvordan computere genererer tilfældige tal

    Hvordan computere genererer tilfældige tal

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

    Computere kan generere virkelig tilfældige tal ved at observere nogle eksterne data, som musbevægelser eller fanestøj, hvilket ikke er forudsigeligt, og at skabe data fra det. Dette er kendt som entropi. Andre gange genererer de "pseudorandom" tal ved at bruge en algoritme, så resultaterne vises tilfældigt, selvom de ikke er.

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

    Hvilke tilfældige tal bruges til

    Tilfældige tal er blevet brugt i mange tusind år. Uanset om det drejer en mønt eller ruller en terning, er målet at forlade slutresultatet til tilfældig chance. Tilfældige nummergeneratorer i en computer er ens, de er et forsøg på at opnå et uforudsigeligt, tilfældigt resultat.

    Tilfældige nummergeneratorer er nyttige til mange forskellige formål. Bortset fra indlysende applikationer som at generere tilfældige tal med henblik på spil eller skabe uforudsigelige resultater i et computerspil, er tilfældighed vigtig for kryptografi.

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

    Ægte Tilfældige Tal

    Du kan undre dig over, hvordan en computer faktisk kan generere et tilfældigt tal. Hvor kommer denne "tilfældighed" fra. Hvis det kun er et stykke computer kode, er det ikke muligt, at de tal, som computeren genererer, kunne være forudsigelig?

    Vi grupperer generelt de tilfældige tal computere genererer i to typer, afhængigt af hvordan de genereres: "True" tilfældige tal og pseudo-tilfældige tal.

    For at generere et "sandt" tilfældigt tal måler computeren en form for fysisk fænomen, der finder sted uden for computeren. For eksempel kunne computeren måle det radioaktive forfald af et atom. Ifølge kvantteori er der ingen måde at vide sikkert, nå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 vide tilfældig værdi.

    For et mere dagligt eksempel kan computeren stole på atmosfærisk støj eller bare bruge den nøjagtige tid, du trykker på taster på tastaturet som kilde til uforudsigelige data eller entropi. For eksempel kan din computer bemærke, at du trykker på en nøgle på præcis 0.23423523 sekunder efter 2 pm ... Grib nok af de specifikke tider, der er forbundet med disse nøglepresser, og du vil have en entropi-kilde, du kan bruge til at generere en "sand" tilfældig nummer. 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, som genererer tilfældige tal, "blokke" og ikke returnerer et resultat, før det samler nok entropi til at returnere et virkelig tilfældigt tal.

    Pseudorandomnumre

    Pseudorandom tal er et alternativ til "ægte" tilfældige tal. En computer kan bruge en frøværdi og en algoritme til at generere tal, der synes at være tilfældige, men det er faktisk forudsigeligt. Computeren indsamler ikke tilfældige data fra miljøet.

    Dette er ikke nødvendigvis en dårlig ting i enhver situation. Hvis du for eksempel spiller et videospil, er det ikke rigtig noget, om de hændelser, der opstår i det pågældende spil, er cased af "sande" tilfældige tal eller pseudorandom tal. På den anden side, hvis du bruger kryptering, vil du ikke bruge pseudorandomnumre, som en hacker kunne gætte.

    For eksempel, lad os sige, at en angriber ved, at algoritmen og frøværdien bruger en pseudorandom-nummergenerator. Og lad os sige, at en krypteringsalgoritme får et pseudorandom nummer fra denne algoritme og bruger det 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 dette tilfælde, bryde krypteringen.

    NSA og Intels Hardware Random Number Generator

    For at gøre tingene lettere for udviklere og medvirke til at generere sikre tilfældige tal, inkluderer Intel-chips en hardwarebaseret tilfældig talegenerator kendt som RdRand. Denne chip bruger en entropi kilde på processoren og giver tilfældige tal til software, når softwaren anmoder dem.

    Problemet her er, at tilfældig talgeneratoren 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 kunne bryde krypteringsnøgler, der blev genereret med kun data, der blev leveret af den tilfældige talgenerator.

    Dette er et alvorligt problem. I december 2013 fjernede FreeBSDs udviklere support for at bruge RdRand direkte som en kilde til tilfældighed, idet de sagde, at de ikke kunne stole på det. [Kilde] Udgangen af ​​RdRand-enheden ville blive fodret ind i en anden algoritme, der tilføjer yderligere entropi, hvilket sikrer, at enhver bagdør i tilfældig talgeneratoren ikke ville have betydning. Linux har allerede arbejdet på denne måde og yderligere randomiserer de tilfældige data, der kommer fra RdRand, så det ikke ville være forudsigeligt, selv om der var en bagdør. [Kilde] I en nylig AMA ("Spørg mig noget") på Reddit svarede Intel administrerende direktør 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 ved navn. Denne kontrovers viser, hvorfor generering af tilfældige tal, der er virkelig tilfældige og ikke forudsigelige, er så vigtigt.


    For at generere "sande" tilfældige tal, samler tilfældige talgeneratorer "entropi" eller tilsyneladende tilfældige data fra den fysiske verden omkring dem. Til tilfældige tal, der ikke gør det virkelig skal være tilfældige, de må bare bruge en algoritme og en frøværdi.

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