FR 2763452 A1 19981120 FR 9705831 A 19970513 PROCEDE D'IDENTIFICATION A CLE PUBLIQUE Domaine technique La présente invention se rapporte à un procédé cryptographique d'identification, permettant à un support quelconque, appelé module d'identité (par exemple une carte à mémoire, un microprocesseur, un ordinateur, etc.), de prouver son identité à des moyens mettant en oeuvre une application, ou à un interlocu- teur doté de moyens de vérification, et ceci grâce à un protocole mettant en jeu, sans les révéler, un ou des secret(s) contenu(s) dans le support. Un protocole d'identification est donc un dialogue, à travers un réseau de télécommunications, entre deux entités: d'une part, une première entité qui veut prouver son identité et qui peut être, le cas échéant, équipée d'un terminal, (par exemple un ordina- teur doté d'un lecteur de cartes à mémoire) et, d'autre part, une seconde entité capable de dialoguer avec la première et de réaliser certains calculs de vérifica- tion. La première entité, dont on veut vérifier l'identité, sera appelée par la suite "le vérifié" (en anglais "the prover") et la seconde "le vérificateur" (en anglais "the verifier"). La présente invention se rapporte plus par- ticulièrement à un procédé d'identification à clé publique, dans lequel le vérificateur n'a pas besoin de connaître les secrets contenus dans le module d'iden- tité du vérifié, mais seulement des données non confi- dentielles (la clé publique) pour effectuer les calculs de vérification. L'algorithme de chiffrement a clé publique dit RSA (des initiales de leurs auteurs RIVEST, SHAMIR, ADLEMAN) est décrit dans le brevet américain US-A- 4,405,829. C'est actuellement l'algorithme à clé publi- que le plus utilisé. Il fournit des schémas de signature utilisables également à des fins d'identifi- cation. Dans l'algorithme RSA, on choisit deux nom- bres premiers distincts p et q, et on forme leur pro- duit n. On choisit également un entier e, qui est premier avec le plus petit commun multiple de (p-l) et (q-l) (ou, si l'on veut, qui est premier avec le pro- duit (p-l) (q-l)). Pour chiffrer un message, préalable- ment mis sous forme numérique u, u étant compris entre 0 et n-l, on calcule la puissance e-ième de u dans l'anneau des entiers modulo n, soit v = u mod n. On rappelle que la valeur d'un entier x modulo un entier n est égale au reste de la division de x par n. Pour déchiffrer un message tel que v, il faut extraire la racine e- ième du message chiffré v dans l'anneau des entiers modulo n. On montre que cette opération revient à élever le nombre v à la puissance d, d étant l'inverse de l'exposant e modulo le plus petit commun multiple des nombres (p-l) et (q-1). Si l'on ne connaît pas les facteurs premiers p et q, la détermination de d est impossible et, avec elle, l'opé- ration de déchiffrement. L'une des premières utilisations pratiques du procédé RSA à des fins d'identification a été la suivante: une autorité, responsable de la mise en place d'un système d'identification, émet une clé publique de type RSA, c'est-à-dire, en pratique, les deux nombres n et e, cette clé étant commune à tout le système, et conserve les éléments secrets correspon- dants (p et q). Cette autorité dépose, dans chaque module d'identité des usagers du système, le couple constitué par: - le numéro d'identification ID du module d'identité; - la racine e-ième (ou l'inverse de la racine e-ième), modulo n, d'un nombre obtenu à partir du numéro ID en appliquant à ID une fonction de redondance connue de tous (dont un exemple peut être trouvé dans la norme ISO 9796). Cette racine e-ième (ou son inverse), cal- culée par l'autorité d'émission à l'aide des éléments secrets qu'elle détient, est appelée "accréditation". Les accréditations déposées dans les modu- les d'identité peuvent, en premier lieu, être utilisées à des fins d'identification passive (c'est-à-dire ne nécessitant aucun calcul de la part de celui qui veut prouver son identité).Le protocole se réduit alors, pour le vérificateur, aux opérations suivantes: - lire le couple identité-accréditation contenu dans un module d'identité; - calculer la puissance e-ième de l'accréditation et s'assurer que le résultat de ce calcul et l'applica- tion de la fonction de redondance au numéro d'identi- fication ID fournissent bien le même résultat. Un telle identification passive montre au vérificateur que celui qui veut prouver son identité dispose de données qui ne peuvent avoir été émises que par l'autorité, ce qui limite, dans une certaine mesure, les usurpations d'identité. Mais rien n'inter- dit cependant à un pirate capable d'intercepter le pro- tocole vérifié-vérificateur, ou à un vérificateur mal- honnête, de réutiliser à son profit les données commu- niquées par le vérifié. Malgré ce risque de fraude par réutilisa- tion, l'identification passive décrite ci-dessus est largement utilisée dans le domaine bancaire et celui des cartes de télécommunication. Des précautions supplémentaires (listes noires, etc.) limitent dans une certaine mesure l'ampleur des fraudes par réutilisa- tion. Cependant, pour résoudre le problème de la fraude par réutilisation des données échangées, pro- blème inhérent aux protocoles d'identification passifs, des protocoles d'identification actifs, c'est-à-dire nécessitant des calculs de la part de celui qui veut prouver son identité, ont été proposés. Parmi ces pro- tocoles figurent non seulement l'utilisation de l'algo- rithme RSA pour signer une question aléatoire posée par le vérificateur, mais encore des schémas interactifs o le vérifié démontre au vérificateur qu'il possède une ou plusieurs accréditations du type de celles définies plus haut, et cela sans révéler cette (ou ces) accrédi- tation(s). Parmi les schémas de ce type, les plus uti- lisés actuellement sont le schéma de FIAT-SHAMIR et le schéma de GUILLOU-QUISQUATER. Le schéma d'identification de FIAT-SHAMIR est décrit dans le brevet US-A-4,748,668. Le schéma d'identification de GUILLOU et QUISQUATER est décrit dans le document FR-A-2 620 248 (ou son correspondant européen EPA-0 311 470 ou son correspondant américain US-A-5,218,637). Ces deux schémas consistent en une ou plu- sieurs itérations d'une variante de base à trois passes dans laquelle: 1. celui qui veut prouver son identité, (le vé- rifié) calcule la puissance e-ième modulo n d'un nombre aléatoire r qu'il a tiré, et en déduit un nombre x, appelé le témoin, qu'il envoie au vérificateur; 2. le vérificateur tire au sort un nombre b, appelé la question, et l'envoie au vérifié; 3. le vérifié calcule, par exemple, le produit du nombre aléatoire r par la puissance b-ième de son accréditation, soit y = rSb mod n et envoie le résultat y au vérificateur. Le vérificateur peut calculer la puissance e-ième de y, et comme il connaît la puissance e-ième de l'accréditation S du vérifié, il est alors capable de vérifier la cohérence entre x, b et y. Ces schémas présentent un double avantage pour l'identification active: d'une part, si l'on se contente d'un niveau d'insécurité (défini comme la pro- babilité maximale de succès d'un fraudeur) de l'ordre de 10-6, ils sont nettement moins coûteux en temps de calcul qu'une signature RSA; d'autre part, ces schémas sont, du moins dans leur version de base, à divulgation nulle de connaissance (en anglais "zero-knowledge"), ce qui entraîne que les échanges liés à un processus d'identification ne peuvent être d'aucun secours à un fraudeur pour la recherche des accréditations secrètes d'un utilisateur. Deux configurations peuvent être envisagées pour la mise en oeuvre, côté vérifié, de schémas d'identification actifs démontrant la possession d'ac- créditations du type de ceux qui viennent d'être expo- sés. Dans une première configuration, le module d'iden- tité contenant les accréditations possède une puissance de calcul suffisante pour réaliser tous les calculs de son côté. Dans une seconde configuration le module d'identité contenant les accréditations n'effectue pas les calculs lui-même mais les fait réaliser dans un terminal (par exemple un micro-ordinateur capable de lire les accréditations dans le module d'identité). La seconde configuration, bien qu'un peu moins sûre que la première, peut cependant être utile pour améliorer la sécurité de la vérification de modu- les d'identité initialement conçus pour une simple identification passive. Il est nécessaire de faire confiance au terminal utilisé côté vérifié, mais sous réserve que ce terminal soit intègre, aucune fraude provenant du réseau ou du vérificateur n'est possible. Dans la présente invention, on s'intéresse plus particulièrement au problème de l'utilisation, selon la seconde configuration, de supports d'identité initialement conçus pour une identification passive, dans lesquels une unique accréditation correspondant à un exposant public e égal à 3 a été déposée: la majeure partie des cartes bancaires françaises, ainsi que d'autres supports d'identité (par exemple les cartes de télécommunications) sont de ce type. Le procédé de GUILLOU- QUISQUATER est en théorie utilisable par le terminal côté vérifié, pour démontrer au vérificateur la possession de l'accréditation. Le procédé de GUILLOU-QUISQUATER, dans ce cas particulier, comprend les opérations suivantes: a) deux grands nombres premiers p et q définis- sent l'entier n, produit de p par q; le nombre n est rendu public; b) le support de celui qui doit prouver son iden- tité contient une accréditation secrète S comprise entre 1 et n-1; le cube de l'accrédita- tion modulo n, c'est-à-dire I = S3 mod n, est rendu public; c) le support du vérifié est pourvu de moyens aptes à tirer au hasard un entier r compris entre 1 et n-i, et à calculer le cube de r modulo n, appelé le témoin x: x = r3 mod n; d) le vérifié transmet le témoin x au vérifica- teur; e) le vérificateur tire au sort un entier b infé- rieur à l'exposant 3, donc égal à 0, 1, ou 2; cet entier est appelé la question; f) le vérificateur transmet la question b au vérifié; g) le vérifié calcule le nombre y défini par: y = rSb mod n h) le vérifié transmet ce nombre y au vérifica- teur; i) le vérificateur élève au cube le nombre y et, par ailleurs, calcule le produit du témoin x (qui lui a été transmis) par la puissance b de I (b qu'il a tiré et I qui est public); le vérifica- teur compare alors y3 et xIb mod n, s'il y a coin- cidence, le vérifié a répondu correctement à la question et son authenticité est présumée. La sécurité d'un tel schéma repose sur l'hypothèse même du schéma RSA: l'entier n étant public ainsi que l'exposant 3, il est difficile, pour un tiers fraudeur, de remonter à r en prenant la racine cubique de x, sans connaître les facteurs p et q, dont n est le produit. Ne connaissant pas r, le tiers frau- deur ne peut répondre correctement à la question posée par le vérificateur. Pour un tel procédé, ainsi que pour les autres schémas d'identification connus à ce jour, la situation o l'on ne dispose que d'une seule accrédita- tion correspondant à un exposant public égal à 3 conduit à des protocoles très coûteux en communica- tions. En effet, le niveau de sécurité d'un échange de base (témoin, question, réponse) que l'on peut réaliser dans les conditions citées est inférieur ou égal à 3 pour le schéma de GUILLOU-QUISQUATER. Pour parvenir à un niveau de sécurité convenable (insécurité inférieure à 2- 16), il faut donc répéter l'échange de base au moins une dizaine de fois, ce qui conduit à multiplier le nombre de bits à échanger entre vérifié et vérificateur par un facteur de dix au moins. Le but de la présente invention est juste- ment de remédier à cet inconvénient. Il s'agit de proposer un schéma, à la fois réaliste en temps de calcul et moins coûteux en nombre de bits échangés, permettant de démontrer la possession d'une accrédita- tion correspondant à un exposant public égal à 3, sans la révéler. Exposé de l'invention Le procédé de l'invention est fondé sur l'hypothèse selon laquelle, pour tout entier n, si l'on connaît deux nombres g et y compris entre 0 et n-l, il est difficile de calculer a, s'il existe, tel que: y = g mod n. Sous cette hypothèse, l'invention se défi- nit comme suit il s'agit d'un procédé d'identification d'un support appelé "le vérifié", par des moyens appe- lés "le vérificateur", ce support et ces moyens étant équipés de moyens de calcul et de mémorisation appro- priés, le vérifié et le vérificateur possédant en commun: - un nombre entier n, produit de deux nombres premiers (p,q), - un nombre k qui est le plus petit facteur premier impair de (p-l)(q-l), - un nombre k, paramètre de sécurité inférieur à k, - un nombre entier g compris entre 2 et n-1 et d'ordre X, le vérifié possédant en outre un nombre secret S égal à v g mod n, o v est un nombre secret, le secret S défi- nissant l'identité du vérifié, le vérificateur ayant en outre connaissance de la puissance 3 modulo n de ce secret, soit I = S3 mod n, procédé dans lequel le vérifié et le vérificateur mettent en oeuvre leurs moyens de calcul et de mémori- sation pour effectuer les opérations successives suivantes: Phase A; le vérifié: Aa) tire au hasard un premier exposant a entier compris entre 0 et X-l, Ab) tire au hasard un second exposant x entier compris entre 0 et X-l, Ac) calcule un nombre r égal à la puissance 3x du nombre g modulo n, soit: 3x r = g3x mod n Ad) calcule un nombre R égal à la puissance 3a du nombre g modulo n, soit: 3e R = g mod n, Ae) transmet les nombres r et R au vérificateur, Phase B; le vérificateur: Ba) tire au hasard un nombre e entier compris entre 0 et X-1, Bb) transmet au vérifié le nombre e, Phase C; le vérifié: Ca) calcule un nombre y égal à ec + x modulo X, Cb) calcule un nombre z égal à gaS modulo n, Cc) transmet les nombres y et z au vérificateur, Phase D; le vérificateur: Da) calcule le produit de R par r modulo n et la 3 3y puissance y de g, soit g, et vérifie si les deux résultats sont égaux, c'est-à-dire: 3y e g = R rmod n, Db) calcule le produit de R par l'identité publi- que I et le cube de z et vérifie si les deux résultats obtenus sont égaux, c'est-à-dire: z = RI mod n, l'identification du vérifié par le vérificateur étant acquise si les deux vérifications Da) Db) sont avérées. Le nombre X doit être suffisamment grand. Le nombre k peut être par exemple de l'ordre de 220 pour une insécurité inférieure à 2-19. Le tableau ci-dessous résume les différen- tes opérations. TABLEAU I Vérifié Vérificateur O n, k, g, I, k n, k, g, I S = gV mod n a R =gJ modn _----- e B e La bande horizontale A rassemble les pre- mières opérations effectuées par le vérifié (opérations Aa à Ae dans la définition précédente). La bande horizontale B montre l'opération suivante effectuée par le vérificateur. La bande horizontale C rassemble les opéra- tion effectuées à nouveau par le vérifié (opérations Ca, Cc) La bande horizontale D, enfin, rassemble les deux dernières opération effectuées par le vérifi- cateur. Un tel procédé permet bien de vérifier l'authenticité d'un possesseur d'accréditation. En effet, si le vérifié connaît le secret S il pourra répondre correctement à la question posée par le véri- ficateur puisqu'il pourra calculer la quantité z = gaS mod n. Réciproquement, pour être accepté, le véri- fié doit permettre la vérification des deux équations Da, Db. Supposons qu'il soit capable de les satisfaire avec une probabilité supérieure à 2/k. Cela signifie que, après s'être engagé avec R et r, le vérifié sait répondre à au moins deux questions e et e' différentes modulo 2. Soient (y,z) et (y',z') les réponses respectives. Alors, r = g3YR -e = g3y Re mod n et z = z'3 = RI mod n. Par conséquent, z = z' et (gy-y) 3 = Re-e mod n. Ainsi, comme x est premier et supérieur à e-e', l'égalité de Bezout fournit u et w tels que uk + w(e-e') = 1. Alors, (gy-Y) 3W = RW(e-e) = R.RU" mod n. Comme e-e' est impair et inférieur à k, le plus petit facteur impair de (p-l)(q-l), alors e-e', admet un inverse, f modulo (p- l)(q-1). Par conséquent, R = (g(y-y') 3f mod n. Or, g est d'ordre k, donc R = 1 mod n. Ce qui entraîne, R = (gW(y-y') 3 mod n. Par suite, I = (zg-W(y-y'))3 mod n. Le vérifié doit donc nécessairement être en possession de l'accréditation S, racine cubique de I. On peut voir également que même un malfai- teur utilisant toutes les techniques frauduleuses imaginables ne pourra obtenir une quelconque informa- tion sur l'accréditation du vérifié, et donc se faire ensuite passer pour lui. En effet, ce protocole est à divulgation nulle de connaissance. Il est donc possible de simuler une interaction entre le vérifié et n'importe quel vérificateur, sans connaître le secret S. Soit C la stratégie, aléatoire ou non, d'un vérificateur. C'est une fonction qui prend en entrée un couple (R,r), et retourne une question e. Le simulateur: 1. choisit s compris entre 0 et k-l, ainsi que y et t compris entre 0 et k-l, 2. calcule z = gt mod n, R = z3Il mod n et r = g3YRe mod n, 3. interroge la stratégie du vérifieur: e = o(R,r), 4. si e = s, on retourne à l'opération 1, sinon le simulateur écrit (R,r,e,y,z). Le procédé défini est donc sûr, même face à des attaques actives. Il est à divulgation nulle de connaissance avec une probabilité d'acceptation d'un tricheur inférieure à 2/k après une itération. REVENDICATIONS 1. Procédé d'identification d'un support appelé "le vérifié", par des moyens appelés "le vérifi- cateur", ce support et ces moyens étant équipés de moyens de calcul et de mémorisation appropriés, le vérifié et le vérificateur possédant en commun: - un nombre entier n, produit de deux nombres pre- miers (p,q), - un nombre X qui est le plus petit facteur premier impair de (p-l)(q-l), - un nombre k, paramètre de sécurité inférieur à k, - un nombre entier g compris entre 2 et n-1 et d'ordre X, le vérifié possédant en outre un nombre secret S égal à g mod n, o v est un nombre secret, le secret S défi- nissant l'identité du vérifié, le vérificateur ayant en outre connaissance de la puissance 3 modulo n de ce secret, soit I = S mod n, procédé dans lequel le vérifié et le vérificateur mettent en oeuvre leurs moyens de calcul et de mémori- sation pour effectuer les opérations successives suivantes: Phase A; le vérifié: Aa) tire au hasard un premier exposant a entier compris entre 0 et k-1, Ab) tire au hasard un second exposant x entier compris entre 0 et X-l, Ac) calcule un nombre r égal à la puissance 3x du nombre g modulo n, soit: 3x r = g3x mod n Ad) calcule un nombre R égal à la puissance 3a du nombre g modulo n, soit: 3c R = g mod n, Ae) transmet les nombres r et R au vérificateur, Phase B; le vérificateur: Ba) tire au hasard un nombre e entier compris entre 0 et X-l, Bb) transmet au vérifié le nombre e, Phase C; le vérifié: Ca) calcule un nombre y égal à es + x modulo X, Cb) calcule un nombre z égal à gaS modulo n, Cc) transmet les nombres y et z au vérificateur. Phase D; le vérificateur: Da) calcule le produit de R par r modulo n et la 3 3y puissance y de g, soit g, et vérifie si les deux résultats sont égaux, c'est-à-dire: g = Rer mod n, Db) calcule le produit de R par l'identité publi- que I et le cube de z et vérifie si les deux résultats obtenus sont égaux, c'est-à-dire: z = RI mod n, l'identification du vérifié par le vérificateur étant acquise si les deux vérifications Da) Db) sont avérées. 2. Procédé selon la revendication 1, dans lequel le support du vérifié est une carte à mémoire.