Signatures de Schnorr : qu’est-ce que c’est ?
Si vous suivez de près l’actualité de Bitcoin depuis un certain temps, vous avez sans doute déjà dû entendre parler des fameuses signatures de Schnorr. Ces dernières pourraient bien être implémentées dès 2020 sur le réseau Bitcoin. Présentées comme un moyen d’augmenter la scalabilité du réseau et d’améliorer les solutions couches supérieures, analysons ensemble ce que sont les signatures de Schnorr !
Claus-Peter Schnorr
Les signatures de Schnorr, ou plus précisément le protocole d’authentification de Schnorr a été inventé par Claus-Peter Schnorr en 1989. Ces signatures sont réputées parmi les cryptographes comme faisant partie des meilleures existantes. Malheureusement, puisqu’elles étaient protégées par le dépôt d’un brevet au moment de leur création, celles-ci ne font pas l’objet d’une standardisation et ont de ce fait, très peu été implémentées.
Les signatures de Schnorr et Bitcoin
Il aura fallu attendre l’expiration du brevet en 2008 pour voir ces signatures réapparaître. Bien que le développement de Bitcoin ait été initié en 2009, ces signatures n’ont pas été sélectionnées, à cause de leur manque de standardisation. Pour les remplacer, Satoshi a fait le choix d’utiliser les signatures ECDSA qui sont, elles, standardisées et dont la sécurité était éprouvée.
Après plusieurs années de fonctionnement, le réseau Bitcoin a montré ses limites dans des périodes de congestions intenses. En effet, comme l’explique le cryptographe Yannick Seurin, la congestion du réseau entraîne indéniablement une hausse des frais de transactions. Ainsi, quand les blocs (dont la taille est limitée à 1MB) se remplissent, et que le nombre de transactions en attente dans la mempool augmente, les frais de transaction explosent.
Il faut alors trouver une solution pour réduire la taille des données présentes dans les blocs, ce qui entraînera une réduction du nombre de transactions en attente dans la mempool. Comme nous allons le voir plus loin, la signature de Schnorr est une excellente candidate pour résoudre ce problème.
Signatures ECDSA de Bitcoin
Avant d’entrer dans le détail des signatures de Schnorr, examinons dans un premier temps les signatures ECDSA actuellement utilisées sur le réseau Bitcoin.
Pour rappel, dans une transaction, les signatures permettent à l’utilisateur initiateur de prouver la possession d’un montant de bitcoins et de les dépenser.
Dans le cas d’une transaction Bitcoin classique, une transaction nécessite une signature. Dans le cas d’une multisignature, il faut présenter n signatures en entrée pour avoir une sortie.
L’ensemble de ces signatures – point particulièrement important dans le cas des multisignatures – sont insérées dans la transaction sous forme de données, et de ce fait, influencent directement les frais de celle-ci.
Autre point intéressant à noter, selon les estimations, les signatures présentes dans les transactions comptent actuellement pour 28 % à 60 % de la taille totale de la blockchain. Leur optimisation permettrait de gagner de précieux octets sur chaque transaction. Ceci nous amène à notre point suivant.
En quoi les signatures de Schnorr peuvent-elles augmenter la scalabilité ?
Vous devez l’avoir compris, la scalabilité de Bitcoin et la taille des signatures utilisées pour les transactions sont deux notions intrinsèquement liées.
Des chercheurs et développeurs impliqués dans Bitcoin ont creusé la piste des signatures de Schnorr comme solution à ce problème. Comme nous l’avons vu précédemment, les signatures de Schnorr sont réputées pour être plus efficaces et optimisées.
Elles sont également plus petites en taille. Les signatures ECDSA ont une taille variable, mais la majorité oscille entre 71 et 72 octets. Celles de Schnorr – plus efficaces et compactes – ont une taille maximale de 64 octets.
Cependant, ce n’est pas sur ce point qu’elles permettront de réduire drastiquement la taille des données dans les transactions. En effet, les signatures de Schnorr possèdent une propriété mathématique appelée linéarité. Dans ce cas, les signatures peuvent être additionnées entre elles et produire une seule signature en résultat.
Ce procédé est particulièrement intéressant en présence de multisignatures. Dans le cas de l’ECDSA, lors d’une multisignature l’ensemble des n signatures sont stockées dans les données de la transaction, soit n x 71 octets de données. Grâce à la linéarité, les signatures de Schnorr permettent à un ensemble de n signatures d’être agrégées en une seule, et c’est cette unique signature de 64 octets qui sera incluse dans la transaction.
Les signatures de Schnorr pour augmenter la confidentialité
Un peu comme un paquet bonus, les signatures de Schnorr arrivent avec d’autres caractéristiques intéressantes pour le réseau Bitcoin. Parmi ces caractéristiques, les nouvelles signatures permettront d’augmenter la confidentialité des transactions Bitcoin.
En effet, dans le cas des multisignatures, à la différence d’ECDSA où les signatures de l’ensemble des participants sont visibles, les signatures de Schnorr vont agréger les signatures entrantes en une seule. Il sera donc impossible de savoir le nombre ainsi que l’identité des signataires. De plus, les signatures classiques ou celles issues de l’agrégation de plusieurs signatures seront indiscernables.
Plus intéressant encore, les signatures de Schnorr et leur agrégation permettra d’améliorer de manière drastique la confidentialité des procédés comme CoinJoin.
Améliorations futures
En plus de proposer divers avantages en termes de scalabilité et de confidentialité, l’implémentation des signatures de Schnorr est tournée vers le futur. En effet, la mise en place de certaines améliorations proposées pour le réseau Bitcoin, nécessitent ou seraient facilitées par l’implémentation des signatures de Schnorr.
C’est notamment le cas de Taproot, une amélioration de Script, le langage qui permet de programmer des conditions dans les transactions Bitcoin. Taproot entraînera par exemple une réduction de la taille des transactions, tout en permettant d’envisager un avenir de modularités pour l’évolution du code de Bitcoin. Cette amélioration fait d’ailleurs partie de la pull request initiée par Pieter Wuille, aux côtés des signatures de Schnorr.
Enfin, les signatures de Schnorr permettront d’éliminer l’une des principales faiblesses du Lightning Network, à savoir le manque de confidentialité à l’ouverture ou à la fermeture d’un canal de paiement. En effet, grâce aux multisignatures de Schnorr, l’ouverture ou la fermeture d’un canal ne sera plus aussi facilement identifiable qu’auparavant.
Comme nous avons pu le voir, les signatures de Schnorr ont beaucoup à apporter au réseau Bitcoin et justifient l’engouement qui les entoure. Au moment de la rédaction, l’implémentation des signatures de Schnorr est examinée par différents développeurs de Bitcoin.