Logo

Retour sur la faille de seed Coldcard

SEP2
Wednesday, September 207:00 PM - 08:00 PM
location_on
Labour University of Geneva arrow_outwardPl. des Grottes 3, Genève, Switzerland
About Event

Retour sur la faille de seed Coldcard - et pourquoi votre wallet Bitcoin ne doit jamais dépendre d'un seul appareil

🗓 02 septembre 2026
📍 Adresse : UoG Place des Grottes 3 · Genève
🔸 Salle : Amphithéâtre Berenstein (1er sous-sol, à droite en entrant)
🔸 Portes ouvertes dès 18h45
⏰ 18h45 - 20h

Description :
En juillet 2026, Coinkite a révélé que la génération de seed de certains Coldcard était beaucoup moins aléatoire qu'il n'y paraissait. Nous reviendrons sur ce qui s'est réellement passé, puis nous en tirerons la leçon qui compte : ne confiez jamais votre seed à un seul appareil. En seconde partie, atelier pratique : nous générerons un wallet en combinant deux sources d'entropie indépendantes.

🕵️ Partie 1 - Ce qui s'est passé : quand le matériel « sécurisé » fait défaut

L'anatomie de la faille Coldcard, pas à pas :
Une seule ligne de code. Une garde de compilation écrite avec #ifndef au lieu de #if : elle testait l'existence d'une option, pas sa valeur. Résultat : le vrai générateur matériel (TRNG) de la puce était silencieusement contourné, et la seed provenait d'un PRNG logiciel prévisible (Yasmarang) fourni par MicroPython.

Les dégâts. Environ 40 bits d'espace de recherche effectif pour les seeds des Mk2/Mk3 - un espace qu'un attaquant parcourt en quelques heures - et environ 72 bits pour les Mk4/Q/Mk5, au lieu des 128 bits ou plus attendus.
Cinq ans sans que personne ne voie rien. Le code était open source, publié, lisible par tous. La ligne fautive est restée en production de 2021 à 2026. Et les mots affichés à l'écran avaient l'air parfaitement normaux : rien ne distingue une seed faible d'une seed forte à l'œil nu.
Qui était protégé ? Les utilisateurs qui avaient fourni leur propre entropie (50 lancers de dés ou plus) et ceux qui utilisaient une passphrase BIP39 réellement aléatoire. Autrement dit : ceux qui n'avaient pas fait confiance à un seul appareil.

La leçon dépasse Coldcard : un appareil peut contenir un excellent TRNG et ne jamais l'utiliser. Aucune fiche technique ne vous le dira, et la prochaine fois, ce sera peut-être une autre marque.

🛡 Partie 2 - Notre suggestion : deux appareils, deux fabricants

Plutôt que de devenir cryptographe, on change d'architecture : faire en sorte qu'aucun appareil seul ne détermine la sécurité du wallet.

Le montage que nous présenterons en direct :
🎲 Appareil A (fabricant 1) : génère le mnémonique de 24 mots.
🔐 Appareil B (fabricant 2) : génère 12 mots aléatoires - jamais utilisés comme wallet, mais comme passphrase BIP39 (le « 25e mot ») par-dessus les 24 mots de A. Pour deviner le wallet, il faudrait que les générateurs des deux fabricants soient défaillants en même temps.
Vérification croisée : on restaure les 24 mots + la passphrase sur l'appareil B et on vérifie que les deux appareils dérivent le même wallet (même fingerprint, même adresse) - deux implémentations indépendantes qui se contrôlent mutuellement.
🏦 Stockage séparé : les 24 mots à un endroit, les 12 mots à un autre. Un cambrioleur qui trouve l'une des deux listes ne trouve rien.

Ce que vous apprendrez aussi :

* pourquoi le RNG d'un seul appareil est un point de défaillance unique - et pourquoi deux appareils du même fabricant n'aident pas ;
* le piège de la passphrase : il n'existe pas d'erreur « mauvaise passphrase » - une faute de frappe ouvre en silence un wallet vide - et comment la répétition de récupération vous en protège ;
* les alternatives et leurs compromis : dés, Seed XOR, entropie ajoutée par pile ou face ;
* et pour les gros montants : un mot sur le multisig multivendeur, sujet d'un prochain meetup.

Que vous utilisiez un Coldcard, un Jade, un Trezor, un BitBox ou un Ledger : venez apprendre à ne plus dépendre d'une seule boîte noire.

📚 Ressources et lectures préparatoires (facultatif) :

