481 / 691RNG

Random Number Generator

Gerador de números aleatórios

Um RNG integra o caminho entre incerteza e valores utilizáveis. Chaves secretas dependem de imprevisibilidade, inicialização e tratamento de falhas, não apenas da aparência aleatória da saída.

Um Random Number Generator fornece valores para uma finalidade. O uso criptográfico exige que um adversário não consiga prevê-los na prática sob as hipóteses indicadas. Fonte física de entropia, gerador determinístico e interface do sistema operacional são camadas distintas; o nome RNG não define suas propriedades.

A fonte de entropia fornece incerteza, o condicionamento prepara a entrada e um gerador determinístico produz a saída a partir do estado interno. NIST SP 800-90C combina mecanismos de 90A com fontes conforme 90B. Assim, nem todo bit retornado corresponde a uma nova medição física. [NIST SP 800-90C — RBG constructions]

Uma sequência pode passar em testes estatísticos e ainda ser conhecida pelo atacante. RFC 4086 alerta sobre relógios, números de série e valores iniciais previsíveis. Um gerador de simulação não é adequado à criptografia apenas pelo nome ou pela distribuição dos resultados. [RFC 4086 — Unpredictability and weak inputs]

NIST SP 800-90B avalia a fonte de ruído, o condicionamento e testes de integridade na inicialização e durante a operação. Esses testes detectam defeitos da fonte; não demonstram a segurança da carteira inteira. O projeto deve tratar falhas: uma saída defeituosa não pode ser silenciosamente apresentada como aleatoriedade validada. [NIST SP 800-90B — Source health and failure handling]

Linux getrandom() normalmente espera a inicialização da fonte urandom. Com GRND_NONBLOCK, pode retornar EAGAIN em vez de esperar. Após a inicialização, pedidos urandom de até 256 bytes garantem leitura completa sem interrupção por sinal; pedidos maiores não têm essa garantia. A aplicação deve respeitar o estado retornado. [Linux getrandom(2) — Initialization and return behavior]

Web Crypto getRandomValues() preenche arrays de inteiros compatíveis com valores criptograficamente fortes; acima de 65536 bytes, lança QuotaExceededError. A especificação recomenda generateKey() para criar chaves. A existência da interface não comprova a confiabilidade da página nem protege segredos do código que pode acessá-los. [W3C Web Crypto — getRandomValues and key generation]

BIP39 primeiro codifica de 128 a 256 bits de entropia inicial com um checksum derivado. Depois deriva um seed de 512 bits das palavras e de uma passphrase opcional usando PBKDF2. Nem o checksum nem uma saída maior corrigem uma entrada previsível; escolher palavras não substitui a geração aleatória. [BIP39 — Initial entropy and mnemonic-to-seed derivation]

Um gerador determinístico exige estado protegido e inicialização correta. NIST SP 800-90A distingue instanciação, geração, reseeding e remoção da instância. Recuperar a segurança após revelar o estado exige um mecanismo apropriado e entropia nova desconhecida do atacante; outra chamada, por si só, não garante a recuperação. [NIST SP 800-90A Rev. 1 — DRBG lifecycle and reseeding]

A revisão deve identificar fonte, algoritmo, inicialização, interface e comportamento em caso de erro na versão avaliada. Rótulos como hardware ou offline não comprovam essa cadeia. Os padrões citados explicam requisitos de geração; não certificam uma carteira específica nem impedem um vazamento posterior de seu backup. [NIST SP 800-90C — RBG constructions] [RFC 4086 — Unpredictability and weak inputs]

Para ter uma visão mais completa, leia este verbete junto com Cryptographic Entropy, CSPRNG, Seed Generation, Brute Force Search Space. Também há referências a este verbete em CSPRNG, Deterministic RNG, True Random Number Generator, Seed Generation.

DOC · 001NIST SP 800-90C — RBG constructionsEspecificação ↗DOC · 002RFC 4086 — Unpredictability and weak inputsEspecificação ↗DOC · 003NIST SP 800-90B — Source health and failure handlingEspecificação ↗DOC · 004Linux getrandom(2) — Initialization and return behaviorDocumentação ↗DOC · 005W3C Web Crypto — getRandomValues and key generationEspecificação ↗DOC · 006BIP39 — Initial entropy and mnemonic-to-seed derivationEspecificação ↗DOC · 007NIST SP 800-90A Rev. 1 — DRBG lifecycle and reseedingEspecificação ↗
Fontes em primeiro lugar · Não é recomendação de investimento