FR 2865060 A1 20050715 FR 0400187 A 20040109 - 1 - La présente invention concerne un procédé pour modifier de manière sûre le contenu de la mémoire d'une carte à microcircuit à l'aide d'un lecteur de cartes à microcircuit portable et d'un serveur distant. Les applications connues de telles cartes ont recours à des modifications de leur mémoire non volatile au moins dans ces deux cas: - la carte elle-même décide de modifier le contenu de sa mémoire non volatile pour ses besoins propres, - le terminal auquel est présentée la carte, transmet à celle-ci une ou plusieurs commandes dont l'objectif est la modification d'au moins une information contenue dans la mémoire non volatile de la carte. Les systèmes connus basés sur l'utilisation de telles cartes à microcircuit ont fréquemment recours au second cas pour initier des modifications de la mémoire non volatile d'une carte en fonction du contexte dans laquelle cette carte est utilisée. Un exemple (bien entendu non limitatif) est l'utilisation d'une telle carte comme porte-monnaie électronique, la carte jouant notamment le rôle de stockage du solde courant du porte-monnaie. Dans cet exemple, il arrive que l'usager veuille recharger son solde. Classiquement, un tel rechargement est une opération initiée par un système extérieur à la carte à microcircuit; par exemple une borne de rechargement à laquelle l'usager présente sa carte à microcircuit. L'usager choisit le montant à recharger et la borne de rechargement transmet la demande de rechargement à la carte à microcircuit, cette demande comportant tous les éléments nécessaires au bon rechargement (par exemple: valeur du crédit de monnaie, signature du message). Si le message est accepté par la carte à microcircuit, le nouveau solde sera celui déterminé par la borne de rechargement. Dans cet exemple, la modification du solde de la carte à microcircuit correspond en réalité à une modification de sa - 2 - mémoire non volatile. Cette modification a bien été initiée par le système extérieur à la carte. Pour arriver à un tel résultat, le terminal doit pouvoir lire des données provenant de la carte à microcircuit et doit pouvoir transmettre des données à cette même carte. Classiquement, la sécurité des opérations est assurée par des calculs cryptographiques opérant sur des échanges de type challenge-réponse et apportant authentification mutuelle et/ou signature des données échangées. Un tel procédé pour la modification de la mémoire non volatile d'une carte à microcircuit est bien adapté aux cartes à microcircuit communiquant directement, au moyen d'une interface électrique ou radio, avec un terminal habilité à opérer une telle modification. En effet, pour des raisons de sécurité, la carte n'acceptera la modification demandée par le terminal qu'à la condition que ledit terminal apporte une preuve, sous la forme d'un certificat cryptographique, de son habilitation à demander une telle modification. D'une manière générale un tel terminal est doté de secrets cryptographiques, ou est connecté par un réseau informatique à un serveur qui dispose de tels secrets, afin d'effectuer les calculs nécessaires à la constitution des preuves cryptographiques exigées par les cartes devant être modifiées. Cette solution engendre des échanges de données assez importants en volume entre la carte et le terminal. En conséquence, pour modifier le contenu d'une carte, et en particulier pour procéder à des opérations visant à augmenter la valeur de la carte, il est nécessaire d'établir une communication bidirectionnelle directe entre la carte et un terminal habilité. Outre la difficulté de déployer, à l'intention des usagers, des terminaux habilités, présents dans les locaux de l'opérateur du service ou connectés à un serveur de l'opérateur via un micro-ordinateur, cette solution n'est pas satisfaisante dans le cas où l'usager n'aurait pas accès à un tel terminal. Ce cas se présente - 3 - fréquemment en dehors des horaires d'ouverture des bureaux de l'opérateur de service ou lorsque l'usager ne dispose pas de micro-ordinateur équipé d'un lecteur de carte à microcircuit ou encore lorsque l'usager n'a pas le temps matériel d'accéder à l'une des deux possibilités précédentes. La présente invention propose d'apporter une solution au problème exposé en permettant au porteur d'une carte à microcircuit de procéder de façon sécurisée aux modifications nécessaires de la mémoire non volatile de sa carte en utilisant un terminal lecteur de cartes à microcircuits portable doté d'un clavier et d'un transducteur sonore capable d'émettre des informations par la voie acoustique. Le système mettant en oeuvre le procédé de l'invention comprend en outre un serveur de gestion et une interface d'accès à ce serveur de gestion de type site Internet ou serveur vocal interactif. L'un des buts du procédé de l'invention est de conserver le principe d'une carte dont la mémoire non volatile n'est modifiable qu'après la vérification de preuves cryptographiques, ceci à des fins de sécurité. Un autre but du procédé de l'invention est de réaliser la modification de la mémoire non volatile d'une carte à microcircuit en limitant la quantité d'information à fournir à la carte pour exécuter la modification. L'une des caractéristiques du procédé de l'invention est qu'une liste finie des modifications possibles de la mémoire non volatile de la carte à microcircuit est établie par la carte elle-même. Une autre caractéristique du procédé de l'invention est qu'il consiste à faire interpréter par un serveur distant la liste transmise des modifications possibles préalablement établie par la carte. Avantageusement, le procédé de l'invention prévoit que la liste des modifications possibles établie par la carte est - 4 - chiffrée avant transmission par la carte elle-même à l'aide d'une clé cryptographique secrète. D'une façon caractéristique de l'invention, ce procédé comporte les étapes suivantes: a) l'insertion par l'utilisateur de la carte à microcircuit dans le terminal portable, b) la génération par la carte à microcircuit: d'une liste de modifications possibles de sa mémoire non volatile, - d'une clé cryptographique secrète unique non prédictible et d'une référence de cette clé permettant à une autorité cryptographique de calculer ladite clé. c) la génération et la mémorisation par la carte à microcircuit d'un code numérique aléatoire court associé à chaque modification présente dans la liste de modifications établie à l'étape b), d) le chiffrement par la carte à microcircuit, à l'aide de calculs cryptographiques utilisant la clé secrète, de la liste de modifications et des codes générés aux étapes b) et c). Les informations chiffrées constituant un message crypté, e) la transmission par le terminal portable au serveur distant par des moyens, au moins pour partie, acoustiques, au moins du message crypté et de la référence en clair de la clé générée à l'étape b), f) le déchiffrement par le serveur distant du message crypté en calculant la clé à l'aide de la référence de clé, g) l'interprétation par le serveur distant de la liste de modifications déchiffrée et la proposition à l'utilisateur, au moyen d'un menu, d'un choix de modifications possibles à exécuter, h) la transmission du choix fait par l'utilisateur au serveur distant, - 5 - i) la communication à l'utilisateur par le serveur distant d'un code numérique court correspondant à la modification demandée, j) la saisie par l'utilisateur du code numérique sur le 5 clavier du lecteur de carte à microcircuit, k) la comparaison par la carte du code saisi et du code correspondant mémorisé. Si les codes sont égaux, l'exécution de la modification de la mémoire non volatile choisie par l'utilisateur et émission par le terminal portable d'un signal sonore ou visuel indiquant à l'utilisateur la bonne exécution. On peut prévoir que si à l'étape k) le code saisi par l'utilisateur n'est pas égal au code initialement mémorisé par la carte, aucune modification de la mémoire non volatile de la carte à microcircuit n'est réalisée et le terminal portable émet un signal sonore ou visuel différent pour indiquer à l'utilisateur la non-égalité des codes. On peut également prévoir que, en cas d'échec dans la comparaison des codes, l'utilisateur peut répéter la saisie du code un nombre fini de fois défini dans les paramètres de la carte à microcircuit et que si le nombre maximal de saisies du code est atteint, la carte annule la procédure entamée aux étapes a) à d) et s'interdit d'en démarrer une nouvelle. D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description d'un exemple de mise en oeuvre de l'invention. Exemple On se propose de réaliser une application de monétique à l'aide d'une carte à microcircuit, porte-monnaie électronique rechargeable, le rechargement s'effectuant à l'aide d'un serveur vocal interactif. L'application peut servir par exemple à - 6 - s'acquitter de taxes de stationnement dans une zone urbaine équipée d'horodateurs à carte à microcircuit. Afin de limiter la description à la mise en oeuvre du procédé en question, on suppose dans le texte qui suit que les cartes et la base de donnée du serveur ont été correctement personnalisées dans une phase de mise en place de l'application et des éléments qui la composent. On ne détaillera pas ici la gestion de toutes les données cryptographiques nécessaires à l'algorithme de génération de clés, celle-ci est largement documentée, notamment dans la littérature normative correspondante. La carte stocke en mémoire non volatile un compteur d'unités de monnaie variant entre 0 et 100 inclus. La valeur 0 correspondant à un portemonnaie vide, la valeur 100 correspondant au nombre maximum d'unités que peuvent stocker les cartes. Chaque carte est unique et est identifiable par un numéro de série NS luimême unique. Chaque utilisation de la carte pour effectuer un achat consiste à insérer la carte dans un terminal et à lui faire décrémenter, à l'aide d'un jeu de commandes adapté dont les détails sortent du cadre de cette description, le compteur d'unités de celle-ci en échange de marchandises ou de services. À tout instant le solde d'unités de la carte se situe entre les valeurs 0 et 100, le solde négatif étant interdit par l'application. Le rechargement de la carte consiste globalement à incrémenter le compteur d'unités stocké dans la mémoire non volatile de la carte en échange du paiement des unités crédités par un moyen de paiement de type carte bancaire ou prélèvement sur un compte bancaire. Le rechargement s'effectue par lots de 20, 50 30 ou 100 unités. Les utilisateurs de l'application disposent d'un terminal portable lecteur de cartes à microcircuit doté en outre d'un clavier, d'une LED multicolore et d'un transducteur acoustique - 7 - capable de produire une modulation analogue à celle d'un modem acoustique. Les seules opérations qu'il est prévu d'effectuer à l'aide de ce dispositif sont des opérations de rechargement du porte-monnaie électronique. Par ailleurs, les utilisateurs sont informés de l'existence d'un serveur vocal interactif de rechargement accessible par simple appel téléphonique. Le numéro d'appel pouvant par exemple être imprimé au dos des cartes de l'application. Le déroulement des opérations de rechargement est le 10 suivant: 1) la carte est insérée par l'utilisateur dans le terminal portable. Le terminal procède à la mise sous tension de la carte comble définie dans la norme ISO 7816-3 puis envoie une série de commandes spécifiques à la carte lui demandant de générer les 15 éléments nécessaires à la préparation du rechargement, à savoir: trois indicateurs logiques binaire In donnant la disponibilité de chacun des 3 types de rechargement possibles en fonction du solde courant contenu dans la mémoire de la carte, à savoir +20 (Io), +50 (I1) ou +100 unités (I2) . Ainsi, si le solde est égal à 0, les trois types de rechargement sont possibles et Io = Il = I2 = 1, si le solde est supérieur à 0 et inférieur ou égal à 50 seuls les rechargements de 20 et 50 unités sont possibles Io = I1 = 1, I2 = 0, si le solde est supérieur à 50 et inférieur ou égal à 80 seul le rechargement de 20 unités est possible et Io 1, I1 = I2 = 0, si le solde est supérieur à 80, aucun rechargement n'est possible et Io = I1 = I2 = O. Ces informations sont mémorisées par la carte. 25 30 - 8 - un code numérique C aléatoire à 4 chiffres associé à chacune des opérations de rechargement. Co, Cl, C2 sont ainsi respectivement associés aux rechargements de +20, +50 et +100 unités. une clé cryptographique unique K et sa référence RK. L'algorithme utilisé (exemple non limitatif) est celui défini par la norme ANSI X9.24 sous le nom de DUKPT (Derived Unique Key Per Transaction). Une fois ces éléments générés par la carte, celle-ci utilise la clé K pour chiffrer une la liste des indicateurs I et des codes Cn et transmet au terminal portable son numéro de série unique NS, la liste chiffrée et la référence de clé RK. Avantageusement, la clé K n'est pas transmise et est détruite après l'opération de chiffrement. L'ensemble des informations envoyées au terminal est stocké dans la mémoire non volatile. Plus précisément, la carte génère une première suite d'octets constituée de 3 groupes de 3 octets correspondant à chacune des modifications possibles. Chacun de ces groupes est constitué de la manière suivante: Octet 0: In, vaut 1 si la modification est possible, 0 sinon. Octet 1 et 2: les 4 chiffres du code aléatoire Cn associé à la modification codés par 4 digits hexadécimaux. Cette première suite de 9 octets est convenablement paddée (c'est à dire éventuellement complétée par des valeurs constantes pour respecter les conventions de l'algorithme de chiffrement), puis chiffrée par la carte à l'aide de l'algorithme de chiffrement du type Triple DES (exemple non limitatif) et de la clé K générée par l'algorithme DUKPT. De ce même algorithme DUKPT résulte la référence RK de la clé générée, correspondant au compteur de transaction défini par la norme. On appelle MK le message chiffré ainsi obtenu. Le message MK et la référence de clé RK sont stockés dans la mémoire non volatile de la carte. - 9 - Le numéro de série unique NS de la carte, le résultat MK du chiffrement et la référence RK de la clé utilisée sont ensuite concaténés pour former une seconde suite d'octets qui est alors transmise par la carte au terminal portable. Une fois ces données reçues par le terminal portable, celui-ci signale à l'utilisateur par le biais de sa LED multicolore qu'il est prêt à les transmettre par voie acoustique. 2) L'utilisateur compose le numéro d'appel du serveur vocal interactif dédié à l'opération de rechargement des cartes. Le serveur vocal interactif diffuse, à l'intention de l'utilisateur, un message d'accueil l'invitant à presser une touche du clavier de son terminal portable dédiée au déclenchement de l'émission acoustique et à présenter simultanément ledit terminal portable devant le microphone du combiné téléphonique de sorte que la modulation produite par le transducteur sonore du terminal parvienne au serveur. Parallèlement à la demande transmise à l'utilisateur, le serveur vocal interactif enclenche un mécanisme d'écoute et de démodulation des signaux acoustiques reçus. Une fois que la séquence sonore transmise par le terminal portable est correctement démodulée par le serveur vocal interactif, celui-ci utilise le numéro de série unique NS et la référence RK de la clé cryptographique utilisée par la carte et transmis en clair pour dans un premier temps recalculer, à partir d'informations présentes dans sa base de donnée, la clé K et déchiffrer la partie chiffrée MK du message. Le serveur interprète alors les données déchiffrées et propose à l'utilisateur, selon les possibilités ainsi indiquées par la carte et par le biais d'un menu vocal, le choix des modifications possibles. Ceci est un exemple non limitatif; par exemple une autre possibilité est que le serveur filtre certaines possibilités qu'il interprète lui-même comme étant impossibles. À chaque choix proposé, le serveur associe une touche du clavier du - 10 - combiné téléphonique et l'indique à l'utilisateur. Il prononce par exemple les phrases: Tapez un pour charger 20 unités , Tapez deux pour charger 50 unités , Tapez trois pour charger 100 unités . L'utilisateur indique son choix au serveur par le biais du clavier du combiné téléphonique. En retour, le serveur demande à l'utilisateur de présenter un moyen de paiement, les coordonnées de sa carte bancaire ou un 10 identifiant pour un paiement par prélèvement. Après validation du paiement des unités ainsi achetées, le serveur vocal interactif prononce à l'intention de l'utilisateur, un index correspondant à la sélection choisie puis le code associé à la modification et envoyé par la carte dans le message chiffré. Si par exemple le code généré par la carte pour un chargement de 20 unités est 3 7 8 2 , il prononce à l'intention de l'utilisateur, après déchiffrement et traitement des informations reçue, Pour effectuer le chargement de votre carte, veuillez saisir sur le clavier de votre terminal portable les chiffres suivants et valider: zéro, trois, sept, huit et deux . Avantageusement, le serveur mémorise également les différentes opérations effectuées dans sa base de données dans un enregistrement associé au numéro de série unique NS de la carte. 3) L'utilisateur saisit alors le code sur le clavier de son terminal portable et presse une touche de validation. Un dialogue s'établit alors entre le terminal portable et la carte. Les chiffres saisis sont communiqués par le terminal à la carte par le biais d'un jeu commande spécifique reconnu par la carte. Dès qu'elle a pris connaissance des chiffres saisis au clavier du terminal portable par l'utilisateur, la carte: i) vérifie qu'un compteur de tentative de présentation de codes n'a pas atteint sa valeur maximale - 11 - autorisée. Si cela est vrai (max non atteint) la carte passe en ii) sinon passe en vii) ii) vérifie si l'index (ici 0, 1 ou 2) de la modification choisie correspond bien a une modification préalablement identifiée comme possible et, en cas d'impossibilité passe en v) sinon poursuit en iii). iii) compare le code saisi avec celui mémorisé correspondant à la modification choisie et, en cas d'inégalité passe en vi) sinon poursuit en iv) iv) effectue la modification choisie, c'est à dire augmente le solde du porte-monnaie de la valeur sélectionnée et achetée par l'utilisateur, puis écrit la valeur 0 à l'emplacement des indicateurs In ce qui aura pour effet d'inhiber toute action d'une éventuelle nouvelle saisie au clavier, puis retourne au terminal un message d'information indiquant la bonne fin de l'opération. À l'issue des ces opérations la carte n'accepte plus aucune commande de la part du terminal et passe à vii). v) cas où l'opération n'est pas possible: la carte retourne au terminal un message indiquant que la demande n'a pas pu être prise en compte afin que celui-ci puisse le signaler à l'utilisateur par le biais de sa LED multicolore, puis passe en vii). vi) cas où le code saisi est erroné : la carte incrémente le compteur de présentation de codes erronés, en informe le terminal par un message et passe en vii) vii) attend indéfiniment d'être retirée du terminal portable et d'être ainsi mise hors tension. - 12 - Dans l'hypothèse où l'utilisateur reprend le processus de transmission vers le serveur avec une carte qui aurait déjà commencé un tel processus mais pour laquelle ni un code correct, ni un nombre excédentaire de codes erronés auraient été présentés, avantageusement la carte répète au serveur, par le biais du terminal portable, les mêmes informations que précédemment transmises, y compris la référence RK de la clé K qui reste inchangée. Le serveur, recevant ces mêmes informations et constatant qu'il s'agit d'une répétition, répète à son tour et sans exiger un nouveau paiement le code à saisir pour effectuer le rechargement. Ce principe permet à l'utilisateur de redemander au serveur le code dont il a besoin en cas de mauvaise compréhension de sa part lors de la transmission initiale. Selon une variante de l'application le serveur vocal interactif est remplacé par un serveur web Internet et la séquence acoustique générée par le terminal portable lui est transmise par le biais d'un microphone connecté à l'ordinateur du client, la démodulation du signal sonore pouvant alors être réalisée localement sur l'ordinateur du client, les informations ainsi déduites de la démodulation étant transmises classiquement au serveur par les protocoles Internet en usage tels que HTTP et SSL. Selon d'autres variantes de l'application, les informations modifiées dans la mémoire non volatile de la carte sont d'autres types d'informations communément stockées dans les cartes à microcircuits. En particulier, le procédé de modification de la mémoire d'une carte à microcircuit s'applique également, de manière non limitative, au renouvellement de forfaits à durée limitée donnant accès à des services tels que l'on peut les rencontrer dans le domaine des transports en communs ou du stationnement. - 13 - REVENDICATIONS 1. Un procédé pour modifier de manière sûre le contenu de la mémoire non volatile d'une carte à microcircuit, dans lequel la carte est temporairement insérée par un utilisateur dans un terminal portable doté notamment d'un clavier et d'un transducteur acoustique et dans lequel le terminal et un serveur distant communiquent, au moyen d'une modulation acoustique dans le sens terminal vers serveur et au moyen d'informations transmises par le serveur distant à l'utilisateur et saisies au clavier du terminal, dans le sens serveur vers terminal. Procédé caractérisé en ce qu'il comporte les 15 étapes suivantes: a) l'insertion par l'utilisateur de la carte à microcircuit dans le terminal portable, b) la génération par la carte à microcircuit: - d'une liste de modifications possibles de sa mémoire non 20 volatile, - d'une clé cryptographique secrète unique non prédictible et d'une référence de cette clé permettant à une autorité cryptographique de calculer ladite clé. e) la génération et la mémorisation par la carte à microcircuit d'un code numérique aléatoire court associé à chaque modification présente dans la liste de modifications établie à l'étape b), f) le chiffrement par la carte à microcircuit, à l'aide de calculs cryptographiques utilisant la clé secrète, de la liste de modifications et des codes générés aux étapes b) et c). Les informations chiffrées constituant un message crypté, g) la transmission par le terminal portable au serveur distant par des moyens, au moins pour partie, acoustiques, au moins - 14 - du message crypté et de la référence en clair de la clé générée à l'étape b), f) le déchiffrement par le serveur distant du message crypté en calculant la clé à l'aide de la référence de clé, g) l'interprétation par le serveur distant de la liste de modifications déchiffrée et la proposition à l'utilisateur, au moyen d'un menu, d'un choix de modifications possibles à exécuter, h) la transmission du choix fait par l'utilisateur au serveur distant, i) la communication à l'utilisateur par le serveur distant d'un code numérique court correspondant à la modification demandée, j) la saisie par l'utilisateur du code numérique sur le clavier du lecteur de carte à microcircuit, k) la comparaison par la carte du code saisi et du code correspondant mémorisé. Si les codes sont égaux, l'exécution de la modification de la mémoire non volatile choisie par l'utilisateur et émission par le terminal portable d'un signal sonore ou visuel indiquant à l'utilisateur la bonne exécution. 2. Le procédé de la revendication 1, dans lequel si à l'étape k) le code saisi par l'utilisateur n'est pas égal au code initialement mémorisé par la carte, aucune modification de la mémoire non volatile de la carte à microcircuit n'est réalisée et le terminal portable émet un signal sonore différent pour indiquer à l'utilisateur la non-égalité des codes. 3. Le procédé des revendications 1 et 2, dans lequel en cas d'échec l'utilisateur peut répéter la saisie du code un nombre fini de fois défini dans les paramètres de la carte à microcircuit. - 15 - 4. Le procédé des revendications 1 à 3, dans lequel si le nombre maximal de saisies du code est atteint, la carte annule la procédure entamée aux étapes a) à d) et s'interdit d'en démarrer une nouvelle. 5. Système pour la mise en uvre du procédé selon les revendication 1 à 4, comprenant un serveur accessible à distance par un réseau de communication, une carte à microcircuit, un terminal portable, lecteur de cartes à microcircuit, doté notamment d'un clavier et d'un transducteur acoustique permettant la transmission d'informations de la carte vers le serveur.