Kaip kompiuteriai generuoja atsitiktinius skaižius

Turinys:

Kaip kompiuteriai generuoja atsitiktinius skaižius
Kaip kompiuteriai generuoja atsitiktinius skaižius

Video: Kaip kompiuteriai generuoja atsitiktinius skaižius

Video: Kaip kompiuteriai generuoja atsitiktinius skaižius
Video: How to install and set up Chromecast with Google TV - YouTube 2024, Balandis
Anonim
Kompiuteriai generuoja atsitiktinius skaičius viskam, nuo kriptografijos iki vaizdo žaidimų ir azartinių lošimų. Yra dvi atsitiktinių skaičių kategorijos - "tikri" atsitiktiniai skaičiai ir pseudorandominiai skaičiai, o skirtumas yra svarbus šifravimo sistemų saugumui.
Kompiuteriai generuoja atsitiktinius skaičius viskam, nuo kriptografijos iki vaizdo žaidimų ir azartinių lošimų. Yra dvi atsitiktinių skaičių kategorijos - "tikri" atsitiktiniai skaičiai ir pseudorandominiai skaičiai, o skirtumas yra svarbus šifravimo sistemų saugumui.

Kompiuteriai gali generuoti tikrai atsitiktinius skaičių, stebėdami kai kuriuos išorės duomenis, pvz., Judesius pelnėmis ar ventiliatoriaus triukšmą, kuris nėra nuspėjamas, ir kurdami iš jo duomenis. Tai žinoma kaip entropija. Kitais atvejais jie generuoja "pseudo-atsitiktinius" skaičiai naudojant algoritmą, todėl rezultatai atsitiktiniai, nors jie ir nėra.

Neseniai ši tema tapo prieštaringa, nes daugelis žmonių klausia, ar "Intel" įmontuota aparatūros atsitiktinių skaičių generavimo lustė yra patikima. Kad suprastumėte, kodėl ji gali būti nepatikima, turėsite suprasti, kaip visų pirma yra išskleidžiami atsitiktiniai skaičiai ir kokie jie buvo naudojami.

Kokie atsitiktiniai skaičiai naudojami

Atsitiktiniai skaičiai buvo naudojami daugelį tūkstančių metų. Nesvarbu, ar tai praveria monetą, ar ritinėja kauliukus, tikslas yra palikti galutinį rezultatą atsitiktine proga. Kompiuterio atsitiktinių skaičių generatoriai yra panašūs - jie bando pasiekti nenuspėjamą, atsitiktinį rezultatą.

Atsitiktinių skaičių generatoriai yra naudingi daugeliui skirtingų tikslų. Be akivaizdžių programų, tokių kaip atsitiktinių skaičių gaminimas azartinių lošimų tikslais ar netikėtų rezultatų sukūrimas kompiuteriniame žaidime, atsitiktinumas yra svarbus kriptografijai.

Kriptografijai reikia numerių, kurių užpuolikai negalėtų atspėti. Negalime vienodai naudoti tų pačių numerių. Mes norime generuoti šiuos skaičius labai neprognozuojamai, todėl užpuolikai negali jų atspėti. Šie atsitiktiniai skaičiai yra būtini saugiam šifravimui, nesvarbu, ar šifruojatės savo failai, ar tiesiog naudojate HTTPS svetainę internete.

Image
Image

Tikri atsitiktiniai skaičiai

Jums gali būti įdomu, kaip kompiuteris iš tikrųjų gali generuoti atsitiktinį skaičių. Iš kur atsiranda šis "atsitiktinumas"? Jei tai tik kompiuterinio kodo dalis, ar negalima numatyti kompiuterio sukurtų numerių?

Paprastai grupė atsitiktinių skaičių sugrupuoja kompiuterius į du tipus, priklausomai nuo to, kaip jie buvo sukurti: "tikri" atsitiktiniai skaičiai ir pseudo-atsitiktiniai skaičiai.

Kad sukurtumėte "tikrąjį" atsitiktinį skaičių, kompiuteris nustato tam tikrą fizinio reiškinio, kuris vyksta už kompiuterio ribų, tipą. Pavyzdžiui, kompiuteris gali matuoti atomo radioaktyvųjį skilimą. Remiantis kvantine teorija, nėra galimybės tiksliai žinoti, kada įvyks radioaktyvus skilimas, taigi iš esmės tai yra "grynas atsitiktinumas" iš visatos. Užpuolikas negalės numatyti, kada įvyktų radioaktyvus sugadinimas, taigi jie nebūtų žinomi atsitiktine verte.

