Brevet FR2829597A1 — publié le 20030314

PROCEDE POUR LE CALCUL D'UNE EXPONENTIATION DANS UN GROUPE ET SON APPLICATION A L'AUTHENTIFICATION D'UN UTILISATEUR De nombreuses applications informatiques (accès à des informations confidentielles, transactions financières, distributeurs de billets,...) nécessitent l'authentification préalable du client, utilisateur du service. Cette authentification se fait en général par la combinaison de divers éléments : le client - est porteur d'un objet réputé lui appartenir (carte à puce, téléphone mobile, carte SIM, dispositif hardware spécifique repéré par un numéro de série unique et indélébile...) - connaît une information secrète (code PIN, mot de passe,...). - présente certaines caractéristiques biométriques permettant de l'identifier (fond d'oeil, empreintes digitales, reconnaissance de la voix...) L'information permettant d'authentifier le client (code PIN, mot de passe, information issue des caractéristiques biométriques...) doit alors être contrôlée par le système informatique avant que le client n'ait accès à ce qu'il demande. Bien sûr, cette information ne doit en aucun cas transiter en clair sur le réseau. Elle serait en effet très facile à espionner par un pirate qui pourrait ensuite se faire passer pour le client. Cette information devra donc être cryptée. Cela se fait habituellement par le biais d'un échange de type défi/réponse. Le principe général du défi/réponse est le suivant : le site central (serveur d'authentification) envoie un message, le défi, qui est normalement une suite d'octets aléatoires. L'ordinateur du client effectue, à partir de ce défi, un calcul utilisant l'information à contrôler (code PIN, caractéristiques biométriques,...). Le résultat de ce calcul est la réponse au défi. Il est impossible de retrouver ce résultat sans connaître avec précision l'information à contrôler. La réponse est transmise au serveur qui vérifie qu'elle correspond bien à ce qui était attendu, ce qui authentifie ainsi le client (ou, du moins, assure que le bon code PIN, ou la bonne empreinte digitale, ou autre élément d'identification a été fourni par la personne désirant se faire authentifier). L'exécution des algorithmes de défi/réponse nécessite des ressources informatiques (puissance de calcul, temps de calcul, espace mémoire) qui rendent leur mise en pratique difficile sur des processeurs de faible puissance, comme ceux qui équipent les cartes à puce ou les téléphones mobiles. Plus précisément, les temps de calcul nécessaires à l'authentification du client risquent d'être rédhibitoires. La présente invention consiste à décomposer le calcul en deux phases, l'une d'elles étant effectuée d'avance, c'est-àdire avant que l'utilisateur n'ait entré son code PIN, son empreinte vocale, ou autre élément d'identification. La seconde phase, qui prend en compte les données d'authentification proprement dites, est alors quasi instantanée. Dans le cas d'une application liée aux réseaux téléphoniques mobiles, un client peut utiliser son téléphone mobile pour accéder à des informations confidentielles ou pour réaliser une transaction financière (commerce électronique ou autre). Le client s'était déjà authentifié au moment où il a mis sous tension son téléphone mobile et s'est connecté au réseau téléphonique mobile. Mais ce n'est pas suffisant car il a pu laisser son poste hors de sa surveillance pour quelques instants et une personne indélicate a pu le lui emprunter pour l'utiliser frauduleusement. Une nouvelle authentification est donc nécessaire au moment de réaliser l'opération souhaitée. On peut d'ailleurs prévoir que le code PIN (ou le mot de passe à prononcer, ou tout autre moyen d'authentification) n'est pas le même que lors de la mise sous tension. Dans le mode de réalisation proposé, dès la mise sous tension et la connexion au réseau téléphonique mobile établie, le serveur d'authentification enverra au client un défi. La première phase du calcul démarrera alors, et les résultats partiels de ce calcul resteront stockés dans la mémoire du téléphone mobile du client. Au moment où le client souhaite réaliser une opération nécessitant une authentification forte, il entrera un code PIN (ou toute autre information permettant de l'authentifier). La seconde phase du calcul de la réponse démarre alors, et le résultat est disponible quasi instantanément. L'application n'est donc plus pénalisée par la lenteur des calculs sur un poste client à ressources informatiques limitées. Diverses normes de fait sont en train de se mettre en place pour la réalisation pratique des défis/réponses. Les techniques utilisées se répartissent en deux grands types. L'un regroupe les défis/réponses basés sur le système à clé publique RSA. L'autre regroupe les défis/réponses basés sur le protocole de Diffie-Hellman, qui lui-même comporte de nombreuses variantes selon les structures mathématiques sous-jacentes mises en oeuvre. Avant d'entrer dans les détails des algorithmes, un petit rappel mathématique peut s'avérer nécessaire. Les algorithmes mis en oeuvre sont, dans les deux cas, basés sur des calculs d'exponentiation dans des groupes finis. Leur sécurité repose sur l'impossibilité de résoudre en un temps raisonnable le problème appelé problème du logarithme discret. L'arithmétique modulo N est une technique classique qui consiste à considérer que deux nombres sont égaux dès que leur différence est un multiple entier d'un nombre, noté ici N, appelé le module. On dit alors que les nombres sont définis modulo N et qu'on travaille sur l'ensemble des entiers modulo N. Ces nombres peuvent être assimilés aux entiers compris entre 0 et N-1. Dans les applications cryptographiques, ce nombre est en général très grand (nombre à 512 ou 1024 bits pour fixer les idées). L'addition et la multiplication sont définies de façon similaire à l'arithmétique classique, mais lorsqu'un résultat dépasse N-1, on le remplace par le reste de sa division par N. L'arithmétique ainsi définie est appelée arithmétique modulo N. Nous ne considérerons ici que la multiplication. L'ensemble des entiers modulo N, dont on aura enlevé l'élément 0, forme un groupe pour l'opération de multiplication, qu'on appellera groupe multiplicatif des entiers modulo N. On peut réaliser en un temps raisonnable des additions et des multiplications modulo N. L'exponentiation, pour une base a et un exposant b est la multiplication de b éléments égaux à a. On réservera le nom d'exponentiation modulaire à l'exponentiation réalisée dans le groupe multiplicatif des entiers modulo N. Le résultat'de cette opération est appelé a puissance b modulo N et sera noté ci-après a^b[N]. Le calcul de a^b [N] est plus complexe, qu'une simple addition ou multiplication, mais il peut s'effectuer en un temps raisonnable, car et il peut se ramener, en moyenne, à 3k/2 multiplications modulo N (ou k est le nombre de bits nécessaires à la représentation binaire de l'exposant b). L'algorithme exact en sera détaillé plus loin. Par contre, si on connaît la base a et le résultat de l'exponentiation modulaire a^b [N], il est en général impossible (pour un module N assez grand), de retrouver en un temps raisonnable l'exposant b. Ce problème est connu sous le nom de problème du logarithme discret. Le nom provient de ce que, si on travaillait sur des nombres réels classiques, connaissant a et c = a^b, l'exposant b serait simplement donné par la relation b = Log c/Log a Malheureusement (et heureusement pour les cryptographes), il n'existe pas d'équivalent du logarithme sur les groupes utilisés en cryptographie et en particulier sur l'arithmétique modulo N. L'impossibilité de résoudre le problème du logarithme discret fait que l'exponentiation modulaire est une excellente fonction à sens unique . Le calcul direct (calculer a^b [N] connaissant a et b) est très rapide, quelques fractions de secondes sur les micro-ordinateurs du commerce, pour un module N de plusieurs centaines de bits. Le temps nécessaire au calcul inverse (calculer b connaissant a et a^b[N]) peut se chiffrer en milliard d'années, même avec des moyens de calculs importants. La fonction d'exponentiation peut être utilisée dans des applications cryptographiques. On bâtit un protocole dans lequel l'utilisateur normal ne fait que les calculs d'exponentiation directs, calculs raisonnablement rapides sur des machines peu puissantes. Un pirate souhaitant accéder frauduleusement aux informations devrait, quant à lui, résoudre le problème inverse, celui du logarithme discret ce qui lui est impossible, même avec les moyens très importants dont pourrait par exemple disposer une organisation criminelle puissante. Le problème du logarithme discret a son équivalent dans un groupe quelconque. On peut, en effet, dans un groupe quelconque, définir une opération équivalente de l'exponentiation et dont la réciproque joue le rôle du problème du logarithme discret. C'est ce que nous allons décrire ciaprès. Dans le mode de réalisation proposé, on se placera dans un groupe choisi de façon à ce que les calculs habituels, en particulier la multiplication et l'exponentiation, soient, dans ce groupe, faciles à réaliser sur un ordinateur. Soit G un tel groupe. On notera la loi de composition par le symbole 0 la loi de composition dans G. Chaque élément du groupe G a une représentation informatique sous forme d'une chaîne de bits (qu'on notera par le même nom que l'élément de G qu'il représente). On se placera dans le cas où l'opération de composition du groupe G (qui à u et v associe w = u v) est facile et rapide à programmer. Cela signifie qu'on peut écrire une routine informatique rapide permettant de calculer la chaîne de bits représentant u v à partir des chaînes de bits représentant u et v. On notera e l'élément neutre de G. Étant donné un élément quelconque g du groupe G, et un entier a, positif ou nul, on notera g^ 0 a la composée (par la loi 0) d'un nombre a d'éléments égaux à g. Cette notation revient à écrire g^ 0 pour l'élément neutre e, g^ l pour g, g^02 pour gOg ; g^03 = g g g ; et ainsi de suite. On notera g^ -a l'inverse de g^Oa pour la loi de groupe 0. L'opération ainsi définie est l'opération d'exponentiation dans le groupe G. Le nombre g est appelé la base et le nombre a l'exposant. Le résultat g^Oa sera appelé g puissance a pour la loi . On appellera ordre de g et on notera o (g) le plus petit entier positif a (s'il existe) tel que g^ a = e. S'il n'existe aucun tel a, on dira que l'ordre de g est infini. L'ensemble des puissances d'un élément g, muni de l'opération 0 forme un sous-groupe de G, qui, lorsque o (g) est fini, est isomorphe à l'ensemble des entiers modulo o (g) muni de l'opération d'addition et qui, lorsque o (g) est infini, est isomorphe à l'ensemble des entiers relatifs. Dans les applications cryptographiques, on utilisera toujours des groupes G et des bases g choisis de façon que l'ordre o (g) soit très élevé (nombre entier à plusieurs centaines de bits). L'idée fondamentale est de travailler dans des groupes où l'exponentiation (calcul de g^ a connaissant la base g et l'exposant a) peut se faire relativement rapidement, mais où le problème inverse (retrouver l'exposant a connaissant la base g et le résultat g^Oa de l'exponentiation) est impossible en un temps raisonnable. Ce dernier problème est l'analogue problème du logarithme discret décrit précédemment. De nombreux groupes ayant ces caractéristiques sont utilisés en cryptographie. Les recherches actuelles dans ce domaine s'articulent autour de deux objectifs. Le premier est de trouver des solutions au problème du logarithme discret dans un groupe G donné, ou au contraire de démontrer qu'il n'y a pas de solution en un temps raisonnable. Le second est de construire des nouveaux groupes sur lesquels le problème du logarithme discret serait plus difficile à résoudre que dans les groupes habituellement utilisés. L'enjeu de ces recherches est de déterminer des groupes dans lesquels, d'une part, le problème du logarithme discret est raisonnablement difficile à résoudre, mais dans lequel, d'autre part, le calcul de l'exponentiation nécessite un minimum de ressources informatiques (temps de calcul, espace mémoire nécessaire). L'utilisation de groupes de ce type dans les applications cryptographiques permet d'atteindre un niveau de sécurité donné tout en minimisant les ressources nécessaires à l'authentification d'un client. Outre l'arithmétique modulo N présentée plus haut, deux familles de groupes semblent prometteuses en cryptographie, liés les uns aux courbes elliptiques sur un corps fini, les autres aux courbes hyperelliptiques. Depuis plusieurs décennies, on étudie les structures de groupes sur les ensembles de points d'une courbe elliptique. Ces courbes peuvent être définies, sur le corps des nombres réels, sur celui des nombres complexes, sur les nombres rationnels ou encore sur un corps fini. La loi de composition se programme facilement, car il y a une relation simple entre les coordonnées des deux points de départ et celles de leur composée. L'idée d'utiliser la théorie des courbes elliptiques en cryptographie remonte aux années 1985 et a été proposée indépendamment par N. Koblitz et par V. Miller. Une présentation synthétique peut être trouvée dans l'ouvrage de Koblitz > (Springer 1998). D'autres structures de groupes, comme les variétés de Jacobi associées à une courbe hyperelliptique semblent très prometteuses. Les bases mathématiques de cette théorie sont connues depuis de nombreuses décennies. Une bonne introduction peut être trouvée dans le polycopié d'un cours de R. C. Gunning fait à l'université de Princetown en 1965/66, ( Lectures on Riemann Surfaces R. C. Gunning, Princeton University Press 1966) Une présentation synthétique peut être trouvée dans l'ouvrage de Koblitz cité plus haut. Avant de décrire l'invention, il paraît utile de rappeler les principes des systèmes d'authentification par défi /réponse couramment utilisés actuellement. On peut baser un système d'authentification par défi/ réponse sur un système de cryptage à clé publique RSA. Ce système fonctionne obligatoirement en arithmétique modulaire. Le principe en est décrit par exemple dans le brevet US # 4 405 829 du 20 septembre 1993. Pour chaque utilisateur on définit un nombre N, public, modulo lequel on travaille, un exposant public c et un exposant secret d connu uniquement de l'utilisateur. La connaissance du couple (N, c) ne permet pas de retrouver l'exposant secret d. Ces nombres c et d sont choisis de façon que pour tout entier x le nombre x puissance cd soit égal, modulo N, à x. A condition de respecter certaines contraintes mathématiques, le client peut, dans une certaine mesure, librement choisir et modifier son exposant secret d et publier la nouvelle valeur de l'exposant public c inverse de son nouveau secret d, à condition bien sûr de s'authentifier lors de cette publication de façon à assurer que c'est bien lui l'émetteur de la modification de clé. On dispose ainsi, pour chaque utilisateur, d'un couple de fonctions réciproques l'une de l'autre, l'une publique (élever à la puissance c modulo N), l'autre secrète (élever à la puissance d modulo N). En cryptant un message avec la fonction publique du destinataire, on assure que lui seul pourra décrypter (grâce à sa fonction secrète). Une technique de défi/réponse basée sur RSA consiste à envoyer un nombre aléatoire x à la personne à authentifier, et à lui demander de le crypter avec sa clé secrète, (donc de l'élever à la puissance d modulo N). Le résultat de cette exponentiation sera décrypté avec la clé publique de la personne à authentifier (donc élevé à la puissance c modulo N), de façon à vérifier qu'on retrouve bien le nombre x initialement envoyé. Si c'est le cas, cela prouve que le client connaissait l'exposant secret d, ce qui permet donc de l'authentifier. La sécurité de ce protocole repose sur le fait qu'un pirate espionnant la communication voit passer le nombre x et le nombre x puissance d modulo N, mais n'a aucun moyen de calculer l'exposant secret d en un temps raisonnable. Casser le système revient à résoudre le problème du logarithme discret ce qui n'est actuellement pas possible en pratique lorsque N et d sont assez grands. Un autre système d'authentification par défi réponse est basé sur le protocole dit de Diffie-Hellman. Ce protocole est mathématiquement très voisin du précédent. Il est décrit par exemple dans le-brevet US # 4 200 770 Cryptographic apparatus and method de Hellman, Diffie et Merkle du 29 avril 1980, et nous rappelons le principe ci-après. Dans le protocole classique de Diffie Hellman, on travaille en arithmétique modulaire, modulo un nombre N que l'on publie. On publie par ailleurs un nombre g appelé la base. Le client à authentifier possède un secret s et le nombre g puissance s modulo N est communiqué à l'autorité chargée d'authentifier le client (appelée par la suite serveur d'authentification). Pour authentifier le client, le serveur d'authentification choisit un nombre aléatoire a puis calcule le nombre g puissance a modulo N qui sera le défi envoyé au client. Le client élève ce défi à la puissance s (son secret) modulo N, et détermine donc g puissance as modulo N qu'il envoie comme réponse. L'émetteur du défi, de son côté, connaît d'une part a (nombre aléatoire qu'il avait choisi) et d'autre part g puissance s (que le client avait publié). Il peut donc, en élevant ce dernier nombre à la puissance a, modulo N, calculer g puissance as et vérifier ainsi la réponse envoyée par le client. Le déroulement du protocole de Diffie Hellman impose donc au serveur d'authentification d'effectuer deux exponentiations modulaires et au client à authentifier, d'effectuer une seule exponentiation modulaire. La sécurité de ce protocole repose sur le fait qu'un pirate espionnant la communication voit passer ou connaît les nombres g puissance a, g puissance s et g puissance as (modulo N) mais n'a aucun moyen de calculer s en un temps raisonnable sans résoudre le problème du logarithme discret (ce qui n'est actuellement pas possible en pratique lorsque N et g sont assez grand et correctement choisis). Notons que le secret s du client peut être modifié à son initiative, pourvu qu'il puisse communiquer de façon sûre au serveur d'authentification la nouvelle valeur g puissance s modulo N (et qu'il s'authentifie lors de cette communication de façon à assurer que c'est bien lui l'émetteur de la modification). Alors que le système RSA impose de se placer en arithmétique modulo N, le protocole de Diffie-Hellman peut se transposer à n'importe quel groupe pour peu que le problème du logarithme discret y soit suffisamment difficile à résoudre. Plusieurs protocoles de type Diffie-Hellman basés sur des courbes elliptiques particulières ont déjà été proposés en vue de normalisation. En ce qui concerne l'utilisation de variétés de Jacobi associées à des courbes hyperelliptiques, il semble qu'on en soit encore au stade de la recherche. Tant en RSA qu'en Diffie-Hellman, le client aura à effectuer un calcul d'exponentiation. Or pour assurer une sécurité suffisante, il faut travailler sur des nombres très élevés (plusieurs centaines de bits), tant pour le défi et la réponse que pour les exposants. Le pirate cherchant à casser le système peut être une organisation criminelle disposant d'ordinateurs et de moyens de calcul très puissants pour résoudre le problème du logarithme discret. Cela conduit donc à augmenter la taille des nombres utilisés, en vue d'assurer le niveau de sécurité requis (on travaille typiquement dans une arithmétique à 512 ou 1024 bits). De tels calculs nécessitent une puissance de calcul élevée difficilement compatible avec des processeurs à faible puissance (cartes à puces, téléphones mobiles,...) que le client peut être amené à utiliser pour s'authentifier, du moins si on souhaite des temps de réponse acceptables pour le client. Cela explique les actuels efforts de recherche de nouvelles structures mathématiques qui pourraient être proposées en remplacement de l'arithmétique module N. La théorie des courbes elliptiques sur un corps fini, ou celle des variétés de Jacobi sur des courbes hyperelliptiques sur un corps fini offrent de perspectives prometteuses et permettent de construire des groupes où le problème du logarithme discret semble beaucoup plus difficile à résoudre. Pour obtenir un même niveau de sécurité, on peut alors travailler sur des nombres moins grands, accélérant très significativement les calculs d'exponentiation à faire sur le poste client. Rappelons que ces nouvelles structures ne peuvent pas être utilisées dans une authentification basée sur RSA (qui utilise les propriétés spécifiques de l'arithmétique module N pour des valeurs de N spécifiquement choisies). En revanche, elles sont parfaitement adaptées à des protocoles de type Diffie Hellman. Notons cependant que, les temps de réponse sur processeurs de faible puissance restent encore élevés. Pour décrire l'invention proposée dans le présent brevet, il est indispensable d'entrer dans le détail des algorithmes d'exponentiation. En effet, notre approche ne consiste pas à découvrir de nouvelles structures mathématiques mais à analyser les algorithmes actuellement utilisés pour l'exponentiation, indépendamment de la structure mathématique particulière sur laquelle on travaille, arithmétique modulaire, courbes elliptiques, courbes hyperelliptiques ou autres. Les algorithmes d'exponentiations classiquement utilisés permettent de ramener l'exponentiation à l'exécution d'un nombre pas trop élevé de multiplications. Ils fonctionnent de façon similaire, quel que soit le groupe sur lequel sont effectués les calculs. Pour en décrire le principe, on gardera les notations utilisées précédemment : on travaille dans un groupe G dont la loi sera notée Il et on suppose qu'on sait effectuer rapidement une multiplication dans G, c'est-à-dire calculer rapidement la composée (par la loi ) de deux éléments d'un groupe G. Le calcul direct de g^Oa = gOgOg... g (avec a facteurs) devient rapidement prohibitif en temps de calcul pour les grandes valeurs de a, car il est nécessaire d'effectuer a-1 multiplications dans G pour obtenir le résultat. Une méthode indirecte permet d'y arriver bien plus rapidement. Le principe de cette méthode consiste à calculer, par des élévations au carré successives (multiplication d'un nombre par lui-même), la liste des puissances de g dont l'exposant est une puissance de 2 (g, g^02, g^04, g^08, g^016, g^032, g^064,...). On examine alors le développement binaire de l'exposant a (ce qui est facile, car les entiers positifs sont habituellement stockés en binaire sur ordinateur). On retient dans la liste précédente les éléments qui correspondent à des bits à 1 dans ce développement et on les multiplie entre eux. Si l'exposant s'écrit sur n bits dont p bits à 1, il faut donc n-1 élévations au carré suivies de p-1 multiplications pour calculer le résultat. A titre d'exemple prenons le cas de l'exposant 181 qui se décompose en 128+32+16+4+1 s'écrit donc en binaire 1011 0101. Par 7 élévations au carré successives, on peut calculer la liste des puissances de g d'exposants successifs 2,4, 8,16, 32,64 et 128. En remarquant que le résultat recherché g^0181 est égal au produit des 5 facteurs g 128", g^032, g^016, g^04 et g^ l on voit qu'il suffit de 4 multiplications pour obtenir le résultat final recherché. Soit au total 11 multiplications au lieu de 180. Le gain est considérablement plus spectaculaire lorsque l'exposant est un très grand nombre. L'algorithme utilisé pour les exponentiations dans un groupe quelconque, tel qu'il est couramment implémenté dans les applications informatiques, s'inspire de cette méthode. Il est du domaine public et est décrit par exemple dans Applied Cryptography de Bruce Schneier (John Wiley 1993) ou dans The Art of Computer Programming Vol 2 Seminumerical Algorithms de D. Knuth (Addison Wesley, 1981 pour la seconde édition) On veut calculer g^Ob où g est un élément d'un groupe G et b est un entier positif donné par son développement binaire b [k-1],..., b [2], b [1], b [0] (k est le nombre total de bits utilisés pour écrire b en binaire). Pour retrouver le nombre b à partir de ce développement il suffit de multiplier b [l] par 2, b [2] par 2 puissance 2, b [3] par 2 puissance 3, et ainsi de suite et d'additionner les résultats de toutes ces multiplications. Le nombre entier b est appelé l'exposant et l'élément g du groupe G est appelé la base. L'exposant et la base sont des paramètres qui ne sont pas modifiées tout au long du déroulement de l'algorithme. Une variable utilitaire, notée d, contient un élément du groupe G. Au début du calcul, la variable d est initialisée à l'élément neutre e du groupe G. L'algorithme consiste à faire tourner une boucle dont le compteur i décroît de k-1 à zéro par pas d'une unité. A chaque passage de la boucle on effectue deux opérations. La première opération consiste à élever la variable d au carré (c'est-à-dire à la multiplier par elle-même) au sens de l'opération 0 du groupe G. Ce calcul est effectué à chaque itération. La seconde opération consiste à tester si le bit b [i] du développement binaire de l'exposant est égal à 1 (i est la valeur courant du compteur de boucle). Si b [i] est égal à 1, on multipliera (au sens de l'opération 0 du groupe G) la variable d par la base. Les deux paramètres, exposant et base, n'interviennent donc que lors de la seconde opération dans la boucle. L'exposant intervient bit après bit, ses bits successifs servant à inhiber ou non la multiplication. La base est le multiplicateur de cette multiplication (lorsqu'elle a lieu). Ces paramètres ne sont pas modifiés lors de l'algorithme. La mise en oeuvre de cet algorithme nécessite bien sûr que l'on sache effectuer des multiplications (et des élévations au carré) dans le groupe G. A titre d'exemple, montrons comment tourne cet algorithme dans un exemple précis. On veut élever la base a à la puissance 53 qui se décompose en 32+16+4+1 et qu'on va écrire en binaire 0011 0101. Au départ, la variable d est initialisée à l'élément neutre e du groupe G. On lit les bits du développement binaire de l'exposant en commençant par les bits de poids fort (c'est-à-dire de gauche à droite). Tant qu'on lit des bits à zéro, c'est-à-dire pour les 2 premières itérations de la boucle, la variable d n'est pas modifiée, car le carré de l'élément neutre e est égal à e, et il n'y a aucun calcul à faire. A la troisième itération, on élève d'abord d au carré (d reste égal à e) puis on le multiplie par la base a ; d contiendra donc a. A la quatrième itération, on élève au carré (d contient maintenant a^2), puis comme on a un bit à 1, on multiplie à nouveau par a (d contient maintenant a^3). A la cinquième itération, on élève au carré (d contient maintenant a^6) puis, comme on a un bit à 0, on n'effectue par la seconde opération. A la sixième itération, on élève au carré (d contient maintenant a^12), puis comme on a un bit à 1, on multiplie à nouveau par a (d contient maintenant a^13). Septième itération, bit à zéro, on se contente d'élever au carré (d contient maintenant a^26). A la huitième et dernière, on élève au carré (d contient maintenant a^52), puis comme on a un bit à 1, on multiplie à nouveau par a (d contient maintenant a^53). L'algorithme donne bien, dans ce cas, le résultat prévu Les calculs effectifs ne commencent qu'au premier bit égal à 1 dans l'exposant b (en les prenant du plus significatif au moins significatif). Le nombre d'élévations au carré est égal au nombre de bits minimal nécessaires à la représentation binaire de b, diminué de 1, et le nombre de multiplications (seconde opération de la boucle) est égal au nombre de bits à 1 dans la représentation binaire de b (diminué de 1, car au départ d était initialisé à contient l'élément neutre du groupe G). En moyenne, si l'exposant est un nombre à k bits, le nombre total de multiplication est approximativement égal à 3k/2 et non à b (de l'ordre de 2 puissance k) comme ce serait le cas si l'exponentiation était effectuée par calcul direct. L'invention présentée ici résulte de l'analyse détaillée de l'algorithme décrit ci-dessus. L'objectif est, précisons le, d'accélérer les calculs du côté du client, de façon à permettre une authentification rapide même si le client ne dispose que d'un processeur de faible puissance (carte à puce, téléphone mobile). Rappelons que, du côté du client, les authentifications basées sur RSA et celles basées sur DiffieHellman sont similaires. Dans les deux cas, le client possède un secret s. Le serveur d'authentification envoie un nombre x au client en lui demandant de calculer x puissance s et de renvoyer le résultat. Ce calcul d'exponentiation est fait dans un groupe G qui peut être celui de l'arithmétique modulaire (ce qui est toujours le cas en RSA) soit un objet mathématique plus sophistiqué (courbe elliptique, hyperelliptique,...) Le secret est forcément un grand nombre. Si le secret est simplement un code PIN à 4 ou même 6 chiffres, le pirate espionnant le défi et la réponse n'aura que 10 000 ou 1 000 000 essais à faire pour tester exhaustivement tous les codes PIN possibles et trouver celui qui est compatible avec le couple défi/réponse qu'il a relevé. Un tel calcul est faisable en quelques secondes sur un micro-ordinateur grand public. La seule parade à une attaque exhaustive testant tous les secrets possibles est d'avoir un secret représenté par un grand nombre de bits (plusieurs centaines). L'invention concerne un procédé pour le calcul de l'exponentiation dans un groupe en vue d'authentifier un utilisateur d'un dispositif physique, caractérisé en ce qu'il comprend les étapes suivantes : - L'étape de décomposer l'exposant dudit calcul d'exponentiation en deux termes et de façon à ce que la connaissance des deux termes soit nécessaire pour retrouver ledit exposant. - L'étape de stocker le premier terme des dits termes dans une mémoire dudit dispositif physique. - L'étape d'effectuer un précalcul consistant à élever un élément d'un groupe à une puissance déterminée par le premier terme, cette exponentiation étant effectuée au sens de la loi de groupe dudit groupe. - L'étape de stocker le résultat dudit précalcul dans une mémoire. - L'étape de calculer le résultat final de l'exponentiation en utilisant le résultat stocké dans ladite mémoire et un nombre déterminé à partir du second terme. Dans l'invention, le secret s se compose donc de deux parties. L'une est un secret hardware (noté dans la suite h) et stocké dans le dispositif matériel physique de l'utilisateur. Ce secret hardware doit en principe avoir un grand nombre de bits. L'autre partie du secret est appelée secret physique client (noté dans la suite p) L'invention consiste à décomposer le calcul de x puissance s en deux parties. L'une d'elles, appelée précalcul, prend en compte uniquement le secret hardware h, et la seconde utilise le secret physique client p. Un intervalle de temps éventuellement important peut séparer les deux parties du calcul. Ledit secret physique client peut être de différents types. L'invention peut se réaliser sous forme d'un procédé pour le calcul de l'exponentiation dans un groupe en vue d'authentifier un utilisateur d'un dispositif physique, inspiré du procédé précédent et caractérisé en ce qu'il comprend les étapes suivantes : - L'étape de décomposer l'exposant dudit calcul d'exponentiation en deux termes de façon à ce que la connaissance des deux termes soit nécessaire pour retrouver cet exposant. - L'étape de stocker le premier terme dans une mémoire dudit dispositif physique. - L'étape de lier le second terme à certaines caractéristiques biométriques d'un utilisateur dudit dispositif physique. - L'étape d'effectuer un précalcul consistant à élever un élément d'un groupe à une puissance déterminée par le premier terme, cette exponentiation étant effectuée au sens de la loi de groupe dudit groupe. - L'étape de stocker le résultat dudit précalcul dans une mémoire. - L'étape de saisir lesdites caractéristiques biométriques dudit utilisateur, à l'aide d'un lecteur de caractéristiques'biométriques, cette étape étant réalisée postérieurement aux étapes précédentes. - L'étape de calculer le second terme à partir de données issues desdites caractéristiques biométriques. - L'étape de calculer le résultat final de l'exponentiation en utilisant le résultat du précalcul qui avait été en mémoire et un nombre déterminé à partir du second terme. Dans le procédé que nous venons de décrire, le secret physique client est une information qu'on peut rattacher à une caractéristique biométrique de l'utilisateur à authentifier (empreinte digitale, fond d'oeil, système d'analyse de la voix, etc. ). Un dispositif physique de lecture de ces caractéristiques biologiques les transformera en une série de bits ou une série de nombres à partir desquels sera calculé le second terme. L'invention peut se réaliser sous forme d'un procédé pour le calcul de l'exponentiation dans un groupe en vue d'authentifier un utilisateur d'un dispositif physique, inspiré du procédé précédent et caractérisé en ce qu'il comprend les étapes suivantes : - L'étape de décomposer l'exposant dudit calcul d'exponentiation en deux termes de façon à ce que la connaissance des deux termes soit nécessaire pour retrouver cet exposant. - L'étape de stocker le premier terme dans une mémoire dudit dispositif physique. - L'étape de lier le second terme à une suite de symboles communiquée à l'utilisateur. - L'étape d'effectuer un précalcul consistant à élever un élément d'un groupe à une puissance déterminée par le premier terme, cette exponentiation étant effectuée au sens de la loi de groupe dudit groupe. - L'étape de stocker le résultat dudit précalcul dans une mémoire. - L'étape de calculer le second terme à partir d'une suite de symboles entrés par l'utilisateur sur un dispositif de saisie, la frappe de ces symboles étant réalisée postérieurement aux étapes précédentes. - L'étape de calculer le résultat final de l'exponentiation en utilisant le résultat du précalcul qui avait été en mémoire et un nombre déterminé à partir du second terme. Dans le procédé présenté ici, le secret physique client est une suite de symboles. Dans un mode particulier de réalisation, ce peut être un code PIN analogue à ce qui est utilisé pour les cartes bancaires. C'est en fait un cas particulier du procédé précédent dans la mesure où cette suite de symboles ou ce code PIN est stocké dans la mémoire biologique de l'utilisateur, et est donc assimilable à une caractéristique biométrique. L'invention peut se réaliser sous forme d'un procédé pour le calcul de l'exponentiation dans un groupe en vue d'authentifier un utilisateur d'un dispositif physique, inspiré du procédé précédent et caractérisé en ce qu'il comprend les étapes suivantes : - L'étape de décomposer l'exposant dudit calcul d'exponentiation en deux termes de façon à ce que la connaissance des deux termes soit nécessaire pour retrouver cet exposant. - L'étape de lier le second terme à une suite de symboles choisie choisi par l'utilisateur. - L'étape de calculer le premier terme à partir de ladite suite de symboles et dudit exposant. - L'étape de stocker le premier terme dans une mémoire dudit dispositif physique. - L'étape d'effectuer un précalcul consistant à élever un élément d'un groupe à une puissance déterminée par le premier terme, cette exponentiation étant effectuée au sens de la loi de groupe dudit groupe. - L'étape de stocker le résultat dudit précalcul dans une mémoire. - L'étape de calculer le second terme à partir d'une suite de symboles entrés par l'utilisateur sur un dispositif de saisie, la frappe de ces symboles étant réalisée postérieurement aux étapes précédentes. - L'étape de calculer le résultat final de l'exponentiation en utilisant le résultat du précalcul qui avait été en mémoire et un nombre déterminé à partir du second terme. La différence entre ce procédé et le procédé précédent réside dans le fait que le secret physique client peut être choisi par l'utilisateur au lieu de lui être imposé. Le point commun aux quatre procédés que nous venons de décrire est que le calcul est fait en deux étapes. La première est le précalcul, qui peut être long, mais elle ne nécessite pas d'intervention de l'utilisateur (frappe de code, fourniture d'informations biométriques...). Cette phase de calcul est donc faite au préalable de façon de réduire le délai entre le moment où une intervention de l'utilisateur est sollicitée (fourniture d'une suit de symboles, lecture de caractéristiques biométriques) et le moment où cet utilisateur est authentifié. Le calcul d'exponentiation est en fait une partie du procédé général d'authentification d'un utilisateur d'un dispositif physique, caractérisé en ce qu'il comprend les étapes suivantes : - L'étape de faire envoyer, par un serveur d'authentification, au dispositif physique de l'utilisateur, une chaîne de bits représentant un élément d'un groupe. - L'étape de faire effectuer par le dispositif physique de l'utilisateur, un précalcul consistant à élever ledit élément dudit groupe à une puissance déterminée à partir d'un premier terme stocké dans une mémoire liée à ce dispositif physique, cette exponentiation étant effectuée au sens de la loi de groupe dudit groupe. - L'étape de stocker le résultat de ce précalcul dans une mémoire. - L'étape, au moment où il est nécessaire d'authentifier un utilisateur, de déterminer le second terme. -L'étape de faire exécuter, par le dispositif physique de l'utilisateur, un calcul utilisant d'une part le contenu de la mémoire et d'autre part le second terme - L'étape d'envoyer le résultat dudit calcul au serveur d'authentification. - L'étape de faire analyser le résultat dudit calcul par le serveur d'authentification en vue de décider si l'utilisateur peut être authentifié. L'innovation de ce procédé, par rapport aux authentifications classiques par défi réponse provient de ce que le défi est envoyé au préalable et qu'une partie du calcul est réalisé avant que ne soit connu le second terme nécessaire au calcul d'exponentiation. Ce procédé peut se réaliser de plusieurs façons. L'invention peut se présenter sous forme d'un procédé d'authentification d'un utilisateur d'un dispositif physique, caractérisé en ce qu'il comprend les étapes suivantes : - L'étape de faire envoyer, par un serveur d'authentification, au dispositif physique de l'utilisateur, une chaîne de bits représentant un élément d'un groupe. - L'étape de faire effectuer par le dispositif physique de l'utilisateur, un précalcul consistant à élever ledit élément dudit groupe à une puissance déterminée à partir d'un premier terme stocké dans une mémoire liée à ce dispositif physique, cette exponentiation étant effectuée au sens de la loi de groupe dudit groupe. - L'étape de stocker le résultat de ce précalcul dans une mémoire. - L'étape, au moment de l'authentification de l'utilisateur, de mesurer certaines caractéristiques biométriques de l'utilisateur à authentifier à l'aide d'un lecteur de données biométriques. - L'étape de calculer le second terme à partir desdites caractéristiques biométriques de l'utilisateur. - L'étape de faire exécuter, par le dispositif physique de l'utilisateur, un calcul utilisant d'une part le contenu de la mémoire dans laquelle était stocké le résultat du précalcul et d'autre part le second terme - L'étape d'envoyer le résultat dudit calcul au serveur d'authentification. - L'étape de faire analyser le résultat dudit calcul par le serveur d'authentification en vue de décider si l'utilisateur peut être authentifié. Un cas particulier de l'invention peut se présenter sous forme d'un procédé d'authentification d'un utilisateur d'un dispositif physique, caractérisé en ce qu'il comprend les étapes suivantes - L'étape de faire envoyer, par un serveur d'authentification, au dispositif physique de l'utilisateur, une chaîne de bits représentant un élément d'un groupe. - L'étape de faire effectuer par le dispositif physique de l'utilisateur, un précalcul consistant à élever ledit élément dudit groupe à une puissance déterminée à partir d'un premier terme stocké dans une mémoire liée à ce dispositif physique, cette exponentiation étant effectuée au sens de la loi de groupe dudit groupe. - L 1 étape de stocker le résultat de ce précalcul dans une mémoire. - L'étape, au moment de l'authentification de l'utilisateur, de faire entrer par ledit utilisateur une suite de symboles sur un dispositif de saisie. - L'étape de calculer le second terme (p) déterminé à partir de ladite suite de symboles. - L'étape de faire exécuter, par le dispositif physique de l'utilisateur, un calcul utilisant d'une part le contenu de la mémoire dans laquelle était stocké le résultat du précalcul et d'autre part le second terme - L'étape d'envoyer le résultat dudit calcul au serveur d'authentification. - L'étape de faire analyser le résultat dudit calcul par le serveur d'authentification en vue de décider si l'utilisateur peut être authentifié. La réalisation pratique de l'invention se fait à l'aide d'un dispositif d'authentification d'un utilisateur d'un dispositif physique, caractérisé en ce qu'il comprend les éléments suivants - Une mémoire permettant de stocker un nombre appelé secret hardware en vue d'authentification. - Un dispositif de communication permettant de recueillir une chaîne de bits envoyée par un serveur central d'authentification et représentant un élément d'un groupe. - Un processeur permettant d'effectuer un précalcul consistant à élever cet élément à une puissance dont l'exposant est déterminé à partir dudit secret hardware, contenu dans ladite mémoire, l'exponentiation étant réalisée selon la loi du groupe. - Une mémoire permettant de stocker le résultat du précalcul précédent. - Un dispositif permettant de recueillir des informations permettant de déterminer nombre qui sera le secret physique client. - Un processeur permettant de calculer le résultat final d'une exponentiation dans ledit groupe en utilisant d'une part contenu de la mémoire où est stocké le résultat du précalcul et d'autre part le secret physique client. La réalisation pratique de notre invention peut se faire à l'aide d'un dispositif d'authentification d'un utilisateur d'un dispositif physique, caractérisé en ce qu'il comprend les éléments suivants - Une mémoire permettant de stocker un nombre appelé secret hardware en vue d'authentification. - Un dispositif de communication permettant de recueillir une chaîne de bits envoyée par un serveur central d'authentification et représentant un élément d'un groupe. - Un processeur permettant d'effectuer un précalcul consistant à élever cet élément à une puissance dont l'exposant est déterminé à partir dudit secret hardware, contenu dans ladite mémoire, l'exponentiation étant réalisée selon la loi du groupe. - Une mémoire permettant de stocker le résultat du précalcul précédent. - Un dispositif permettant de recueillir, à partir des caractéristiques biométriques d'un utilisateur, des informations permettant de déterminer nombre qui sera le secret physique client. - Un processeur permettant de calculer le résultat final d'une exponentiation dans ledit groupe en utilisant d'une part contenu de la mémoire où est stocké le résultat du précalcul et d'autre part le secret physique client. La réalisation pratique de l'invention peut se faire à l'aide d'un dispositif d'authentification d'un utilisateur d'un dispositif physique 1 caractérisé en ce qu'il comprend les éléments suivants - Une mémoire permettant de stocker un nombre appelé secret hardware en vue d'authentification. - Un dispositif de communication permettant de recueillir une chaîne de bits envoyée par un serveur central d'authentification et représentant un élément d'un groupe. - Un processeur permettant d'effectuer un précalcul consistant à élever cet élément à une puissance dont l'exposant est déterminé à partir dudit secret hardware, contenu dans ladite mémoire, l'exponentiation étant réalisée selon la loi du groupe. - Une mémoire permettant de stocker le résultat du précalcul précédent. - Un dispositif de saisie permettant de recueillir, une suite de symboles entrés par un utilisateur qui permettront ensuite de déterminer nombre qui sera le secret physique client. - Un processeur permettant de calculer le résultat final d'une exponentiation dans ledit groupe en utilisant d'une part contenu de la mémoire où est stocké le résultat du précalcul et d'autre part le secret physique client. Pour mieux faire comprendre l'invention, on va en décrire maintenant, à titre d'exemple purement illustratif et non limitatif, plusieurs modes de réalisation. Sur le dessin : La figure 1 représente le dispositif d'authentification dans le cas où celle-ci se fait à partir de données biométriques de l'utilisateur à authentifier. (A) représente le serveur d'authentification et (U) le dispositif physique de l'utilisateur. Ce dispositif physique (U) contient un élément (N) chargé des communications avec le serveur d'authentification (A), un processeur (K) chargé d'effectuer les calculs, une mémoire (H) destinée à contenir le secret hardware et une mémoire (R) destinée à stocker les résultats du précalcul. Il est connecté à un dispositif (B) de lecture de données biométriques de l'utilisateur. La figure 2 représente le dispositif d'authentification dans le cas où celle-ci se fait à partir de la saisie d'un code PIN ou plus généralement d'une suite de symboles entrés par l'utilisateur à authentifier. (A) représente le serveur d'authentification et (U) le dispositif physique de l'utilisateur. Ce dispositif physique (U) contient un élément (N) chargé des communications avec le serveur d'authentification (A), un processeur (K) chargé d'effectuer les calculs, une mémoire (H) destinée à contenir le secret hardware et une mémoire (R) destinée à stocker les résultats du précalcul. Il est connecté à un dispositif (C) de saisie du code PIN ou de la suite de symboles entrés par l'utilisateur. Dans le mode de réalisation proposé, le serveur d'authentification (A) envoie d'avance un défi au poste client (U), par exemple au moment de la mise sous tension de son terminal, ou à intervalles réguliers selon une périodicité à convenir. Le poste client effectue le précalcul en tâche de fond au moment où il est inoccupé (cela peut prendre plusieurs secondes ou même plusieurs dizaines de secondes selon le nombre de bits utilisé et la puissance du poste client). Seule la phase finale du calcul de x puissance s nécessite une intervention du client à authentifier (personne physique), que ce soit par la frappe d'un code PIN ou d'un mot de passe, ou, plus généralement, de la prise en compte de caractéristiques biométriques (empreinte vocale, empreinte digitale, fond d'oeil). L'intervention du client à pour effet de fournir au poste client la valeur du secret physique client . La phase finale du calcul d'exponentiation est quasi instantanée (compte non tenu du temps de traitement des caractéristiques biométriques), et l'authentification est alors immédiate. L'authentification peut être demandée par exemple au moment où l'utilisateur souhaite faire une transaction financière ou accéder à des données confidentielles. Selon le niveau de sécurité souhaité, on peut imaginer qu'à chaque accès ou transaction de ce type on exigera une nouvelle authentification. Cela implique qu'immédiatement après la précédente authentification, le serveur enverra un nouveau défi. Le poste client effectuera alors le précalcul en tâche de fond de façon et sera ainsi prêt pour la prochaine authentification. Plusieurs modes de réalisation sont possibles en pratique. Nous en décrirons deux, à titre d'exemple purement illustratif et non limitatif. Dans les deux implémentations, on calcule x^ s (c'est-à-dire x puissance s dans le groupe G utilisé pour le défi/réponse). Le secret s du client se compose, dans les deux modes de réalisation, de deux parties qui sont, l'une, le secret hardware h inclus dans le matériel du client, et l'autre, le secret physique client p lié au client et à ses caractéristiques biométriques. Notons qu'une information comme le code PIN, contenue dans la mémoire biologique du client n'est qu'un cas particulier de caractéristique biométrique. Dans un premier mode de réalisation, qu'on appellera mode A , le secret s du client s'obtient tout simplement en multipliant le secret matériel h par le secret p du client. Cette multiplication peut être une simple multiplication de nombres entiers ou peut être faite en arithmétique modulaire modulo o (x) (ou modulo o (g) si x peut s'écrire sous la forme g^ a pour une base g convenablement choisie). Le précalcul consiste à calculer r = x puissance h 1 dans le groupe G. Au moment où on dispose du secret p, on calcule r puissance p. Comme p est un petit nombre (par exemple un code PIN), ce calcul est extrêmement rapide en regard d'un calcul d'exponentiation avec un exposant de plusieurs centaines de bits. Dans ce mode A, l'algorithme d'exponentiation décrit précédemment est réinitialisé. La nouvelle base est maintenant r et le nouvel exposant p. La variable d est réinitialisée à e (élément neutre du groupe G) Dans un second mode de réalisation, qu'on appellera mode B , le secret s du client s est la concaténée bit à bit du secret matériel h et du secret client p (les bits de h étant aux poids forts). On utilise l'algorithme d'exponentiation détaillé plus haut, et on l'arrête provisoirement dès qu'on aura épuisé tous les bits de h. La valeur intermédiaire de d est alors provisoirement stockée dans le dispositif physique d'authentification de l'utilisateur. Une fois connu le secret physique client p, l'algorithme est repris (avec la valeur intermédiaire de d telle qu'elle avait provisoirement stockée), sans aucune modification de la base, et en utilisant, bit à bit, les bits de p jusqu'au calcul complet du résultat x-os. Dans le mode B, l'algorithme d'exponentiation décrit précédemment n'est pas réinitialisé. La base reste toujours la base x, telle qu'elle était au moment du précalcul. La variable d reprend la valeur qu'elle avait à la fin du précalcul. Mais ce sont les bits du secret client p qui servent maintenant à décider, à chaque itération de la boucle, si la multiplication par la base doit avoir lieu ou non. Pour estimer le gain en temps de calcul, prenons l'exemple d'un code PIN en 4 ou 6 chiffres (représentable sur 13 ou 20 bits), en comparaison avec un secret s à 512 bits. Quelle que soit le mode de réalisation choisi, mode A ou mode B, le précalcul préalable permet de gagner un facteur 25 à 40 sur le temps de calcul après frappe du code PIN. Cela permet de passer de plusieurs dizaines de secondes (inacceptable en pratique) à un temps bien inférieur à la seconde (quasi imperceptible pour le client). Comme l'algorithme utilisé pour l'exponentiation consomme séquentiellement les bits de l'exposant, dans le cas où le secret client est un code PIN, on peut traiter les bits de ce code PIN à la volée, au fur et à mesure qu 1 ils sont frappés au clavier. (On remplacerait par exemple alors chaque chiffre du code PIN par un code à 4 bits). Le calcul est fait en simultané au fur et à mesure que les chiffres du code PIN sont frappés. Les temps de réponse sont alors encore meilleurs. Le temps de calcul après la frappe du dernier bit est alors, (dans l'hypothèse de secrets à 512 bits), 128 fois plus bref qu'en l'absence de précalcul. Parmi les variantes de l'invention, on peut citer ici le fait que la mémoire H (figures 1 et 2), destinée à contenir le secret Hardware, peut être réalisée sous la forme d'une carte à mémoire ou"carte à puce" liée à un lecteur correspondant. On peut également mentionner que le processeur K (figures 1 et 2) peut être formé de deux processeurs distincts, l'un effectuant le précalcul et l'autre, le calcul final d'exponentiation. REVENDICATIONS 1. Procédé pour le calcul de l'exponentiation dans un groupe (G) en vue d'authentifier un utilisateur d'un dispositif physique (U), caractérisé en ce qu'il comprend les étapes suivantes : l'étape de décomposer l'exposant (s) dudit calcul d'exponentiation en deux termes (h) et (p) de façon à ce que la connaissance des deux termes soit nécessaire pour retrouver cet exposant (s), - l'étape de stocker le premier terme (h) dans une mémoire (H) du dispositif physique (U), - l'étape d'effectuer un précalcul consistant à élever un élément du groupe (G) à une puissance déterminée par le premier terme (h), cette exponentiation étant effectuée au sens de la loi de groupe du groupe (G), - l'étape de stocker le résultat dudit précalcul dans une mémoire (R), et - l'étape de calculer le résultat final de l'exponentiation en utilisant le résultat stocké dans la mémoire (R) et un nombre déterminé à partir du second terme (p). 2. Procédé selon la revendication 1, caractérisé en ce qu'il comprend les étapes suivantes : - l'étape de décomposer l'exposant (s) dudit calcul d'exponentiation en deux termes (h) et (p) de façon à ce que la connaissance des deux termes soit nécessaire pour retrouver cet exposant (s), - l'étape de stocker le premier terme (h) dans une mémoire (H) du dispositif physique (U), - l'étape de lier le second terme (p) à certaines caractéristiques biométriques d'un utilisateur du dispositif physique (U), - l'étape d'effectuer un précalcul consistant à élever un élément du groupe (G) à une puissance déterminée par le premier terme (h), cette exponentiation étant effectuée au sens de la loi de groupe du groupe (G), l'étape de stocker le résultat dudit précalcul dans une mémoire (R), l'étape de saisir lesdites caractéristiques biométriques dudit utilisateur, à l'aide d'un lecteur de caractéristiques biométriques (B), cette étape étant réalisée postérieurement aux étapes précédentes, - l'étape de calculer le second terme (p) à partir de données issues desdites caractéristiques biométriques, - l'étape de calculer le résultat final de l'exponentiation en utilisant le résultat stocké dans la mémoire (R) et un nombre déterminé à partir du second terme (p). 3. Procédé selon la revendication 1 ou 2, caractérisé en ce qu'il comprend les étapes suivantes : - l'étape de décomposer l'exposant (s) dudit calcul d'exponentiation en deux termes (h) et (p) de façon à ce que la connaissance des deux termes soit nécessaire pour retrouver cet exposant (s), - l'étape de stocker le premier terme (h) dans une mémoire (H) du dispositif physique (U), l'étape de lier le second terme (p) à une suite de symboles communiquée à l'utilisateur, l'étape d'effectuer un précalcul consistant à élever un élément du groupe (G) à une puissance déterminée par le premier terme (h), cette exponentiation étant effectuée au sens de la loi de groupe du groupe (G), - l'étape de stocker le résultat dudit précalcul dans une mémoire (R), - l'étape de calculer le second terme (p) à partir d'une suite de symboles entrée par l'utilisateur sur un dispositif de saisie, la frappe de cette suite étant réalisée postérieurement aux étapes précédentes, - l'étape de calculer le résultat final de l'exponentiation en utilisant le résultat stocké dans la mémoire (R) et un nombre déterminé à partir du second terme (p). 4. Procédé selon la revendication 1, 2 ou 3, caractérisé en ce qu'il comprend les étapes suivantes : - l'étape de décomposer l'exposant (s) dudit calcul d'exponentiation en deux termes (h) et (p) de façon à ce que la connaissance des deux termes soit nécessaire pour retrouver cet exposant (s), l'étape de lier le second terme (p) à une suite de symboles choisie par l'utilisateur, l'étape de calculer le premier terme (h) à partir du second terme (p) et de l'exposant (s), -l'étape de stocker le premier terme (h) dans une mémoire (H) du dispositif physique (U), - l'étape d'effectuer un précalcul consistant à élever un élément du groupe (G) à une puissance déterminée par le premier terme (h), cette exponentiation étant effectuée au sens de la loi de groupe du groupe (G), - l'étape de stocker le résultat dudit précalcul dans une mémoire (R), l'étape de calculer le second terme (p) à partir d'une suite de symboles entrée par l'utilisateur sur un dispositif de saisie, la frappe de cette suite étant réalisée postérieurement aux étapes précédentes. - l'étape de calculer le résultat final de l'exponentiation en utilisant le résultat stocké dans la mémoire (R) et un nombre déterminé à partir du second terme (p). 5. Procédé selon l'une des revendications 1 à 4, caractérisé en ce que, pour l'authentification d'un utilisateur d'un dispositif physique (U), il comprend les étapes suivantes : - l'étape de faire envoyer, par un serveur d'authentification (A), au dispositif physique (U) de l'utilisateur, une chaîne de bits représentant un élément (x) d'un groupe (G), - l'étape de faire effectuer par le dispositif physique (U) de l'utilisateur, un précalcul consistant à élever l'élément (x) du groupe (G) à une puissance déterminée à partir d'un premier terme (h) stocké dans une mémoire (H) liée à ce dispositif physique, cette exponentiation étant effectuée au sens de la loi de groupe du groupe (G) - l'étape de stocker le résultat de ce précalcul dans une mémoire (R), - l'étape, au moment où il est nécessaire d'authentifier un utilisateur, de déterminer le second terme (p), - l'étape de faire exécuter, par le dispositif physique de l'utilisateur, un calcul utilisant d'une part le contenu de la mémoire (R) et d'autre part le second terme (p), - l'étape d'envoyer le résultat dudit calcul au serveur d'authentification (A), - l'étape de faire analyser le résultat dudit calcul par le serveur d'authentification (A) en vue de décider si l'utilisateur peut être authentifié. 6. Procédé selon les revendications 2 et 5, caractérisé en ce qu'il comprend les étapes suivantes : - l'étape de faire envoyer, par un serveur d'authentification (A), au dispositif physique (U) de l'utilisateur, une chaîne de bits représentant un élément (x) d'un groupe (G), - l'étape de faire effectuer par le dispositif physique (U) de l'utilisateur, un précalcul consistant à élever l'élément (x) du groupe (G) à une puissance déterminée à partir d'un premier terme (h) stocké dans une mémoire (H) liée à ce dispositif physique, cette exponentiation étant effectuée au sens de la loi de groupe du groupe (G), - l'étape de stocker le résultat de ce précalcul dans une mémoire (R), - l'étape, au moment de l'authentification de l'utilisateur, de mesurer certaines caractéristiques biométriques de l'utilisateur à authentifier à l'aide d'un lecteur de données biométriques (B), l'étape de calculer le second terme (p) déterminé à partir desdites caractéristiques biométriques de l'utilisateur, - l'étape de faire exécuter, par le dispositif physique de l'utilisateur, un calcul utilisant d'une part le contenu de la mémoire (R) et d'autre part le second terme (p), - l'étape d'envoyer le résultat dudit calcul au serveur d'authentification (A), - l'étape de faire analyser le résultat dudit calcul par le serveur d'authentification (A) en vue de décider si l'utilisateur peut être authentifié. 7. Procédé selon la revendication 5, caractérisé en ce qu'il comprend les étapes suivantes : - l'étape de faire envoyer, par un serveur d'authentification (A), au dispositif physique (U) de l'utilisateur, une chaîne de bits représentant un élément (x) d'un groupe (G), -l'étape de faire effectuer par le dispositif physique (U) de l'utilisateur, un précalcul consistant à élever l'élément (x) du groupe (G) à une puissance déterminée à partir d'un premier terme (h) stocké dans une mémoire (H) liée à ce dispositif physique, cette exponentiation étant effectuée au sens de la loi de groupe du groupe (G), - l'étape de stocker le résultat de ce précalcul dans une mémoire (R), - l'étape, au moment de l'authentification de l'utilisateur, de faire entrer par ledit utilisateur une suite de symboles sur un dispositif de saisie (C), - l'étape de calculer le second terme (p) déterminé à partir de ladite suite de symboles, l'étape de faire exécuter, par le dispositif physique de l'utilisateur, un calcul utilisant d'une part le contenu de la mémoire (R) et d'autre part le second terme (p), - l'étape d'envoyer le résultat dudit calcul au serveur d'authentification (A), l'étape de faire analyser le résultat dudit calcul par le serveur d'authentification (A) en vue de décider si l'utilisateur peut être authentifié, 8. Dispositif pour la mise en oeuvre du procédé selon les revendications 1 et 5, caractérisé en ce qu'il comprend les éléments suivants : une mémoire (H) permettant de stocker un nombre (h) appelé secret hardware en vue d'authentification, un dispositif de communication (N) permettant de recueillir une chaîne de bits envoyée par un serveur central d'authentification (A) et représentant un élément (x) d'un groupe (G), un processeur (K) permettant d'élever cet élément (x) à une puissance dont l'exposant est déterminé à partir du nombre (h), contenu dans la mémoire (H), l'exponentiation étant effectuée selon la loi du groupe (G), une mémoire (R) permettant de stocker le résultat de l'exponentiation précédente, un dispositif permettant de recueillir un nombre (p), un processeur permettant de calculer le résultat final d'une exponentiation dans le groupe (G) en utilisant le contenu de la mémoire (R) et le nombre (p). 9. Dispositif selon la revendication 8, caractérisé en ce qu'il comprend les éléments suivants : une'mémoire (H) permettant de stocker un nombre (h) appelé secret hardware en vue d'authentification, un dispositif de communication (N) permettant de recueillir une chaîne de bits envoyée par un serveur central d'authentification (A) et représentant un élément (x) d'un groupe (G), un processeur (K) permettant d'élever cet élément (x) à une puissance dont l'exposant est déterminé à partir du nombre (h), contenu dans la mémoire (H), l'exponentiation étant effectuée selon la loi du groupe (G), une mémoire (R) permettant de stocker le résultat de l'exponentiation précédente, un dispositif (B) permettant de recueillir un nombre (p) déterminé à partir de caractéristiques biométriques d'un utilisateur, un processeur permettant de calculer le résultat final d'une exponentiation dans le groupe (G) en utilisant le contenu de la mémoire (R) et le nombre (p). 10. Dispositif selon la revendication 8 ou 9, caractérisé en ce qu'il comprend les éléments suivants : une mémoire (H) permettant de stocker un nombre (h) appelé secret hardware en vue d'authentification, un dispositif de communication (N) permettant de recueillir une chaîne de bits envoyée par un serveur central d'authentification (A) et représentant un élément (x) d'un groupe (G), un processeur (K) permettant d'élever cet élément (x) à une puissance dont l'exposant est déterminé à partir du nombre (h), contenu dans la mémoire (H), l'exponentiation étant effectuée selon la loi du groupe (G), une mémoire (R) permettant de stocker le résultat de l'exponentiation précédente, un dispositif de saisie (C) permettant de recueillir une suite de symboles entrés par un utilisateur et d'en déduire un nombre (p), un-processeur permettant de calculer le résultat final d'une exponentiation dans le groupe (G) en utilisant le contenu de la mémoire (R) et le nombre (p).