Aller au contenu principal
Cryptographie

Pseudo-aléatoire

Un nombre pseudo-aléatoire est généré par un algorithme déterministe (PRNG) à partir d'une graine. Il imite l'aléa sans en être. Pour la cryptographie, on lui préfère les vrais générateurs matériels (TRNG). Une graine prévisible mène à des clés vulnérables.

Définition

Un nombre pseudo-aléatoire est produit par un algorithme déterministe appelé PRNG (Pseudo-Random Number Generator). À partir d'une graine initiale (seed), l'algorithme génère une séquence de nombres qui paraît aléatoire — passant les tests statistiques d'uniformité, d'indépendance, de fréquence — mais qui est en réalité entièrement prévisible si on connaît la graine.

C'est l'opposé de l'aléa vrai (true random), qui provient d'un phénomène physique imprévisible (bruit thermique, désintégration radioactive, photons).

Pourquoi le pseudo-aléa ?

Les ordinateurs sont des machines déterministes : ils ne peuvent pas produire d'aléa intrinsèque. Mais beaucoup d'usages exigent des nombres « aléatoires » :

  • Simulations Monte Carlo
  • Tests logiciels
  • Jeux vidéo
  • Échantillonnage statistique
  • Cryptographie ⚠️

Pour les premiers, un PRNG simple suffit. Pour la cryptographie, c'est une catégorie spéciale : les CSPRNG (Cryptographically Secure PRNG).

Différence entre PRNG et CSPRNG

| Critère | PRNG standard | CSPRNG | |---------|---------------|--------| | Vitesse | Très rapide | Plus lent | | Imprévisibilité | Faible | Forte (backward + forward unpredictability) | | Exemple | Mersenne Twister, rand() | ChaCha20, AES-CTR-DRBG, /dev/urandom | | Usage | Simulation, jeux | Génération de clés, IV |

Un CSPRNG produit des bits indistinguables d'un vrai aléa par tout adversaire en temps polynomial, même s'il connaît des sorties précédentes.

Pourquoi c'est critique pour Bitcoin

La sécurité d'un wallet Bitcoin repose sur le secret de la clé privée. Cette clé est dérivée d'une graine (BIP-39), elle-même générée à partir d'une source d'entropie.

Si la source d'entropie est :

  • Trop faible (peu de bits aléatoires) → brute-force possible.
  • Prévisible (PRNG sans CSPRNG) → un attaquant peut deviner.
  • Compromise (bug Debian 2008, RoboForm) → vol immédiat.

Cas réels de catastrophes

1. Bug Debian OpenSSL (2006-2008)

Un bug dans la version Debian d'OpenSSL a réduit l'entropie à seulement 2^15 = 32 768 valeurs possibles pour toute clé générée. Toutes les clés produites pendant 2 ans étaient triviales à brute-forcer. Des dizaines de wallets ont été vidés rétroactivement.

2. Android SecureRandom (2013)

Un bug dans Android SecureRandom a permis le vol de plusieurs dizaines de milliers de BTC sur Bitcoin Wallet pour Android.

3. Profanity (2022)

Outil de génération d'adresses vanity Ethereum compromis : seed de 32 bits seulement = ~$3M volés.

4. RoboForm Time-Based Seeds (2014)

Plusieurs wallets « brain wallets » générés avec timestamps trivialement reconstructibles : vol immédiat.

Bonnes pratiques

Pour générer une seed Bitcoin :

| Pratique | Niveau | |----------|--------| | Hardware wallet certifié (Coldcard, BitBox, Passport) | Excellent | | /dev/urandom + GPG --gen-random | Très bon | | Dés (Diceware) + SeedSigner | Excellent + auditable | | Generator JS hors-ligne sur ordinateur non connecté | Bon mais à vérifier | | Service en ligne | À éviter | | « Brainwallet » (phrase mémorisée) | Catastrophique |

Pourquoi privilégier le hardware

Les hardware wallets modernes combinent :

  • TRNG (True Random Number Generator) : capteur de bruit physique dans le secure element.
  • CSPRNG post-traitement pour lisser la distribution.
  • Whitening (XOR avec d'autres sources) pour éliminer les biais.
  • Tests d'entropie continus.

Coldcard, BitBox02, Passport publient même les détails de leur source d'entropie pour audit.

Le pseudo-aléa pour autre chose

Tous les usages cryptographiques ne demandent pas une entropie maximale. Une fois la graine maître générée correctement, BIP-32 utilise ensuite des dérivations déterministes (HMAC-SHA512) pour produire des sous-clés. C'est par construction pseudo-aléatoire : la sécurité repose sur la graine racine.

À retenir

L'aléatoire vrai est rare et précieux ; le pseudo-aléatoire est partout. En cryptographie, et particulièrement pour Bitcoin, la qualité de la source d'entropie au moment de la création d'un wallet est la fondation de toute la sécurité ultérieure. Un seed généré sans soin sera toujours plus dangereux qu'un coffre mal fermé.

Termes lies

← Retour au glossaire complet

Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.