Génération d'aléa et CSPRNG

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche

Portail > Gestion des clés

Toute la cryptographie symétrique repose sur des clés et des nonces imprévisibles. Un aléa de mauvaise qualité rend des clés devinables — une faille souvent invisible et dévastatrice.

Trois familles de générateurs

Type Description
TRNG (vrai aléa) Tire de l'entropie physique (bruit matériel). Lent, mais imprévisible par nature.
PRNG (pseudo-aléa) Déterministe à partir d'une graine. Rapide, non cryptographique (ex. rand()).
CSPRNG (pseudo-aléa cryptographique) PRNG conçu pour être imprévisible même en connaissant des sorties passées. Seul acceptable en cryptographie.

Sources à utiliser

S'appuyer sur le générateur du système d'exploitation, alimenté en entropie et correctement amorcé :

Plateforme Source
Linux getrandom(), /dev/urandom
Windows BCryptGenRandom
Bibliothèques secrets (Python), crypto.randomBytes (Node), RAND_bytes (OpenSSL)

À ne jamais faire

  • Utiliser un PRNG non cryptographique (rand(), Math.random(), Mersenne Twister) pour des clés/nonces.
  • Amorcer un générateur avec une valeur prévisible (horodatage, PID).
  • Réimplémenter son propre générateur.

Entropie et amorçage

Un CSPRNG doit être amorcé (seedé) avec suffisamment d'entropie avant usage. Cas sensibles : machines virtuelles fraîchement clonées, conteneurs, objets embarqués au démarrage — l'entropie peut être insuffisante au tout début, produisant des sorties prévisibles. Les noyaux modernes bloquent jusqu'à un amorçage suffisant (getrandom()).

Conséquences d'un mauvais aléa

Un générateur faible a déjà causé des compromissions massives à l'échelle d'Internet : clés prévisibles, collisions de clés entre machines, nonces réutilisés. L'aléa est un maillon silencieux : rien ne « casse » visiblement, mais les clés deviennent attaquables.

Points clés à retenir

  • Pour clés et nonces : toujours un CSPRNG, jamais un PRNG ordinaire.
  • Utiliser les sources de l'OS (getrandom, BCryptGenRandom) ou des API dédiées.
  • Surveiller l'amorçage au démarrage (VM, conteneurs, embarqué).
  • Un mauvais aléa compromet silencieusement toute la chaîne cryptographique.

Voir aussi

Cryptographie symétrique — Portail
Fondamentaux Principe · Bloc et flot · Modes opératoires · Padding · IV et nonces
Intégrité / auth. MAC et HMAC · AEAD
Gestion des clés Aléa / CSPRNG · KDF · Échange de clés · Stockage / rotation
Algorithmes AES · ChaCha20/Salsa20 · DES / 3DES · Blowfish et Twofish · RC4 · Camellia, ARIA et SM4 · AES-GCM · ChaCha20-Poly1305 · Hachage
Applications Données au repos · En transit / hybride
Sécurité avancée Attaques · Conformité · Post-quantique