Un Random Number Generator fournit des valeurs pour un usage donné. En cryptographie, l’adversaire ne doit pas pouvoir les prédire en pratique sous les hypothèses annoncées. Source physique d’entropie, générateur déterministe et interface du système d’exploitation sont des couches distinctes ; le nom RNG ne définit pas leurs propriétés.
La source d’entropie fournit l’incertitude, le conditionnement prépare l’entrée et le générateur déterministe produit une sortie depuis son état interne. NIST SP 800-90C associe les mécanismes de 90A aux sources selon 90B. Chaque bit fourni ne correspond donc pas nécessairement à une nouvelle mesure physique. [NIST SP 800-90C — RBG constructions]
Une suite peut réussir les tests statistiques tout en étant connue d’un attaquant. RFC 4086 met en garde contre les horloges, numéros de série et valeurs initiales prévisibles. Le nom ou la distribution des résultats d’un générateur de simulation ne le rendent pas adapté à la cryptographie. [RFC 4086 — Unpredictability and weak inputs]
NIST SP 800-90B évalue la source de bruit, le conditionnement et les tests de santé au démarrage et en fonctionnement. Ils détectent des défauts de la source sans prouver la sécurité du portefeuille entier. Le traitement des pannes doit être prévu : une sortie défaillante ne doit pas passer silencieusement pour un aléa validé. [NIST SP 800-90B — Source health and failure handling]
Linux getrandom() attend normalement l’initialisation de la source urandom. Avec GRND_NONBLOCK, il peut renvoyer EAGAIN au lieu d’attendre. Après initialisation, les demandes urandom d’au plus 256 octets garantissent une lecture complète sans interruption par signal ; les plus grandes ne le garantissent pas. L’application doit respecter le résultat retourné. [Linux getrandom(2) — Initialization and return behavior]
Web Crypto getRandomValues() remplit les tableaux d’entiers pris en charge avec des valeurs cryptographiquement fortes ; au-delà de 65536 octets, QuotaExceededError est levée. La spécification recommande generateKey() pour créer des clés. L’interface ne prouve pas la fiabilité d’une page et ne protège pas les secrets du code qui peut y accéder. [W3C Web Crypto — getRandomValues and key generation]
BIP39 encode d’abord 128 à 256 bits d’entropie initiale avec une somme de contrôle dérivée. Il dérive ensuite un seed de 512 bits à partir des mots et d’une passphrase éventuelle via PBKDF2. Ni la somme de contrôle ni une sortie plus longue ne corrigent une entrée prévisible ; choisir les mots ne remplace pas la génération aléatoire. [BIP39 — Initial entropy and mnemonic-to-seed derivation]
Un générateur déterministe exige un état protégé et une initialisation correcte. NIST SP 800-90A distingue instanciation, génération, réensemencement et suppression de l’instance. Après divulgation de l’état, le rétablissement demande un mécanisme adapté et une entropie fraîche inconnue de l’attaquant ; un nouvel appel ne le garantit pas en général. [NIST SP 800-90A Rev. 1 — DRBG lifecycle and reseeding]
L’examen doit préciser source, algorithme, initialisation, interface et comportement en cas d’erreur pour la version évaluée. Les mentions matériel ou hors ligne ne prouvent pas cette chaîne. Les normes citées expliquent les exigences de génération ; elles ne certifient aucun portefeuille particulier et n’empêchent pas une fuite ultérieure de sa sauvegarde. [NIST SP 800-90C — RBG constructions] [RFC 4086 — Unpredictability and weak inputs]
Pour une vision complète, lisez aussi Cryptographic Entropy, CSPRNG, Seed Generation, Brute Force Search Space. Cette entrée est également citée par CSPRNG, Deterministic RNG, True Random Number Generator, Seed Generation.