Dans cet article
- TL;DR
- Qu'est-ce que BIP39 ?
- 12 mots vs 24 mots
- Comment ton wallet dérive les clés
- Comment générer des wallets BIP39 en Node.js
- Tech Stack
- Imports et constantes
- Générer une wallet
- Vérifier l'activité d'une adresse
- Persister les hits
- Orchestrer la boucle
- Le 25e mot que la plupart des détenteurs ne définissent jamais
- Le vol physique devient survivable
- La surface d'attaque rétrécit
- Les attaques qui vident vraiment les wallets Bitcoin
- Ce qu'il NE FAUT PAS faire avec ta phrase
- Comment stocker vraiment ta phrase de récupération
- Sauvegarde métal, pas papier
- Hardware wallets pour 2026
- Informatique quantique et BIP39
- BIP39 tient. La couche humaine, souvent non.
Je travaille dans l'espace de l'auto-conservation crypto. Chaque mois, quelqu'un me demande s'il doit s'inquiéter d'une attaque par brute force sur sa seed phrase. Les maths disent non. Le comportement dit oui, mais pour des raisons très différentes de celles auxquelles on s'attend.
Ces 12 ou 24 mots ne sont pas une « sauvegarde ». Ils sont ton Bitcoin. Quiconque détient cette phrase possède chaque satoshi du wallet. Pas de réinitialisation de mot de passe, pas de ticket de support, pas de processus d'appel.
Voici un deep-dive sécurité. Comment fonctionne BIP39, où il est vulnérable, la question 12 vs 24 mots, et la fonctionnalité de sécurité la plus sous-utilisée dans Bitcoin, la passphrase BIP39.
TL;DR
Une phrase de récupération BIP39 est la clé maîtresse de ton Bitcoin. 12 ou 24 mots anglais ordinaires encodant 128 à 256 bits d'entropie cryptographique. La liste de 2 048 mots est fixe, l'ordre des mots compte, et PBKDF2 étire ta phrase en seed de 512 bits qui dérive chaque clé de ton wallet. 24 mots donnent 256 bits d'entropie. Brute-forcer est calculatoirement impossible. Le risque vit ailleurs. Photographier ta phrase, la stocker dans le cloud, des mots mal tapés, ou l'exposer à des malwares. Écris sur métal ou papier. Jamais en numérique.
Qu'est-ce que BIP39 ?
Avant BIP39, les wallets Bitcoin généraient des clés privées hexadécimales brutes. Chaînes de 64 caractères aléatoires, presque impossibles à transcrire avec précision ou à mémoriser. BIP39 a résolu cela en standardisant l'entropie de wallet en phrase mnémonique lisible.
Comment ça marche :
- L'entropie est générée. Une valeur aléatoire de 128 à 256 bits (par incréments de 32 bits).
- Une somme de contrôle est ajoutée. Les premiers bits d'un hachage SHA-256 de l'entropie sont ajoutés à la fin.
- La valeur combinée est divisée en segments de 11 bits. Chaque segment de 11 bits correspond à un mot de la liste BIP39.
- Le résultat est ta phrase de récupération. 12, 15, 18, 21 ou 24 mots, selon l'entropie initiale.
La liste BIP39 contient exactement 2 048 mots (2^11, par conception). Chaque mot est uniquement identifiable par ses quatre premières lettres, ce qui minimise les erreurs de saisie. BIP-39 livre 10 listes de mots officielles en anglais, japonais, coréen, espagnol, chinois (simplifié), chinois (traditionnel), français, italien, tchèque et portugais (Registre des listes BIP-39). Le standard a été défini en 2013 par Marek Palatinus, Pavol Rusnák, Aaron Voisine et Sean Bowe (Spécification BIP-39).
L'étape finale. Ta phrase mnémonique passe par la fonction d'étirement de clé PBKDF2 (avec 2 048 tours de HMAC-SHA512) pour produire un seed binaire de 512 bits. Ce seed est ensuite transmis à l'algorithme de dérivation de wallet HD BIP32 (hierarchical deterministic), qui génère l'arborescence complète des clés privées et publiques que ton wallet utilise.
Une phrase, des clés infinies. Chaque adresse Bitcoin que ton wallet a jamais générée est récupérable à partir de ces seuls mots.
12 mots vs 24 mots
Voici ce que les chiffres d'entropie signifient vraiment :
| Longueur de phrase | Entropie | Combinaisons possibles |
|---|---|---|
| 12 mots | 128 bits | ~3,4 × 10^38 (2^128) |
| 24 mots | 256 bits | ~1,16 × 10^77 (2^256) |
128 bits est calculatoirement infaisable à brute-forcer. Tous les ordinateurs de la Terre ensemble ne pourraient pas épuiser le keyspace avant l'extinction du soleil. 256 bits est d'ordres de grandeur plus grand, correspondant à l'entropie de clé privée propre à Bitcoin. La plupart des hardware wallets utilisent 24 mots par défaut. Pour une marche complète sur le choix et l'utilisation, voir notre guide d'auto-conservation.
Les deux sont sécurisés aujourd'hui. Pour l'épargne long-terme, 24 mots donnent plus de marge. La communauté de sécurité le recommande généralement.
Comment ton wallet dérive les clés
Le chemin de dérivation explique pourquoi une seule phrase de récupération est si puissante et si dangereuse à exposer.
Ta phrase, via PBKDF2, produit le master seed. Le master seed, via BIP32, produit la clé privée maîtresse et le master chain code.
Depuis la clé privée maîtresse, ton wallet dérive des child keys via un chemin de dérivation. Le standard le plus courant pour Bitcoin est BIP44, qui produit des chemins comme :
m / 44' / 0' / 0' / 0 / 0
Où :
m= clé maîtresse44'= purpose BIP440'= Bitcoin (coin type 0)0'= premier compte0= chaîne externe (adresses de réception)0= premier index d'adresse
Chaque adresse Bitcoin sur laquelle tu as déjà reçu des fonds est déterministiquement dérivée de ce master seed. Restaure la phrase sur n'importe quel wallet compatible BIP39/BIP44 et tout revient. Adresses, soldes, historique de transactions.
Perds la phrase et il n'y a rien à restaurer. Pas de serveur central, pas de chemin de récupération.
Comment générer des wallets BIP39 en Node.js
Le moyen le plus rapide de comprendre l'entropie BIP39 est de la générer toi-même. Le setup Node.js ci-dessous crée des wallets et vérifie si les adresses générées ont déjà détenu des fonds. Code fonctionnel issu de Bi-Catalyst/bruteforcebitcoin. Usage éducatif uniquement. Générer des wallets aléatoires et vérifier leur activité on-chain est un exercice de brute force qui confirme les maths. Ce n'est pas un chemin vers les coins de quelqu'un d'autre.
Tech Stack
- axios pour les requêtes HTTP vers les APIs blockchain
- bip39 pour la génération de mnémoniques et la dérivation des seeds
- bitcoinjs-lib pour la dérivation d'adresses et l'outillage transactionnel
package.json:
{
"name": "bruteforcebitcoin",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"run": "node generate_wallet.js"
},
"license": "MIT",
"dependencies": {
"axios": "^1.4.0",
"bip39": "^3.1.0",
"bitcoinjs-lib": "^5.2.0"
}
}
Imports et constantes
const axios = require('axios')
const bip39 = require('bip39')
const bitcoin = require('bitcoinjs-lib')
const fs = require('fs')
const parallelLimit = 10
const iterations = 100
const batchSize = 10
const delayBetweenBatches = 5000 // 5 secondes
const apiDelay = 3000 // 3 secondes
let useBlockchainInfoAPI = true
Générer une wallet
async function generateWallet() {
// Générer une nouvelle phrase mnémonique de 12 mots
const mnemonic = bip39.generateMnemonic(128)
console.log('Mnemonic:', mnemonic)
// Convertir la mnémonique en seed
const seed = await bip39.mnemonicToSeed(mnemonic)
// Dériver le wallet depuis le seed via BIP32
const network = bitcoin.networks.bitcoin
const hdMaster = bitcoin.bip32.fromSeed(seed, network)
const account = hdMaster.derivePath("m/44'/0'/0'/0")
// Générer une nouvelle adresse Bitcoin
const { address } = bitcoin.payments.p2pkh({
pubkey: account.derive(0).publicKey,
network
})
console.log('Adresse Bitcoin:', address)
const hasTransactions = await checkAddressActivity(address)
await new Promise(resolve => setTimeout(resolve, apiDelay))
return { address, hasTransactions }
}
Vérifier l'activité d'une adresse
Deux explorateurs publics alternant pour gérer les rate-limits. API Blockchain.com et API BlockCypher:
async function checkAddressActivity(address) {
try {
let response
if (useBlockchainInfoAPI) {
response = await axios.get(`https://blockchain.info/rawaddr/${address}`)
} else {
response = await axios.get(
`https://api.blockcypher.com/v1/btc/main/addrs/${address}`
)
}
useBlockchainInfoAPI = !useBlockchainInfoAPI
let hasTransactions = false
if (response.data.txs) {
hasTransactions = response.data.txs.length > 0
} else if (response.data.txrefs) {
hasTransactions = response.data.txrefs.length > 0
}
return hasTransactions
} catch (error) {
console.error('Erreur lors de la récupération des données:', error.message)
return false
}
}
Persister les hits
function appendToFile(filename, data) {
fs.appendFile(filename, data, err => {
if (err) {
console.error(`Erreur lors de l'enregistrement dans ${filename}:`, err.message)
} else {
console.log(`Données enregistrées dans ${filename}`)
}
})
}
Orchestrer la boucle
async function main() {
const walletPromises = []
for (let i = 0; i < iterations; i++) {
walletPromises.push(generateWallet())
if (walletPromises.length === parallelLimit) {
await processBatch(walletPromises)
walletPromises.length = 0
}
}
if (walletPromises.length > 0) {
await processBatch(walletPromises)
}
}
Lance le script toute la nuit. Tu n'atteindras aucune wallet avec des fonds. C'est le but. La combinatoire en fait un exercice de milliards de milliards de milliards d'années sur du matériel grand public. Le script prouve les maths en échouant à les vaincre.
Repo complet sur github.com/Bi-Catalyst/bruteforcebitcoin.
Le 25e mot que la plupart des détenteurs ne définissent jamais
BIP39 inclut une passphrase optionnelle, le « 25e mot », que la plupart des détenteurs Bitcoin n'ont jamais utilisée. C'est une erreur.
Quand ta mnémonique se convertit en seed binaire, la fonction PBKDF2 prend deux entrées. Ta phrase mnémonique et une passphrase optionnelle. Par défaut, cette passphrase est une chaîne vide. Tu peux entrer n'importe quoi. Un mot, une phrase, des symboles, des chiffres.
Une passphrase différente produit un wallet complètement différent. Mêmes 24 mots, autre passphrase, master seed totalement différent, autres adresses, autres soldes. Deux implications de sécurité en découlent.
Le vol physique devient survivable
Quelqu'un cambriole et trouve ta phrase sur papier. Sans la passphrase, il accède uniquement au wallet de la chaîne vide, un leurre avec un petit montant. Tes vraies détentions, derrière une passphrase que toi seul connais, sont cryptographiquement invisibles.
C'est un setup légitime de plausible deniability. Garde un petit montant dans le wallet de base. Garde le vrai stack derrière la passphrase.
La surface d'attaque rétrécit
La plupart des vecteurs d'attaque (vol physique, shoulder surfing, photo qui fuit) ne nécessitent que tes mots de seed. La passphrase ajoute un second facteur qui n'est jamais écrit sur le même papier, jamais stocké au même endroit, jamais transmis numériquement.
Coldcard, Jade, Trezor, Ledger. Tous la supportent. C'est dans les paramètres avancés. Active-la.
Un avertissement. La passphrase n'est pas récupérable. Oublie-la, et ce Bitcoin est perdu. Note-la séparément, stocke-la en sécurité, et teste ta récupération avant de déposer quoi que ce soit de significatif.
Les attaques qui vident vraiment les wallets Bitcoin
Les défaillances réelles de phrase de récupération impliquent presque jamais le brute-force. Elles se regroupent en trois catégories. Numérique, physique et mathématique.
Les attaques numériques dominent le terrain. Le phishing est le vecteur de perte le plus fréquent. Fausses apps de wallet, faux sites de « récupération de wallet », faux agents de support. Aucune wallet, bourse ou support légitime ne demandera jamais ta phrase, pas une fois, jamais. Les erreurs de sauvegarde cloud arrivent ensuite. Tu photographies ta phrase et ton téléphone synchronise automatiquement vers Google Photos ou iCloud. Ton seed est désormais sur un serveur, et cela a causé des pertes réelles. Les malwares (keyloggers, clipboard hijackers) sur les machines connectées peuvent capturer les phrases à la saisie, ce qui est précisément pourquoi un appareil hardware dédié existe.
Les attaques physiques sont plus lentes mais réelles. Quelqu'un trouve ta phrase écrite dans un tiroir, derrière un cadre, sur un magnet de frigo. Le lieu de stockage plus la passphrase BIP39 sont tes défenses ici. Le shoulder surfing en est la version douce. Quelqu'un te regarde générer ou entrer ta phrase, alors configure les hardware wallets en privé et vérifie l'absence de caméras avant de confirmer quoi que ce soit de sensible.
Les attaques mathématiques (brute-force sur l'entropie elle-même) sont celles dont le titre de ce post prétend parler, et celles qui n'ont jamais vidé un wallet. 2^128 ou 2^256 combinaisons avec les contraintes hardware actuelles. Si tu as généré ton seed sur une hardware wallet réputée avec un RNG sain, le brute-force n'est pas ta préoccupation. Le mur mathématique tient. C'est au mur comportemental que tu te fais pousser.
Ce qu'il NE FAUT PAS faire avec ta phrase
Vecteurs de perte documentés, pas des suggestions :
- Pas de photos numériques. Jamais.
- Pas de cloud storage. Dropbox, Google Drive, iCloud, OneDrive.
- Pas de password managers sauf si tu as spécifiquement réfléchi au modèle de menace.
Au-delà, évite aussi l'email (ni à toi, ni à personne), les apps de messagerie (WhatsApp, Signal, iMessage), les screenshots, et tout site qui prétend être un « validateur de phrase » ou un « outil de récupération de wallet », car ce sont des arnaques.
Forme physique uniquement. Lieux que tu contrôles. Yeux à qui tu fais confiance.
Comment stocker vraiment ta phrase de récupération
Génère sur un appareil dédié (Coldcard, Jade, Trezor) et pas sur une extension de navigateur, une app mobile ou un wallet desktop avec accès internet. Les hardware wallets isolent la génération d'entropie. Un ordinateur connecté a trop de surfaces d'attaque.
Sauvegarde métal, pas papier
Le papier brûle, prend l'eau, se détériore. Les produits de sauvegarde métal (Cryptosteel Capsule, Blockplate, plaques Bilodeau) frappent ou gravent tes mots de seed sur acier inoxydable ou titane. Ils survivent aux incendies et aux inondations. Une seule copie à un seul endroit est un point unique de défaillance. Deux ou trois sauvegardes métal dans des lieux physiques séparés. Si tu utilises une passphrase BIP39, stocke-la séparément des mots de seed.
Hardware wallets pour 2026
Aussi couvert dans Wallets, rester sécurisé.
- Coldcard Q. Bitcoin-only, workflow PSBT airgapped, sécurité la plus haute.
- Jade Plus. Abordable, open source, modèle de sécurité solide.
- Trezor Model T / Safe 5. Firmware GPL-3.0 (Repository firmware Trezor), le silicium Secure Element EAL6+ reste fermé (le fabricant confirme NDA-free). Trezor Safe 3 utilise par défaut une sauvegarde SLIP-39 de 20 mots avec 12 ou 24 mots BIP-39 sélectionnables (Page produit Trezor Safe 3).
- Ledger Nano S Plus et BitBox02. Utilisent 24 mots BIP-39 par défaut. Riches en fonctionnalités. Préoccupations passées de chaîne d'approvisionnement notées par la communauté de sécurité pour la ligne Ledger.
Teste avant le dépôt. Efface l'appareil. Restaure depuis ta phrase. Vérifie que toutes les adresses correspondent. Confirme que la passphrase fonctionne. Puis dépose. Fais cela avant qu'aucun vrai Bitcoin n'entre dans le wallet.
Informatique quantique et BIP39
L'algorithme de Shor cible ECDSA (le schéma de signature à courbes elliptiques que Bitcoin utilise pour les transactions), pas l'entropie BIP39. Un ordinateur quantique suffisamment puissant pourrait théoriquement dériver une clé privée depuis une clé publique exposée dans un UTXO. Le seed lui-même est tranquille, car PBKDF2-HMAC-SHA512 ne perd qu'un facteur quadratique face à Grover, ce qui laisse une force symétrique de 256 bits bien au-dessus de tout budget d'attaque plausible.
NIST a finalisé ses standards de cryptographie post-quantique en 2024, Taproot a introduit les signatures Schnorr (BIP340), et les estimations actuelles placent les phrases BIP39 à l'abri des attaques quantiques pour au moins 10 à 20 ans sur les trajectoires actuelles. Toute migration sera un changement protocolaire coordonné, pas une surprise. Analyse complète dans l'analyse de la menace quantique.
BIP39 tient. La couche humaine, souvent non.
La cryptographie est solide. 128 ou 256 bits d'entropie produisent un keyspace qu'aucun adversaire ne peut brute-forcer. Ce problème est résolu.
Les vulnérabilités sont humaines. Les phrases sont photographiées, synchronisées au cloud, tapées dans des sites de phishing, stockées à un seul endroit sans redondance. La passphrase BIP39, inutilisée dans les paramètres avancés de chaque hardware wallet majeure, bat la plupart de ces scénarios avec une étape supplémentaire.
Trois actions ferment l'écart. Active la passphrase BIP39 et stocke-la séparément de tes mots de seed. Passe à une sauvegarde métal (Cryptosteel, Blockplate ou similaire), car le papier n'est pas une solution permanente. Teste ta récupération avant que ça compte, en effaçant l'appareil, en restaurant depuis seed et passphrase, et en vérifiant que ça fonctionne.
BIP39 te donne le fondement. La sécurité que tu construis dessus détermine si ton Bitcoin est réellement en sécurité.
Cet article est de la documentation BIP-39 publique et des informations 2026 sur les fabricants de hardware wallets, pas un conseil en sécurité. Le firmware et les fonctionnalités des hardware wallets évoluent. Teste chaque flux de récupération sur un appareil dédié avant de déposer du Bitcoin en quantité significative, vérifie le statut open-source de chaque firmware contre le repository public actuel du fabricant, et traite toute offre de service "BIP-39 brute force" comme une arnaque. Les conseils de sécurité vieillissent vite. En cas de doute, consulte un conseiller suisse en sécurité ou un dépositaire supervisé par la FINMA avant de déposer du capital substantiel dans un setup que tu ne peux pas vérifier indépendamment.
Sources :
- Spécification BIP-39, Bitcoin GitHub
- Registre des listes BIP-39
- Repository firmware Trezor
- Page produit Trezor Safe 3
- Vue technique BIP39, Plisio
- Guide sécurité seed phrase, Bleap Finance
- Seed phrases expliquées, Knowing Bitcoin
- Top hardware wallets 2026, Bitcoin Magazine
- Guide d'achat hardware wallet 2026, Knowing Bitcoin
- Standards de cryptographie post-quantique NIST, finalisés 2024
Nouveau sur Bitcoin ? Commence par le Chapitre 1. 8 minutes de lecture.
Setup pratique ? Auto-conservation Bitcoin. Hardware wallets, multisig, implications fiscales suisses.