Kuidas arvutid juhuslikke numbreid loovad
Arvutid loovad juhusliku numbri kõike alates krüptograafiast kuni videomängudeni ja hasartmängudeni. Juhuslikke numbreid on kahte liiki - „tõsi” juhuslikke numbreid ja pseudorandomseid numbreid - ja erinevus on oluline krüpteerimissüsteemide turvalisuse jaoks..
Arvutid võivad luua tõeliselt juhuslikke numbreid, jälgides mõningaid väliseid andmeid, nagu hiire liigutused või ventilaatori müra, mis ei ole prognoositav, ning luuakse sellest andmeid. Seda tuntakse kui entropiat. Muudel aegadel genereerivad nad "pseudorandom" numbreid, kasutades algoritmi, nii et tulemused on juhuslikud, kuigi nad ei ole.
See teema on hiljuti muutunud vastuolulisemaks, sest paljud inimesed kahtlevad, kas Inteli sisseehitatud riistvara juhusliku arvu generaatori kiip on usaldusväärne. Et mõista, miks see ei pruugi olla usaldusväärne, peate mõistma, kuidas juhuslikud numbrid on esmalt genureeritud ja mida nad kasutavad.
Milliseid juhuslikke numbreid kasutatakse
Juhuslikke numbreid on kasutatud juba tuhandeid aastaid. Ükskõik, kas see meenutab münti või veeretab täringuid, on eesmärk jätta lõpptulemus juhuslikult. Juhuslikud arvugeneraatorid arvutis on sarnased - nad püüavad saavutada ettearvamatut, juhuslikku tulemust.
Juhuslike numbrite generaatorid on kasulikud paljudel erinevatel eesmärkidel. Lisaks ilmsetele rakendustele, nagu juhuslike numbrite genereerimine hasartmängude jaoks või arvutimängus ettearvamatute tulemuste loomine, on krüptograafia jaoks juhuslikkus oluline..
Krüptograafia nõuab numbreid, mida ründajad ei suuda arvata. Me ei saa lihtsalt kasutada samu numbreid üha enam. Me tahame neid numbreid väga ettearvamatult genereerida, nii et ründajad ei suuda neid arvata. Need juhuslikud numbrid on turvalise krüpteerimise jaoks hädavajalikud, olenemata sellest, kas krüptite oma faile või kasutate lihtsalt HTTPSi veebisaiti Internetis.
Tõelised juhuslikud numbrid
Võib-olla ei tea, kuidas arvuti tegelikult juhuslikku numbrit luua. Kus see “juhuslikkus” on pärit. Kui see on lihtsalt arvuti kood, kas ei ole võimalik, et arvuti genereeritud numbrid oleksid ennustatavad?
Tavaliselt rühmitame juhuslike arvute arvutid kahte tüüpi, sõltuvalt sellest, kuidas need genereeritakse: “Tõelised” juhuslikud numbrid ja pseudo-juhuslikud numbrid.
Tõelise juhusliku numbri genereerimiseks mõõdab arvuti mõnda tüüpi füüsilist nähtust, mis toimub väljaspool arvutit. Näiteks võib arvuti mõõta aatomi radioaktiivset lagunemist. Kvantteooria kohaselt ei ole võimalik kindlalt teada saada, kui radioaktiivne lagunemine toimub, nii et see on põhimõtteliselt universumist „puhas juhuslikkus”. Ründaja ei suuda ennustada, millal radioaktiivne lagunemine toimuks, nii et nad ei tea juhuslikku väärtust.
Päeva-päevase näite puhul võib arvuti tugineda atmosfääri müra või lihtsalt kasutada täpset aega, mida vajutate klaviatuuril ettearvamatute andmete või entroopia allikana. Näiteks võib teie arvuti täheldada, et vajutasite pärast kella 14.00 täpselt 0.23423523 sekundit klahvi… Haara piisavalt aega, mis on seotud nende klahvivajutustega, ja teil on entropiaallikas, mida saate kasutada tõelise juhusliku number. Sa ei ole prognoositav masin, nii et ründaja ei suuda neid klahve vajutades täpselt arvata. / Dev / random seade Linuxis, mis genereerib juhuslikke numbreid, “blokeerib” ja ei tagasta tulemust seni, kuni see kogub tõeliselt juhusliku numbri tagastamiseks piisavalt entropiat.
Pseudorandom numbrid
Pseudorandom numbrid on alternatiiv “tõelistele” juhuslikele numbritele. Arvuti võib kasutada seemneväärtust ja algoritmi, et genereerida numbreid, mis näivad olevat juhuslikud, kuid mis on tegelikult ennustatavad. Arvuti ei kogu keskkonnast juhuslikke andmeid.
See ei ole tingimata igas olukorras halb. Näiteks, kui mängite videomängu, ei ole tegelikult oluline, kas selles mängus esinevaid sündmusi ümbritseb “tõsi” juhuslikud numbrid või pseudorandom numbrid. Teisest küljest, kui kasutate krüpteerimist, ei soovi te kasutada pseudorandumseid numbreid, mida ründaja võib arvata.
Oletame näiteks, et ründaja teab algoritmi ja seemneväärtust pseudorandom number generator. Ja ütleme, et krüpteerimisalgoritm saab sellest algoritmist pseudorandumi numbri ja kasutab seda krüpteerimisvõtme genereerimiseks ilma täiendava juhuslikkuse lisamiseta. Kui ründaja teab piisavalt, võivad nad töötada tahapoole ja määrata pseudorandumi numbri, mille krüpteerimisalgoritm peab sel juhul valima, rikkudes krüpteerimist.
NSA ja Inteli riistvara juhusliku arvugeneraator
Arendajate jaoks lihtsamaks muutmiseks ja turvaliste juhuslike numbrite loomiseks sisaldavad Inteli kiibid riistvarapõhist juhusliku arvu generaatorit, mida tuntakse RdRandina. See kiip kasutab protsessoril entroopia allikat ja pakub tarkvarale juhuslikke numbreid, kui tarkvara neid nõuab.
Probleem on siin selles, et juhusliku arvu generaator on sisuliselt must kast ja me ei tea, mis seal toimub. Kui RdRand sisaldas NSA tagaukset, oleks valitsus võimeline murdma krüpteerimisvõtmeid, mis on genereeritud ainult selle juhusliku numbri generaatori poolt edastatud andmetega..
See on tõsine probleem. 2013. aasta detsembris eemaldasid FreeBSD arendajad RdRandi kasutamise toetamise otse juhuslikkuse allikana, öeldes, et nad ei saa seda usaldada. [Allikas] RdRandi seadme väljund antakse teise algoritmi, mis lisab täiendavat entropiat, tagades, et juhusliku arvugeneraatori tagauksed ei oleks tähtsad. Linux juba niimoodi töötanud, randomiseerides juhuslikke andmeid, mis tulevad RdRandist, nii et see ei oleks prognoositav isegi tagauksel. [Allikas] Hiljutises AMD-s (“Küsi mulle midagi”) Redditil ei vastanud Inteli tegevjuht Brian Krzanich nende probleemide kohta. [Allikas]
Loomulikult ei ole see tõenäoliselt lihtsalt probleem Intel kiipidega. FreeBSD arendajad kutsusid ka Via kiibid nime järgi. See vastuolu näitab, miks juhuslike numbrite loomine, mis on tõeliselt juhuslikud ja ei ole ennustatavad, on nii oluline.
„Tõelise” juhusliku numbri genereerimiseks koguvad juhusliku arvu generaatorid „entropiat” või näiliselt juhuslikke andmeid nende ümber olevast füüsilisest maailmast. Juhuslike numbrite puhul, mis ei ole tõesti need peavad olema juhuslikud, võivad nad lihtsalt kasutada algoritmi ja seemneväärtust.
Krediidi krediit: rekre89 Flickril, Lisa Brewster Flickril, Ryan Somma Flickril, huangjiahui Flickris