Explications sur les Signatures Ă  Seuil
Accueil
Articles
Explications sur les Signatures Ă  Seuil

Explications sur les Signatures Ă  Seuil

Avancé
Publié le Jul 21, 2019Mis à jour le Apr 29, 2021
12m
Le systÚme de signature à seuil (TSS, pour Threshold Signature Scheme) est une primitive cryptographique pour la génération et la signature de clés distribuées. L'utilisation de TSS dans les clients blockchain est un nouveau paradigme qui peut offrir de nombreux avantages, en particulier en termes de sécurité. Sur le plan général, la TSS peut influencer la conception de systÚmes de gestion des clés (comme les portefeuille crypto) et ouvrir la voie à une assistance native dans des cas d'utilisation DeFi . Cela dit, la SST en est toujours a ses balbutiements en tant que technologie, et il faut donc tenir compte des risques et des limitations.

Dans cet article, nous couvrirons ce qu'est une TSS, quels sont les avantages potentiels qu'elle apporte Ă  l'espace de la blockchain, comment elle peut ĂȘtre mise en Ɠuvre dans un client blockchain, sa comparaison au partage secret Shamir et au Multisig, les diffĂ©rentes façons de l'utiliser pour une gestion de clĂ©s distribuĂ©es et enfin nous discuterons des risques et des limitations.

Le pouvoir de la cryptographie

Pour comprendre la TSS, nous avons d'abord besoin de connaissances de base Ă  propos de la cryptographie. Depuis les annĂ©es 1970, de plus en plus de systĂšmes Internet (comme TLS et PGP) utilisent la cryptographie asymĂ©trique, qui est aussi connue sous le nom de cryptographie de clĂ© publique (PKC). PKC utilise deux clĂ©s : l'une publique et l'autre privĂ©e. Bien que la clĂ© publique ne soit pas gardĂ©e secrĂšte et puisse ĂȘtre publiĂ©e et utilisĂ©e par quiconque, la clĂ© privĂ©e est un Ă©lĂ©ment d'information secret qui incarne la sĂ©curitĂ© du systĂšme.
Le Chiffrement et les signatures numériques sont les deux usages les plus courants pour PKC. Les systÚmes de chiffrement et de signature numérique dépendent tous deux de trois algorithmes. PremiÚrement, la génération de paires clés privées et publiques. DeuxiÚmement, la génération d'un chiffrement et/ou d'une signature, et troisiÚmement, le processus de déchiffrement/vérification. En ce qui concerne les signatures numériques, l'algorithme de signature nécessite la clé privée, connue uniquement par son propriétaire, pour produire une signature unique. La signature est attachée à un message en particulier, de maniÚre à ce que quiconque détenant la clé publique puisse vérifier son authenticité et son exactitude.


Blockchain

Il ne fait aucun doute que la blockchain est une technologie trĂšs puissante. Elle fournit une couche de consensus qui organise et enregistre les Ă©vĂ©nements. Une telle infrastructure nous donne, Ă  nous les utilisateurs, le pouvoir potentiel de construire des Ă©conomies dĂ©centralisĂ©es et mĂȘme des gouvernements. De maniĂšre assez surprenante, la cryptographie nĂ©cessaire pour exĂ©cuter une blockchain de base peut s'appuyer uniquement sur des signatures numĂ©riques. Dans le contexte d'une blockchain, les clĂ©s privĂ©es reprĂ©sentent des identitĂ©s alors qu'une signature est une dĂ©claration publique ou une revendication faite par une identitĂ©. La blockchain classe les dĂ©clarations et les valide selon un ensemble de rĂšgles, ce qui garantit, entre autres, que les signatures sont infalsifiables et correctes.
Contrairement à la cryptographie plus classique utilisée dans la blockchain, la boßte à outils cryptographiques moderne inclut des tours de magie impressionnants: des preuves à divulgation nulle de connaissance, le chiffrement homomorphique et le calcul multi-parties, pour n'en nommer que quelques-uns. Comme nous l'avons vu au cours de la derniÚre décennie, la recherche sur la blockchain a fortement développé la cryptographie appliquée, avec des percées récentes dans tous les domaines susmentionnés et bien plus encore. 

Dans cet article, nous nous concentrerons sur une seule de ces percées: les signatures à seuil sécurisées (TSS) efficaces.


MPC et le systĂšme de signature Ă  seuil (TSS)