* Coinkite, avis de sécurité officiel : https://blog.coinkite.com/coldcard-mk3-seed-generation-warning/
* Coinkite, analyse technique de la faille : https://blog.coinkite.com/entropy-technical-backgrounder/
* WizardSardine, analyse indépendante : https://wizardsardine.com/blog/coldcard-rng-vulnerability/

🔸 Suivi du traditionnel beer-to-beer dès 20h aux Brasseurs (Pl. de Cornavin 20, 1201 Genève)

🔸 Contact : rejoignez notre groupe Telegram @BitcoinGeneva pour échanger ou poser vos questions (un bot bloque initialement les messages des nouveaux arrivants pour protéger du spam, ne désespérez pas 😉).

--

Revisiting the Coldcard seed flaw, and why your Bitcoin wallet should never depend on a single device

🗓 2 September 2026
📍 Address: UoG, Place des Grottes 3 · Geneva
🔸 Room: Berenstein Auditorium (first basement level, on your right as you come in)
🔸 Doors open at 6:45 pm
⏰ 6:45 pm to 8:00 pm

Description:
In July 2026, Coinkite disclosed that seed generation on certain Coldcards was far less random than it looked. We'll go back over what actually happened, then draw the lesson that matters: never trust your seed to a single device. In the second half, a hands-on workshop: we'll generate a wallet by combining two independent sources of entropy.

🕵️ Part 1. What happened: when "secure" hardware fails

The anatomy of the Coldcard flaw, step by step:
A single line of code. A compile-time guard written with #ifndef instead of #if: it tested whether an option existed, not what it was set to. The result: the chip's real hardware generator (TRNG) was silently bypassed, and the seed came from a predictable software PRNG (Yasmarang) shipped with MicroPython.

The damage. Roughly 40 bits of effective search space for Mk2/Mk3 seeds, a space an attacker can sweep in a few hours, and roughly 72 bits for the Mk4/Q/Mk5, instead of the expected 128 bits or more.
Five years, and nobody saw it. The code was open source, published, readable by anyone. The faulty line stayed in production from 2021 to 2026. And the words shown on screen looked perfectly normal: nothing tells a weak seed from a strong one by eye.
Who was protected? Users who had supplied their own entropy (50 dice rolls or more) and those using a truly random BIP39 passphrase. In other words: the ones who hadn't trusted a single device.
The lesson goes beyond Coldcard: a device can contain an excellent TRNG and never use it. No spec sheet will tell you, and next time it may well be another brand.

🛡 Part 2. Our suggestion: two devices, two manufacturers

Rather than becoming a cryptographer, change the architecture: make sure no single device decides the security of the wallet.

The setup we'll walk through live:
🎲 Device A (manufacturer 1): generates the 24-word mnemonic.
🔐 Device B (manufacturer 2): generates 12 random words, never used as a wallet, but as a BIP39 passphrase (the "25th word") on top of A's 24 words. To guess the wallet, both manufacturers' generators would have to be broken at the same time.
Cross-check: restore the 24 words plus the passphrase on device B and confirm that both devices derive the same wallet (same fingerprint, same address), two independent implementations verifying each other.
🏦 Separate storage: the 24 words in one place, the 12 words in another. A burglar who finds one of the two lists finds nothing.

What else you'll learn:

* why one device's RNG is a single point of failure, and why two devices from the same manufacturer don't help;
* the passphrase trap: there is no "wrong passphrase" error, a typo silently opens an empty wallet, and how rehearsing your recovery protects you from it;
* the alternatives and their trade-offs: dice, Seed XOR, entropy added by coin flips;
* and for large amounts: a word on multi-vendor multisig, the subject of an upcoming meetup.

Whether you use a Coldcard, a Jade, a Trezor, a BitBox or a Ledger: come and learn how to stop depending on a single black box.

📚 Resources and optional pre-reading:

* Coinkite, official security advisory: https://blog.coinkite.com/coldcard-mk3-seed-generation-warning/
* Coinkite, technical backgrounder on the flaw: https://blog.coinkite.com/entropy-technical-backgrounder/
* WizardSardine, independent analysis: https://wizardsardine.com/blog/coldcard-rng-vulnerability/

🔸 Followed by the traditional beer-to-beer from 8:00 pm at Les Brasseurs (Pl. de Cornavin 20, 1201 Geneva)

🔸 Contact: join our Telegram group @BitcoinGeneva to chat or ask your questions (a bot initially blocks messages from newcomers to keep spam out, don't give up 😉).

Location
Labour University of Geneva
Pl. des Grottes 3, Genève, Switzerland