Kuidas arvutid genereerivad juhuslikud numbrid

Sisukord:

Kuidas arvutid genereerivad juhuslikud numbrid
Kuidas arvutid genereerivad juhuslikud numbrid

Video: Kuidas arvutid genereerivad juhuslikud numbrid

Video: Kuidas arvutid genereerivad juhuslikud numbrid
Video: Two Point Hospital Tipps Und Tricks (Deutsch/German) Mono Biester, Warteschlange, Geister & mehr - YouTube 2024, Aprill
Anonim
Arvutid loovad krüptograafiale, videomängudele ja hasartmängudesse kõikvõimalikud juhtnupud. On kaks kategooriat juhuslike numbritega - "tõelised" juhuslikud numbrid ja pseudorandomarvud - ja erinevus on oluline krüpteerimissüsteemide turvalisuse jaoks.
Arvutid loovad krüptograafiale, videomängudele ja hasartmängudesse kõikvõimalikud juhtnupud. On kaks kategooriat juhuslike numbritega - "tõelised" juhuslikud numbrid ja pseudorandomarvud - ja erinevus on oluline krüpteerimissüsteemide turvalisuse jaoks.

Arvutid võivad tõeliselt juhuslikke numbreid luua, jälgides mõningaid väliseid andmeid, nagu hiire liigutused või ventilaatorimüra, mis pole prognoositavad, ja luua andmeid sellest. Seda nimetatakse entroopiaks. Muudel juhtudel genereerivad nad algoritmi kasutades pseudorandom-numbreid, nii et tulemused näivad juhuslikult, kuigi need ei ole.

See teema on viimasel ajal muutunud vaieldavamaks, sest paljud inimesed kahtlevad, kas Inteli sisseehitatud riistvaralise juhusliku arvu generaatori kiip on usaldusväärne. Selleks, et mõista, miks see ei pruugi olla usaldusväärne, peate mõistma, kuidas kõigepealt genereeritakse juhuslikud numbrid ja mida neid kasutatakse.

Milliseid juhuslikke numbreid kasutatakse

Juhuslikke numbreid on kasutatud juba tuhandeid aastaid. Münt vibreerides või täringut joondades on eesmärgiks jätta lõpptulemus välja juhuslikult. Arvuti juhusliku arvu generaatorid on sarnased - nad püüavad saavutada ettearvamatut, juhuslikku tulemust.

Juhusliku arvu generaatorid on kasulikud paljude erinevatel eesmärkidel. Lisaks ilmsetest rakendustest, nagu hasartmängude jaoks juhuslike numbrite genereerimine või arvutimängus ettenägematute tulemuste loomine, on krüptograafia jaoks oluline juhuslikkus.

Krüptograafia nõuab numbreid, mida ründajad ei suuda arvata. Me ei saa lihtsalt kasutada samu numbreid ikka ja jälle. Me tahame neid numbreid luua väga ettearvamatul viisil, nii et ründajad ei suuda neid arvata. Need juhuslikud numbrid on turvalise krüpteerimise jaoks hädavajalikud, olenemata sellest, kas olete oma failid krüpteerides või lihtsalt kasutate HTTPS-i veebisaiti Internetis.

Image
Image

Tõelised juhuslikud numbrid

Võib küsida, kuidas arvuti tegelikult võib luua juhusliku numbri. Kust see juhuslikkus tekib? Kui see on lihtsalt tükk arvutikood, kas pole võimalik, et arvuteid genereerivad numbrid oleksid ennustatavad?

Üldjuhul rühmitame juhuslikud arvud arvutid genereerides kahte tüüpi sõltuvalt sellest, kuidas need on loodud: "tõelised" juhuslikud numbrid ja pseudojuhuslikud numbrid.

Tõelise juhusliku arvu genereerimiseks arvutab 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 kindel, kui radioaktiivne lagunemine toimub, kindlasti teadmata, nii et see on universumis olemuselt "puhas juhuslikkus". Ründaja ei suuda ennustada, kui toimub radioaktiivne lagunemine, nii et nad ei tea juhuslikku väärtust.

