Kaip kompiuteriai generuoja atsitiktinius numerius
Kompiuteriai generuoja atsitiktinį skaičių viskas nuo kriptografijos iki vaizdo žaidimų ir azartinių lošimų. Yra dvi atsitiktinių skaičių kategorijos: „tikri“ atsitiktiniai skaičiai ir pseudorandiniai numeriai - ir skirtumas yra svarbus šifravimo sistemų saugumui..
Kompiuteriai gali sukurti tikrai atsitiktinius skaičius, stebėdami kai kuriuos išorinius duomenis, pvz., Pelės judesius arba ventiliatoriaus triukšmą, kuris nėra nuspėjamas, ir kuriant duomenis iš jo. Tai vadinama entropija. Kitais atvejais jie generuoja „pseudorandom“ numerius, naudodami algoritmą, kad rezultatai būtų atsitiktiniai, net jei jie nėra.
Ši tema pastaruoju metu tapo labiau prieštaringa, nes daugelis žmonių abejoja, ar „Intel“ įmontuotas aparatinės įrangos atsitiktinių skaičių generatorius yra patikimas. Jei norite suprasti, kodėl jis gali būti nepatikimas, pirmiausia turite suprasti, kaip atsitiktiniai skaičiai yra generuojami, ir kaip jie naudojami.
Kokie atsitiktiniai numeriai naudojami
Atsitiktiniai skaičiai buvo naudojami tūkstančius metų. Nesvarbu, ar jis apverčia monetą, ar sukti kauliukus, tikslas yra palikti galutinį rezultatą iki atsitiktinio atsitikimo. Atsitiktiniai skaičiaus generatoriai kompiuteryje yra panašūs - jie bando pasiekti nenuspėjamą atsitiktinį rezultatą.
Atsitiktinių skaičių generatoriai yra naudingi įvairiems tikslams. Be akivaizdžių taikomųjų programų, tokių kaip atsitiktinių skaičių kūrimas lošimo tikslais arba nenuspėjamų rezultatų sukūrimas kompiuteriniame žaidime, atsitiktinumas yra svarbus kriptografijai.
Kriptografijai reikia numerių, kurių užpuolikai negali atspėti. Mes negalime tiesiog naudoti tų pačių numerių. Mes norime sukurti šiuos numerius labai nenuspėjamu būdu, kad užpuolikai negalėtų jų atspėti. Šie atsitiktiniai skaičiai yra būtini saugiam šifravimui, nesvarbu, ar šifruojate savo failus, ar tiesiog naudodami HTTPS interneto svetainę.
Tikri atsitiktiniai skaičiai
Jums gali būti įdomu, kaip kompiuteris iš tikrųjų gali sukurti atsitiktinį skaičių. Iš kur kilo šis „atsitiktinumas“. Jei tai tik kompiuterio kodas, ar kompiuterio generuojami numeriai gali būti nuspėjami?
Paprastai suskirstome atsitiktinių skaičių kompiuterius į du tipus, priklausomai nuo to, kaip jie generuojami: „True“ atsitiktiniai skaičiai ir pseudo-atsitiktiniai skaičiai.
Norint sukurti „tikrąjį“ atsitiktinį skaičių, kompiuteris matuoja tam tikrą fizinį reiškinį, kuris vyksta už kompiuterio ribų. Pavyzdžiui, kompiuteris gali matuoti atomo radioaktyvųjį skilimą. Pagal kvantinę teoriją nėra jokio būdo žinoti, kada atsiras radioaktyvus skilimas, todėl tai iš esmės yra „grynas atsitiktinumas“ iš visatos. Užpuolikas negalėtų prognozuoti, kada įvyktų radioaktyvusis skilimas, todėl jie nežino atsitiktinės vertės.
Pavyzdžiui, 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ą. Pavyzdžiui, jūsų kompiuteris gali pastebėti, kad paspaudėte klavišą tiksliai 0.23423523 sekundėmis po 2 val. numeris. Jūs nesate nuspėjamas įrenginys, todėl užpuolikas negali atspėti tikslaus momento, kai paspaudžiate šiuos klavišus. / Dev / random įrenginys Linux'e, kuris generuoja atsitiktinius skaičius, „blokuoja“ ir negrąžina rezultato, kol jis surenka pakankamai entropijos, kad sugrąžintų tikrai atsitiktinį skaičių.
Pseudorandom numeriai
Pseudorandom numeriai yra alternatyva „tikriems“ atsitiktiniams skaičiams. Kompiuteris gali naudoti sėklų vertę ir algoritmą, kad generuotų skaičius, kurie atrodo atsitiktiniai, bet iš tikrųjų yra nuspėjami. Kompiuteris nerenka atsitiktinių duomenų iš aplinkos.
Tai nebūtinai yra bloga situacija kiekvienoje situacijoje. Pvz., Jei žaidžiate vaizdo žaidimą, nesvarbu, ar šiame žaidime įvykę įvykiai yra „tikri“ atsitiktiniai skaičiai ar pseudorandiniai numeriai. Kita vertus, jei naudojate šifravimą, nenorite naudoti pseudorandinių numerių, kuriuos užpuolikas gali atspėti.
Pavyzdžiui, tarkime, kad užpuolikas žino algoritmą ir sėklų vertę, kurią naudoja pseudorandom numeris generatorius. Tarkime, šifravimo algoritmas iš šio algoritmo gauna pseudorandomą numerį ir naudoja jį šifravimo raktui generuoti be papildomo atsitiktinumo. Jei užpuolikas pakankamai žino, jie galėtų dirbti atgal ir nustatyti pseudorandomą numerį, kodėl šifravimo algoritmas turi būti pasirinkęs tokiu atveju, nesilaikydamas šifravimo.
NSA ir „Intel“ techninės įrangos atsitiktinių skaičių generatorius
Kad kūrėjai būtų lengviau ir padėtų sukurti saugius atsitiktinius numerius, „Intel“ lustai apima aparatinę įrangą, pagrįstą atsitiktinių skaičių generatoriumi, žinomu kaip RdRand. Šis mikroschema naudoja procesoriaus entropijos šaltinį ir pateikia programinei įrangai atsitiktinius numerius, kai programinė įranga juos prašo.
Problema yra ta, kad atsitiktinių skaičių generatorius iš esmės yra juodas dėžutė ir mes nežinome, kas vyksta viduje. Jei RdRand tur ÷ jo NSA „backdoor“, vyriausyb ÷ sugeb ÷ tų nutraukti šifravimo raktus, sukurtus tik iš to atsitiktinio numerio generatoriaus pateiktų duomenų..
Tai kelia rimtą susirūpinimą. 2013 m. Gruodžio mėn. „FreeBSD“ kūrėjai pašalino „RdRand“ naudojimą tiesiogiai kaip atsitiktinumo šaltinį, sakydami, kad jie negalėjo pasitikėti. [Šaltinis] RdRand įrenginio išvestis įeina į kitą algoritmą, kuris papildo papildomą entropiją, užtikrindamas, kad atsitiktinių skaičių generatoriaus galinės sėdynės nebūtų svarbios. Tokiu būdu „Linux“ jau dirbo taip, kad atsitiktinės atrankos būdu gautų atsitiktinių duomenų, gautų iš RdRand, kad nebūtų galima nuspėti net ir tuo atveju, jei būtų buvę užpakalinės durys. [Šaltinis] Neseniai AMA („Ask Me Anything“) „Reddit“, „Intel“ generalinis direktorius Brian Krzanich neatsakė į klausimus apie šiuos klausimus. [Šaltinis]
Žinoma, tai tikriausiai yra ne tik „Intel“ lustų problema. „FreeBSD“ kūrėjai taip pat pavadino „Via“ lustus. Šis nesutarimas rodo, kodėl atsitiktinių ir nenuspėjamų atsitiktinių skaičių kūrimas yra toks svarbus.
Norint generuoti „tikruosius“ atsitiktinius skaičius, atsitiktinių skaičių generatoriai renka „entropiją“ arba, regis, atsitiktinius duomenis iš fizinio pasaulio aplink juos. Atsitiktiniams skaičiams, kurių nėra tikrai jie turi būti atsitiktiniai, jie gali naudoti algoritmą ir sėklų vertę.
Vaizdo kreditas: rekre89 Flickr, Lisa Brewster dėl Flickr, Ryan Somma dėl Flickr, huangjiahui dėl Flickr