Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Générer ses clés Bitcoin : pièce de monnaie, dé...

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Générer ses clés Bitcoin : pièce de monnaie, dé à jouer, jeu de cartes, hardware wallet ou nombres quantiques ?

Avatar for Renaud Lifchitz

Renaud Lifchitz

September 16, 2026

More Decks by Renaud Lifchitz

Other Decks in Technology

Transcript

  1. Meetup Bitcoin Montmartre, 16 septembre 2026 Générer ses clés Bitcoin

    : pièces, dés, cartes, hardware wallet ou nombres quantiques ? Renaud Lifchitz Expert en cybersécurité
  2. Sommaire 1. Introduction 2. Les approches aléatoires courantes 3. Nombres

    quantiques 4. Hardware wallets 5. Conclusion Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 2
  3. Problématiques ▪ Il y a eu plus d’une douzaine de

    vulnérabilités dans les générateurs aléatoires de portefeuilles logiciels sur ordinateur ou mobile depuis 2009. ▪ L’actualité de l’été à propos du générateur de ColdCard et le vol de 1 800 BTC nous rappelle que cette menace existe toujours. Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 4
  4. Qu’est-ce que l’entropie ? Notion abstraite et multi-disciplinaire (thermodynamique) qui

    mesure la quantité de désordre et d’aléa dans une information ou donnée. Plus il y a d’aléatoire dans une donnée, plus son entropie est importante. Inversement, plus une information est prédictible, plus son entropie est faible. En théorie de l’information, définition mathématique de l’entropie de Shannon : 𝐻(𝑋) = − ∑ 𝑝(𝑥) log2 𝑝(𝑥) 𝑥∈𝒳︀ Pour 𝑛 bits de données, l’entropie est comprise entre 0 et n. Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 5
  5. Comment mesurer l’entropie ? (1/2) Exemple : Génération de 10000

    octets “aléatoires” sous Linux : $ dd if=/dev/random bs=10000 count=1 of=resultat.bin 1+0 records in 1+0 records out 10000 bytes (10 kB, 9,8 KiB) copied, 0,000240542 s, 41,6 MB/s Prévisualisation du résultat : $ xxd resultat.bin | head -3 00000000: 4d0b cb43 25c3 e5da e445 093a 3cb7 dd39 00000010: f576 c778 6d06 144b 6db4 5af1 dd32 5109 00000020: 1236 821d 06ee 3506 011c 4d6d 536d 0896 Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz M..C%....E.:<..9 .v.xm..Km.Z..2Q. .6....5...MmSm.. 6
  6. Comment mesurer l’entropie ? (2/2) Calcul de l’entropie du résultat

    : $ ent resultat.bin Entropy = 7.983704 bits per byte. Optimum compression would reduce the size of this 10000 byte file by 0 percent. Chi square distribution for 10000 samples is 224.64, and randomly would exceed this value 91.50 percent of the times. Arithmetic mean value of data bytes is 127.3048 (127.5 = random). Monte Carlo value for Pi is 3.171668667 (error 0.96 percent). Serial correlation coefficient is 0.018454 (totally uncorrelated = 0.0). Ici une entropie de 7,98 bits par octet (7,98/8 bits) pour mon générateur aléatoire Linux. ⚠️ Attention, il ne s’agit que de l’entropie brute, pas de la qualité du générateur aléatoire qui sera toujours complexe à obtenir avec un unique échantillon ! Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 7
  7. Qu’est-ce qu’un bon générateur aléatoire ? On ne peut pas

    vraiment placer la qualité d’un générateur aléatoire sur un axe bon/mauvais car il y a plusieurs axes : ▪ Uniformité : chaque résultat a-t-il la même probabilité ? ▪ Indépendance : les résultats successifs sont-ils corrélés ? ▪ Entropie réelle : quelle quantité d’information imprévisible est produite ? ▪ Imprévisibilité cryptographique : un adversaire peut-il prédire les sorties ? ▪ Robustesse : le générateur détecte-t-il les biais et les pannes ? ▪ Reproductibilité : utile en simulation, indésirable pour certains usages de sécurité. Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 8
  8. Principe des “bons” générateurs de clés Bitcoin Source aléatoire Au

    minimum 256 bits (32 octets) Hachage (ex.: SHA256) Seed 256 bits (32 octets) Passphrase BIP-39 ▪ L’entropie ne fait que diminuer algorithmiquement, donc il faut partir avec plus d’entropie qu’on ne le souhaite à l’arrivée ▪ Il est recommandé d’appliquer l’algorithme de débiaisage de Von Neumann avant hachage (on lit les bits deux par deux et on supprime les doublons “00” et “11” de la séquence de bits et on remplace “01” par “0”, et “10” par “1”). Cela supprime des bits mais améliore l’entropie en supprimant les biais de probabilité entre le 0 et le 1. Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 9
  9. Pièces de monnaie ▪ 2 biais existants : ▪ La

    quantité de matière (gravure) par face n’est pas la même, donc les faces n’ont pas le même poids, donc la même probabilité de se retrouver vers le bas ▪ La façon souvent similaire de lancer la pièce et la taille moyenne des gens la lançant font que le nombre de fois où elle se retourne en l’air est assez peu varié ▪ En pratique, une pièce, même parfaitement équilibrée, retombe 50,8% de fois du côté où elle a été lancée : “Fair coins tend to land on the same side they started: Evidence from 350,757 flips” (étude de 2023 : https://arxiv.org/abs/2310.04153) © FabrikaSimf/Shutterstock Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 11
  10. Dés à jouer (1/2) 😅 ▪ Un dé à 6

    faces produit 𝐻 = log2 6 ≈ 2.6 bits par lancer, ce qui n’est pas très pratique car ce n’est pas un nombre entier. Il est alors plus pratique de travailler en base 6 ▪ Comme pour une pièce, difficile d’avoir un dé équilibré car la quantité de matière par face n’est pas identique à cause de la gravure des points qui retire plus de matière sur certaines faces ▪ La plupart des dés à jouer standards sont industriels et de mauvaise qualité. En particulier ce sont rarement des cubes parfaits mais plutôt des “parallélépipèdes rectangles” (cf. slide suivante), ce qui fait que 4 faces sur 6 sont un peu plus probables. Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 12
  11. Dés à jouer (2/2) Illustration véridique et surprenante de pourquoi

    les dés ne sont pas le meilleur moyen de fabriquer une seed crypto aléatoire… (Maison Poincaré, Paris) (https://primal.net/e/nevent1qqsz2xffw0h2uv57xssepc0kcdsx5u7385f2f96wknut4zn3f54pdtg4y4pyj) Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 13
  12. Jeux de cartes ▪ En théorie un jeu de 52

    cartes mélangé peut fournir log2 (52!) ≈ 225, 6 bits d’entropie. A noter que ce n’est pas un nombre entier non plus… (utilisation correcte complexe de la méthode du rejet) ▪ Il est difficile de bien mélanger un jeu de cartes, la plupart des gens effectuant simplement des coupes avec peu d’enlacement entre les paquets coupés ▪ La règle classique de 7 mélanges ne suffit souvent pas, en pratique on est souvent audessus de 19 mélanges successifs pour avoir un aléa correct ▪ Aussi, éviter le jeu de carte neuf, qui est déjà parfaitement ordonné, donc plus difficile à bien mélanger Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 14
  13. Plusieurs approches quantiques ▪ Mesure d’un photon de lumière derrière

    un miroir semi-transparent ▪ Mesure de la polarisation d’un photon depuis une source non cohérente ▪ Mesure d’intrication quantique ▪ Fluctuations du vide quantique ▪ Mesure de la désintégration radioactive d’une particule (expérience de pensée du chat de Schrödinger) ▪ (Bruit électrique amplifié, par exemple avec diode inversée+amplificateur) 👉 L’aléa quantique est démontré comme étant le plus pur possible car non prévisible quel que soit le temps et la puissance de calcul dont on dispose. Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 16
  14. Générateurs de nombres quantiques en ligne ▪ ANU Quantum Numbers:

    https://quantumnumbers.anu.edu.au/ (gratuit sur inscription) ▪ CURBy - CU Randomness Beacon : https://random.colorado.edu/ ▪ qrandom : https://qrandom.io/ (vérifiable) ⚠️ A ne pas utiliser pour des seeds Bitcoin réelles : le site peut conserver les clés générées, ou un malware peut se loger sur le serveur ou sur votre poste ! NIST Boulder laboratories Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 18
  15. En utilisant une puce quantique universelle N’importe quelle puce quantique

    universelle en ligne (IBM, Azure Quantum, …) peut aussi générer des nombres quantiques en utilisant le principe de superposition : |0〉 𝐻 Bit aléatoire ⚠️ Attention aux biais de mesure/calibration, toujours utiliser un débiaisage+hachage des mesures et pas les 256 bruts pour une seed ⚠️ Même remarque que précédemment si pas en local et hors-ligne chez vous 😉 Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 19
  16. Utiliser un générateur aléatoire quantique (QRNG) chez soi ! ▪

    S’est un peu démocratisé (commercialisation aux entreprises surtout) ▪ ID Quantique, société suisse, est la première à en commercialiser en 2001, gamme Quantis (aujourd’hui les produits USB ne sont plus vendus, seuls les puces ou produits PCIe subsistent) ▪ La société britannique Crypta Labs commercialise des clés USB QRNG abordables (https://cryptalabs.com/product/cicada-usb-qrng/, ≈ £200) Cicada QRNG - 500Kb/s USB QRNG hardware device Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 20
  17. Utilisation d’une clé USB QRNG Cicada (1/3) Génération de 256

    bits d’aléa corrigé : $ qcc-cli -d /dev/ttyUSB0 -r 32 -o randgen.bin -v #### QCC command-line tool #### #### Copyright (C) Crypta Labs 2023 #### Initialize QCC Read 32 bytes 32 bytes of data written to file randgen.bin Data= 4d ... 5c $ xxd randgen.bin 00000000: 4d6c 032e e449 6ab6 c928 2785 1afe 71ce 00000010: 8a22 3072 37f2 d7c0 bbe3 95bc 7e7d e25c Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz Ml...Ij..('...q. ."0r7.......~}.\ 21
  18. Utilisation d’une clé USB QNRG Cicada (2/3) Calcul de l’entropie

    du QRNG : $ ent random50000.bin Entropy = 7.995810 bits per byte. Optimum compression would reduce the size of this 50000 byte file by 0 percent. Chi square distribution for 50000 samples is 289.81, and randomly would exceed this value 6.61 percent of the times. Arithmetic mean value of data bytes is 127.7852 (127.5 = random). Monte Carlo value for Pi is 3.130685227 (error 0.35 percent). Serial correlation coefficient is -0.007481 (totally uncorrelated = 0.0). Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 22
  19. Utilisation d’une clé USB QNRG Cicada (3/3) Diagnostic de robustesse

    : $ qcc-cli -d /dev/ttyUSB0 -v -t #### QCC command-line tool #### #### Copyright (C) Crypta Labs 2023 #### $ qcc-cli -d /dev/ttyUSB0 -v -g #### QCC command-line tool #### #### Copyright (C) Crypta Labs 2023 #### Initialize QCC Initialize QCC ## QRNG STATISTICS: generated_bytes: 17024 repetition_count_failures: 0 adaptive_proportion_failures: 0 bitcount_failures: 0 speed: 100674 sensif_average: 391 ledctrl_level: 70.92 ## QRNG CONFIGURATION: postprocess: 0 inital_level: 70.50 startup_test: 1 auto_calibration: 1 repetition_count: 1 adaptive_proportion: 1 bit_count: 1 generate_on_error: 0 n_lsbits: 7 hash_input_size: 46 block_size: 448 autocalibration_target: 330 Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 23
  20. Hardware wallets et génération de clés Les hardware wallets savent

    très bien générer des clés… Rappel : La dernière faille Coldcard était dûe au wallet qui n’utilisait pas le générateur matériel (Secure Element) mais une bibliothèque logicielle à la place… A aucun moment il n’y a eu de bug ou d’anomalie du matériel, il s’agit d’un bug purement logiciel #PEBKAC Avantages : ▪ Les clés ne touchent jamais un ordinateur ou un logiciel potentiellement vérolés ▪ Les clés sont sauvegardées dans un coffre quasi-inviolable, le Secure Element ▪ Si vous avez un Secure Element (SE) de score au moins EAL 5+, vous avez une sécurité similaire à une carte bancaire (et pour l’instant, on ne peut pas débiter arbitrairement le compte de quelqu’un d’autre avec sa carte bancaire !) Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 25
  21. Au-delà du test d’entropie : tests cryptographiques d’aléa Les SE

    de score au moins EAL 5+ passent les tests cryptographiques d’aléa les plus exigeants, dits CSPRNG “Cryptographically Secure Pseudo-Random Number Generator” (ex.: NIST SP 800-90B “Recommendation for the Entropy Sources Used for Random Bit Generation”, https://csrc.nist.gov/pubs/sp/800/90/b/final) Outils Linux de tests cryptographiques d’aléa, du plus simple au plus complet (peut nécessiter plusieurs gigas de nombres aléatoires) : ▪ ent ▪ randtests ▪ rngtest ▪ dieharder Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 26
  22. Conclusion ▪ Les Secure Element de score EAL 5+ ou

    supérieur n’ont jamais été pris en défaut sur la génération de clés aléatoires ou de protection des clés privées contre les attaques ▪ Le meilleur aléa possible est l’aléa quantique, qui est démontré pur ▪ Le moins bon aléa est l’algorithme logiciel (exemple de l’IA qui préfère le nombre 17, comme l’homme ) ▪ La meilleure génération aléatoire ne vient pas d’une unique source (dés), mais de plusieurs bonnes sources ▪ Pour générer vos clés à partir de sources d’entropie diverses : https://github.com/hybridsole/bitcoinentropy-tools 😅 Retrouvez moi sur Nostr : [email protected] 👉 Questions & discussion ! Générer ses clés Bitcoin - 16 septembre 2026 - Renaud Lifchitz 28