Random Number Generator dodává hodnoty pro zvolený účel. Kryptografické použití vyžaduje, aby je protivník nedokázal prakticky předvídat za daných předpokladů. Fyzický zdroj entropie, deterministický generátor a rozhraní operačního systému jsou různé vrstvy; označení RNG samo jejich vlastnosti neurčuje.
Zdroj entropie poskytuje nejistotu, její úprava připravuje vstup a deterministický generátor vytváří výstup z vnitřního stavu. NIST SP 800-90C spojuje mechanismy z části 90A se zdroji podle 90B. Ne každý vrácený bit proto odpovídá novému fyzickému měření. [NIST SP 800-90C — RBG constructions]
Posloupnost může projít statistickými testy a přesto být útočníkovi známá. RFC 4086 varuje před časem, sériovými čísly a předvídatelnými počátečními hodnotami. Generátor pro simulaci proto nelze považovat za kryptograficky vhodný pouze podle názvu nebo rozložení výsledků. [RFC 4086 — Unpredictability and weak inputs]
NIST SP 800-90B posuzuje šumový zdroj, úpravu výstupu a zdravotní testy při startu i za provozu. Tyto testy hledají závady zdroje, nedokazují bezpečnost celé peněženky. Zpracování poruchy patří do návrhu; výstup z vadné cesty se nemá tiše vydávat za ověřenou náhodnost. [NIST SP 800-90B — Source health and failure handling]
Linux getrandom() standardně čeká na inicializaci zdroje urandom. S GRND_NONBLOCK může místo čekání vrátit EAGAIN. Po inicializaci má požadavek nejvýše 256 bajtů ze zdroje urandom záruku úplného čtení bez přerušení signálem; větší požadavky tuto záruku nemají. Aplikace musí respektovat návratový stav. [Linux getrandom(2) — Initialization and return behavior]
Web Crypto getRandomValues() plní podporované celočíselné pole kryptograficky silnými hodnotami; při velikosti nad 65536 bajtů vyvolá QuotaExceededError. Specifikace pro vytváření klíčů doporučuje generateKey(). Existence tohoto rozhraní neověřuje důvěryhodnost stránky ani nechrání tajemství před kódem, který k němu má přístup. [W3C Web Crypto — getRandomValues and key generation]
BIP39 nejprve kóduje 128 až 256 bitů počáteční entropie s odvozeným kontrolním součtem. Teprve ze slov a případné passphrase odvozuje pomocí PBKDF2 512bitový seed. Kontrolní součet ani delší odvozený výstup neopraví předvídatelný vstup; slova si nelze vybírat jako náhradu náhodného generování. [BIP39 — Initial entropy and mnemonic-to-seed derivation]
Deterministický generátor potřebuje chráněný stav a správnou inicializaci. NIST SP 800-90A rozlišuje vytvoření instance, generování, nové zasetí a zrušení instance. Obnova po prozrazení stavu vyžaduje odpovídající mechanismus a čerstvou entropii neznámou útočníkovi; pouhé další volání není obecnou zárukou zotavení. [NIST SP 800-90A Rev. 1 — DRBG lifecycle and reseeding]
Kontrola má popsat konkrétní zdroj, algoritmus, inicializaci, rozhraní a chování při chybě v posuzované verzi. Označení hardwarový či offline samo tento řetězec nedokládá. Zdrojové standardy vysvětlují požadavky na generování; nejsou certifikátem konkrétní peněženky ani ochranou proti následnému úniku její zálohy. [NIST SP 800-90C — RBG constructions] [RFC 4086 — Unpredictability and weak inputs]
Pro nejúplnější obraz čtěte toto heslo společně s Cryptographic Entropy, CSPRNG, Seed Generation, Brute Force Search Space. Opačným směrem na něj odkazují také CSPRNG, Deterministic RNG, True Random Number Generator, Seed Generation.