Riistvaraline juhuarvu generaator

Allikas: Vikipeedia
SSL kiirendi, mis kasutab riistvaralist juhuarvu generaatorit krüptovõtmete loomiseks.

Riistvaraline juhuarvu generaator (inglise keeles hardware RNG) on seade, mis genereerib juhuslikke numbreid lähtudes füüsikalistest ilmingutest nagu soojusmüra, fotoelektriline efekt, kõvaketta lugemis- ja kirjutamispeade liikumine jms. Sellised protsessid on teoreetiliselt ettearvamatud ning nende abil saadud juhuarve võib lugeda tõeliselt juhuslikeks. Vastupidiselt pseudojuhuarvudele, mis saadakse rakendades arvutuslikke-algoritme etteantavale võtmele/numbrite jadale. Pseudojuhuarvud on loomupäraselt ettearvatavad ning ainult näiliselt juhuslikud – nende vastu on mitmeid rünnakuid[1].

Igaüks, kes usub juhuslike numbrite loomise artitmeetilisi meetodeid, on segaduses.

John von Neumann, 1951

Et riistvaralised juhuarvu generaatorid on tavaliselt üpris aeglased siis kasutatakse nende väljundit kiires pseudojuhuarvu algoritmis, mis võimaldab juhuarvude genereerimist kiirendada.

Kasutusalad[muuda | redigeeri lähteteksti]

6sided dice.jpg

Juhuarvud on olulised krüptograafias, hasartmängudes ja statistikas.

Juhuarvu generaatoreid on võimalik luua ka lähtudes makroskoopilistest protsessidest nagu täringu- või mündivise, ruletti ratas ning loteriimasinad. Ettearvamatust nendes protsessides on võimalik põhjendada kaose teooriaga ning dünaamiliste süsteemide ebastabiilsusega. Vastavate protsesside tulemused sõltuvad pisidetailidest ja niiöelda varjatud parameetritest, mis muudavad nende protsesside lõppoleku ennustamise võimatuks. Olgugi, et selliste makroskoopiliste protsesside kasutamine on enamjaolt levinud hasartmängunduses kirjeldas Inglise teadlane Francis Galton 1890. aastal, kuidas täringuga teaduslikel eesmärkidel juhuarve genereerida.

Juhuarve kasutatakse nii sümmeetrilises kui asümmeetrilises krüptograafias genereerimaks võtmeid, millede salastatusel ja ettearvamatusel põhineb krüptitud andmete turvalisus ning terviklikkus.

Tööpõhimõtted[muuda | redigeeri lähteteksti]

Juhuslikkuse aluseks on peamiselt kaks fundamentaalset allikat: kvantmehhaanika aatomi tasemel ja soojusmüra. Kvantmehhaanika eeldab, et teatud füüsikalised protsessid, nagu aatomituuma lagunemine, on juhuslikud ja neid ei saa ennustada. Ning, et me ei ela absoluutse nulltemperatuuri juures on igal süsteemil omaseks teatud juhuslikkus. Näiteks õhumolekulid põrkuvad pidevalt üksteise vastu täiesti juhuslikult. Et kvantmehhaaniliste sündmuste tulemusi ei saa põhimõtteliselt ennustada on need juhuarvude genereerimise standardiks. Kvantmehhaanilised sündmused, mida juhuarvugeneraatorites kasutatakse:

  • Footonite – valgus osakeste – saatmine pool-läbipaistvale peeglile, millelt footon, kas peegeldub või läbib peeglit. Mõlemad juhud on teineteist välistavad ning vastavalt sellele, kas footon läbis/peegeldus saadakse juhuslik biti väärtus "0" või "1".[2]


Soojusmüra on kergem tuvastada. Müra muundamisel bitijadaks võimendatakse saadud signaali, filtreeritakse ning muundatakse digitaalseks.

Kella nihe[muuda | redigeeri lähteteksti]

Lisaks eelpool mainitud allikaile on juhuarvu generaatorit võimalik ehitada lähtudes kella nihkest. Kella nihe viitab ilmingule, kus kaks võrreldavat kella ei liigu täpselt sama kiirusega. Seega mõne aja möödudes on nende kellade poolt näidatavad ajad nihkes. Juhuarvu generaatoris kasutatakse kahte eraldiseisvat kristall-ostsillaatorit, millede võnkesagedused on erinevad. Näiteks üks ostsillaator võngub 100 korda sekundi jooksul ja teine miljon korda sekundi jooksul. Keskmiselt võngub kiirem ostsillaator 10 000 võnget aeglase ostsillaatori ühe võnke kohta. Aga et kristall-ostsillaatorid ei ole täpsed siis tegelik võngete arv erineb. Seda variatsooni saab kasutada juhuslike bittide genereerimiseks. Näiteks kui kiirema ostsillaatorite võngete arv aeglase ostsillaatori ühe võnke kohta on paaritu arv, siis valitakse "0" ja kui võngete arv on paaris siis valitakse "1". Selline kristall-ostsilaatorite paar võib seega genereerida 100 juhuslikku bitti sekundis. Kuna aga sellised süsteemid on tavaliselt ühele poole kallutatud ning genereerivad nt. rohkem ühetsid kui nulle siis dekorreleeritakse väljund ning sajast bitist saadakse mõned tõeliselt juhuslikud.

