FR 2749413 A1 19971205 FR 9606705 A 19960531 PROCéDA DE STOCKAGE DES UNITÉS DE VALEUR DANS UNE CARTE A PUCE DE FAÇON SÉCURISÉE ET SYSTENE DE TRANSACTION MONÉTAIRE AVEC DE TELLES CARTES. La présente invention se rapporte aux procédés qui permettent de stocker de façon sécurisée des unités de valeur dans une carte à puce et aux systemes de transaction monétaire utilisant ces cartes. L'invention s'applique plus particulièrement à des cartes à puces comportant une zone mémoire de type EEPROM non protégée. En effet, une zone EEPROM non protégée d'une carte est accessible par tout individu disposant d'un simple lecteur de carte et de commandes de lecture et écriture en mémoire. Ce type de zone mémoire ne permet pas d'enregistrer des données sensibles puisque n'importe qui peut les lire et les modifier. Le procédé s'applique également à des cartes à puce à mémoire protégée afin d'en élever le niveau de sécurité. Les cartes à microprocesseurs sont capables de contenir des unités de valeur et d'en interdire l'accès. Seul le système d'exploitation de la carte peut accéder à ces unités et en augmenter ou en diminuer le nombre. Des commandes sécurisées et gérées par le système d'exploitation permettent donc la gestion de la zone contenant les unités de valeur, permettant l'utilisation de ces unités de valeur ainsi que leur rechargement en toute sécurité. Une carte à mémoire ne comporte ni microprocesseur, ni à fortiori de système d'exploitation mais simplement quelques commandes permettant l'accès aux zones mémoire de la carte. Néanmoins, certaines zones de la carte peuvent avoir des caractéristiques permettant le stockage sécurisé d'unités de valeur. C'est le cas de certaines cartes à mémoire possédant une zone protégée par un code secret. Seul un terminal de paiement possédant ce code secret pourra accéder à la zone contenant les unités de valeur et pourra modifier le nombre d'unités avec des commandes d'écriture en mémoire. Par définition, un fraudeur ne connaît pas le code secret, il n'est donc pas capable de recharger une carte en unités de valeur. D'autres caractéristiques liées à la carte peuvent permettre un stockage sécurisé d'unités de valeur. Dans l'état de la technique connu, les mécanismes de base existant sont l'utilisation d'un certificat d'intégrité, d'un compteur de transaction ainsi que d'une zone de copie. Ces mécanismes vont être détaillés dans la suite. Dans le cas des cartes à microprocesseur, ces mécanismes de base peuvent être inclus dans les systèmes d'exploitation. Ces mécanismes peuvent également être appliqués sous forme de note d'application ou de recommandation d'application aux cartes à microprocesseur et à certaines cartes à mémoire de type synchrone. Une note d'application ou de recommandation décrit les mécanismes à mettre en oeuvre au niveau de la carte et du terminal et définit la façon dont le terminal doit utiliser la carte. On entend plus précisément par note d'application, une définition particulière de l'état de la mémoire dans la carte et dans le terminal, appelée "mapping" en terminologie anglosaxonne, ce mapping étant obtenu par un logiciel informatique tenant compte de la note d'application. Le mécanisme à mettre en oeuvre consiste à inclure dans le calcul de ce certificat une donnée variant à chaque transaction. On entend par transaction une modification du nombre d'unités de valeur d'une carte. Mécanisme 1 Un premier mécanisme en oeuvre est l'utilisation d'un certificat associé au nombre d'unités. Ce certificat garantit l'intégrité des informations auxquelles il se rapporte. Un terminal d'une application de paiement peut lire le nombre d'unités de valeur présentes dans une carte à puce. Le certificat présent dans la carte et associé au nombre d'unités de valeur stockées doit être lu et vérifié. Ce certificat est calculé à l'aide d'une fonction mathématique. Il se calcule à partir du nombre d'unités présentes dans la carte, de données identifiant la carte et avec un secret seulement connu par le terminal. Le terminal est donc capable de vérifier ou de calculer un tel certificat. Une autre solution consiste à partager le secret entre les cartes et un serveur central. Les terminaux de l'application devront donc se connecter au serveur pour toute vérification. Si le certificat est correct, le nombre d'unités de valeur présentes dans la carte est considéré comme valide. Mécanisme 2 Ce mécanisme consiste à inclure dans le calcul de ce certificat une donnée variant à chaque transaction. L'introduction de cette donnée qui peut être un compteur de transaction permet de garantir que l'on a un certificat différent à chaque fois. Une carte possède un nombre d'unités de valeur à un instant t donné. A l'instant t+n, c'est-à-dire après un certain nombre n de transactions, si cette carte contient de nouveau le même nombre d'unités de valeur qu'à l'instant t, le certificat associé sera malgré tout différent. Il faut bien sûr que la valeur du compteur de transaction soit modifiée à chaque transaction. Mécanisme 3 Ce mécanisme consiste à dupliquer les informations sensibles avant le déroulement d'une transaction. Les données dupliquées sont stockées dans la carte, dans la mémoire EEPROM non protégée. La mémoire EEPROM non protégée est donc divisée en deux zones que nous appellerons dans toute la suite zone active et zone de copie. Ces deux zones comportent un nombre d'unités de valeur et le certificat correspondant. En cas d'arrachement de la carte, si les données en cours de modification dans la zone active sont corrompues ou altérées, les données dupliquées dans la zone de copie seront récupérées et transférées dans la zone active. La carte demeure ainsi dans un état stable. En cas d'arrachement de carte, le certificat présent dans la zone de copie doit correspondre à la valeur du compteur de transaction de la carte. Ceci permet de vérifier l'authenticité du certificat de la zone de copie et donc l'intégrité du nombre d'unités de valeur de la zone de copie. C'est pourquoi, le compteur de transaction de la carte doit être modifié en fin de transaction. Toutes ces sécurités n'empêchent pas malheureusement certaines fraudes que l'on va expliciter dans ce qui suit ler cas de fraude Dans le cas d'unités de valeur présentes dans une zone mémoire non protégée par la puce de la carte, la fraude consiste à modifier le nombre d'unités présentes dans la carte et à essayer différentes valeurs de certificat. Un fraudeur ayant un petit nombre d'unités présentes dans la carte va donc le remplacer par le nombre maximum d'unités que peut contenir sa carte. Dans ce cas précis, aucun mécanisme n'empêche de modifier le contenu de la zone mémoire de la carte, la carte ne possédant pas de zone protégée. Puis le fraudeur va inscrire dans la carte, en lieu et place du précédent certificat une valeur aléatoire. Étant donné les faibles capacités mémoire des composants utilisés, les certificats sont enregistrés sur quelques bits. La probabilité de trouver par hasard le certificat correspondant au nombre d'unités de la carte est élevée. La carte ne peut être considérée d'un point de vue cryptographique comme un porte-unités de valeur sécurisée. Cette fraude permet de recharger illégalement une carte en unités de valeur. 2ième cas de fraude Dans le cas d'un débit d'unités de valeur dans la carte, et en cas d'arrachement, la carte se retrouve avec une zone active éventuellement corrompue et une zone de copie contenant un certain nombre d'unités de valeur. De plus, la zone de copie contient le nombre d'unités de valeur précédant le débit. Puisqu'il s'agit d'une interruption de transaction, le compteur de transaction peut ne pas avoir encore été modifié. La zone mémoire contenant les unités de valeur n'étant pas protégée contre les modifications, un fraudeur peut transférer le contenu de la zone de copie dans la zone active. Le contenu de la zone de copie est valide puisque son certificat correspond toujours à la valeur du compteur de transaction. Cette fraude permet de récupérer des unités de valeur utilisées. 3ième cas de fraude Un fraudeur peut également lire le contenu de sa carte avant une transaction. Il inscrit le contenu de la zone active sur une feuille de papier sans même en comprendre la signification. Puis il exécute une transaction. En cas d'arrachement de carte, la transaction ne sera pas achevée. La valeur du compteur de transaction de la carte ne sera pas modifiée. Le fraudeur pourra simplement réécrire dans la zone active de sa carte les données inscrites sur sa feuille de papier. Cette fraude permet également de récupérer des unités de valeur utilisées. La présente invention permet de remédier à ces problèmes. La présente invention a pour objet un procédé de stockage d'unités de valeur dans une carte à puce pour la réalisation de transactions à partir d'un terminal, la carte comprenant une mémoire non volatile de type EEPROM comportant, une zone active susceptible de contenir des informations relatives au nombre d'unités de valeur de la carte pour une application donnée et un certificat calculé, notamment à partir de ce nombre, d'une fonction mathématique et d'une donnée qui varie à chaque transaction, et comportant également une zone de copie destinée à contenir des informations de sauvegarde de la zone active, principalement caractérisé en ce que l'enregistrement des informations dans la zone active et dans la zone de copie à la suite d'une transaction n'est opéré qu'après avoir effectué une opération de chiffrement sur ces informations, les informations chiffrées étant alors enregistrées dans ces zones. Selon une autre caractéristique l'opération de chiffrement est réalisée au moyen d'un algorithme de chiffrement EK et d'une clé secrète K par le terminal de transaction. Selon une autre caractéristique, l'information représentative du nombre d'unités de valeur et l'information du solde d'unités de valeur correspond à un codage sur un premier nombre variable de bits, et l'information représentative du certificat est codée sur un second nombre de bits variable, le nombre total de bits des deux codages étant constant. Ainsi, le codage consiste à prendre comme valeur pour le nombre d'unités de valeur de la carte, un nombre maximal d'unités de valeur défini pour l'application donnée, moins le nombre d'unités de valeur de la carte, le terminal de transaction étant apte à déterminer le nombre d'unités de valeur de la carte en soustrayant au nombre maximal le code lu dans la carte. Selon une autre caractéristique, le procédé consiste globalement à calculer un certificat dans une zone active en utilisant une première fonction, et à calculer le certificat dans une zone de copie, en utilisant une autre fonction. Ainsi, dans le cas où le certificat de la zone de copie serait copié dans la zone active, il ne serait plus valide. Plus précisément, le procédé consiste à - calculer à partir d'une première fonction mathématique FA, un premier certificat CA stocké dans la zone active et garantissant l'intégrité des points de cette zone; - calculer à partir d'une seconde fonction mathématique FB, un second certificat CB stocké dans la zone de copie et garantissant l'intégrité de cette zone. De préférence, le procédé comporte en outre les étapes consistant à - effectuer une première opération de chiffrement d'une donnée formée par le nombre d'unités de valeur et le premier certificat correspondant CA, - effectuer une seconde opération de chiffrement d'une donnée formée par le nombre d'unités de valeur et le second certificat correspondant CB, - enregistrer le résultat de la première opération de chiffrement dans la zone active de la mémoire et le résultat de la seconde opération de chiffrement dans la zone de copie. Afin d'éviter que le contenu de la zone active ne puisse être utilisé en cas d'arrachement, selon une autre caractéristique de l'invention, le calcul d'un premier certificat est réalisé à partir du nombre d'unités de valeur, mais aussi de la valeur d'un compteur de transaction. Au début d'une transaction, on calcule un certificat à partir du nombre d'unités de valeur présent dans la zone active et d'une valeur du compteur de transaction incrémentée à sa prochaine valeur, la donnée obtenue est chiffrée et enregistrée en zone de copie, le compteur de transaction est ensuite incrémenté à cette nouvelle valeur de sorte qu'à cet instant, le certificat de la zone active n'est plus en accord avec la valeur du compteur, seule la donnée de sauvegarde étant correcte. De cette façon, le terminal marque sans la carte le début d'une transaction. L'invention concerne également un système de transaction monétaire utilisant des cartes à puce comprenant une mémoire non protégée avec une zone active pour contenir des données relatives au solde de la carte et une zone de copie pour contenir des données de sauvegarde; les données de zone active et de sauvegarde étant stockées de façon sécurisée. D'autres avantages et caractéristiques de l'invention apparaîtront à la lecture de la description suivante qui est faite à titre illustratif et non limitatif et en regard des dessins sur lesquels - la figure 1, représente le schéma d'un système de transaction, - la figure 2, représente une structure des données de la mémoire 103 de carte à puce selon un exemple de réalisation, - la figure 3, représente les étapes relatives à une transaction mises en oeuvre par un terminal, - la figure 4, représente les étapes mises en oeuvre lors de la vérification de l'intégrité des données de la zone active ou de la zone de copie, - la figure 5, représente les étapes préalable à une transaction décrite en figure 3, - la figure 6, représente les étapes de mise à jour du solde après une transaction et la fin de la transaction. Ainsi, selon une première caractéristique de l'invention, on chiffre le contenu des zone active ZA et zone de copie ZC de la mémoire EEPROM non protégée 103 représentée sur la figure 1. Ce chiffrement est réalisé par un terminal 100 de l'application utilisant les cartes, à l'aide d'un algorithme de chiffrement EK et d'une clef du terminal K. Cette clef de chiffrement est connue par les terminaux acceptant les cartes de l'application. Un terminal sachant chiffrer saura également déchiffrer le contenu de la carte à partir d'un algorithme de déchiffrement DK. Un fraudeur connaissant les principes de l'invention détaillés dans la suite et qui tente d'augmenter le nombre d'unités de valeur d'une carte ne sera plus capable de fixer le nombre maximum d'unités de valeur. Il ne pourra qu'essayer de recharger aléatoirement sa carte. Il inscrira donc des données aléatoires dans la zone active de sa carte. Il existe une probabilité pour qu'en déchiffrant la zone active d'une carte modifiée aléatoirement, un terminal obtienne un nombre d'unités de valeur et le certificat correspondant. Mais le nombre d'unités de valeur obtenu peut être inférieur au nombre d'unités de valeur contenu précédemment dans la carte. La probabilité d'obtenir un nombre d'unités de valeur supérieur au nombre d'unités de valeur initialement présent dans la carte est d'autant plus faible que ce nombre d'unités de valeur initial est grand. Afin de rendre encore plus difficile la fraude consistant à trouver aléatoirement un certificat correspondant à un nombre important d'unités de valeur, on prévoit selon le procédé d'augmenter la taille du certificat. Plus la taille du certificat est grande, plus il est difficile de trouver la bonne valeur. Or, comme les tailles mémoires sont relativement faibles dans une carte à puce, il n'est pas possible d'avoir à la fois un grand nombre d'unités et un grand certificat. Pour résoudre ce problème on propose selon une caractéristique de l'invention, que le nombre d'unités de valeur enregistré dans la carte ne corresponde pas au nombre d'unités de valeur pour l'application, mais au nombre d'unités de valeur qui n'ont pas fait l'objet d'une transaction (zéro pour une carte pleine d'unités). Ce nombre est donc nul tant qu'aucune transaction n'a eu lieu. Ainsi, un nombre nul d'unités de valeur dans la carte correspond à la valeur maximale d'unités de valeur pour l'application. Et inversement, la valeur maximale d'unités de valeur dans la carte correspond à une valeur nulle d'unités de valeur pour l'application. Un terminal de l'application lisant le contenu d'une carte obtient le nombre d'unités de valeur en soustrayant au nombre d'unités de valeur maximal de l'application le nombre d'unités de valeur contenu dans la carte. De cette façon, lorsque la carte contiendra un zéro, cela correspondra à la valeur maximale. Un zéro dans la carte se code sur un seul bit. Ainsi, les bits restants de la zone de codage du nombre d'unités de valeur peuvent être utilisés pour contenir le certificat. Plus le nombre d'unités de valeur est grand, plus la valeur codée dans la carte est faible, donc plus la taille mémoire allouée au certificat est importante. Il est nécessaire d'indiquer aux terminaux la taille mémoire allouée au certificat pour chaque carte. Pour cela, cette taille est indiquée dans la zone mémoire EEPROM non protégée de la carte, avec le nombre d'unités de valeur et le certificat. Cette indication est présente dans la zone active et dans la zone de copie. Selon une autre caractéristique de l'invention le calcul du certificat de la zone active est réalisé de manière différente du calcul du certificat de la zone de copie. Il n'est alors plus possible de transférer le contenu de la zone active dans la zone de copie. Un terminal vérifiant une carte dont le contenu de la zone de copie a été transféré dans la zone active sera capable de constater la fraude. Le certificat que le terminal lira dans la zone active ne correspondra pas au calcul opéré dans le cas de la zone active, et correspondra au calcul opéré pour la zone de copie. Selon une autre caractéristique de l'invention, pour que le contenu de la zone active d'une carte ne puisse être réutilisé en cas d'arrachement de carte, le compteur de transaction de la carte est également modifié en tout début de transaction. La zone de copie est initialisée avec le nombre d'unités de valeur contenu dans la zone active et avec un certificat tenant compte de la prochaine valeur du compteur de transaction. Puis, le compteur de transaction est modifié à cette nouvelle valeur. A cet instant précis, le contenu de la zone active n'est plus réutilisable, le compteur de transaction ne correspond plus à son certificat. Par contre, la zone de copie est valide. Le compteur de transaction est de nouveau modifié en fin de transaction pour éviter que cette transaction ne puisse être refaite, comme indiqué précédemment. L'invention va maintenant être décrite dans le cas de l'application à un système de transaction monétaire, le terminal 100 étant un terminal monétaire et la carte 103, une carte porte-monnaie électronique. Selon un exemple préféré de réalisation, la structure de données de la mémoire 103 est telle que représentée sur la figure 2. Cette structure ou organisation est bien sûr donnée à titre d'exemple. D'autres organisations peuvent être adaptées tout en restant dans l'esprit de l'invention. La mémoire comporte des données d'identification comprenant - une valeur d'identification du circuit (circuit silicium) dans la zone Id circuit, - un code client dans la zone de référence émetteur de carte (organisme bancaire), - une donnée d'identification de l'application dans la zone Id Card (donnée par l'émetteur), - un numéro de série CSN de la carte (donné par exemple par le fabricant). La mémoire comporte une zone de compteurs comportant les champs suivants - un compteur de fraude incrémenté à chaque vérification d'un certificat s'avérant mauvais. Ce compteur est formé de 3 bits selon la réalisation pratique qui a été faite. - un compteur de transaction CTC. Dans un exemple de réalisation, ce compteur CTC est divisé en 5 sous-compteurs de 8 bits (cinq étages de comptage) avec un fonctionnement type boulier tel que décrit par exemple dans le brevet FR 93 10477 publié le 10 mars 1995 sous le NO 2 709 582. Les cinq sous-compteurs sont référencés Cl, C8, C64, C512, C4096. Les cellules mémoire de l'étage de comptage C1 ont un poids de 1, ... et celles de l'étage C8 ont un poids de 4096 = 84). Les quatre premiers étages sont du type effaçables, c'est-à-dire que l'on peut effacer des bits qui y sont inscrits et ensuite ré-écrire aux mêmes emplacements. Le cinquième étage C4096 est par contre à écriture uniquement. Seuls 4 bits de ce dernier étage sont utilisés pour le comptage. Parmi les 4 bits restants, 1 bit est utilisé comme fusible et les trois autres bits comme compteur de fraude. Deux bits sont grillés par transaction. Ainsi, ce type de compteur va permettre de compter 10239 transactions [7+7x8+7x82+7x83+4x84l/2. La mémoire comporte en outre - une zone certificat. Cette zone ne peut être effacée et sert à l'enregistrement de certification CER permettant l'authentification de la carte. Le certificat d'authentification est enregistré après la configuration du circuit pour l'utilisateur final et est vérifié par le terminal à chaque utilisation de la carte. Il est calculé par exemple à partir d'une donnée d'identification ID, d'une fonction à sens unique fop et d'une clé secrète suivant la formule CER = fop (ID, K) ID est par exemple le contenu des zones d'identification de carte, identification de circuit u de référence d'émetteur. - une zone utilisateur. Il s'agit de la zone active porte-monnaie électronique et de la zone de copie pour les sauvegardes. La zone active contient selon une caractéristique de l'invention une donnée chiffrée du solde Bal et du certificat correspondant Cert. L'information du solde d'unités de valeur correspond à un codage sur un premier nombre variable de bits, et l'information représentative du certificat est codée sur un second nombre de bits variable, le nombre total de bits des deux codages étant constant. La donnée chiffrée correspondant à une des deux zones du porte-unités peut s'écrire de la façon suivante = EK (Bal, Cert) Bal étant le nombre d'unités de valeur et Cert le certificat correspondant K étant la clé secrète du terminal la valeur chiffrée (donnée) la valeur non chiffrée EK l'algorithme de chiffrement. Le calcul du certificat permet d'assurer l'intégrité des données du porte-monnaie électronique. Les données suivantes sont utilisées dans le calcul - la valeur du solde, ce qui rend le certificat unique pour un solde donné, - des données permanentes de la carte, à savoir les données d'identification (carte et émetteur), - le compteur de transaction CTC. A chaque transaction deux bits sont grillés dans ce compteur CTC et le compteur peut uniquement être incrémenté ou uniquement décrémenté. Un bit est grillé au début d'une transaction, un deuxième bit est grillé à la fin de la transaction. Selon une des caractéristiques de l'invention, les certificats correspondant à un solde sont calculés pour le terminal de la façon suivante Cert A = FA (Bal, CSN, CTC) pour la zone active du porte-monnaie et Cert B = FB (Bal, CSN, CTC) pour la zone de copie du porte-monnaie. FA et FB étant des fonctions différentes détenues par le terminal. On pourra par exemple prendre comme fonction un algorithme DES utilisant une clé secrète k détenue par le terminal. Lors d'une transaction, l'enregistrement des informations relatives au solde et au certificat dans la zone de copie et dans la zone de sauvegarde se fait suivant le déroulement suivant - enregistrement du solde et de son certificat (présents dans la zone active) dans la zone de copie, - effacement de la zone active, - écriture du nouveau solde dans la zone active et de son certificat, - effacement de la zone de copie (effacement de la donnée de sauvegarde). Cet enchaînement permet d'éviter toute perte d'information en cas d'arrachement de la carte ou de coupure de courant. Les différentes étapes mises en oeuvre par le terminal lors d'une transaction sont représentées par les blocs fonctionnels de la figure 3. Le terminal lit le contenu de la zone active de la carte (porte-monnaie électronique PM) 150, laquelle comporte la donnée . Ball est le nombre d'unités de valeur initialement stockées dans la carte, et CertlA est le certificat initialement stocké dans la carte. Le terminal vérifie l'intégrité de ces données 201. Pour cela, il déchiffre cette donnée suivant les étapes 20 à 22 détaillées à la figure 4. Si le certificat qu'il a calculé correspond au certificat de la carte, alors la vérification a réussi. La transaction se poursuit 201, 202, 300. Le terminal met à jour le solde dans la carte et calcule une nouvelle donnée chiffrée 301 et 302. La mise à jour est réalisée suivant les étapes 30 à 35 illustrées sur la figure 6. Dans le cas où l'intégrité des données de la zone active n'est pas vérifiée, le terminal lit la zone de copie qui contient 203. Le terminal vérifie l'intégrité des données de sauvegarde 204 par déchiffrement de ces données en opérant les étapes 20, 21 et 22 de la figure 4 sur ces données. Si le certificat calculé est égal au certificat de cette zone Certl'B==Certlb, alors les données sont intègres, le terminal restaure cette donnée de sauvegarde dans la zone active qui ne contenait rien ou une donnée erronée 205. Dans le cas où les données contenues dans la zone de copie ne sont pas intègres, alors le terminal inscrit un bit dans la zone de fraude 206. Selon l'application, une ou plusieurs tentatives de fraude peuvent être acceptées avant de refuser définitivement la carte. Lorsque la zone de fraude est pleine, la carte est avalée. Le contrôle de la zone de fraude se fait lors d'une étape préalable à la transaction au tout début de l'initialisation de la transaction 50, 51, 52. La figure 5, illustre les étapes préalables 200, 201 et 202 à la mise en oeuvre d'une transaction. On pourra préférentiellement utiliser des fonctions différentes FA et FB pour le calcul des certificats. A l'étape 200 (ou 204), le terminal effectue les opérations developpées sur la figure 4. Le terminal opère le déchiffrement du contenu de la zone active (ou de copie). (20) Il calcule ensuite le certificat CertlA correspondant au solde (Ball) de cette zone. (21) Il opère la vérification d'intégrité. (22) A l'étape 201 - le terminal calcule le certificat (CertlB) pour la zone de sauvegarde; (23) il chiffre la donnée (Ball, CertlB); (24) il sauvegarde dans la zone de copie de la carte la valeur chiffrée. (25) A l'étape 202 - le terminal incrémente le compteur CTC; (26) - il efface le contenu de la zone active. (27) La figure 6, illustre les étapes de mise à jour du solde après du solde après une transaction (301) et la fin de la transaction (302). L'ancien solde Ball est modifié d'une valeur x (en plus ou en moins selon la transaction opérée) pour donner le nouveau solde Bal2 tel que Bal2 = Ball + x (30), x étant la valeur de la transaction. Le terminal calcule un nouveau certificat tenant compte de ce nouveau solde, et de la nouvelle valeur du compteur de transaction CTC+l Cert2A = FA(Bal2, Card Id, CTC+1) (31) Le terminal effectue le chiffrement de ces nouvelles données = EK(Bal2, Cert2A) (32) Le terminal enregistre dans la zone active de la carte cette nouvelle donnée chiffrée. (33) La zone de copie de la carte contient l'ancienne donnée, c'est-à-dire . Le terminal incrémente le compteur de transaction CTC de la carte en grillant un second bit pour valider la transaction. (34) Le terminal efface la zone de copie (35) et commande l'éjection de la carte. REVENDICATIONS 1. Procédé de stockage d'unités de valeur dans une carte à puce pour la réalisation de transactions à partir d'un terminal, la carte comprenant une mémoire non volatile de type EEPROM (103), comportant une zone active (ZA) susceptible de contenir des informations relatives au nombre d'unités de valeur de la carte pour une application donnée et un certificat calculé par le terminal, notamment à partir de ce nombre, d'une fonction mathématique et d'une donnée qui varie à chaque transaction, la mémoire comportant également une zone de copie (ZC) destinée à contenir des informations de sauvegarde de la zone active, caractérisé en ce que l'enregistrement des informations dans la zone active (ZA) et dans la zone de copie (ZC) à la suite d'une transaction n'est opéré qu'après avoir effectué une opération de chiffrement sur ces informations, les informations chiffrées étant alors enregistrées dans ces zones. 2. Procédé de stockage selon la revendications 1, caractérisé en ce que l'opération de chiffrement est réalisée au moyen d'un algorithme de chiffrement EK et d'une clé secrète K pour le terminal de transaction. 3. Procédé de stockage selon la revendication 1 ou 2, caractérisé en ce que l'information représentative du nombre d'unités de valeur et l'information du solde d'unités de valeur correspond à un codage sur un premier nombre variable de bits, et l'information représentative du certificat est codée sur un second nombre de bits variable, le nombre total de bits des deux codages étant constant. 4. Procédé de stockage selon la revendication 3, caractérisé en ce que le codage consiste à prendre comme valeur pour le nombre d'unités de valeur de la carte, un nombre maximal d'unités de valeur défini pour l'application donnée, moins le nombre d'unités de valeur de la carte, le terminal de transaction étant apte à déterminer le nombre d'unités de valeur de la carte en soustrayant au nombre maximal le code lu dans la carte. 5. Procédé de stockage selon l'une quelconque des revendications précédentes caractérisé en ce qu'il consiste à calculer un certificat dans une zone active en utilisant une première fonction (FA), et à calculer le certificat dans une zone de copie, en utilisant une autre fonction (FB). 6. Procédé de stockage selon la revendication 5, caractérisé en ce qu'il comporte les étapes consistant à: - calculer à partir d'une première fonction mathématique FA, un premier certificat CA stocké dans la zone active et garantissant l'intégrité des points de cette zone, - calculer à partir d'une seconde fonction mathématique FB, un second certificat CB stocké dans la zone de copie et garantissant l'intégrité de cette zone. 7. Procédé de stockage selon la revendication 6, caractérisé en ce qu'il comporte en outre les étapes consistant à - effectuer une première opération de chiffrement d'une donnée formée par le nombre d'unités de valeur et le le premier certificat correspondant CA, - effectuer un seconde opération de chiffrement d'une donnée formée par le nombre d'unités de valeur et second certificat correspondant CB, - enregistrer le résultat de la première opération de chiffrement dans la zone active de la mémoire et le résultat de la seconde opération de chiffrement dans la zone de copie. 8. Procédé selon l'une quelconque des revendications précédentes selon lequel le calcul d'un premier certificat est réalisé à partir du nombre d'unités de valeur, mais aussi de la valeur d'un compteur de transaction, caractérisé en ce que, au début d'une transaction, on calcule un certificat à partir du nombre d'unités de valeur présent dans la zone active et d'une valeur du compteur de transaction incrémentée à sa prochaine valeur, la donnée obtenue est chiffrée et enregistrée en zone de copie, le compteur de transaction est ensuite incrémenté à cette nouvelle valeur de sorte qu'à cet instant, le certificat de la zone active n'est plus en accord avec la valeur du compteur, seule la donnée de sauvegarde étant correcte. 9. Système de transaction monétaire utilisant des cartes à puce comprenant une mémoire non protégée avec une zone active pour contenir des données relatives au solde de la carte et une zone de copie pour contenir des données de sauvegarde, caractérisé en ce que les données de zone active et de sauvegarde sont stockées de façon sécurisée selon l'une quelconque des revendications précédentes.