484 / 691TRNG

True Random Number Generator

Fyzický generátor náhodných čísel

TRNG využívá fyzický proces jako zdroj nejistoty. Označení „true“ však nenahrazuje měření entropie, kontrolu poruch ani ověření cesty, kterou se výstup dostává do peněženky.

True Random Number Generator získává náhodnost z fyzického zdroje, nikoli pouze rozvíjením uloženého stavu. Šumový zdroj, jeho vzorkování, úprava dat a aplikační rozhraní jsou odlišné části. Samotný hardwarový původ nezaručuje rovnoměrné ani nezávislé výstupní bity.

NIST SP 800-90B hodnotí zdroj entropie tvořený šumovým zdrojem, případnou úpravou a zdravotními testy. Posuzuje se doložená nejistota ve vzorcích, nikoli jen počet vyrobených bajtů. Pojmenování fyzického jevu samo tento odhad neposkytuje. [NIST SP 800-90B — Entropy sources, conditioning and health tests]

Conditioning může omezit zkreslení a soustředit dostupnou entropii do kratšího výstupu. NIST SP 800-90B přitom omezuje deklarovanou výstupní entropii podle vstupu a použitého mechanismu. Náhodně vypadající hash sám nedokazuje nepředvídatelnost původních vzorků. [NIST SP 800-90B — Entropy sources, conditioning and health tests]

Repetition Count Test a Adaptive Proportion Test v NIST SP 800-90B sledují opakování a neobvyklé četnosti vzorků. Nejde o univerzální důkaz bezpečnosti. Při zjištěné trvalé poruše zdroj nesmí pokračovat ve vydávání výstupů jako obvykle. [NIST SP 800-90B — Entropy sources, conditioning and health tests]

NIST SP 800-90B spojuje hodnocení s technickými a provozními podmínkami konkrétního zdroje. Restartové testy doplňují dlouhý souvislý záznam. Úspěch jednoho zachyceného vzorku nelze automaticky rozšířit na všechny kusy zařízení, prostředí či změny firmwaru. [NIST SP 800-90B — Entropy sources, conditioning and health tests]

Intel v popisu svého DRNG rozlišuje RDRAND, který čte výstup deterministického generátoru, a RDSEED, který poskytuje hodnoty z úpravy entropie pro inicializaci. Hardwarová instrukce proto nemusí znamenat přímé čtení neupraveného fyzického šumu. [Intel DRNG guide — RDRAND, RDSEED and CF]

Intel u RDRAND i RDSEED vyžaduje kontrolu CF: 1 označuje dostupný výsledek, 0 jeho nedostupnost. Číselná nula v cílovém registru sama není kontrolou úspěchu. Podpora instrukce a úspěch jednotlivého volání jsou dvě různé věci. [Intel DRNG guide — RDRAND, RDSEED and CF]

Dokumentace Linux hw_random upozorňuje, že data z /dev/hwrng nejsou tímto znakovým rozhraním ověřena testy kvality a vadný hardware může vracet nesmyslné údaje. Čtení zařízení proto samo neprokazuje kvalitu entropie ani bezpečnou integraci v aplikaci. [Linux kernel — Hardware random number generator interface]

NIST SP 800-90C skládá zdroje entropie s mechanismy generování do celých konstrukcí. U peněženky je proto nutné doložit konkrétní součást, verzi, testy, chybové stavy a další zpracování. Certifikace zdroje sama není posouzením celé peněženky ani ochranou pozdější zálohy. [NIST SP 800-90C — Complete RBG constructions]

Pro nejúplnější obraz čtěte toto heslo společně s Cryptographic Entropy, Random Number Generator, CSPRNG, Entropy Mixing. Opačným směrem na něj odkazují také Entropy Mixing.

DOC · 001NIST SP 800-90B — Entropy sources, conditioning and health testsSpecifikace ↗DOC · 002Intel DRNG guide — RDRAND, RDSEED and CFDokumentace ↗DOC · 003Linux kernel — Hardware random number generator interfaceDokumentace ↗DOC · 004NIST SP 800-90C — Complete RBG constructionsSpecifikace ↗
Primární zdroje · Nejde o investiční doporučení