Norėdami gauti daugiau kasdienio pavyzdžio, kompiuteris gali pasikliauti atmosferos triukšmu arba tiesiog naudoti tikslų laiką, kai paspaudžiate klaviatūros klavišus kaip nenuspėjamų duomenų šaltinį arba entropiją. Pvz., Jūsų kompiuteryje gali būti pastebėta, kad paspaudėte klavišą tiksliai 0,23423523 sek. Po 14:00. Grabokite pakankamai konkrečių laikų, susijusių su šiais mygtukais, ir jūs turėsite entropijos šaltinį, kurį galite naudoti generuojant "tikrąjį" atsitiktinį numeris. Jūs nesate nuspėjama mašina, todėl užpuolikas negalės atspėti tikslaus momento, kai paspausite šiuos klavišus. / Dev / atsitiktinis "Linux" įrenginys, kuris generuoja atsitiktinius skaižius, "blokuoja" ir negrąžina rezultatų, kol surinks pakankamai entropijos, kad grąžintų tikrai atsitiktinį skaičių.

Image
Image

Pseudorandominiai skaičiai

Pseudorandominiai skaičiai yra "tikrųjų" atsitiktinių skaičių alternatyva. Kompiuteris gali naudoti sėklos vertę ir algoritmą, kad generuotų atsitiktinai atrodo skaičiai, bet jie iš tiesų yra nuspėjami. Kompiuteris nesudaro jokių atsitiktinių aplinkos duomenų.

Tai nebūtinai yra bloga situacija kiekvienoje situacijoje. Pavyzdžiui, jei žaidžiate vaizdo žaidimą, tikrai nesvarbu, ar šiame žaidime vykstantys įvykiai yra susiję su "tikrais" atsitiktiniais skaičiais arba pseudorandomiais skaičiais. Kita vertus, jei naudojate šifravimą, nenorite naudoti pseudorandominių skaičių, kuriuos užpuolikas gali atspėti.

Pavyzdžiui, tarkime, kad užpuolikas žino algoritmą ir sėklos vertę naudoja pseudo-atsitiktinių skaičių generatorius. Tarkime, kad šifravimo algoritmas iš šio algoritmo gauna pseudorandominį skaičių ir naudoja jį generuoti šifravimo raktą be papildomo atsitiktinumo. Jei užpuolikas žino pakankamai, jie gali dirbti atgal ir nustatyti pseudo-atsitiktinį skaičių, kurį tokiu atveju turi pasirinkęs šifravimo algoritmas, pažeidžiant šifravimą.

NSI ir "Intel" aparatūros atsitiktinių skaičių generatorius

Kad kūrėjai galėtų lengviau palengvinti saugius atsitiktinius skaičius, "Intel" lustai yra aparatūros atsitiktinių skaičių generatorius, žinomas kaip "RdRand". Šioje lustoje procesoriuje naudojamas entropijos šaltinis ir programinei įrangai pateikiami atsitiktiniai skaičiai.

Problema yra ta, kad atsitiktinių skaičių generatorius iš esmės yra juodas langelis ir mes nežinome, kas vyksta jo viduje.Jei RdRand būtų NSA backdoor, vyriausybė galėtų pertraukti šifravimo raktus, kurie buvo sugeneruoti tik su tais atsitiktinių skaičių generatoriumi pateiktais duomenimis.

Tai yra rimtas rūpestis. 2013 m. Gruodžio mėn. "FreeBSD" kūrėjai pašalino "RdRand" naudojimą tiesiogiai kaip atsitiktinumo šaltinį, sakydami, kad negalėjo pasikliauti. [Šaltinis] RdRand įrenginio išvestis būtų įtraukta į kitą algoritmą, kuris papildo papildomą entropiją, užtikrinančią, kad bet kokie atsitiktinių skaičių generatorių bagažinės nebūtų svarbūs. "Linux" jau dirbo taip toliau, atsitiktinai paskirstydamas atsitiktinius RdRand duomenis, kad jis nebūtų nuspėjamas, net jei buvo backdoor. [Šaltinis] "Neseniai AMA" ("Paklausk manęs nieko") "Reddit", "Intel" generalinis direktorius Brianas Krzanichas neatsakė į klausimus apie šias problemas. [Šaltinis]

Žinoma, tai tikriausiai nėra tik "Intel" lustų problema. "FreeBSD" kūrėjai taip pat pavadino "Via" žetonus. Ši prieštaringa priežastis rodo, kodėl atsitiktinių atsitiktinių skaičių sukūrimas yra nepriimtina ir toks svarbus.

Image
Image

Norėdami generuoti "tikrus" atsitiktinius skaižius, atsitiktinių skaičių generatoriai surenka "entropiją" arba atrodo, atsitiktinius duomenis iš jų esančio fizinio pasaulio. Dėl atsitiktinių skaičių, kurie nėra tikrai turi būti atsitiktiniai, jie gali naudoti tik algoritmą ir sėklos vertę.

Rekomenduojamas: