Brevet FR2788909A1 — publié le 20000728

PROCEDE D'AUTHENTIFICATION OU DE SIGNATURE A NOMBRE DE CALCULS REDUIT Domaine technique La présente invention a pour objet un procédé d'authentification ou de signature à nombre de calculs réduit. L'invention concerne plus précisément le domaine de la cryptographie dite à clé publique. Dans de tels procédés, l'entité à authentifier possède une clé secrète et une clé publique associée. L'entité authentifiante a uniquement besoin de cette clé publique pour réaliser l'authentification. L'invention concerne plus précisément encore le domaine des procédés d'authentification dits à connaissance nulle ou sans apport de connaissance ("zero-knowledge"). Dans ce type de procédé, l'authentification se déroule suivant un protocole qui, de façon prouvée, et sous des hypothèses reconnues comme parfaitement raisonnables par la communauté scientifique, ne révèle rien sur la clé secrète de l'entité à authentifier. Plus précisément encore, l'invention concerne des procédés sans apport de connaissance basés sur le problème de la factorisation (c'est- à-dire sur la difficulté de décomposer de grands entiers en un produit de nombres premiers). L'invention trouve une application dans tous les systèmes nécessitant d'authentifier des entités ou des messages, ou de signer des messages, et plus particulièrement dans les systèmes o le nombre de calculs effectués par l'entité authentifiée constitue un paramètre critique. C'est notamment le cas des cartes à microcircuit standards ou à bas coût, non pourvues d'un coprocesseur arithmétique (appelé souvent cryptoprocesseur) pour accélérer les calculs cryptographiques. Une application typique de l'invention est le porte-monnaie électronique, qui requiert un très haut niveau de sécurité, tout en excluant l'usage d'un cryptoprocesseur, soit pour des raisons de coût, soit pour des raisons techniques (par exemple l'utilisation d'une interface sans contact), soit pour les deux. Une autre application possible est la télécarte de future génération, pour laquelle les contraintes de coût sont encore bien plus sévères que pour le porte- monnaie électronique. Etat de la technique antérieure De nombreux protocoles d'identification du type sans apport de connaissance sont connus. On peut citer, par exemple: - le protocole de FIAT-SHAMIR décrit dans l'article de A. FIAT et A. SHAMIR intitulé "How to prove yourself: Practical solutions to identification and signature problems", publié dans "Advances in Cryptology: Proceedings of CRYPTO'86, Lecture Notes in Computer Science", vol. 263, Springer-Verlag, Berlin, 1987, pp. 186-194, - le protocole de GUILLOU-QUISQUATER décrit dans l'article de L. C. GUILLOU et J.J. QUISQUATER, intitulé "A practical zero-knowledge protocole fitted to security microprocessors minimizing both transmission and memory", publié dans "Advances in Cryptology: Proceedings of EUROCRYPT'88, Lecture Notes in Computer Science", vol. 330, Springer- verlag, Berlin, 1988, pp. 123-128, - le protocole de GIRAULT décrit dans la demande de brevet français FR-A-2 716 058, basé sur ie problème dit du logarithme discret. De façon générale, la plupart des protocoles d'identification (ou d'authentification de message) à apport nul de connaissance se déroulent en trois échanges. On supposera, afin de simplifier la description, que l'entité authentifiante B connaît déjà tous les paramètres publics caractéristiques de l'entité à authentifier A, à savoir son identité, sa clé publique, etc.. Lors du premier échange, A fournit à B une valeur c dite "engagement", image par une fonction pseudo-aléatoire h d'un paramètre x (lui-même calculé à partir d'un nombre r choisi au hasard par A), ainsi que, s'il y a lieu, du message à authentifier ou à signer: c=h(x,[M]) o la notation [M] exprime que M est optionnel. C'est la première étape. Dans certains protocoles, il peut y avoir plusieurs engagements. Lors d'un deuxième échange, B envoie à A un paramètre e choisi au hasard (la "question"). C'est la deuxième étape. Lors du troisième échange, A fournit à B une "réponse" y, cohérente avec la question e, l'engagement c et la clé secrète v de A (troisième étape). Enfin, B contrôle la réponse reçue. Plus précisément, B recalcule x à partir des éléments y, e et v par x=p(y,e,v); puis il vérifie que: c=h(p(v,e,y),[M]) (quatrième étape). Dans le cas o il n'y a pas de message à authentifier, le recours à la fonction pseudo-aléatoire h est optionnel. On peut prendre alors c=x. La vérification consiste alors à vérifier que x=(p(y,e,v). Dans certains protocoles, il y a un ou deux échanges supplémentaires entre les entités à authentifier et authentifiante. Dans le cas d'une signature de message, les deux premiers échanges sont supprimés, car le paramètre e est choisi égal à c; A calcule alors successivement, et seul, c, e(=c) et y. Le nombre u de questions possibles est directement relié au niveau de sécurité du protocole. Ce dernier est défini comme la probabilité p de détection d'un imposteur (c'est-à-dire d'une entité C qui tente frauduleusement de se faire passer pour A), et est caractérisé par un paramètre k. Les nombres p et k sont reliés par l'égalité: p=l-2-k. En d'autres termes, l'imposteur n'a qu'une chance sur 2k de réussir son imposture. Dans le cas présent, on peut montrer que, si le protocole repose sur un problème mathématique difficile, et si les engagements sont de longueur suffisante, alors il suffit que la longueur de u soit égale à k bits. Typiquement, k est égal à 32 bits, ce qui donne seulement une chance sur quatre milliards de réussir une imposture. Dans les applications o l'échec d'une identification peut avoir des conséquences très néfastes (poursuite judiciaire par exemple), cette longueur peut être réduite à quelques bits. Dans les protocoles basés sur la factorisation, le calcul de x à partir de r, ou le calcul de y à partir de e, ou les deux, implique(nt) des opérations modulo n o n est un nombre composé difficile à factoriser. Ce nombre est de type universel, c'est-à- dire généré par une tierce partie de confiance, mémorisé et utilisé par toutes les entités qui y sont rattachées. Le caractère universel de n implique qu'il est de très grande taille (typiquement 1024 bits), car la découverte de la factorisation de n compromettrait les clés secrètes de tous les utilisateurs. Dans leur version de base, aucun des protocoles mentionnés plus haut ne peut être mis en oeuvre dans une application soumise à de fortes contraintes, (bas coût, faible complexité) telles que décrites dans la section précédente, car les calculs requis ne pourraient être effectués par une carte à microcircuit qui ne serait pas dotée d'un cryptoprocesseur. La demande de brevet français FR-A-2 752 122 décrit bien une optimisation de ces protocoles, mais cette optimisation reste limitée aux protocoles basés sur le logarithme discret dans un mode dit "à précalculs" qui présente l'inconvénient d'impliquer des rechargements à intervalles réguliers. La présente invention a justement pour but de remédier à cet inconvénient. Elle tend à réduire le nombre de calculs effectués par l'entité authentifiée dans les protocoles d'identification (ou d'authentification de message ou de signature de message) sans apport de connaissance basés sur la factorisation, cette réduction pouvant atteindre un facteur 2 ou 3. Elle rend ainsi possible, et plus particulièrement quand on la couple avec le protocole Guillou-Quisquater, l'exécution rapide d'un algorithme d'identification (ou d'authentification de message ou de signature de message) à clé publique dans une carte à microcircuit standard à bas coût, pour des applications telles que le porte-monnaie électronique ou la télécarte de future génération. Exposé de l'invention Ce but est atteint en choisissant pour le module n non pas un paramètre de type universel, mais un paramètre de type individuel (en d'autres termes, chaque utilisateur possède sa propre valeur de n), et d'exploiter ce choix des deux manières suivantes, (qui peuvent d'ailleurs être avantageusement combinées): 1) d'abord en choisissant une taille de n inférieure à la valeur usuelle (typiquement inférieure à 1000 et par exemple comprise entre 700 et 800); cela est possible car la découverte de la factorisation de n ne compromet plus que la clé secrète de l'utilisateur correspondant et en aucune façon celle des autres; cette seule modification permet de réduire déjà d'environ 40% la durée des calculs effectués modulo n; 2) si l'utilisateur a conservé les facteurs premiers de n dans la mémoire de son dispositif de sécurité, on peut mettre en oeuvre la technique dite des restes chinois, pour réduire encore d'environ 40% la durée des calculs effectués modulo n, lorsque le nombre de facteurs premiers est 2; cette réduction peut être encore amplifiée en utilisant plusieurs facteurs premiers (typiquement 3 ou 4). Au total, on peut donc réduire les temps de calcul modulo n d'au moins 60%, c'est-à-dire d'au moins un facteur 2. De façon précise, l'invention a pour objet un procédé d'authentification mettant en oeuvre une première entité dite "à authentifier", possédant une clé publique v et une clé secrète s, ces clés étant reliées par une opération modulo n o n est un entier appelé module, et une seconde entité dite "authentifiante", connaissant la clé publique v, ce procédé comprenant des échanges d'informations du type à apport nul de connaissance entre l'entité à authentifier et l'entité authentifiante et des calculs cryptographiques portant sur ces informations, certains calculs étant effectués modulo n, ce procédé étant caractérisé en ce que le module n est propre à l'entité à authentifier, laquelle communique ce module à l'entité authentifiante. Dans un mode de mise en oeuvre avantageux, l'opération modulo n est du type v=s-t (mod n) o t est un paramètre, et les échanges d'informations du type à apport nul de connaissance et les calculs cryptographiques sont les suivants: * l'entité à authentifier choisit au hasard un (des) nombre(s) entier(s) r compris entre 1 et n-1 et calcule un (des) paramètre(s) x égal (égaux) à rt(mod n), puis un (des) nombre(s) c appelé(s) engagement(s) qui est (sont) une (des) fonction(s) de ce (ces) paramètre(s) et éventuellement d'un message (M), et envoie cet (ces) engagement(s) à l'entité authentifiante; * l'entité authentifiante reçoit le ou les engagement(s) c, choisit au hasard un nombre e appelé "question" et envoie cette question à l'entité à authentifier; * l'entité à authentifier reçoit la question e, effectue un (des) calcul(s) utilisant cette question e et la clé secrète s, le résultat de ce (ces) calcul(s) constituant une (des) réponse(s) y, et envoie cette (ces) réponse(s) à l'entité authentifiante; * l'entité authentifiante reçoit la (les) réponse(s) y, effectue un calcul utilisant la clé publique v et le module n, et vérifie par une opération modulo n que le résultat de ce calcul est bien cohérent avec le (les) engagement(s) reçu(s). La présente invention a également pour objet un procédé de signature de message par une entité dite "signataire", cette entité possédant une clé publique v et une clé secrète s, ces clés étant reliées par v=s- t(mod n) o n est un entier appelé "module" et t un paramètre, procédé dans lequel l'entité signataire calcule un engagement c fonction notamment du message à signer et un nombre y fonction de la clé secrète, émet les nombres y et c qui constituent la signature du message et le message, ce procédé étant caractérisé en ce que le module n est propre au signataire. Dans un mode de mise en oeuvre avantageux, le signataire choisit au hasard un nombre entier r compris entre 1 et n-l, calcule un paramètre x égal à rt(mod n), calcule un nombre c fonction du paramètre x et du message à signer, calcule un nombre y à l'aide de sa clé secrète s et fonction des nombres r et e, et émet les nombres c et y comme signature. Description détaillée de modes particuliers de mise en oeuvre de l'invention Dans la description qui suit, l'invention est supposée être appliquée au protocole GUILLOU-QUISQUATER mais, naturellement, il ne s'agit là que d'un exemple et l'invention n'est nullement limitée à ce protocole. On rappelle que dans le protocole de GUILLOU- QUISQUATER, les paramètres universels sont le module n, produits de nombres premiers et comprenant au moins 1024 bits, et un nombre t entier. La clé publique v et la clé secrète s sont reliées par l'équation: v=s-l(mod n). Le niveau de sécurité choisi est u (inférieur ou égal à t, et le plus souvent, u=t). L'authentification de A par B, que l'on peut appeler respectivement Alice et Bob selon la terminologie en usage, se déroule comme suit: 1. Alice choisit r dans l'intervalle [l,n-1], calcule x=rt(mod n) puis c=h(x, [M]) et envoie c à Bob. 2. Bob choisit e dans l'intervalle [0,u-1] et envoie e à Alice. 3. Alice calcule y=rse(mod n) et envoie y à Bob. 4. Bob calcule x=ytve(mod n) et vérifie que c=h(x, [M]) Dans le cas o il n'y a pas de message à authentifier, le recours à la fonction pseudo-aléatoire h est optionnel: on peut prendre c=x. La vérification consiste alors à vérifier que x=ytve(mod n). Avec le protocole modifié selon l'invention, le seul paramètre universel est to. La clé publique est (n,v), o n a au moins 768 bits. La clé publique v et la clé secrète s d'Alice sont reliées par l'équation: v=s-l(mod n) La clé secrète peut aussi inclure les facteurs premiers de n afin de bénéficier du deuxième volet de l'invention. Le paramètre t peut être inclus dans la clé publique (dans ce cas, il n'y a plus de paramètre universel). Le niveau de sécurité choisi par Alice et Bob est u (inférieur ou égal à t; souvent u=t). L'authentification d'Alice par Bob se déroule comme décrit plus haut, mais avec des calculs plus rapides grâce à un module plus petit. Puisque tous les calculs d'Alice sont effectués modulo n, le facteur de gain obtenu sur une unique multiplication modulaire se répercute sur l'ensemble des calculs effectués par Alice durant l'exécution du protocole. Il en serait de même avec les protocoles de Fiat-Shamir ou de Girault par exemple (dans ce dernier cas, il n'y a pas de gain dans l'étape 3 puisqu'il n'y a plus de calculs modulaires, mais de toute façon le temps d'exécution de cette étape est négligeable par rapport à l'exponentiation modulaire de la première étape). L'invention peut également être mise en oeuvre par la technique dite des restes chinois, qui consiste à effectuer les calculs modulo chacun des nombres premiers composant n. Comme ces nombres sont nécessairement beaucoup plus petits, ces calculs sont rapides. Il reste à calculer le résultat modulo n à l'aide d'une opération dite de reconstitution. Cette technique est décrite dans l'article de J.J QUISQUATER et C. COUVREUR, intitulé "Fast decipherment algorithm for RSA public-key cryptosystem", publié dans "Electronic Letters", vol. 18, Octobre 1982, pp. 905- 907. On considère donc le cas o n est le produit de deux facteurs premiers p et q. D'après le théorème de Bezout, il existe deux entiers a et b tels que ap+bq=1. Pour calculer y=xe(mod n), on commence par "réduire" x modulo chacun des nombres premiers en calculant xp=x(mod p) et xq=x(mod q). On réduit également e modulo (p-l) et (q-1) en calculant ep=emod(p-1) et eq=emod(q-1). (Dans le protocole de Guillou-Quisquater, e est toujours inférieur à p-1 et q-1 et par conséquent ep=eq=e). e On calcule alors yp=xpp (mod p) et e yqXq (mod q). Quand p et q sont de tailles semblables, chacun de ces calculs est environ 8 fois plus rapide que le calcul y=xe(mod n) quand la taille de e est celle de n (premier cas); 4 fois plus rapide quand elle est inférieure ou égale à celle de p (deuxième cas comme par exemple dans l'algorithme). L'ensemble des deux calculs est donc, soit 4 fois plus rapide, soit 2 fois plus rapide. Il reste à reconstituer y à partir de yp et yq, ce qui est réalisé par l'opération: y=yp+ap(yq-yp)(mod n) Au total, la méthode des restes chinois permet d'accélérer le calcul d'un facteur compris entre 3 et 4 dans le premier cas, entre 1,5 et 2 dans le deuxième cas. Lorsque le nombre de facteurs premiers (supposés de tailles semblables) est égal à k, le facteur d'accélération est proche de k2 dans le premier cas, proche de k dans le deuxième cas. REVENDICATIONS 1. Procédé d'authentification mettant en oeuvre une première entité dite "à authentifier" (A), possédant une clé publique v et une clé secrète s, ces clés étant reliées par une opération modulo n o n est un entier appelé module, et une seconde entité dite "authentifiante" (B), connaissant la clé publique v, ces entités, telles que cartes à microcircuit, porte- monnaie électronique, télécarte, comprenant des moyens aptes à échanger des informations du type à apport nul de connaissance et à effectuer des calculs cryptographiques portant sur ces informations, certains calculs étant effectués modulo n, ce procédé étant caractérisé en ce que le module n est propre à l'entité à authentifier (A), laquelle communique ce module à l'entité authentifiante (B). 2. Procédé selon la revendication 1, dans lequel l'opération modulo n est du type v=s-t (mod n), t étant un paramètre et les échanges d'informations du type à apport nul de connaissance et les calculs cryptographiques sont les suivants: * l'entité à authentifier (A) choisit au hasard un (des) nombre(s) entier(s) r compris entre 1 et n-1 et calcule un (des) paramètre(s) (x) égal (égaux) à rt(mod n), puis un (des) nombre(s) c appelé(s) engagement(s) qui est (sont) une (des) fonction(s) de ce (ces) paramètre(s) et éventuellement d'un message (M), et envoie cet (ces) engagement(s) à l'entité authentifiante (B); * l'entité authentifiante (B) reçoit le ou les engagement(s) c, choisit au hasard un nombre e appelé "question" et envoie cette question à l'entité à authentifier (A); * l'entité à authentifier (A) reçoit la question e, effectue un (des) calcul(s) utilisant cette question e et la clé secrète s, le résultat de ce (ces) calcul(s) constituant une (des) réponse(s) y, et envoie cette (ces) réponse(s) à l'entité authentifiante (B); * l'entité authentifiante (B) reçoit la (les) réponse(s) y, effectue un calcul utilisant la clé publique v et le module n, et vérifie par une opération modulo n que le résultat de ce calcul est bien cohérent avec le (les) engagement(s) reçu(s). 3. Procédé selon la revendication 2, dans lequel le nombre n est inférieur à 1 000. 4. Procédé selon la revendication 3, dans lequel le nombre n est compris entre 700 et 800. 5. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel n est le produit de deux nombres entiers (p, q) et dans lequel les opérations modulo n sont effectuées par la méthode dite "des restes chinois". 6. Procédé de signature de message par une entité dite "signataire" (A), cette entité possédant une clé publique v et une clé secrète s, ces clés étant reliées par v=s-t(mod n) o n est un entier appelé "module" et t un paramètre, ce signataire, tel que carte à microcircuit, porte-monnaie électronique, télécarte, comprenant des moyens aptes à calculer un engagement c fonction notamment du message à signer M et un nombre y fonction de la clé secrète, à émettre les nombres y et c qui constituent la signature du message M et le message M, ce procédé étant caractérisé en ce que le module n est propre au signataire. 7. Procédé de signature de message selon la revendication 6, dans lequel le signataire choisit au hasard un nombre entier r compris entre 1 et n-1, calcule un paramètre x égal à rt(mod n), calcule un nombre c fonction du paramètre x et du message à signer M, calcule un nombre y à l'aide de sa clé secrète s et fonction des nombres r et e, et émet les nombres c et y comme signature.