Génération d'aléa et CSPRNG
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 |