FR 2814617 A1 20020329 FR 0102952 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 Multi-polynomial Quadratic Sieve MPQS, courbes elliptiques, etc...) et vitesse des processeurs. cette limite progresse rapidement, de sorte qu'il existe des doutes sérieux sur l'utilisation de clés RSA de 2048 bits 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 paraît 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 l'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'offrir 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 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 0 et N-l 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 AB 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 bu 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 AIB 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 l'associativité de la fonction. La fonction exponentielle est commutative : f o g = g o f, c'est à dire si on calcule M2=M1A mod N puis M3=M2B mod N, on a le même résultat que si on calcule M4=MB mod N puis M5=M4^A mod N, on a M5=M3. La fonction exponentielle est associative, c'est à dire (f oh = fo (g o h). c'est à dire si on calcule M2=M1"A mod N puis M3=M2B mod N et M4=M3^C mod N. on a le même résultat que si on calcule M5=MI^B mod N puis M6=M5^C mod N, puis M7=\i16^A mod N on a M7=M4. La fonction exponentielle modulo N est cependant facilement inversible lorsque l'exposant est connu. Ainsi, si M2=MI"AI mod N Si on connaît le nombre entier phiN égal au résultat de l'indicatrice d'Euler de N (phiN=N-1 lorsque N est premier, phiN= (P-l) * (Q-l) lorsque N=PxQ, P et Q étant 2 nombres premiers distincts). L'inverse AI prime de A1 est tel que AI prime* Al = 1 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 s Zr 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, commutativité, associativité). Le procédé de chiffrement peut être étendu à l'identification, il suffit pour cela que le message . 0) tU)/ chiffré échangé par les systèmes comporte un secret partagé. 11 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 notamment 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é 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 le 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. 11 est possible de mettre en oeuvre 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 hombres 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 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 un nombre entier E premier avec N-1 (le plus grand commun diviseur de E et N-l est 1) (E peut être égal à 1) Ces moyens de calculs, de mémorisation et d'échange de données sont utilisés pour les différentes étapes successives suivantes : Etape 1. Le message M est transformé sous forme numérique en un message Ml le support A tire au hasard un nombre Al tel que Al soit premier avec N-l (le plus grand commun diviseur de Al et N-l est 1) le support A calcule le nombre M (A1 *E) modulo N =M2 A envoie a B le nombre M2 Etape 2. B reçoit M2 Le vérificateur B génère un nombre aléatoire BI tel que BI soit premier avec N-l (le plus grand commun diviseur de Blet N- 1 est 1) B envoie à A le nombre M2^ (B1) modulo N= M3 Etape 3. A reçoit M3 A calcule l'inverse Alprime de A1 tel que Al prime* Al = 1 modulo N-l Cela se calcule facilement à l'aide de l'algorithme d'Euclide étendu par divisions euclidiennes successives A envoie à B M3Alprime modulo N = M4 Etape 4. B reçoit M4 B calcule l'inverse B Iprime de B1*E tel que B1prime*(B1*E) = 1 modulo N-1 B calcule M4^B 1 prime modulo N = M5 Comme M5=M 1, le support B obtient le message initial sans l'avoir échangé en clair. Selon une variante du procédé de chiffrement précédent, le message Ml échangé de façon chiffrée comporte un secret S partagé par les 2 support, à la fin du procédé, le support B vérifie que le message M5 comporte ce secret S, ce qui permet d'identifier le support A. Cela donne ainsi dans un mode particulier de mise en oeuvre du procédé, dans le cas de la fonction exponentielle, le procédé suivant : Procédé d'identification d'un support appelé "le vérifié" dit A, par un autre support appelé "le vérificateur"dit B, ces supports étant équipés de moyens de calcul et de mémorisation appropriés, le vérifié et le vérificateur possédant en commun : - un nombre entier premier public N un nombre entier S secret inférieur à N un nombre entier E secret inférieur à N premier avec N-1 Ces moyens de calculs, de mémorisation et d'échange de données sont utilisés pour les différentes étapes successives suivantes : Etape 1. le vérifié A tire au hasard un nombre Al tel que Al soit premier avec N-l (le plus grand commun diviseur de Al et N-1 est 1) le vérifié A choisit un message Ml composé de S A envoie a B le nombre M (A1*E) modulo N =M2 Etape 2. B reçoit M2 Le vérificateur B génère un nombre aléatoire B 1 tel que B 1 soit premier avec N-1 (le plus grand commun diviseur de B 1 et N-1 est 1) B envoie à A le nombre M2" (B1) modulo N= M3 Etape 3. A reçoit M3 A calcule l'inverse Alprime de Al tel que Alprime*Al = 1 modulo N-l Cela se calcule facilement à l'aide de l'algorithme d'Euclide étendu par divisions euclidiennes successives A envoie à B M3A1 prime modulo N = M4 Etape 4. B calcule l'inverse Bu prime de B1*E tel que Blprime* (Bl*E) = 1 modulo N-1 B calcule M4'B 1 prime module N =M5 Comme M5=M1 d'après les propriétés de la fonction exponentielle, si M5 est composé de S alors B a vérifié que A connaît le secret S et donc a authentifié A. Donc B est authentifié de façon sûre comme homologue de A car détenant les secrets S et E A aucun moment, les secrets S ou E n'ont pourtant été échangés L'identification dynamique de supports tels qu'exposé précédemment est intéressante par la sécurité apportée par l'alliance de procédés cryptographiques et de systèmes électroniquement sûrs tels que des cartes à microprocesseurs. Pour autant l'identification n'est pas suffisante et ces supports doivent pouvoir également authentifier des messages échangés, c'est à dire s'assurer que l'intégrité des messages n'est pas altérée par un système intrus. Pour cela, le contenu du message doit être inclus dans le message échangé et un numéro identifiant unique du support doit être inséré pour éviter qu'un autre support produise ce contenu L'unicité du support identifiant peut être garantie à la fabrication centralisée du support électronique avec un numéro de série unique. Une autre variante peut être décrite par le procédé précédents caractérisé en ce que le message Ml est composé, outre le secret S, d'un identifiant unique lA du support du vérifié, d'un message T 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. 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 sûr soit authentifié par un dialogue comportant 2 messages envoyés et de 1 réponse Pour que l'identification soit croisée, le même procédé est utilisé pour l'autre systè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 boîtier lecteur de carte à mémoire disposant d'une interface d'échange de données avec un autre boîtier homologue REVENDICATIONS 1) Procédé de transfert d'un message Ml 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 - un nombre entier E premier avec N-1 (le plus grand commun diviseur de E et N-1 est 1) (E peut être égal à 1) Ces moyens de calculs, de mémorisation et d'échange de données sont utilisés pour les différentes étapes successives suivantes : Etape 1. le support A tire au hasard un nombre Al tel que Al soit premier avec N-1 (le plus grand commun diviseur de Al et N-1 est 1) le support A calcule le nombre Ml (AI*E) modulo N =M2 A envoie a B le nombre M2 Etape 2. B reçoit M2 Le vérificateur B génère un nombre aléatoire B1 tel que B1 soit premier avec N- (le plus grand commun diviseur de Blet N-I est 1) B envoie à A le nombre M2^(B1) modulo N= M3 Etape 3. A reçoit M3 A calcule l'inverse Alprime de A1 tel que Al prime* Al = 1 modulo N-1 Cela se calcule facilement à l'aide de l'algorithme d'Euclide étendu par divisions euclidiennes successives A envoie à B M3^A1prime modulo N = M4 Etape 4. B reçoit M4 B calcule l'inverse Bu prime de BI *E tel que Blprime* (Bl*E) = 1 modulo N-1 B calcule M4BI prime module N = M5 Comme M5=M le support B obtient le message initial sans que ce message ait été échangé en clair. 2) Procédé de transfert d'un message MI sous forme chiffrée selon la revendication numéro 1 à 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 Ml à 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 Ml 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 Ml échangé à l'étape 1 comporte, outre le secret S, cet identifiant IA 4) Procédé selon l'une quelconque des revendications 1 à 3 pour lequel l'un des supports est une carte à microprocesseur 5) Procédé selon l'une quelconque des revendications 1 à 4 pour lequel l'un des supports est un micro-ordinateur