Random Number Generator постачає значення для певної мети. Криптографічне використання вимагає, щоб супротивник практично не міг їх передбачити за зазначених припущень. Фізичне джерело ентропії, детермінований генератор та інтерфейс операційної системи є різними рівнями; сама назва RNG не визначає їхніх властивостей.
Джерело ентропії постачає невизначеність, обробка готує вхідні дані, а детермінований генератор формує вихід із внутрішнього стану. NIST SP 800-90C поєднує механізми з 90A із джерелами за 90B. Тому кожен отриманий біт не обов’язково відповідає новому фізичному вимірюванню. [NIST SP 800-90C — RBG constructions]
Послідовність може пройти статистичні тести й водночас бути відомою нападнику. RFC 4086 застерігає щодо годинників, серійних номерів і передбачуваних початкових значень. Назва або розподіл результатів генератора для моделювання самі не роблять його придатним для криптографії. [RFC 4086 — Unpredictability and weak inputs]
NIST SP 800-90B оцінює джерело шуму, обробку та тести працездатності під час запуску й роботи. Вони виявляють несправності джерела, а не доводять безпеку всього гаманця. Обробка відмов має бути закладена в проєкт: вихід несправного тракту не можна мовчки видавати за перевірену випадковість. [NIST SP 800-90B — Source health and failure handling]
Linux getrandom() зазвичай чекає на ініціалізацію джерела urandom. З GRND_NONBLOCK замість очікування може повернути EAGAIN. Після ініціалізації запити urandom до 256 байтів гарантують повне читання без переривання сигналом; більші запити такої гарантії не мають. Застосунок має враховувати повернений статус. [Linux getrandom(2) — Initialization and return behavior]
Web Crypto getRandomValues() заповнює підтримувані цілочисельні масиви криптографічно сильними значеннями; понад 65536 байтів спричиняють QuotaExceededError. Для створення ключів специфікація рекомендує generateKey(). Наявність інтерфейсу не підтверджує надійність сторінки й не захищає секрети від коду, який має до них доступ. [W3C Web Crypto — getRandomValues and key generation]
BIP39 спершу кодує від 128 до 256 бітів початкової ентропії з похідною контрольною сумою. Потім зі слів та необов’язкової passphrase через PBKDF2 виводить 512-бітовий seed. Ні контрольна сума, ні довший результат не виправляють передбачуваного входу; вибір слів вручну не замінює випадкового генерування. [BIP39 — Initial entropy and mnemonic-to-seed derivation]
Детермінований генератор потребує захищеного стану й правильної ініціалізації. NIST SP 800-90A розрізняє створення екземпляра, генерування, повторне засівання та знищення екземпляра. Відновлення після розкриття стану вимагає належного механізму та свіжої ентропії, невідомої нападнику; сам наступний виклик загалом цього не гарантує. [NIST SP 800-90A Rev. 1 — DRBG lifecycle and reseeding]
Перевірка має визначити джерело, алгоритм, ініціалізацію, інтерфейс та поведінку при помилці в оцінюваній версії. Позначки апаратний чи офлайн самі не підтверджують цей ланцюг. Наведені стандарти пояснюють вимоги до генерування; вони не сертифікують конкретний гаманець і не запобігають подальшому витоку його резервної копії. [NIST SP 800-90C — RBG constructions] [RFC 4086 — Unpredictability and weak inputs]
Для повної картини прочитайте також Cryptographic Entropy, CSPRNG, Seed Generation, Brute Force Search Space. На цю статтю також посилаються CSPRNG, Deterministic RNG, True Random Number Generator, Seed Generation.