13Jul
vytvárajú náhodné číslo pre všetko od kryptografie až po videohry a hazardné hry. Existujú dve kategórie náhodných čísel - "pravé" náhodné čísla a čísla pseudonáhodných čísel - a rozdiel je dôležitý pre bezpečnosť šifrovacích systémov.
Počítače môžu generovať skutočne náhodné čísla pozorovaním niektorých externých údajov, ako sú napríklad pohyby myši alebo šum fanúšikov, čo nie je predvídateľné a vytvárať údaje z neho. Toto je známe ako entropia. Inokedy generujú čísla "pseudorandom" pomocou algoritmu, takže výsledky sa objavujú náhodne, hoci nie.
Táto téma sa v poslednej dobe stala kontroverznejšou a mnohí ľudia sa pýtali na to, či je vstavaný čip generátora integrovaného hardvéru Intel dôveryhodný.Ak chcete pochopiť, prečo to nemusí byť dôveryhodné, musíte pochopiť, ako sa na prvom mieste generujú náhodné čísla a na čo sa používajú.
Čo sú náhodné čísla používané pre
Náhodné čísla sa používajú už mnoho tisíc rokov. Bez ohľadu na to, či ide o prehratie mince alebo pohybu valcov, cieľom je ponechať konečný výsledok až po náhodnú náhodu. Generátory náhodných čísel v počítači sú podobné - ide o pokus o dosiahnutie nepredvídateľného a náhodného výsledku.
Generátory náhodných čísel sú užitočné na rôzne účely. Okrem zjavných aplikácií, ako je generovanie náhodných čísel na účely hazardných hier alebo vytváranie nepredvídateľných výsledkov v počítačovej hre, je náhodná otázka dôležitá pre kryptografiu. Kryptografia
vyžaduje čísla, ktoré útočníci nemôžu odhadnúť.Nemôžeme jednoducho používať rovnaké čísla znova a znova. Chceme generovať tieto čísla veľmi nepredvídateľným spôsobom, takže útočníci ich nemôžu uhádnuť.Tieto náhodné čísla sú dôležité pre bezpečné šifrovanie, či už šifrujete svoje vlastné súbory, alebo len pomocou HTTPS webovej stránky na internete.
Skutočné náhodné čísla
Možno sa zaujímate, ako môže počítač skutočne generovať náhodné číslo. Odkiaľ pochádza táto "náhodnosť".Ak je to len kus počítačového kódu, nie je možné, že čísla, ktoré generuje počítač, by mohli byť predvídateľné?
Zvyčajne zoskupujeme náhodné čísla, ktoré počítače generujú do dvoch typov, v závislosti od toho, ako sú generované: "Pravé" náhodné čísla a pseudonáhodné čísla.
Ak chcete vygenerovať "pravé" náhodné číslo, počítač meria nejaký typ fyzického javu, ktorý sa deje mimo počítača. Napríklad počítač mohol merať rádioaktívny rozklad atómov. Podľa kvantovej teórie neexistuje žiadny spôsob, ako určiť, kedy nastane rádioaktívny rozpad, takže je to v podstate "čistá náhodnosť" z vesmíru.Útočník by nebol schopný predpovedať, kedy nastane rádioaktívny úpadok, takže by nevedeli náhodnú hodnotu.
Pri každodennom príklade by sa počítač mohol spoľahnúť na atmosférický šum alebo jednoducho použiť presný čas stlačenia klávesov na klávesnici ako zdroja nepredvídateľných údajov alebo entropie. Napríklad váš počítač si môže všimnúť, že ste stlačili kláves presne na 0.23423523 sekundy po 14.00 hod. Zachyťte dostatok konkrétnych časov spojených s týmito tlačidlami a budete mať zdroj entropie, ktorý môžete použiť na generovanie "pravdivého" náhodnéhočíslo. Nie ste predvídateľný stroj, takže útočník nemôže odhadnúť presný okamih, kedy stlačíte tieto klávesy. Náhodné zariadenie /dev/ v systéme Linux, ktoré generuje náhodné čísla, "blokuje" a nevráti výsledok, kým nezhromaždí dostatok entropie na vrátenie skutočne náhodného čísla. Pseudonáhodné čísla
Čísla pseudonáhodných čísel sú alternatívou k "pravdivým" náhodným číslam. Počítač môže používať hodnotu osiva a algoritmus na generovanie čísel, ktoré sa javia ako náhodné, ale predvídateľné.Počítač nezhromažďuje žiadne náhodné údaje z prostredia.
To nie je vždy zlá vec v každej situácii. Napríklad, ak hráte videohru, nezáleží na tom, či udalosti, ktoré sa vyskytujú v tejto hre, sú skryté "pravými" náhodnými číslami alebo pseudonáhodnými číslami. Na druhej strane, ak používate šifrovanie, nechcete používať pseudonáhodné čísla, ktoré by útočník mohol odhadnúť.
Povedzme napríklad, že útočník pozná algoritmus a hodnotu začiatku, ktorú používa generátor pseudonáhodných čísel. Povedzme, že šifrovací algoritmus získa od tohto algoritmu číslo pseudonáhodného čísla a používa ho na generovanie šifrovacieho kľúča bez pridania akýchkoľvek ďalších náhodností.Ak má útočník dostatok informácií, môže pracovať späť a určiť číslo pseudonáhodného čísla, ktoré musí šifrovací algoritmus v takomto prípade vybrať, čím porušuje šifrovanie.
NSA a generátor náhodných čísel hardvéru Intel
Aby sa vývojári uľahčili a pomohli generovať bezpečné náhodné čísla, čipy Intel obsahujú generátor náhodných čísel známy ako RdRand. Tento čip využíva zdroj entropie na procesore a poskytuje softvérové náhodné čísla, keď ich softvér požaduje.
Problém je v tom, že generátor náhodných čísel je v podstate čierna skrinka a nevieme, čo sa deje vo vnútri. Ak by RdRand obsahoval backdoor NSA, vláda by mohla zlomiť šifrovacie kľúče, ktoré boli vytvorené iba s údajmi dodanými týmto generátorom náhodných čísel.
To je vážny problém. V decembri 2013 vývojári FreeBSD odstránili podporu pri používaní RdRand priamo ako zdroj náhodnosti, a povedali, že nemôžu tomu dôverovať.[Zdroj] Výstup zariadenia RdRand by bol privádzaný do iného algoritmu, ktorý pridáva dodatočnú entropiu, čím sa zabezpečí, že akékoľvek zadné vrátky v generátore náhodných čísel by nezáležalo. Linux už pracoval takýmto spôsobom, ďalšiu randomizáciu náhodných údajov prichádzajúcich z RdRand, takže by nebolo predvídateľné, aj keď tam bola backdoor.[Zdroj] V nedávnom AMA( "Opýtajte sa čokoľvek") na spoločnosť Reddit generálny riaditeľ spoločnosti Intel Brian Krzanich neodpovedal na otázky týkajúce sa týchto obáv.[Source]
Samozrejme, to pravdepodobne nie je len problém s čipmi Intel. Vývojári vo FreeBSD volali Via svoje čipy aj podľa názvu. Táto kontroverzia ukazuje, prečo je generovanie náhodných čísel, ktoré sú naozaj náhodné a nie je predvídateľné, tak dôležité.
Aby sa generovali "pravé" náhodné čísla, generátory náhodných čísel zhromažďujú "entropiu" alebo zdanlivo náhodné údaje z fyzického sveta okolo nich. Pre náhodné čísla, ktoré nemajú naozaj musia byť náhodné, môžu použiť len algoritmus a hodnotu začiatku.
Image Credit: rekre89 na Flickr, Lisa Brewster na Flickr, Ryan Somma na Flickr, huangjiahui na Flickr