Riistvaraline juhuarvugeneraator

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 kirjutuspeade liikumine jms. Sellised protsessid on teoreetiliselt ettearvamatud ja nende abil saadud juhuarve võib lugeda tõeliselt juhuslikeks – vastupidi pseudojuhuarvudele, mis saadakse etteantavale võtmele/numbrijadale arvutuslikke algoritme rakendades. Pseudojuhuarvud on loomupäraselt ettearvatavad ning ainult näiliselt juhuslikud – nende vastu on tehtud mitmeid rünnakuid[1].

SSL kiirendi, mis kasutab riistvaralist juhuarvugeneraatorit krüptovõtmete loomiseks
Igaüks, kes usub juhuslike arvude loomise aritmeetilisi 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

 

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, mille salastatusel ja ettearvamatusel põhineb krüptitud andmete turvalisus ja terviklikkus.

Tööpõhimõtted muuda

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 igale süsteemile 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]
  • Geigeri loenduri tuvastatud tuumalagunemine [3]

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

Kellanäitude nihe muuda

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 kristallostsillaatorit, 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 kristallostsillaatorid 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 kristallostsillaatorite 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

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

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

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õrdlus muuda

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 895 $ 2 Mbit/s[10]
LETech GRANG-PCIC-8CH soojusmüra PCI Linux/Windows 50 Mbit/s[11]
LETech GRANG-Server soojusmüra 5 × GB Etherneti pordid Linux/Windows 150 Mbit/s[11]
LETech GRANG-24CH soojusmüra PCI Linux/Windows 550 Mbit/s [11]

Viited muuda

  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.11.2011
  5. "Entropy Key uses John von Neumann algorithm to remove bias"., 27.11.2011
  6. "Tollef". Originaali arhiivikoopia seisuga 15. august 2011. Vaadatud 26. novembril 2011., 27.11.2011
  7. 7,0 7,1 "Product overview"., 27.11.2011
  8. "Product overview". Originaali arhiivikoopia seisuga 1. jaanuar 2012. Vaadatud 26. novembril 2011., 27.11.2011
  9. "Product overview". Originaali arhiivikoopia seisuga 17. jaanuar 2012. Vaadatud 26. novembril 2011., 27.11.2011
  10. "Details". Originaali arhiivikoopia seisuga 25. november 2011. Vaadatud 26. novembril 2011., 27.11.2011
  11. 11,0 11,1 11,2 "LETech". Originaali arhiivikoopia seisuga 12. november 2011. Vaadatud 26. novembril 2011., 27.11.2011