Riistvaraline juhuarvugeneraator

Allikas: Vikipeedia
(Ümber suunatud leheküljelt Riistvaraline juhuarvu generaator)
SSL kiirendi, mis kasutab riistvaralist juhuarvugeneraatorit krüptovõtmete loomiseks.

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

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

John von Neumann, 1951

Et riistvaralised juhuarvugeneraatorid on tavaliselt üpris aeglased, 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.

Juhuarvugeneraatoreid on võimalik luua ka lähtudes makroskoopilistest protsessidest nagu täringu- või mündivise, ruletiratas ning loteriimasinad. Ettearvamatust nendes protsessides on võimalik põhjendada kaoseteooriaga 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 ka asümmeetrilises krüptograafias genereerimaks võtmeid, millede salastatusel ja ettearvamatusel põhineb krüptitud andmete turvalisus ja terviklikkus.

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

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

  • Footonite – valgusosakeste – saatmine poollä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 ja muundatakse digitaalseks.

Kellanäitude nihe[muuda | redigeeri lähteteksti]

Lisaks eespool mainitud allikaile on juhuarvugeneraatorit võimalik ehitada lähtudes kellanäitude nihkest. Kellanäitude nihe viitab ilmingule, kus kahe võrreldava kella näidud ei muutu täpselt sama kiirusega. Seega mõne aja möödudes tekib nende kellade näitude vahel nihe. Juhuarvugeneraatoris kasutatakse kahte eraldi kristall-ostsillaatorit, mille võnkesagedused on erinevad. Näiteks üks ostsillaator võngub sekundi jooksul sada korda ja teine miljon korda. 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 variatsiooni 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-ostsillaatorite paar võib seega genereerida sada juhuslikku bitti sekundis. Kuna aga sellised süsteemid on tavaliselt ühele poole kallutatud ja genereerivad näiteks rohkem ühtesid kui nulle, siis dekorreleeritakse väljund ning sajast bitist saadakse mõned tõeliselt juhuslikud.

Muu[muuda | redigeeri lähteteksti]

Tarkvaraarendajad, kel pole "õigeid" juhuarvugeneraatoreid käepärast, proovivad juhuslikkust saavutada olemasolevate vahenditega, näiteks mõõtes klahvivajutuste ajavahesid ning siis lugedes vastavast tulemusest vähima biti. Juhuslikkust võivad aitavad tekitada ka Wi-Fi müra [4] ning kõvaketta lugemis- ja kirjutuspeade liikumine. Sellised meetodid on riskantsed, sest piisavalt kaval pahalane võib tulemust mõjutada.

Dekorrelatsioon[muuda | redigeeri lähteteksti]

Erinevate tööpõhimõtetega generaatorite 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".

Üks selliseid algoritme on John von Neumanni 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]

Töökindlaid juhuarvugeneraatoreid on keeruline konstrueerida. Üldjuhul hakkavad riistvaralised generaatorid teatud aja möödudes väljastama aina väiksema juhuslikkusega arve. Töökindluse tagamiseks on enamikul juhuarvugeneraatoritel ehitatud sisse teatud testmehhanismid või kontrollib juhuslikkust tarkvara. RFC 4086 ja FIPS 140-2 kirjeldavad vastavaid teste.

Juhuarvugeneraatorite 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 kvantmehaanika SERIAL Windows/Linux/Solaris €249 128 kbit/s[8]
Protego SG100-EVO kvantmehaanika 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 Etherneti pordid Linux/Windows 150 Mbit/s[11]
LETech GRANG-24CH soojusmüra PCI Linux/Windows 550 Mbit/s [11]


Viited[muuda | redigeeri lähteteksti]