FR 2805073 A1 20010817 FR 0001869 A 20000211 Ecriture en temps réel sécurisée pour mémoire non volatile La présente invention concerne potentiellement toute carte à puce, ou tout objet électronique portable équivalent, disposant d'une mémoire non volatile, par exemple une mémoire programmable et effaçable électriquement EEPROM ou une mémoire FLASH. cartes à puce (smart card) , dites egalement cartes à circuit intégré ou cartes à microcontrôleur, comme la plupart des objets électroniques portables équivalents, tels que calculettes, organiseurs, porte-monnaie électroniques, jeux électroniques, terminaux radiotéléphoniques, télécommandes, etc., stockent différents types d'information mémoire non volatile. Cependant, ce stockage de données soumis, notamment dans les applications à base de carte à puce, à différentes contraintes, telles que par exemple le temps d'écriture et la sécurité. Le temps d'écriture est dépendant du type de la mémoire. Il est relativement long lorsque la couche application dans la carte est soumise à de fortes contraintes temporelles comme par exemple au cours de transactions bancaires, ou dans des cartes à puce sans contact, etc. Dans bien des cas, les données confiées à la mémoire non volatile sont considérées sensibles par la couche application. Il importe donc que le processus d'écriture de ces données soit réalisé dans des conditions sûres. Tout problème constaté lors de l'écriture de ces données comme un échec d'écriture ou un défaut ou une indisponibilité de fonctionnement de la mémoire, doit être signalé notamment à la couche application qui prendra mesures nécessaires, telles qu'annulation de la transaction, invalidation de la carte, etc. Pour réaliser cette fonction d'ecriture, le système d'exploitation dans la carte à puce fournit un certain nombre de services, constituant des points 'entrée logiciels, dédiés à la gestion de la mémoire, qui sont appelés ci-après "driver". Le mot "application" désigne ci-après l'ensemble logiciel réalisant les fonctionnalités applicatives supportées par la carte au niveau de la couche application de celle-ci. Le driver rassemble des sous-programmes notamment d'écriture et lecture données contenus dans une couche de driver. La figure 1 est un diagramme temporel montrant, la gauche vers la droite, le déroulement classique d'un processus d'écriture dans une carte à mémoire demandé par l'application et exécuté le driver. Le processus d'écriture est généralement divisé en trois étapes : - une étape d'initialisation IN contrôleur assurant les fonctionnalités de commande en écriture et en lecture de la mémoire, en réponse à une requête d'écriture RE de l'application ; - une étape d'écriture EC pour écrire une donnée contenue dans la requête RE, dont la durée dépend des performances techniques du contrôleur de mémoire - une étape de vérification VE pour vérifier l'exactitude de la donnée écrite dans la mémoire ; la vérification consiste à lire dans la mémoire la donnée écrite à l'étape EC et à comparer la donnée lue avec la donnée initiale contenue dans la requête RE. Puis, le contrôle du processus d'écriture est rendu par le driver à l'application en lui transmettant une réponse de fin RF après que la dernière étape de vérification VE soit terminée. Sachant que l'ensemble du processus d'écriture est souvent relativement long en dépendance de la technologie utilisée pour la fabrication de la mémoire, les performances de l'application sont donc pénalisées. L'application est ainsi suspendue jusqu'à la fin du processus d'écriture, comme indiquée en SA entre deux tâches d'application successives TAl et TA2 dans la figure 1. Dans le domaine de l'informatique traditionnelle, l'écriture de données "en temps réel" est une solution classique qui permet l'exécution de l'écriture "en temps masqué" des données, 1 -à- dire sans bloquer le déroulement de l'application. Cette solution s'applique plus particulièrement aux moyens de stockage de type disquette ou disque Par contre, l'écriture "en temps masqué" des données est beaucoup plus difficile à mettre en oeuvre dans le cadre d'un système d'exploitation dedié à une carte à puce. Le système d'exploitation doit en général s'adapter à des environnements matériels pauvres notamment en terme de mémoire de type RAM. De ce fait, il est en général impossible de garder en mémoire la donnée à écrire en de la verification finale. L'invention vise à adapter à une carte à puce ou à un objet électronique portable équivalent le concept "d'écriture temps réel", sans perte de performance en ce qui concerne la sécurité du logiciel. A cette f in, un procédé pour écrire des données initiales contenues dans une requête d'écriture transmise par un moyen de traitement de données à un moyen de contrôle d'écriture-lecture d'une mémoire dans un objet électronique portable de type carte à puce, est caractérisé en ce qu'il comprend étapes suivantes : - ne transmettre un accusé de réception par le moyen de contrôle au moyen de traitement données immédiatement en réponse à la requête d'écriture que si le moyen de contrôle est disponible pour une écriture des données initiales dans la mémoire, - exécuter des tâches dans le moyen de traitement de données en réponse à l'accusé de réception simultanément à l'écriture des données initiales en des données écrites dans la mémoire, - mettre en attente jusqu'à la fin de l'écriture le moyen de traitement de données si celui-ci transmet une autre requête d'écriture avant la fin de l'écriture, et - n'accepter une autre requête d'écriture qu'après la fin de l'écriture des données initiales dans la mémoire par le moyen de contrôle. Ainsi, les tâches relatives à au moins une application dans le moyen de traitement de données, tel que le processeur dans l'objet électronique portable, sont exécutées en parallèle à l'écriture des données initiales dans la mémoire. Toutefois, une autre requête d'écriture transmise au driver dans le moyen de contrôle n'est servie que lorsque l'écriture des données initiales est arrivée à son terme. Cela signifie que l'accès aux services du driver est réalisé au travers d'un sémaphore contrôlant les acces au processus d'écriture dans le driver et capable de gérer des conflits entre requêtes d'écriture de retarder l'échéance de requêtes d'écriture ultérieures tant que le driver n'est pas reconnu comme disponible. La libération du driver est signalé à l'application développée dans le moyen de traitement de données par un moyen de détection de fin d'écriture fourni dans l'objet électronique portable pour décompter une durée prédéterminée sensiblement dès que l'accusé de réception est transmis et signaler la de l'écriture à l'expiration de la durée prédéterminée. Selon une autre réalisation, l'étape d'accepter une autre requête d'écriture accompagne la désactivation d'un moyen d'augmentation de tension interne à la mémoire. Le moyen de contrôle selon l'invention est également capable, conformément aux contraintes de sécurité, d'assurer un contrôle d'intégrité des données à écrire, c'est-à-dire une vérification de l'intégrité des données initiales comparativement aux données écrites intervenant entre l'écriture des données initiales et une lecture ultérieure des données écrites sous la commande du moyen de traitement de données. La vérification intervient soit juste apres l'écriture des données initiales, notamment avant l'étape d'accepter une autre requête d'écriture, soit après la fin de l'écriture, particulièrement juste avant la lecture ultérieure des données écrites. L'invention n'opère pas à la vérif ication dl intégrité des données initiales par simple lecture des données écrites et comparaison de celles-ci avec les données initiales lorsque les ressources en mémoire de 1 objet électronique portable, tel que carte à puce sont relativement limitées et ne permettent de stocker temporairement l'ensemble des données initiales au moment de leur écriture en mémoire. vérification d'intégrité selon l'invention peut alors comprendre une comparaison d'une signature des données initiales avec une signature données écrites lues. Chaque signature peut être deduite d'un codage à redondance cyclique des données correspondantes, ou résulter d'un hâchage des données correspondantes. L'occupation mémoire pour la verification est ainsi réduite à une signature de données nettement plus courte que les données elles-mêmes. Sachant que la vérification d'intégrité peut être coûteuse en temps pour le moyen de traitement de données, la vérification est opérée "en différé", sous forme d'une tâche de priorité minimale, de manière à ne pas interférer avec des processus sensibles, par exemple la gestion d'un protocole de communication au niveau de la couche application. Lors dl défaut d'intégrité des données écrites comparativement aux données initiales, un moyen de sécurité, qu'un gestionnaire logiciel de sécurité, peut être activé par exemple pour empêcher l'usage normal de l'objet électronique portable. L'exécution la vérification ne perturbe pas ainsi les tâches cours dans l'application, parfois ininterruptibles comme les processus liés aux protocoles communication par exemple. Pour garantir cette propriété, l'architecture logicielle du système d'exploitation dans le moyen de traitement de données s adapte à cette contrainte en utilisant un véritable noyau en temps réel simplifié capable d'arbitrer les priorités attribuées à chacune des tâches. D'autres caractéristiques et avantages de la presente invention apparaîtront plus clairement à la lecture de la description suivante de plusieurs réalisations préférées de l'invention en référence dessins annexés correspondants dans lesquels : - la f igure 1 est un diagramme temporel 'un processus d'écriture dans une mémoire selon la technique antérieure, déjà commentée ; - la f igure 2 est un bloc-diagramme schématique l'architecture matérielle d'une carte à puce ; - la f igure 3 est un diagramme temporel 'un processus d'écriture dans une mémoire selon l'invention ; - la figure 4 est un algorithme d'un processus d'ecriture selon une première réalisation de l'invention; et - la f igure 5 est un algorithme de processus dlecriture et lecture de données selon une deuxième réalisation de l'invention. En référence à la figure 2, un microcontrôleur constituant la "puce" d'une carte à puce CP, de tout objet électronique portable équivalent, comme un module à microprocesseur dit carte à puce SIM (Subscriber Identity Mobile) insérable dans un terminal radiotéléphonique, contient principalement et schématiquement une unité de traitement centrale CPU formée par un microprocesseur PÉ, une mémoire Mo de type ROM incluant un système d'exploitation OS de la carte éventuellement complété par un navigateur (browser) et des algorithmes d'application de communication et d'authentification spécifiques, une mémoire non volatile MNV de type EEPROM qui contient des données notamment liées au possesseur de la carte, comme un numéro d'identification personnel et un repertoire de noms, et une mémoire MA de type RAM destinée essentiellement au traitement des données à recevoir d'une station d'accueil de la carte tel qui terminal radiotéléphonique ou bancaire et à transmettre vers la station d'accueil. Tous les composants PR, MO, MNV et MA sont reliés entre eux par un bus interne BU. S'agissant de l'invention, la carte à puce comprend, en outre, un contrôleur CM pilotant la mémoire non volatile MNV pour établir des commandes, telles que écriture, lecture et effacement de données dans la mémoire, et pour adresser des cases la mémoire. Le contrôleur de mémoire CM interagit avec le processeur PR au fur et à mesure du déroulement dl application par l'échange de requêtes et réponses à travers le bus BU. En particulier le contrôleur CM contient ou est associé au moins partiellement à un driver DR, pilotant au moins le processus d'écriture et le processus de lecture dans la memoire MNV, à un vérificateur de signature et à détecteur de fin d'écriture DFE. Les éléments DR VS et CM sont réalisés sous forme matérielle ou logicielle ; si un élément est au moins sous forme logicielle, certaines de ces fonctionnalités peuvent être implantées dans la mémoire MO. Dans la figure 3, on retrouve un diagramme temporel, comparable à celui selon la technique antérieure dans la figure 1, où une application AP s'appuyant sur le système d'exploitation OS se déroule avec des tâches successives Tl, T2 et T3, de la gauche vers la droite. Il est supposé que l'application AP établit, vers la fin de la première tâche Tl, une requête d'écriture RE1 qui est ensuite délivrée au driver DR. L'application est développée simultanément au processus d'écriture dans le driver qui 'interrompt pas l'application comme dans la figure 1 et ainsi ne bloque pas le déroulement des tâches suivantes T2, T3 succédant à la tâche Tl dans l'application. figure 4 indique les étapes principales El à E7 qui sont rencontrées à la suite d'une requête d'écriture RE établie par l'application AP selon une première réalisation de l'invention. A la première étape El, le driver initie un processus d'écriture relatif à des données initiales DI contenues dans la requête RE, si le driver DR est libre de toute tâche d'écriture, comme indiqué en RE1 dans la figure 3 ; comme déjà dit, 1 application AP continue de se dérouler parallèlement au processus d'écriture. Le driver confirme le lancement imminent de 1 écriture à l'étape suivante E2, transmettant un accusé de réception AC à l'application. Par contre, comme indiqué à l'étape E3, si la requete d'écriture RE intervient cours du processus d'écriture, comme la requête RE2 vers le milieu de la tâche T2 ou comme la requête RE3 vers le début de la tâche T3 (figure 3), l'application AP est interrompue jusqu'à la fin du processus d'écriture en cours, signalée par un signal de fin d'écriture FE du détecteur DFE ; la requête RE1 ou RE2 est mise en attente par inscription de celle-ci dans une file d'attente du driver qui sera lue dès que le processus d'écriture en cours est terminé. Ainsi, si aux étapes du processus succédant aux étapes d'initialisation El et E2, la tâche suivante T2 ne nécessite aucune écriture, celle-ci sera exécutée sans interruption et sans être différée, comme selon la technique antérieure. Par exemple, une tâche T2 dans l'application AP consistant à envoyer une réponse vers une station d'accueil de la carte à puce ou à recevoir une requête depuis la station d'accueil n'est pas perturbée par le processus d'écriture en cours. A l'étape E2, simultanément à l'établissement de la réponse AC, le détecteur de fin d'écriture DFE est activé lorsque, selon une première variante, le détecteur de fin d'écriture DFE n'est inclus directement dans le contrôleur CM de la mémoire MNV et est sous la forme d'un décompteur (timer) d'une durée prédéterminée DP, c'est-à-dire un décompteur d'impulsion d'horloge. Pré-programmé à une durée prédéterminée spécifiée de l'écriture mémoire, le détecteur de fin d'écriture DFE est activé avec le contrôleur CM par le processeur PR à la suite de la requête REI. Selon une deuxième variante, le détecteur de fin d'écriture DFE est implémenté dans le contrôleur MC de la mémoire non volatile MNV embarqué sur le microcircuit. Dans cet exemple, l'arrêt du processus d'écriture marque par la réinitialisation de registres et la désactivation d'une "pompe de charge" augmentant une tension d'alimentation de la carte en tension plus élevée de programmation interne à mémoire réinscriptible de type EEPROM, nécessaire notamment à l'écriture, est automatique. Après l'étape E4 succédant à l'étape E2, le driver DR écrit les données initiales DI contenues dans la requête RE1 dans la case désignée de la mémoire MNV. Le driver vérifie ensuite les données écrites à l'étape E5 qui est essentielle d'un point de vue de la sécurité. Au cours de 11 étape E5, le driver DR lit les données écrites DE et le vérificateur VS les compare avec les données DI initialement contenues dans la requête RE1, avant l'étape d'écriture proprement dite E4. La comparaison dans le vérif icateur VS est en f ait une comparaison dl signature S(DI) des données initiales avant écriture établie par le driver et d'une signature S( des données lues après écriture. Les signatures S(DI) et S(DE) sont calculées suivant un même algorithme de vérif ication ; la signature S (DI) des données initiales dans la requête RE1 est immédiatement calculée en attente du calcul de la signature S (DE) des données écrites correspondantes, puis lues dans la mémoire. Ces signatures ont avantageusement une longueur nettement inférieure à celle des données. Par exemple, chacune des signatures S(DI et S(DE) est déduite d'un codage de redondance cyclique CRC (Cyclic Redundancy Check) réalisé très rapidement le vérificateur VS sans intervention du processeur PR. Selon un autre exemple, chacune des signatures S et S(DE) résulte d'un hachage des données correspondantes, c'est-à-dire résulte d'un prélèvement de parties prédéterminées des données correspondantes, et les signatures résultant des données initiales hachées et des données écrites puis lues et hachées sont comparées. Le vérificateur VS peut être implanté en logique câblée, comme montré à la figure 2, ou bien implémenté sous forme de logiciel dans la mémoire ROM MO. Si le test de vérification révèle un defaut d'intégrité des données écrites DE comparativement aux données initiales DI à l'étape E5, un moyen de sécurité, par exemple un gestionnaire de sécurité implémenté dans la mémoire Mo de la carte à puce est activé, comme indiqué à l'étape E6, afin d'exécuter une tâche de secours. La tâche de secours consiste par exemple à interdire toute communication entre la carte à puce CP et la station d'accueil de carte dans laquelle la carte a été introduite et ainsi à invalider la carte, ou à commander la ré-écriture des données initiales par exemple en interrompant l'application AP, ou à transférer le processus d'écriture de données initiales dans le driver vers autre mémoire de la carte. La fin du processus d'écriture avec vérification constaté à l'étape E7 par le détecteur de fin d'écriture DFE qui le signale au contrôleur CM après la fin du processus d'écriture précédent. Le contrôleur est alors en état d'accepter une autre requête d'écriture, éventuellement déjà en attente comme la requête RE2 montrée à la figure 3. En variante, le contrôleur CM génère un signal de fin d'écriture FE sous la forme d'une interruption transmise à l'application AP. Lorsque le détecteur DFE est le décompteur de durée précité, le passage à zéro de celui-ci correspondant à l'expiration la durée prédéterminée DP est signalé par le signal FE au processeur PR qui arrête le contrôleur CM. Lorsque le détecteur DFE est implémenté directement dans le contrôleur CM, celui-ci génère automatiquement le signal FE pour le délivrer au processeur PR après un retard prédéterminé succédant à la'désactivation de la "pompe de charge" nécessaire à l'écriture, ledit retard étant disponible pour la vérification. Selon une autre réalisation, l'étape de vérification E5 avec l'étape de sécurité E6 n' pas incluse dans le processus d'écriture entre les étapes E4 et E7, mais au début du processus de lecture ultérieure des données écrites dans la mémoire MNV par le processeur PR, comme montré en E10 à figure 5. Lletape E10 succède à une requête de lecture RL de l'application AP, appliquée par le processeur PR au driver DR à travers le bus BU. La requête lecture RL validée par le driver DR à une étape E8 pour la lecture, d'une manière analogue à l'étape El, ou est mise en attente jusqu'à la fin d'un processus de lecture en cours à une étape E9, lorsque le driver DR traite une requête d'écriture. Puis, après la vérification positive à l'étape E10, le processus de lecture est poursuivi d'une manière connue à une étape Ell. REVENDICATIONS 1 - Procédé pour écrire des données initiales contenues dans une requête d'écriture (REl) transmise par un moyen de traitement de données (PR, AP) à un moyen de contrôle d'écriture-lecture (CM, DR) lune mémoire (MNV) dans un objet électronique portable (CP) caractérisé en ce qu'il comprend les étapes suivantes : - ne transmettre (El, E2) un accusé de réception (AC) par le moyen de contrôle (CM, DR) au moyen de traitement de données (PR, AP) immédiatement en réponse à la requête d'écriture (RE1) que si le moyen de contrôle est disponible pour une écriture (E4) des donnees intiales (DI) dans la mémoire, - exécuter des tâches (T2,T3) dans le moyen de traitement de données en réponse à l'accusé de réception simultanément à l'écriture (E4) des données initiales (DI) en des données écrites (DE) dans la mémoire, - mettre en attente (E3) jusqu'à la fin de l'écriture le moyen de traitement de données (PR AP) si celui-ci transmet une autre requête d'écriture (RE2) avant la fin de l'écriture, et - n'accepter (E7) une autre requête d'écriture (RE2) qu'après la fin de l'écriture des données initiales dans la mémoire (MNV) par le moyen de contrôle. 2 - Procédé conforme à la revendication 1, selon lequel un moyen de détection de fin d'écriture (DFE) est fourni dans l'objet électronique portable (CP) pour décompter une durée prédéterminée (DP) sensiblement dès que l'accusé de réception (AC) est transmis (E2) et signaler la fin de l'écriture (E7) à l'expiration de la durée prédéterminée. 3 - Procédé conforme à la revendication 1, selon lequel l'étape d'accepter (E7) une autre requête d'écriture accompagne la désactivation d'un moyen d'augmentation de tension interne à la mémoire (MNV). 4 - Procédé conforme à l'une quelconque des revendications 1 à 3 comprenant une vérification (E5, EIO) de l'intégrité des données initiales (DI) comparativement aux données écrites (DE) intervenant entre l'écriture des données initiales (E4) et une lecture ultérieure ( ) des données écrites (DE). 5 - Procédé conforme à la revendication 4, selon lequel la vérification (E5) intervient juste après l'écriture (E4) des données initiales (DI). 6 - Procédé conforme à la revendication 4, selon lequel la vérification (E10) intervient juste avant la lecture ultérieure Ell) des données écrites (DE). 7 - Procédé conforme à l'une quelconque des revendications 4 à 6, selon lequel la vérification comprend une comparaison d'une signature (S(DI des données initiales avec une signature (S(DE des données écrites lues dans la mémoire (MNV). 8 - Procédé conforme à la revendication 7, selon lequel chaque signature est déduite d'un codage à redondance cyclique des données correspondantes. 9 - Procédé conforme à la revendication 7, selon lequel chaque signature résulte d un hachage des données correspondantes. 10 - Procédé conforme à 11 quelconque des revendications 4 à 9, comprenant l'activation d'un moyen de sécurité (E6) en réponse à un défaut d'intégrité des données écrites (DE) comparativement aux données initiales (DI).