bip39-explained
TARGET_LOCALE: fr
title: "Norme BIP-39 expliquée : comment fonctionnent les phrases mnémoniques" description: "Analyse approfondie de la norme BIP-39 pour les phrases mnémoniques. Découvrez les détails techniques de l’entropie, de la somme de contrôle, des listes de mots et de la dérivation de seed utilisées par les portefeuilles de cryptomonnaies." keywords: [BIP-39, mnémonique, phrase de seed, liste de mots, PBKDF2, entropie, norme des cryptomonnaies] sidebar_position: 3
Norme BIP-39 expliquée : comment fonctionnent les phrases mnémoniques
BIP-39 (Bitcoin Improvement Proposal 39) définit la norme de génération des phrases mnémoniques — les séquences familières de 12 ou 24 mots — qui encodent l’entropie utilisée pour dériver les clés de portefeuille de cryptomonnaies. Publiée en 2013 par Marek Palatinus, Pavol Rusnak, Aaron Voisine et Sean Bowe, BIP-39 est devenue la norme dominante pour la sauvegarde des portefeuilles sur pratiquement toutes les cryptomonnaies majeures.
Comprendre BIP-39 au niveau technique vous donne confiance dans la fiabilité de votre sauvegarde de phrase de seed et vous aide à évaluer les propriétés de sécurité des différentes implémentations de portefeuilles.
Vue d’ensemble de BIP-39
BIP-39 spécifie deux processus :
- Génération de la mnémonique — Conversion d’une entropie aléatoire en une séquence de mots lisibles par l’humain.
- Dérivation de la seed — Conversion des mots mnémoniques (plus une passphrase optionnelle) en une seed binaire de 512 bits pouvant être utilisée avec BIP-32 pour la génération hiérarchique déterministe de clés.
Ces deux processus sont volontairement séparés. La mnémonique est la représentation conviviale pour l’humain ; la seed est l’entrée cryptographique pour la dérivation des clés.
Étape 1 : génération de l’entropie
Le processus commence par un bloc de données aléatoires cryptographiquement sûres (entropie). BIP-39 prend en charge cinq tailles d’entropie :
| Entropie (bits) | Somme de contrôle (bits) | Total (bits) | Mots |
|---|---|---|---|
| 128 | 4 | 132 | 12 |
| 160 | 5 | 165 | 15 |
| 192 | 6 | 198 | 18 |
| 224 | 7 | 231 | 21 |
| 256 | 8 | 264 | 24 |
En pratique, presque tous les portefeuilles utilisent soit 128 bits (12 mots), soit 256 bits (24 mots). Les autres tailles sont valides selon la spécification mais rarement implémentées.
La qualité de la source d’entropie est primordiale. Si le générateur de nombres aléatoires est biaisé, prévisible ou dispose d’une entropie insuffisante, la phrase de seed résultante peut être devinée par un attaquant. Consultez notre guide sur l’entropie et l’aléatoire pour un traitement détaillé de ce sujet.
Sources d’entropie
- Générateurs matériels de nombres aléatoires (HRNG) — Utilisés par les portefeuilles matériels comme Ledger et Trezor. Ils échantillonnent des phénomènes physiques (bruit thermique, bruit de grenaille) pour produire un véritable aléa.
- CSPRNG du système d’exploitation —
/dev/urandomsur Linux/macOS,CryptGenRandomsur Windows, oucrypto.getRandomValues()dans les navigateurs. Ce sont des générateurs pseudo-aléatoires cryptographiquement sûrs (CSPRNG) initialisés à partir de sources d’entropie matérielles. - Lancers de dés — Certains utilisateurs génèrent manuellement l’entropie avec des dés de qualité casino, en mappant les lancers vers du binaire ou des indices de mots. Cela supprime la confiance envers tout RNG logiciel ou matériel.
Étape 2 : calcul de la somme de contrôle
Une fois l’entropie générée, une somme de contrôle est ajoutée :
- Calculez le hash SHA-256 des octets d’entropie.
- Prenez les
ENT / 32premiers bits du hash (où ENT est la longueur d’entropie en bits). - Ajoutez ces bits de somme de contrôle à l’entropie.
Pour une entropie de 256 bits, cela produit 8 bits de somme de contrôle, soit un total de 264 bits.
La somme de contrôle sert de mécanisme de détection d’erreurs : quand vous saisissez votre phrase de seed dans un portefeuille pour la récupération, le portefeuille recalcule la somme de contrôle. Si un mot est erroné ou si les mots sont dans le mauvais ordre, la somme de contrôle échoue et le portefeuille rejette la mnémonique. Cela protège contre les erreurs de transcription mais ne les corrige pas — cela détecte seulement qu’il y a un problème.
Implications de la somme de contrôle
Comme le dernier mot de la mnémonique encode des bits de somme de contrôle, tous les mots ne sont pas valides comme mot final pour une séquence donnée. Pour une mnémonique de 24 mots, le dernier mot encode 3 bits d’entropie et 8 bits de somme de contrôle, donc seuls 8 des 2 048 mots possibles sont valides pour n’importe quels 23 premiers mots. C’est pourquoi vous ne pouvez pas choisir librement le dernier mot.
Étape 3 : association aux mots
Les bits combinés entropie + somme de contrôle sont divisés en groupes de 11 bits. Chaque groupe de 11 bits représente un indice de 0 à 2 047, correspondant à un mot dans la liste de mots BIP-39.
264 bits / 11 bits par mot = 24 mots
132 bits / 11 bits par mot = 12 mots
La liste de mots anglaise
La liste de mots anglaise BIP-39 contient exactement 2 048 mots. La liste a été soigneusement conçue avec les propriétés suivantes :
- Préfixes uniques de quatre lettres — Aucun mot ne partage les quatre premiers caractères avec un autre. Cela signifie que
abandonpeut être identifié sans ambiguïté paraban, ce qui est utile pour des sauvegardes métalliques compactes. - Vocabulaire courant — Les mots sont simples, largement connus en anglais. Pas de jargon, de noms propres ni de termes obscurs.
- Évitement des mots similaires — Les mots facilement confondus (par exemple, "woman" et "women") sont exclus lorsque possible.
- Longueur des caractères — Tous les mots comportent entre 3 et 8 caractères.
Listes de mots dans d’autres langues
BIP-39 définit des listes de mots en neuf langues :
| Langue | Statut | Notes |
|---|---|---|
| Anglais | Norme de référence | Support le plus répandu |
| Japonais | Standardisé | Utilise le katakana ; les espaces sont idéographiques (U+3000) |
| Coréen | Standardisé | |
| Espagnol | Standardisé | |
| Chinois (simplifié) | Standardisé | |
| Chinois (traditionnel) | Standardisé | |
| Français | Standardisé | |
| Italien | Standardisé | |
| Tchèque | Standardisé | |
| Portugais | Standardisé |
Note importante de compatibilité : Une mnémonique générée avec une liste de mots ne peut pas être restaurée avec une liste d’une autre langue. Les indices de mots diffèrent entre les langues. Notez toujours la langue utilisée lors de la création de votre sauvegarde.
Étape 4 : dérivation de la seed (PBKDF2)
La phrase mnémonique n’est pas utilisée directement comme clé cryptographique. À la place, elle subit un étirement de clé via PBKDF2-HMAC-SHA512 :
PBKDF2(
password = phrase mnémonique (mots joints par des espaces, normalisés en UTF-8 NFKD),
salt = "mnemonic" + optional_passphrase,
iterations = 2048,
key_length = 512 bits
)
Cela produit une seed de 512 bits qui sert d’entrée à la dérivation hiérarchique déterministe de clés BIP-32.
Propriétés clés de PBKDF2 dans BIP-39
Étirement de clé — Les 2 048 itérations de PBKDF2 ajoutent un coût de calcul aux attaques par force brute. Même si 2 048 itérations est modeste selon les standards modernes de hachage de mots de passe, la sécurité principale vient de l’entropie de la mnémonique elle-même (128 ou 256 bits), et non du facteur d’étirement.
Prise en charge de la passphrase — Le salt inclut une passphrase optionnelle (le "25th word"). Si aucune passphrase n’est fournie, le salt est simplement la chaîne "mnemonic". Si une passphrase est fournie, le salt devient "mnemonic" + passphrase. Cela signifie que chaque passphrase différente produit une seed complètement différente — et donc un ensemble totalement différent de clés et d’adresses — à partir de la même mnémonique.
Aucune validation de passphrase — Contrairement à la somme de contrôle de la mnémonique, il n’y a pas de somme de contrôle sur la passphrase. Toute passphrase est valide. Saisir une passphrase incorrecte ne produit pas d’erreur ; cela génère silencieusement un portefeuille différent (vide). C’est une fonctionnalité de déni plausible, mais un risque pour les utilisateurs qui oublient leur passphrase.
Normalisation Unicode — La mnémonique et la passphrase sont normalisées en UTF-8 NFKD (Normalization Form Compatibility Decomposition) avant d’être passées à PBKDF2. Cela garantit une dérivation de seed cohérente entre les implémentations, quelle que soit la manière dont le système d’exploitation représente les caractères en interne.
Étape 5 : de la seed aux clés (BIP-32)
La seed de 512 bits issue de PBKDF2 est utilisée comme entrée de BIP-32 (Hierarchical Deterministic Wallets) :
- La seed passe dans HMAC-SHA512 avec la clé "Bitcoin seed".
- Les 256 bits de gauche deviennent la clé privée maître.
- Les 256 bits de droite deviennent le code de chaîne maître.
- Ensemble, ils forment la clé privée étendue maître (xprv).
À partir de là, les chemins de dérivation BIP-44 définissent une structure arborescente standardisée pour dériver des clés et des adresses spécifiques à chaque monnaie.
Exemple détaillé
Suivons BIP-39 avec un exemple simplifié utilisant 128 bits d’entropie (mnémonique de 12 mots) :
1. Générer 128 bits d’entropie
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
(Ceci est une entropie tout-zéro — à titre d’illustration uniquement. Ne jamais utiliser en pratique.)
2. Calculer le hash SHA-256
SHA256(0x00000000000000000000000000000000) = 374708fff7719dd5979ec875d56cd2286f6d3cf7ec317a3b25632aab28ec37bb
3. Prendre les 4 premiers bits du hash comme somme de contrôle
Premier octet : 0x37 = 00110111. 4 premiers bits : 0011.
4. Ajouter la somme de contrôle à l’entropie
128 bits de zéros + 0011 = 132 bits au total.
5. Diviser en groupes de 11 bits
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000011 → 3 → "about"
Résultat : abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about
C’est le vecteur de test bien connu pour une entropie tout-zéro. Le dernier mot est "about" (et non "abandon") à cause des bits de somme de contrôle.
6. Dériver la seed avec PBKDF2
PBKDF2("abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about", "mnemonic", 2048, 64)
Cela produit une seed de 512 bits utilisée pour la dérivation BIP-32.
Utilisez le générateur de phrase de seed SafeSeed pour voir BIP-39 en action. Générez une phrase de seed et visualisez l’entropie, la somme de contrôle et l’association des mots en temps réel. Exécutez l’outil hors ligne pour une sécurité maximale.
Analyse de sécurité de BIP-39
Sécurité de l’entropie
Pour une mnémonique de 24 mots (256 bits d’entropie) :
- L’espace de recherche est 2^256, soit environ 1.16 x 10^77 possibilités.
- Même à un rythme de mille milliards (10^12) d’essais par seconde, une recherche exhaustive prendrait environ 3.67 x 10^57 ans — bien plus longtemps que l’âge de l’univers (1.38 x 10^10 ans).
Pour une mnémonique de 12 mots (128 bits d’entropie) :
- L’espace de recherche est 2^128, soit environ 3.4 x 10^38 possibilités.
- À mille milliards d’essais par seconde, une recherche exhaustive prendrait environ 10^19 ans.
Les deux sont irréalisables en calcul classique.
Considérations sur PBKDF2
PBKDF2 à 2 048 itérations ajoute un facteur constant aux attaques par force brute, mais ce n’est pas la barrière de sécurité principale. Certains chercheurs en sécurité notent que 2 048 itérations est faible par rapport à des fonctions modernes de dérivation de clés comme Argon2 ou bcrypt. Toutefois, comme l’entropie de la mnémonique (128 ou 256 bits) est le facteur dominant, cela reste une préoccupation mineure en pratique.
Limites de la somme de contrôle
La somme de contrôle détecte la plupart des erreurs de transcription mais :
- Elle détecte les erreurs sans les corriger.
- Pour les mnémoniques de 12 mots, il n’y a que 4 bits de somme de contrôle, ce qui signifie qu’environ 1 modification aléatoire sur 16 passera la somme de contrôle.
- La somme de contrôle ne protège pas contre une réorganisation des mots qui produirait malgré tout une somme de contrôle valide.
Risques liés à la passphrase
La fonctionnalité de passphrase est puissante mais introduit des risques :
- Si vous oubliez la passphrase, les fonds sont irrécupérables (aucun mécanisme de "reset").
- La passphrase n’est pas validée — n’importe quelle chaîne produit un portefeuille valide.
- Un attaquant qui obtient la mnémonique mais pas la passphrase doit forcer la passphrase, ce qui fournit une sécurité supplémentaire proportionnelle à l’entropie de la passphrase.
Critiques de BIP-39
BIP-39 n’est pas exempt de critiques dans la communauté de développement Bitcoin.
Absence de versionnage
BIP-39 n’inclut pas d’octet de version, ce qui signifie que le processus de dérivation est figé pour toujours. Si une amélioration future nécessite une fonction de dérivation différente ou des paramètres différents, cela ne peut pas être signalé dans le format mnémonique. C’est pourquoi certains portefeuilles (notamment Electrum) utilisent leur propre schéma mnémonique avec versionnage.
Couplage fort à la liste de mots
La mnémonique dépend de la liste de mots exacte. Si la liste de mots était un jour modifiée, les mnémoniques existantes ne pourraient plus être récupérées. Les listes de mots sont gelées depuis la standardisation, mais cette rigidité est considérée comme une limite de conception par certains.
Étirement de clé faible
Comme indiqué, 2 048 itérations de PBKDF2 sont considérées faibles selon les standards actuels. Bien que cela n’affecte pas matériellement la sécurité des mnémoniques à forte entropie, cela offre moins de protection pour des passphrases plus courtes ou choisies par l’utilisateur.
Alternative d’Electrum
Le portefeuille Electrum utilise son propre schéma mnémonique qui inclut le versionnage et ne dépend pas d’une liste de mots fixe. Les mnémoniques Electrum ne sont pas compatibles BIP-39. Cela signifie qu’une phrase de seed Electrum ne peut pas être restaurée dans un portefeuille BIP-39, et inversement. Sachez toujours quelle norme votre portefeuille utilise.
Implémentations BIP-39
BIP-39 est implémenté dans pratiquement tous les portefeuilles majeurs :
| Portefeuille | BIP-39 | Nombre de mots | Notes |
|---|---|---|---|
| Ledger | Yes | 24 | Matériel, secure element |
| Trezor | Yes | 12/24 | Prend aussi en charge SLIP-39 (Shamir) |
| Coldcard | Yes | 24 | Matériel Bitcoin uniquement |
| MetaMask | Yes | 12 | Extension navigateur |
| Trust Wallet | Yes | 12 | Mobile |
| Exodus | Yes | 12 | Bureau/mobile |
| Electrum | No | 12 | Utilise son propre schéma |
| BlueWallet | Yes | 12/24 | Mobile orienté Bitcoin |
Tests et vérification
Vecteurs de test officiels
La spécification BIP-39 inclut des vecteurs de test — des valeurs d’entropie connues avec leurs mots mnémoniques correspondants et les seeds dérivées. Ils servent à vérifier que les implémentations sont correctes.
Vous pouvez vérifier l’implémentation BIP-39 de votre portefeuille en la comparant aux vecteurs de test officiels publiés ici :
Vérifier votre phrase de seed
Pour vérifier que vous avez correctement noté votre phrase de seed :
- Générez la phrase de seed sur votre portefeuille matériel.
- Écrivez-la soigneusement.
- Réinitialisez le portefeuille matériel aux paramètres d’usine.
- Restaurez à partir de la phrase de seed que vous avez notée.
- Vérifiez que les mêmes adresses sont générées.
- Confirmez que le portefeuille peut signer des transactions.
Ce processus confirme à la fois que votre sauvegarde est correcte et que l’implémentation BIP-39 du portefeuille fonctionne comme prévu.
FAQ
Que signifie BIP-39 ?
BIP signifie Bitcoin Improvement Proposal. BIP-39 est la proposition numéro 39, qui définit la norme pour créer des représentations mnémoniques (lisibles par l’humain) de l’entropie cryptographique. Elle a été introduite en 2013 et adoptée par pratiquement tous les principaux portefeuilles de cryptomonnaies.
Toutes les phrases de seed de 12 mots sont-elles BIP-39 ?
Non. Certains portefeuilles (notamment Electrum) utilisent leur propre schéma mnémonique distinct de BIP-39. Même si les deux produisent des phrases de 12 mots à partir de listes de mots, l’encodage, les listes de mots et les processus de dérivation diffèrent. Une phrase BIP-39 ne peut pas être utilisée avec le schéma d’Electrum, et inversement. Vérifiez toujours la documentation de votre portefeuille.
Puis-je créer ma propre phrase de seed BIP-39 en choisissant des mots ?
Vous ne devriez pas. Même s’il est techniquement possible de sélectionner 23 mots et de calculer un 24e mot valide (pour satisfaire la somme de contrôle), la sélection humaine de mots ne produit pas une entropie suffisante. La sécurité de BIP-39 dépend du fait que les mots proviennent de données aléatoires de haute qualité, pas d’un choix humain. Laissez un CSPRNG générer l’entropie.
Pourquoi le mot "mnemonic" est-il utilisé comme salt PBKDF2 ?
La chaîne "mnemonic" est un salt fixe spécifié par BIP-39. Lorsqu’une passphrase est utilisée, elle est ajoutée à ce salt (par exemple, "mnemonicMyPassphrase"). L’utilisation d’un salt fixe connu garantit une dérivation de seed cohérente entre toutes les implémentations sans nécessiter d’informations supplémentaires au-delà de la mnémonique et de la passphrase optionnelle.
BIP-39 est-il utilisé uniquement pour Bitcoin ?
Non. BIP-39 est utilisé par pratiquement toutes les cryptomonnaies majeures, y compris Ethereum, Litecoin, Cardano, Solana et bien d’autres. Le processus de génération mnémonique et de dérivation de seed est identique ; seuls les chemins de dérivation de clés ultérieurs (définis par les types de coins BIP-44) diffèrent selon les chaînes.
Quelle est la différence entre BIP-39 et SLIP-39 ?
BIP-39 produit une mnémonique unique qui représente le secret complet. SLIP-39 (Satoshi Labs Improvement Proposal 39) implémente le partage de secret de Shamir, en divisant le secret en plusieurs parts (par exemple, 3-sur-5). N’importe quel nombre de parts atteignant le seuil permet de reconstruire le secret, mais un nombre inférieur de parts ne révèle aucune information. SLIP-39 utilise une liste de mots et un encodage différents de BIP-39.
Combien de mnémoniques BIP-39 valides existent ?
Pour les mnémoniques de 24 mots : 2^256 (environ 1.16 x 10^77). Pour les mnémoniques de 12 mots : 2^128 (environ 3.4 x 10^38). Ces nombres représentent l’espace d’entropie. La somme de contrôle contraint les combinaisons de mots mais ne réduit pas l’entropie — cela signifie simplement que toutes les séquences aléatoires de 24 mots BIP-39 ne forment pas une mnémonique valide.