Aller au contenu
Blockchain Association of Cameroon
BAC-L0-FOUND-1123 h

Portefeuilles, mnémoniques et dérivation

Ce qu'un portefeuille contient réellement — des clés, jamais des fonds — et comment une phrase de douze mots engendre une hiérarchie de comptes.

  • Expliquer la dérivation hiérarchique à partir d'une graine
  • Restaurer un portefeuille depuis sa phrase mnémonique
  • Énoncer les conséquences exactes d'une graine compromise

Un portefeuille ne contient jamais d'argent : il contient des clés, et c'est la chaîne qui contient les fonds. Cet atelier remet ce fait au centre, puis explique comment une phrase de douze mots peut engendrer toute une hiérarchie de comptes grâce à une graine et à la dérivation hiérarchique. Vous manipulerez une version jouet de cette dérivation, clairement distinguée du fonctionnement réel des normes BIP-39 et BIP-32. Vous terminerez par la question qui compte le plus pour la sécurité : que se passe-t-il exactement quand la graine est compromise, et comment sauvegarder et restaurer sans jamais la mettre en danger ?

Leçons 1/4 · 15 min

Un portefeuille contient des clés, pas des fonds

Le téléphone tombé dans l'eau

Dayo laisse tomber son téléphone dans un seau d'eau. L'application de portefeuille est perdue. A-t-il perdu son argent ? La réponse dépend d'une seule chose : a-t-il encore ses clés (ou la graine qui les engendre) ? Si oui, il installe une application sur un autre téléphone et son solde réapparaît. Si non, ses fonds sont toujours sur la chaîne, mais plus personne ne peut les dépenser. Cette différence est le cœur de l'atelier.

Qui est qui

  • Fonds : une ligne de l'état de la chaîne (un solde, ou des sorties non dépensées). Ils vivent sur la chaîne, jamais dans une application ni sur un téléphone.
  • Paire de clés : une clé privée (secrète) et la clé publique qui lui correspond (atelier 105). Signer une transaction avec la clé privée est le seul moyen de dépenser ce qui est verrouillé pour cette clé.
  • Adresse : un identifiant public calculé à partir de la clé publique, par une convention propre à chaque chaîne. Bitcoin fait passer la clé publique par deux fonctions de hachage différentes (SHA-256 puis RIPEMD-160, à ne pas confondre avec le double SHA-256 qui sert aux blocs et aux transactions) puis ajoute un encodage ; Ethereum prend les 20 derniers octets d'un hachage Keccak-256 de la clé publique. Dans les exercices de cet atelier, nous utilisons une convention jouet : les 20 premiers octets du SHA-256 de la clé publique (octets, pas texte). Ce n'est pas celle d'une chaîne réelle.
  • Portefeuille (wallet) : un logiciel ou un appareil qui garde des clés, construit les transactions, les fait signer et affiche des soldes qu'il va lire sur la chaîne. Il n'est pas la banque des fonds.

Les types de portefeuilles

