FR 2704081 A1 19941021 FR 9304515 A 19930416 PROCEDE DE MISE A JOUR D'UNE CARTE A MEMOIRE ET CARTE A MEMOIRE POUR LA MISE EN OEUVRE DE CE PROCEDE Domaine technique La présente invention a pour objet un procédé de mise à jour d'une carte à mémoire et une carte à mémoire pour la mise en oeuvre de ce procédé. Elle trouve une application dans ce qu'on appelle la monnaie électronique et plus particulièrement dans les systèmes à prépaiement dits ouverts. On désigne par là des systèmes impliquant un organisme émetteur de monnaie électronique, des utilisateurs possédant des cartes préchargées par l'émetteur, et des terminaux aptes à fournir certaines prestations, à débiter les cartes en conséquence et à collecter les montants provenant de plusieurs cartes. L'organisme propriétaire de ces terminaux est rétribué par l'émetteur selon la quantité d'unités qu'il a collectées. Le caractère "ouvert" de certains de ces systèmes vient de ce que l'organisme émetteur n'est pas nécessairement confondu avec les prestataires possédant les terminaux. Si l'invention s'applique de manière privilégiée à de tels systèmes, parce qu'elle permet de résoudre certains problèmes liés au caractère "ouvert", elle n'est pas limitée pour autant à ces seuls systèmes et pourrait aussi bien s'appliquer à des systèmes fermés, o l'organisme émetteur serait le propriétaire des terminaux. Etat de la technique antérieure Comme tous les systèmes à cartes portatives, les systèmes à prépaiement posent des problèmes de sécuri- té. Le problème est d'autant plus ardu pour les systè- mes ouverts que les terminaux doivent prouver à l'orga- nisme émetteur l'authenticité des montants qu'ils ont collectés. A cette fin, chaque terminal doit être équipé d'un module de sécurité. Ces problèmes de sécurité peuvent être mieux per- çus en passant en revue quelques risques de fraudes qu'il faut éviter: risque a): altération des données échangées: il ne doit pas être possible, par interposition de dispositifs informatiques entre une carte et un module de sécurité, de modifier les données transmises pour, par exemple, créditer un module de sécurité de plus d'unités qu'il n'en a été débité dans la carte; risque b): réutilisation des données échangées: il ne doit pas être possible de répéter les échan- ges de données, par exemple pour créditer plusieurs fois un même module de sécurité à partir d'un seul débit d'une carte; risque c): interposition d'un autre module de sécurité: il ne doit pas être possible d'interposer un se- cond module de sécurité et de créditer les deux modules de sécurité à partir d'un seul débit d'une carte; risque d): altération du contenu d'une carte: il ne doit pas être possible d'altérer le contenu d'une carte de façon à en augmenter illicitement le pouvoir d'achat. Tous ces problèmes peuvent être résolus par l'in- troduction, dans la carte, d'un microprocesseur aptes à effectuer diverses opérations de vérification, em- brouillage des données, authentification, signature, etc... Cette solution donne satisfaction à certains égards. Elle présente néanmoins l'inconvénient d'être coûteuse car elle nécessite l'introduction d'un micro- processeur dans chaque carte. La présente invention vise à obtenir une sécurité satisfaisante à l'égard des risques énumérés plus haut tout en évitant le recours à un microprocesseur dans chaque carte. L'invention entend donc proposer un pro- cédé qui soit applicable directement aux cartes à mé- moire "simples", par opposition aux cartes à micropro- cesseur. Ces cartes "simples" sont généralement constituées d'une mémoire dont la capacité peut aller de quelques centaines à quelques milliers de bits. Elles sont ac- cessibles grâce à un port d'entrée-sortie de type série. Elles peuvent être lues, écrites (par conven- tion, bits à 1) ou effacées (par convention, bits à 0). Ces cartes peuvent contenir une logique de condi- tion d'accès par zones: par exemple la zone d'adresse comprise entre O et 5 peut être lue, mais non écrite ou effacée; la zone 128 à 195 peut être lue ou écrite sans condition, et effacée si et seulement si un bit de la zone 64 à 95, par exemple, a été préalablement écrit. Ces cartes peuvent être authentifiées grâce à un processus challenge-réponse qui est classique en sécu- rité informatique: le terminal envoie à la carte un challenge x, qui est choisi en général aléatoirement ou différent des valeurs déjà utilisées. La carte calcule une fonction Y=f(x,m) o m représente le contenu de sa mémoire. Le terminal peut alors acquérir la certitude que la carte est authentique, ainsi que son contenu, en faisant de son côté le même calcul pour vérifier Y. Pour que ce processus ne soit pas imitable, il faut qu'il y ait un secret quelque part: par exemple, la mémoire doit contenir une clé, non lisible de l'exté- rieur, mais que le terminal ou l'ordinateur qui lui est raccordé connait ou sait reconstituer. Ainsi, le termi- nal peut authentifier la carte et son contenu. La présente invention vise à proposer un procédé offrant toute sécurité contre les risques analysés plus haut et qui s'appuie sur ces quelques fonctions présen- tes dans des cartes à mémoire simples existantes à ce jour. Exposé de l'invention Lorsque la mise à jour de la carte consiste en un paiement, la carte contient diverses zones mémoire, en plus de la zone traditionnelle o est inscrit le solde, l'une de ces zones constituant un compteur, régulièrement incrémenté avant chaque inscription d'un nouveau contenu, une autre zone contenant un certificat qui est une fonction à la fois du solde, du contenu du compteur, de l'identité de la carte et de l'identité du module de sécurité ayant effectué la dernière trans- action. Le procédé de l'invention peut se compléter par une double procédure d'authentification, l'une, dès le début de la transaction, pour établir l'authenticité de la carte et de son contenu initial et l'autre, à la fin de ia transaction, après que le débit a été calculé et que le contenu de la mémoire a été mis à jour. La zone mémoire o est inscrit le solde est notée B et le solde b. La zone o est inscrit le certificat est notée D et le certificat d. La zone de compteur est notée C et son contenu c. Ces trois zones constituent une zone mémoire de travail notée Tr, dont le contenu est noté tr. Pour prévenir toute possibilité de retour en ar- rière (changer b',d' en b,d, (ce qui aurait pour effet d'effacer la dernière consommation), un mécanisme de "cliquet" est mis en oeuvre grâce à la zone mémoire C. La carte comprend des moyens tels que le contenu de la zone C doit être incrémenté avant la mise à jour des zones B, D et J, (ce qui nécessite un effacement préalable de ces zones). La zone C est une zone qui, au départ, peut être à zéro, et dans laquelle des bits peuvent être simplement écrits, mais non effacés. Le calcul du certificat d prend en compte la va- leur c de ce compteur. Ainsi modifier (b',d') en (b,d) n'est pas possible sans que soit incrémenté c. Mais alors le certificat d n'est plus correct, puisque cal- culé avec le c précédent. Le calcul du certificat d doit aussi prendre en compte le numéro j du module de sécurité, de façon à lier, lors d'une transaction, une carte à un module de sécurité particulier et éviter la fraude de type c, telle que décrite plus haut. L'invention n'est pas limitée au seul paiement mais porte plus généralement sur la mise à jour d'une carte à mémoire, le contenu mis à jour n'ayant pas nécessairement la signification d'un montant financier. De façon précise, la présente invention a donc pour objet un procédé de mise à jour d'une information (tr) contenue dans une partie (Tr) d'une mémoire (M) contenue dans une carte à mémoire (CM), à l'aide d'un terminal T équipé d'un module de sécurité MS, ce procédé étant caractérisé le fait qu'il consiste à: - prévoir une zone compteur (C) dans la mémoire (M), avant toute mise à jour de la partie (Tr), incrémenter d'une unité le contenu (c) de la zone compteur (C), - si et seulement si le contenu (cl) de la zone compteur (C) a été effectivement incrémenté (c'=c+l), effacer l'ancien contenu (tr) de la partie (Tr) de la mémoire (M) et y inscrire à la place un nouveau contenu (tr') mis à jour. Selon un mode de mise en oeuvre particulier, le contenu de la partie (Tr) de la mémoire (M) à mettre à jour comprend un certificat (d) contenu dans une zone (D) de la partie (Tr), ce certificat étant une fonction déterminée (g) de l'identité (i) de la carte, d'un solde (b) contenu dans une autre zone (B), du contenu (c) de la zone compteur (C) et de l'identité (j) du module de sécurité (MS) ayant effectué la dernière mise à jour. De préférence, lorsqu'on introduit la carte (CM) dans un terminal (T), le module de sécurité de ce terminal (MS) commence par authentifier la carte (CM) et le contenu de sa mémoire (M). Dans une application particulière du procédé de l'invention, le solde (b) contenu dans la zone (B) est un solde financier, le procédé étant alors un procédé de paiement correspondant à une prestation. Lorsque le procédé de l'invention est un procédé de paiement, il comporte de préférence les opérations suivantes: a) vérifier qu'un certificat (d) contenu dans une zone (D) de la mémoire de travail (Tr) de la carte est bien une fonction déterminée (g) de l'identité de la carte (i), de son solde (b), du contenu (c) d'une zone mémoire (C) jouant le rôle de compteur, et de l'identité (j) du dernier module de sécurité ayant effectué la dernière transaction, b) calculer, dans le module de sécurité (MS), un nouveau solde (b') qui diffère de l'an- cien (b) d'un certain nombre d'unités (n), correspondant à une prestation, c) calculer, dans le module de sécurité (MS), un contenu de compteur (c') égal à l'ancien contenu (c) augmenté d'une unité (c'=c+l), d) calculer un nouveau certificat (d') égal à ladite fonction (g) de l'identité- de la carte (i), du nouveau solde (b'), du nou- veau contenu (c') du compteur et de l'iden- tité (j') du module de sécurité (MS), e) incrémenter d'une unité le contenu (c) de la zone mémoire (C) de la carte jouant le rôle de compteur (c'=c+l), f) si et seulement si ce contenu (c') a été effectivement incrémenté, il est possible d'effacer de la zone (Tr) son ancien contenu (tr) constitué par l'ancien solde (b), l'ancien certificat (d) et l'ancienne identité (j) du dernier module de sécurité utilisé et y inscrire à la place un nouveau contenu (tr') constitué par le nouveau solde (b'), le nouveau certificat (d') et l'identité (j') du module de sécurité du terminal, g) authentifier par le module de sécurité (MS) la carte (CM) et le nouveau contenu (tr') de la zone (Tr), h) en cas d'authenticité, modifier le solde (s) du module de sécurité de la quantité (n) correspondant à la modification du solde de la carte (s'=s+n). Ce procédé permet bien d'éviter les risques défi- nis plus haut, à savoir, respectivement: risque a) le module de sécurité authentifie la carte au début de la transaction et après mise à jour des données écrites dans la carte; il n'est donc pas pos- sible de modifier les données transmi- ses; risque b) le module de sécurité authentifie la carte avant et après la transaction et choisit les challenges; on ne peut donc lui soumettre à nouveau les don- nées d'un premier échange telles quel- les; risque c) si la transaction devait s'effectuer entre deux modules de sécurité diffé- rents, donc d'identités différentes respectivement, jl et j2, il faudrait, pour une même valeur c de la zone comp- teur C, inscrire deux séries de données différentes, l'une Tl relative à jl et l'autre, T2, relative à j2; mais pour effacer Tl afin d'écrire T2, il fau- drait nécessairement incrémenter le contenu de la zone compteur C, ce qui rendrait invalide T2; on ne peut donc créditer deux modules de sécurité à partir d'un même débit affectant une seule carte. risque d) on ne peut modifier le solde b car le certificat d dépendant de façon secrète du solde b, il est impossible de trou- ver la valeur correspondante de d, et une valeur fausse serait détectée lors de la transaction suivante; pour re- mettre la carte dans un état antérieur, il faudrait donc effacer son contenu c, ce qui impliquerait d'incrémenter le contenu du compteur C; les anciennes valeurs du certificat d serait alors incorrectes, le module de sécurité im- pliqué dans la transaction le détecte- rait et la carte ne serait donc plus utilisable. La présente invention a également pour objet une carte à mémoire pour la mise en oeuvre du procédé qui vient d'être défini. Cette carte est caractérisée par le fait qu'elle comprend une zone compteur (C) accessible en lecture et en écriture, mais non effaçable, la partie (Tr) à mettre à jour étant accessible en lecture et en écriture et étant effaçable si et seulement si le contenu de la zone compteur (C) a été incrémenté (c'=c+l). De préférence, la zone de travail (Tr) comprend: - une zone (J) d'écriture d'un numéro (j) d'identification du module de sécurité qui a effectué la dernière mise à jour, - une zone (B) o est écrit un solde (b), - une zone (D) o est écrit un certificat (d) qui est une fonction secrète (g) du numéro d'identification de la carte (i), du solde (b), du contenu (c) de la zone compteur (C) et du numéro d'identification (j) du module de sécurité (MS) ayant effectué la dernière mise à jour. La mémoire (M) comprend, par ailleurs, une zone (K) contenant une clé secrète (k) définissant la fonction secrète (g). Dans une variante permettant d'économiser quelque peu de la place mémoire, la zone D peut être comprise dans la zone K ou même être confondue avec K. La mise à jour de d en d' peut s'effectuer en transmettant à la carte d+d', de façon à rendre la connaissance de d' impossible à un fraudeur éventuel qui écouterait la liaison terminal-carte. La reconsti- tution dans la carte d' à partir de d+d' est facile à réaliser dans une carte à mémoire simple. Exposé détaillé d'un mode de réalisation On va décrire, ci-après, une procédure détaillée d'échange d'ordres et de données entre une carte à mémoire, un terminal et son module de sécurité. Les lettres majuscules désignent des zones mémoire o des dispositifs alors que les minuscules correspondantes désignent le contenu de ces zones. La carte à mémoire est notée CM, son identité est i. Le terminal est noté T. Le module de sécurité en service est noté MS et son identité est notée j', sachant que celle du module ayant effectué la transaction précédente était j. Les opérations mises en oeuvre sont alors les suivantes: 1. T demande à MS de choisir un aléa; 2. MS choisit et mémorise un aléa, soit x; 3. MS transmet x à T; 4. T demande à CM de lire le contenu m de la mémoire M; 5. CM lit M et transmet m à T; 6. T demande à CM de s'authentifier à l'aide de l'aléa x; 7. CM calcule Y=f(m,x); 8 CM transmet Y a T; 9. T transmet Y et m à MS; 10. MS calcule f(x,m) et vérifie que Y est bien égal à f(x,m); 11. T demande à MS de vérifier le certifi- cat d; 12. MS calcule D=g(i,b,c,j); 13. T communique à MS le débit à effectuer n; 14. MS calcule la nouvelle valeur du solde d'=d-n, incrémente c par c'=c+l et cal- cule d'=g(i,b',c',j'); 15. MS transmet à T les mises à jour d', j', b'; 16. T demande à CM d'écrire un 1 dans la zone C, d'effacer le contenu tr de la zone de travail Tr, d'y écrire le nou- veau contenu tr' formé par j', b', d'; 17. T demande à MS de choisir un nouvel aléa; 18. MS choisit et mémorise un aléa x'; 19. MS adresse x' à T; 20. T demande à CM de s'authentifier avec son nouveau contenu m'; 21. CM calcule Y'=f(x',m'); 22. CM transmet à T la valeur de Y'; 23. T demande à MS de vérifier l'authenti- cité de Y'; 24. MS vérifie que ml' correspond bien à il, c', j', b', d' et vérifie que Y'=f(x',m'); 25. si la vérification est positive, MS augmente son solde de n. Les opérations qui précèdent aboutissent à la diminution du solde de la carte et à l'augmentation du montant collecté par le terminal. Il va de soi qu'on peut appliquer la même suite d'opérations pour rechar- ger une carte et augmenter son solde, et diminuer d'au- tant un terminal de rechargement. L'invention qui vient d'être décrite peut être utilisée dans toute application o il est nécessaire de mettre à jour une information dans une carte, à chaque transaction (l'information n'étant pas nécessairement un montant financier) de façon à garantir que toute modification frauduleuse de cette information, par un moyen non autorisé, sera détectable par un terminal autorisé. REVENDICATIONS 1. Procédé de mise à jour d'une information (tr) contenue dans une partie (Tr) d'une mémoire (M) contenue dans une carte à mémoire (CM), à l'aide d'un terminal (T) équipé d'un module de sécurité (MS), ce procédé étant caractérisé par le fait qu'il consiste à: - prévoir une zone compteur (C) dans la mémoire (M), - avant toute mise à jour de la partie (Tr), incrémenter d'une unité le contenu (c) de la zone compteur (C), - si et seulement si le contenu (c') de la zone compteur (C) a été effectivement incrémenté (c'=c+1), effacer l'ancien contenu (tr) de la partie (Tr) de la mémoire (M) et y inscrire à la place un nouveau contenu (tr') mis à jour. 2. Procédé selon la revendication 1, caractérisé par le fait que le contenu de la partie (Tr) de la mémoire (M) à mettre à jour comprend un certificat (d) contenu dans une zone (D) de la partie (Tr), ce certificat étant une fonction déterminée (g) de l'identité (i) de la carte, d'un solde (b) contenu dans une autre zone (B), du contenu (c) de la zone compteur (C) et de l'identité (j) du module de sécurité (MS) ayant effectué la dernière mise à jour. 3. Procédé selon la revendication 2, caractérisé par le fait que l'on introduit la carte (CM) dans un terminal (T) et que le module de sécurité de ce terminal (MS) commence par authentifier la carte (CM) et le contenu de sa mémoire (M). 4. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé par le fait que le solde (b) contenu dans la zone (B) est un solde financier, le procédé étant alors un procédé de paiement correspondant à une prestation. 5. Procédé selon la revendication 4, caractérisé par le fait qu'il consiste à: a) vérifier qu'un certificat (d) contenu dans une zone (D) de la partie (Tr) est bien une fonction déterminée (g) de l'identité de la carte (i), de son solde (b), du contenu (c) d'une zone mémoire (C) jouant le rôle de compteur, et de l'identité (j) du dernier module de sécurité ayant effectué la dernière transaction, b) calculer, dans le module de sécurité (MS), un nouveau solde (b') qui diffère de l'an- cien (b) d'un certain nombre d'unités (n) correspondant à une prestation, c) calculer, dans le module de sécurité (MS), un contenu de compteur (c') égal à l'ancien contenu (c) augmenté d'une unité (c'=c+l), d) calculer un nouveau certificat (d') égal à ladite fonction (g) de l'identité de la carte (i), du nouveau solde (b'), du nou- veau contenu (c') du compteur et de l'iden- tité (j') du module de sécurité (MS), e) incrémenter d'une unité le contenu (c) de la zone mémoire (C) de la carte jouant le rôle de compteur (c'=c+l), f) si et seulement si ce contenu (c') a été effectivement incrémenté, effacer de la zone de travail (Tr) son ancien contenu (tr) constitué par l'ancien solde (b), l'ancien certificat (d) et l'ancienne identité (j) du dernier module de sécurité utilisé et y inscrire à la place un nouveau contenu (tr') constitué par le nouveau solde (b'), le nouveau certificat (d') et l'identité (j') du module de sécurité du terminal, g) authentifier par le module de sécurité (MS) la carte (CM) et le nouveau contenu (tr') de sa mémoire (Tr), h) en cas d'authenticité, modifier le solde (s) du module de sécurité de la quantité (n) correspondant à la modification du solde de la carte (s'=s+n). 6. Procédé selon la revendication 3, caractérisé par le fait que, pour authentifier une carte (CM) lors de son introduction dans un terminal (T): - le module de sécurité (MS) choisit et mémo- rise un aléa (x) et l'adresse au terminal (T), - le terminal (T) adresse cet aléa (x) à la carte (CM), - la carte (CM) lit le contenu de sa mémoire (m) et l'adresse au terminal (T), - le module de sécurité (MS) calcule une fonc- tion Y=f(x, m) de l'aléa (x) et du contenu (m) de la mémoire (M), - la carte calcule une fonction Y=f(m,x) de son contenu (m) et de l'aléa (x) reçu et adresse cette fonction (Y) au terminal, - le module de sécurité (MS) teste que le résultat de la fonction (Y) reçue de la carte est bien identique au résultat de la fonction qu'il a calculée. 7. Procédé selon la revendication 5, caractérisé par le fait que pour une opération de débit de la carte, on diminue le solde (b) de la carte d'un certain nombre (n) d'unités (b'=b-n) et on augmente le solde (s) du module de sécurité (MS) du même nombre (n) (s'=s+n). 8. Procédé selon la revendication 5, caractérisé par le fait que, pour une opération de rechargement de la carte (CM), on augmente le solde (b) de la carte d'un certain nombre (n) d'unités (b'=b+n) et on diminue le solde (s) du module de rechargement (s'=s-n). 9. Carte à mémoire pour la mise en oeuvre du procédé selon la revendication 1, cette carte comprenant une mémoire (M) avec une partie (Tr) à mettre à jour, caractérisée par le fait que la mémoire comprend en outre une zone compteur (C) accessible en lecture et en écriture, mais non effaçable, la parite (Tr) à mettre à jour étant accessible en lecture et en écriture et étant effaçable si et seulement si le contenu de la zone compteur (C) a été incrémenté (c'=c+ l). 10. Carte à mémoire selon la revendication 9 caractérisée par le fait que la partie (Tr) à mettre à jour comprend: - une zone (J) d'écriture d'un numéro (j) d'identification du module de sécurité (MS) qui a effectué la dernière mise à jour, - une zone (B) o est écrit un solde (b), - une zone (D) o est écrit un certificat (d) qui est une fonction secrète (g) du numéro d'identification de la carte (i), du solde (b), du contenu (c) de la zone compteur (C) et du numéro d'identification (j) du module de sécurité (MS) ayant effectué la dernière mise à jour.