Utilisateur:Qwyvin/Schéma de signature de Merkle

Une page de Wikipédia, l'encyclopédie libre.

Dans la cryptographie basée sur le hachage, le schéma de signature de Merkle est un schéma de signature numérique basé sur des arbres de Merkle (également appelés arbres de hachage) et des signatures uniques telles que le schéma de signature de Lamport. Il a été développé par Ralph Merkle à la fin des années 1970[1] et est une alternative aux signatures numériques traditionnelles telles que le Digital Signature Algorithm ou RSA.

Un avantage du schéma de signature de Merkle est qu'il est censé être résistant aux attaques des ordinateurs quantiques . Les algorithmes à clé publique traditionnels, tels que RSA et ElGamal, deviendraient peu sûrs si un ordinateur quantique efficace pouvait être construit (à cause de l'algorithme de Shor). Le schéma de signature de Merkle, cependant, ne dépend que de l'existence de fonctions de hachage sécurisées. Cela rend le schéma de signature de Merkle très ajustable et résistant aux attaques informatiques quantiques. La signature de Merkle est une signature à usage unique avec un potentiel de signature fini. Le travail de Moni Naor et Moti Yung sur les permutations et les fonctions à sens unique basées sur la signature (et l'invention des fonctions de hachage universelle à sens unique) permet d'étendre une signature de type Merkle à un schéma de signature complet.[2]

Génération de clé[modifier | modifier le code]

Le schéma de signature Merkle peut être utilisé pour signer un nombre limité de messages avec une clé publique . Le nombre de messages possibles doit être une puissance de deux, on notera donc le nombre possible de messages comme .

La première étape de génération de la clé publique est de générer paires de clés privées/publiques d'un schéma de signature unique (comme le schéma de signature de Lamport par exemple). Pour chaque , une valeur de hachage de la clé publique est calculé.

Arbre Merkle à 8 feuilles

On construit un arbre de hachage avec ces valeurs , en plaçant ces valeurs de hachage sous forme de feuilles et en hachant récursivement pour former un arbre binaire. Soit le nœud dans l'arbre avec la hauteur et position gauche-droite . Les valeurs de hachage sont alors les feuilles de l'arbre. La valeur de chaque nœud interne de l'arbre est le hachage de la concaténation des valeurs de ses deux enfants. Par exemple, et . On construit donc un arbre avec feuilles et nœuds.

La clé privée du schéma de signature de Merkle est l'ensemble complet de paires. Un inconvénient du schéma est que la taille de la clé privée évolue linéairement avec le nombre de messages à envoyer.

La clé publique est la racine de l'arbre, . Les clés publiques individuelles peuvent être rendues publiques sans enfreindre la sécurité. Cependant, ils ne sont pas nécessaires dans la clé publique, et peuvent donc être gardés secrets pour minimiser la taille de la clé publique.

Génération de signatures[modifier | modifier le code]

Pour signer un message avec le schéma de signature de Merkle, le signataire choisit une paire de clés , signe le message à l'aide du schéma de signature unique, puis ajoute des informations supplémentaires pour prouver que la paire de clés utilisée était l'une des paires de clés d'origine (plutôt qu'une nouvelle générée par un faussaire).

Arbre Merkle avec chemin A et chemin d'authentification pour i = 2, n = 3

Tout d'abord, le signataire choisit une paire qui n'avait pas été utilisée auparavant pour signer un autre message, et utilise le schéma de signature unique pour signer le message, résultant en une signature et la clé publique correspondante . Pour prouver au vérificateur de message que était en fait l'une des paires de clés d'origine, le signataire inclut simplement les nœuds intermédiaires de l'arbre de Merkle afin que le vérificateur puisse vérifier que a été utilisé pour calculer la clé publique à la racine de l'arbre. Le chemin dans l'arbre de hachage depuis à la racine est nœuds longs. Appelez les nœuds , avec étant une feuille et étant la racine.

est un enfant de . Pour laisser le vérificateur calculer le nœud suivant étant donné le précédent, ils ont besoin de connaître l'autre enfant de , le nœud frère de . Nous appelons ce nœud , pour que . Ainsi, nœuds sont nécessaires, pour reconstruire de . Un exemple de chemin d'authentification est illustré dans la figure de droite.

Ensemble, les nœuds , la , et la signature unique constituent une signature de en utilisant le schéma de signature Merkle : .

On peut noter que lorsqu'on utilise le schéma de signature de Lamport comme schéma de signature unique, contient une partie de la clé privée .

Vérification de la signature[modifier | modifier le code]

Le destinataire connaît la clé publique , le message , et la signature . Tout d'abord, le destinataire vérifie la signature unique du message à l'aide de la clé publique de la signature à usage unique . Si est une signature valide de , le récepteur calcule en hachant la clé publique de la signature à usage unique. Pour , les nœuds de du chemin sont calculés avec . Si est égal à la clé publique du schéma de signature de Merkle, la signature est valide.

  1. Merkle, « Secrecy, authentication and public key systems », Ph.D. Dissertation,‎ , p. 32–61 (lire en ligne)
  2. Naor et Yung, « Universal One-Way Hash Functions and their Cryptographic Applications », Symposium on Theory of Computing,‎ , p. 33–43 (lire en ligne)
  • E. Dahmen, M. Dring, E. Klintsevitch, J. Buchmann, LC Coronado Garca. "CMSS - un schéma de signature merkle amélioré". Progrès en cryptologie - Indocrypt 2006, 2006.
  • E. Klintsevich, K. Okeya, C. Vuillaume, J. Buchmann, E. Dahmen. "Signatures Merkle avec une capacité de signature pratiquement illimitée". 5e Conférence internationale sur la cryptographie appliquée et la sécurité des réseaux - ACNS07, 2007.
  • S. Micali, M. Jakobsson, T. Leighton, M. Szydlo. "Représentation et traversée de l'arbre de merkle fractal". RSA-CT 03, 2003

[[Catégorie:Cryptographie post-quantique]] [[Catégorie:Cryptographie]] [[Catégorie:Pages avec des traductions non relues]]