Le calcul multi-partis (MPC pour Multi-Party Computation) est une branche de la cryptographie qui est née avec l'oeuvre fondatrice de Andrew C. Yao, il y a prÚs de 40 ans. Dans le MPC, un ensemble de parties n'ayant aucun lien de confiance les uns envers les autres essaient de calculer conjointement une fonction sur leurs entrées tout en gardant ces entrées privées.

Par exemple, disons que n employés d'une entreprise veulent savoir lequel d'entre eux perçoit le plus haut salaire sans se révéler mutuellement leur salaire réel. Ici, les intrants privés sont les salaires et la sortie sera le nom de l'employé qui perçoit le plus haut salaire. En faisant ce calcul à l'aide de MPC nous nous assurons qu'aucun des salaires n'est divulgué pendant le calcul.

Les deux principales propriétés du MPC sont la justesse et la confidentialité :

  • Justesse: la sortie produite par un algorithme est correcte (comme attendu).

  • ConfidentialitĂ© : les donnĂ©es secrĂštes d'entrĂ©e qu'une partie prenante dĂ©tient ne seront pas divulguĂ©es aux autres parties.

Nous utiliserons MPC pour calculer une signature numĂ©rique de maniĂšre distribuĂ©e. Voyons voir comment les propriĂ©tĂ©s listĂ©es ci-dessus peuvent ĂȘtre appliquĂ©es aux signatures. Rappelez vous, pour les signatures, nous avons trois Ă©tapes Ă  valider:

  • GĂ©nĂ©ration de clĂ©s : la premiĂšre Ă©tape est aussi la plus complexe. Nous devons gĂ©nĂ©rer une clĂ© publique et l'utiliser pour vĂ©rifier les futures signatures. Mais nous devons aussi gĂ©nĂ©rer un secret individuel pour chaque partie, que nous appellerons la bribe secrĂšte. En termes de justesse et de confidentialitĂ©, nous disons que la fonction va produire la mĂȘme clĂ© publique pour toutes les parties d'un cĂŽtĂ©, et de l'autre une bribe secrĂšte pour chacun de ces Ă©lĂ©ments tel que: (1) confidentialitĂ©: aucune donnĂ©e secrĂšte n'est divulguĂ©e entre les parties, et (2) justesse: la clĂ© publique est une fonction des bribes secrĂštes.

  • Signature: cette Ă©tape implique une fonction de gĂ©nĂ©ration de signature. L'entrĂ©e de chaque partie sera sa bribe secrĂšte, crĂ©Ă© comme sortie de l'Ă©tape prĂ©cĂ©dente (gĂ©nĂ©ration de clĂ©s distribuĂ©es). Il y a aussi une entrĂ©e publique connue de tous, qui correspond au message Ă  signer. La sortie sera une signature numĂ©rique, et la propriĂ©tĂ© de confidentialitĂ© s'assure qu'aucune fuite de bribe secrĂšte n'a eu lieu pendant le calcul.

  • VĂ©rification : l'algorithme de vĂ©rification reste tel qu'il est dans le cadre classique. Pour ĂȘtre compatible avec les signatures de clĂ©s uniques, tout le monde ayant connaissance de la clĂ© publique doit pouvoir vĂ©rifier et valider les signatures. C'est exactement les noeuds validateurs de la blockchain font.

Le systÚme de signature à seuil (TSS) est donc le nom que nous donnons à cette composition de génération de clés distribuées (DKG) et de signatures distribuées d'un schéma de signature à seuil.


Combinaison TSS et blockchain

La façon naturelle d'utiliser les TSS dans une blockchain est de modifier un client blockchain pour générer des clés et des signatures à l'aide de TSS. Ici, nous utilisons le client blockchain pour consulter l'ensemble des commandes exécutées par un noeud complet. En pratique, la technologie TSS nous permet de remplacer toutes les commandes privées liées aux clés par des calculs distribués.

Pour l'expliquer plus en détail, nous commençons par décrire briÚvement comment de nouvelles adresses sont créées sur le design d'une blockchain classique. Formulé simplement, nous pouvons créer une nouvelle adresse en générant une clé privée, puis en calculant la clé publique à partir de la clé privée. Puis, l'adresse au sein de la blockchain est dérivée de la clé publique.

