• Aucun résultat trouvé

2.5 Protocoles cryptographiques sur les courbes elliptiques

2.5.2 Protocoles de signatures

Les protocoles de signatures sont utilis´es pour pouvoir authentifier une entit´e, ga- rantir l’int´egrit´e d’une information ou garantir la non-r´epudiation d’une information. Ainsi, une signature cryptographique est, mutatis mutandis, identique `a la signature manuscrite que nous pouvons trouver sur un document papier. Un protocole de signature est divis´e en deux parties :

• Signature : la premi`ere partie consiste en la construction d’une signature `a partir d’une clef priv´ee et du message `a signer. Cette op´eration est sensible, car les calculs effectu´es manipulent des donn´ees secr`etes telle que la clef priv´ee de l’entit´e signataire. Si cette clef fuit, un attaquant pourra alors forger des signatures `a la place de l’entit´e l´egitime.

• V´erification : la deuxi`eme consiste `a v´erifier qu’une signature s associ´ee `a un message m est valide, i.e. valider que s est li´e math´ematiquement `a m et `a la clef publique associ´ee `a la clef priv´ee qui a servi `a signer m. Cette op´eration ne manipule que des donn´ees publiques, ainsi, la v´erification d’une signature ne sera pas sensible `a des attaques physiques, car la clef priv´ee n’est pas utilis´ee. ´

Etant donn´ee une courbe elliptique E et un point P d’ordre n sur cette derni`ere, nous pouvons construire la paire de clefs priv´ee/publique compos´ee d’un nombre al´eatoire a pour sa partie priv´ee et du point aP pour sa partie publique. Cette paire de clefs est de la mˆeme forme pour tous les protocoles de signatures sur les courbes elliptiques que nous consid´ererons dans le reste de cette ´etude.

Il existe plusieurs protocoles de signature utilisant les courbes elliptiques tels que l’Elliptic Curve Digital Signature Algorithm (ECDSA) [Gal13] ou l’Edwards Digital Signature Algoritm (EdDSA) [BDL+11a]. Ces protocoles sont standardis´es par le

NIST [Gal13] pour l’ECDSA ou par une RFC [JL17] dans le cas de l’EdDSA. Ces protocoles de signatures d´erivent du protocole de signature de Schnorr [Sch90] qui a fait l’objet d’un brevet qui est pass´e dans le domaine public en 2008. Une si- gnature construite `a partir de ce protocole est un couple (R, s) et est g´en´er´ee `a partir de :

• E : les param`etres d´efinissant la courbe elliptique utilis´ee. • P : un point de la courbe de grand ordre.

• n : l’ordre du point P

• hash : une fonction de hachage. Ces fonctions ne font pas l’objet de cette ´etude et ne seront donc pas d´ecrites.

Une signature d’un message m est alors calcul´ee `a l’aide d’une clef priv´ee a : R = rP

La v´erification de la signature (R, s) du message m s’effectue `a partir de la clef publique Q associ´ee `a la clef priv´ee a.

Ainsi, nous devons calculer R0 = sP − hash(R, m)Q et v´erifier que : hash(R0, m) = hash(R, m)

Ce protocole est correct car :

R0 = sP − hash(R, m)Q = sP − hash(R, m)aP

= (r + hash(R, m)a)P − hash(R, m)aP = rP

= R

L’ECDSA a l’avantage d’offrir des signatures al´eatoires, i.e. que pour un mˆeme message m et une mˆeme paire de clefs publique/priv´ee le calcul d’une signature ECDSA donnera deux signatures diff´erentes mais valides. Les algorithmes 2.16, 2.17 de signature et v´erification vont prendre en param`etre le mˆeme ensemble de donn´ees publiques que le protocole de Schnorr :

Algorithme 2.16 Signature ECDSA. Entr´ees une clef priv´ee a, un message m Sorties: (r, s) la signature associ´ee `a m

H(m) ← hash(m) Faire Faire k ← un al´ea entre 1 et n − 1 (x, y) ← kP Tant que x = 0 r ← x[n] s ← k−1(H(m) + ar)[n] Tant que s = 0 Retourner (r, s)

Algorithme 2.17 V´erification ECDSA.

Entr´ees m un message, (r, s) la signature associ´ee, Q la clef publique associ´ee `a la clef priv´ee qui a servi `a signer le message.

Sorties: Retourne vrai si la signature est correcte, faux sinon H(m) ← hash(m) u = H(m)s−1[n] v = rs−1[n] (x, y) = uP + vQ Si x 6= r alors Retourner Faux Fin Si Retourner Vrai

Nous pouvons montrer qu’une signature produite par l’algorithme 2.16 sera bien valid´ee par l’algorithme 2.17.

uP + vQ = H(m)s−1G + rs−1Q = H(m)s−1G + rs−1aG = (H(m) + ar)s−1G = (H(m) + ar)k(H(m) + ar)−1G = kG = (x, y)

L’EdDSA quant `a lui est un protocole de signature publi´e en 2011 par Bernstein et al., [BDL+11b, BJL+15], il a pour vocation initiale pour vocation d’ˆetre utilis´e avec la courbe elliptique Curve25519, mais peut tr`es bien ˆetre utilis´e avec tout autre courbe elliptique. Les algorithmes 2.18 et 2.19 pr´esentent respectivement la signature et la v´erification de signatures effectu´ees par ce protocole.

Algorithme 2.18 Signature EdDSA.

Entr´ees une clef priv´ee a, la clef publique associ´ee Q, un message m Sorties: (R, s) la signature associ´ee `a m

H(a, m) ← hash(a, m) R ← H(a, m)P

H(R, Q, m) ← hash(R, Q, m) s ← (H(a, m) + H(R, Q, m)a)[n] Retourner (R, s)

Algorithme 2.19 V´erification EdDSA.

Entr´ees m un message, (R, s) la signature associ´ee, Q la clef publique associ´ee `a la clef priv´ee qui a servi `a signer le message.

Sorties: Retourne vrai si la signature est correcte, faux sinon H(R, Q, m) ← hash(R, Q, m) U ← 8sP V ← 8R + 8H(R, Q, m)Q Si U 6= V alors Retourner Faux Fin Si Retourner Vrai

De la mˆeme fa¸con, ce protocole de signature est correct car : R + H(R, Q, m)Q = H(a, m)P + H(R, Q, m)aP

= (H(a, m) + H(R, Q, m)a)P = sP

La grande diff´erence entre l’ECDSA et l’EdDSA est le caract`ere enti`erement d´eterministe de la signature EdDSA alors que l’ECDSA produit des signatures al´ea- toires. Cette diff´erence peut conduire `a des attaques physiques sur l’EdDSA ce qui

n’est pas le cas pour l’ECDSA. La signature EdDSA ´etant d´eterministe, nous pour- rons la recalculer autant de fois que d´esir´e le mˆeme calcul, les attaques physiques n´ecessitant un grand nombre de mesures pourront alors ˆetre men´ees. Les auteurs de ce protocole justifient le choix du d´eterminisme par le fait qu’il est difficile de tirer un nombre al´eatoire et que si ce nombre n’a pas une entropie suffisante, alors des attaques peuvent ˆetre men´ees contre les protocoles de signatures comme l’ECDSA. Cependant, le nombre al´eatoire k utilis´e pour le calcule kP de la signature ECDSA peut ˆetre hach´e afin d’´eviter une entropie plus faible. Ceci est identique au cas de la clef priv´ee d’une syst`eme cryptographique bas´e sur les courbes elliptiques qui est g´en´eralement hach´ee pour ´eviter un manque d’entropie dans cette derni`ere.