Deterministic RNG je generátor pseudonáhodných čísel: hodnoty počítá podle pevného postupu, místo aby pro každou znovu měřil náhodný fyzikální jev. Začíná vstupem zvaným seed a během práce si udržuje vnitřní stav, tedy údaje potřebné pro další výpočet. Při zopakování celého postupu se stejnými vstupy vzniknou stejné výsledky. To se hodí při testování. Bezpečný kryptografický generátor ale navíc potřebuje kvalitní návrh a dostatečnou entropii, nejistotu ve vstupu z pohledu útočníka.
Představte si, že výpočet pozastavíte a uložíte jeho paměť. Když jej obnovíte ve stejném bodě a předáte mu stejné další vstupy, může pokračovat stejně. NIST SP 800-90A popisuje takové generátory pod označením DRBG. Záleží na algoritmu, nastavení i pořadí požadavků. Doplnění čerstvé entropie, označované jako reseeding, stav změní. Proto samotný shodný seed nezaručuje shodný výstup různých programů. [1]
Náhodně vypadající čísla umí vytvořit i jednoduchý program pro simulace. To ještě nestačí k ochraně peněženky. RFC 4086 upozorňuje, že útočník může některé takové posloupnosti odhadnout, i když dobře procházejí statistickými testy. Kryptograficky silný generátor má zůstat prakticky nepředvídatelný i po odhalení části výstupu. Rozhoduje tedy konstrukce i utajení a kvalita počátečního materiálu, ne samotné slovo „deterministický“. [2]
Při hledání chyby pomůže, když program znovu projde přesně stejnou situací. Funkce libsodium randombytes_buf_deterministic() proto ze stejného seedu vrací stejnou posloupnost. Vývojář může očekávaný výsledek zveřejnit a ostatní si ho ověří. Právě proto však zveřejněný testovací seed nepatří do skutečné peněženky: stejné „tajemství“ by z něj dokázal vypočítat kdokoli. [3]
Podobnou opakovatelnost využívá BIP32 při odvozování klíčů; není to však totožný postup s běžným generováním náhodných dat. Z jednoho seedu vytváří rozvětvenou soustavu klíčů. Derivační cesta určuje, kterou větev peněženka použije. Se stejným seedem a cestou proto může znovu získat stejné klíče. Další odvozená adresa ale sama nepřidává novou nezávislou entropii k původnímu tajemství. [4]
U BIP39 jsou obnovovací slova, označovaná jako mnemonic, teprve součástí vstupu. Funkce PBKDF2 z nich spolu s passphrase, volitelným doplňujícím tajemstvím, vypočítá seed pro další odvozování. Jiná passphrase vede k jinému výsledku, i když slova zůstanou stejná. Pro návrat ke stejným klíčům proto potřebujete všechny původní vstupy i odpovídající způsob odvozování. Samotná shoda slov tuto podmínku neřeší. [5]
Digitální podpis prokazuje, že transakci schválil držitel příslušného tajného klíče. RFC 6979 popisuje, jak pomocnou hodnotu k pro podpis vypočítat z tohoto klíče a podepisované zprávy. V tomto kroku tak není nutné pokaždé získávat novou náhodnou hodnotu. Požadavek na kvalitní náhodnost při původním vytvoření klíče tím ale nezmizí. Správný podpisový postup neopraví klíč, který šel od začátku uhodnout. [6]
Obnovit stejné klíče pomocí BIP32 je žádoucí. Nechtěně opakovat hodnoty, které měly být nové, už ne. Snímek virtuálního stroje ukládá stav počítače včetně paměti. Jak upozorňuje libsodium, jeho obnovení může zopakovat i stav generátoru a jeho výstupy. Při kopírování prostředí tedy nestačí předpokládat, že každá spuštěná kopie automaticky začne vytvářet nezávislá tajemství. [3] [4]
Vývojář porovnává výsledek s testovacím vektorem, tedy známou dvojicí vstupu a očekávaného výstupu. Shoda ukazuje, že program daný příklad počítá správně. Neprokazuje však, že skutečné zařízení získává kvalitní entropii. NIST SP 800-90A řeší mechanismus i požadavky na jeho vstupy odděleně. Při hodnocení proto záleží také na verzi programu, jeho nastavení a doplňování entropie; nálepka Deterministic RNG sama o bezpečnosti peněženky nerozhodne. [1]
Pro nejúplnější obraz čtěte toto heslo společně s CSPRNG, Random Number Generator, HD Wallet, Seed Generation. Opačným směrem na něj odkazují také CSPRNG, COLDCARD RNG Incident (2026).