Glossaire / Protocole et mises à jour
Signature de Schnorr
Aussi appelé BIP340.
- Qu'est-ce qu'une signature de Schnorr ?
- Une signature de Schnorr est le schéma de signature de 64 octets que le bitcoin a adopté avec Taproot, et sa propriété déterminante est la linéarité : plusieurs clés et signatures s'additionnent en une seule.
Spécifié dans BIP-340.
Les signatures ECDSA font 71 ou 72 octets et ne peuvent pas être combinées ; les signatures Schnorr font toujours 64 octets et le peuvent. C'est grâce à cette différence que deux signataires, ou quinze, peuvent produire une seule signature vérifiable contre une seule clé publique, sans que rien on-chain n'indique combien ils étaient. Le bitcoin a reçu ce schéma dans le BIP-340, créé en janvier 2020 et applicable à partir du bloc 709 632.
Comment cela fonctionne
Le schéma utilise la même courbe elliptique que le bitcoin a toujours utilisée, secp256k1, et les mêmes clés privées. Ce qui change, c'est l'algèbre autour.
Pour signer, vous choisissez un nonce secret, publiez le point qu'il génère sous le nom R, et calculez un seul nombre s à partir du nonce, d'un hachage de R avec la clé publique et le message, et de votre clé privée. La signature, c'est R et s écrits sur 32 octets chacun, d'où la longueur fixe de 64 octets. La vérification réorganise la même équation et vérifie que deux points correspondent. ECDSA a besoin d'une inversion modulaire au milieu de cette opération ; Schnorr non, et c'est cette inversion absente qui rend l'ensemble linéaire.
La linéarité est le bénéfice pratique. Additionnez deux clés privées et la somme signe pour la somme des deux clés publiques, si bien qu'un groupe peut détenir une seule clé apparente en commun. Cela permet aussi la vérification par lot : un nœud qui valide un bloc peut vérifier des centaines de signatures en une seule opération agrégée plutôt qu'une par une, ce qui compte surtout pendant le téléchargement initial des blocs.
Deux détails du BIP-340 existent pour éviter les pièges. Les clés publiques sont x-only, 32 octets avec la coordonnée y implicite, ce qui supprime l'ambiguïté que créaient auparavant deux encodages de la même clé. Et chaque hachage est un hachage étiqueté, préfixé par une chaîne de domaine, si bien qu'une signature produite pour un usage ne peut jamais être rejouée comme valide dans un autre protocole qui hache des octets similaires.
Le nonce reste le point délicat. Le réutiliser sur deux messages différents expose la clé privée par simple arithmétique, exactement comme avec ECDSA, et c'est pourquoi le BIP-340 spécifie une dérivation déterministe mêlée à un aléa auxiliaire facultatif plutôt que de laisser le choix aux développeurs.
Ce n'est pas un hasard si rien de tout cela n'est arrivé en 2009. Claus Schnorr détenait le brevet américain 4 995 082 sur le schéma, et celui-ci n'a expiré qu'en février 2008, quelques mois avant la parution du livre blanc du bitcoin. ECDSA était alors le standard libre de droits, si bien que le bitcoin est sorti avec la deuxième meilleure option et a attendu douze ans pour la corriger.
Pourquoi cela compte quand vous achetez du bitcoin
Pour un portefeuille à clé unique, l'effet est une erreur d'arrondi, et pour quiconque protège une somme sérieuse, c'est la cryptographie la plus utile que le bitcoin ait ajoutée.
Commencez par le coût de détenir des bitcoins sur plusieurs appareils. Un montage 2-sur-3 dépensé à l'ancienne publie deux signatures et trois clés publiques dans chaque transaction, si bien que vous payez pour toute la politique à chaque mouvement de fonds. Dépensé de façon coopérative via Taproot, il publie une seule signature, et les autres clés n'apparaissent jamais. L'économie se cumule si vous regroupez de petites sommes, ce que font justement les détenteurs de long terme.
Vient ensuite la conséquence pour la confidentialité, plus importante. Les sociétés d'analyse de chaîne classent les adresses par forme, et le multisig a toujours été une forme bien visible. Les portefeuilles matériels que ce site évalue peuvent servir de co-signataires dans ce type de montage, et avant Taproot, le fait de se protéger correctement indiquait aux observateurs que vous aviez quelque chose qui valait la peine d'être protégé. Une dépense Schnorr coopérative supprime cet indice sans rien affaiblir.
Pour un plan de transmission, le calcul change aussi. Comme les branches inutilisées d'un arbre Taproot ne coûtent rien, vous pouvez ajouter un chemin de récupération différé dans le temps pour un membre de votre famille sans le payer à chaque dépense ordinaire. C'est une option réellement nouvelle, et il vaut la peine de lire notre guide de sécurité avant d'en concevoir un, car le mode de défaillance d'un schéma de conservation astucieux est de perdre l'accès plutôt que d'être volé.
MuSig2 : deux signataires, une signature
MuSig2, normalisé sous le nom de BIP-327, est le protocole qui transforme la linéarité en quelque chose que les portefeuilles peuvent réellement utiliser.
Additionner naïvement des clés publiques entre elles n'est pas sûr. Si un participant apprend la clé de tous les autres avant d'annoncer la sienne, il peut fabriquer une clé qui annule les autres et finir capable de signer seul. C'est l'attaque de la clé malveillante, et MuSig2 la déjoue en pondérant chaque clé par un coefficient dérivé de l'ensemble du groupe, si bien qu'aucun participant ne peut choisir la sienne librement.
Le déroulement de la signature se fait en deux tours. Chaque partie envoie des engagements de nonce, puis chaque partie envoie une signature partielle, et les partielles s'additionnent en une signature Schnorr valide sous la clé agrégée. Les deux tours comptent parce que le premier peut être fait à l'avance, ce qui rend le schéma utilisable dans les canaux Lightning où des signatures sont échangées en continu.
Ce qui arrive on-chain est une seule signature de 64 octets dépensant une seule sortie de chemin de clé. Une dépense coopérative à deux parties coûte environ 57,5 vbytes, moins que tout autre type d'entrée, et l'observateur ne peut pas dire si une personne ou un comité l'a autorisée.
Signature Schnorr vs signature
Sur le bitcoin, le mot signature seul désigne encore généralement ECDSA, et les deux schémas sont utilisés quotidiennement. Les bitcoins situés à une adresse commençant par 1, 3 ou bc1q sont dépensés avec ECDSA, exactement comme en 2010. Les bitcoins à une adresse bc1p sont dépensés avec Schnorr. Un portefeuille qui détient les deux, ce qui est le cas de la plupart des portefeuilles ayant un peu d'historique, produit les deux types dans la même session sans le mentionner. Quiconque vous dit que le bitcoin utilise ECDSA, point final, décrit le protocole tel qu'il était avant novembre 2021.
Signature Schnorr vs MuSig2
Schnorr est le schéma de signature ; MuSig2 est un protocole construit par-dessus. Vous pouvez utiliser Schnorr avec une seule clé indéfiniment sans jamais toucher à MuSig2, ce que fait aujourd'hui tout portefeuille Taproot ordinaire. MuSig2 n'entre en jeu que lorsque plusieurs parties veulent ressembler à une seule, et ce n'est pas la seule option bâtie sur la même propriété : les schémas à seuil qui tolèrent un signataire absent, et les signatures adaptor utilisées pour les échanges atomiques et Lightning, sont des constructions distinctes qui s'appuient sur la même linéarité.