Protocole d'authentification de Schnorr

De testwiki
Aller à la navigation Aller à la recherche
Claus-Peter Schnorr en 1986.

En cryptographie, le protocole d'authentification de Modèle:Lien (souvent abrégé protocole de Schnorr) est une preuve à divulgation nulle de connaissance décrite en 1989 par SchnorrModèle:Sfn dont la sécurité repose sur la difficulté du problème du logarithme discret et servant à prouver la connaissance d’un logarithme discret, c’est-à-dire étant donné ga, prouver que l'on connaît l'exposant a dans un groupe G engendré par g.

Ce protocole peut être dérivé en une signature numérique en rendant la preuve non interactive par l'heuristique de Fiat-ShamirModèle:SfnModèle:,Modèle:Sfn. Ce schéma de signature numérique a été breveté aux États-Unis sous le Modèle:Brevet qui expirait en Modèle:Date-.

Depuis 2021, le protocole Bitcoin implémente l'algorithme de signature établi sur le protocole de Schnorr, en plus de l'algorithme ECDSA choisit initialement par Satoshi Nakamoto[1].

Description du protocole de Schnorr

Comme d'autres preuves à connaissances nulles, le protocole de Schnorr est un protocole ΣModèle:Sfn: un protocole entre deux algorithmes interactifs P et V (pour Prouveur et Vérifieur) en trois phases: l'engagement, le défi et la réponse.

Paramètres publics

  • Un nombre q premier. On note qu'il définit un groupe G d'ordre q engendré par g, noté multiplicativement dans la suite.
  • Un élément de groupe g, d'ordre q. C'est ici un générateur d'un sous-groupe d'ordre q de G
  • q,g sont publics.

Données connues uniquement du prouveur

  • Un entier pris au hasard s dans q.
  • Le prouveur calcule v=gs, et v est rendu public, certifié par une autorité de confiance, tandis que s est gardé secret.

Déroulé du protocole

Dans un premier temps, P lance une étape d'engagement:

  • P tire au hasard un entier r dans q.
  • P calcule R=gr et envoie R à V

Ensuite commence la phase du défi:

  • V tire un entier c dans q et l'envoie à P

Finalement, la phase de réponse:

  • P calcule a=rcs et l'envoie à V.

V accepte si et seulement si à l'issue du protocole, la relation R=gavc est vérifiée.

Preuves de sécurité

Pour prouver la sécurité d'un protocole ΣModèle:Sfn, il suffit de prouver la complétude, la robustesse spéciale, et la propriété de non-divulgation de connaissances sous un vérifieur honnête.

Complétude

La complétude (ou correction) requiert que pour un déroulement honnête du protocole, le vérifieur est toujours convaincu.

Cela se vérifie par la condition d'acceptation de V qui donne que gavc=grcsgsc=gr=R, ce qui est toujours vérifié si le protocole s'est déroulé honnêtement.

Robustesse spéciale

La robustesse spéciale dit qu'il existe un extracteur de connaissance qui fonctionne en temps polynomial tel qu'étant donné deux transcriptions acceptantes (R,c,a) et (R,c,a) sous les mêmes paramètres publics, alors l'extracteur renvoie le secret s.

Cet extracteur se construit comme suit dans le cas du protocole de Schnorr : il va calculer et retourner aacc, car cette valeur correspond au logarithme discret de v par g. En effet, les transcriptions (R,c,a) et (R,c,a) étant acceptantes, les relations R=gavc et R=gavc sont vérifiées, donnant ainsi g(aacc)=v puisque c=c.

Non-divulgation de connaissance sous un vérifieur honnête

Cette propriété se caractérise par l'existence d'un simulateur probabiliste qui fonctionne en temps polynomial qui, étant donné (v,c)c est distribué comme un défis correct, alors le simulateur renvoie une transcription (R,c,a) distribuée comme une vraie transcription pour v. On remarque que le simulateur n'a pas besoin du secret.

Ici, le simulateur va donc générer la réponse avant l'engagement: il va tirer a uniformément dans q et va générer R pour qu'il vérifie la condition d'acceptation, c'est-à-dire R=gavc, et va renvoyer (R,c,a). On peut remarquer que R est distribué uniformément puisque son logarithme discret selon la base g l'est. Et par construction a est distribué comme une réponse acceptante vis-à-vis de (R,c).

Taille des paramètres

La spécification du brevet indique que le groupe G doit être choisi comme un sous-groupe d'au moins 140 bits d'un groupe pp est un nombre premier de 512 bits pour 72 bits de sécurité.

Schéma de signature

L'heuristique de Fiat-Shamir peut être utilisée pour transformer le schéma d'identification en signature numérique.

Pour cela une (famille de) fonction de hachage cryptographique :G×{0,1}*q est introduite dans les paramètres publics, et au moment du défi, le tirage aléatoire de c est remplacé par l'évaluation c(R,m)m{0,1}* correspond au message à signer. La signature correspond au couple (c,a) ; au moment de la vérification, R est recalculé comme R=gavc, le vérifieur teste si (R,m)=c et accepte si cette vérification passe. La description complète est donnée ci-dessous.

Description

Une signature numérique est donnée par un triplet d'algorithmes (GenClefs, Signer, Vérifier).

Génération de clefs:

  1. Les paramètres publiques (q et g) sont générées de la même manière que pour le protocole Σ.
  2. Une fonction de hachage :G×{0,1}*q est ensuite générée et rajoutée aux paramètres publiques.
  3. Pour générer une paire de clefs (vk, sk) (v pour vérification, et s pour signature), le signataire commence par tirer uniformément un nombre sq, et va le définir comme sa clef secrète.
  4. Le signataire va ensuite calculer v=gs, et va le publier comme sa clef publique.

Signature(sk, m):

  1. Pour signer un message, le signataire va commencer par tirer un nombre rq au hasard, et définir R=gr.
  2. Le « défi » va ensuite être généré comme c=(R,m), et la réponse calculée comme a=rc𝗌𝗄q.
  3. Finalement la signature est renvoyée: σ=(c,a).

Vérification(vk, m, σ):

  1. Pour vérifier la signature σ=(c,a), un utilisateur commence par recalculer R en utilisant la clef publique : R=ga𝗏𝗄c.
  2. L'utilisateur va ensuite accepter si et seulement si (R,m)=?c.

Efficacité

Cela donne une signature de taille |c|+|a|=280 bits=35 octets suivant les recommandations minimales du brevet pour 72 bits de sécurité.

Sécurité prouvée

Pointcheval et Stern ont montré en 1996 que l'heuristique de Fiat-ShamirModèle:Sfn est sûre dans le modèle de l'oracle aléatoireModèle:Sfn si le schéma d'identification sous-jacent est sûr.

Notes et références

Modèle:Références

Annexes

Bibliographie

Articles connexes

Liens externes


Modèle:Portail