Brevet FR2819664A1 — publié le 20020719

Domaine technique : Le concept du porte-monnaie électronique tel qu'imaginé au milieu des années 1970 consiste à stocker de l'argent sous forme numérique dans un support électronique sécurisé et que cet argent puisse s'échanger de personne à personne avec la même facilité que la monnaie numéraire (espèces, billets, pièces) sinon plus puisque la monnaie électronique ne comporte pas de problème de change. Les caractéristiques techniques de la monnaie électronique doivent donc se rapprocher au plus possible des propriétés de la monnaie numéraire, notamment : la non traçabilité de la monnaie électronique : on ne peut savoir en soi de qui provient telle somme d'argent remise en espèces ou remonter vers les possesseurs précédents de la somme la facilité de transfert qui se fait de la main à la main. sans limitation. sans discrimination, sans intermédiaire - l'impossibilité de création monétaire : seule l'autorité bancaire émettrice peut fabriquer l'argent. Dans toute la suite de ce document, nous entendrons ainsi par monnaie électronique le concept original de l'argent électronique non traçable. neutre et impossible à émettre et reproduire par un tiers. Nous entendons par le terme porte-monnaie électronique le moyen support de l'argent électronique grâce à un compteur d'unités monétaires. Pour répondre à l'exigence technique de non traçabilité. le système de porte-monnaie électronique doit être suffisamment sûr parce que la sécurité devra reposer intégralement sur la fiabilité du système, en effet. les transactions effectuées par des systèmes entièrement automatisées ne laissent pas de traces. Dans le contexte du porte-monnaie électronique permettant de transférer de l'argent d'un portemonnaie électronique à un autre. sans intermédiaire avec une protection de l'anonymat (seul l'identifiant du dernier porte-monnaie électronique d'où vient l'argent est stocké dans l'historique). il faut établir un moyen sûr non altérable de stocker l'information. Pour cela une carte à microprocesseur électroniquement sécurisé permet de stocker l'information. La fiabilité du système de monnaie électronique envisagé repose sur l'utilisation de composants électroniques sûrs tels que la carte à microprocesseur, couplé à des procédés cryptographiques d'identification avancés tels que vus plus loin dans ce document. Pour supporter l'exigence de neutralité, le système devra supporter les échanges de porteur à porteur de façon sécurisée, cela devra se concrétiser par un produit fini tenant dans la main d'un porteur pouvant à lui seul assurer les transferts de porteur à porteur. Cependant, dans la mesure où chaque porteur est réputé disposer d'un porte-monnaie électronique, et que le support de la monnaie électronique sera bien souvent une carte à microprocesseur au format carte de crédit, les porteurs doivent disposer d'un boîtier alimentant la puce, la lisant et d'un connecteur pour les échanges avec la puce de l'autre porteur se trouvant dans le boîtier contenant la carte à puce de l'autre porteur. 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 Multipolynomial Quadratic onj. ~, on 1 1 ic 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. Un procédé de chiffrement palliant à ces problèmes a ainsi été décrit dans la demande de brevet n 01 02952 déposée par Monsieur Laurent Pelé à IINPI et utilisant 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-1 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 l'associativité de la fonction. La fonction exponentielle est commutative : f o g = g o f, c'est à dire si on calcule M2=M1^A mod N puis M3=M2^B mod N, on a le même résultat que si on calcule M4=M 1 ^B mod N puis M5=M4'A mod N, on a M5=M3. La fonction exponentielle est associative. c'est à dire (f o g) o h = fo (go h). c'est à dire si on calcule M2=M1^A mod N puis M3=M2^B mod N et M4=M3^C mod N. on a le même résultat que si on calcule M5=M 1 ^B mod N puis M6=M5'C mod N. puis M7=M6"A mod N on a M7=M4. La fonction exponentielle modulo N est cependant facilement inversible lorsque l'exposant est connu. Ainsi, si M2=M1^A1 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-1) * (Q-1) Iorsque N=PxQ, P et Q étant 2 nombres premiers distincts). L'inverse Alprime de AI est tel que Alprime*AI = 1 modulo PhiN Cela se calcule facilement à l'aide de l'algorithme d'Euclide étendu par divisions euclidiennes successives Ainsi M3=M2Alprime mod N est égal à Ml. Le procédé de chiffrement introduit par la demande de brevet non 1 02952 est donc le suivant : Procédé de transfert d'un message M sous forme chiffrée d'un moyen A à un autre moyen B caractérisé en ce que ces 2 moyens A et B sont équipés de moyens de calcul, de mémorisation et d'échange de données appropriés, les 2 moyens possédant en commun : un nombre entier public N, premier - un nombre entier E premier avec N-] (le plus grand commun diviseur de E et N-1 est 1) (E peut être égal à 1) CI -)Ces moyens de calculs, de mémorisation échange de données sont utilisés pour les Ces moyens de calculs, de mémorisation et différentes étapes successives suivantes : Etape 1. Le message M est transformé sous forme numérique en un message Ml 5 le moyen A tire au hasard un nombre Al tel que Al soit premier avec N-1 (le plus grand commun diviseur de Al etN-1 est 1) le moyen A calcule le nombre M 1' (AI *E) modulo N =M2 A envoie a B le nombre M2 Etape 2. 10 B reçoit M2 Le vérificateur B génère un nombre aléatoire ss 1 tel que BI soit premier avec N-1 (le plus grand commun diviseur de Blet et'N-1 est 1) B envoie à A le nombre M2^ (B 1) modulo N= M3 Etape 3. A reçoit M3 A calcule l'inverse Alprime de Al tel que Alprime*AI = 1 modulo N-l Cela se calcule facilement à l'aide de l'algorithme d'Euclide étendu par divisions euclidiennes successives A envoie à B M3 Alprime module N = M4 1 rii Etape 4. B reçoit M4 B calcule l'inverse Biprime de BI*E te ! que Blpnme* (BI*E) = 1 modulo N-1 B calcule M4B1 prime modulo N = M5 Comme M5=M1, le moyen B obtient le message initial sans l'avoir échangé en clair. Le procédé de chiffrement peut être étendu à l'identification, il suffit pour cela que le message chiffré échangé par les systèmes comporte un secret partagé qui est vérifié par le système destinataire du message (le vérificateur). 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 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. La même demande de brevet no 1 02952 décrivait ainsi le procédé d'identification suivant : Procédé d'identification d'un moyen appelé"le vérifié"dit A. par un autre moyen appelé"le vérificateur"dit B, ces moyens é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 A l tel que AI soit premier avec N-1 (le plus grand commun diviseur de Al et N-1 est 1) le vérifié A choisit un message M 1 composé de S A envoie a B le nombre M1^(A1 *E) modulo N =M2 Etape 2. B reçoit M2 Le vérificateur B génère un nombre aléatoire B1 tel que BI soit premier avec N-l (le plus grand commun diviseur de Blet N-lest l) B envoie à A le nombre M2' (BI) modulo N= M3 Etape 3. A reçoit M3 A calcule l'inverse Alprime de AI tel que Alprime*AI = 1 modulo N-1 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 calcule l'inverse B1prime de B1*E tel que B1prime*(B1*E) = 1 modulo N-1 B calcule M4B1 prime modulo N =M5 Comme M5=M ! 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 Il faut tout de même faire attention à ce que l'identification transmettant un secret, ce secret ne puisse être divulgué, soit à un système simulacre imitant un vérificateur authentique, soit que les informations transmises lors du processus d'identification ne permettent pas d'être réutilisées ni de retrouver le secret. C'est notamment une mise en oeuvre de la 2"""'solution qui sera étudiée dans le procédé décrit. Les systèmes de chiffrement à clé publique permettent de prouver la connaissance d'un secret (tel que la factorisation d'un produit de 2 nombres premiers) sans le révéler. Certains autres systèmes permettent d'éviter les risques de signature forgées, notamment utiliser une ou plusieurs signatures déjà effectuées pour forger une signature supplémentaire. En effet, si on reprend le procédé d'identification décrit plus haut. N'importe quel système simulacre de vérificateur B connaissant seulement le nombre N qui est public, peut à l'issue d'un dialogue avec le système vérifié obtenir le nombre MlE modulo N. Si MI =S. alors cette identification S'E modulo N pourra être réutilisée auprès d'un autre système (même si S et E ne sont pas connus individuellement), ce qui permet de casser le système. Il convient d'étudier ainsi un système tel que la connaissance de divers MI IE avec MI composé de S ne permette pas de retrouver S ni E. Il existe une solution décrite ici pour pallier à ce problème, elle consiste à introduire une identification unique de chacun des moyens identifiants et identifiés, et utiliser l'identifiant du moyen vérificateur dans le message MI ainsi que des numéros séquentiels ou choisis aléatoirement par le vérificateur pour éviter l'éventuelle réutilisation de messages déjà échangés. Le protocole de communication doit ainsi être particulièrement affiné pour éviter la quelconque possibilité de fraude, ou même une défaillance donnant lieu à une perte d'argent pour une des parties impliquées. Notamment, des chiffrements et des signatures auront lieu pour s'assurer de l'intégrité des messages transmis. Pour une utilisation dans le cadre du porte-monnaie électronique, il faut que le message transmette le montant transféré, l'unité monétaire et que la décrémentation du niveau d'argent se fasse avant l'incrémentation afin d'éviter la création monétaire par arrêt de transmission de message. Une variante du procédé de transfert d'argent électronique sera introduite pour éviter la perte d'argent en cas d'erreur ou de coupure de communication entre le moment où le système payeur décrémente le compteur d'argent et le système récepteur incrémente le compteur d'argent. 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. Il 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 nombres premiers différents) et dans notre cas, P sera un nombre premier. Enfin si l'échange de plusieurs 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 de monnaie électronique d'un moyen appelé"le payeur"dit A, vers un autre moyen appelé"le récepteur"dit B. ces moyenss sont équipés de moyens de calcul. de mémorisation et d'échange de données appropriés. le payeur et le récepteur possédant en commun : un nombre entier public N, premier un nombre entier S secret inférieur à N un nombre entier N-1 égal au résultat de l'indicatrice d'Euler de N un nombre entier E secret inférieur à N, premier avec N-1 un stockage de montants Mut1, MT2, MT3... dans différentes unités monétaires Ul, Il'2, U3... Les moyens A et B comportent un historique de transactions comportant un numéro de transaction payeur Pi, un numéro de transaction récepteur Ri, un montant de transaction Ti algébrique (négatif : montant payé, positif : montant reçu), une unité monétaire Di, un Indicateur de validation de transaction Vi, un identifiant contrepartie Ci Le moyen A comporte un identifiant unique de support Ill.., le moyen B comporte un identifiant unique le. Ces 2 identifiants sont inaltérables et créés à la fabrication des supports. Le moyen A comporte un numéro séquentiel de transaction Na, Le moyen B comporte un numéro séquentiel de transaction Nb Les 2 moyens A et B comportent chacun un générateur de nombres aléatoires. 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 récepteur B du paiement calcule au hasard BJ tel que BI soit premier avec N-l (le plus grand commun diviseur de Blet N-l est 1) Le récepteur B du paiement calcule au hasard un nombre HI à l'aide du générateur de nombres aléatoires. Le récepteur B incrémente le numéro séquentiel de transaction Nb Le récepteur B du paiement crée un message Ml composé de S, H]}-In, Nb. du montant Si de la transaction dans l'unité monétaire Ui Le récepteur B calcule M2=M (B1*E) modulo N Le récepteur B envoie le message M2 à A Etape 2. Le payeur A reçoit le message M2 Le payeur A tire au hasard un nombre A1 tel que Al soit premier avec N-l (le plus grand commun diviseur de Al et N-1 est 1) Le payeur A calcule M2" (A1) module N =M3 Le payeur A envoie M3 au moyen B Etape 3. B reçoit M3 B calcule l'inverse Blprime de Bl tel que Blprime*BI = 1 modulo N-l Cela se calcule facilement à l'aide de l'algorithme d'Euclide étendu par divisions euclidiennes successives B envoie à A M3^B1prime modulo N = M4 Etape 4. A reçoit le message M4 A calcule l'inverse Alprime de A1*E tel que Alprime* (Al*E) = 1 modulo N-1 A calcule M5= M4^Alprime*E mod N Comme M5=MI normalement, A vérifie que M5 est composé de S, si oui le payeur"A"a identifié le récepteur B (cette identification sert en cas de reprise en cas de problème de communication) si non, la transaction est abandonnée. Le message M5 contient aussi l'identifiant du support B. IB, le montant Si dans l'unité monétaire Ui et le nombre HB Le payeur A vérifie que pour toutes les transactions précédentes dans l'historique telles que Ci= le. le nombre Nb est strictement supérieur à Ri si Ti Pi si Ti > 0.. Si ce n'est pas le cas, la transaction ne peut avoir lieu. Le payeur vérifie s'il a assez d'argent, c'est à dire si la somme Si dans la devise Ui est telle que Si Si non (pas assez d'argent), fin du protocole et de la transaction Le payeur A tire au hasard un nombre A2 tel que A2 sou premier avec N-1 (le plus grand commun diviseur de A2 et N-l est 1) Le payeur A incrémente le numéro séquentiel de transaction Na Le payeur A crée un message M6 composé de S, de l'identifiant du payeur lA, l'identifiant du support B, le. le nombre Ha, le nombre Nb, le nombre Na, le montant Si dans l'unité monétaire Ui A calcule le nombre M6^ (A2*E) modulo N =M7 A envoie à B un message comprenant M7, Na et IA Etape 5 B reçoit un message comprenant M7, Na et lA Le vérificateur B génère un nombre aléatoire B2 tel que B2 soit premier avec N-1 (le plus grand commun diviseur de B2 et N-1 est 1) Une transaction est rajoutée à l'historique des transactions du moyen récepteur B comprenant le numéro de transaction Pi mis à la valeur Na, le numéro de transaction Ri mis égal à Nb, le montant de transaction Ti algébrique est mis égal à-Si. l'unité monétaire Di est mis égal à Ui. l'indicateur de validation de transaction Vi est mis à la valeur fausse, l'identifiant contrepartie Ci est mis égal à IA B envoie à A le nombre M7' (B2) modulo N= M8 Etape 6. A reçoit M8 A calcule l'inverse A2prime de A2 tel que A2prime*A2 = 1 modulo N-l Cela se calcule facilement à l'aide de l'algorithme d'Euclide étendu par divisions euclidiennes successives Le montant MTi du moyen payeur"A"est décrémenté de la valeur Si Une transaction est rajoutée à l'historique des transactions du moyen payeur A comprenant le numéro de transaction Pi mis à la valeur Na. le numéro de transaction Ri mis égal à Nb, le montant de transaction Ti algébrique est mis égal à-Si. l'unité monétaire Di est mis égal à Ui. l'indicateur de validation de transaction Vi est mis à la valeur fausse, l'identifiant contrepartie Ci est mis égal à IB A envoie à B M8Alprime modulo N = M9 Etape 7. B reçoit le message M9 B calcule l'inverse B2prime de B2*E tel que B2prime* (B2*E) = 1 modulo N-l B calcule M9B2prime modulo N = M 10 Comme Ml O=M6 d'après les propriétés de la fonction exponentielle, si M 10 est composé de S alors B a vérifié que A connaît le secret S et donc a authentifié A. B vérifie que MI 0 est bien composé de l'identifiant du payeur lA B vérifie que MI 0 est bien composé de l'identifiant du moyen récepteur IH B vérifie que M10 est bien composé du nombre HB B vérifie que MIO est bien composé du montant Si dans l'unité monétaire Ui B vérifie que M 10 est bien composé du nombre séquentiel du récepteur Nb B vérifie que M10 est bien composé du nombre séquentiel du payeur Na Le récepteur B vérifie que pour toutes les transactions précédentes dans l'historique telles que Ci= lA, le nombre Na est strictement supérieur à Ri si Ti Pi si Ti > 0.. Si ce n'est pas le cas, la transaction ne peut avoir lieu. Si le moyen payeur"A"est authentifié, alors l'indicateur de validation du récepteur B de l'historique pour la transaction numéro Pi=Na avec Ci= ! A est mis à la valeur"vrai" Le montant MTi du moyen"B"récepteur est incrémenté de la valeur SI B envoie à A un message de validation V1 composé de l'identifiant l ; ; et du numéro de la transaction Na Etape 8. Le payeur A reçoit un message V 1 comprenant l'identifiant lH et le numéro de la transaction Na l'indicateur de validation de l'historique du payeur A pour la transaction numéro Pi=Na avec Ci=IB est mis à la valeur"vrai" La transaction est terminée Si la transaction a été interrompue. par exemple à cause de problème de communication, il peut y avoir une perte d'argent si l'interruption se fait entre les étapes 6 et 7 : le montant est décrémenté chez le payeur mais pas incrémenté chez le récepteur. Pour cela une procédure de reprise s'applique à l'aide des 2 mêmes moyens pour que l'argent soit finalement crédité à B après rétablissement de la communication. Une variante du procédé précédent inclus un procédé de reprise de données en cas d'erreur pouvant ainsi être mise en oeuvre après l'étape 8 du procédé décrit précédemment. Etape 9 En cas de demande de reprise par le propriétaire du récepteur B, Le moyen récepteur B vérifie que l'indicateur de transaction Vi pour une transaction dans l'historique est à la valeur faux et que le montant MTi est positif Le moyen récepteur B envoie au payeur A un message RI comprenant l'identifiant 1 du moyen B, l'identifiant Contrepartie Ci de l'historique (=lA), Le numéro de la transaction Pi=Na, le montant Ti=Si de la transaction et la devise Di=Ui Etape 10 Le moyen payeur A reçoit un message RI comprenant l'identifiant ln du moyen B. l'identifiant Ci, un numéro Na, un montant Si et une devise Ui Le moyen payeur A vérifie que Si > 0 sinon il arrête la reprise Le moyen payeur A vérifie que Ci= lu sinon il arrête la reprise Le moyen payeur A vérifie que son historique contient une transaction avec Ci égal à lu. Pi égal à Na, Ti égal à-Si, Di égal à Ui et que pour cette transaction, l'indicateur de validation est faux sinon il arrête la reprise. A ce moment là, il faut identifier de façon sécurisée le moyen récepteur B et refaire le transfert d'argent sous forme sécurisée de façon analogue à celle déjà essayée. Le moyen payeur"A"envoie à B un message R2 du type"démarrer reprise"comprenant 1. pe"démaiter rep *se"col-nprenant l'identifiant 1iS du moyen B, l'identifiant IA du moyen A. le numéro de la transaction Pi=Na.. le numéro de la transaction Ri=Nb Etape 11. Le récepteur B du paiement reçoit le message R2 comprenant l'identifiant lu du moyen B, l'identifiant lA du moyen A. le numéro de la transaction Pi=Na.. le numéro de la transaction Ri=Nb Le récepteur B du paiement calcule au hasard un nombre HB2 à l'aide du générateur de nombres aléatoires. Le récepteur B du paiement crée un message R3 composé de S, HB2. Is-l'identifiant lA du moyen A. Na, Nb. du montant Si de la transaction dans l'unité monétaire Ui Le récepteur B du paiement calcule au hasard B3 tel que B3 soit premier avec N-1 (le plus grand commun diviseur de B3 et N-1 est 1) Le moyen récepteur B vérifie que l'indicateur de transaction Vi pour la transaction dans l'historique telle que Ci égal à lA et Pi égal à Na, est à la valeur faux et que le montant Ti est positif et égal à Si dans l'unité monétaire Ui Le récepteur B calcule R4=R3A (B3*E) modulo N Le récepteur B envoie le message R4 à A Etape 12. Le payeur A reçoit le message R4 Le payeur A tire au hasard un nombre A3 tel que A3 soit premier avec N-1 (le plus grand commun diviseur de A3 et N-1 est 1) Le payeur A calcule R4^ (AI) modulo N =R5 Le payeur A envoie R5 au moyen B Etape 13. B reçoit R5 B calcule l'inverse B3prime de B3 tel que B3prime*B3 = 1 module N-1 Cela se calcule facilement à l'aide de l'algorithme d'Euclide étendu par divisions euclidiennes successives B envoie à A R5^B3prime modulo N = R6 Etape 14. A reçoit le message R6 A calcule l'inverse A3prime de A3*E tel que A3prime* (A3*E) = 1 modulo N-1 A calcule R7= R6AIprime*E mod N Comme R7=R3 normalement, Le message R7 est composé de S, HB2, IB, l'identifiant IA du moyen A, Na. Nb, du montant Si de la transaction dans l'unité monétaire Ui A vérifie que R7 est bien composé du secret S A vérifie que R7 est bien composé de l'identifiant du support B In , É vérif A vérifie que R7 est bien composé de l'identifiant du support A IA A vérifie que R7 est bien composé du numéro séquentiel de la transaction Na généré par le moyen A A vérifie que R7 est bien composé du numéro séquentiel de la transaction Nb généré par le moyen B A vérifie que R7 est bien composé du montant Si dans l'unité monétaire Ui Le moyen payeur A vérifie que son historique contient une transaction avec Ci égal à 13-Pi égal à Na, Ri égal à Nb, Ti égal à-Si, Di égal à Ui et que pour cette transaction, l'indicateur de validation est à la valeur faux sinon il arrête la reprise Le payeur A crée un message R8 composé de S, de l'identifiant du payeur lA, l'identifiant du support B, IB, le nombre Hm, le nombre Nb, le nombre Na, le montant Si dans l'unité monétaire Ui Le payeur A tire au hasard un nombre A4 tel que A4 soit premier avec N-l (le plus grand commun diviseur de A4 et N-1 est 1) A calcule le nombre R8" (A4*E) modulo N =R9 A envoie à B un message comprenant R9, Na et lA Etape 15 B reçoit un message comprenant R9, Na et lA Le vérificateur B génère un nombre aléatoire B4 tel que B4 soit premier avec N-1 (le plus grand commun diviseur de B4 et N-l est 1) Le moyen B vérifie qu'il existe dans l'historique des transaction une transaction pour cette contrepartie Ci= IA et un numéro identifiant Ni=Na et que l'indicateur de transaction Vi pour la transaction dans l'historique du moyen B est faux pour cette contrepartie Ci= lA et que le montant Ti est positif et égal à Si sinon arrêt de la reprise B envoie à A le nombre R9" (B4) module N= RIO Etape 16. A reçoit RIO A calcule l'inverse A3prime de A3 tel que A3prime*A3 = 1 modulo N-1 Cela se calcule facilement à l'aide de l'algorithme d'Euclide étendu par divisions euclidiennes successives A envoie à B RIO'A3prime rnodulo N = RI 1 Etape 17. B reçoit le message RI 1 B calcule l'inverse B4prime de B4*E tel que B4prime* (B4*E) = 1 module N-1 B calcule RI H"B4prime modulo N = RI 12 Comme R12=R8 d'après les propriétés de la fonction exponentielle. normalement R12 est composé de S. de l'identifiant du payeur IA, l'identifiant du support B, IB, le nombre Hm, le nombre Nb, le nombre Na, le montant Si dans l'unité monétaire Ui Le moyen récepteur B vérifie que R12 est bien composé du secret S Le moyen récepteur B vérifie que RI 2 est bien composé de l'identifiant du payeur 1A Le moyen récepteur B vérifie que R12 est bien composé de l'identifiant du moyen récepteur IB Le moyen récepteur B vérifie que RI 2 est bien composé du nombre HB Le moyen récepteur B vérifie que R12 est bien composé du montant Si dans l'unité monétaire Ui Le moyen récepteur B vérifie que R12 est bien composé du nombre séquentiel du récepteur Nb Le moyen récepteur B vérifie que RI 2 est bien composé du nombre séquentiel du payeur Na Si toutes ces vérifications sont effectuées alors le moyen A est authentifié. Le moyen récepteur B vérifie que son historique contient une transaction avec Ci égal à lA. Pi égal à Na, Ri égal à Nb, Ti égal à Si, Di égal à Ui et que pour cette transaction, l'indicateur de validation est à la valeur faux sinon il arrête la reprise Si le moyen"A"est authentifié, alors l'indicateur de validation de l'historique du moyen B pour la transaction numéro Pi=Na avec Ci=IA est mis à la valeur"vrai" Le montant MTi du moyen"B"récepteur est incrémenté de la valeur Si B envoie à A un message de validation V3 composé de l'identifiant lu et du numéro de la transaction Na Etape 18. Le payeur A reçoit un message V3 comprenant l'identifiant 1 et le numéro de la transaction Na l'indicateur de validation de l'historique du payeur A pour la transaction numéro Pi=Na avec Ci=In est mis à la valeur"vrai" La transaction est terminée Etape 19. En cas de nouvel échec au cours de la transmission, un nouvel essai de reprise peut être refait à partir de l'étape 9. Indication de la manière dont l'invention est susceptible d'application industrielle : L'invention peut être industrialisée sous la forme de porte-monnaie électronique détenant de l'argent électronique transférable de porteur à porteur. Les moyens décrits dans les procédés plus haut peuvent ainsi être matérialisés par des ai 1 1 systèmes électroniquement sûrs permettant de stocker un secret inaccessible par les utilsateurs même du système. Les moyens peuvent notamment être sous forme de carte à microprocesseur, de coupleur USB ou de micro-ordinateur. Dans le cas où le porte-monnaie électronique est matérialisé sous forme de carte à microprocesseur, les échanges entre les 2 porte-monnaies électroniques peuvent se faire à l'aide de boîtier lecteur de carte à mémoire. 2 tels boîtiers étant connectables entre eux et pouvant échanger les messages entre les 2 cartes à microprocesseurs 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 l) Procédé de transfert de monnaie électronique d'un moyen appelé"le payeur"dit A, vers un autre moyen appelé"le récepteur"dit B, ces moyenss sont équipés de moyens de calcul, de mémorisation et d'échange de données appropriés, le payeur et le récepteur possédant en commun : un nombre entier public N, premier un nombre entier S secret inférieur à N un nombre entier N-1 égal au résultat de l'indicatrice d'Euler de N un nombre entier E secret inférieur à N, premier avec N-l un stockage de montants MTL MT2. MT3... dans différentes unités monétaires Ul. U2. u U3... Les moyens A et B comportent un historique de transactions comportant un numéro de transaction payeur Pi, un numéro de transaction récepteur Ri. un montant de transaction Ti algébrique (négatif. montant payé. positif montant reçu). une unité monétaire Di. un Indicateur de validation de transaction Vi, un identifiant contrepartie Ci Le moyen A comporte un identifiant unique de support IA. le moyen B comporte un identifiant unique le. Ces 2 identifiants sont inaltérables et créés à la fabrication des supports. Le moyen A comporte un numéro séquentiel de transaction Na, Le moyen B comporte un numéro séquentiel de transaction Nb Les 2 moyens A et B comportent chacun un générateur de nombres aléatoires. 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 récepteur B du paiement calcule au hasard B1 tel que B1 soit premier avec N-1 (le plus grand commun diviseur de B1 et N-l est I) Le récepteur B du paiement calcule au hasard un nombre HB à l'aide du générateur de nombres aléatoires. Le récepteur B incrémente le numéro séquentiel de transaction Nb Le récepteur B du paiement crée un message Ml composé de S, Hn. In. Nb, du montant Si de la transaction dans l'unité monétaire Ui Le récepteur B calcule M2=M 1" (B 1 *E) modulo N Le récepteur B envoie le message M2 à A Etape 2. Le payeur A reçoit le message M2 Le payeur A tire au hasard un nombre Al tel que Al soit premier avec N-1 (le plus grand commun diviseur de A1 et'N-1 est 1) Le payeur A calcule M2^ (AI) module N =M3 Le payeur A envoie M3 au moyen B Etape 3. B reçoit M3 B calcule l'inverse Blpriìne de BI tel que B1prime*B1 = 1 modulo N-1 Cela se calcule facilement à l'aide de l'algorithme d'Euclide étendu par divisions euclidiennes tn successives B envoie à A M3Blprime modulo N = M4 Etape 4. A reçoit le message M4 A calcule l'inverse Alprime de AI*E tel que Alprime* (AI*E) = 1 modulo N-1 A calcule M5= M4^A1prime*E mod N Comme M5=M1 normalement, A vérifie que M5 est composé de S, si oui le payeur"A"a identifié le récepteur B (cette identification sert en cas de reprise en cas de problème de communication) si non, la transaction est abandonnée. Le message M5 contient aussi l'identifiant du support B. IB. le montant Si dans l'unité monétaire Ui et le nombre Hn Le payeur A vérifie que pour toutes les transactions précédentes dans l'historique telles que Ci=IB. le nombre Nb est strictement supérieur à Ri si Ti Pi si Ti > 0.. Si ce n'est pas le cas, la transaction ne peut avoir lieu. Le payeur vérifie s'il a assez d'argent, c'est à dire si la somme Si dans la devise Ui est telle que Si B reçoit un message comprenant M7, Na et IA Le vérificateur B génère un nombre aléatoire B2 tel que B2 soit premier avec N-l (le plus grand commun diviseur de B2 et N-1 est 1) Une transaction est rajoutée à l'historique des transactions du moyen récepteur B comprenant le numéro de transaction Pi mis à la valeur Na, le numéro de transaction Ri mis égal à Nb, le montant de transaction Ti algébrique est mis égal à +Si, l'unité monétaire Di est mis égal à Ui, l'indicateur de validation de transaction Vi est mis à la valeur fausse, l'identifiant contrepartie Ci est mis égal à IA B envoie à A le nombre M7^ (B2) modulo N= M8 Etape 6. A reçoit M8 A calcule l'inverse A2prime de A2 tel-que A2prime*A2 = 1 modulo N-l Cela se calcule facilement à l'aide de l'algorithme d'Euclide étendu par divisions euclidiennes successives Le montant MTi du moyen payeur"A"est décrémenté de la valeur Si Une transaction est rajoutée à l'historique des transactions du moyen payeur A comprenant le numéro de transaction Pi mis à la valeur Na, le numéro de transaction Ri mis égal à Nb, le montant de transaction Ti algébrique est mis égal à-Si. l'unité monétaire Di est mis égal à Ui, l'indicateur de validation de transaction Vi est mis à la valeur fausse, l'identifiant contrepartie Ci est mis égal à IB A envoie à B M8Alprime modulo N = M9 Etape 7. B reçoit le message M9 B calcule l'inverse B2prime de B2*E tel que B2pnme* (B2*E) = 1 modulo N-l B calcule M9"B2prime modulo N = MIO Comme M10=M6 d'après les propriétés de la fonction exponentielle, si M10 est composé de S alors B a vérifié que A connaît le secret S et donc a authentifié A. B vérifie que M10 est bien composé de l'identifiant du payeur IA B vérifie que Mil 0 est bien composé de l'identifiant du moyen récepteur IB B vérifie que M10 est bien composé du nombre HB B vérifie que Ml 0 est bien composé du montant Si dans l'unité monétaire Ui B vérifie que NI 10 est bien composé du nombre séquentiel du récepteur Nb B vérifie que M 10 est bien composé du nombre séquentiel du payeur Na Le récepteur B vérifie que pour toutes les transactions précédentes dans l'historique telles que Ci= lA, le nombre Na est strictement supérieur à Ri si Ti Pi si Ti > 0.. Si ce n'est pas le cas, la transaction ne peut avoir lieu. Si le moyen payeur"A"est authentifié, alors l'indicateur de validation du récepteur B de l'historique pour la transaction numéro Pi=Na avec Ci=IA est mis à la valeur"vrai" Le montant MTi du moyen"B"récepteur est incrémenté de la valeur Si B envoie à A un message de validation VI composé de l'identifiant la et du numéro de la transaction Na Etape 8. Le payeur A reçoit un message VI comprenant l'identifiant In et le numéro de la transaction Na l'indicateur de validation de l'historique du payeur A pour la transaction numéro Pi=Na avec Ci=lB est mis à la valeur"vrai" La transaction est terminée 2) Procédé de transfert de monnaie électronique d'un moyen appelé"le payeur"dit A. vers un autre moyen appelé"le récepteur"dit B, selon la revendication numéro 1 auquel est rajouté, en cas d'erreur au cours des étapes 6 ou 7 de ce procédé. à la suite un procédé de reprise de la transaction selon les étapes successives suivantes mettant en oeuvre les moyens de calculs, de mémorisation et d'échange des données des 2 moyens A et B : Etape 9 En cas de demande de reprise par le propriétaire du récepteur B, Le moyen récepteur B vérifie que l'indicateur de transaction Vi pour une transaction dans l'historique est à la valeur faux et que le montant MTi est positif Le moyen récepteur B envoie au payeur A un message RI comprenant l'identifiant IB du moyen B, l'identifiant Contrepartie Ci de l'historique (=lA). Le numéro de la transaction Pi=Na, le montant Ti=Si de la transaction et la devise Di=Ui Etape 10 Le moyen payeur A reçoit un message RI comprenant l'identifiant IB du moyen B, l'identifiant Ci, un numéro Na, un montant Si et une devise Ui Le moyen payeur A vérifie que Si > 0 sinon il arrête la reprise Le moyen payeur A vérifie que Ci= IB sinon il arrête la reprise Le moyen payeur A vérifie que son historique contient une transaction avec Ci égal à 113 Pi égal à Na, Ti égal à-Si, Di égal à Ui et que pour cette transaction, l'indicateur de validation est faux sinon il arrête la reprise. A ce moment là, il faut identifier de façon sécurisée le moyen récepteur B et refaire le transfert d'argent sous forme sécurisée de façon analogue à celle déjà essayée. Le moyen payeur"A"envoie à B un message R2 du type"démarrer reprise"comprenant l'identifiant In du moyen B, l'identifiant lA du moyen A. le numéro de la transaction Pi=Na,. le numéro de la transaction Ri=Nb Etape 11. Le récepteur B du paiement reçoit le message R2 comprenant l'identifiant IR du moyen B, l'identifiant IA du moyen A, le numéro de la transaction Pi=Na, le numéro de la transaction Ri=Nb Le récepteur B du paiement calcule au hasard un nombre Hgs à l'aide du générateur de nombres aléatoires. Le récepteur B du paiement crée un message R3 composé de S, HB2, IB, l'identifiant IA du moyen A, Na, Nb, du montant Si de la transaction dans l'unité monétaire Ui Le récepteur B du paiement calcule au hasard B3 tel que B3 soit premier avec N-1 (le plus grand commun diviseur de B3 et N-1 est 1) Le moyen récepteur B vérifie que l'indicateur de transaction Vi pour la transaction dans l'historique telle que Ci égal à IA et Pi égal à Na, est à la valeur faux et que le montant Ti est positif et égal à Si dans l'unité monétaire Ui Le récepteur B calcule R4=R3^ (B3*E) modulo N Le récepteur B envoie le message R4 à A Etape 12. Le payeur A reçoit le message R4 Le payeur A tire au hasard un nombre A3 tel que A3 soit premier avec N-1 (le plus grand commun diviseur de A3 et N-l est 1) Le payeur A calcule R4^ (AI) modulo N =R5 Le payeur A envoie R5 au moyen B Etape 13. B reçoit R5 B calcule l'inverse B3prime de B3 tel que B3prime*B3 = 1 modulo N-1 Cela se calcule facilement à l'aide de l'algorithme d'Euclide étendu par divisions euclidiennes successives B envoie à A R5B3prime modulo N = R6 Etape 14. A reçoit le message R6 A calcule l'inverse A3prime de A3*E tel que A3prime* (A3*E) = 1 modulo N-1 A calcule R7= R6^Alprime*E mod N Comme R7=R3 normalement, Le message R7 est composé de S, HB2, IB, l'identifiant IA du moyen A, Na, Nb, du montant Si de la transaction dans l'unité monétaire Ui A vérifie que R7 est bien composé du secret S A vérifie que R7 est bien composé de l'identifiant du support B IB A vérifie que R7 est bien composé de l'identifiant du support A IA A vérifie que R7 est bien composé du numéro séquentiel de la transaction Na généré par le moyen A A vérifie que R7 est bien composé du numéro séquentiel de la transaction Nb généré par le moyen B A vérifie que R7 est bien composé du montant Si dans l'unité monétaire Ui Le moyen payeur A vérifie que son historique contient une transaction avec Ci égal à ln. Pi égal à Na, Ri égal à Nb, Ti égal à-Si, Di égal à Ui et que pour cette transaction, l'indicateur de validation est à la valeur faux sinon il arrête la reprise Le payeur A crée un message R8 composé de S, de l'identifiant du payeur lA. l'identifiant du support B, IB. le nombre HB2, le nombre Nb. le nombre Na, le montant Si dans l'unité monétaire Ui Le payeur A tire au hasard un nombre A4 tel que A4 soit premier avec N-1 (le plus grand commun diviseur de A4 et N-1 est 1) A calcule le nombre R8^ (A4*E) modulo N =R9 A envoie à B un message comprenant R9, Na et lA Etape 15 B reçoit un message comprenant R9, Na et IA Le vérificateur B génère un nombre aléatoire B4 tel que B4 soit premier avec N-l (le plus grand commun diviseur de B4 et N-1 est 1) Le moyen B vérifie qu'il existe dans l'historique des transaction une transaction pour cette contrepartie Ci= IA et un numéro identifiant Ni=Na et que l'indicateur de transaction Vi pour la transaction dans l'historique du moyen B est faux pour cette contrepartie Ci= IA et que le montant Ti est positif et égal à Si sinon arrêt de la reprise B envoie à A le nombre R9" (B4) modulo N= RIO Etape 16. A reçoit RIO A calcule l'inverse A3prime de A3 tel que A3prime*A3 = 1 modulo N-1 Cela se calcule facilement à l'aide de l'algorithme d'Euclide étendu par divisions euclidiennes successives A envoie à B R10^A3prime modulo N = RI 1 Etape 17. B reçoit le message RI 1 B calcule l'inverse B4prime de B4*E tel que B4prime* (B4*E) = 1 modulo N-l B calcule RI 1"B4prime modulo N = RI 12 Comme RI2=R8 d'après les propriétés de la fonction exponentielle, normalement Rl2 est composé de S, de l'identifiant du payeur lA, l'identifiant du support B, IB, le nombre H, le nombre Nb, le nombre Na, le montant Si dans l'unité monétaire Ui Le moyen récepteur B vérifie que R12 est bien composé du secret S Le moyen récepteur B vérifie que R12 est bien composé de l'identifiant du payeur IA Le moyen récepteur B vérifie que R12 est bien composé de l'identifiant du moyen récepteur 113 Le moyen récepteur B vérifie que R12 est bien composé du nombre HB Le moyen récepteur B vérifie que R 12 est bien composé du montant Si dans l'unité monétaire Ui 1 Le moyen récepteur B vérifie que R12 est bien composé du nombre séquentiel du récepteur Nb Le moyen récepteur B vérifie que R12 est bien composé du nombre séquentiel du payeur Na Si toutes ces vérifications sont effectuées alors le moyen A est authentifié. Le moyen récepteur B vérifie que son historique contient une transaction avec Ci égal à lA. Pi égal à Na, Ri égal à Nb, Ti égal à Si. Di égal à Ui et que pour cette transaction, l'indicateur de validation est à la valeur faux sinon il arrête la reprise Si le moyen"A"est authentifié, alors l'indicateur de validation de l'historique du moyen B pour la transaction numéro Pi=Na avec Ci=lA est mis à la valeur"vrai" Le montant MTi du moyen"B"récepteur est incrémenté de la valeur Si B envoie à A un message de validation V3 composé de l'identifiant la et du numéro de la transaction Na Etape 18. Le payeur A reçoit un message V3 comprenant l'identifiant IB et le numéro de la transaction Na l'indicateur de validation de l'historique du payeur A pour la transaction numéro Pi=Na avec Ci=lB est mis à la valeur"vrai" La transaction est terminée Etape 19. En cas de nouvel échec au cours de la transmission, un nouvel essai de reprise peut être refait à partir de l'étape 9. 3) Procédé selon l'une quelconque des revendications 1 ou 2 pour lequel l'un des supports est une carte à microprocesseur 4) Procédé selon l'une quelconque des revendications 1 ou 3 pour lequel l'un des supports est un micro-ordinateur