MSTR Cat

Blockchain/Niveau II · Mécanismes/2.1 Cryptographie/Leçon 5

Entropie et aléatoire

La fondation invisible : pourquoi une clé ne vaut que ce que vaut le bruit qui l’a créée

MatérielUn jeu de dés (facultatif, pour observer l’entropie physique)Un carnet

Curiosité

  1. Qu’est-ce qui distingue le vrai hasard de l’intuition humaine ?
  2. Comment un bug logiciel dans une distribution Linux a-t-il exposé des milliers de clés aux attaques par force brute ?
  3. Pourquoi une phrase de douze mots représente-t-elle exactement 128 bits d’entropie plus un checksum ?

Explorer

  1. Une clé privée Bitcoin est un entier aléatoire compris entre 1 et n-1, où n est l’ordre du générateur de la courbe secp256k1. Cet intervalle contient environ 1,158 × 10^77 valeurs possibles. Afin d’assurer une sécurité de 128 bits contre les attaques par logarithme discret, la clé doit être sélectionnée de manière uniforme dans cette plage. Si le processus de sélection est prévisible ou biaisé, l’entropie effective diminue, réduisant le travail nécessaire pour un attaquant à une fraction du maximum théorique.
  2. L’entropie mesure l’incertitude en bits. Une phrase mnémonique BIP39 de douze mots encode 128 bits de véritable aléa, plus un checksum de quatre bits dérivé de SHA-256. Une phrase de vingt-quatre mots contient 256 bits. Le dernier mot sert en partie à détecter les erreurs ; des mots tirés au hasard forment rarement une phrase valide, car le checksum échoue. Cette structure réduit les erreurs de transcription silencieuses, à condition que l’entropie d’origine ait été authentique.
  3. L’aléa produit par les humains est notoirement faible. Les phrases que les gens choisissent contiennent bien moins d’entropie qu’il n’y paraît, car ils privilégient des mots, des citations et des motifs familiers. Les attaquants en profitent en menant des attaques par dictionnaire contre les clés dérivées de phrases mémorisables, appelées « brain wallets ». Vasek, Bonneau et al. (2016) ont montré que ces portefeuilles étaient régulièrement vidés, souvent très peu de temps après avoir été approvisionnés, car les attaquants pouvaient tester d’immenses listes de phrases probables.
  4. Des défauts d’implémentation logicielle ont à plusieurs reprises compromis la génération de clés. Une modification apportée par Debian à OpenSSL (en usage de 2006 à 2008, divulguée dans le DSA-1571) ne laissait quasiment que l’identifiant de processus (PID) comme source de variation, si bien que chaque type et taille de clé n’offrait qu’environ 32 768 clés possibles. En août 2013, une faille dans SecureRandom d’Android a conduit certains portefeuilles bitcoin à réutiliser des nonces de signature, exposant des clés privées et permettant des vols. Ces incidents montrent que les sources d’entropie doivent être cryptographiquement sûres et indépendantes de l’état du système.
  5. « Randstorm », divulgué en 2023 par Unciphered, a révélé que les portefeuilles web de l’époque BitcoinJS (environ 2011-2015) utilisaient des générateurs d’aléa faibles, exposant leurs utilisateurs à des attaques par récupération de clé. Les portefeuilles matériels modernes collectent de l’entropie à partir de plusieurs sources internes lors de leur initialisation, puis affichent la phrase mnémonique obtenue mot par mot. Une fois notés, ces mots deviennent la seule autorité sur les fonds ; les perdre signifie perdre l’accès de façon définitive.
  6. Une bonne entropie provient des générateurs de nombres aléatoires cryptographiques du système d’exploitation (CSPRNG), des générateurs aléatoires matériels (RNG), ou de processus physiques comme les lancers de dés (avec des réserves liées aux biais). Les CSPRNG mélangent le bruit d’événements système et de capteurs matériels pour produire des bits imprévisibles. Si la valeur obtenue se situe entre 1 et n−1, elle devient une clé privée valide ; sinon, le générateur recommence avec de nouvelles données aléatoires. Cette boucle garantit une distribution uniforme sur l’ensemble de l’ordre de la courbe.

Faits clés

  • Une clé privée Bitcoin vise une sécurité de 128 bits, ce qui exige une sélection uniforme parmi environ 1,158 × 10^77 valeurs possibles.
  • Une phrase BIP39 de douze mots encode 128 bits d’entropie plus un checksum de quatre bits ; vingt-quatre mots encodent 256 bits.
  • La faille OpenSSL de Debian (2006-2008, DSA-1571) a réduit l’espace des clés à environ 32 768 possibilités par type et taille de clé.
  • Une faille de SecureRandom d’Android, divulguée en août 2013, a conduit certains portefeuilles à réutiliser des nonces de signature, exposant des clés au vol.
  • « Randstorm » (divulgué en 2023) a mis en évidence un aléa faible dans les portefeuilles web de l’époque BitcoinJS, datant d’environ 2011-2015.
  • Les clés dérivées de phrases mémorisables (« brain wallets ») étaient régulièrement découvertes et vidées par des attaquants.

Exercice neuf, six, trois, un

9RassemblerListez 9 sources d’aléa numérique ou physique. Indiquez le mécanisme (par exemple la gigue de l’horloge système, le bruit thermique) et les éventuelles vulnérabilités historiques connues associées à chacune.
6RegrouperRegroupez les 9 en 6 catégories selon la qualité de leur entropie : CSPRNG cryptographiquement sûrs, RNG matériels, processus physiques, aléa d’origine humaine, implémentations logicielles défaillantes, ou autres.
3DistillerRéduisez les 6 à 3 critères permettant d’évaluer si une source d’aléa convient à la génération d’une clé privée Bitcoin.
1CristalliserÉcrivez 1 phrase expliquant pourquoi une distribution uniforme sur l’ordre n de la courbe est non négociable pour la sécurité des clés.

Vérification des faits

Les dates, les chiffres et les affirmations ont été vérifiés à l’aide des sources publiées listées ci-dessous.

Ouvrir dans l'académie interactive →

EN PT ES ZH JA KO RU DE MS