Um CSPRNG é um gerador determinístico destinado à criptografia. Pseudoaleatório não significa fraco: importa a resistência a um adversário sob as hipóteses declaradas. Algoritmo, fonte de entropia e código consumidor devem ser avaliados separadamente.
RFC 4086 distingue sequências criptograficamente fortes de geradores comuns de simulação. Conhecer parte da saída não deve permitir adivinhar o resto. Testes estatísticos não bastam; uma seed previsível pode comprometer até uma saída aparentemente complexa. [RFC 4086 — Cryptographically strong sequences]
NIST SP 800-90A Rev. 1 especifica Hash_DRBG, HMAC_DRBG e CTR_DRBG. O rótulo CSPRNG não certifica qualquer implementação. É preciso identificar mecanismo, parâmetros e obtenção de entropia, não apenas o nome de uma função hash. [NIST SP 800-90A Rev. 1 — DRBG mechanisms and compromise resistance]
Backtracking resistance protege saídas anteriores após a exposição do estado atual. Prediction resistance trata das futuras; NIST SP 800-90A associa-a à incorporação eficaz de entropia nova. Uma propriedade não implica automaticamente a outra nem recuperação por mais uma chamada. [NIST SP 800-90A Rev. 1 — DRBG mechanisms and compromise resistance]
OpenSSL 3.5 documenta para RAND_bytes() e RAND_priv_bytes() 1 no sucesso, 0 em outra falha e -1 para método não suportado. A geração pode ser recusada quando a fonte de entropia falha. A aplicação deve verificar o resultado, não usar um buffer sem validação. [OpenSSL 3.5 — RAND_bytes return values and errors]
libsodium randombytes_buf_deterministic() produz a mesma sequência com a mesma seed, útil em testes. Restaurar uma máquina virtual de um snapshot pode repetir estado e saída. Reprodutibilidade em testes não garante segredos independentes entre cópias. [libsodium — Random data and deterministic testing]
libsodium randombytes_uniform() escolhe uniformemente abaixo de um limite superior sem o viés de um simples resto de divisão. Bons bytes de entrada não garantem mapeamento correto para o intervalo desejado. Chaves também devem respeitar as regras de seu algoritmo. [libsodium — Random data and deterministic testing]
RFC 8439 exige que um nonce não se repita com a mesma chave; aparência aleatória não prova unicidade. RFC 6979 descreve, por sua vez, a criação determinística do valor k da assinatura. CSPRNG não substitui universalmente as regras do protocolo. [RFC 8439 — Nonce uniqueness] [RFC 6979 — Deterministic signing]
Registe versão da biblioteca, mecanismo, inicialização, erros e comportamento após restaurar ou clonar o estado. OpenSSL e libsodium documentam funções específicas, não a segurança de qualquer carteira. Uma boa geração também não impede vazamento posterior do backup. [OpenSSL 3.5 — RAND_bytes return values and errors] [libsodium — Random data and deterministic testing]
Para ter uma visão mais completa, leia este verbete junto com Cryptographic Entropy, Random Number Generator, Deterministic RNG, Seed Generation. Também há referências a este verbete em Dice Roll Entropy, Cryptographic Entropy, Random Number Generator, Deterministic RNG.