Maintenant, en utilisant TSS, nous aurions un ensemble de n parties qui calculent conjointement la clĂ© publique, chacune dĂ©tenant une bribe secrĂšte de la clĂ© privĂ©e (les actions individuelles ne sont pas rĂ©vĂ©lĂ©es aux autres parties). De la clĂ© publique, nous pouvons tirer l'adresse de la mĂȘme maniĂšre que dans un systĂšme traditionnel, rendant la blockchain agnostique Ă  la maniĂšre dont l'adresse est gĂ©nĂ©rĂ©e. L'avantage Ă©tant que la clĂ© privĂ©e n'est plus un point critique localisĂ©, car chaque partie ne dĂ©tient qu'une fraction de celle-ci.

Il en va de mĂȘme lors de la signature des transactions. Dans ce cas, au lieu d'avoir une seule partie qui signe avec sa clĂ© privĂ©e, nous lançons une gĂ©nĂ©ration de signatures distribuĂ©es entre plusieurs parties. Chaque partie peut donc produire une signature valide tant qu'elle agit honnĂȘtement. Encore une fois, nous sommes passĂ©s du calcul local (point critique unique) Ă  un calcul interactif.

Il est important de mentionner que la gĂ©nĂ©ration de clĂ©s distribuĂ©es peut ĂȘtre effectuĂ©e de maniĂšre Ă  permettre diffĂ©rents types de structures d'accĂšs : le paramĂštre gĂ©nĂ©ral "t hors de n" sera capable de rĂ©sister Ă  t Ă©checs arbitraires dans les opĂ©rations liĂ©es Ă  des clĂ©s privĂ©es, sans compromettre la sĂ©curitĂ©.


TSS vs Multisig

Certaines blockchains offrent des fonctionnalités TSS comme une partie intégrée ou programmable du logiciel. Cette fonctionnalité s'appelle multisig ou multi-signature. Pour mieux comprendre les différences, nous pouvons considérer le multisig comme une TSS dans la couche d'application de la blockchain.

En d'autres termes, le multisig et le TSS tentent essentiellement d'atteindre des objectifs similaires, mais le TSS utilise la cryptographie hors chaĂźne, tandis que le multisig se produit sur la chaĂźne. Cependant, la blockchain a besoin d'une maniĂšre d'encoder le multisig, ce qui pourrait nuire Ă  la confidentialitĂ© parce que la structure d'accĂšs (le nombre de signataires) est exposĂ©e sur la blockchain. Le coĂ»t d'une transaction multisig est plus Ă©levĂ© parce que les informations sur les diffĂ©rents signataires doivent Ă©galement ĂȘtre communiquĂ©es sur la blockchain.

Dans la TSS, les dĂ©tails concernant les signataires sont inclus dans une transaction Ă  apparence rĂ©guliĂšre, rĂ©duisant les coĂ»ts et maintenant la confidentialitĂ©. Par contre, le multisig peut ĂȘtre non interactif, ce qui permet d'Ă©viter la difficultĂ© d'utiliser une couche de communication complexe entre les diffĂ©rents signataires.

Le principal point de diffĂ©rence, c'est donc que le multisig est spĂ©cifique Ă  la blockchain et doit ĂȘtre rĂ©implĂ©mentĂ© pour chaque blockchain, et dans certains cas il n'est pas du tout pris en charge. À l'inverse, TSS se fonde sur une cryptographie pure, son support est donc toujours possible. Pour aller plus loin, vous trouverez un article brillant illustrant bien les diffĂ©rences ici.


TSS vs SystĂšme de partage secret Shamir

Le systÚme de partage secret Shamir (SSSS pour Shamir Secret Sharing Scheme) permet de stocker une clé privée d'une maniÚre distribuée de telle sorte que, alors que la clé privée est inutilisée, elle soit stockée dans plusieurs endroits à la fois. Il y a deux différences entre SSSS et TSS :

  • GĂ©nĂ©ration de clĂ©: avec le SSSS, il y a une seule partie appelĂ©e le dealer, qui est en charge de gĂ©nĂ©rer les bribes secrĂštes de clĂ© privĂ©e. Cela signifie qu'au moment de la gĂ©nĂ©ration de clĂ©s, la clĂ© privĂ©e est gĂ©nĂ©rĂ©e Ă  un seul endroit et ensuite distribuĂ©e par le dealer en diffĂ©rents lieux. Dans le TSS, il n'y a pas de dealer car son rĂŽle est distribuĂ© de telle sorte que la clĂ© privĂ©e complĂšte ne se trouve jamais Ă  un seul endroit.

  • Signature : en SSSS, les parties doivent reconstruire la clĂ© privĂ©e complĂšte afin de signer, ce qui donne une fois de plus des points critiques uniques Ă  chaque fois qu'une signature est nĂ©cessaire. Avec la TSS, la signature est effectuĂ©e de maniĂšre distribuĂ©e sans jamais reconstruire les bribes secrĂštes.

Comme nous pouvons le constater, dans le TSS, la clé privée (qui représente la sécurité du systÚme) n'est jamais à un seul endroit et ce peut importe le moment ou les actions en cours.


Portefeuilles Ă  seuil

Un portefeuille basé sur la technologie TSS est un peu différent d'un portefeuille crypto traditionnel. Généralement, un portefeuille conventionnel génÚre une phrase seed et l'utilise pour générer les adresses de maniÚre déterministe. L'utilisateur peut ensuite utiliser cette structure déterministe hiérarchique (HD) pour 1) atteindre les clés privées qui correspondent aux adresses du portefeuille et signer des transactions avec, et pour 2) récupérer toutes les clés du portefeuille en utilisant la phrase seed.

Dans un portefeuille Ă  seuil, les choses sont plus complexes. Bien qu'il soit possible de gĂ©nĂ©rer une structure HD, sa gĂ©nĂ©ration doit ĂȘtre calculĂ©e de maniĂšre distribuĂ©e, comme un autre protocole MPC. Les parties doivent dĂ©cider ensemble de la prochaine clĂ© Ă  utiliser. En d'autres termes, chaque partie aura une phrase seed lui appartenant. Les phrases seed sont gĂ©nĂ©rĂ©es sĂ©parĂ©ment et ne sont jamais combinĂ©es, de sorte Ă  ce qu'une partie seule ne puisse dĂ©river les autres clĂ©s privĂ©es Ă  partir de sa phrase seed.

Les portefeuilles basĂ©s sur TSS ont Ă©galement une fonctionnalitĂ© de sĂ©curitĂ© pratique, qui permet une rotation des clĂ©s privĂ©es sans changer l'adresse de clĂ© publique correspondante ni l'adresse blockchain. La rotation des clĂ©s privĂ©es, aussi connue sous le nom de partage secret proactif, est un autre protocole MPC qui prend les bribes secrĂštes comme entrĂ©e, et donne un nouvel ensemble de bribes secrĂštes en sortie. Les anciennes bribes secrĂštes peuvent ensuite ĂȘtre supprimĂ©es et les nouvelles seront utilisĂ©es Ă  leur place.

Une telle structure ajoute une dimension temporelle Ă  la sĂ©curitĂ©, ce qui signifie qu'un attaquant doit ĂȘtre Ă  plusieurs endroits en mĂȘme temps pour attaquer un portefeuille Ă  seuil. Combiner des bribes secrĂštes avant la rotation et aprĂšs la rotation ne donnera pas d'influence supplĂ©mentaire Ă  l'attaquant s'il veut forger une signature.

Un inconvénient de ce type de portefeuille est que l'absence d'une phrase seed le rend incompatible avec les systÚmes de portefeuille à clé unique. Il est donc important de déterminer quelles parties détiendront les bribes secrÚtes.

Il existe quelques architectures possibles:

  • Externalisation de la TSS : l'utilisateur laissera n serveurs exĂ©cuter le calcul en son nom. Externaliser de maniĂšre concrĂšte la gestion et la signature de la gĂ©nĂ©ration de clĂ©s aux fournisseurs de services qui ne sont pas les propriĂ©taires des actifs, mais qui fournissent une couche de sĂ©curitĂ© en Ă©change de certains avantages ou incitations.

  • Utilisation de plusieurs appareils: l'utilisateur exĂ©cutera la TSS Ă  l'aide de plusieurs appareils qu'il possĂšde. Par exemple - une partie sera un appareil IoT, une autre partie sera le mobile de l'utilisateur, une autre partie son ordinateur portable, etc.

  • Hybride: La TSS s'exĂ©cutera de telle sorte que certaines parties soient contrĂŽlĂ©es par des fournisseurs de services extĂ©rieurs et que certaines parties s'exĂ©cutent sur des appareils appartenant Ă  l'utilisateur.

La premiĂšre mĂ©thode permet de supprimer le gros calcul TSS du cĂŽtĂ© client de l'utilisateur. d'un autre cĂŽtĂ©, les prestataires de services peuvent conspirer (nous supposons que suffisamment d'entre eux ne sont pas attaquĂ©s en mĂȘme temps, mais dans la pratique, ils pourraient) et voler les actifs de l'utilisateur.

La deuxiÚme méthode donne à l'utilisateur un contrÎle complet mais rend difficile la conduite des transactions car il a besoin de plusieurs appareils connectés en ligne afin d'engager le calcul TSS.

La troisiÚme option est considérée comme la meilleure des deux mondes car elle permet à l'utilisateur de mener des transactions facilement et rapidement, mais sans faire de compromis sur une éventuelle possibilité que les transactions soient effectuées sans l'autorisation de l'utilisateur.


TSS et contrats intelligents

Au fil des annĂ©es, les chercheurs ont trouvĂ© de nombreuses utilisations pour les signatures numĂ©riques, et certaines sont, de façon surprenante, trĂšs pertinentes. Comme mentionnĂ©, la TSS est une primitive cryptographique qui peut grandement accroĂźtre la sĂ©curitĂ©. Dans le contexte des blockchain, nous pouvons dire que de nombreuses fonctionnalitĂ©s peuvent ĂȘtre remplacĂ©es par la cryptographie basĂ©e sur TSS. Applications dĂ©centralisĂ©es, solutions de scalabilitĂ© par couche 2 , swaps atomiques, mixage, hĂ©ritage, et bien plus encore. Tout cela peut ĂȘtre implĂ©mentĂ© par-dessus un cadre TSS. Cela permettrait de remplacer les opĂ©rations de contrats intelligents onĂ©reuses et risquĂ©es sur chaĂźne par des alternatives moins coĂ»teuses et plus fiables.
Pour donner quelques exemples concrets : Multi-Hop Locks utilise des signatures Ă  deux parties de maniĂšre intelligente et peut ĂȘtre utilisĂ© comme alternative au rĂ©seau Bitcoin lightning avec un rĂ©seau de canaux de paiement plus sĂ©curisĂ© et privĂ©. ShareLock est probablement la solution de mixage sur chaĂźne la moins chĂšre pour Ethereum, basĂ©e sur la vĂ©rification d'une signature Ă  seuil unique.


Menaces potentielles

Au cours des derniĂšres annĂ©es, les implĂ©mentations de la TSS se sont dĂ©multipliĂ©es de maniĂšre significative. Toutefois, en tant que technologie relativement nouvelle, elle a encore quelques limites et amĂšne certaines prĂ©occupations. ComparĂ©e Ă  la cryptographie de clĂ© publique classique, les protocoles TSS peuvent ĂȘtre trĂšs complexes et doivent encore ĂȘtre testĂ©s sur le terrain. En gĂ©nĂ©ral, la TSS exige des hypothĂšses cryptographiques additionnelles et plus vulnĂ©rables par rapport aux simples signatures numĂ©riques. Par consĂ©quent, des vecteurs d'attaque cryptographique qui n'existaient pas dans les configurations traditionnelles sont maintenant dĂ©couverts (voir cette prĂ©sentation de la confĂ©rence Breaking Bitcoin 2019). Des ingĂ©nieurs de sĂ©curitĂ© et des cryptographistes appliquĂ©s peuvent aider Ă  dĂ©ployer en toute sĂ©curitĂ© des TSS dans votre systĂšme.

Du cÎté positif, les implémentations existantes et nouvelles sont de plus en plus solides en raison d'une augmentation des contributions de qualité, des évaluations par les pairs, des audits et des améliorations de performances algorithmiques.


Pour conclure

Dans cet article, nous avons introduit les bases du systÚme de signature de seuil (TSS), qui est une primitive cryptographique fascinante et possédant le potentiel de changer de maniÚre significative la maniÚre dont nous utilisons la blockchain.

Comme cet article n'a pas discutĂ© de l'ECDSA Ă  seuil qui peut ĂȘtre utilisĂ© dans la Binance Chain et avec Bitcoin, ceux qui s'y intĂ©ressent peuvent se rĂ©fĂ©rer Ă  la liste suivante de documents rĂ©cents. De plus, si vous voulez jouer avec certaines implĂ©mentations TSS, vous pouvez trouver un code pour le portefeuille Binance Chain Ă  deux parties ici ou essayer le portefeuille ZenGo, qui utilise la mĂ©thode hybride pour fournir un portefeuille Binance Chain Ă  deux parties sans dĂ©tention par un tiers.


Lectures additionnelles: