FR 2814618 A1 20020329 FR 0102953 A 20010305 Domaine technique: La plupart des systèmes d'authentification utilisent maintenant des fonctions de chiffrement à clé asymétriques basés sur des couples clé publique/clé secrète tel que les procédés RSA (du nom de leurs auteurs Rivest Shamir Adelman) ou Diffie Hellmann. Cependant, si ces procédés de chiffrement asymétriques sont très pratiques à utiliser, ils ne sont pas très rapide au niveau temps de traitement: des fonctions symétriques tes que IDEA avec des clés de 128 bits sont beaucoup plus rapides. Enfin, il existe pour ces procédés d'authentification à clé asymétriques tels que RSA des attaques consistant en la décomposition de la clé publique en facteurs premiers. En l'état actuel de la technique des clés RSA de 570 bits environ ont été cassées et avec les progrès conjugués en matière de factorisation (algorithmes dits " pour un horizon de 5 ans. Pour une taille de clés identique. les procédés de chiffrement ou authentification symétriques offrent une sécurité bien supérieure par rapport aux procédés de chiffrement ou authentification asymétrique: on estime qu'une clé symétrique IDEA 128 bits est équivalente à une clé RSA de 2048 bits. De plus. la technologie actuelle ne permet pas d'utiliser des clés énormes. Les cartes à puce supportant le RSA ont généralement des tailles de clé de 1024 bits seulement actuellement, le maximum sur une carte à microprocesseur actuellement connu est de 2048 bits. Quant aux protocoles à apport nul de connaissance, ils sont quand même sensibles à une attaque consistant à décomposer la clé publique en facteurs premiers. Le problème principal des algorithmes de chiffrement symétriques est d'échanger la clé secrète par un canal sûr préalablement au chiffrement. Ce qui était fait couramment. jusqu'à présent. pour éviter le problème de la sécurité des échanges des clés secrètes. était d'échanger les clés privées à l'aide d'un chiffrement asymétrique utilisant des couples clé publique/privée puis de faire un chiffrement symétrique du message à l'aide d'un procédé de chiffrement symétrique plus rapide. La force d'une chaîne ne valant que par son maillon le plus faible, une telle chaîne de chiffrement (échange des clés privées à l'aide d'un procédé de chiffrement asymétrique à clé publique puis chiffrement du message avec un procédé symétrique utilisant cette clé privée) reste toujours sensible aux attaques par factorisation de nombres premiers outre les attaques sur les attaques sur les procédés de chiffrement symétriques. Les attaques des procédés de chiffrement symétriques sont essentiellement des attaques par force brute, c'est à dire, essai de toutes les combinaisons possibles, cela parait raisonnablement hors de portée pendant de longues années, lorsque les clés font 128 bits, il n'y a pas assez de capacité de traitement et de stockage dans 1' univers pour casser de tels codes. De sorte que revenir à des procédés de chiffrement et authentification symétrique peut offrir une sécurité renforcée pour des performances améliorées. La difficulté consiste à trouver un protocole d'authentification dont les caractéristiques permettent d'offiir les fonctionnalités désirées, notamment s'affranchir du problème d'échange préalable des clés de chiffrement par un canal sûr. Le procédé de chiffrement décrit ici utilise un dialogue de 2 échanges de messages avec le système destination pour échanger entre eux des messages chiffrés, les 2 systèmes dialoguant entre eux ne partagent pas de secret: il n'y a donc pas de problème d'échanges de clés secrètes. De plus, les clés utilisées pour le chiffrement sont générées aléatoirement et différents à chaque dialogue, si par extraordinaire, un message serait intercepté ou déduit. aucune déduction ne pourrait être faite pour les autres messages échangés. Dans le cas o les 1 5 systèmes de chiffrement sont des cartes à microprocesseur. les clés de chiffrement ne sortent pas de la carte à microprocesseur et ne sont utilisés qu'une fois, un attaquant éventuel n'apprend rien lors des échanges de messages. C'est ce protocole basé sur un dialogue de plusieurs échanges de messages qui permet de s'affranchir de l'échange des clés secrètes. Cela est rendu possible en utilisant les propriétés de la fonction exponentielle dans un anneau de nombres entiers modulo un nombre N fixé (l'ensemble des nombres entiers compris entre O et N- I muni de l'addition modulo N et de la multiplication modulo N). En effet. il est difficile d'inverser la fonction exponentielle dans un anneau de nombres entiers modulo un nombre N fixé. C'est à dire que connaissant A et A^B mod N (A élevé à la puissance B modulo N). il est très difficile de retrouver B. La fonction inverse de l'exponentielle s'appelle le logarithme discret et il n'existe pas à l'heure actuelle de méthode ou d'algorithme pour la calculer dans un temps raisonnable même avec une grande puissance de calcul lorsque le nombre N choisi est suffisamment grand. Le système proposé ne subit donc que les attaques par violation du secret de la puce ou par inversion du logarithme discret. Cependant. quand le nombre N fixé est un produit de 2 nombres premiers. il a été prouvé que résoudre le problème précédent du logarithme discret est équivalent dans certains cas (par exemple quand A^B mod N est égal à 2) au problème de la factorisation de ce nombre N en facteurs premiers. Il est ainsi fortement conseillé d'utiliser un nombre premier N pour le procédé décrit ici. afin d'éviter précisément les faiblesses des autres procédés de chiffrement symétrique. Outre le caractère difficilement inversible de la fonction exponentielle. il y a d'autres propriétés mathématiques de la fonction exponentielle dans un anneau de nombres entiers modulo un nombre N qui sera exploitée par ce procédé: c'est le caractère symétrique et 1' associativité de la fonction. La fonction exponentielle est commutative: fo g = g o f, c'est à dire si on calcule M2=M1^A mod N puis M3=M2^v B mod N. on a le même résultat que si on calcule M4=M1AB mod N puis M5=Ml4AA mod N, on a M5=M3. La fonction exponentielle est associative, c'est à dire (f o g) o h = fo (g o h). c'est à dire si on calcule M2=MI^A mod N puis M3=M2^B mod N et M4=M3AC mod N. on a le même résultat que si on calcule M5=MIAB mod N puis MV6=M5^C mod N. puis M17=M6AA mod N on a M7=Mv4. La fonction exponentielle modulo N est cependant facilement inversible lorsque l'exposant est connu. Ainsi. si lM2=vll^AI mod N Si on connait le nombre entier phiN égal au résultat de l'indicatrice d'Euler de N (phiN=N-I lorsque N est premier. phiN=(P-l)*(Q-l) lorsque N=PxQ. P et Q étant 2 nombres premiers distincts). L'inverse A l prime de A I est tel que Alprime*A I = I modulo PhiN Cela se calcule facilement à l'aide de l'algorithme d'Euclide étendu par divisions euclidiennes successives Ainsi M3-=M2^Alprime mod N est égal à Ml. Le système de chiffrement est de plus généralisable au cas o il y a plus de 2 systèmes s'échangeant des messages chiffrés. il suffit qu'il y ait soit plusieurs dialogues duaux entre le système émetteur du message et les autres, soit que les messages circulent en boucle entre les différents systèmes intervenants dans la communication. La sécurité du procédé de chiffrement est également extensible par augmentation de la taille du nombre N. ce qui permet à la mise en oeuvre du procédé d'évoluer et d'être adapté aux technologies disponibles (notamment la capacité et la vitesse de traitement des cartes à microprocesseur). Le procédé pourrait être généralisé à d'autres fonctions que la fonction exponentielle qui ont les mêmes propriétés mathématiques (caractère difficilement inversible. comrnutativité. associativite). Le procédé de chiffrement peut être étendu à l'identification. il suffit pour cela que le message -4- chiffré échangé par les systèmes comporte un secret partagé. Il y a dans ce cas non seulement identification mais chiffrement: le secret partagé des 2 systèmes n'est pas échangé en clair entre les 2 systèmes, il s'agit dans ce cas d'un procédé de chiffrement à des fins d'authentification. C'est notarrmment très intéressant dans le cas o ces systèmes sont des cartes à microprocesseur tels que des porte-monnaie électronique comportant une valeur secrète inscrite dans une zone inviolable de la carte à microprocesseur. Concernant les attaques possibles, pour un porte monnaie électronique avec clée RSA, il peut être attaqué soit par factorisation de la clé publique, soit en perçant le secret de la carte à puce par espionnage du comportement électronique du composant. Une fois le secret découvert, il est possible de faire un clonage de carte à microprocesseur par exemple soit en simulant te comportement de la carte à microprocesseur originale en programmant un microprocesseur PIC (Programmable Integrated Circuit) muni d'une EEPROM sur une Wafercard soit en utilisant des kits de programmation de cartes à puce comme il en existe de nombreux sur le marché. Le clonage revient à casser tout le système en matière de porte-monnaie électronique décentralisé (permettant les échanges sans passer par l'intermédiaire d'un serveur centralisé) puisqu'il n'y a pas de connexion avec un central par définition, il ne peut y avoir raisonnablement de gestion de liste noire. l[1 est possible de mettre en euvre ces procédés de chiffrement et d'authentification avec la technologie existante des cartes à microprocesseurs basées sur la technologie RSA car leur jeu d'instructions permet de faire des opérations sur des grands nombres modulo P. même si P est un nombre premier et non pas un produit de 2 nombres premiers (dans le cas RSA. P est un produit de 2 nombres premiers différents) et dans notre cas. P sera de préférence un nombre premier. Enfin si l'échange de 4 messages pour une authentification serait vraiment pénible pour le chiffrement ou authentification de message électronique par exemple (du fait du nombre de messages). cela ne présente pas d'inconvénient pour des échanges automatisés sans intervention manuelle entre composants électroniques présents tous les 2 chez un commerçant. ou même connectés entre eux en ligne pour une transaction à distance sur Internet par exemple. Exposé du procédé: Procédé de transfert d'un message M 1 sous forme chiffrée d'un support A à un autre support B caractérisé en ce que ces 2 supports A et B sont équipés de moyens de calcul, de mémorisation et d'échange de données appropriés, les 2 supports possédant en commun: - un nombre entier public N, premier ou non -5- - un nombre entier E secret inférieur à N - une fonction h indiquant les codes admissibles I [tels que h(I) différent de 0] - une fonction fi telle que quelquesoit 1, quelquesoit J, quelquesoit x entiers inférieurs à N, fi ( f j ( x)) = fj ( f I ( x)) et telle que pour tout x entier inférieur à Net pour tout I compris entre I et N tel que h(I) différent de 0, il existe un J tel que fj ( f [ ( x)) = x (on notera J= g(I)). La série de fonction f 1 étant par ailleurs difficilement inversible. c'est à dire connaissant des couples (xl, fr ( xl)), (x2, fr (x 2)), il est difficile de retrouver I procédé dans lequel les 2 supports mettent en oeuvre leurs moyens de calcul, de mémorisation et d'échange de données pour effectuer les opérations successives des différentes étapes suivantes: Etape 1. le support A tire au hasard un nombre A 1 compris entre I et N tel que h(A 1)=0 A envoie a B le nombre fEf ( fA l () ) =M2 Etape 2. Le support B reçoit M2 B génère un nombre aléatoire B I tel que h(B 1)=0 B envoie à A le nombre f 3 (2) = NM3 Etape 3. A reçoit M3 A calcule l'inverse Alprime de AI tel que Alprime = g(AI) A envoie à B f.lpnme ( M) = M4 Etape 4. B calcule l'inverse B I prime de B I tel que B Iprime = g( B I) et l'inverse Eprime de E tel que Eprime = g(E) B calcule fl3îpnme ( fl 'pnmnie ( M4)) =N5 Comme M5=M I d'après les propriétés de la série de fonctions, le message M 1 a été échangé du support A vers le support B sans jamais avoir été échangé en clair et sans même avoir échangé les clés entre les 2 supports. Selon une variante de ce procédé, les 2 supports A et B partagent un secret S et le message M1 comporte ce secret S et le support B vérifie à la fin de l'étape 4 que le message M5 comporte bien le secret S. Si oui alors le support A a été authentifié par le support B. Cela donne donc le procédé suivant: Procédé de transfert d'un message Nl1 sous forme chiffrée d'un support A à un autre support B à des fins d'authentification du support A caractérisé en ce que ces 2 supports A et B sont équipés de moyens de calcul, de mémorisation et d'échange de données appropriés, les 2 -6- supports possédant en commun: - un nombre entier public N. premier ou non - un nombre entier E secret inférieur à N - un nombre secret S une fonction h indiquant les codes admissibles I [tels que h(I) différent de 01 - une fonction fi telle que quelquesoit 1, quelquesoit J, quelquesoit x entiers inférieurs à N, f[ ( f ( x)) = fi ( f ( x)) et telle que pour tout x entier inférieur à Net pour tout I compris entre 1 et N tel que h(I) différent de 0, il existe un J tel que fj ( f ( x)) = x (on notera J= g(I)). La série de fonction f 1 étant par ailleurs difficilement inversible. c'est à dire connaissant des couples (xl. f (xl)), (x2, ft (x 2)), il est difficile de retrouver I procédé dans lequel les 2 supports mettent en oeuvre leurs moyens de calcul, de mémorisation et d'échange de données pour effectuer les opérations successives des différentes étapes suivantes: Etape 1. le support A tire au hasard un nombre AI compris entre I et N tel que h(AI)=0 le support A choisit un message M l composé de S A envoie a B le nombre fl: ( f:\ ( M 1)) =NM2 Etape 2. Le support B reçoit M2 B génère un nombre aléatoire B I tel que h(B 1)=0 B envoie à A le nombre fm ( M2) = M3 Etape 3. A reçoit 1M3 A calcule l'inverse Alprime de A1 tel que Alprime = g(AI) A envoie à B f,lpinmc ( Nil \) = 14 Etape 4. B calcule l'inverse B I prime de B I tel que B 1 prime = g( B I) et l'inverse Eprime de E tel que Eprime = g(E) B calcule f81prime ( f Eprime ( NM4)) =M5 Comme MvS=vlM 1 d'après les propriétés de la série de fonctions, le message M 1 a été échangé du support A vers le support B sans jamais avoir été échangé en clair et sans même avoir échangé les clés entre les 2 supports. Si M5 comporte le secret S alors le support B a bien authentifié le support A comme connaissant le secret. Selon une autre variante du procédé précédent, les supports A et B sont dotés d'un nombre N premier et la fonction f égale aà l'exponentielle dans l'anneau des nombres entiers compris -7- entre 0 et N-l 1, N étant premier. c'est à dire f ( x) =x^[ mod N.: L'inverse Blprime= g(B 1) de BI est tel que Blprime*Bl = I modulo N-I Cela se calcule facilement à l' aide de l'algorithme d'Euclide étendu par divisions euclidiennes successives La fonction h(X) vaut 0 si et seulement si X n'est pas premier avec N- 1 Indication de la manière dont l'invention est susceptible d'application industrielle: Le procédé est particulièrement adaptée à l'échange de données confidentielles entre 2 ordinateurs personnels via un réseau ouvert. Le procédé peut s'appliquer aussi pour l'échange de données entre 2 cartes à microprocesseur. l0 Le procédé d'authentification décrit est particulièrement adapté pour effectuer de l'authentification croisée de 2 systèmes homologues (détenant un secret partagé) électroniquement sûr à l'aide de fonction de chiffrement symétrique difficilement inversible. Le procédé peut s'appliquer à des cas de composants électroniques ou informatiques permettant de garder un secret telle que la carte à microprocesseur. carte à puce. carte a micro-circuit. coupleur USB (Universal Serial Bus). Il peut avoir une application monétique dans le domaine du porte-monnaie électronique. Il peut s'appliquer aussi à des systèmes d'authentification ou d'identification (accès sécurisés...) Le procédé peut être utilisée pour une authentification mutuelle de 2 composants sécurisés tel que l'identification de chacun des systèmes électroniquement str soit authentifié par un dialogue comportant 2 messages envoyés et de I réponse Pour que l'identification soit croisée, le même procédé est utilisé pour l'autre svstème puisque les composants sont homologues, mais les échanges de messages sont faits dans l'autre sens (au lieu que ce soit le composant A qui commence à envoyer les messages. c'est le composant B) Le procédé est particulièrement adapté pour les identifications croisées de cartes à microprocesseurs dotées de secrets partagés Les échanges de données entre les 2 cartes à microprocesseurs peuvent être réalisés par l'intermédiaire d'un boitier lecteur de carte à mémoire disposant d'une interface d'échange de données avec un autre boîtier homologue -8- REVENDICATIONS 1) Procédé de transfert d'un message M sous forme chiffrée d'un support A à un autre support B caractérisé en ce que ces 2 supports A et B sont équipés de moyens de calcul, de mémorisation et d'échange de données appropriés, les 2 supports possédant en commun: - un nombre entier public N, premier ou non - un nombre entier E secret inférieur à N - une fonction h indiquant les codes admissibles I [tels que h(I) différent de 0] - une fonction fi telle que quelquesoit [, quelquesoit J, quelquesoit x entiers inférieurs à N, f1 ( f ( x)) = fj ( f 1 ( x)) et telle que pour tout x entier inférieur à Net pour tout I compris entre I et N tel que h(I) différent de 0, il existe un J tel que fj ( f 1 ( x)) = x (on notera J= g(I)). La série de fonction f 1 étant par ailleurs difficilement inversible. c'est à dire connaissant des couples (xl, f i ( xl)), (x2, f1 ( x 2)), il est difficile de retrouver I procédé dans lequel les 2 supports mettent en oeuvre leurs moyens de calcul, de mémorisation et d'échange de données pour effectuer les opérations successives des différentes étapes suivantes Etape 1. le support A tire au hasard un nombre AI compris entre 1 et N tel que h(A l)=0 A envoie a B le nombre f. ( f, ( Ml)) =M2 Etape 2. Le support B reçoit M2 B génère un nombre aléatoire B 1 tel que h(B i)=0 B envoie à A le nombre f m ( M2) = M3 Etape 3. A reçoit M3 A calcule l'inverse Alprime de AI tel que Alprime = g(Al) A envoie à B fAlpinme ( Ml) = M4 Etape 4. B calcule l'inverse B Iprime de BI tel que B prime = g( BI) et l'inverse Eprime de E tel que Eprime = g(E) B calcule fBIprirm ( f Epne ( M4)) =M5 Comme MN5=M I d'après les propriétés de la série de fonctions, le message M I a été échangé du support A vers le support B sans jamais avoir été échangé en clair et sans même avoir échangé les clés entre les 2 supports. 2) Procédé de transfert d'un message M 1 sous forme chiffrée selon la revendication numéro I à des fins d'authentification caractérisé par le fait que les supports A et B possèdent en commun un secret S partagé. le message Mv I à l'étape 1 comporte ce secret S et après l'étape 4, le support B vérifie que le message M5 obtenu comporte bien le secret S, ce qui lui permet de vérifier que le support A connaît bien ce secret S. 3) Procédé de transfert d'un message N I sous forme chiffrée à des fins d'authentification selon la revendication numéro 2 pour lequel le support A possède un identifiant unique du support LA non secret et le message MI échangé à l'étape I comporte. outre le secret S. cet identifiant IA 4) Procédé selon l'une quelconque des revendications I à 3 à pour lequel l'un des supports est une carte à microprocesseur ) Procédé selon l'une quelconque des revendications I ou 4 pour lequel l'un des supports est un micro-ordinateur