Muu[muuda | redigeeri lähteteksti]

Tarkvaraarendajad ilma tõeliselt juhuslike juhuarvu generaatoriteta proovivad tihti saavutada juhuslikkust olemasolevate vahenditega nagu nt. klahvivajutuste ajavahesid mõõtes ning siis vastavast tulemusest vähima biti lugemist. Lisaks veel WiFi müra [4] ja kõvaketta lugemis- ja kirjutuspeade liikumine. Sellised meetodid on riskantsed, sest piisavalt kaval pahalane võib tulemust suuta mõjutada.

Dekorrelatsioon[muuda | redigeeri lähteteksti]

Erinevate tööpõhimõtetega generaatorite poolt väljastatavad bitijadad on kalduvad sisaldama rohkem, kas "1" või "0". Sellise ühele poole kallutatuse eemaldamiseks on kaks lähenemist. Üheks võimaluseks on riistvaraliselt signaali filtreerida, teiseks genereeritud bitijada vastavate algoritmidega "puhastada".

Üheks selliseks algoritmiks on John von Neumanni poolt loodud lihtne viis, kuidas bitijada kallutatust vähendada. Algoritm võrdleb kahte bitti korraga, rakendades ühte otsust kolmest: kui kaks järjestikust bitti on võrdsed, siis neid ei kasutata; "1" ja "0" järjestikusel esinemisel saadakse "1"; "0" ja "1" järjestikusel esinemisel saadakse "0". See vähendab kallutatust ning seda on lihtne rakendada arvuti programmina või digitaalloogikas.[5]

Probleemid[muuda | redigeeri lähteteksti]

Keeruline on konstrueerida tõelisi juhuarvu generaatoreid. Üldjuhul riistvaralised generaatorid hakkavad teatud aja möödudes väljastama aina väiksema juhuslikkusega numbreid. Selleks on enamikel juhuarvu generaatoritel ehitatud sisse teatud testmehhanismid või kontrollib juhuslikkust tarkvara. RFC 4086 ja FIPS 140-2 kirjeldavad vastavaid teste.

Juhuarvu generaatorite võrdlustabel[muuda | redigeeri lähteteksti]

Tootja Mudel Protsess Liides OS Hind Läbilaskvus
Simtec Electronics Entropy Key müra USB Windows/Linux/BSD £36 32 kbit/s[6]
ID Quantique SA Quantis-USB kvantoptika USB Windows/Linux €990 4 Mbit/s[7]
ID Quantique SA Quantis-PCI-4 kvantoptika PCI Windows/Linux €2230 16 Mbit/s[7]
Protego SG100 kvantmehh. SERIAL Windows/Linux/Solaris €249 128 Kbit/s[8]
Protego SG100-EVO kvantmehh. USB Windows/Linux/Solaris 128 Kbit/s[9]
Comscire R2000KU soojusmüra USB Windows US$895 2 Mbit/s[10]
LETech GRANG-PCIC-8CH soojusmüra PCI Linux/Windows 50 Mbit/s[11]
LETech GRANG-Server soojusmüra 5 x Gb Ethernet pordid Linux/Windows 150 Mbit/s[11]
LETech GRANG-24CH soojusmüra PCI Linux/Windows 550 Mbits/s [11]


Viited[muuda | redigeeri lähteteksti]

  1. Cryptanalytic Attacks on Pseudorandom Number Generators, 27. nov 2011
  2. "IDquantique"., 27. nov. 2011
  3. "Nuclear Decay random number generator"., 27. nov. 2011
  4. "Random numbers from WiFi background noise"., 27. nov. 2011
  5. "Entropy Key uses John von Neumann algorithm to remove bias"., 27. nov. 2011
  6. "Tollef"., 27. nov. 2011
  7. 7,0 7,1 "Product overview"., 27. nov. 2011
  8. "Product overview"., 27. nov. 2011
  9. "Product overview"., 27. nov. 2011
  10. "Details"., 27. nov. 2011
  11. 11,0 11,1 11,2 "LETech"., 27. nov. 2011