FR 3023941 A1 20160122 FR 1457021 A 20140721 2 3 9 4 1 1 Arrière-plan de l'invention L'invention se situe dans le domaine de l'optimisation des ressources dans une carte à microcircuit. On connaît en effet aujourd'hui des cartes à microcircuit dans lesquelles les codes exécutables sont mémorisés dans une mémoire morte, par exemple par le fondeur de la cade ; ces programmes sont donc ni modifiables, ni supprimables. L'EEPROM de telles cartes comporte généralement des données 10 créées dynamiquement par les programmes stockés en ROM. Comme ordre de grandeur, on peut retenir que la taille d'une mémoire ROM est comprise entre 160 et 380 Ko, celle d'une mémoire EEPROM entre 4 et 144 Ko. L'usage des mémoires non volatiles réinscriptibles de type Flash 15 dans de telles cartes devient plus fréquent. Dans des soucis d'optimisation, la Demanderesse a proposé, dans le document EP0921469 une carte à microcircuit dont le système d'exploitation est apte à gérer les ressources de mémoire pour réallouer des zones de mémoire vive ou de mémoire non-volatile reprogrammable de type Flash ou EEPROM. 20 Bien que très satisfaisante, cette solution ne permet pas de réutiliser des zones de mémoire dans lesquelles les fabricants mémorisent du code exécutable. L'invention vise notamment une solution à ce problème. 25 Objet et résumé de l'invention Plus précisément, l'invention vise un procédé de personnalisation d'une carte à microcircuit, ce procédé comportant : - une étape d'installation, dans au moins un premier bloc mémoire, d'un 30 code exécutable n'ayant plus d'utilité après une phase de pré-personnalisation de la carte; et - après cette phase de pré-personnalisation de la carte à microcircuit, une étape de réaffectation de la destination du premier bloc de mémoire de sorte que d'autres données puissent être mémorisées dans ce bloc à la 35 place du code exécutable précité. 3 0 2 3 9 4 1 2 Par réaffectation de la destination on comprend que le premier bloc de mémoire est effacé et/ou écrasé en tout ou partie pour contenir d'autres données. Corrélativement, l'invention vise aussi une carte à microcircuit 5 comportant des moyens de gestion de mémoire pour réaffecter, après une phase de pré-personnalisation de ladite carte à microcircuit, la destination d'au moins un premier bloc de mémoire dans lequel était initialement mémorisé du code exécutable n'ayant plus d'utilité après la phase de pré-personnalisation, de sorte que d'autres données puissent être mémorisées 10 dans ce bloc à la place de ce code exécutable. Ainsi, et d'une façon générale, l'invention propose de rendre disponible, toute ou partie de la mémoire occupée par le code exécutable nécessaire à la pré-personnalisation de la carte, ce code étant devenu inutile (ou mort) à l'issue de cette phase. 15 Par exemple, une fois les objets créés, le code nécessaire à la création de ces objets qui n'a plus d'utilité peut être supprimé. L'invention permet ainsi de concevoir des cartes avec moins de mémoire et donc moins chère à fonctions égales. Dans un mode préféré de réalisation, les moyens de gestion de 20 mémoire sont des mis en oeuvre par un système d'exploitation de la carte à microcircuit. Dans un mode particulier de réalisation, la phase de pré-personnalisation comporte la création d'au moins un conteneur de fichier, ce conteneur comportant un en-tête de fichier et une place mémoire 25 réservée pour recevoir des données de personnalisation, au moins un de ces conteneurs étant mémorisé dans un bloc d'une mémoire tampon destiné à être déplacé dans le premier bloc mémoire après la phase de pré-personnalisation. La taille réservée pour recevoir les données de personnalisation 30 peut prendre sa valeur finale au moment du transfert dans CODE_BLOCK, et donc avoir une valeur temporaire quand le conteneur est dans TEM P_BLOCK. Dans un mode particulier de réalisation, le procédé selon l'invention comporte, après l'étape de réaffectation, une étape de déplacement des 35 données contenues dans le bloc de mémoire tampon vers au moins un premier bloc mémoire dans lequel était initialement mémorisé du code 3 0 2 3 9 4 1 3 exécutable n'ayant plus d'utilité après la phase de pré-personnalisation de la carte. Dans un mode particulier de réalisation, le procédé selon l'invention comporte une étape d'écriture de données de personnalisation dans la 5 place mémoire réservée d'un conteneur de fichier. Dans un mode particulier de réalisation du procédé selon l'invention, l'en-tête de fichier mémorisé dans un bloc de mémoire tampon comporte l'adresse à laquelle il devra être déplacé dans un premier bloc mémoire. Dans un mode particulier de réalisation, ces données de personnalisation comportent des clefs secrètes ou des données biométriques. Les données contenues dans la zone mémoire réaffectée ne sont pas nécessairement supprimées, elles peuvent être écrasées. Mais dans un mode préféré de réalisation, l'étape de réaffectation comporte une étape de suppression du code exécutable n'ayant plus d'utilité après la phase de pré-personnalisation de la carte. L'étape de réaffectation peut être déclenchée sur réception d'un moyen de déclenchement, par exemple, une commande APDU. Cette 20 commande peut être envoyée au lieu de personnalisation de la carte, en utilisant un lecteur de carte. Selon un autre mode de réalisation, le moyen de déclenchement peut être un signal électrique ou électromagnétique, généré par exemple lors de la mise sous tension de la carte. Dans un mode particulier de réalisation, la carte à microcircuit selon 25 l'invention comporte un bloc mémoire de données utilisateurs, et, au cours de la phase de pré-personnalisation, on crée automatiquement dans le bloc de mémoire tampon, les conteneurs de fichiers dont la place mémoire réservée excède la place mémoire disponible dans le bloc mémoire de données utilisateurs. 30 Ce mode de réalisation permet de stocker des données utilisateurs dans le bloc de mémoire tampon avant la réaffectation de la destination du premier bloc de mémoire. On augmente ainsi l'espace mémoire disponible pour les données utilisateurs. 35 302 3 9 4 1 4 Brève description des dessins D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description et des figures annexées de variantes de 5 réalisation de l'invention données à titre d'exemple indicatif et non limitatif, et de : - la figure 1 représente sous forme d'organigramme les principales étapes d'un procédé de personnalisation d'une carte à microcircuit conforme à un mode particulier de réalisation ; 10 - les figures 2A et 2B représentent l'état de la mémoire de la carte à microcircuit de la figure 1 avant et après la phase de pré-personnalisation. Description détaillée d'un mode de réalisation 15 Nous allons maintenant décrire en référence à la figure 1 les principales étapes d'un procédé de personnalisation d'une carte à microcircuit 10 conforme à un mode particulier de réalisation de l'invention. Comme représenté à la figure 2, la carte à microcircuit 10 comporte un processeur 12, un système d'exploitation 14, et des moyens 16 de communication avec un lecteur non représenté. Ce procédé comporte une phase préliminaire E10 de génération de code au cours de laquelle on identifie les modules logiciels MOD qui n'auront plus d'utilité après la phase de pré-personnalisation de la carte à microcircuit, le code exécutable de ces modules pouvant être supprimé à la fin de la phase de pré-personnalisation pour libérer la place mémoire occupée par ce code exécutable, celle-ci pouvant ainsi être réutilisée. Cette phase préliminaire E10 de conception peut être réalisée 30 manuellement ou automatiquement dès lors que l'on sait automatiquement repérer les modules logiciels dont les codes exécutables ne sont plus utiles après. Il peut en particulier et notamment s'agir des modules de création de codes PIN, des modules de création (CreateFileQ), de déplacement 35 (MoveFileQ) et de destruction (DeleteFile()) de fichiers, des modules d'allocation (malloc()) et de libération (free()) de mémoire, ... Cette phase préliminaire E10 est suivie par une étape E12 de marquage des modules logiciels identifiés. Dans le mode de réalisation décrit ici, cette étape de marquage consiste à insérer dans le code source du module une instruction destinée au compilateur pour placer ce code 5 dans un bloc réservé à cet effet. Dans le mode de réalisation décrit ici, cette étape de marquage consiste à spécifier une classe dans les propriétés du code source du module : userclass (CODE=BLOCK) 10 Au cours d'une étape E14, on définit le bloc dans lequel les codes exécutables destinés à être ultérieurement supprimés doivent être mémorisés. Dans le mode de réalisation décrit ici, tous ces codes exécutables MOD sont placés dans un même bloc « CODE_BLOCK » compris dans la 15 plage d'adresses [C:OxA400-C:OxFFFF] mais en variante plusieurs blocs, contigus ou non, peuvent être utilisés à cet effet. Cette étape E14 consiste à donner une instruction au linker, du type : CODE_BLOCK(C:OxA400-C:OxFFFF) 20 Les fichiers sources sont ensuite compilés au cours d'une étape E16. Cette étape génère, comme de façon connue, un fichier de « mapfile », permettant de connaître la taille effectivement occupée par le code MOD dans le bloc « CODE_BLOCK », 14D4H dans cet exemple : BASE START END USED MEMORY CLASS C :000000H C :00A400H C :00FFFFH 0014D4H CODE_BLOCK Dans l'exemple décrit ici, la taille du bloc « CODE_BLOCK » qui 25 pourra être réalloué après personnalisation est de 5332 octets (correspondant à la valeur hexadécimale 14D4). Conformément à l'invention, les données qui sont destinées à être déplacées dans le bloc « CODE_BLOCK » après la phase de pré-personnalisation sont temporairement mémorisées dans un bloc de 30 mémoire tampon, ci-après référencé « TEMP_BLOCK », de la mémoire non-volatile réinscriptible (étape E18). Elles seront déplacées dans le bloc « CODE_BLOCK » après la phase de pré-personnalisation, quand les codes exécutables initialement placés dans ce bloc « CODE_BLOCK » n'auront plus d'utilité. 302 3 9 4 1 6 Dans le mode de réalisation décrit ici, les données mémorisées temporairement dans le bloc de mémoire tampon « TEMP_BLOCK » peuvent être compressées ; elles peuvent par exemple être placées sous forme compressée dans une zone ZO d'un conteneur CONT, ce conteneur 5 comportant un en-tête H dans lequel on enregistre l'adresse à laquelle les données doivent être déplacées dans le bloc mémoire après la phase de pré-personnalisation. D'autres données peuvent être mémorisées, comme de façon connue, dans un bloc REGULAR_BLOCK 10 La figure 2A représente la carte à micro-circuit avant la phase de pré-personnalisation. Après la pré-personnalisation (étape E20) le code exécutable contenu dans le bloc CODE_BLOCK n'a plus d'utilité. Dans le mode de réalisation décrit ici, on place la carte à micro-15 citrcuit dans un lecteur afin de lui envoyer une commande APDU (étape E22), la réception de cette commande par le système d'exploitation de la carte déclenchant (E26) la décompression et le déplacement des données comprises dans la zone ZO de chaque conteneur vers le bloc CODE_BLOCK à l'adresse contenue dans l'en-tête H de ce conteneur. 20 Cette opération consistant à réaffecter ainsi la destination du bloc CODE_BLOCK après la pré-personnalisation permet d'optimiser les ressources mémoires de la carte à microcircuit. La figure 2B représente la carte à micro-circuit à la fin de la phase de pré-personnalisation. 25 Il apparaît que le code exécutable MOD a été supprimé que le bloc CODE_BLOCK comporte maintenant les données qui étaient compressés dans la zone ZO sous forme décompressée (ZO*). Cette étape de réaffectation (E24) n'impacte pas le bloc REG U LAR_BLOCK. REVENDICATIONS1. Procédé de personnalisation d'une carte à microcircuit, ce procédé comportant : - une étape d'installation, dans au moins un premier bloc mémoire (CODE_BLOCK), d'un code exécutable n'ayant plus d'utilité après une phase de pré-personnalisation de ladite carte; et 10 - après ladite phase de pré-personnalisation de ladite carte à microcircuit, une étape (E24) de réaffectation de la destination dudit au moins un premier bloc de mémoire (CODE_BLOCK) de sorte que d'autres données puissent être mémorisées dans ce bloc à la place dudit code exécutable. 15 2. Procédé de personnalisation selon la revendication 1 caractérisé en ce que: - ladite phase de pré-personnalisation comporte la création d'au moins un conteneur de fichier, ledit conteneur comportant un en-tête de fichier et une place mémoire réservée pour recevoir des données de 20 personnalisation, au moins un desdits conteneurs étant mémorisé dans un bloc d'une mémoire tampon (TEMP_BLOCK) destiné à être déplacé dans ledit premier bloc mémoire (CODE_BLOCK) après ladite phase de pré-personnalisation. 25 3. Procédé de personnalisation selon la revendication 2, caractérisé en ce qu'il comporte, après ladite étape de réaffectation : - une étape (E26) de déplacement des données contenues dans ledit bloc de mémoire tampon (TEMP_BLOCK) vers ledit au moins un premier bloc mémoire (CODE_BLOCK). 30 4. Procédé de personnalisation selon l'une quelconque des revendications 1 à 3 caractérisé en ce qu'il comporte une étape d'écriture de données de personnalisation dans la place mémoire réservée dudit conteneur de fichier. 35 302 3 9 4 1 8 5. Procédé selon l'une quelconque des revendications 2 à 4, caractérisé en ce que l'en-tête de fichier mémorisé dans ledit bloc de mémoire tampon (TEMP_BLOCK) comporte l'adresse à laquelle il devra être déplacé dans ledit au moins un premier bloc mémoire (CODE_BLOCK). 6. Procédé selon l'une quelconque des revendications 2 à 5, caractérisé en ce que lesdites données de personnalisation comportent des clefs secrètes ou des données biométriques. 7. Procédé selon l'une quelconque des revendications 1 à 6, caractérisé en ce que ladite étape de réaffectation comporte une étape de suppression du code exécutable n'ayant plus d'utilité après ladite phase de personnalisation. 8. Procédé selon l'une quelconque des revendications 1 à 7, caractérisé en ce qu'il comporte un moyen pour déclencher ladite étape de réaffectation. 9. Procédé selon la revendication 8, caractérisé en ce que ledit moyen est une commande APDU. 10. Procédé selon la revendication 8, caractérisé en ce que ledit moyen est un signal électrique ou électromagnétique. 25 11. Procédé selon l'une quelconque des revendications 2 à 10, caractérisé en ce que la carte à microcircuit comporte un bloc mémoire (REGULAR_BLOCK) de données utilisateurs, et en ce que, au cours de ladite phase de pré-personnalisation, on crée automatiquement dans ledit 30 bloc de mémoire tampon (TEMP_BLOCK), les conteneurs de fichier dont la place mémoire réservée excède la place mémoire disponible dans ledit bloc mémoire (REGULAR_BLOCK) de données utilisateurs. 12. Carte à microcircuit comportant : 35 - des moyens de gestion de mémoire aptes à réaffecter, après une phase de pré-personnalisation de ladite carte à microcircuit, au moins un premierbloc de mémoire (CODE_BLOCK) dans lequel était initialement mémorisé du code exécutable n'ayant plus d'utilité après ladite phase de pré-personnalisation de sorte que d'autres données puissent être mémorisées dans ce bloc à la place dudit code exécutable. 13. Carte à microcircuit selon la revendication 12, caractérisé en ce que lesdits moyens de gestion de mémoire sont mis en oeuvre par un système d'exploitation de ladite carte.