13Jul

Jak počítače generují náhodná čísla

click fraud protection
Počítače

kostky-náhodné čísla

generují náhodné číslo pro vše od kryptografie až po videohry a hazardní hry. Existují dvě kategorie náhodných čísel - "pravdivá" náhodná čísla a čísla pseudonáhodných čísel - a rozdíl je důležitý pro zabezpečení šifrovacích systémů.

Počítače mohou vytvářet opravdu náhodné číslice tím, že pozorují některé vnější data, jako jsou pohyby myší nebo hluk ventilátorů, což není předvídatelné a vytváří z nich data. Toto je známé jako entropie. Jinak generují čísla "pseudorandom" pomocí algoritmu, takže výsledky se objeví náhodně, i když nejsou.

Toto téma se v poslední době stalo spornější a mnoho lidí se ptá, zda je vestavěný integrovaný čip generátoru náhodných čísel Intel důvěryhodný.Chcete-li pochopit, proč to nemusí být důvěryhodné, musíte pochopit, jakým způsobem jsou náhodná čísla původně generována a na co se používají.

Jaká jsou náhodná čísla používaná pro

Náhodné číslice byly použity po mnoho tisíc let. Ať už jde o minci nebo o kolečkách, cílem je nechat konečný výsledek až náhodnou náhodou. Generátory náhodných čísel v počítači jsou podobné - jde o pokus dosáhnout nepředvídatelného a náhodného výsledku.

instagram viewer

Generátory náhodných čísel jsou užitečné pro mnoho různých účelů.Kromě zjevných aplikací, jako je generování náhodných čísel pro účely hazardních her nebo vytváření nepředvídatelných výsledků v počítačové hře, je pro kryptografii důležitá náhoda. Kryptografie

vyžaduje čísla, která útočníci nemohou odhadnout. Nemůžeme jen používat stejná čísla znovu a znovu. Chceme generovat tato čísla velmi nepředvídatelným způsobem, takže útočníci je nemohou odhadnout. Tato náhodná čísla jsou nezbytná pro bezpečné šifrování, ať už šifrujete své vlastní soubory, nebo právě používáte web HTTPS na Internetu.

video-poker-hazardní hry-náhodnost

Pravá náhodná čísla

Možná se divíte, jak může počítač skutečně vygenerovat náhodné číslo. Odkud pochází tato "náhodnost".Pokud je to jen počítačový kód, není možné, aby čísla, která počítač generuje, byly předvídatelné?

Obecně seskupujeme náhodná čísla, které počítače vygenerují do dvou typů, v závislosti na tom, jak jsou generovány: "Pravda" náhodná čísla a pseudonáhodná čísla.

Chcete-li vygenerovat "pravé" náhodné číslo, počítač měří nějaký typ fyzického jevu, který se děje mimo počítač.Například počítač mohl měřit radioaktivní rozklad atomu. Podle kvantové teorie neexistuje způsob, jak vědět jistě, kdy nastane radioaktivní rozpad, takže je to v podstatě "čistá náhodnost" z vesmíru.Útočník by nebyl schopen předpovědět, kdy nastane radioaktivní rozpad, a proto by neznal náhodnou hodnotu.

Pro každodenní příklad by se počítač mohl spoléhat na atmosférický šum nebo jednoduše použít přesný čas, kdy stisknete klávesy na klávesnici jako zdroj nepředvídatelných dat nebo entropii. Například váš počítač si může všimnout, že jste stiskli klávesu přesně po 0.23423523 sekundách po 2. hod. Uchopte dostatek konkrétních časů spojených s těmito stisknutími tlačítek a budete mít zdroj entropie, který můžete použít k vytvoření "pravdivého" náhodnéhočíslo. Nejste předvídatelný stroj, takže útočník nemůže odhadnout přesný okamžik, kdy stisknete tyto klávesy. Náhodné zařízení /dev/ v systému Linux, které generuje náhodná čísla, "blokuje" a nevrací výsledek, dokud nenajde dostatek entropie k návratu skutečně náhodného čísla.

linux-generate-random-data

Čísla pseudonáhodných čísel

Pseudonáhodná čísla jsou alternativou k "pravdivým" náhodným číslům. Počítač mohl použít hodnotu počátku a algoritmus pro generování čísel, která se zdají být náhodná, ale jsou ve skutečnosti předvídatelná.Počítač neshromažďuje žádná náhodná data z prostředí.

To není nutně špatná věc v každé situaci. Pokud například hrajete videohru, nezáleží na tom, zda se události, které se vyskytují v této hře, skryjí "pravdivými" náhodnými čísly nebo pseudonáhodnými čísly. Na druhou stranu, pokud používáte šifrování, nechcete používat pseudonáhodná čísla, která by útočník mohl odhadnout.

Například řekněme, že útočník zná algoritmus a hodnotu počátečního počtu, který používá generátor pseudonáhodných čísel. A řekněme, že šifrovací algoritmus získá z tohoto algoritmu číslo pseudonáhodného čísla a používá ho k vytvoření šifrovacího klíče bez přidání jakékoliv další náhodnosti. Pokud by útočník věděl dost, mohli by pracovat zpět a určit pseudonáhodné číslo, které šifrovací algoritmus musí v takovém případě zvolit, čímž překročí šifrování.

pseudonáhodná čísla

NSA a generátor náhodných čísel hardwaru Intel

Pro usnadnění vývojářů a pomoc při generování zabezpečených náhodných čísel obsahuje čipy Intel hardwarové generátory náhodných čísel známé jako RdRand. Tento čip používá zdroj entropie na procesoru a poskytuje softwarová čísla, když je požaduje software.

Problém je, že generátor náhodných čísel je v podstatě černá skříňka a nevíme, co se děje uvnitř.Pokud by RdRand obsahoval backdoor NSA, vláda by mohla přerušit šifrovací klíče, které byly generovány pouze s údaji dodanými tímto generátorem náhodných čísel.

To je vážné znepokojení.V prosinci roku 2013 vývojáři FreeBSD odstranili podporu pro použití RdRand přímo jako zdroj náhodnosti, tvrdí, že nemohou důvěřovat.[Zdroj] Výstup zařízení RdRand by byl přiváděn do jiného algoritmu, který přidá další entropii, což by zajistilo, že jakékoli zadní vrátka v generátoru náhodných čísel by nezáleželo. Linux již pracoval tímto způsobem, dále randomizoval náhodná data pocházející z RdRandu, takže by to nebylo možné předvídat, i když tam byla backdoor.[Zdroj] V nedávné AMA( "Ask Me Anything") na Redditu nebyl generální ředitel společnosti Intel Brian Krzanich zodpovědný za otázky týkající se těchto obav.[Source]

Samozřejmě, že to pravděpodobně není jen problém s čipy Intel. Vývojáři FreeBSDu také volali Via chipsy. Tato kontroverze ukazuje, proč je generování náhodných čísel, které jsou skutečně náhodné a nejsou předvídatelné, tak důležité.

intel

Pro generování "pravdivých" náhodných čísel generátory náhodných čísel shromáždí "entropii" nebo zdánlivě náhodná data z fyzického světa kolem sebe. Pro náhodná čísla, která nemají opravdu , musí být náhodná, mohou používat pouze algoritmus a hodnotu počátku.

Image Credit: rekre89 na Flickr, Lisa Brewster na Flickr, Ryan Somma na Flickr, huangjiahui na Flickr