TypeOù est la clé privéeCe que cela change
Sans dépositaire (non-custodial), logiciel (« chaud »)Dans votre applicationPratique ; exposé si l'appareil est infecté
Sans dépositaire, matériel (« froid »)Dans un appareil dédié qui signe sans révéler la cléRéduit l'exposition ; l'appareil peut aussi se perdre
Avec dépositaire (custodial, plateforme d'échange)Chez un tiers qui détient les clésLe tiers peut perdre, geler ou refuser ; vous avez une créance sur lui, pas le contrôle

Exemple : retrouver ses fonds

Dayo avait une adresse A. Les fonds liés à A restent sur la chaîne après la perte du téléphone. Avec une nouvelle application et sa graine, il retrouve la même clé privée, donc la même adresse A, donc la même capacité à signer. Sans la graine, il peut toujours voir le solde de A (les données de la chaîne sont publiques) mais il ne peut plus signer.

Ce que cela ne garantit PAS

  • Perdre l'application ne fait pas perdre les fonds ; perdre les clés, si.
  • Une adresse n'est pas une identité : elle ne dit pas qui la contrôle.
  • Un portefeuille « sécurisé » n'empêche pas de signer une transaction que vous avez approuvée par erreur.
  • La chaîne n'a ni service d'assistance ni « mot de passe oublié » : personne ne peut réinitialiser une clé.

À retenir

Fonds : sur la chaîne. Clé privée : le pouvoir de les dépenser. Adresse : un nom public dérivé de la clé publique. Portefeuille : l'outil qui garde les clés et signe.

Outil interactif

Signature ECDSA P-256

Générez une paire de clés dans votre navigateur, signez un message, puis vérifiez la signature.

La clé privée est créée avec extractable: false : le navigateur la garde en mémoire sans jamais permettre de l'exporter, et elle n'est ni affichée ni stockée. Elle ne vit que dans cet onglet : recharger la page la perd.

Clé publique (SPKI, base64)

Aucune clé pour l'instant. Générez une paire pour signer.

Signature (base64, format P1363 : r ‖ s, 64 octets)

…

ECDSA avec SHA-256 sur la courbe P-256. WebCrypto renvoie r et s concaténés (32 + 32 octets), pas l'encodage DER.

Vérifier une signature

Outil interactif

SHA-256 d'octets hexadécimaux

Collez des octets en hexadécimal : le hachage porte sur les octets, pas sur le texte des chiffres. Un second champ est concaténé après le premier.

Empreinte

…

Espaces, retours à la ligne et préfixes 0x sont ignorés.

Leçons 2/4 · 20 min

Phrase mnémonique et graine (BIP-39)

Pourquoi douze mots ?

Une clé privée fait 32 octets (64 caractères hexadécimaux) : impossible à recopier sans erreur. En outre, si l'on veut plusieurs comptes, il faudrait sauvegarder plusieurs clés. La norme BIP-39 résout le premier problème en codant une valeur aléatoire en mots d'une liste de 2 048 mots ; la dérivation hiérarchique (leçon 3) résout le second.

Comment une phrase est construite (BIP-39 réel)

  1. On tire une entropie aléatoire de 128 bits (16 octets). Pour 24 mots, 256 bits.
  2. On calcule SHA-256 de cette entropie et on garde les 4 premiers bits (entropie en bits ÷ 32) : la somme de contrôle.
  3. On concatène : 128 + 4 = 132 bits, découpés en 12 groupes de 11 bits. Chaque groupe de 11 bits est un indice entre 0 et 2 047 dans la liste de 2 048 mots (2^11 = 2 048). Pour 24 mots : 256 + 8 = 264 = 24 × 11.
  4. La graine (seed) de 64 octets est obtenue avec PBKDF2-HMAC-SHA512, 2 048 itérations, la phrase comme mot de passe et la chaîne « mnemonic » suivie de la passphrase facultative comme sel.

Les mots ne sont pas la clé : ils encodent l'entropie ; la graine est calculée à partir de la phrase elle-même (étape 4), et les clés sont dérivées de la graine.

Exemple : combien de phrases possibles ?

128 bits d'entropie font 2^128 valeurs possibles, un nombre d'environ 3,4 × 10^38. Aucun attaquant ne peut les essayer toutes. En revanche, une phrase que vous choisissez vous-même (une citation, un mot de passe pour « faire joli ») n'a presque aucune entropie : elle se devine. L'aléa doit venir d'un générateur sûr.

La somme de contrôle de 4 bits permet à un logiciel de détecter la plupart des fautes de frappe : si l'on change un mot par un autre de la liste, le contrôle réussit encore une fois sur 16 (2^−4), donc il échoue 15 fois sur 16. Elle ne prouve pas que la phrase est la vôtre : une phrase mal copiée mais valide mène à un autre portefeuille, vide.

La passphrase : un mot de plus qui change tout

Ajouter une passphrase change le sel, donc la graine, donc tous les comptes. Il n'y a aucun message d'erreur si la passphrase est fausse : on obtient un autre portefeuille valide et vide. Utile (une phrase volée sans la passphrase ne donne pas accès aux fonds), mais c'est un second secret à sauvegarder.

Réel et jouet : une frontière à ne pas franchir

Des chaînes différentes ajoutent leurs propres règles. Les outils de l'écosystème Substrate/Polkadot utilisent aussi des mots mnémoniques, mais leur schéma de dérivation n'est pas celui de BIP-32 : les mêmes mots ne donnent pas forcément les mêmes comptes que dans un portefeuille Bitcoin ou Ethereum. Consultez la documentation de l'outil avant de restaurer.

Ce que cela ne garantit PAS

  • Les mots ne sont pas un mot de passe réinitialisable : celui qui les lit contrôle les fonds.
  • La somme de contrôle détecte des erreurs, pas des attaques.
  • Une phrase de 12 mots n'est sûre que si elle a été tirée au hasard par un bon générateur.
  • Deux logiciels qui acceptent la même phrase peuvent dériver des comptes différents (chemin, passphrase, schéma).

À retenir

Entropie → mots (avec somme de contrôle) → graine par PBKDF2 → clés. Les mots sont l'unique sauvegarde, donc l'unique point de vol.

Outil interactif

Convertisseur de bases

Modifiez l'un des trois champs : les deux autres suivent. Les entiers peuvent être aussi grands que vous voulez.

  1. 1
  2. 1
  3. 1
  4. 1
  5. 1
  6. 1
  7. 0
  8. 1
  9. 0
  10. 1
  11. 0
Poids de Hamming (population count) : 8 bits à 1 sur 11. 11 bits significatifs.

Seuls les entiers non négatifs sont traités ici.

Outil interactif

HMAC

Code d'authentification de message : une empreinte qui dépend d'un secret partagé. Sans la clé, impossible de la recalculer.

Format de clé
Format de message

HMAC (hexadécimal)

…

Une clé vide est acceptée (elle équivaut à une clé de zéros).

Leçons 3/4 · 25 min

Dérivation hiérarchique : BIP-32 et sa version jouet

Une graine, beaucoup de comptes

Avec une seule graine, un portefeuille hiérarchique déterministe (HD) engendre un arbre de clés : mêmes entrées, mêmes clés, toujours. On sauvegarde une fois la graine ; les comptes se recréent à volonté, et l'on peut utiliser une nouvelle adresse à chaque paiement reçu.

BIP-32 réel, en résumé

  • Clé maîtresse : on calcule HMAC-SHA512 de la graine avec la clé « Bitcoin seed ». Les 32 premiers octets du résultat forment la clé privée maîtresse, les 32 derniers le code de chaîne (chain code).
  • Clé enfant : on calcule HMAC-SHA512 avec pour clé le code de chaîne du parent. Les données sont : pour une dérivation normale, la clé publique du parent suivie de l'indice sur 4 octets ; pour une dérivation durcie (indice ≥ 2^31), un octet nul, la clé privée du parent, puis l'indice. Le résultat est coupé en deux : la partie gauche est ajoutée, modulo l'ordre de la courbe secp256k1, à la clé parente pour donner la clé enfant ; la partie droite est le nouveau code de chaîne.
  • Chemin : une suite d'indices, notée par exemple m/44'/0'/0'/0/0 (la norme BIP-44 donne le sens des niveaux : objet, type de monnaie, compte, changement, indice d'adresse). L'apostrophe marque une dérivation durcie.

La version jouet du cours

Les exercices utilisent une simplification volontaire : le code de chaîne est la clé d'un HMAC-SHA512 et les données sont la clé parente (32 octets) suivie de l'indice sur 4 octets grand-boutistes. Les 32 premiers octets du résultat sont la clé enfant, les 32 derniers le code de chaîne enfant.

BIP-32 réelVersion jouet
Courbe elliptiqueOui (addition modulo l'ordre de secp256k1)Non
Dérivation normale/durcieDeux modes distinctsUn seul mode
Données du HMACClé publique (normale) ou 0x00 + clé privée (durcie), puis l'indiceClé parente, puis l'indice
Clé maîtresseHMAC avec « Bitcoin seed »Non traitée : valeurs fournies
RésultatCompatible avec les portefeuilles réelsIncompatible : ne produit pas de clé réelle

Ne réutilisez donc jamais ce jouet pour de vraies clés : il illustre la forme de la dérivation (HMAC, code de chaîne, indice), pas son contenu cryptographique.

Exemple : lire la structure

Avec une clé parente, un code de chaîne et un indice 5, le jouet donne un couple (clé enfant, code de chaîne enfant). Avec l'indice 6, on obtient un couple totalement différent (avalanche, atelier 104), mais toujours le même à chaque calcul : c'est ce qui permet de restaurer. Avec l'outil hmac, entrez le code de chaîne comme clé et la concaténation clé parente + indice comme données, puis découpez le résultat de 64 octets avec l'outil bytes.

Pourquoi la différence normale/durcie existe

En dérivation normale, on peut calculer des clés publiques enfants à partir de la seule clé publique du parent et de son code de chaîne : un site marchand peut ainsi produire de nouvelles adresses de réception sans jamais détenir de clé privée. Revers : si quelqu'un connaît le code de chaîne et la clé publique du parent et la clé privée d'un seul enfant normal, il peut remonter à la clé privée du parent. La dérivation durcie coupe ce lien, au prix de ne pas permettre le calcul à partir de la seule clé publique.

Ce que cela ne garantit PAS

  • Une dérivation déterministe n'est pas un secret supplémentaire : qui a la graine et le chemin recalcule tout.
  • Des chemins différents selon les logiciels donnent des adresses différentes à partir des mêmes mots.
  • Chaque chaîne a ses conventions (courbe, format d'adresse, schéma) : le même mnémonique n'implique pas les mêmes comptes ailleurs.

À retenir

Même graine + même chemin = mêmes clés, toujours. BIP-32 réel : HMAC-SHA512, courbe elliptique, normal/durci. Jouet : HMAC-SHA512 seulement, et sans valeur réelle.

Outil interactif

HMAC

Code d'authentification de message : une empreinte qui dépend d'un secret partagé. Sans la clé, impossible de la recalculer.

Format de clé
Format de message

HMAC (hexadécimal)

…

Une clé vide est acceptée (elle équivaut à une clé de zéros).

Outil interactif

Inspecteur d'octets

Collez un hexadécimal, découpez une tranche et lisez-la comme un entier petit-boutiste ou gros-boutiste.

Longueur : 14 octets

0000020000000a006c1f
00084d5e1d00ffff

Tranche en hexadécimal

02000000

Entier non signé petit-boutiste (little-endian)

2

Entier signé petit-boutiste (complément à deux)

2

Entier non signé gros-boutiste (big-endian)

33 554 432

Entier signé gros-boutiste (complément à deux)

33 554 432

Octets en ordre inverse (hex)

00000002

Date UTC de la tranche (petit-boutiste) : 1970-01-01T00:00:02Z

Par exemple l'horodatage d'un en-tête de bloc. Peut être lu depuis la tranche ci-dessus.

2009-01-03T18:15:05Z

Leçons 4/4 · 20 min

Graine compromise, sauvegarde et restauration

La question qui compte : que perd-on exactement ?

Dayo prend en photo sa phrase de 12 mots « pour ne pas l'oublier ». La photo se synchronise sur un stockage en ligne dont le compte est ensuite piraté. Quelles sont les conséquences, exactement ?

Si quelqu'un obtient la phrase (et, le cas échéant, la passphrase), il obtient la graine, donc :

  • Toutes les clés de l'arbre, pour tous les chemins qu'il essaie, y compris les comptes que vous n'avez pas encore créés.
  • Sur toutes les chaînes dont les outils dérivent à partir de cette graine selon un schéma qu'il connaît.
  • Le pouvoir de signer des transactions que les chaînes accepteront comme venant de vous : la chaîne ne distingue pas le propriétaire du voleur.

Et ce qu'il n'obtient pas :

  • Il ne peut pas annuler ou réécrire d'anciennes transactions.
  • Il n'apprend rien sur vos autres mots de passe.
  • Il n'affecte pas les comptes dérivés d'une autre graine.

Il n'existe pas de révocation

Il n'y a pas de procédure de « changement de mot de passe » sur une chaîne. La seule réponse est de déplacer les fonds vers des clés d'une nouvelle graine, générée sur un appareil sain, en commençant par les valeurs les plus élevées. C'est une course : un voleur surveillant vos adresses peut déplacer les fonds avant vous, d'où l'importance de ne pas laisser la graine s'exposer. Une passphrase non divulguée limite les dégâts, mais n'est pas à son tour récupérable si vous la perdez.

Sauvegarder sans s'exposer

  • Écrivez la phrase à la main sur du papier (ou gravez-la sur du métal), jamais dans une photo, un message, une note synchronisée, un courriel ou un gestionnaire de notes en ligne.
  • Conservez au moins deux copies dans deux lieux sûrs différents (incendie, vol, inondation).
  • Séparez la passphrase de la phrase.
  • Testez la restauration : sur un autre appareil ou avec un autre outil, restaurez avec un petit montant, vérifiez que les adresses attendues apparaissent, puis seulement faites confiance à la sauvegarde.

Exemple : « mon solde est à zéro »

Dayo restaure ses 12 mots dans une application différente et voit un solde nul. Ses fonds sont-ils perdus ? Presque certainement non : les causes probables sont un autre chemin de dérivation ou type de monnaie, une passphrase oubliée, un autre schéma (Substrate au lieu de BIP-32), ou une faute de frappe qui a donné une phrase valide mais différente. La réparation : retrouver le chemin et le schéma de l'outil d'origine, pas paniquer ni saisir la phrase dans un site « de récupération ».

Ce que cela ne garantit PAS

  • Une sauvegarde non testée n'est pas une sauvegarde.
  • Une copie papier protège de la panne, pas du vol ni de l'incendie.
  • Une phrase « effacée » après usage d'un appareil n'est pas forcément partie : cache, historique du clavier, presse-papiers.
  • Un portefeuille matériel protège contre les logiciels malveillants au moment de signer, pas contre quelqu'un qui a lu votre phrase.

À retenir

Phrase compromise = tous les comptes présents et futurs compromis, sans révocation. Réponse : déplacer les fonds vers une nouvelle graine. Prévention : sauvegarde hors ligne, copies séparées, restauration testée.

Laboratoire guidé

Le navigateur ne génère ni ne valide de vraie phrase BIP-39, et ce n'est pas un défaut : on ne tape jamais une vraie phrase dans une page web. Les épreuves utilisent des valeurs fictives et la version jouet de la dérivation décrite à la leçon 3, qui n'est pas compatible avec BIP-32. La vraie génération hors ligne, la dérivation de plusieurs comptes et la restauration dans un autre outil forment le laboratoire autonome, à faire avec un portefeuille de test sans valeur.

Le navigateur ne remplace pas un vrai terminal : ce laboratoire entraîne la lecture et le raisonnement ; la pratique réelle est dans le laboratoire autonome.

Un compte certifié est nécessaire

Les activités notées enregistrent des résultats à votre nom et servent de base à un titre. Elles exigent donc un dossier certifiant complet et un consentement en vigueur. Remplir le dossier ne vérifie pas votre identité ; le Secrétariat peut ensuite la vérifier (badge « Vérifié »).

  1. 1.Dériver une adresse (convention jouet)

    Appliquez la convention jouet de la leçon 1 à la clé publique compressée fournie : hachez les OCTETS de la clé (pas le texte hexadécimal) avec l'outil hexhash et gardez les 20 premiers octets, soit 40 caractères hexadécimaux. Cette convention n'est celle d'aucune chaîne réelle.

    Outil interactif

    SHA-256 d'octets hexadécimaux

    Collez des octets en hexadécimal : le hachage porte sur les octets, pas sur le texte des chiffres. Un second champ est concaténé après le premier.

    Empreinte

    …

    Espaces, retours à la ligne et préfixes 0x sont ignorés.

  2. 2.Dériver une clé enfant (version jouet)

    Avec l'outil hmac, calculez HMAC-SHA512 en prenant le code de chaîne parent comme CLÉ (hexadécimal) et comme DONNÉES la clé parente suivie de l'indice sur 4 octets grand-boutistes (en hexadécimal, 8 caractères). Utilisez l'outil bytes pour couper le résultat de 64 octets : les 32 premiers sont la clé enfant, les 32 derniers le code de chaîne enfant. Valeurs fictives, rien de réel.

    Outil interactif

    HMAC

    Code d'authentification de message : une empreinte qui dépend d'un secret partagé. Sans la clé, impossible de la recalculer.

    Format de clé
    Format de message

    HMAC (hexadécimal)

    …

    Une clé vide est acceptée (elle équivaut à une clé de zéros).

    Outil interactif

    Inspecteur d'octets

    Collez un hexadécimal, découpez une tranche et lisez-la comme un entier petit-boutiste ou gros-boutiste.

    Longueur : 14 octets

    0000020000000a006c1f
    00084d5e1d00ffff

    Tranche en hexadécimal

    02000000

    Entier non signé petit-boutiste (little-endian)

    2

    Entier signé petit-boutiste (complément à deux)

    2

    Entier non signé gros-boutiste (big-endian)

    33 554 432

    Entier signé gros-boutiste (complément à deux)

    33 554 432

    Octets en ordre inverse (hex)

    00000002

    Date UTC de la tranche (petit-boutiste) : 1970-01-01T00:00:02Z

    Par exemple l'horodatage d'un en-tête de bloc. Peut être lu depuis la tranche ci-dessus.

    2009-01-03T18:15:05Z
  3. 3.Restauration : un solde nul

    Répondez à la question à choix : une personne restaure ses douze mots dans un autre outil et voit un solde nul. Écartez les causes impossibles, puis choisissez la cause la plus plausible et la bonne conduite à tenir. Appuyez-vous sur les leçons 2, 3 et 4.

  4. 4.Conséquences d'une graine compromise

    Répondez à la question à choix qui décrit une graine qui a fuité. Distinguez avec soin ce que l'attaquant peut faire (comptes présents et futurs, toutes les chaînes concernées) de ce qu'il ne peut pas faire (réécrire l'historique, atteindre une autre graine).

Exercice de sécurité — Hygiène des clés : ce qui ne doit jamais toucher un disque, un presse-papiers ou une conversation

Dayo vient d'ouvrir un portefeuille et de noter ses 12 mots sur papier. Puis, en une soirée, il enchaîne trois gestes : (1) il prend la phrase en photo « au cas où », et la photo se synchronise automatiquement avec son stockage en ligne ; (2) un site « vérificateur de portefeuille » lui promet de contrôler que sa phrase est valide, il la tape ; (3) une personne se présentant comme « support du portefeuille » lui écrit sur une messagerie et lui demande la phrase pour « réactiver son compte ».

Le portefeuille de Dayo contient des fonds sur plusieurs chaînes, tous dérivés de cette seule phrase.

Question de contrôle : quelle est la bonne conduite pour Dayo, compte tenu de ce qu'il a déjà fait ? Répondez à la question à choix qui suit ce scénario.

Questionnaire de l'atelier

Huit questions tirées d'une réserve plus large, seuil de réussite 70 %. Il s'ouvre quand tous les points de contrôle du laboratoire sont réussis. Vous pouvez le repasser : le tirage change.

Un compte certifié est nécessaire

Les activités notées enregistrent des résultats à votre nom et servent de base à un titre. Elles exigent donc un dossier certifiant complet et un consentement en vigueur. Remplir le dossier ne vérifie pas votre identité ; le Secrétariat peut ensuite la vérifier (badge « Vérifié »).

Laboratoire autonome (hors du site)

Non noté en ligne : à réaliser sur votre machine et à publier sur votre dépôt Git.

À faire sur votre machine, hors du site

Rédigez puis testez une procédure de sauvegarde et de restauration réaliste, applicable sans matériel spécialisé. Utilisez uniquement un portefeuille de test sans valeur, jamais une phrase déjà utilisée ailleurs.

  1. Hors ligne (avion, réseau coupé) et sur un appareil de confiance, générez une phrase de 12 mots dans un outil BIP-39/BIP-32 dont vous avez lu la documentation (un portefeuille logiciel libre ou un outil BIP-39 officiel). Vérifiez dans sa documentation qu'il fonctionne hors ligne. Notez la phrase à la main.
  2. Dérivez au moins trois comptes (par exemple trois indices) et notez, pour chacun, le chemin ou le schéma utilisé et l'adresse publique.
  3. Rédigez la procédure pas à pas : où écrire, où stocker deux copies, comment séparer une éventuelle passphrase, qui doit savoir quoi.
  4. Effacez le portefeuille de l'appareil et restaurez-le dans un autre outil de la même famille (BIP-39/BIP-32, même chaîne) en suivant uniquement votre document. Vérifiez que les trois adresses sont identiques. Si elles diffèrent, documentez pourquoi (chemin, type de monnaie, passphrase) : ce sera la partie la plus instructive. Pour aller plus loin, tentez la même restauration dans un outil d'un autre écosystème (par exemple Substrate/Polkadot) et expliquez pourquoi les adresses sont censées différer (leçon 2).
  5. Faites relire votre document par un pair, qui doit réussir la restauration sans vous parler.

Ne photographiez ni ne copiez jamais la phrase dans un appareil connecté. Détruisez la phrase de test à la fin.

À retenir

  • Un portefeuille garde des clés et signe ; les fonds vivent sur la chaîne. Perdre l'application n'est pas perdre les fonds, perdre les clés si.
  • BIP-39 : entropie aléatoire → mots avec somme de contrôle → graine par PBKDF2 ; les mots sont la sauvegarde, donc la cible du vol.
  • BIP-32 : une graine engendre un arbre de clés par HMAC-SHA512, un code de chaîne et un chemin ; la dérivation durcie protège la clé parente.
  • La dérivation des exercices est un jouet (HMAC seulement, sans courbe) : elle illustre la forme, elle ne produit pas de clés réelles.
  • Une graine compromise compromet tous les comptes présents et futurs, sans révocation : on déplace les fonds vers une nouvelle graine ; on prévient par une sauvegarde hors ligne et une restauration testée.

Idées fausses courantes

  • Idée reçue : Mes cryptomonnaies sont stockées dans mon application de portefeuille.

    En réalité : Les fonds sont des données de la chaîne. L'application garde les clés qui permettent de les dépenser et affiche ce qu'elle lit sur la chaîne.

  • Idée reçue : Si je restaure mes 12 mots ailleurs et que le solde est nul, mes fonds ont disparu.

    En réalité : Presque toujours, l'outil dérive un autre chemin, un autre schéma ou une autre passphrase. Les fonds sont intacts sur la chaîne ; il faut retrouver la bonne dérivation, sans jamais saisir la phrase dans un site de « récupération ».

  • Idée reçue : Si la somme de contrôle de ma phrase est valide, la phrase est la bonne.

    En réalité : La somme de contrôle de 4 bits (pour 12 mots) détecte la plupart des fautes de frappe, mais environ une phrase fausse sur seize la passe. Une phrase valide mais différente donne un autre portefeuille, vide.

  • Idée reçue : Si ma graine fuit, je change de mot de passe et tout rentre dans l'ordre.

    En réalité : Une graine n'est pas un mot de passe : il n'existe pas de procédure de changement sur la chaîne. Il faut déplacer les fonds vers des clés d'une nouvelle graine, avant que l'attaquant ne le fasse.

Glossaire

Portefeuille (wallet)
Logiciel ou appareil qui garde des clés, construit et signe des transactions et affiche les soldes lus sur la chaîne. Il ne contient pas les fonds.
Phrase mnémonique (BIP-39)
Suite de mots d'une liste de 2 048 qui encode une entropie aléatoire et une somme de contrôle, et dont on tire la graine.
Graine (seed)
Valeur de 64 octets, issue de la phrase par PBKDF2, dont dérivent toutes les clés du portefeuille.
Code de chaîne (chain code)
Valeur de 32 octets associée à chaque clé de l'arbre HD, utilisée comme clé du HMAC pour dériver les enfants.
Dérivation durcie
Dérivation d'une clé enfant (indice ≥ 2^31) qui utilise la clé privée du parent et interdit de remonter vers elle depuis la clé publique.
Chemin de dérivation
Suite d'indices, notée par exemple m/44'/0'/0'/0/0, qui désigne une clé dans l'arbre HD.
Passphrase
Secret facultatif ajouté comme sel au calcul de la graine : une passphrase différente donne un portefeuille entièrement différent, sans message d'erreur.