Kā datori rada nejaušus numurus
Datori rada nejaušu skaitli, sākot no kriptogrāfijas līdz videospēlēm un azartspēlēm. Ir divas izlases numuru kategorijas: “īstie” nejauši skaitļi un pseidonandomie skaitļi - un atšķirība ir svarīga šifrēšanas sistēmu drošībai..
Datori var radīt patiesi nejaušus skaitļus, novērojot dažus ārējos datus, piemēram, peles kustības vai ventilatora troksni, kas nav paredzama, un radot datus no tā. To sauc par entropiju. Citos gadījumos tie ģenerē “pseudorandom” numurus, izmantojot algoritmu, lai rezultāti būtu nejauši, pat ja tie nav.
Šī tēma nesen ir kļuvusi pretrunīgāka, un daudzi cilvēki apšauba, vai Intel iebūvētais aparatūras nejaušības skaitļa ģenerators ir uzticams. Lai saprastu, kāpēc tas var nebūt uzticams, jums jāsaprot, kā pirmās kārtas tiek sagādāti nejauši skaitļi un kādas tās tiek izmantotas.
Kādi izlases numuri tiek izmantoti
Random numuri ir izmantoti daudzus tūkstošus gadu. Neatkarīgi no tā, vai tā ir monēta pārvēršana vai dice, mērķis ir atstāt gala rezultātu līdz nejaušai iespējai. Nejauša skaitļu ģeneratori datorā ir līdzīgi - viņi mēģina sasniegt neprognozējamu, nejaušu rezultātu.
Gadījuma skaitļu ģeneratori ir noderīgi daudziem dažādiem mērķiem. Izņemot acīmredzamas lietojumprogrammas, piemēram, nejaušu skaitļu radīšanu azartspēļu nolūkos vai neparedzamu rezultātu radīšanu datorspēlē, nejaušība ir svarīga kriptogrāfijai..
Kriptogrāfijai ir vajadzīgi skaitļi, kurus uzbrucēji nevar uzminēt. Mēs nevaram vienkārši izmantot tādus pašus numurus. Mēs vēlamies radīt šos skaitļus ļoti neparedzamā veidā, lai uzbrucēji tos nevarētu uzminēt. Šie izlases numuri ir būtiski drošai šifrēšanai, neatkarīgi no tā, vai šifrējat savus failus vai vienkārši izmantojat HTTPS tīmekļa vietni internetā.
True izlases numuri
Jums var būt jautājums, kā dators faktiski var radīt nejaušu skaitli. No kurienes tas nāk no “nejaušības”. Ja tas ir tikai datora kods, vai nav iespējams, ka skaitļi, kurus dators rada, varētu būt paredzami?
Mēs parasti sagrupējam nejaušu skaitļu datorus, veidojot tos divos veidos, atkarībā no tā, kā tie tiek ģenerēti: “True” izlases numuri un pseidogadījuma skaitļi.
Lai izveidotu “patiesu” nejaušu skaitli, dators mēra kādu no fiziskām parādībām, kas notiek ārpus datora. Piemēram, dators var izmērīt atoma radioaktīvo sabrukumu. Saskaņā ar kvantu teoriju, nav iespējams pārliecināties, kad radīsies radioaktīvā sabrukšana, tāpēc tas būtībā ir „tīra nejaušība” no Visuma. Uzbrucējs nevarētu paredzēt, kad radīsies radioaktīvā sabrukšana, lai viņi nezinātu nejaušo vērtību.
Piemēram, ikdienā dators var paļauties uz atmosfēras troksni vai vienkārši izmantot precīzu laiku, kad jūs nospiežat tastatūras taustiņus kā neparedzamu datu avotu vai entropiju. Piemēram, jūsu dators var pamanīt, ka jūs nospiežat taustiņu, kas ir tieši 0.23423523 sekundes pēc pulksten 2:00. Pieprasiet pietiekami daudz laika, kas saistīts ar šiem taustiņu nospiešanas taustiņiem, un jums būs entropijas avots, ko varat izmantot, lai ģenerētu “patiesu” nejaušu numuru. Jūs neesat prognozējama mašīna, tāpēc uzbrucējs nevar uzminēt precīzu brīdi, kad nospiežat šos taustiņus. / Dev / random ierīce Linux, kas ģenerē nejaušus numurus, "blokus" un neatgriež rezultātu, kamēr tā nesaņem pietiekami daudz entropijas, lai atgūtu patiesi izlases numuru.
Pseudorandom numuri
Pseudorandom numuri ir alternatīva “īstiem” nejaušiem skaitļiem. Dators varētu izmantot sēklu vērtību un algoritmu, lai radītu skaitļus, kas šķiet nejauši, bet faktiski ir paredzami. Dators nesavāc nekādus izlases datus no vides.
Tas ne vienmēr ir slikta situācija katrā situācijā. Piemēram, ja spēlējat videospēles, nav īsti svarīgi, vai šajā spēlē notiekošie notikumi tiek apzīmēti ar “īstiem” nejaušiem skaitļiem vai pseidogandu skaitļiem. No otras puses, ja izmantojat šifrēšanu, nevēlaties izmantot pseidonandomus numurus, kurus uzbrucējs varētu uzminēt.
Piemēram, pieņemsim, ka uzbrucējs zina algoritmu un sēklu vērtību, ko izmanto pseidoganduma skaitļu ģenerators. Un pieņemsim, ka šifrēšanas algoritms no šī algoritma saņem pseidoganduma numuru un izmanto to, lai ģenerētu šifrēšanas atslēgu, nepievienojot nekādu papildu nejaušību. Ja uzbrucējs zina pietiekami daudz, viņi var strādāt atpakaļ un noteikt pseidonandomālo numuru, kurā šifrēšanas algoritms ir jāizvēlas, pārkāpjot šifrēšanu.
NSA un Intel aparatūras izlases numuru ģenerators
Lai attīstītājiem padarītu lietas vieglākus un palīdzētu izveidot drošus izlases numurus, Intel mikroshēmās ietilpst aparatūras bāzes nejauša skaitļu ģenerators, ko sauc par RdRand. Šajā mikroshēmā procesors tiek izmantots entropijas avots, un programmatūrai tiek piedāvāti nejauši skaitļi, kad programmatūra tos pieprasa.
Problēma šeit ir tāda, ka izlases numuru ģenerators būtībā ir melns kaste un mēs nezinām, kas notiek tā iekšpusē. Ja RdRand saturēja NSA aizmugures durvis, valdība spētu lauzt šifrēšanas atslēgas, kas radītas tikai ar datiem, ko sniedzis šis nejaušais skaitļu ģenerators..
Tas ir nopietnas bažas. 2013. gada decembrī FreeBSD izstrādātāji atteicās atbalstīt RdRand izmantošanu tieši kā nejaušības avotu, sakot, ka viņi nevar uzticēties. [Avots] RdRand ierīces izeja tiks ievadīta citā algoritmā, kas papildina papildu entropiju, nodrošinot, ka nejauša skaitļa ģeneratora aizmugurējās daļas nebūtu svarīgas. Linux jau strādāja šādā veidā, vēl vairāk randomizējot nejaušos datus, kas nāk no RdRand, lai tas nebūtu paredzams pat tad, ja būtu aizmugurējā durvis. [Avots] Nesenajā AMA (“Ask Me Anything”) par Reddit, Intel izpilddirektors Brian Krzanich neatbildēja uz jautājumiem par šīm bažām. [Avots]
Protams, tas nav tikai problēma ar Intel mikroshēmām. Arī FreeBSD izstrādātāji izsauca Via mikroshēmas pēc nosaukuma. Šī pretruna parāda, kāpēc nejauša skaitļu ģenerēšana, kas ir patiesi nejauša un nav paredzama, ir tik svarīga.
Lai radītu “patiesus” nejaušus skaitļus, izlases numuru ģeneratori savāc “entropiju” vai šķietami izlases datus no apkārtējās fiziskās pasaules. Nejaušiem skaitļiem, kas nav tiešām tiem jābūt nejaušiem, viņi var vienkārši izmantot algoritmu un sēklu vērtību.
Image Credit: rekre89 par Flickr, Lisa Brewster par Flickr, Ryan Somma par Flickr, huangjiahui par Flickr