13Jul
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., Pelės judesius arba ventiliatoriaus triukšmą, kuris nėra nuspėjamas, ir kurdami duomenis iš jo. Tai žinoma kaip entropija. Kitais atvejais jie generuoja "pseudo-atsitiktinius" skaičiai naudojant algoritmą, todėl rezultatai atsitiktiniai, nors jie ir nėra.
Ši tema neseniai tapo prieštaringa, nes daugelis žmonių abejoja, ar "Intel" įmontuota aparatinė 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 prakeikia 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 įvairiems tikslams. 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.
kriptografija reikalauja 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 esate šifruodami savo failus, ar tiesiog naudodami HTTPS svetainę internete.
Tikrieji atsitiktiniai skaičiai
Jums gali būti įdomu, kaip kompiuteris gali iš tikrųjų generuoti atsitiktinį skaičių.Iš kur atsiranda šis "atsitiktinumas"?Jei tai tik kompiuterinio kodo dalis, ar negalima numatyti kompiuterio sukurtų numerių?
Mes paprastai sugrupuosime atsitiktinių skaičių kompiuterius į du tipus, priklausomai nuo to, kaip jie 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 įrenginys "Linux", kuris generuoja atsitiktinius skaižius, "blokuoja" ir negrąžina rezultatų, kol surenka pakankamai entropijos, kad grąžintų tikrai atsitiktinį skaičių.
Pseudorandom numeriai
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 blogas dalykas 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 pseudorandominių 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ą.
NSA ir "Intel" aparatūros atsitiktinių skaičių generatorius
Kad kūrėjai galėtų lengviau kurti saugius atsitiktinius skaičius, "Intel" lustai yra aparatūros atsitiktinių skaičių generatorius, vadinamas 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 yra NSA backdoor, vyriausybė galėtų pertraukti šifravimo raktus, kurie buvo sugeneruoti tik su tais atsitiktinių skaičių generatoriumi pateiktais duomenimis.
Tai rimtas susirūpinimas.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 greičiausiai 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.
Norėdami generuoti "tikrus" atsitiktinius skaižius, atsitiktinių skaičių generatoriai renka "entropiją" arba atrodo, atsitiktinius duomenis iš jų esančio fizinio pasaulio. Jei atsitiktiniai skaičiai, kurie nėra , tikrai turi būti atsitiktiniai, jie gali naudoti tik algoritmą ir sėklos vertę."
Image Credit": "rekre89" "Flickr", "Lisa Friedrich", "Flickr", "Ryan Somma", "Flickr", "huangjiahui", "Flickr
"