Brevet FR2747257A1 — publié le 19971010

PROCEDE D'IDENTIFICATION ET/OU DE SIGNATURE DESCRIPTION Domaine technique La présente invention a pour objet un procédé d'identification et/ou de signature. L'invention relève de la cryptographie à clé publique. Dans ce domaine, l'identification est un processus permettant à une entité réceptrice de s'assurer de l'authenticité de l'identité d'une entité émettrice. La signature est un processus permettant d'assurer l'authenticité d'un message adressé par une entité émettrice à une entité réceptrice. L'invention trouve de nombreuses applications dans la santé, les transports, les télécommunications, la banque. De manière générale, l'invention utilise des schémas de signature et d'identification fondés sur la difficulté de factoriser un grand nombre, schémas qui nécessitent de réaliser des opérations se ramenant essentiellement à des multiplications modulo de grands nombres. Pour un schéma donné, le nombre de multiplications modulaires à effectuer par celui qui doit signer le message et prouver son identité est un paramètre crucial, en particulier dans le cas o le module de sécurité dans lequel sont effectués les calculs cryptographiques est une carte à mémoire. Pour la plupart des schémas connus, le nombre de multiplications nécessaires conduit, dans le cas d'une implantation sur une carte à mémoire utilisant un microprocesseur standard, à un temps de calcul peu réaliste pour ce qui concerne la signature, et pénalisant pour l'identification. On peut arriver à des temps de signature et d'identification beaucoup plus acceptables en dotant la carte d'un coprocesseur cryptographique, mais ce choix entraîne un doublement du prix de la carte. L'un des buts de la présente invention est de réduire suffisamment le nombre de multiplications modulaires nécessaires a une identification et/ou à une signature, pour parvenir à des schémas pouvant être implantés dans une carte à mémoire non dotée d'un coprocesseur arithmétique. La présente invention a pour objet un procédé d'identification et/ou de signature qui s'apparente à la fois au schéma d'identification et de signature de FIAT et SHAMIR et au schéma d'identification et de signature de QUILLOU et QUISQUATER. Le procédé de l'invention vise un compromis intéressant entre le nombre de multiplications à effectuer par celui qui veut prouver son identité et celui qui la vérifie et le nombre de secrets que le premier doit détenir. Etat de la technique antérieure Pour simplifier la terminologie, on appellera l'entité dont on vérifie l'authenticité "le vérifié" et celui qui vérifie cette authenticité "le vérificateur" (la terminologie anglaise correspondante est "the claimant" ou "the prover" et "the verifier"). Plusieurs schémas d'identification et de signature sont connus. Ils se classent schématiquement en trois familles: A - Schémas fondés sur la difficulté de factorisation d'un grand nombre Les schémas de cette famille peuvent être utilisés aussi bien pour l'identification que pour la signature. Ainsi, l'algorithme de chiffrement à clé publique dit RSA ("RIVESTSHAMIR-ADLEMAN"), décrit dans le brevet US-A-4,405,829, qui est actuellement l'algorithme à clé publique le plus utilisé, fournit des schémas de signature (comme par exemple la méthode de signature décrite dans la norme ISO 9796) utilisables également à des fins d'identification. D'autres schémas sont apparus par la suite comme le schéma d'identification de FIAT et SHAMIR, décrit dans le brevet US-A- 4,748,668 et le schéma d'identification de GUILLOU et QUISQUATER décrit dans le document FR-A-2 620 248 (ou son correspondant européen EP- A-0 311 470 ou son correspondant américain US-A-5,218,637). Ils figurent parmi les autres solutions les plus utilisées car ils possèdent de nombreux avantages: ils fournissent un schéma de signature réaliste, - ils nécessitent moins de calculs que le schéma RSA pour le vérifié, - ils mettent en oeuvre une procédure dite de preuve par apport nul de connaissance (en anglais "zero knowledge proof"), c'est-à-dire que le vérifié ne révèle pas son secret; l'utilisation du secret du vérifié dans les échanges d'identification n'affaiblit donc pas ce secret, - la gestion des clés publiques peut, en option, être fondée sur l'identité, c'est-à-dire qu'on peut prendre pour clé publique d'identification ou de signature d'un utilisateur des paramètres que chacun est à même de déduire de l'identité de cet utilisateur; cette méthode simplifie la gestion des clés publiques: elle dispense le vérifié d'avoir à délivrer sa clé publique et la signature, par une autorité, de la correspondance entre cette clé publique et son identité (méthode de certification X509, du nom de la recommandation de l'UIT o elle est décrite). B - Schémas fondés sur la difficulté du problème du logarithme discret dans un groupe fini de grande taille Parmi les schémas de cette famille utilisables à la fois en identification et en signature, on peut citer: le schéma de T. EL GAMAL, décrit dans l'article "A public key cryptosystem and a signature scheme based on discrete logarithms", publié dans la revue IEEE Transaction on Information Theory, vol. IT-31, pp. 469- 472, 1985; - le schéma de SCHNORR, décrit dans les documents EP-A-0 384 475 et USA-4,995,082, qui est un schéma d'identification à apport nul de connaissance dont on peut tirer un schéma de signature réaliste; - le schéma DSS ("Digital Signature Standard"), inspiré des deux précédents, décrit dans le document US-A-5,231,668. Aucun de ces schémas ne se prête à une gestion des clés fondée sur l'identité. C - Schémas fondés sur la difficulté de problèmes non issus de la théorie algébrique des nombres (problèmes purement combinatoires, etc... ) Des schémas d'identification à apport nul de connaissance relativement efficaces, non fondés sur la factorisation ou le logarithme discret, ont été proposés récemment. Il s'agit en particulier du schéma dit "PKP" dû à A. SHAMIR et publié dans l'article intitulé "An Efficient Identification Scheme Based on Permuted Kernels" dans les Comptes-Rendus de la conférence CRYPTO'89, LNCS 435, pp. 235-251, Springer Verlag, 1989 et du schéma dit "SD" dû à J. STERN et décrit dans l'article intitulé "A New Identification Scheme Based On Syndrome Decoding", publié dans les Comptes-Rendus de CRYPTO'93, LNCS 773, pp. 13- 21, Springer Verlag, 1994. Cependant, aucun des schémas d'identification de cette famille proposés à ce jour ne fournit une méthode de signature efficace. Pour en revenir aux schémas de FIAT et SHAMIR et de GUILLOU et QUISQUATER, il s'agit, dans les versions de base, de schémas d'identification à trois passes ou phases entre un vérifié et un vérificateur: envoi par le vérifié d'un nombre appelé témoin, envoi par le vérificateur d'une question, envoi par le vérifié d'une réponse. Ces deux schémas fournissent en même temps un schéma de signature non interactif (c'est-à-dire en une passe), par un procédé général consistant à remplacer la question par une fonction du témoin et du message à signer. Une description de ce procédé sera donnée plus loin. Dans les schémas de signature considérés, et, en option, dans les schémas d'identification, on fait appel à une fonction à sens unique H (qui peut, en pratique, être calculée à l'aide d'une fonction de condensation comme MD5) de taille de sortie fixée, au moins égale à 64 bits. La fonction H doit être facile à calculer, mais, étant donné une entrée x, il doit être hors de portée d'un ordinateur de trouver une seconde entrée x' distincte de x telle que H(x')=H(x). Pour un schéma d'identification, on appelle "niveau de sécurité" la probabilité maximale pour un tricheur (ne détenant pas le secret du vérifié) de répondre correctement à une question aléatoire du vérificateur. Pour les schémas considérés, on peut, sous certaines conditions sur les exposants publics utilisés, montrer que le niveau de sécurité est égal à l'inverse du nombre de questions possibles (supposées tirées selon la loi uniforme). Cette définition s'étend facilement au schéma de signature associé à un schéma d'identification. Il est généralement admis qu'un niveau de sécurité de l'ordre de 2-20 est souhaitable pour un schéma d'identification, et qu'un niveau de sécurité inférieur à 2-64 est souhaitable pour un schéma de signature. En ce qui concerne plus particulièrement le schéma de FIAT et SHAMIR, on peut rappeler qu'il est fondé sur la difficulté de factoriser un nombre n qui est le produit de deux grands nombres premiers p et q. La clé secrète d'un vérifié P est constituée de k nombres sl, s2,..., sk inférieurs à n. La clé publique du vérifié est constituée du nombre n et des k nombres vl, v2, *tvk obtenus à partir des s, s2..., sk de la manière suivante: vl=sl-2mod n;...; vk=sk-2mod n Le protocole de base, en trois passes et quatre opérations, qui permet à un vérifié P de s'identifier auprès d'un vérificateur V est le suivant: (1) P tire au sort un nombre r compris entre 0 et n-1, et transmet à V le nombre x=r2mod n, ou une fonction à sens unique de x, notée h=H(x); le nombre x (ou le nombre h) est appelé "témoin". (2) V tire au sort k bits a1 à ak, et transmet à P la question formée par l'ensemble de ces bits (a1,... ak). (3) P calcule la réponse y=r r si' mod n et la i=l..k transmet à V. (4) V vérifie que y2. rl v est égal au témoin x, i=l..k ou encore que H(y2. H v') est égal au témoin h. i=l..k Ce protocole peut être répété un nombre t de fois, soit séquentiellement (protocole à 3.t passes), soit en parallèle (protocole à 3 passes): (1) envoi de t témoins x1 à xt (ou h1 à ht), (2) envoi de t questions de k bits, (3) envoi de t réponses yl à Yt, (4) vérification des t équations correspondantes. Ce protocole d'identification peut être transformé en un schéma de signature non interactif. On se contentera d'expliciter le cas du protocole de base: pour signer un message m, le vérifié P produit un témoin x correspondant à un nombre aléatoire r. Au moyen d'une fonction à sens unique et à partir du message m et du témoin x, il calcule aussi H(m,x). Puis P calcule la réponse y correspondant à la question (al, 20..., ak)=H(m,x). La signature du message est constituée du mot (al,..., ak) et du nombre y. La vérification de la signature du message consiste, pour le vérificateur, à s'assurer de ce que: H(m,y2. v)=(al,..., ak) i=l..k Ce procédé de transformation d'un schéma d'identification à trois passes en un schéma de signature est tout à fait général, et s'applique également à la variante du schéma de FIAT et SHAMIR obtenue en réalisant t fois le protocole de base en parallèle. Dans le schéma de FIAT et SHAMIR, le nombre de multiplications modulaires requises pour le vérifié dans le schéma général à trois passes de paramètres k et t, et pour le schéma de signature associé, est en moyenne de t(l+k/2) (c'est-à-dire une multiplication pour le calcul de chaque témoin et une multiplication pour chaque bit ai égal à 1). Le nombre de multiplications à effectuer du côté vérificateur est également de t(l+ k/2) en moyenne, pour un niveau de sécurité de 2-kt. La capacité mémoire requise pour le stockage de la clé secrète est de k mots de même taille que n (au moins 512 bits). L'intérêt du schéma général (t différent de 1) est de permettre, à niveau de sécurité fixe, une diminution du nombre k de secrets, mais, en contrepartie, le nombre de bits à échanger est multiplié par un facteur de t. Dans le cas o t=1, on obtient une complexité de 11 multiplications pour une signature sur des questions de 20 bits, et de 33 multiplications pour une authentification sur 64 bits. Cependant, on peut atteindre le même niveau de sécurité (2-k) que précédemment avec des questions de poids plus faible. Pour ce faire, au lieu d'utiliser k secrets et de prendre pour ensemble de questions l'ensemble E des mots de k bits, on utilise un nombre de secrets k' supérieur à k, et on prend pour ensemble F de questions les mots de k' bits de poids égal (ou inférieur ou égal) à un nombre p bien choisi. Le nombre de multiplications passe de k/2 en moyenne à p au plus. La contrepartie de ce gain de temps est l'augmentation du nombre de secrets que doit stocker le vérifié, qui passe de k à k'. Si l'on reprend l'exemple du schéma de base de FIAT et SHAMIR, une passe avec k=64, la relation C128 264 128 > 264 montre que l'ensemble E' des mots de taille k'=128 comprend un sous-ensemble F formé de mots de poids p=16 dont le cardinal est supérieur au cardinal de l'ensemble E des mots de poids 64. Si le vérificateur choisit sa question dans ce sous-ensemble, le niveau de sécurité restera le même, tandis que le temps nécessaire pour calculer la réponse passera de 32 à 16. En revanche, le vérifié devra stocker 128 clés secrètes au lieu de 64. En ce qui concerne maintenant le schéma de GUILLOU et QUISQUATER, on peut rappeler qu'il est fondé, comme le précédent, sur la difficulté de factoriser un nombre n qui est le produit de deux grands nombres premiers p et q. Au lieu de prouver qu'il détient les racines carrées modulo n de nombres publics, le vérifié montre qu'il détient la racine eième modulo n de sa clé publique, o e est un nombre dont la taille est typiquement de 16 ou 20 bits dans le cas d'un schéma d'identification et d'au moins 64 bits dans le cas d'un schéma de signature. La clé secrète s du vérifié est liée à sa clé publique v par la relation: v=s-e mod n. Le protocole d'identification, permettant à un vérifié P de s'identifier auprès d'un vérificateur V est alors le suivant: (1) P tire au sort un nombre r, compris entre 0 et n-l, et transmet à V le nombre x=re mod n, ou une fonction de x, notée h=H(x); le nombre x (ou h) est appelé le témoin. (2) V tire au sort une question notée a, comprise entre 0 et e-l, de taille k bits et transmet à P la question a. (3) P calcule le produit y=r.sa et le transmet à V. (4) V vérifie que ye. va est égal au témoin, ou encore que H(ye.va) est égal à h. Un schéma de signature peut être dérivé d'un tel schéma d'identification par un procédé similaire à celui qui a été présenté plus haut à propos du schéma de FIAT et SHAMIR: pour signer un message m, P tire au sort un nombre r, en déduit le témoin x, calcule H(m,x) et calcule la réponse y correspondant à la question a=H(m,x). Le couple (a,y) constitue la signature du message. On peut se placer, à titre d'exemple, dans le cas o e est choisi pour minimiser la complexité des calculs, compte tenu des paramètres de sécurité que sont la taille de n et la longueur k des questions. Le nombre e sera supposé très proche de 2k: on peut par exemple, pour certaines valeurs de k, prendre e=2k+1. Le nombre de multiplications modulaires requises par le calcul du témoin x par P est, pour un tel choix, de k+l; par ailleurs, le nombre de multiplications nécessaires au calcul de la réponse y est en moyenne de 3k/2. On aboutit donc à un nombre moyen de multiplications de 1+5k/2 pour P (au lieu de l+k/2 avec le schéma de base de FIAT et SHAMIR), qu'il s'agisse du schéma d'identification ou de signature. Le nombre moyen de multiplications à effectuer du côté vérifieur est également de 1+5k/2. La taille de la clé secrète est très courte: un seul mot de même taille que le module n (à comparer avec k secrets de même taille que n dans le schéma de FIAT et SHAMIR). On obtient donc une complexité de 51 multiplications pour une identification de niveau de sécurité 2-20, et de 161 multiplications pour une signature de niveau de sécurité 2-64. Le calcul d'exponentielles modulaires représente la part prépondérante du temps de calcul dans les schémas décrits précédemment. On utilise généralement l'algorithme BSM ("binary square and multiply algorithm") ou sa version m-adique, qui consiste à calculer, dans un premier temps, les puissances mk-ième pour les multiplier entre elles. Lorsque l'exposant est un nombre binaire de longeur k, le temps de calcul requis est ainsi de 3 k/2. BRICKELL, GORDON, McCURLEY et WILSON, dans un article intitulé "Fast Exponentiation with Precomputation", publié dans Proceedings EUROCRYPT'92, pp. 200-207, LNCS, vol. 658, Springer Verlag, 1993, d'une part, puis DE ROOIJ, dans un article intitulé "Efficient Exponentiation using Precomputation and Vector Addition Chains", publié dans Proceedings EUROCRYPT'94, pp. 389-399, LNCS 950, Springer Verlag, 1994, d'autre part, ont proposé des méthodes permettant d'accélérer les calculs dans le cas o l'on souhaite calculer, modulo un même nombre n, plusieurs exponentielles d'un même nombre g, pour des exposants u variés. Ces méthodes reposent sur le calcul et le stockage préalables de puissances bien choisies du nombre g. Pour le schéma de GUILLOU et QUISQUATER, les méthodes de BRICKELL et al., d'une part, et de DE ROOIJ, d'autre part, permettent de diminuer le nombre de multiplications rendues nécessaires par le calcul de la réponse y=r.sa mod.n, à condition toutefois que l'on ait stocké à l'avance, dans le module de sécurité du vérifié, des puissances bien choisies de sa clé secrète s. L'économie en nombre de multiplications apportée par cette méthode est cependant limitée du fait qu'elle ne s'applique efficacement qu'au calcul de la réponse y, et non au calcul préalable du témoin x. Bien que les caractéristiques des schémas de FIAT et SHAMIR, d'une part, et de GUILLOU et QUISQUATER, d'autre part, mentionnées précédemment (possibilité d'une gestion des clés publiques basée sur l'identité, complexité des calculs, espace mémoire requis pour le stockage des secrets et le déroulement des calculs, nombre de bits à échanger) mettent ces deux schémas en très bonne place parmi les méthodes d'identification et de signature connues, la complexité des calculs reste très élevée pour une carte à mémoire non dotée d'un coprocesseur cryptographique. Pour le schéma de GUILLOU et QUISQUATER, le nombre de multiplications requises côté vérifié pour une identification (environ 40 multiplications) est supérieur à ce que peut réaliser en un temps acceptable un microprocesseur banal à 8 bits. Pour le schéma de FIAT et SHAMIR, on peut descendre à un nombre de multiplications acceptable pour un tel processeur (environ 10), mais au prix d'une augmentation de la taille de la clé secrète par un facteur typiquement égal à 16 (ou 8 dans le cas o on accepte que le nombre de bits échangés soit à peu près doublé). Enfin, aucun des deux schémas ne conduit à une solution satisfaisante pour faire réaliser des calculs de signature sur une carte à mémoire banale; le nombre de multiplications requises par le schéma de GUILLOU et QUISQUATER reste supérieur à 100, même si l'on précalcule des puissances de la clé secrète dans la carte, et pour une signature de type FIAT et SHAMIR le nombre de secrets de longueur 512 bits ou plus est d'au moins 64 si l'on souhaite limiter le nombre de bits à échanger entre vérifieur et prouveur. Exposé de l'invention Le but de l'invention est de remédier aux inconvénients des procédés d'identification et de signature précédemment analysés. A cette fin, la présente invention propose un schéma mixte, c'est-à-dire intermédiaire entre les schémas de FIAT et SHAMIR d'une part, et GUILLOU et QUISQUATER d'autre part. Ce schéma reste fondé comme les précédents, sur la difficulté de factoriser un grand nombre, produit de deux grands nombres premiers p et q. Selon l'invention: - le vérifié possède une clé secrète constituée par k nombres s, s2,..-, sk inférieurs à un nombre n, et une clé publique constituée par le nombre n, un nombre e dit exposant public, et k nombres v1, v2,..., vk, définis par vi=sie mod n, l'indice i prenant toutes les valeurs entières de 1 inclus à n inclus, l'exposant public e étant un petit entier supérieur ou égal à 3, - le vérificateur connaît le nombre n, le nombre e et les k nombres v1, v2,..., vk, constituant la clé publique du vérifié. Dans le cas d'un schéma d'identification, le procédé de l'invention est en outre caractérisé par le fait qu'il comprend les opérations successives suivantes: a) le vérifié P tire au sort un nombre r compris entre 0 et n-l, calcule le nombre x=re mod n et transmet au vérificateur V le nombre x (ou une fonction de x notée h=H(x) o H est une fonction à sens unique), le nombre x (ou le nombre h) étant appelé "le témoin", b) le vérificateur tire au sort k nombres binaires al, a2,..., ak tels que le nombre de bits non nuls soit au plus égal à un nombre p choisi, et transmet au vérifié l'ensemble des nombres, cet ensemble étant appelé "la question", c) le vérifié calcule une réponse y, à partir du nombre r tiré au sort, des nombres si constituant la clé secrète, et des nombres ai formant la question, la réponse y étant définie par le produit: y=r fsai mod n i=làk et le vérifié P transmet au vérificateur V cette réponse y, d) le vérificateur, à partir de la réponse y qu'il reçoit, du nombre e et des nombres vi qu'il connait par la clé publique du vérifié, calcule la quantité: ye Nl va ou H(ye. l vat) i=làk i=làk et vérifie que le résultat obtenu donne bien le témoin x, (ou h). Le procédé de l'invention peut rappeler la généralisation présentée dans la norme ISO9798-5. Mais l'invention apporte des éléments originaux dans le choix de l'exposant e et de la question du vérificateur. Le niveau de sécurité du procédé de l'invention (c'est-à-dire la probabilité de succès d'un tricheur), déterminé par le nombre de question de poids p (respectivement de poids inférieur ou égal à p), vaut: P CP. (e - 1)P (resp( Y C)(e - 1)P)) k ki= i=o Le nombre de termes des produits Si (calculs effectués par le vérifié) et Vi (calculs effectués i=làk par le vérificateur) qui, si le multiplet (al,.. ., ak) était tiré au sort sans aucune condition de poids, serait de k(1-1/e) en moyenne, est ici égal au plus à p, ce qui, à niveau de sécurité constant, peut conduire à un gain de temps appréciable. Ce gain a néanmoins une contrepartie, qui est l'augmentation du nombre k de secrets que doit stocker le vérifié. Ce procédé de base peut être répété un nombre t de fois, soit séquentiellement (protocole à 3.t passes), soit en parallèle (protocole à 3 passes et quatre opérations): (1) envoi de t témoins x1 à xt (ou h1 ou h1), (2) envoi de t questions de k bits, (3) envoi de t réponses Yl à Yt, (4) vérification des t équations correspondantes. Le choix de l'exposant public e, qui, selon l'invention est un petit entier supérieur ou égal à 3 apporte des avantages. Il réduit le nombre de secrets (d'un facteur de l'ordre de log2 e) ou de passes (paramètre t), à niveau de sécurité égal, par rapport à un schéma de type FIAT et SHAMIR (o l'exposant est égal à 2). Mais, comme l'exposant e reste faible (par rapport à des valeurs comme 216+1 proposées dans la littérature) le nombre de multiplications reste réduit et assez voisin de celui que nécessiterait la valeur 2. Par "petit" entier, on entend donc un entier qui reste inférieur à environ une centaine. On peut prendre par exemple e=5 ou e=17. En d'autres termes, la combinaison de la méthode de sélection du multiplet d'ordre k et de l'utilisation de valeurs faibles pour l'exposant public, permet à niveau de sécurité égal et nombre de multiplications approximativement égal, de réduire le nombre k de secrets (donc l'espace mémoire), ou le nombre t de passes (donc la longueur des messages échangés) par rapport à un schéma de FIAT et SHAMIR. Or, les paramètres k et t ont une importance décisive pour les applications de la carte à mémoire. L'invention porte également sur un procédé de signature de message qui correspond au procédé d'identification qui vient d'être défini. Le vérifié devient alors le signataire S caractérisé par le fait qu'il comprend les opérations successives suivantes: a) le signataire S tire au sort un nombre r compris entre 0 et n-1 et calcule le nombre x=re mod n, le nombre x étant appelé "le témoin", b) le signataire S calcule la question a=(al,... ak)=H(m,x) à partir du message m, du témoin x et d'une fonction à sens unique H. c) le signataire S calcule la réponse y par le produit y =r fs sy imod n i=làk le couple (a,y) constituant la signature du message d) le vérificateur calcule H(my vàk et vérifie que le résultat trouvé est égal à (al, a2,... ak)- Ces procédés nécessitent tant chez le vérifié (ou le signataire) que chez le vérificateur le calcul de produits d'exponentielles de la forme: m-1 p = Hva' modn i=0 o les vi sont en pratiqu. des entiers modulo n, et les termes ai des entiers compris entre 0 et b-1. Pour accélérer de tels calculs, l'invention propose également un procédé de calcul de tels produits, qui s'applique d'ailleurs aussi bien dans le cas des procédés selon l'invention que dans le cas des procédés généraux d'identification et/ou de signature de message qui font appel à de tels produits. Ce procédé est le suivant: 1. on pose initialement S=P=l et d=b-1 2. on calcule ensuite S=S* NF vi 0Oi que d est positif. La valeur finale de P est le produit recherché. Le temps de calcul nécessaire est donc majoré par m'+b-3 o m' est le nombre de termes ai non nuls. Ce procédé de calcul est bien adapté aux calculs mis en oeuvre dans le procédé d'identification et/ou de signature de l'invention. En effet, dans les expressions des prdouits d'exponentielles intervenant dans le procédé, le nombre m' de termes est limité, en particulier dans le cas o l'on a recours au procédé de modification de l'ensemble des questions décrit plus haut et, d'autre part, les exposants sont majorés par e-l, qui est un nombre de petite taille. On peut donner à titre explicatif trois exemples du procédé de l'invention dans le cas d'une signature sur 64 bits. Exemple 1 Dans le premier exemple, on reprend le schéma à trois passes décrit plus haut avec k=35 et e=5. L'algorithme de calcul de produits d'exponentielles présenté précédemment est utilisé lors du calcul de la réponse. La complexité en termes de multiplications modulaires est donc: - pour la passe 1 (calcul du témoin): 3 multiplications, - pour la passe 3 (calcul de la réponse): p+e-2 multiplications o p est le nombre de termes ainon nuls. Le vérificateur applique le procédé décrit plus haut afin de présenter au vérifié une question qui ne comporte que peu de termes ai non nuls. Il choisit pour cela un sous-ensemble S de {1,..., 35} formé de 16 termes, soit C16 232 possibilités. Pour tout i n'appartenant pas au sous-ensemble S, il pose alors ai=0 et, pour tout i appartenant à S, il prend pour ai une valeur aléatoire comprise entre 1 et 4, ce qui correspond à un mot de 2 bits. Le niveau de sécurité est donc bien de 2- 64. Le vérifieur va ainsi soumettre au prouveur une question avec p=16 et le temps de calcul total sera donc 3+16+5-2=22 multiplications. Exemple 2: on prend e=5 et k=10, on trouve un temps de calcul de 3+5+5-2=11 multiplications pour un niveau de sécurité donné par le nombre de questions: 218 _ 22*5, C5 *1o Exemple 3: on prend e=17 et k=22; on trouve un temps de calcul de 5+11+17-2multiplications pour un niveau de sécurité donné par le nombre de questions: 64 24*11* cl Dans le tableau ci-dessous, on peut comparer les procédés entre eux tant pour l'identification que pour la signature. Dans le tableau, FS représente l'algorithme de FIAT et SHAMIR et GQ celui de GUILLOU et QUISQUATER. L'invention est représentée par les trois exemples Exl, Ex2, Ex3. Identification Signature Algorithm FS GQ Ex2 FS GQ Ex3 Exl e Clés 20 1 10 64 1 22 35 préstocké es niveau de 2-20 2-20 2-18 2- 64 2-64 2-64 2-64 sécurité temps de 11 51 11 33 161 31 22 calcul REVENDICATIONS 1. Procédé d'identification entre une première entité P appelé le vérifié et une seconde entité V appelée le vérificateur, ces entités étant constituées par un module de sécurité comprenant une carte à mémoire, caractérisé par le fait que: - le vérifié possède une clé secrète constituée par k nombres s5, s2,..., sk inférieurs à un nombre n, et une clé publique constituée par le nombre n, un nombre e dit exposant public et k nombres v1, v2,..., vk, définis par vi=s-e mod n, l'indice i prenant toutes les valeurs entieres de 1 à n inclus, l'exposant public e étant un petit entier supérieur ou égal à 3, - le vérificateur connaît le nombre n, le nombre e et les k nombres v1, v2,..., vk, constituant la clé publique du vérifié, ce procédé étant en outre caractérisé par le fait qu'il comprend les opérations successives suivantes: a) le vérifié P tire au sort un nombre r compris entre 0 et n-l, calcule le nombre x=re mod n et transmet au vérificateur V le nombre x (ou une fonction de x notée h=H(x) o H est une fonction déterminée), le nombre x (ou le nombre h) étant appelé "le témoin", b) le vérificateur tire au sort k nombres binaires al, a2,..., ak tels que le nombre de bits ai non nuls soit au plus égal à un nombre p choisi, et transmet au vérifié l'ensemble des nombres, cet ensemble étant appelé "la question", c) le vérifié calcule la réponse y, à partir du nombre r tiré au sort, des nombres si constituant la clé secrète, et des nombres ai de la question, la réponse y étant définie par le produit: SP 11704.C/RS y=r f Sa, mod n i=làk et le vérifié P transmet au vérificateur V cette réponse y, d) le vérificateur, à partir de la réponse y qu'il reçoit, du nombre e et des nombres vi qu'il connaît par la clé publique du vérifié, calcule: ye fl vai ou H(ye. flvai> i=làk i=làk et vérifie que le résultat trouvé donne bien le témoin x, (ou h). 2. Procédé de signature de message entre une première entité P appelée le signataire (S) et une seconde entité V appelée le vérificateur, ces entités étant constituées par un module de sécurité comprenant une carte à mémoire, caractérisé par le fait que: - le signataire (S) possède une clé secrète constituée par k nombres s1, s2,..., sk inférieurs à un nombre n, et une clé publique constituée par le nombre n, un nombre e et k nombres v1, v2,.., vk, définis par vi=s, mod n, ce signataire ayant un message m à signer et à transmettre, - le vérificateur connaît le nombre n, le nombre e et les k nombres v1, v2,..., Vk, constituant la clé publique du signataire, ce procédé étant en outre caractérisé par le fait qu'il comprend les opérations successives suivantes: a) le signataire S tire au sort un nombre r compris entre 0 et n-1 et calcule le nombre x=re mod n, le nombre x est appelé "le témoin", b) le signataire S calcule la question a=(al,... ak)=H(m,x) à partir du message m, du témoin x, et d'une fonction à sens unique H, SP 11704.C/RS c) le signataire calcule une réponse y par le produit y=r ri i i=làk le couple (a,y) constituant la signature du message (m), d) le vérificateur calcule H(m,ye f vi) et vérifie i=làk que le résultat trouvé est égal à (a1, a2,..., ak). 3. Procédé selon les revendications 1 ou 2, caractérisé par le fait qu'il est répété séquentiellement un nombre t de fois. 4. Procédé selon les revendications 1 ou 2, caractérisé par le fait qu'il est répété un nombre t de fois en parallèle: - dans l'opération a) le vérifié (resp. le signataire) calcule un nombre t de témoins xl, x2,..., xt (ou hl, h2,..., ht), - dans l'opération b) le vérificateur pose t questions de k bits, - dans l'opération c) le vérifié (resp. le signataire) calcule t réponses Yl, Y2, *--, Yt, - dans l'opération d) le vérificateur effectue t vérifications avec les t témoins. 5. Procédé de calcul de produits de la forme: m-1 i-r a, p = 11vit i=0 o les ai sont des entiers compris entre 0 et b-1 dans un procédé d'identification ou de signature de message selon l'une quelconque des revendications 1 ou 2, caractérisé par le fait qu'on s'y prend comme suit: a) on pose initialement S=P=1 et d=b-l, SP 11704.C/RS b) on prend pour nouvelle valeur de S le produit SF rlvi avec O S*P, d) on réduit d d'une unité, et l'on réitère les opérations b), c) et d) tant que d est positif. 6. Procédé selon la revendication 5, caratérisé par le fait que le procédé d'identification ou de signature est conforme au procédé selon l'une quelconque des revendications 1 à 4. SP 11704.C/RS