Un CSPRNG est un générateur déterministe destiné à la cryptographie. Pseudo-aléatoire ne signifie pas faible : la résistance à un adversaire sous les hypothèses annoncées compte. Algorithme, source d’entropie et code utilisateur doivent être évalués séparément.
RFC 4086 distingue les suites cryptographiquement fortes des générateurs de simulation ordinaires. Connaître une partie de la sortie ne doit pas permettre de deviner le reste. Les tests statistiques seuls ne le prouvent pas ; une graine prévisible peut compromettre même une sortie apparemment complexe. [RFC 4086 — Cryptographically strong sequences]
NIST SP 800-90A Rev. 1 spécifie Hash_DRBG, HMAC_DRBG et CTR_DRBG. Le terme CSPRNG ne certifie pas toute implémentation. Il faut identifier le mécanisme, ses paramètres et l’acquisition d’entropie, pas seulement le nom d’une fonction de hachage. [NIST SP 800-90A Rev. 1 — DRBG mechanisms and compromise resistance]
Backtracking resistance protège les sorties antérieures après révélation de l’état présent. Prediction resistance concerne les sorties futures ; NIST SP 800-90A la relie à l’apport effectif d’entropie fraîche. Aucune ne suppose automatiquement l’autre ni un rétablissement par un simple nouvel appel. [NIST SP 800-90A Rev. 1 — DRBG mechanisms and compromise resistance]
OpenSSL 3.5 indique pour RAND_bytes() et RAND_priv_bytes() 1 en cas de succès, 0 pour un autre échec et -1 si la méthode n’est pas prise en charge. La génération peut être refusée si la source d’entropie échoue. L’application doit vérifier le résultat plutôt qu’utiliser un tampon non validé. [OpenSSL 3.5 — RAND_bytes return values and errors]
libsodium randombytes_buf_deterministic() donne la même suite pour une même graine, notamment pour les tests. Restaurer un instantané de machine virtuelle peut répéter état et sortie. La reproductibilité des tests ne garantit pas des secrets indépendants entre copies. [libsodium — Random data and deterministic testing]
libsodium randombytes_uniform() sélectionne uniformément sous une borne supérieure sans le biais d’un simple reste de division. De bons octets d’entrée ne garantissent pas une conversion correcte vers l’intervalle visé. Les clés doivent aussi suivre les règles de leur algorithme. [libsodium — Random data and deterministic testing]
RFC 8439 interdit de répéter un nonce avec la même clé ; une apparence aléatoire ne prouve pas l’unicité. RFC 6979 décrit au contraire la création déterministe de la valeur de signature k. Un CSPRNG ne remplace donc pas universellement les règles du protocole. [RFC 8439 — Nonce uniqueness] [RFC 6979 — Deterministic signing]
Consignez version de bibliothèque, mécanisme, initialisation, erreurs et comportement après restauration ou clonage de l’état. OpenSSL et libsodium décrivent leurs fonctions précises, pas la sécurité de n’importe quel portefeuille. Une bonne génération n’empêche pas non plus une fuite ultérieure de sauvegarde. [OpenSSL 3.5 — RAND_bytes return values and errors] [libsodium — Random data and deterministic testing]
Pour une vision complète, lisez aussi Cryptographic Entropy, Random Number Generator, Deterministic RNG, Seed Generation. Cette entrée est également citée par Dice Roll Entropy, Cryptographic Entropy, Random Number Generator, Deterministic RNG.