Multisig utilisant plusieurs portefeuilles matériels est souvent considéré comme une amélioration de la sécurité pour des fonds personnels auparavant détenus dans un portefeuille à signature unique. En réalité, il produit souvent l'effet inverse face aux attaques à distance.
Combiner des portefeuilles matériels de plusieurs fabricants est une stratégie populaire pour minimiser le risque d'un point unique de défaillance, par exemple une vulnérabilité grave dans l'un des portefeuilles concernés. Malheureusement, un seul portefeuille matériel faible peut compromettre toute la configuration.
Je travaille sur le portefeuille matériel BitBox02. Lorsque nous avons commencé à étudier comment ajouter correctement le support du multisig, nous sommes tombés sur de nombreux pièges et problèmes de sécurité liés à la manière dont les gens utilisent des portefeuilles matériels pour protéger leurs coins dans une configuration multisig. Notre article de blog qui les résume est l'un de nos billets les plus populaires.
Cet article examine en profondeur ce point court, mais extrêmement important, de l'article d'origine :
Votre portefeuille matériel devrait vérifier, ou vous permettre de vérifier, les informations suivantes fournies par l'ordinateur non fiable : [...]
- Les xpub des cosignataires afin d'empêcher un attaquant de les remplacer
Le périmètre de cet article se limite aux configurations où vous utilisez plusieurs portefeuilles matériels et les gérez depuis un seul ordinateur (ou téléphone mobile).
Mon hypothèse de départ est que votre ordinateur est déjà compromis. La principale proposition de valeur des portefeuilles matériels est de vous protéger contre cela. Si votre ordinateur était sûr, il y aurait peu de raisons d'utiliser des portefeuilles matériels au départ.
Le problème
Il existe de nombreux tutoriels expliquant comment configurer le multisig avec des portefeuilles matériels. En raison de sa complexité, tous font l'une des choses suivantes : ils passent sous silence la vérification des xpub, ils ne peuvent pas l'effectuer faute de support du portefeuille matériel, ou ils la font tout simplement mal. Chacun de ces cas laisse la porte ouverte à un attaquant.
Petit rappel : un xpub, abréviation de extended public key (clé publique étendue), sert à dériver toutes les adresses d'un compte. Dans le cas du multisig, un seuil et un xpub par cosignataire sont combinés pour générer des adresses multisig.
Voyons d'abord ce qui peut mal se passer si les xpub ne sont pas correctement vérifiés.
Ensuite, je montrerai que malgré tous vos efforts, vous n'aurez probablement pas vérifié correctement les xpub si vous n'avez utilisé qu'un seul ordinateur.
Attaque de vol
Les utilisateurs de portefeuilles matériels ont bien appris qu'en dernier ressort, il faut faire confiance à l'écran de l'appareil. Si l'écran de l'appareil affiche quelque chose, cela doit pouvoir être utilisé en toute sécurité.
Ce principe ne tient pas pour les adresses de réception multisig.
Une adresse multisig est dérivée du seuil multisig et de tous les xpub des cosignataires. Un portefeuille matériel ne peut vérifier silencieusement que son propre xpub. Les autres xpub sont fournis par le wallet sur ordinateur, par exemple Electrum.
Un wallet sur ordinateur compromis peut fournir de faux xpub de cosignataires au portefeuille matériel. Par exemple, dans un multisig 2-sur-3, le wallet compromis fournira deux xpub contrôlés par l'attaquant. Après avoir vérifié cette adresse de réception compromise, tous les fonds qui y sont envoyés appartiennent à l'attaquant.
Une mesure de sécurité courante consiste à tester d'abord la configuration multisig : recevoir un petit montant, le dépenser, puis, si tout a fonctionné, y envoyer les fonds importants. Malheureusement, cela ne permet pas d'empêcher cette attaque par vol. Un ordinateur compromis peut simuler toute la procédure de réception et de dépense du montant de test, y compris la vérification sur tous les portefeuilles matériels. Je donnerai plus de détails à ce sujet dans un futur article de blog.
Les mitigations possibles sont :
- Vérifier que la même adresse est affichée sur chaque portefeuille cosignataire. Ce n'est souvent pas faisable. Par exemple, dans une configuration 2-sur-3, le troisième appareil peut se trouver à un endroit distant.
- Une vérification correcte des xpub. J'expliquerai dans un instant pourquoi c'est presque impossible.
Attaque de rançonnage
Dans une attaque de rançonnage, l'attaquant ne vole pas directement les coins, mais contrôle votre accès à ceux-ci. En vous bloquant l'accès à vos coins, l'attaquant peut négocier un paiement pour vous rendre les fonds.
Un exemple simple fonctionne exactement comme l'attaque par vol décrite ci-dessus, mais avec un multisig 2-sur-2 au lieu d'un multisig 2-sur-3. Si un xpub vous appartient et qu'un xpub appartient à l'attaquant, la coopération des deux parties est nécessaire pour débloquer les coins envoyés vers ce compte.
Une attaque plus subtile exploite vos sauvegardes.
Saviez-vous que dans une configuration multisig Bitcoin 2-sur-3, vous avez besoin des trois clés publiques pour pouvoir récupérer vos fonds, et pas seulement de deux ?
— benma (@benma) 17 février 2020
Pour pouvoir restaurer un portefeuille multisig 2-sur-3, le seuil et tous les xpub des cosignataires doivent être connus. La bonne pratique consiste à stocker toutes ces informations avec la sauvegarde de chaque cosignataire. Vous pouvez alors restaurer un wallet même si la seed d'un cosignataire est définitivement perdue ou inaccessible, en utilisant les clés privées des deux autres cosignataires et les trois xpub.
Dans tous les tutoriels multisig et toutes les configurations multisig que j'ai vues ou revues, au mieux, la sauvegarde des xpub a été créée en copiant les xpub fournis par le wallet sur ordinateur, par exemple dans un fichier texte à imprimer.
Un ordinateur compromis peut alors afficher de faux xpub. Même si un seul xpub est incorrect, votre sauvegarde est compromise.
Si un jour vous devez restaurer votre configuration multisig 2-sur-3 en utilisant deux sauvegardes de cosignataires sur trois, vous aurez un problème. En théorie, les deux seeds des cosignataires et les trois xpub sauvegardés avec elles devraient suffire pour récupérer l'accès à vos fonds. Mais si les xpub de la sauvegarde sont incorrects, vous ne pourrez pas les récupérer. Le wallet restauré depuis cette sauvegarde serait un wallet vide et incorrect. L'attaquant serait alors le seul à pouvoir vous aider à récupérer vos fonds.
Pour créer des sauvegardes valides, il faut être certain que les xpub imprimés sur papier correspondent aux xpub affichés sur les écrans des portefeuilles matériels. Selon les portefeuilles matériels utilisés, c'est très difficile, voire impossible, comme nous allons le voir dans la section suivante.
Obstacles à la vérification des xpub
Tableau des obstacles courants. Chaque élément est expliqué plus en détail ci-dessous.
BitBox02 Ledger Trezor Coldcard
Afficher son propre xpub à la demande ✅ ❌ ❌ ✅
Afficher les xpub des cosignataires ✅ ❌ ✅ ✅
Afficher les formats Electrum Zpub... et Ypub... ✅ ❌ ❌ ❌
Enregistrer les xpub dans l'appareil ✅ ❌ ❌ ✅
Afficher son propre xpub à la demande
Pour vous assurer que votre sauvegarde des xpub est correcte, vous devriez vérifier les xpub de votre sauvegarde sur les écrans des portefeuilles matériels, avec un xpub par appareil. Par exemple, lorsque vous utilisez un BitBox02 avec Electrum, vous pouvez cliquer sur l'icône en forme d'œil pour vérifier le xpub sur l'écran du BitBox02 :

Vérification du xpub du BitBox02 dans Electrum
Il est important de vérifier le xpub affiché sur le portefeuille matériel par rapport à l'impression papier, et non par rapport à ce qui est affiché dans le wallet sur ordinateur.
À ma connaissance, seuls BitBox02 et Coldcard offrent cette fonction. Sur le Coldcard, on peut le faire ainsi : allez dans Advanced -> View Identity. Notez l'empreinte de la clé maîtresse. Puis, dans Settings -> Multisig Wallets -> <wallet> -> View Details, vous trouverez le xpub du Coldcard sous l'empreinte de l'appareil.
Afficher les xpub des cosignataires
Lorsque vous vérifiez une adresse de réception sur un appareil, vous ne pouvez lui faire confiance que si les xpub qui composent l'adresse sont eux aussi vérifiés sur l'appareil. BitBox02 :

Vérification des cosignataires sur BitBox02
Le Ledger ne permet actuellement pas d'afficher son propre xpub ni aucun xpub de cosignataire.
L'année dernière, j'ai signalé de manière responsable à SatoshiLabs le problème des attaques de vol ou de rançonnage possibles en raison de l'absence de vérification des xpub. À la suite de cela, le Trezor a acquis la capacité de vérifier les xpub en cliquant sur QR, puis sur XPUBs lors de la vérification d'une adresse de réception :

Vérification des xpub sur Trezor
Le problème, c'est que les xpub sont cachés derrière le QR code, ce qui, à mon avis, n'est pas intuitif. J'ai peur qu'à cause de cela, presque aucun utilisateur de Trezor n'utilise cette fonction importante.
Le Coldcard les affiche pendant la configuration d'un compte multisig.
Le gros problème, de manière générale, est qu'on ne sait pas clairement à quoi comparer les xpub. Disons que vous avez un Trezor, un Ledger et un Coldcard dans une configuration multisig. Les trois xpub sont affichés par le Trezor. Comment les vérifier ?
- Vous ne pouvez pas les vérifier par rapport à ce qu'affiche le wallet sur ordinateur, car cela peut être faux (voir la section précédente « Afficher son propre xpub à la demande »).
- Il faudrait les vérifier par rapport à une copie physique fiable des xpub chaque fois que vous vérifiez une adresse de réception. Créer une telle copie fiable est extrêmement difficile, voire impossible, car les xpub ne peuvent pas être affichés au bon moment sur tous les portefeuilles matériels.
- Ledger n'affiche ni son propre xpub ni aucun xpub de cosignataire, donc il est tout simplement impossible de vérifier le xpub du Ledger.
Afficher les formats Electrum Zpub... et Ypub...
Ce problème apparaît lorsque vous utilisez le populaire wallet Electrum ou tout wallet compatible. Electrum encode les xpub différemment selon le type de compte. Par exemple, les xpub d'un compte multisig en SegWit natif sont au format Zpub..., tandis que les xpub d'un compte multisig en SegWit encapsulé sont au format Ypub.... Voir le tableau complet ici.
Même si tous ces formats encodent la même clé publique étendue, ils ont des apparences complètement différentes. Par exemple :
Zpub72qW3YoLjossD9Z3CCsoiSYQNAsGHPEFiFBR3V2MPxFJtNgKGpEnYqtXyJ8Jz1ypUrwZQXx9av4w3Wi9cX95ZHmBELsM73g53MN4PUm1MD8
encode le même xpub que :
xpub6CGtJyj4sVEY5z1RapqaUC1bJSY7BnZfZkVJZRy3GAf99zUx16XPDbiL8BFfRmT5S7dy2zkunNyL9msFsuA6pLHJfCN6Xpa6cAxu2VvQuRZ.
Vous ne pouvez pas vérifier manuellement qu'ils sont identiques. Il ne s'agit pas simplement de remplacer le préfixe de quatre lettres.
Si un portefeuille matériel ne prend pas en charge ces formats, vérifier les xpub dans Electrum est impossible, même pour des wallets comme Trezor et Coldcard qui sont par ailleurs capables d'afficher des xpub sur leurs écrans. Le Coldcard exporte même les xpub dans les bons formats (Ypub... et Zpub...) sur la carte microSD, mais n'affiche que xpub... lorsqu'il faut les vérifier.
On pourrait utiliser un convertisseur d'xpub pour convertir Zpub... en xpub... avant vérification. Ce n'est évidemment pas infaillible, puisqu'un ordinateur compromis peut modifier le résultat.
À ma connaissance, seul le BitBox02 est capable d'afficher les xpub dans le format exigé par le wallet sur ordinateur :

Vérification du Zpub sur BitBox02
Electrum est probablement le wallet multisig le plus utilisé aujourd'hui, il est donc important de bien prendre en charge ces formats de xpub. Certains pensent qu'ils deviendront obsolètes à mesure que les wallets basés sur des descripteurs seront adoptés. Mais cela peut prendre très longtemps, et nous ne devrions pas attendre.
Enregistrer les xpub dans l'appareil
L'enregistrement de la configuration multisig signifie que vous n'avez à vérifier les xpub qu'une seule fois. L'appareil mémorise la vérification. Après cela, vous pouvez vérifier en toute sécurité les adresses de réception sans vous soucier des xpub des cosignataires.
Le BitBox02 vous permet de vérifier et d'enregistrer les xpub, puis de donner un nom au compte. Lors de la vérification d'une adresse de réception, le nom est affiché, et vous pouvez être sûr que l'adresse appartient bien au compte que vous avez créé et vérifié au départ.

Réception multisig sur BitBox02
Le Coldcard fonctionne de la même manière, sans le nom du compte.
Le Ledger ne vérifie ni n'enregistre aucune donnée multisig.
Même si le Trezor peut afficher les xpub des cosignataires lors de la vérification d'une adresse de réception, il ne les enregistre pas. Cela signifie que vous devez vérifier consciencieusement tous les xpub des cosignataires par rapport à une copie physique fiable chaque fois que vous générez une adresse de réception. La section précédente détaille les difficultés de cette opération. En particulier, vérifier les xpub par rapport à ce qu'affiche le wallet sur ordinateur ne sert à rien, car ces informations peuvent être fausses.
Conclusion et recommandations
Le multisig est difficile. Presque un an après la publication de l'article sur les pièges du multisig, ma conclusion reste la même : les pièges de vérification, de sauvegarde et d'UX peuvent très bien faire que le multisig soit, en pratique, moins sûr que la signature unique. Il existe encore trop de pièges dans la configuration, l'utilisation et la sauvegarde ou récupération des portefeuilles multisig.
L'un de ces pièges est l'absence de vérification des xpub des cosignataires. Le problème le plus urgent est l'impossibilité de vérifier le xpub d'un appareil à la demande, ce qui peut conduire à des attaques de vol à distance ou de rançonnage. J'encourage tous les fabricants de portefeuilles matériels à implémenter cette fonctionnalité et à l'exposer dans des wallets multisig comme Electrum, afin de réduire la difficulté d'une vérification correcte des xpub.
Si vous voulez quand même utiliser le multisig avec des portefeuilles matériels, je recommande d'utiliser plusieurs BitBox02 et de suivre attentivement ce tutoriel.
Si vous tenez à combiner des portefeuilles matériels de plusieurs fabricants, je recommande de vérifier chaque adresse de réception sur tous les portefeuilles matériels, à chaque fois. Cela exclut Ledger, car Ledger ne semble pas capable d'afficher une adresse de réception multisig pour vérification. De plus, je recommande de tester la sauvegarde et la récupération sur un ordinateur séparé et indépendant.
*Publié à l'origine sur *https://benma.github.com
Sécurité suisse 🇨🇭
Nous sommes les créateurs du portefeuille matériel BitBox02. Son architecture sécurisée à double puce reflète nos valeurs en tant qu'entreprise suisse de sécurité open source : elle permet d'utiliser une puce sécurisée pour renforcer physiquement l'appareil, en combinaison avec un firmware entièrement open source. Fabriqué en Suisse, il hérite de notre profond attachement à la qualité et à la vie privée.
En savoir plus sur les menaces potentielles visant les portefeuilles matériels et sur la manière dont nous les empêchons dans notre modèle de menace détaillé du BitBox02.

Le BitBox02 existe en deux éditions : la Multi edition, qui prend en charge plusieurs crypto-actifs et peut être utilisée comme authentificateur de second facteur. Et la Bitcoin-only edition, qui propose un firmware radicalement focalisé : moins de code signifie moins de surface d'attaque, ce qui améliore encore votre sécurité si vous stockez uniquement du Bitcoin.
Découvrez le BitBox02 et commandez le vôtre dès aujourd'hui, nous livrons dans le monde entier !
Foire aux questions (FAQ)
Quelle est la principale préoccupation concernant les configurations multisig utilisant des portefeuilles matériels ? Les configurations multisig utilisant plusieurs portefeuilles matériels sont souvent perçues comme une amélioration de sécurité. Cependant, si elles sont utilisées sur un seul ordinateur, elles peuvent être vulnérables aux attaques de vol à distance ou de rançonnage, surtout si la vérification des xpub n'est pas effectuée correctement.
Pourquoi la vérification des xpub est-elle cruciale dans les configurations multisig ? Le xpub, ou clé publique étendue, sert à dériver toutes les adresses d'un compte. En multisig, un seuil et un xpub par cosignataire sont combinés pour générer des adresses multisig. Si les xpub ne sont pas vérifiés correctement, un attaquant peut les remplacer, ce qui peut entraîner un vol ou une attaque de rançonnage.
Qu'est-ce qu'une attaque par vol dans le contexte des configurations multisig ? Dans une attaque par vol, un wallet sur ordinateur compromis fournit de faux xpub de cosignataires au portefeuille matériel. Par exemple, dans un multisig 2-sur-3, le wallet compromis peut fournir deux xpub contrôlés par un attaquant. Les fonds envoyés à l'adresse qui en résulte appartiendraient alors à l'attaquant.
En quoi une attaque de rançonnage diffère-t-elle d'une attaque par vol ? Dans une attaque de rançonnage, l'attaquant ne vole pas les coins, mais contrôle votre accès à ceux-ci. En vous bloquant l'accès, l'attaquant peut négocier un paiement pour vous rendre les fonds. Cela peut être réalisé en manipulant les xpub, notamment dans des configurations comme un multisig 2-sur-2.
Existe-t-il des portefeuilles matériels qui permettent une vérification correcte des xpub ? Bien que certains portefeuilles matériels, comme BitBox02 et Coldcard, offrent des fonctions de vérification des xpub, d'autres ne le font pas. Il est essentiel de vérifier les xpub par rapport à une copie physique fiable, et pas seulement par rapport à ce qu'affiche le wallet sur ordinateur.
Quelle est la recommandation pour ceux qui veulent utiliser le multisig avec des portefeuilles matériels ? Pour ceux qui tiennent à utiliser le multisig avec des portefeuilles matériels, il est conseillé d'utiliser plusieurs BitBox02 et de suivre des tutoriels spécifiques. Si vous combinez des portefeuilles matériels de différents fabricants, vérifiez chaque adresse de réception sur tous les portefeuilles matériels, à chaque fois.
Shift Crypto est une société privée basée à Zurich, en Suisse. Notre équipe internationale de spécialistes en ingénierie, en cryptosécurité et en développement Bitcoin Core construit les produits BitBox et fournit des services de conseil. Le BitBox02, portefeuille matériel de deuxième génération, permet aux particuliers de stocker, protéger et utiliser facilement des cryptomonnaies. Son compagnon, le BitBoxApp, fournit une solution tout-en-un pour gérer vos actifs numériques en toute sécurité et en toute simplicité.
This post was translated with the help of AI