Täiendavaks igapäevaseks näideks võib arvuti tugineda atmosfäärihäirele või lihtsalt kasutada täpset kellaajal, kui vajutate oma klaviatuuril klahve kui ettearvamatute andmete või entroopia allikaid. Näiteks võib arvutis märkida, et vajutasite klahvi täpselt 0,23423523 sekundi pärast pärast kella 14.00-ni. Võta piisavalt neid klahvivajutusi, mis on seotud nendega, ja teil on entroopia allikas, mida saate kasutada tõelise juhusliku number Sa ei ole ennustatav masin, nii et ründaja ei suuda arvata täpne hetk, kui vajutate neid võtmeid. Linuxis / dev / juhuslik seade, mis genereerib juhuslikke numbreid, blokeerib ja ei tagasta tulemust, kuni see kogub tõeliselt juhusliku numbri tagastamiseks piisavalt entroopiat.

Image
Image

Pseudorandomnumbrid

Pseudorandomarvud on alternatiiv "tõelistele" juhuslikele numbritele. Arvuti võiks kasutada seemnete väärtust ja algoritmi numbrite loomiseks, mis näivad olevat juhuslikud, kuid mis on tegelikult ennustatavad. Arvuti ei koguta juhuslikke andmeid keskkonnast.

See pole tingimata igas olukorras halb asi. Näiteks kui mängite videomängu, ei ole tegelikult oluline, kas selles mängus esinevad sündmused kattuvad "tõeliste" juhuslike arvude või pseudorandomsete numbritega. Teisest küljest, kui kasutate krüptimist, ei soovi te kasutada pseudoregulaarseid numbreid, mida ründaja võib arvata.

Oletame näiteks, et ründaja teab algoritmi ja seemneväärtust, mida kasutab pseudorandom-arvu generaator. Ja oletame, et krüpteerimisalgoritm saab sellest algoritmist pseudorandom-numbri ja kasutab seda krüpteerimisvõtme loomiseks, lisamata täiendavat juhuslikkust. Kui ründaja teab piisavalt, võivad nad töötada tagurpidi ja määrata pseudorandom-number, mille krüpteerimisalgoritm peab sellisel juhul valima, purustades krüptimise.

NSA ja Inteli riistvaraliste juhuslike arvude generaator

Arendajatele lihtsamaks ja turvaliste juhuslike numbrite loomiseks on Inteli kiipide hulka kuulub riistvarapõhine juhuslike numbrite genereerija, mida nimetatakse RdRandiks. See kiip kasutab protsessoris entroopiaallikat ja pakub tarkvarale juhuslikke numbreid, kui tarkvara seda nõuab.

Probleem on siin selles, et juhuslike arvude generaator on sisuliselt musta kasti ja me ei tea, mis seal toimub.Kui RdRand sisaldas NSA varjualust, oleks valitsusel võimalik murda krüpteerimisvõtmeid, mis on loodud ainult selle juhuslike numbritegurite poolt edastatud andmetega.

See on tõsine mure. FreeBSD arendajad eemaldasid 2013. aasta detsembris RdRandi otsese kasutamise juhuslikkuse allikana, kuna nad ei saanud seda usaldada. [Allikas] RdRandi seadme väljund lisatakse teisele algoritmile, mis lisab täiendavat entroopiat, tagades, et juhusliku arvu generaatori tagauksed ei oleks tähtsad. Linux töötas sel viisil edasi, rühmitades RdRandi tulevad juhuslikud andmed, nii et see poleks ennustatav isegi siis, kui oleks olemas tagauks. [Allikas] Hiljutises AMD-s ("Küsi minult midagi") Reddit'is ei vastanud Inteli tegevjuht Brian Krzanich küsimustele nende murede kohta. [Allikas]

Muidugi, see tõenäoliselt ei ole ainult Intel'i kiipide probleem. FreeBSD arendajad kutsusid nimega ka Via-i kiipe. See vastuolu näitab, miks juhuslike arvude tekitamine, mis on tõeliselt juhuslikud ja ei ole ennustatav, on nii tähtis.

Image
Image

Tõeliste juhuslike numbrite saamiseks koguvad juhuslike numbrite genereerijad "entroopia" või näiliselt juhuslikud andmed nende ümbruses paiknevast füüsilisest maailmast. Juhuslike arvude puhul, mis seda ei tee tõesti peavad olema juhuslikud, võivad nad lihtsalt kasutada algoritmi ja seemnete väärtust.

Soovitan: