CHAPITRE 6 : Signature, identi cation. La cryptographie ne se limite plus à l art de chi rer des messages, on va considérer dans ce chapitre de nouvelles tâches qu il est possible de réaliser. La signature électronique est un procédé permettant de remplir la même fonction qu une signature manuscrite c est à dire d engager la responsabilité du signataire sur le contenu du message signé. Cette signature ne doit pas pouvoir être reniée et doit être véri able par tout le monde. L identi cation permet à quelqu un de prouver qu il est celui qu il prétend être ou qu il a le droit d accéder à un service. C est la fonction réalisée (primitivement) lors d une connexion à un ordinateur à l aide d un mot de passe où lorsque l on tape le code secret de sa carte bancaire. I Procédés de signature. Tout d abord, remarquons qu une signature manuscrite est physiquement liée au document signé mais qu une signature électronique ne peut pas l être de la même manière. Il va donc falloir trouver un moyen de "coller" la signature au message. Pour cela on va construire une signature qui dépendra du signataire mais aussi du contenu du message de sorte qu une signature valide ne puisse pas être utilisée avec un autre message que le message signé initialement. Une autre di érence entre les messages conventionnels et les messages électroniques est que l on peut dupliquer parfaitement ces dernier (alors qu une signature classique est facilement distinguable de sa photocopie). Il faut donc prendre garde à ce qu un document signé ne puisse pas être réutilisé. Imaginons par exemple que Bob signe un document électronique autorisant Alice à retirer 00 e sur son compte (un chèque électronique en fait), il souhaite qu Alice ne l utilise qu une seule fois. Donc le message lui-même doit contenir une indication, comme la date et l heure qui limite le problème. La dernière grosse di érence est celle de la véri cation, elle doit être facile pour tout le monde et néanmoins ne pas donner d éléments permettant de signer à la place de quelqu un d autre. Munissons nous d un ensemble de message : I m, d un ensemble de signatures : I s et d un ensemble de clé : I k on va maintenant dé nir un procédé de signature. Dé nition I. Un procédé de signature est la donnée pour chaque K 2 I k de deux fonctions calculables en temps polynomial : sig K : I m! I s : fonction de signature (secrète) ver K : I m I s! fvrai, fauxg : la fonction de véri cation (publique) telles que vrai si S = sigk (M) ver K (M; S) = faux si S 6= sig K (M) Notons qu un procédé de signature n est jamais inconditionnellement sûr, Charlie désirant signer le message M peut essayer une à une toutes les valeurs de S 2 I s et trouver une signature valide grâce à la fonction de véri cation. II La signature RSA: On reprend les notations du paragraphe sur RSA en chi rement. Donc n = pq, c est l exposant de chi rement et d celui de déchi rement que seul Alice connaît. Pour signer un message m 2 Z=nZ Alice peut alors calculer la fonction et la fonction de véri cation associée est ver (m; s) = sig (m) = m d [n] vrai si m = s c [n] faux si m 6= s c [n]
En fait, Alice traite son message comme un message chi ré, et lui applique le calcul de déchi rage qu elle seule peut faire, on peut facilement véri er que c est bien ce qu elle a fait en chi rant le résultat et en véri ant qu on retrouve le message à signer. Remarque II. Plus généralement si Alice dispose d une fonction f à sens unique munie d une trappe alors elle peut signer son message m par f (m). Remarque II.2 Notons que contrairement au cas traditionnel, la taille de la signature d un message est du même ordre que la taille du message, on verra plus tard un moyen de lutter contre cet inconvénient. Remarque II.3 En cas de cryptage, vaut-il mieux signer avant de crypter ou bien signer le message crypté? En fait, la première solution est plus sûre car si on envoie un message crypté ainsi que sa signature, Charlie peut, en interceptant le message, remplacer la signature d Alice par la sienne. III La signature El Gamal a) Description Il date de 985 et à servi de base au standard de signature électronique : DSS, contrairement à RSA qui sert pour chi rer ou pour signer, il a été conçu spécialement pour signer. Tout comme l algorithme de chi rement El Gamal, ce procédé de signature n est pas déterministe, pour un message donné il existe plusieurs signatures valides. Sa sécurité repose sur le problème du logarithme discret. On va utiliser les notations suivantes : p est un (grand) nombre premier, g est un générateur de (Z=pZ), a est un entier compris entre 0 et p 2 et A = g a. Alice publie p; g et A. Pour un k 2 (Z= (p ) Z) on dé nit la fonction de signature par sig (m) = (K; S) où K = g k [p] S = (m ak) k [p ] et la fonction de véri cation par ver (m; K; S) = vrai () A K K S = g m [p] Véri ons que cette fonction de véri cation permet bien d authenti er toute signature : Dans Z=pZ on a K S = g ks = g m ak puisque g p = et A K = g ak donc A K K S = g m. b) Sécurité Comment Charlie peut-il s y prendre s il veut contrefaire la signature d Alice sur un message m sans connaitre a? S il commence par choisir K alors il doit trouver S tel que K S = A K g m et donc il doit résoudre une instance du problème du logarithme discret. Toutefois, il peut tout d abord choisir une valeur S et chercher une valeur de K véri ant A K K S = g m ce problème n est plus équivalent au calcul d un logarithme discret et est bien moins connu. Charlie pourrait également tenter d obtenir simultanément K et S... Bref la sécurité de ce procédé de signature est mal connue mais on pense (à tort ou à raison) qu elle est équivalente à celle du logarithme discret. IV DSS et ECDSA L algortihme DSS est une amélioration du procéde de El Gamal, à sa création en 99 il s est appelé DSA (Digital Signature Algorithm). Son nom est devenu DSS (Digital Signature Standard) lorsqu il est devenu une norme fédérale aux États-Unis en 994. En Europe, le projet NESSIE est chargé de standardiser des algorithmes de chi rement et de signature en ce qui concerne les procédés de signature trois candidats sont 2
toujours en lice : ECDSA : voir-ci dessous, RSA-PSS basé sur le problème RSA et SFLASH basé sur la cryptographie multivariable. Avec le DSS on va obtenir une signature plus courte qu avec El Gamal pour une sécurité identique, l idée est de prendre un élément g d ordre q de taille 60 bits dans (Z=pZ) où p fait 52 voire 024 bits et de travailler dans le sous-groupe engendré par g: On va schématiser le DSS dans le tableau ci dessous : Paramètres : q premier de 60 bits p [q] premier de 52 bits g entier d ordre q modulo p a 2 N; a q secret A = g a [p] Signature : sig (m) = (K; S) K = g k [p] [q] avec k un entier quelconque k q S = (m + ak) k [q] Véri cation : ver (m; K; S) = vrai ssi A KS g ms [p] [q] = K où S désigne l inverse de S modulo q EC-DSA ressemble à DSS sauf que l on travaille dans un sous groupe cyclique d une courbe elliptique à coe cient dans Z=pZ. Voici le schéma résumant ECDSA : Paramètres : q premier de 60 bits E une courbe elliptique sur Z=pZ G un point de E d ordre q: a 2 N; a q secret A = ap Signature : sig (m) = (K; S) où K = x k [q] tel que kg = (x k ; y k ) avec k un entier quelconque k q et S = (m + ak) k [q] Véri cation : ver (m; K; S) = vrai ssi x P [q] = K où P = ms G + KS A où S désigne l inverse de S modulo q 3
V Fonctions de hachage Les di érents systèmes de signature ne permettent que de signer de "petits" messages. Par exemple avec DSS on ne peut signer que des messages de 60 bits et on obtient une signature de 320 bits. On souhaite bien évidemment pouvoir signer des messages plus longs. Une idée naïve serait de signer un message "par blocs" mais alors se posent plusieurs problèmes. Le premier est qu alors on obtient une signature très grande (deux fois plus longue que le message), le deuxième est que la plupart des procédés de signatures sont lents (ils utilisent des calculs arithmétique compliqués comme des exponentiation modulaires). Un autre problème est qu un attaquant pourrait éventuellement réarranger les blocs pour changer la teneur du message, il faudrait donc garantir l intégrité du message en signant une information supplémentaire. La solution à tous ces problèmes est la fonction de hachage cryptographique. a) principes généraux Le principe est de calculer une "empreinte numérique" du message qui puisse jouer un rôle analogue à celui des empreintes digitales pour les humains, c est à dire que cela doit être une information très partielle sur le message qui permette de l identi er avec une quasi-certitude. On va donc dé nir une fonction h : I n! I 60 où n est la taille en bit du message à signer : m, et au lieu de signer m on signera h (m). Bien sûr la fonction h doit être publique pour que chacun puisse véri er la validité de la signature ainsi obtenue. Il faut prendre quelques précautions pour que l emploi de cette fonction h n a aiblisse pas la sécurité du procédé de signature. Première attaque : Pour signer le message m Bob calcule s = sig (h (m)), si Charlie réussit à trouver un autre message m 0 tel que h (m 0 ) = h (m) alors s sera une signature valide de m 0! Pour empêcher cette attaque, h doit être faiblement résistante aux collisions : Dé nition V. Une fonction h : I n! I m est dite faiblement résistante aux collisions si étant donné x 2 I n il est calculatoirement di cile d obtenir x 0 2 I n tel que h (x) = h (x 0 ). Deuxième attaque : Charlie cherche deux messages distincts m et m 0 tels que h (m) = h (m 0 ), il persuade ensuite Bob de signer le message m et il obtient ainsi une signature valide de m 0. Cela motive une dé nition di érente de di culté des collisions que doit véri er h : Dé nition V.2 Une fonction h : I n! I m est dite fortement résistante aux collisions si x 2 I n il est calculatoirement di cile d obtenir x et x 0 2 I n ; distincts, tel que h (x) = h (x 0 ). Notons que si une fonction est fortement résistante aux collisions alors elle l est également faiblement. Troisième attaque : Comme on l a vu en TD, il est souvent possible d obtenir des couples (M; s) où s est la signature valide de M mais sans aucun controle sur M. Si Charlie réussit à trouver un message m tel que h (m) = M alors il pourra signer le message m. Par conséquent, la fonction h doit être à sens unique. En fait, on peut facilement démontrer que la propriété d être fortement résistante aux collisions entraine d être à sens unique (par contraposée). b) Le paradoxe des anniversaires Combien faut-il réunir de personnes au minimum pour que la probabilité que deux de ces personnes au moins aient la même date d anniversaire soit supérieure à 2? Notons x le nombre recherché, et calculons la probabilité de l évènement : A x = "toutes les x personnes ont des dates d anniversaire di érentes". On a P (A x ) = 365 364 (365 x + ) 365 x on obtient P (A 22 ) = Q 2 i=0 365 i 365 = 0; 5243, et P (A 23 ) = 0:4927. Par conséquent la réponse à la question est 23 personnes! Ce nombre semble petit par rapport au nombre de dates possibles (365) et ce résultat peut sembler paradoxal c est pourquoi on l appelle le paradoxe des anniversaires. 4
Pour trouver des collisions à une fonction de hachage, l attaque des anniversaires consiste à calculer des empreintes aléatoirement en espérant trouver deux fois la même. Le paradoxe des anniversaires semble montrer que le nombre d essai à faire peut-être petit par rapport aux nombres d empreintes possibles ( 2 60 ). On va donc chercher la probabilité de réussite de l attaque des anniversaires et donc on va considérer la modélisation suivante : On e ectue k tirages avec remise dans une urne contant un nombre N de boules, on veut savoir à partir de quelle valeur de k la probabilité d avoir tiré plusieurs fois la même boule dépasse 2. Comme ci dessus on va calculer la probabilité de l évènement contraire : avoir tiré des boules toutes di érentes. Cette probabilité est P = ky i=0 k N i N = Y L exemple des anniversaires peut nous laisser supposer que le résultat va être petit par rapport à N, et donc que pour tout i k la valeur i N va être proche de zéro. On va pouvoir utiliser l approximation ex x pour x voisin de zéro. On obtient i= i N P = ky i= e i N = e Pk i= i N = e k(k ) 2N cette probabilité vaut 2 si k (k ) = ln (2) 2N k p 2N ln (2) = ; 8 p N Et donc on voie que le nombre de boules à tirer est de l ordre de p N. Pour les dates d anniversaires on a ; 8 p 365 = 22; 5 on retrouve bien le résultat malgré notre approximation. Par conséquent, pour s assurer que l attaques des anniversaires pour trouver une collision à notre fonction h demande plus de 2 80 opérations, on voit que le nombre d images de f doit être 2 80 2 = 2 60 et c est pourquoi la taille des empreintes des fonctions de hachage utilisées en pratique est de 60 bits! c) Une fonction de hachage basée sur le logarithme discret Soit p un nombre premier tel que q = p 2 soit également premier. Soit et deux éléments primitifs modulo p. On suppose qu il est di cile de calculer log () : la valeur x telle que x =. On dé nit la fonction de Chaum-Van Heist-P tzmann par h : f0; :::; q g 2! Z=pZ r f0g : h (x ; x 2 ) = x x 2 [p] Proposition V. Toute collision dans la fonction ci-dessus permet de calculer log (). Démonstration. Suppososns que l on a une collision, c est à dire deux couples distincts (x; y) et (x 0 ; y 0 ) tels que x y = x0 y0 dans Z=pZ. On obtient x x0 = y0 y. Soit d = pgcd(p ; y 0 y) comme p = 2q avec q premier et que y y 0 < q on a d = ou d = 2. Si d =, on calcule z : l inverse de y y 0 modulo p et (x x0 )z = donc log () = (x x 0 ) z [p ]. Si d = 2, on calcule z 0 : l inverse de y y 0 modulo q donc (y y 0 ) z 0 = + kq on a alors (x x0 )z 0 = ( q ) k = car q =. log () = (x x 0 ) z [p ] ou log () = (x x 0 ) z + q [p ] car q = [p]. Il est ensuite facile de véri er pour trouver la bonne valeur de log () : 5
Remarque V. On vient de montrer que la fonction ci dessus est fortement résistante aux collisions mais elle est trop lente pour être performante en pratique. En pratique on utilise des fonctions de hachage très rapide à calculer mais dont la solidité n est pas démontrée, comme SHA- qui est en fait recommandée avant d utiliser DSS. On trouve facilement une description de cet algorithme sur le net. Notons qu en Août 2004 une autre fonction de hachage réputée : MD5 a été brisée : des cryptanalystes ont trouvé un moyen de générer des collisions en une heure. VI Procédés d identi cation "à clé privée" Si Alice et Bob se rencontrent, ils peuvent convenir d une méthode pour pouvoir se reconnaitre par la suite. La méthode la plus simple est de choisir un mot de passe qu ils seront seuls à connaitre. Le problème est que cette façon de faire n est sûre que la première fois qu on l utilise, en e et si Charlie écoute la conversation il connaitra le mot de passe. Pour éviter cela, Alice et Bob peuvent procéder de la façon suivante : ils se mettent d accord sur une clé secrète K et sur un algorithme de chi rement à clé secrète, par exemple AES. Par la suite, si Bob veut s assurer de l identité d Alice, il lui envoie un challenge à réussir pour le prouver. Ce challenge consiste à déchi rer un message choisi aléatoirement par Bob et ainsi prouver qu elle connait bien K sans toutefois le révéler. On procède de la façon indiquée par le schéma suivant, où on a noté e K la fonction de chi rement et d K celle de déchi rement. Bob Alice Aléa m m 0 = e K (m)! m 00 = d K (m 0 ) m 00 = m? L écoute de la conversation ne permet pas à Charlie de pouvoir se faire passer pour Alice par la suite, tant que Bob prend la précaution d envoyer des challenges di érents! Ce procédé est utilisé par les cartes bancaires pour certaines transactions. Une clé est stockée dans une partie inaccessible de la mémoire de la puce de la carte et l algorithme utilisé est DES. VII Procédés d identi cation "à clé publique" On utilise un cryptosystème asymétrique ou un procédé de signature. Le secret d Alice est sa clé privée. Elle prouve sa connaissance de ce secret en signant ou en déchi rant une valeur aléatoire proposée par Bob ou le serveur auprès duquel elle veut s identi er. Identi cation par signature : Bob Aléa m ver (m; s) = vrai? Identi cation par déchi rement : m! s = sig (m) Alice Bob Alice Aléa m m 0 = e (m)! m 00 = d (m 0 ) m 00 = m? 6
VIII Procédé d identi cation de Guillou-Quisquater Jean-Jacques Quisquater Il existe aussi des procédés d identi cation développés spéci quement dans ce but, tels le procédé de Guillou-Quisquater largement utilisé de nos jours dans les cartes à puces. Une autorité de con ance choisit deux nombres premiers p et q, elle publie n = pq mais garde p et q secrets. Bien sûr, p et q sont assez grand pour que la factorisation de n soit di cile. Cette autorité publie aussi un grand nombre entier e qu on va utiliser comme exposant RSA et donc on notera d = e [' (n)] l exposant de déchi rement. Ces données peuvent être communes à plusieurs couples identi é/identi ant (Alice/Bob). Une fonction de hachage h est aussi choisie. L autorité de con ance forme une chaine de bits à partir de l identité d Alice : ID(Alice), puis elle calcule A = h (ID (Alice)) d [n] et l envoie à Alice. Le protocole d identi cation est le suivant :. Alice choisit un entier k aléatoirement 0 k n et calcule K = k e [n] : 2. Alice envoie ID (Alice) et K à Bob. 3. Bob calcule B = h (ID (Alice)). 4. Bob choisit un entier r aléatoirement 0 r n et l envoie à Alice. 5. Alice calcule x = ka r [n] et l envoie à Bob. 6. Bob véri e que K = B r x e [n] En e et, comme on a A e = B, x e = k e A re = K B r. Par conséquent, en ce suivant ce protocole Alice a prouvé qu elle connaît A sans toutefois le révéler. On peut même montrer que ce protocole ne révèle aucune information sur A, on dit que ce protocole est sans divulgation d informations (zero-knowledge). 7