Ako počítače generujú náhodné čísla

Obsah:

Ako počítače generujú náhodné čísla
Ako počítače generujú náhodné čísla

Video: Ako počítače generujú náhodné čísla

Video: Ako počítače generujú náhodné čísla
Video: How to install and set up Chromecast with Google TV - YouTube 2024, Apríl
Anonim
Počítače generujú 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 generujú 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 vytvárať skutočne náhodné čísla pozorovaním niektorých externých údajov, ako sú 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 sa používajú náhodné čísla

Náhodné čísla sa používajú mnoho tisíc rokov. Bez ohľadu na to, či ide o prehratie mince alebo o kocky, 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é pre mnoho rôznych účelov. 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 webovej stránky HTTPS na internete.

Image
Image

Pravé náhodné čísla

Možno vás zaujíma, ako môže počítač skutočne vygenerovať 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é?

Vo všeobecnosti zoskupujeme náhodné čísla počítačov generovaných 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 odohráva 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 2. hodine. Zachyťte dostatok konkrétnych časov spojených s týmito tlačidlami a budete mať zdroj entropie, ktorý môžete použiť na vytvorenie "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. Zariadenie / dev / random 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.

Image
Image

Pseudonáhodné čísla

Pseudonáhodné čísla 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 nevyhnutne 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 spoločnosti Intel

S cieľom uľahčiť vývojárom a pomôcť generovať zabezpečené náhodné čísla obsahujú čipy Intel hardvérový 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, že generátor náhodných čísel je v podstate čierny box a nevieme, čo sa v ňom deje.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. [Zdroj]

Samozrejme, pravdepodobne to 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é.

Image
Image

Ak chcete generovať "pravé" náhodné čísla, generátory náhodných čísel zhromažďujú "entropiu" alebo zdanlivo náhodné dáta z fyzického sveta okolo nich. Pre náhodné čísla, ktoré nie naozaj musia byť náhodné, môžu použiť len algoritmus a hodnotu osiva.

Odporúča: