Choses à savoir: |
- Miniscript permet de construire des portefeuilles logiciels Bitcoin qui rendent une porte dérobée impossible à exploiter. Nous sommes heureux de dire que Ledger est le premier fabricant de portefeuilles matériels commerciaux à prendre en charge le miniscript.
- Les fonctionnalités supplémentaires peuvent être mises en œuvre sans compromettre l'expérience utilisateur. |
Les dispositifs de signature matériels sont conçus pour protéger l'utilisateur contre divers vecteurs d'attaque courants, tels que :
- Accès et extraction non autorisés de la semence
- Logiciels malveillants infectant votre portefeuille logiciel associé
- Vulnérabilités logicielles sur l'appareil lui-même
Comme toute entreprise, il est dans l'intérêt du fabricant de fabriquer des appareils aussi incassable comme ils peuvent. Réussir cette mission est primordial, et les entreprises de sécurité comme Ledger s'appuient sur une réputation bâtie sur leurs antécédents.
Cependant, certains utilisateurs peuvent encore avoir des inquiétudes. Qu'est-ce qui empêche l'entreprise elle-même de cacher un détourné dans les appareils ?
En auto-garde, nous ne fais pas confiance, nous vérifions.
Mais l'utilisateur peut-il vraiment vérifier qu'un appareil n'a pas de porte dérobée ?
C'est la question clé dans laquelle cet article se penche. Plus précisément, cet article aborde les sujets suivants :
- qu'est-ce qu'une porte dérobée et pourquoi il est difficile, voire impossible, de prouver qu'il n'en existe pas ;
- pourquoi seuls les utilisateurs peuvent se protéger de ce risque ;
- comment miniscript permet des solutions pratiques à ce défi pour les portefeuilles bitcoin.
En étant le premier portefeuille matériel à prendre en charge mini-script, nous espérons inspirer les développeurs à créer des solutions sécurisées et à mettre à niveau l'ensemble de notre industrie, et à éliminer le risque qu'un tel risque systémique ne se matérialise un jour.
Comment construire le non dérobable dispositif de signature
Disons-le clairement : vous ne pouvez pas.
Pour vous défendre contre une porte dérobée potentielle, vous avez besoin d'un modèle d'attaque différent de celui que nous avons décrit ci-dessus : dans ce scénario, l'adversaire peut être le fournisseur lui-même ou un initié corrompu.
La solution souvent annoncée à ce problème est l'Open Source : après tout, si vous pouvez inspecter le code, qu'est-ce qui pourrait mal tourner ?
Cependant, la vérité est plus complexe. Étant donné que le fournisseur assemble le matériel, une porte dérobée pourrait être entièrement contenue à l'intérieur. Le matériel pourrait être conçu pour ignorer le logiciel à certains moments et exécuter du code malveillant à la place.
Contrairement aux logiciels qui fonctionnent sur des appareils informatiques à usage général (comme votre ordinateur portable ou votre téléphone), l'examen du matériel est pratiquement impossible avec la technologie d'aujourd'hui. Même si les spécifications matérielles étaient entièrement open source, avec les détails de chaque porte du circuit, vous auriez toujours besoin d'un équipement coûteux pour vérifier qu'une puce spécifique est construite conformément à elles.
Comment faire une porte dérobée d'un portefeuille matériel
Voici quelques-unes des méthodes les plus simples qu'un fournisseur de matériel malveillant pourrait utiliser pour introduire une porte dérobée, ainsi que certaines façons dont les utilisateurs expérimentés peuvent se protéger aujourd'hui.
Génération de graines
De nombreux appareils vous offrent la possibilité de générer une graine (également appelée Phrase secrète de récupération) directement sur l'appareil, à l'aide d'un Véritable générateur de nombres aléatoires.
😈 Le dispositif maléfique pourrait générer des graines qui semblent aléatoires mais qui sont en réalité prévisibles pour l'attaquant.
🛡️ Les utilisateurs expérimentés peuvent contourner ce problème en générant un mnémonique hors ligne. De plus, en incorporant un robuste mot de passe peut également générer une graine entièrement indépendante que le fournisseur de matériel ne peut pas prédire. Le compromis est que les utilisateurs doivent s'assurer qu'ils sauvegardent correctement la phrase secrète en plus des mots mnémoniques.
Dérivation de clé publique
Les portefeuilles matériels dérivent et exportent le clés publiques (aussi appelé xpubs, court pour clé publique étendue tel que défini dans BIP-32L’ xpubs sont utilisés pour générer les adresses possibles de réception des pièces.
😈 L'appareil maléfique pourrait renvoyer les clés publiques contrôlées par l'attaquant au lieu des bonnes clés dérivées de la graine.
🛡️ Les utilisateurs pouvaient valider les dérivés xpub sur un autre appareil hors ligne. Cependant, entrer la graine sur d'autres appareils comporte ses propres risques. Les utilisateurs conscients de la sécurité peuvent considérer tout appareil ayant accédé à la graine comme dangereux, potentiellement au point de le détruire. L'utilisateur typique peut avoir du mal à exécuter correctement cette procédure tout en gérant les risques supplémentaires.
Fuite d'informations
An trou d'air est fréquemment proposé comme solution pour empêcher un dispositif malveillant ou compromis d'exfiltrer des clés privées. Après tout, si un appareil ne peut pas communiquer avec le monde extérieur, il ne peut rien faire de mal, n'est-ce pas ?
Pas assez!
L'appareil peut toujours communiquer lorsqu'il est utilisé : il produit des signatures. Ces signatures se retrouvent dans des transactions qui sont diffusées et stockées pour toujours sur la blockchain.
Une signature est une chaîne d'octets d'apparence aléatoire d'au moins 64 octets. Cependant, étant donné que plusieurs signatures valides peuvent correspondre à un même message, un dispositif malveillant pourrait communiquer quelques informations à chaque fois qu'une signature est produite, en générant plusieurs signatures et en choisissant sélectivement celle à publier.
😈 Un appareil malveillant peut produire des signatures non aléatoires qui, après de nombreuses transactions, révèlent la graine à l'attaquant !
Un attaquant réussissant à installer une telle porte dérobée n'aurait qu'à attendre que des signatures malveillantes apparaissent sur la blockchain jusqu'à ce qu'il dispose de suffisamment d'informations pour reconstruire l'intégralité de la graine.
🛡️ Pour les signatures ECDSA, en utilisant une méthode standardisée de dérivation déterministe du nonce (comme RFC6979) déjoue cette attaque, à condition de valider que la signature produite correspond à celle attendue. Cependant, pour s'assurer que c'est le cas, il faut charger un deuxième appareil avec la même graine, ce qui entraîne les mêmes problèmes pratiques mentionnés dans la section précédente.
🛡️ Une approche intéressante consiste à utiliser une manière intelligente de forcer l'appareil pour choisir en fait un nonce aléatoire. Un protocole à cet effet, connu sous le nom de anti-exfiltration or anti-clepto, est actuellement implémenté dans les portefeuilles matériels Blockstream Jade et ShiftCrypto BitBox02. En savoir plus sur Le blog de ShiftCrypto, qui comprend également une description technique de la façon dont une telle attaque pourrait être exécutée.
Ok alors, il n'y a pas d'espoir ?
La plupart des défenses🛡️ énumérées ci-dessus exigent principalement que l'utilisateur effectue des actions explicites et intrusives afin de se protéger : soit en générant lui-même la graine (essentiellement, en utilisant son cerveau pour remplacer la fonctionnalité du portefeuille matériel), soit en utilisant un appareil supplémentaire pour vérifier que les calculs sont correctement exécutés.
Cependant, le protocole anti-exfil se démarque : étant donné qu'il y a toujours une machine intermédiaire entre le signataire matériel et le monde extérieur, cette machine peut aider. Grâce à un protocole interactif avec le signataire du matériel, il peut imposer l'utilisation d'un nonce véritablement aléatoire, diminuant ou éliminant ainsi le risque de manipuler de manière significative la signature finale.
Dans cet article de blog, nous nous intéressons principalement à ces types de mesures : bien que les stratégies qui détériorent considérablement l'expérience utilisateur puissent être attrayantes pour les utilisateurs expérimentés, elles sont susceptibles de faire avancer les choses. pire en pratique pour les utilisateurs les moins doués techniquement − c'est-à-dire la grande majorité.
Le modèle de sécurité
Modèle standard pour les signataires de matériel
Les fabricants de signataires matériels visent à protéger les utilisateurs contre une variété de menaces potentielles (pour plus de détails, voir Modèle de menace). Dans cet article, nous nous concentrons sur une propriété très importante, qui peut être résumée comme suit :
Les utilisateurs ne peuvent pas être trompés dans une action entraînant une perte de fonds, à condition qu'ils comprennent et vérifient les informations à l'écran avant l'approbation.
L'approbation est nécessaire pour toute action sensible, en particulier les signatures. Protéger la graine serait vain si un logiciel malveillant pouvait produire des signatures pour des messages arbitraires, comme une transaction épuisant tous les fonds !
Il est crucial de souligner que la propriété ci-dessus doit rester vraie même si le portefeuille logiciel est complètement compromis. Ce qui est affiché sur l'écran de votre ordinateur portable/téléphone n'est pas fiable : les logiciels malveillants pourraient remplacer les adresses, vous tromper sur les adresses qui vous appartiennent, présenter une transaction mais en transmettre une autre à l'appareil pour signature, etc.
Par conséquent, le micrologiciel et les applications s'exécutant sur un périphérique de signature matériel considèrent le portefeuille logiciel de manière inhérente non sécurisé et indigne de confiance.
Modèle de sécurité anti-porte dérobée pour les portefeuilles logiciels
Dans cette section, nous inversons complètement les rôles. Nous voulons maintenant concevoir un portefeuille logiciel qui empêche le fabricant de matériel de voler ou de causer une perte de fonds, même si l'appareil est complètement malveillant.
Cela ne peut donc pas être une propriété de dispositif: c'est plutôt une propriété du portefeuille logiciel installation. Nous pourrions le résumer ainsi :
À condition que le portefeuille logiciel ne soit pas compromis, le fabricant du matériel ne peut pas faire perdre de fonds à l'utilisateur.
Cela peut sembler contre-intuitif, car cela contredit directement le modèle de sécurité standard détaillé ci-dessus. Cependant, "ne pas avoir de porte dérobée" signifie "faire exactement ce qu'ils sont censés faire". Étant donné que le portefeuille logiciel est le soleil interface entre l'appareil de signature et le monde extérieur, c'est le seul endroit où la protection contre les comportements inappropriés peut être appliquée − que ce soit à cause d'un bogue ou d'une compromission explicite de l'appareil.
Notez que ce modèle s'étend bien au-delà d'une panne de périphérique, telle qu'un bogue exploitable. Dans ce cas, nous opérons dans un scénario où l'appareil cherche activement à provoquer une perte de fonds.
Bien sûr, il n'y a aucune protection possible si le fabricant a réussi à compromettre tous les deux l'appareil et aussi votre machine qui exécute le portefeuille logiciel. Par conséquent, il est absolument vital de s'assurer que votre portefeuille logiciel est Open Source et auditable, surtout s'il est construit par le même fournisseur qui fabrique le matériel.
Le rôle du mini-script
Miniscript permet aux développeurs de portefeuilles d'utiliser pleinement les fonctionnalités avancées de Bitcoin Script. Pour un aperçu des possibilités incroyables déverrouillées par miniscript, reportez-vous à notre précédent article de blog. Vous voudrez peut-être aussi écouter Épisode 452 du podcast de Stephan Livera pour une discussion sur ce que miniscript apporte au paysage bitcoin.
L'application Ledger Bitcoin prend en charge le miniscript depuis sa version 2.1.0, qui a été déployée en février 2023. Lors de la conférence Bitcoin 2023 à Miami, Wizardsardine a annoncé la version 1.0 de leur Portefeuille liane, le premier portefeuille déployé basé sur miniscript.
L'idée de base de cet article est qu'un compte de portefeuille bitcoin peut être protégé non seulement avec un, mais avec plusieurs clés. Cela permet des cadres de sécurité flexibles où même une panne totale ou la compromission d'une clé n'est pas catastrophique.
Réflexions multisignatures
Multisig est une amélioration significative de la force d'une solution d'auto-garde. En tirant parti de la programmabilité de Bitcoin Script, il permet la création de portefeuilles qui nécessitent plusieurs clés au lieu d'une seule. UN k-de-n le portefeuille multisig nécessite une combinaison de k signatures valides, sur un total de n les possibles.
Cependant, multisig impose également un fardeau UX à l'utilisateur et introduit de nouvelles opportunités d'erreurs. Une configuration multisig 3 sur 3, impliquant trois clés différentes sauvegardées en toute sécurité dans des emplacements séparés, offre une sécurité renforcée… mais cela signifie également que si même un unique clé est perdue, les pièces deviennent définitivement inaccessibles !
Par conséquent, les configurations offrant plus de redondance (comme 2 sur 3 ou 3 sur 5) ont tendance à être plus populaires : si une seule clé est perdue, les autres clés peuvent toujours faciliter la récupération. Mais cela introduit un compromis : si une clé est compromise à votre insu, la sécurité globale est considérablement réduite !
Des entreprises comme Maison ainsi que le Capital déchaîné se spécialisent dans les solutions d'auto-garde où ils détiennent une minorité des clés pour leurs clients. Ils assistent également leurs utilisateurs en les guidant tout au long du processus d'intégration et en simplifiant l'utilisation des systèmes de garde, qui peuvent autrement être intimidants pour la plupart des utilisateurs non techniques.
Miniscript et chemins de récupération verrouillés dans le temps
Liana utilise miniscript pour créer des portefeuilles qui ont plusieurs façons de dépenser :
- une condition de dépense primaire, immédiatement disponible ;
- une ou plusieurs conditions de dépenses supplémentaires qui deviennent disponibles après une certaine période (la soi-disant timelock).
Cela permet de nombreux cas d'utilisation intéressants :
- Récupération: Un portefeuille standard avec une signature unique ou multisig comme principale voie de dépenses ; mais un mécanisme de récupération séparé (une clé avec une graine différente, un multisig, un ami féru de technologie, un dépositaire) devient disponible après 6 mois.
- Gouvernance: Une société avec deux administrateurs pourrait établir un 2 sur 2 pour la trésorerie de la société ; en cas de désaccord, un avocat de confiance pourrait accéder aux fonds après 6 mois.
- Multisig en décomposition: Un portefeuille commence par un 3 sur 3, passe à un 2 sur 3 après 6 mois et devient un 1 sur 3 après 9 mois.
- Héritage automatique: Le chemin de récupération après 6 mois comprend un 2 de 3 de vos trois enfants ; peut-être un deuxième chemin de récupération après 1 an implique un notaire, au cas où les héritiers ne parviennent pas à un consensus.
Remarque: tous les exemples ci-dessus utilisent un verrouillage temporel relatif, qui fait référence à l'âge des pièces (c'est-à-dire : la dernière fois que les fonds ont été déplacés). Le compromis est que l'utilisateur doit se rappeler de dépenser les pièces (en se les envoyant à lui-même) si le timelock approche de l'expiration.
Ce ne sont que quelques exemples, mais ils devraient suffire à convaincre le lecteur que le miniscript est un pas en avant significatif vers la réalisation du potentiel de Bitcoin en tant que argent programmable.
Enregistrement de la politique de portefeuille
Pour les comptes de portefeuille Bitcoin utilisant plusieurs clés (qu'il s'agisse de solutions multisig ou de solutions plus sophistiquées basées sur des miniscripts), il est crucial de former l'appareil pour identifier les adresses qui appartiennent à ce compte. C'est la seule façon dont l'appareil peut aider l'utilisateur à s'assurer qu'il reçoit ou dépense aux bonnes adresses…
Validation de la politique et de la xpubs du cosignataire contre une sauvegarde de confiance est essentielle, mais relativement chronophage.
La bonne nouvelle, c'est qu'il ne faut le faire qu'une seule fois :
Une fois qu'une politique est enregistrée avec un nom (dans l'exemple "Decaying 3of3"), votre appareil sera capable de la reconnaître chaque fois qu'une telle politique est utilisée.
Ceux qui s'intéressent aux détails techniques peuvent trouver plus d'informations dans le Proposition BIP.
Sauvegarde de politique
Un aspect essentiel à noter est que si les politiques multi-clés autorisent un sous-ensemble de clés privées pour autoriser les transactions, la connaissance TOUTE les clés publiques (et les exacte politique) sont nécessaires.
Cependant, contrairement à la graine, la sauvegarde de la politique et des clés publiques est beaucoup moins risquée : si quelqu'un venait à la découvrir, il pourrait retracer toutes les transactions liées à cette politique. Bien que ce ne soit pas idéal, la confidentialité compte ! − ce n'est pas aussi désastreux que de perdre vos pièces et moins attrayant pour les attaquants potentiels. Par conséquent, stocker plusieurs copies de la politique dans des portefeuilles actifs, l'imprimer et la stocker à divers endroits, la chiffrer et la stocker dans un stockage en nuage, etc., sont toutes des stratégies viables.
Le portefeuille à signature unique incontournable
Prenons du recul. Nous avons discuté des portefeuilles multi-signatures, mais maintenant nous revenons aux bases pour créer un portefeuille à signature unique. Plus précisément, nous voulons un portefeuille qui sent ainsi que le regards comme un portefeuille à signature unique, après une phase de configuration initiale. Pourtant, notre objectif est de créer un portefeuille à partir duquel le fabricant ne peut pas voler vos fonds même s'ils sont malveillants 😈, et le dispositif de signature matériel se comporte de manière imprévisible.
L'approche peut facilement être généralisée pour les portefeuilles multi-signatures.
Les exemples ci-dessous seront écrits dans un langage appelé politique, plutôt que miniscript. La politique est plus facile à lire et à réfléchir pour les humains, et peut être compilée en miniscript avec des outils automatisés. En savoir plus sur le miniscript et la politique.
Le portefeuille matériel peut vous protéger dans le modèle de sécurité standard. Miniscript peut vous protéger dans le modèle de sécurité anti-porte dérobée (et bien plus encore !).
Étape zéro : le statu quo
C'est la politique que la plupart des utilisateurs utilisent aujourd'hui : une clé unique dérivée d'une graine produite dans le portefeuille matériel.
pk(key_ledger)
Bien sûr, il n'y a aucun moyen de prouver l'absence d'une porte dérobée.
Première étape : doublez ces clés
La première étape est simple :
and(pk(key_ledger), pk(key_client))
Ici, key_client
est généré sur la machine de l'utilisateur, d'où une Hot Key. Il s'agit essentiellement d'une configuration multisig 2 sur 2. L'aspect clé est que l'utilisateur n'interagit pas beaucoup avec key_client
: le portefeuille logiciel génère cette clé, l'inclut dans la sauvegarde du portefeuille et signe chaque fois que nécessaire (par exemple, lorsque l'utilisateur est occupé à signer avec son signataire matériel).
Cela semble déjà assez intéressant : les fonds sont inutilisables sans key_client
, qui n'est pas disponible pour le fournisseur de matériel ; même si le vendeur malveillant connaissait parfaitement la clé de l'appareil, il serait toujours incapable de déplacer les fonds sans cibler explicitement l'utilisateur, par exemple en compromettant la machine qui exécute son portefeuille logiciel.
Cependant, il y a un problème : lors de l'intégration du portefeuille, le signataire du matériel est la seule entité capable de générer la clé publique (xpub). key_ledger
utilisé dans le portefeuille. Par conséquent, l'appareil pourrait générer intentionnellement un mal xpub contrôlé par l'attaquant, et plus tard refuser (ou être incapable) de signer. On peut dire qu'il s'agit d'un scénario d'attaque assez extrême : le créateur de la porte dérobée ne peut pas voler les fonds, et tout ce qu'il peut faire est de cibler individuellement l'utilisateur et d'exiger une rançon ("Je peux vous aider à récupérer votre argent si vous me payez la moitié").
De manière plus réaliste, cela augmente le risque d'erreurs d'erreurs : vous avez maintenant deux graines / clés privées, et vous avez besoin tous les deux pour pouvoir dépenser. Perdez l'un ou l'autre et les pièces sont verrouillées pour toujours.
Deuxième étape : récupération avec verrouillage du temps
Nous introduisons une clé de récupération distincte, accessible uniquement après un timelock spécifique : and(older(25920)
, pk(key_recovery))
, où 25920 est le nombre approximatif de blocs en 6 mois. La politique complète devient :
or(
and(pk(key_ledger), pk(key_client)), and(after(25920), pk(key_recovery))
)
Ceci est similaire au scénario précédent, mais avec une torsion : si key_ledger
or key_client
devient indisponible pour une raison quelconque (le plus souvent, perte de la sauvegarde de départ !), un chemin de récupération devient accessible après 6 mois.
Il existe plusieurs options pour key_recovery
, chacun avec ses propres compromis :
a. Utiliser un autre Hot Key. C'est une solution pratique tant que l'utilisateur n'oublie pas de réinitialiser le timelock. Cependant, si les touches de raccourci sont compromises (un scénario qui devrait généralement être considéré comme assez probable !), l'attaquant pourrait tenter d'accéder aux fonds dès l'expiration du timelock, initiant une course avec le propriétaire légitime.
b. Utilisez un périphérique de signature matériel distinct. Il s'agit d'une solution robuste qui peut être utilisée en combinaison avec un autre fournisseur si vous le souhaitez ; cependant, cela augmente la complexité de la configuration et le coût pour l'utilisateur en termes d'expérience utilisateur.
c. Utilisez un service externe de confiance. Le portefeuille logiciel pourrait importer un xpub à partir d'un service externe, en l'utilisant comme key_recovery
. Ce tiers n'est approuvé que si le timelock expire, ce qui pourrait être un compromis attrayant pour certains utilisateurs.
Comme mentionné, comme pour toute politique avec timelocks, il est important que l'utilisateur se souvienne de rafraîchir les pièces avant l'expiration du timelock.
Troisième étape : le tiers non fiable
Mélangeons les deux idées (a) et (c) : pour le chemin de récupération, nous avons besoin d'un raccourci clavier local key_recovery_local
Et un key_recovery_remote
qui est hébergé avec un service semi-confiance ; nous conservons également le timelock.
or(
and(pk(key_ledger), pk(key_client)),
and(older(25920),
and(pk(key_recovery_local), pk(key_recovery_remote))
)
)
Cela diminue le niveau de confiance requis de la part du service de récupération. Cependant, nous devons faire preuve de prudence : le service lui-même pourrait surveiller la blockchain et détecter nos UTXO - après tout, ils nous ont fourni le key_recovery_remote
xpub, afin qu'ils puissent rechercher des UTXO contenant des clés publiques dérivées de key_recovery_remote
. Ils pourront en savoir plus sur notre historique financier, même avant l'expiration du délai, et même si nous n'avons jamais utilisé leur service.
Remarque: Les arbres à racine pivotante peuvent éliminer ce problème de confidentialité pour certaines politiques, mais ce n'est pas toujours le cas et nécessite une évaluation minutieuse en fonction de la politique spécifique.
Quatrième étape : aveugler le tiers 🙈
Afin d'empêcher le service de récupération de prendre connaissance de notre historique financier, au lieu d'utiliser la clé publique qu'ils nous communiquent, nous pouvons utiliser un xpub aveugle technique expliqué par mflaxman en détail ici. Bref, au lieu d'utiliser key_recovery_remote
dans notre politique, nous choisissons quatre nombres aléatoires de 31 bits a
, b
, c
, d
(les facteurs aveuglants), et nous utilisons ce qui suit BIP-32 clé publique dérivée :
key_recovery_remote_blind = key_recovery_remote_blind/a/b/c/d
Il est crucial que nous ajoutions également key_recovery_remote
, et les facteurs aveuglants a
, b
, c
ainsi que le d
à notre sauvegarde, pour référence future.
Si jamais nous avons besoin d'utiliser le service de récupération, nous vous révélerons a
, b
, c
, d
pour eux. Jusque-là, ils n'ont aucun moyen de découvrir que les clés dérivées de leur key_recovery_remote
sont en cours de publication sur la blockchain : le nombre de combinaisons possibles pour les 4 facteurs aveuglants est 2^(31*4) = 2^124
, ce qui rend impossible de les forcer tous.
Cinquième étape : trop de touches de raccourci peuvent vous brûler 🔥
Nous avons réussi à rendre notre portefeuille logiciel inviolable. Cependant, nous avons introduit un problème différent : les deux conditions de dépenses utilisent un produit généré localement, chaudes clé qui n'est pas vérifiée par le portefeuille matériel. Par conséquent, si la machine hôte est compromise, cela peut vous inciter à enregistrer la politique à l'aide des pubkeys key_client
ainsi que le key_recovery_local
, mais placez des clés privées aléatoires et sans rapport dans notre sauvegarde (rappelez-vous, le chaudes les clés font partie de notre sauvegarde !).
Cela rendrait essentiellement tous les fonds envoyés au portefeuille indépensable, car personne ne contrôle les clés privées nécessaires à la signature.
Il existe quelques solutions pour résoudre ce problème :
- Lors de l'intégration, après avoir imprimé notre sauvegarde sur papier, nous pouvons utiliser un appareil séparé pour vérifier que les raccourcis clavier privés et publics de la sauvegarde correspondent bien. Cette approche éliminerait le problème, car nous serions certains d'avoir toutes les clés nécessaires à la reconstruction et à la signature.
- Nous pouvons ajouter une autre condition de dépense avec un timelock encore plus long (9 mois, 38880 blocs) qui ne nécessite qu'un
key_ledger_failsafe
à partir du périphérique matériel. De cette façon, dans le pire scénario absolu où tout le reste échoue, nous retombons sur la sécurité d'un seul dispositif de signature. Dans des opérations normales, nous ne laisserions jamais le premier timelock expirer, ainsi, le deuxième timelock n'expirera pas non plus !
Avec la deuxième approche, la politique finale ressemblerait à ceci
or(
and(pk(key_ledger), pk(key_client)),
or(
and(older(25920),
and(pk(key_recovery_local), pk(key_recovery_remote_blind))
),
and(older(38880), pk(key_ledger_failsafe))
),
)
Cette configuration de portefeuille logiciel satisfait à toutes les propriétés de sécurité que nous avons revendiquées au début. De plus, il offre un chemin de récupération au cas où les principales dépenses key_ledger
Sont perdus. Une belle fonctionnalité à avoir !
Intégration au portefeuille logiciel non dérobable
À quoi ressemblerait l'expérience utilisateur d'un portefeuille utilisant une politique aussi complexe ? Voici un bref aperçu :
- L'utilisateur ouvre le portefeuille logiciel et commence à créer un nouveau compte.
- Le portefeuille logiciel invite l'utilisateur à connecter son dispositif de signature et récupère les xpubs pour
key_ledger
ainsi que lekey_ledger_failsafe
. - Le portefeuille logiciel génère de manière autonome la clé de raccourci key_client.
- Le portefeuille logiciel obtient
key_recovery_remote
d'un service de cosignature ou permet à l'utilisateur de spécifier une clé d'une autre manière. En option, il calcule lekey_recovery_remote_blind
en utilisant la technique d'aveuglement mentionnée précédemment. - Le portefeuille logiciel génère une sauvegarde de politique contenant la politique de miniscript précise, tous les xpubs et la clé privée étendue pour le
key_client
touche de raccourci. Cette sauvegarde est stockée en toute sécurité (par exemple, imprimée sur papier ou enregistrée sur un appareil séparé). - Enfin, le portefeuille logiciel demande à l'utilisateur d'enregistrer la politique sur l'appareil. L'utilisateur recoupe la sauvegarde (sur papier ou tout support autre que l'écran piloté par le portefeuille logiciel).
Le portefeuille logiciel gère la plupart des étapes ci-dessus, ce qui rend l'implication de l'utilisateur pas plus lourde que l'effort attendu nécessaire aujourd'hui pour mettre en place un portefeuille multisignature.
L'intégration ne devrait nécessiter que quelques minutes une fois qu'une bonne UX est conçue pour elle. Une fois terminé, le portefeuille logiciel peut offrir une expérience utilisateur très similaire à celle d'un portefeuille à signature unique typique. C'est ainsi que miniscript va tout changer : en disparaissant de la vue de l'utilisateur !
Améliorations de la racine pivotante
Ledger prend en charge le miniscript depuis la version 2.1.0 de l'application Bitcoin, publiée en mars. Bien que la prise en charge de la réception et de la dépense à partir d'adresses taproot ait été activée depuis le fourche molle à racine pivotante en novembre 2021, nous mettons maintenant la touche finale à la prochaine étape de la feuille de route : la prise en charge du miniscript pour la racine pivotante.
Taproot aura un impact énorme sur la convivialité des approches présentées dans cet article. Si le chemin de dépenses principal est une condition de dépenses à clé unique, l'existence de chemins de dépenses de récupération sera indétectable sur la blockchain à moins qu'ils ne soient utilisés. Cela améliorera considérablement la confidentialité en éliminant complètement toutes les empreintes digitales pour le chemin de dépenses standard. De plus, cela améliore l'évolutivité, car le chemin de dépenses standard devient aussi rentable que possible. Cela signifie qu'aucun coût supplémentaire ne sera encouru en raison de la présence de chemins de récupération, à moins qu'ils ne soient utilisés. Il s'agit d'une mise à niveau importante par rapport aux transactions SegWit, qui nécessitent la publication de l'intégralité du script, y compris toutes les conditions de dépenses, lors de toute dépense.
Enfin, des protocoles plus avancés comme MuSig2 (récemment normalisé) et GEL suralimentera le chemin de clé de la racine pivotante. Construits sur les signatures Schnorr, ces protocoles permettent de créer un seul clé publique agrégée qui peut être utilisé pour représenter un n-de-n multisignature ou un k-de-n régime de seuil. Cela permettrait l'utilisation du chemin de clé taproot même dans les cas qui sont aujourd'hui plus couramment représentés avec des scripts multisig spécifiques.
Conclusions
Cet article explore une petite (mais importante) niche du vaste espace de conception que miniscript libère pour les portefeuilles logiciels.
Nous avons montré comment miniscript peut être utilisé pour créer un portefeuille logiciel « non dérobable », tout en ajoutant un chemin de récupération supplémentaire qui permet d'éviter des pertes de clés désastreuses. Bien que les dispositifs de signature matérielle ne puissent pas appliquer le modèle de sécurité anti-porte dérobée, en prenant en charge le miniscript, ils permettent aux portefeuilles logiciels de faire exactement cela !
En utilisant intelligemment une combinaison de schémas multisignatures, de timelocks, de xpubs aveugles et de raccourcis clavier, nous avons démontré une configuration de portefeuille sécurisé qui équilibre sécurité, confidentialité et robustesse.
De plus, nous avons fait valoir que cela était possible sans impact négatif sur l'expérience utilisateur, car la complexité de la configuration ne se traduit pas par une charge UX supplémentaire importante.
Nous sommes ravis des possibilités que miniscript débloquera pour la prochaine génération d'auto-conservation des bitcoins.
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- PlatoData.Network Ai générative verticale. Autonomisez-vous. Accéder ici.
- PlatoAiStream. Intelligence Web3. Connaissance Amplifiée. Accéder ici.
- PlatonESG. Automobile / VE, Carbone, Technologie propre, Énergie, Environnement, Solaire, La gestion des déchets. Accéder ici.
- Décalages de bloc. Modernisation de la propriété des compensations environnementales. Accéder ici.
- La source: https://www.ledger.com/blog/towards-a-trustless-bitcoin-wallet-with-miniscript
- :possède
- :est
- :ne pas
- :où
- $UP
- 1
- 2021
- 2023
- 30
- 7
- 9
- a
- capacité
- Capable
- A Propos
- au dessus de
- Absolute
- absolument
- accès
- accédé
- accessible
- conformité
- Compte
- hybrides
- Action
- actes
- activement
- actually
- ajouter
- ajoutant
- ajout
- Supplémentaire
- En outre
- adresses
- Avancée
- Après
- à opposer à
- âge
- Aide
- objectif
- Tous
- permettre
- permet
- le long de
- déjà
- aussi
- Bien que
- toujours
- an
- ainsi que le
- annoncé
- Une autre
- tous
- quoi que ce soit d'artificiel
- appli
- attirant
- apparaître
- applications
- une approche
- approches
- approbation
- approximatif
- SONT
- étant
- argumenté
- article
- AS
- d'aspect
- aider
- associé
- At
- attaquer
- vérifiable
- autoriser
- Automatisation
- de manière autonome
- disponibles
- RETOUR
- détourné
- soutenu
- support
- sauvegarde
- soldes
- basé
- Essentiel
- En gros
- Basics
- BE
- car
- devenez
- devient
- before
- Début
- va
- ci-dessous
- LES MEILLEURS
- jusqu'à XNUMX fois
- Au-delà
- Bitcoin
- Bitcoin Wallet
- portefeuilles Bitcoin
- Mélangeurs Spéciaux
- blockchain
- Blocs
- Blockstream
- Blog
- tous les deux
- Cerveau
- Apportez le
- diffusion
- Punaise
- construire
- construit
- fardeau
- brûler
- la performance des entreprises
- occupé
- mais
- by
- appelé
- CAN
- ne peut pas
- capable
- prudent
- maisons
- cas
- catastrophique
- Causes
- causer
- prudence
- certaines
- challenge
- Chance
- Change
- Enfants
- puce
- Selectionnez
- choose
- revendiqué
- clairement
- le cloud
- stockage cloud
- code
- Pièces de monnaie
- combinaison
- комбинации
- commercial
- Commun
- communément
- communiquer
- Sociétés
- Société
- De l'entreprise
- complet
- complètement
- complexe
- complexité
- Compromise
- compromettre
- calculs
- informatique
- Préoccupations
- condition
- conditions
- Congrès
- configuration
- NOUS CONTACTER
- Consensus
- par conséquent
- Considérer
- considéré
- contenu
- contrôlée
- contrôles
- convaincre
- correct
- corrompu
- Prix
- pourriez
- Cours
- engendrent
- La création
- création
- créateur
- critique
- aspect critique
- crucial
- Lecture
- gardien
- Garde
- Clients
- dangereux
- Refuser
- diminue
- considérer
- défini
- Demande
- démontré
- déployé
- Dérivé
- la description
- Conception
- un
- voulu
- détail
- détaillé
- détails
- détecter
- mobiles
- dispositif
- Compatibles
- différent
- difficile
- diminuer
- directement
- Administration
- disparaître
- catastrophique
- découvrez
- découverte
- discuté
- spirituelle
- dans
- do
- Ne fait pas
- fait
- double
- deux
- pendant
- chacun
- plus facilement
- même
- effort
- non plus
- éliminé
- l'élimination
- d'autre
- mettre en relief
- employés
- permettre
- activé
- permet
- fin
- imposer
- assez
- assurer
- assurer
- entrant
- alléchantes
- Tout
- entièrement
- entité
- l'équipements
- Erreurs
- notamment
- essential
- essentiellement
- établir
- etc
- évaluation
- Pourtant, la
- JAMAIS
- Chaque
- peut
- exactement
- exemple
- exemples
- excité
- exécuter
- réalisé
- Exercises
- existence
- attendu
- d'experience
- expiration
- Exploiter
- explore
- Exporter
- S'étend
- externe
- extrême
- faciliter
- facteurs
- échoue
- Échec
- équitablement
- Automne
- loin
- Fonctionnalité
- Fonctionnalités:
- Février
- few
- finale
- la traduction de documents financiers
- histoire financière
- Trouvez
- Prénom
- flexible
- Retournement
- Focus
- Abonnement
- suit
- Pour
- toujours
- Avant
- quatre
- cadres
- fréquemment
- Ami
- De
- plein
- d’étiquettes électroniques entièrement
- fund
- fonds
- En outre
- futile
- avenir
- à usage général
- généralement
- générer
- généré
- génère
- générateur
- génération
- donné
- Go
- aller
- Bien
- l'
- considérablement
- ait eu
- Half
- Matériel
- périphérique matériel
- Portefeuille de matériel
- Fabricant de portefeuille matériel
- Portefeuilles de quincaillerie
- nuisible
- Vous avez
- ayant
- vous aider
- d'où
- Histoire
- appuyez en continu
- d'espérance
- hôte
- organisé
- HOT
- Comment
- Cependant
- http
- HTTPS
- majeur
- Les êtres humains
- idée
- idéal
- et idées cadeaux
- identifier
- if
- immédiatement
- Impact
- impactant
- mis en œuvre
- importer
- important
- impossible
- améliorer
- in
- inclut
- Y compris
- incorporation
- Augmente
- l'incroyable
- en effet
- indépendant
- Individuellement
- industrie
- d'information
- intrinsèquement
- initiale
- à l'intérieur
- Insider
- inspirer
- installer
- instance
- plutôt ;
- intentionnellement
- interagir
- Interactif
- intérêt
- intéressé
- intéressant
- Interfaces
- développement
- introduire
- introduit
- Introduit
- intrusif
- participation
- impliquant
- aide
- IT
- SES
- lui-même
- juste
- juste un
- ACTIVITES
- clés
- Savoir
- spécialisées
- connu
- paysage d'été
- langue
- portatif
- Nom de famille
- plus tard
- avocat
- Conduit
- APPRENTISSAGE
- apprentissage
- au
- Ledger
- à gauche
- légitime
- moins
- laisser
- Niveau
- en tirant parti
- comme
- Probable
- lié
- Listé
- chargement
- locales
- emplacements
- fermé
- Location
- plus long
- Style
- ressembler
- perdre
- pas à perdre
- perte
- pertes
- perdu
- click
- Entrée
- Majorité
- a prendre une
- FAIT DU
- Fabrication
- malware
- gère
- les gérer
- manipuler
- manière
- Fabricants
- Fabricants
- de nombreuses
- Mars
- Match
- Mai..
- veux dire
- les mesures
- mécanisme
- moyenne
- mentionné
- seulement
- message
- messages
- méthode
- méthodes
- Miami
- pourrait
- mini-script
- minorité
- Minutes
- Mission
- erreurs
- modèle
- de l'argent
- Stack monitoring
- mois
- PLUS
- Par ailleurs
- (en fait, presque toutes)
- la plupart
- Bougez
- déménagé
- beaucoup
- plusieurs
- Multisig
- must
- prénom
- approchant
- nécessaire
- Besoin
- nécessaire
- Besoins
- négativement
- de mise en réseau
- n'allons jamais
- Nouveauté
- nouvelles
- next
- agréable
- aucune
- non technique
- Ordinaire
- Novembre
- Novembre 2021
- maintenant
- nombre
- numéros
- obtient
- of
- code
- offrant
- Offres Speciales
- direct
- on
- Onboarding
- une fois
- ONE
- et, finalement,
- uniquement
- ouvert
- open source
- ouvre
- d'exploitation
- Opérations
- Opportunités
- Options
- or
- de commander
- Autre
- autrement
- nos
- ande
- décrit
- au contrôle
- plus de
- global
- vue d'ensemble
- propre
- propriétaire
- Papier
- PARAMOUNT
- partie
- particulièrement
- fête
- chemin
- Payer
- Effectuer
- être
- période
- définitivement
- phase
- Téléphone
- Place
- Des endroits
- Platon
- Intelligence des données Platon
- PlatonDonnées
- Point
- des notes bonus
- politiques
- politique
- Populaire
- possibilités
- possible
- peut-être
- Post
- défaillances
- l'éventualité
- power
- Méthode
- pratiquement
- pratique
- précis
- précisément
- prévoir
- Prévisible
- présence
- représentent
- présenté
- empêcher
- empêche
- précédent
- précédemment
- qui se déroulent
- primaire
- impression
- Avant
- la confidentialité
- Privé
- Clé privée
- Clés privées
- Problème
- d'ouvrabilité
- procédure
- processus
- produire
- Produit
- produit
- correctement
- propriétés
- propriété
- proposé
- protéger
- protégé
- L'utilisation de sélénite dans un espace est un excellent moyen de neutraliser l'énergie instable ou négative.
- protection
- protocole
- protocoles
- Prouver
- fournir
- à condition de
- public
- Clé publique
- clés publiques
- publier
- publié
- Édition
- but
- mettre
- Putting
- question
- Race
- aléatoire
- Ransom
- plutôt
- nous joindre
- Lire
- Reader
- réalisation
- raison
- recevoir
- récemment
- reconnaître
- record
- récupération
- se réfère
- vous inscrire
- inscrit
- enregistrement
- relativement
- libérer
- libéré
- compter
- rappeler
- remplacer
- représentent
- représenté
- réputation
- exigent
- conditions
- a besoin
- résultant
- conserver
- retourner
- révéler
- bon
- Analyse
- risques
- Risqué
- feuille de route
- robuste
- solidité
- Rôle
- rôle
- pour le running
- fonctionne
- même
- dire
- Évolutivité
- balayage
- scénario
- programme
- Schémas
- Schnorr
- pour écran
- scripts
- Deuxièmement
- Section
- sécurisé
- en toute sécurité
- sécurité
- sur le lien
- seed
- graines
- recherche
- sembler
- semble
- SegWit
- Auto-garde
- envoi
- sensible
- envoyé
- séparé
- service
- set
- installation
- plusieurs
- Shorts
- devrait
- montré
- signer
- Signatures
- significative
- de façon significative
- signature
- Signes
- similaires
- étapes
- simplifiant
- depuis
- unique
- petit
- smart
- So
- Logiciels
- sur mesure
- Solutions
- RÉSOUDRE
- quelques
- Quelqu'un
- Bientôt
- sophistiqué
- Identifier
- Space
- spécialiser
- groupe de neurones
- caractéristiques
- passer
- Dépenses
- Standard
- peuplements
- départs
- Statut
- étapes
- Étapes
- Encore
- storage
- stockée
- stockage
- les stratégies
- force
- Chaîne
- STRONG
- Lutter
- réussi
- Avec succès
- tel
- résumé
- Surchargez
- Support
- Appuyer
- Les soutiens
- supposé
- systémique
- risque systémique
- Système
- Tacles
- Prenez
- racine pivotante
- Target
- ciblage
- Technique
- techniquement
- Technologie
- conditions
- que
- qui
- La
- Les pièces
- leur
- Les
- se
- puis
- Là.
- ainsi
- donc
- Ces
- l'ont
- des choses
- penser
- Troisièmement
- this
- ceux
- des menaces
- trois
- порог
- Avec
- Ainsi
- fiable
- long
- à
- aujourd'hui
- aujourd'hui
- trop
- les outils
- Les sujets
- Total
- vers
- Tracer
- suivre
- bilan
- Train
- transaction
- Transactions
- transitions
- traduire
- Trésorerie
- Arbres
- oui
- La confiance
- confiance
- sans confiance
- Vérité
- torsion
- deux
- types
- débutante
- incapable
- comprendre
- déchaîne
- contrairement à
- ouvrir
- déverrouille
- imprévisible
- jusqu'à
- améliorer
- us
- convivialité
- utilisé
- d'utiliser
- Utilisateur
- Expérience utilisateur
- utilisateurs
- Usages
- en utilisant
- utiliser
- utilisé
- Utilisant
- ux
- VALIDER
- variété
- divers
- Vaste
- vendeur
- vérifié
- vérifier
- version
- très
- viable
- vital
- vulnérabilités
- attendez
- Wallet
- Portefeuilles
- souhaitez
- était
- Façon..
- façons
- we
- ont été
- Quoi
- quand
- chaque fois que
- que
- qui
- tout en
- la totalité
- why
- Wikipédia
- sera
- comprenant
- dans les
- sans
- des mots
- world
- pourra
- code écrit
- faux
- an
- encore
- Vous n'avez
- Votre
- vous-même
- zéphyrnet
- zéro