Génération de clés distribuées  : vérifiable et sans revendeur

  • Le partage de secrets Shamir permet de diviser un secret en parties, reconstruites seulement si un seuil d'actions est combiné.
  • Le partage de secrets vérifiables assure la validité des actions sans révéler les détails du partage.
  • La génération de clés distribuées permet à chaque participant de contribuer au processus sans qu'un revendeur ne puisse connaître le secret initial.

Cet article a été publié pour la première fois sur Medium.

La génération de clés distribuées (DKG) est un protocole cryptographique qui permet à plusieurs parties de générer de manière collaborative une clé partagée sans qu'aucune partie n'apprenne la clé dans son intégralité. Il améliore la sécurité dans diverses applications en répartissant la confiance entre plusieurs participants, réduisant ainsi le risque de compromission de clé. Nous introduisons un DKG vérifiable et sans revendeur qui peut être utilisé dans les blockchains.

Partage de secrets Shamir (SSS)

Le partage de secrets de Shamir (SSS) est une méthode cryptographique qui permet de diviser un secret en parties, chaque participant détenant une partie du secret, connue sous le nom de partager. La principale caractéristique du SSS est que le secret ne peut être reconstruit que lorsqu'un nombre prédéfini d'actions, appelé seuil, est combiné. Il s'agit d'un système à seuil, noté (t,n), où n est le nombre total d'actions distribuées et t est le nombre minimum d'actions requis pour reconstruire le secret.

Génération de clés distribuées  : vérifiable et sans revendeur

Au cœur du schéma SSS se trouve le concept mathématique qui les points définissent de manière unique les polynômes. Plus précisément, il faut deux points pour définir une ligne, trois points pour définir une parabole, etc. Ainsi, un polynôme de degré (t-1) est déterminé de manière unique par t points. Dans ce schéma, un polynôme de degré (t-1) est construit tel que chacun des n

les participants sont associés à un point de ce polynôme, qui code un secret. Pour retrouver le polynôme, et donc le secret, seuls t de ces points sont nécessaires. Tout groupe de t participants, chacun détenant sa part, peut reconstruire le polynôme original de degré (t-1). Le secret est intégré dans le polynôme sous la forme de l'ordonnée à l'origine, c'est-à-dire la valeur du polynôme à x=0, ce qui en fait effectivement le terme constant du polynôme. Grâce à cette méthode, le secret peut être récupéré de manière sûre et précise.

Examinons un schéma de partage de secrets (3, 4). L'entité chargée de partager le secret, connue sous le nom de Marchandconstruit un polynôme de degré 2, soit (t-1) :

f(x) = s + a₁x + a₂x²

s représente la valeur secrète à l'origine y (c'est-à-dire f(0)), tandis que une₁ et une₂ sont des nombres aléatoires.

4) SSS avec un revendeur, où s = f(0)SSS se compose de deux processus principaux  :

  • la distribution des parts secrètes : dans la phase de distribution, le dealer divise le secret en plusieurs parties, ou actions, et les distribue entre un ensemble de n (c'est-à-dire 4) participants. Chaque participant Pᵢ reçoit une part sᵢ = f(I)
  • la reconstruction du secret : le processus de reconstruction permet à seulement t (c'est-à-dire 3) participants de combiner leurs parts et de récupérer le secret original, tandis que tout autre groupe inférieur à t parts ne peut rien déduire de significatif sur le secret. Par exemple, les 3 premiers participants peuvent former un ensemble de points (1, s₁), (2, s₂) et (3, s₃) et reconstruire le polynôme unique f(x), généralement en utilisant la méthode d'interpolation de Lagrange. Le secret s est simplement f(0)
  • Partage de secrets vérifiables (VSS)

    Dans Shamir Secret Sharing, un participant ne sait pas si le partage qu'il reçoit est cohérent avec les partages que les autres participants ont reçus. Par exemple, un revendeur malveillant donne à P₁, P₂ et P₃ les actions correctes f(1), f(2) et f(3), mais donne à P₄ une mauvaise action, c'est-à-dire pas f(4). Si P₄ est choisi ultérieurement, la valeur secrète ne peut pas être récupérée correctement.

    Le partage de secrets vérifiables (VSS) est une extension du système de partage de secrets de Shamir qui permet de vérifier l'exactitude des partages d'un secret. Cela se fait sans révéler les partages eux-mêmes, sinon tout le monde connaît tous les partages et peut ainsi récupérer le secret lui-même, ce qui va à l'encontre de l'objectif même du partage du secret.

    Dans VSS, le concessionnaire envoie à chaque participant des engagements sur tous les coefficients polynomiaux, en plus de la part. Une façon de s'engager est d'utiliser une courbe elliptique  :

    c₀ = sG

    c₁ = a₁G

    c₂ = a₂G

    cᵢ s'engage envers aᵢ. G est le point générateur.

    Pᵢ peut vérifier indépendamment la validité de sa part en vérifiant si l'égalité suivante est vérifiée  :

    figue =? c₀ + c₁i + c₂i²

    Ceci est dû au fait

    f(i)G = (s + a₁i + a₂i²)G = sG + a₁iG + a₂i²G = c₀ + c₁i + c₂i²

    Notez qu'elle connaît toutes les informations nécessaires dans l'équation. Si l’équation ne tient pas, elle sait que le croupier est malhonnête et peut simplement mettre fin au contrat.

    Génération de clés distribuées

    Cependant

    La génération de clés distribuées (DKG) résout ce problème en permettant à chaque participant de contribuer au caractère aléatoire global de la clé. Dealerless DKG effectue essentiellement n exécutions indépendantes de VSS. Lors de la ième manche, Pᵢ agit en tant que revendeur pour distribuer le secret sᵢ. Chaque participant collecte les partages secrets des autres participants et le partage final est la somme des partages à chaque exécution. Le secret final est la somme des secrets de toutes les courses.

    Pour comprendre pourquoi, considérons les deux polynômes suivants, représentant les secrets a et b  :

    f₁(x) = a + a₁x + a₂x² + …

    f₂(x) = b + b₁x + b₂x² + …

    Ces deux polynômes peuvent être résumés pour former le polynôme de clé secrète final  :

    f(x) = (a+b) + (a₁+b₁)x + (a₂+b₂)x² + …

    f(x) code le secret a+b, qui est la somme de deux secrets individuels. Ses parts sont également la somme de deux parts individuelles des deux polynômes originaux.

    Nouveau sur la blockchain ? Consultez la section Blockchain pour les débutants de CoinGeek, le guide de ressources ultime pour en savoir plus sur la technologie blockchain.