Brevet FR3045864A1 — publié le 20170623

DOMAINE TECHNIQUE AUQUEL SE RAPPORTE L'INVENTION La présente invention concerne un procédé d'écriture de données dans 5 une mémoire de microcircuit, et un procédé de lecture de données dans une telle mémoire. Elle concerne plus particulièrement un procédé d'écriture et un procédé de lecture dans une mémoire de microcircuit présentant un espace de stockage réduit. 10 L'invention concerne également une mémoire de microcircuit. ARRIERE-PLAN TECHNOLOGIQUE De nombreux dispositifs électroniques sont équipés aujourd'hui d'un élément sécurisé (ou SE, selon l'acronyme anglo-saxon de « Secure Element »), ou d'une carte à microcircuit. 15 Un tel élément sécurisé, tel qu'une carte du type UICC (selon l'acronyme anglo-saxon de « Universal Integrated Circuit Card »), peut notamment être utilisé pour réaliser des opérations cryptographiques de manière sécurisée, ou, par exemple, pour mémoriser des informations confidentielles telles que des informations d'identification d'un porteur du dispositif électronique. 20 De tels éléments sécurisés ou de telles cartes à microcircuit jouent un rôle important notamment dans le fonctionnement de dispositifs électroniques portatifs disposant de moyens de communication avec un réseau de télécommunication ou encore avec des moyens d'identification biométrique. Le microcircuit d'une telle carte à microcircuit, ou d'un tel élément 25 sécurisé comprend une mémoire destinée à stocker des données, par exemple des données reçues par le microcircuit. Le plus souvent, la longueur d'une telle donnée à stocker n'est pas prédéterminée, et varie d'une donnée à l'autre. Par ailleurs, la mémoire d'un tel microcircuit représente un espace de stockage généralement réduit. Cet espace de stockage peut par exemple comprendre 30 environ 128 kilooctets pour un microcircuit de carte de type UICC. Il est connu, par exemple du document FR 2 759 795, d'utiliser une telle mémoire pour y écrire des données de la manière suivante : - chaque donnée est écrite dans un fichier composé d'une chaine de domaines élémentaires, chacun de ces domaines élémentaires présentant une 3045864 2 longueur fixe, et - l'adresse du premier domaine élémentaire de cette chaîne est écrite dans une table d'allocation de ces domaines élémentaires. Mais, lorsqu'un tel procédé de stockage est utilisé, une partie importante de la mémoire est rendue non disponible pour l'écriture de nouvelles données, sans pour autant servir au stockage des données précédemment écrites. OBJET DE L'INVENTION Dans ce contexte, la présente invention propose un nouveau procédé d'écriture d'une donnée à stocker dans une mémoire, comprenant une étape de : a) lecture ou d'écriture d'une adresse dans une première zone de la mémoire, cette adresse repérant une position située dans une deuxième zone de la mémoire. Selon l'invention, ce procédé comprend de plus les étapes suivantes : b) écriture, à partir de ladite position, d'un en-tête comprenant une indication de longueur représentative d'une longueur d'au moins une partie de la donnée à stocker, et c) écriture de cette partie de la donnée à stocker, dans un domaine de la mémoire contigu dudit en-tête, la longueur de ce domaine étant égale à la longueur de cette partie de la donnée à stocker. La donnée à stocker est représentée par une suite de bits (éléments binaires), regroupés ici en multiplets, par exemple en octets comprenant chacun huit bits. La longueur de cette donnée désigne par exemple le nombre de multiplets que comprend cette suite de bits. De manière comparable, la longueur du domaine susmentionné peut désigner par exemple le nombre de multiplets qui constituent ce domaine. La partie de la donnée à stocker écrite dans le domaine de la mémoire contigu dudit en-tête peut en particulier correspondre à l'intégralité de la donnée à stocker. Grâce à l'invention, des données à stocker, ou des parties de données de stocker, pouvant présenter une longueur différente d'une donnée à stocker à l'autre, peuvent être écrites dans cette mémoire sans perte d'espace de stockage, c'est-à-dire en utilisant pour cela une longueur de la mémoire limitée à la longueur de la donnée, ou à la longueur de la partie de donnée, qui y est écrite. Ce procédé d'écriture permet en particulier d'éviter que des bits d'un domaine dans lequel est 3045864 3 écrite une partie de la donnée à stocker soient à la fois inutilisés pour le stockage de cette donnée à stocker, et indisponible pour l'écriture d'autres données à stocker. Par ailleurs, dans ce procédé d'écriture, on peut prévoir qu'une adresse 5 est écrite dans la première zone de la mémoire seulement lorsqu'une donnée à stocker est écrite (au moins en partie) dans la deuxième zone de cette mémoire. Autrement formulé, du fait de la mise en oeuvre de ce procédé d'écriture, seule la partie de la deuxième zone de la mémoire effectivement utilisée pour stocker des données est décrite dans la première zone de la mémoire, en termes d'adresses 10 d'écriture. Ainsi, grâce à ce procédé d'écriture, le volume de ladite mémoire utilisé pour écrire puis stocker une ou des données est avantageusement plus petit que lors de l'utilisation d'une solution basée par exemple sur une table d'allocation de fichier ou FAT (selon l'acronyme anglo-saxon de « File Allocation Table ») qui décrirait, en termes d'adresses d'écriture, l'intégralité de zones ou de pages de 15 cette mémoire. Ce procédé d'écriture est avantageusement plus économe, en termes d'espace de stockage, qu'une solution basée sur une table d'allocation de fichier de type FAT pour laquelle la mémoire est divisée en blocs mémoires de longueur fixe, notamment lorsque les données à stocker présentent en moyenne une 20 longueur inférieure à celle d'un tel bloc mémoire de longueur fixe. Préférentiellement, ledit en-tête occupe dans la mémoire une longueur déterminée en fonction de la longueur dudit domaine qui lui est contigu. Ledit en-tête peut en particulier occuper, dans la mémoire, une longueur d'autant plus petite que la longueur dudit domaine qui lui est contigu est petite. 25 L'indication de longueur contenue dans cet en-tête peut correspondre par exemple au nombre de multiplets formant ledit domaine contigu de cet en-tête. Or le nombre multiplets eux-mêmes nécessaires pour coder un nombre donné (ce nombre donné correspondant ici au nombre de multiplets formant ledit domaine) est d'autant plus grand que ce nombre donné est grand. Le nombre de multiplets 30 nécessaires pour écrire l'indication de longueur représentative de la longueur de ce domaine dépend ainsi de la longueur de ce domaine. Ajuster ainsi la longueur de l'en-tête contenant cette indication de longueur, en fonction de la longueur du domaine contigu de cet en-tête, permet donc d'éviter avantageusement d'écrire un en-tête qui serait nettement plus long 3045864 4 que ce qui est nécessaire pour contenir l'indication de longueur représentative de la longueur dudit domaine. L'espace de stockage de la mémoire est ainsi utilisé de manière optimale, sans perte de place. Cette solution nécessite en particulier moins de place mémoire qu'une solution basée sur des en-têtes de longueur fixe. 5 D'autres caractéristiques non limitatives et avantageuses du procédé d'écriture décrit ci-dessus sont les suivantes : - lorsque la longueur dudit domaine contigu est inférieure à un premier seuil prédéterminé, alors, la longueur dudit en-tête correspond à un premier nombre d'octets ; 10 - ledit premier seuil correspond à 250 octets ; - ledit premier nombre d'octets correspond à un octet ; - lorsque la longueur dudit domaine contigu est supérieure audit premier seuil, alors, l'en-tête est écrit à l'étape b) de manière à présenter ledit premier nombre d'octets dans lesquels est écrite une valeur prédéterminée, suivis par un 15 deuxième nombre d'octets dans lesquels est écrite ladite indication de longueur ; - ladite valeur prédéterminée est représentative d'une indication de chainage indiquant que l'intégralité de la donnée à stocker est écrite dans ledit domaine contigu, ou que la donnée à stocker est écrite sous la forme d'une chaine de plusieurs blocs mémoires distincts ; 20 - ladite valeur prédéterminée est représentative du fait que l'en-tête comprend un nombre d'octets supérieur audit premier nombre d'octets ; l'indication de chainage susmentionnée est ainsi écrite d'une manière particulièrement économe en termes d'espace de stockage, puisque ladite valeur prédéterminée est représentative à la fois de cette indication de chainage, et du 25 fait que l'en-tête comprend un nombre d'octets supérieur audit premier nombre d'octets ; - ladite valeur prédéterminée et ledit deuxième nombre d'octets sont déterminés chacun en fonction de la longueur dudit domaine contigu ; - ladite valeur prédéterminée est comprise entre 251 et 255 ; 30 - ledit deuxième nombre d'octets est supérieur audit premier nombre d'octets ; - ledit deuxième nombre d'octets correspond à deux octets ; - lorsque la mémoire présente, à partir de ladite position, un espace disponible suffisamment long pour y écrire l'intégralité de la donnée à stocker ainsi 3045864 5 que l'en-tête correspondant, alors, ladite indication de longueur est représentative de la longueur de l'intégralité de la donnée à stocker, et l'intégralité de la donnée à stocker est écrite dans ledit domaine contigu dudit en-tête, au cours de l'étape c) ; - lorsque la longueur de la donnée à stocker est inférieure à un deuxième 5 seuil, ladite indication de longueur est représentative de la longueur de l'intégralité de la donnée à stocker, et l'intégralité de la donnée à stocker est écrite dans ledit domaine contigu dudit en-tête, au cours de l'étape c) ; - le deuxième seuil est égal au premier seuil ; - lorsque la mémoire présente, à partir de ladite position, un espace 10 disponible de longueur insuffisante pour y écrire l'intégralité de la donnée à stocker ainsi que l'en-tête correspondant, et que la longueur de la donnée à stocker est supérieure audit deuxième seuil, alors, la donnée à stocker est écrite sous la forme d'une chaine de plusieurs blocs mémoires distincts, un premier bloc mémoire de cette chaine étant écrit dans la mémoire à partir de la position repérée 15 par ladite adresse, et chaque bloc mémoire de ladite chaine comprenant un domaine, dans lequel on écrit une partie de la donnée à stocker, ce domaine étant entièrement occupé par cette partie de la donnée à stocker, et un en-tête, dans lequel on écrit une indication de longueur représentative de la longueur dudit domaine contenu dans ce bloc mémoire ; 20 - l'en-tête contenu dans l'un des blocs mémoires de ladite chaine est écrit au début de ce bloc mémoire ; - ladite chaine de blocs mémoires est écrite de manière que chaque bloc mémoire de cette chaine suivi dans cette chaîne par un autre bloc mémoire contient un domaine présentant une longueur supérieure audit deuxième seuil ; 25 - lorsqu'un bloc mémoire de ladite chaine est suivi dans cette chaîne par un autre bloc mémoire, alors, l'en-tête contenu dans ce bloc mémoire est écrit de manière à contenir une indication de chainage indiquant que ce bloc mémoire est suivi, dans ladite chaine, par un autre bloc mémoire ; - lorsqu'un bloc mémoire de ladite chaine est suivi dans cette chaîne par 30 un autre bloc mémoire, alors, l'en-tête contenu dans ce bloc mémoire est écrit de manière à présenter ledit premier nombre d'octets, dans lesquels est écrite ladite indication de chainage, sous la forme d'une valeur prédéterminée, suivis par ledit deuxième nombre d'octets dans lesquels est écrite ladite indication de longueur ; - lorsqu'un bloc mémoire de ladite chaine est suivi dans cette chaîne par 3045864 6 un autre bloc mémoire, alors, ce bloc mémoire comprend en outre une adresse de chainage, distincte de ladite adresse lue ou écrite dans la première zone de la mémoire à l'étape a), et repérant une autre position de la deuxième zone de la mémoire à partir de laquelle on écrit le bloc mémoire suivant de cette chaine ; 5 - ladite adresse de chainage est écrite à la fin du bloc mémoire contenant cette adresse de chainage ; et - ladite mémoire est intégrée dans un élément sécurisé ou une carte à microcircuit. L'invention propose également un procédé de lecture dans une mémoire 10 comprenant des étapes de : a') lecture, dans une première zone de la mémoire, d'une adresse repérant une position située dans une deuxième zone de la mémoire, b') lecture dans la mémoire, à partir de ladite position, d'un en-tête contenant une indication de longueur, et 15 c') lecture du contenu d'un domaine de la mémoire contigu dudit en-tête et présentant une longueur égale à ladite indication de longueur. On peut prévoir en outre, au cours de ce procédé, que l'étape b') comprend la lecture d'un premier nombre d'octets dudit en-tête, et que, lorsqu'une valeur lue dans ce premier nombre d'octets est inférieure à un premier seuil 20 prédéterminé, alors, ladite indication de longueur est égale à ladite valeur lue dans ce premier nombre d'octets. On peut prévoir aussi, au cours de ce procédé, que lorsque ladite valeur lue dans le premier nombre d'octets de l'en-tête est supérieure audit premier seuil, alors, l'étape b') comprend en outre la lecture, dans un deuxième nombre d'octets 25 situés dans la mémoire à la suite dudit premier nombre d'octets, de ladite indication de longueur ; D'autres caractéristiques non limitatives et avantageuses de ce procédé de lecture sont les suivantes : - ledit premier seuil correspond à 250 octets ; 30 - ledit premier nombre d'octets correspond à un octet ; - ledit deuxième nombre est supérieur audit premier nombre ; et - ledit deuxième nombre d'octets correspond à deux octets ; Préférentiellement, il est prévu en outre, au cours de ce procédé de lecture, lorsque ledit en-tête lu à l'étape b') contient une indication de chainage 3045864 7 représentative du fait que le domaine contigu de cet en-tête est chaîné avec un autre domaine de la mémoire, de d') lire, à la suite dudit domaine, une adresse de chainage, distincte de ladite adresse lue dans la première zone de la mémoire à l'étape a'), cette 5 adresse de chainage repérant une autre position de la deuxième zone de la mémoire, puis de bb') lire, à partir de ladite autre position, un en-tête comprenant une indication de longueur, puis de cc') lire le contenu d'un domaine de la mémoire contigu dudit en-tête lu à 10 l'étape bb'), ce domaine présentant une longueur égale à ladite indication de longueur. Ladite indication de chainage peut en particulier être traduite par ladite valeur lue à l'étape b') dans le premier nombre d'octets dudit en-tête. On peut prévoir aussi au cours de ce procédé de lecture de : 15 dd') lorsque l'en-tête lu à l'étape bb') contient une indication de chainage représentative du fait que le domaine contigu de cet en-tête est chainé avec un autre domaine de la mémoire : - lire, à la suite du domaine lu à l'étape cc'), une adresse de chainage, repérant une autre position de la deuxième zone de la mémoire, puis de 20 - réitérer l'exécution des étapes bb'), cc') et dd'). On peut prévoir aussi que la mémoire est intégrée dans un élément sécurisé ou une carte à microcircuit. L'invention propose aussi un procédé comprenant : - l'écriture d'une donnée à stocker, selon un procédé d'écriture tel que 25 décrit ci-dessus, et - la lecture de la donnée ainsi écrite, selon un procédé de lecture tel que décrit ci-dessus. L'invention propose aussi une mémoire comprenant une première zone et une deuxième zone, la première zone de la mémoire contenant au moins une 30 adresse repérant une position située dans la deuxième zone de la mémoire, la mémoire comprenant en outre : - à partir de ladite position, un en-tête contenant une indication de longueur, ainsi qu' - un domaine contigu dudit en-tête, de longueur correspondant à 3045864 8 l'indication de longueur contenue dans cet en-tête, ce domaine étant entièrement occupé par une donnée qu'il contient. DESCRIPTION DETAILLEE D'UN EXEMPLE DE REALISATION La description qui va suivre en regard des dessins annexés, donnés à 5 titre d'exemples non limitatifs, fera bien comprendre en quoi consiste l'invention et comment elle peut être réalisée. Sur les dessins annexés : - les figures 1A, 1B et 1C représentent de manière schématique trois types différents de blocs mémoires écrits au cours d'un procédé mettant en oeuvre 10 les enseignements de l'invention ; et - la figure 2 représente schématiquement une mémoire dans laquelle des données ont été écrites au cours d'un procédé mettant en oeuvre les enseignements de l'invention. Le procédé d'écriture mettant en oeuvre les enseignements de 15 l'invention, qui sera décrit plus bas, est mis en oeuvre dans une mémoire, ici la mémoire d'un élément sécurisé ou d'une carte à microcircuit, destiné à équiper un dispositif électronique. Le dispositif électronique destiné à recevoir cet élément sécurisé ou cette carte à microcircuit peut en particulier être un dispositif électronique portatif 20 disposant de moyens de communication avec un réseau de télécommunication, tel qu'un téléphone portatif, un ordinateur portatif, une tablette électronique à écran tactile, ou encore une montre connectée. Cet élément sécurisé peut correspondre, par exemple, à une carte du type UICC, telle que décrite dans la norme ETSI TS 102 221. En particulier, cette 25 carte à microcircuit peut correspondre à une carte à circuit intégré embarquée, du type eUICC (selon l'acronyme anglo-saxon de « embedded Universal Integrated Circuit Card »), telle que décrite dans la norme ETSI TS 103 383, destinée à être installée dans ce dispositif électronique soit à demeure (en y étant soudée), soit de manière amovible. 30 Cet élément sécurisé peut également correspondre à un élément sécurisé du type eSE (selon l'acronyme anglo-saxon de « embedded Secure Element »), destiné à être soudé directement dans le dispositif électronique qu'il équipe, et correspondant aux spécifications de la technologie « GlobalPlatform » (marque déposée). Cet élément sécurisé, du type eSE, peut par exemple être 3045864 9 réalisé conformément à la version 2.2.1 des spécifications pour carte de la technologie « GlobalPlatform ». Cet élément sécurisé peut également être réalisée sous la forme d'une carte de type micro-SD sécurisée. 5 Cet élément sécurisé présente préférentiellement un niveau de sécurité conforme aux critères communs EAL (pour "Evaluation Assurance Level"), correspondant à la norme ISO 15408, avec un niveau supérieur ou égal à 4, ou à la norme FIPS (pour "Federal Information Processing Standard") 140-2. Cet élément sécurisé ou cette carte à microcircuit peut en particulier être 10 utilisé, au sein de ce dispositif électronique, pour réaliser des opérations cryptographiques de manière sécurisée, ou pour mémoriser des informations confidentielles telles que des informations d'identification d'un porteur du dispositif électronique, un profil électronique de cet utilisateur, ou encore pour mémoriser des messages reçus par le dispositif électronique. 15 Cet élément sécurisé ou cette carte à microcircuit comprend un microcircuit équipé d'une mémoire 1 (représentée figure 2) destinée à stocker des données, la longueur d'une telle donnée étant susceptible de varier d'une donnée à l'autre. Cette mémoire 1 présente ici un espace de stockage réduit, dont la 20 capacité de stockage est par exemple inférieure à 512 kilooctets. La capacité de cet espace de stockage peut aussi par exemple, être comprise entre 64 kilooctets et 1 mégaoctet. Cette mémoire 1 est ici une mémoire non-volatile, par exemple une mémoire non volatile réinscriptible, telle qu'une mémoire de type Flash. 25 Le microcircuit comprend également un processeur, par exemple un microprocesseur, permettant de réaliser des opérations logiques. Ce processeur est relié à la mémoire (1), et peut commander des opérations d'écriture ou de lecture dans cette mémoire (1). Le microcircuit comprend également des moyens de communication, par 30 exemple sous la forme de contacts électriques associés à un module de communication du microcircuit, ce module de communication permettant, si nécessaire, de mettre en forme des signaux électriques reçus au niveau de ces contacts électriques avant de les transmettre au processeur. Cet élément sécurisé ou cette carte à microcircuit peut en particulier être 3045864 10 conforme à la norme ISO/IEC 7816 ou ISO/IEC 14443 et être ainsi apte à réceptionner (grâce à ses moyens de communication) et traiter des requêtes ou commandes de type APDU (selon l'acronyme anglo-saxon de « Application Protocol Data Unit »). 5 Le microcircuit peut également être adapté à communiquer avec un capteur biométrique permettant d'acquérir des données biométriques relatives à un utilisateur du microcircuit. Le microcircuit peut également être adapté à communiquer avec des moyens d'authentification d'un tel utilisateur, tel qu'un clavier de saisie d'un code d'authentification. 10 Les données écrites dans cette mémoire 1, au moyen du procédé d'écriture qui sera décrit ci-dessous, peuvent correspondre notamment : - à un message électronique tel qu'un email reçu par le dispositif électronique équipé de ce microcircuit, - à une notification reçue par ce dispositif électronique en provenance 15 d'un service externe de messagerie, ou encore - à des données stockées de manière temporaire dans cette mémoire 1 à l'occasion d'opérations cryptographiques portant sur ces données et réalisées par le microcircuit. Ces données peuvent notamment être reçues par le microcircuit grâce 20 aux moyens de communication mentionnés ci-dessus, ou encore être transmises au microcircuit par le capteur biométrique ou les moyens d'authentification précités. Ces données peuvent correspondre à un fichier informatique. Ces données peuvent aussi correspondre à un « objet », en particulier lorsque le 25 microcircuit fonctionne au moyen d'un système d'exploitation, par exemple du type Java Card, permettant l'utilisation d'un langage orienté objet. Ces données peuvent correspondre aussi au résultat d'une comparaison entre des données biométriques ou de données d'authentifications reçues par microcircuit, et des données (biométriques ou d'authentification) contenues dans 30 le microcircuit. Le procédé d'écriture mis en oeuvre par le processeur du microcircuit présenté ci-dessus est décrit maintenant. Ce procédé comprend une étape a) de lecture ou d'écriture d'une adresse dans une première zone Z1 de la mémoire 1, cette adresse repérant une 3045864 11 position dans une deuxième zone Z2 de la mémoire 1. Selon une caractéristique particulièrement remarquable, ce procédé d'écriture comprend ensuite les étapes suivantes : b) écriture à partir de ladite position d'un en-tête E comprenant une 5 indication de longueur représentative d'une longueur d'au moins une partie de la donnée à stocker, et c) écriture de cette partie de la donnée à stocker, dans un domaine D de la mémoire 1 contigu dudit en-tête E, la longueur L de ce domaine D étant égale à la longueur de cette partie de la donnée à stocker. 10 La première zone Z1 de la mémoire 1 correspond par exemple à un tableau de pointeurs comprenant plusieurs emplacements A1, A2, ..., AN pouvant contenir chacun une adresse repérant une position dans la deuxième zone Z2 de cette mémoire 1 (ou, autrement formulé, un pointeur pointant vers cette position). La deuxième zone Z2 de la mémoire 1 correspond à une partie de cette 15 mémoire 1 utilisée pour écrire les données à stocker en elles-mêmes. Le domaine D contigu de cet en-tête E est situé ici à la suite de cet entête E, dans la mémoire 1. En variante, ce domaine pourrait plutôt précéder cet en-tête, dans la mémoire. Dans le procédé d'écriture décrit ici, l'étape a) comprend plus 20 précisément les sous-étapes suivantes, mises en oeuvre par le processeur du microcircuit: i- sélection d'un des emplacements A1, A2, ...AN de la première zone Z1 de la mémoire, ii- lecture ou écriture, dans l'emplacement sélectionné à la sous-étape i, 25 de l'adresse repérant la position à partir de laquelle il est prévu d'écrire l'en-tête E, et iii- test du fait que la mémoire 1 présente, à partir de cette position, un espace disponible de longueur suffisante pour y écrire l'intégralité de la donnée à stocker ainsi que l'en-tête E correspondant. 30 Un espace de la mémoire 1 est considéré ici comme disponible pour y écrire lorsqu'aucune donné, adresse ou en-tête n'y a été écrite précédemment, ou lorsqu'une autorisation a été donnée de remplacer une ou des données contenues dans cet espace par d'autres données. Le processeur est en mesure de déterminer qu'un espace de la mémoire 3045864 12 situé au niveau d'une adresse est disponible, car : - d'une part, une adresse limite de la mémoire, au-delà de laquelle aucune donnée n'a précédemment été écrite, est enregistrée dans le microcircuit, et 5 - d'autre part, parce qu'un espace de la mémoire disponible présente, au début de cet espace, un en-tête contenant une valeur spécifique indiquant que cet espace est disponible ; cette valeur spécifique correspond ici, en l'occurrence, à 254 ou à 255. En fonction du résultat de la sous-étape iii, on distingue ici trois cas 10 différents. Premier cas : la sous-étape iii montre que la mémoire 1 présente, à partir de ladite position, un espace disponible de longueur suffisante pour y écrire l'intégralité de la donnée à stocker ainsi que l'en-tête E correspondant. L'adresse contenue dans l'emplacement de la première zone Z1 de la 15 mémoire sélectionné à l'étape i est alors conservée sans changement dans cet emplacement, et, au cours de l'étape c) suivante, l'intégralité de la donnée à stocker sera écrite dans le domaine D contigu de l'en-tête E. Deuxième cas : la sous-étape iii montre que la mémoire 1 présente, à partir de ladite position, un espace disponible de longueur insuffisante pour y 20 écrire l'intégralité de la donnée à stocker ainsi que l'en-tête E correspondant, et, en outre, la longueur de la donnée à stocker est inférieure à un deuxième seuil. L'adresse contenue dans l'emplacement de la première zone Z1 de la mémoire sélectionné à l'étape i est alors est remplacée, dans cet emplacement, par une adresse d'une autre position de la deuxième zone Z2 de la mémoire 1, 25 telle que la mémoire 1 présente, à partir de cette autre position, un espace disponible de longueur suffisante pour y écrire l'intégralité de la donnée à stocker ainsi que l'en-tête E correspondant. Au cours de l'étape c) suivante, l'intégralité de la donnée à stocker sera écrite dans le domaine D contigu de l'en-tête E, cet entête E étant écrit à partir de ladite autre position. 30 Troisième cas : la sous-étape iii montre que la mémoire 1 présente, à partir de ladite position, un espace disponible de longueur insuffisante pour y écrire l'intégralité de la donnée à stocker ainsi que l'en-tête E correspondant, et, en outre, la longueur de la donnée à stocker est supérieure à ce deuxième seuil. L'adresse contenue dans l'emplacement de la première zone Z1 de la 3045864 13 mémoire sélectionné à l'étape i est alors conservée sans changement dans cet emplacement, et, la donnée à stocker sera écrite sous la forme d'une chaine de plusieurs blocs mémoires distincts, comme cela sera décrit en détail plus bas. Le deuxième seuil correspond ici à une longueur de 64 octets. 5 Les dispositions décrites ci-dessus permettent de favoriser une écriture de la donnée à stocker sous la forme d'un seul bloc mémoire, lorsque cela est possible. Ces dispositions sont avantageuses car une écriture sous la forme d'un seul bloc mémoire est plus économe en termes d'espace de stockage qu'une écriture sous la forme d'une chaine de plusieurs blocs mémoires, cette dernière 10 nécessitant l'écriture de données supplémentaires relatives au chainage de ces différents blocs mémoires (comme on le verra plus bas). En variante, d'autres dispositions que celles décrites ci-dessus pourraient être mises en oeuvre pour favoriser une écriture de la donnée à stocker sous la forme d'un seul bloc mémoire plutôt que sous la forme d'une chaine de 15 plusieurs blocs mémoires. Dans le premier cas et le deuxième cas définis ci-dessus : - au cours de l'étape b), l'en-tête E est écrite de manière que ladite indication de longueur contenue dans cet en-tête E soit plus précisément représentative de la longueur de l'intégralité de la donnée à stocker, et 20 - au cours de l'étape c), l'intégralité de la donnée à stocker est écrite dans le domaine D contigu de l'en-tête E, la longueur L de ce domaine D étant alors égale à la longueur de la donnée à stocker. La longueur de la mémoire 1 réservée au stockage de cette donnée à stocker est ainsi adaptée à la longueur de cette donnée à stocker, ce qui est 25 avantageusement économe en termes d'espace de stockage. Dans ce premier cas et ce deuxième cas, la donnée à stocker est donc écrite, dans la deuxième zone Z2 de la mémoire 1, sous la forme d'un seul bloc mémoire BI, ce bloc mémoire BI comprenant l'en-tête E mentionné ci-dessus, suivi du domaine D contenant ladite donnée à stocker. 30 Un tel bloc mémoire est représenté schématiquement sur les figures 1A et 1B. Au cours de ce procédé, l'en-tête E est écrit à l'étape b) de manière à occuper dans la mémoire 1 une longueur LE déterminée en fonction de la longueur L du domaine D qui lui est contigu, et dans lequel est écrite la donnée à 3045864 14 stocker. Plus précisément, la longueur LE de l'en-tête E est ici d'autant plus petite que la longueur L de ce domaine D est petite. Plus particulièrement, lorsque la longueur dudit domaine contigu est 5 inférieure à un premier seuil prédéterminé, alors, la longueur dudit en-tête correspond à un premier nombre d'octets. Ce premier seuil correspond ici à 250 octets et ce premier nombre d'octets correspond à un octet. Autrement formulé, ici, lorsque la longueur L du domaine D est comprise entre 1 et 250 octets, alors, l'en-tête E contient un seul octet OC, et le processeur commande l'écriture, dans 10 cet octet OC de l'indication de longueur représentative de la longueur L de ce domaine D (la longueur LE de l'en-tête E correspond alors à 1 octet), comme représenté figure 1A. Lorsque la longueur dudit domaine D contigu est supérieure à ce premier seuil, alors, l'en-tête est écrit à l'étape b) de manière à présenter ledit premier 15 nombre d'octets dans lesquels est écrite une valeur prédéterminée, suivis par un deuxième nombre d'octets dans lesquels est écrite ladite indication de longueur. Le deuxième nombre d'octets correspond ici à deux octets. La longueur L de ce domaine D est inférieure à une longueur maximale Lmax autorisée, égale ici à 65535 octets. 20 Ainsi, lorsque la longueur L de ce domaine D est comprise entre 251 et 65535 octets, l'en-tête E contient alors, ici, trois octets 0C1, 0C2, 0C3 (la longueur LE de l'en-tête E correspond alors à 3 octets), comme représenté figure 1B. La valeur prédéterminée écrite dans le premier nombre d'octets de l'en- 25 tête E est, dans le premier cas décrit ci-dessus, représentative du fait que le domaine D contigu de cet en-tête E n'est pas chaîné, dans la mémoire, avec un autre domaine. Cette valeur prédéterminée traduit ainsi une indication de chainage qui indique ici que le bloc mémoire BI dans lequel est écrite la donnée à stocker n'est pas un bloc mémoire qui ferait partie d'une chaine de blocs 30 mémoires et qui serait suivi dans cette chaine par un autre bloc mémoire. Cette valeur prédéterminée est également représentative du fait que cet en-tête E comprend un nombre d'octets supérieur audit premier nombre d'octets, en l'occurrence égal à la somme du premier et du deuxième nombre d'octets. Cette valeur prédéterminée traduit aussi, dans ce premier cas, que la 3045 864 15 longueur du domaine D contigu de cette en-tête E est supérieure à 250 octets. Ici, ladite valeur prédéterminée est égale, dans ce premier cas, à 251. L'indication de longueur représentative de la longueur L du domaine D est écrite dans le deuxième octet 0C2 et le troisième octet 0C3 de cet en-tête E. 5 Grâce à ces modalités d'écriture de l'en-tête E, non seulement la longueur LE de l'en-tête E est d'autant plus petite que la longueur L du domaine D est petite, mais, en outre, l'en-tête E contient une indication de sa propre longueur LE. Cette indication de la longueur LE de l'en-tête E est particulièrement utile pour une lecture ultérieure de cet en-tête E (permettant ensuite une lecture de la 10 donnée à stocker écrite dans le domaine D contigu de l'en-tête). Par ailleurs, cette indication de la longueur LE de l'en-tête E est écrite d'une manière particulièrement économe en termes d'espace occupé dans la mémoire. On peut prévoir, en variante, que la longueur maximale Lmax autorisée pour un tel domaine D est supérieure à 65535 octets. 15 La valeur de cette longueur maximale Lmax peut par exemple être augmentée en augmentant ledit deuxième nombre d'octets. Par exemple, lorsque ce deuxième nombre d'octets correspond à trois octets, cette longueur maximale Lmax devient égale à 224-1=16777215 octets. On peut prévoir également que la valeur prédéterminée mentionnée ci-20 dessus, ainsi que ledit deuxième nombre d'octets, soient déterminés chacun en fonction de la longueur L du domaine D, lorsque cette longueur est supérieure audit premier seuil. Par exemple : - lorsque la longueur L du domaine D est comprise entre 250 octets et 25 65535 octets, alors, ladite valeur prédéterminée est choisie égale à 251, et le deuxième nombre d'octets est choisi égal à deux octets, et - lorsque la longueur L du domaine D est comprise entre 65536 octets et 16777215 octets, alors, ladite valeur prédéterminée est choisie égale à 253, et le deuxième nombre d'octets est choisi égal à trois octets. 30 Dans le troisième cas défini ci-dessus, on rappelle que la donnée à stocker est écrite dans la mémoire sous la forme d'une chaine CH de plusieurs blocs mémoires BI distincts. Un exemple d'une telle chaine CH de blocs mémoires est représenté figure 2. Chacun des blocs mémoires BI de la chaine CH comprend un domaine D 3045864 16 dans lequel est écrite une partie de la donnée à stocker, de manière que les contenus respectifs de chacun de ces domaines D, mis à la suite les uns des autres, forment exactement ladite donnée à stocker. Chacun de ces domaines D est entièrement occupé par la partie de la 5 donnée à stocker contenue dans ce domaine. La longueur L de chacun de ces domaines D est donc égale à la longueur de la partie de donnée écrite dans ce domaine D. La somme des longueurs L respectives des différents domaines D contenus dans cette chaine CH de blocs mémoires BI est ainsi égale à la longueur 10 de la donnée à stocker. L'espace utilisé dans la mémoire 1 pour écrire l'ensemble de la donnée à stocker est alors avantageusement minimisé. La structure des blocs mémoires BI de cette chaine CH est décrite plus en détail ci-dessous. 15 Chaque bloc mémoire BI de cette chaine CH qui est suivi dans cette chaine par un autre bloc mémoire, c'est-à-dire chaque bloc mémoire BI de cette chaine CH sauf le dernier, comprend, comme illustré figure 1C et figure 2: - un en-tête E, suivi par - un domaine D dans lequel est écrit une partie de la donnée à stocker, 20 suivi ici par - un élément de chainage AC. Cet en-tête E contient une indication de la longueur du domaine D qui lui est contigu, ainsi qu'une indication de chainage indiquant que ce bloc mémoire est suivi, dans ladite chaine, par un autre bloc mémoire. 25 Plus précisément, dans ce cas (bloc mémoire chaîné), l'entête E est écrit à présenter : - ledit premier nombre d'octets, correspondant ici à 1 octet, dans lesquels est écrite ladite indication de chainage, sous la forme d'une valeur prédéterminée, suivis par 30 - ledit deuxième nombre d'octets, correspondant ici à deux octets, dans lesquels est écrite ladite indication de longueur. Cette indication de chainage est écrite ici sous la forme d'une valeur prédéterminée, par exemple égale à 252. Cette valeur prédéterminée est représentative non seulement du fait que ce bloc mémoire est suivi, dans ladite 3045864 17 chaîne, par un autre bloc mémoire, mais aussi du fait que cet en-tête comprend un nombre d'octets supérieur au premier nombre d'octets, en l'occurrence égal à la somme du premier et du deuxième nombre d'octets. Ici, l'en-tête E de ce bloc mémoire comprend ainsi trois octets OC1, 0C2 5 et 0C3, l'indication de chainage étant écrite, sous la forme de ladite valeur prédéterminée, dans le premier OC1 de ces trois octets OC1, 0C2, 0C3. L'indication de longueur, représentative de la longueur L du domaine D contenu dans ce bloc mémoire BI, est écrite dans le deuxième 0C2 et le troisième octet 0C3 de cet en-tête E. 10 Pour chaque bloc mémoire BI de cette chaine CH sauf le dernier, la longueur L du domaine D contenu dans ce bloc mémoire est supérieure au deuxième seuil mentionné précédemment. Par ailleurs, la longueur L de ce domaine D est inférieure à la longueur maximale Lmax autorisée, dont on rappelle qu'elle correspond ici à 65535 octets. 15 La valeur de cette longueur maximale autorisée pourrait toutefois être augmentée, comme expliqué précédemment. On peut prévoir aussi, pour un tel bloc mémoire chainé, de déterminer ladite valeur prédéterminée et ledit deuxième nombre d'octets en fonction de la longueur L du domaine D contenu dans ce bloc, de manière comparable à ce qui a été expliqué ci-dessus dans le cas d'un bloc 20 mémoire non chaîné. L'élément de chainage AC comprend une adresse de chainage repérant une position de la deuxième zone Z2 de la mémoire 1 à partir de laquelle le bloc mémoire suivant de cette chaine CH est écrit. Cette adresse de chainage est distincte de l'adresse lue ou écrite dans la première zone Z1 de la mémoire 1 à 25 l'étape a). Cet élément de chainage AC comprend ici quatre octets, utilisés pour écrire cette adresse de chainage. En variante, cet élément de chainage pourrait par exemple comprendre deux octets seulement, en particulier lorsque la mémoire présente une taille réduite (inférieure à 64 Ko) si bien que les adresses de cette mémoire peuvent 30 être codées sur un nombre de bits égal ou inférieur à 16. Le dernier bloc mémoire BI de cette chaine CH de blocs mémoires comprend seulement un en-tête E, suivi d'un domaine D dans lequel est écrite une dernière partie de la donnée à stocker. Ce dernier bloc mémoire est écrit de manière comparable à ce qui a été 3045864 18 décrit précédemment pour un bloc mémoire non chaîné. Au cours de ce procédé d'écriture, cette chaine CH de blocs mémoires BI est écrite selon la séquence suivante : - un premier bloc mémoire BI de cette chaine CH est écrit dans la 5 mémoire 1, au cours des étapes b) et c) mentionnées précédemment ; ce premier bloc mémoire BI est écrit à partir de ladite position repérée par l'adresse lue ou écrite dans la première zone Z1 de la mémoire à l'étape a), et occupe l'espace disponible dans la mémoire 1 à partir de cette position ; puis - le processeur commande successivement l'écriture, à la suite les uns 10 des autres, des blocs mémoires BI de cette chaine CH, jusqu'à ce que la donnée à stocker ait été entièrement écrite dans la mémoire 1. Pour chaque bloc mémoire BI de cette chaine CH, le processeur sélectionne, préalablement à l'écriture de ce bloc mémoire BI, une adresse à partir de laquelle sera écrit ce bloc. Pour cela, le processeur recherche, dans l'ensemble 15 des espaces disponibles de la mémoire, celui : - présentant la longueur la plus proche de la longueur du bloc mémoire BI à écrire, longueur dont on rappelle qu'elle est supérieure audit deuxième seuil, sauf éventuellement pour le dernier bloc mémoire BI de la chaine CH, et - préférentiellement, présentant une longueur supérieure à celle de ce 20 bloc mémoire BI à écrire. Pour chaque bloc mémoire BI de cette chaine CH sauf le premier, une fois cette adresse d'écriture ainsi sélectionnée, elle est écrite dans l'élément de chainage AC du bloc mémoire précédent de cette chaine CH de blocs mémoires. Ici, quelle que soit la longueur L du domaine D qu'il contient, chaque bloc 25 mémoire BI de cette chaine CH sauf le dernier contient donc, en plus du contenu du domaine D, 7 octets qui ne sont pas utilisés directement pour l'écriture de la donnée à stocker, à savoir les trois octets 0C1, 0C2 et 0C3 de l'en-tête E, et les quatre octets utilisés pour écrire l'adresse de chainage. La donnée à stocker occupe donc dans la mémoire 1 un espace plus petit lorsqu'elle est écrite sous la 30 forme d'une chaine CH comprenant quelques blocs mémoires BI longs que lorsqu'elle est écrite sous la forme d'une chaine comprenant de nombreux blocs mémoires courts. La disposition décrite ci-dessus, qui favorise l'écriture de la donnée à stocker sous la forme d'une chaine CH comprenant quelques blocs mémoires BI 3045864 19 longs, plutôt que sous la forme d'une chaîne comprenant de nombreux blocs mémoires courts est donc particulièrement intéressante. On notera par ailleurs que les différentes informations relatives au chainage des blocs mémoires BI de cette chaine CH (c'est-à-dire ici l'indication de 5 chainage et l'adresse de chainage contenues dans un tel bloc mémoire) sont ici contenues dans ces blocs mémoires eux-mêmes, et non dans le tableau de pointeurs de la première zone Z1 de la mémoire 1. Grâce à cette disposition, cette chaine CH de blocs mémoires BI est écrite dans la deuxième zone Z2 de la mémoire 1 sans nécessiter pour cela d'aller-retour entre le tableau de pointeurs de 10 la première zone Z1 de la mémoire 1, et la deuxième zone Z2 de la mémoire destinée à l'écriture des données à stocker en elles-mêmes. Cela rend ce procédé d'écriture avantageusement rapide. Cette dernière disposition rend en outre la lecture d'une donnée stockée dans la mémoire 1 sous forme d'une telle chaine de blocs mémoires 15 avantageusement rapide, puisque, de manière comparable, une telle lecture peut être réalisée sans aller-retour entre le tableau de pointeurs de la première zone Z1 de la mémoire 1, et la deuxième zone Z2 dans laquelle est stockée cette donnée. D'autre part, les données à stocker présentent ici majoritairement une longueur réduite, et sont donc majoritairement susceptibles d'être écrites dans la 20 mémoire sous la forme d'un seul bloc mémoire. Dans ce contexte, il est intéressant, pour les données à stocker nécessitant une écriture sous la forme d'une chaine de plusieurs blocs mémoires, d'écrire comme ici les différentes informations relatives au chainage des blocs mémoires BI de cette chaine CH dans ces blocs mémoires eux-mêmes plutôt que dans le tableau de pointeurs de 25 la première zone Z1 de la mémoire 1. Cela permet en effet d'utiliser un tableau de pointeurs dont chaque emplacement est prévu pour contenir une adresse de la mémoire, au lieu de devoir utiliser un tableau de pointeurs dont chaque emplacement serait prévu pour contenir une adresse de la mémoire ainsi que des informations de chainage (alors que la majorité des données à stocker sont écrites 30 sous la forme d'un seul bloc mémoire). Toutefois, en variante, pour les données à stocker écrites sous la forme d'une chaine de plusieurs blocs mémoires, les informations relatives au chainage de ces blocs mémoires pourraient être écrites dans la première zone de la mémoire (en particulier dans un tableau de pointeurs contenu dans cette première 3045864 20 zone de la mémoire), au lieu d'être comme ici écrites dans ces blocs mémoires eux-mêmes. La figure 2 montre schématiquement le contenu de la mémoire 1, dans laquelle trois données à stocker ont été écrites au moyen du procédé d'écriture 5 décrit ci-dessus. La première zone Z1 de la mémoire 1 contient un tableau de pointeurs comportant plusieurs emplacements Ai, A2, A3, ..., AN, comme expliqué précédemment. Un premier emplacement Al de ce tableau de pointeurs contient une adresse repérant, dans la deuxième zone Z2 de la mémoire 1, une première 10 position correspondant au début d'un premier bloc mémoire B11 (c'est-à-dire par exemple une position correspondant, dans la mémoire 1, au premier octet de ce bloc mémoire BI1). Une première donnée à stocker est écrite intégralement dans ce premier bloc mémoire B11. L'en-tête E de ce premier bloc mémoire B11 contient, comme expliqué 15 précédemment, une indication de la longueur L du domaine D contenu dans ce premier bloc B11. Cette indication est représentée schématiquement par la référence « L » (contenue dans cet en-tête), sur la figure 2. Un deuxième emplacement A2 de ce tableau de pointeurs contient une adresse repérant, dans la deuxième zone Z2 de la mémoire 1, une deuxième 20 position correspondant au début d'un deuxième bloc mémoire B12. Une deuxième donnée à stocker est écrite intégralement dans ce deuxième bloc mémoire B12. L'en-tête E de ce deuxième bloc mémoire B12 contient, comme expliqué précédemment, une indication de la longueur L du domaine D contenu dans ce deuxième bloc B12, ainsi qu'une indication de chainage représentative du fait que 25 ce bloc mémoire n'est pas chaîné. Ces deux indications sont représentées schématiquement par la référence « L » (contenue dans cet en-tête), sur la figure 2. Un troisième emplacement A3 de ce tableau de pointeurs contient une adresse repérant, dans la deuxième zone Z2 de la mémoire 1, une troisième 30 position correspondant au début d'une chaine CH de trois blocs mémoires B13, B132 et B133 dans laquelle est écrite une troisième donnée à stocker. Plus précisément, comme on peut le voir figure 2, l'adresse contenue dans ce troisième emplacement A3 repère le début du premier bloc mémoire B13 de cette chaine CH. 304 5 864 21 L'adresse de chaînage ADC1 contenue le premier bloc mémoire B13 de cette chaine CH (contenue plus précisément dans l'élément de chainage AC qui termine ce premier bloc mémoire B13) repère quant à elle le début du deuxième bloc mémoire B132 de cette chaine CH de blocs mémoires. 5 L'adresse de chainage ADC2 contenue dans le deuxième bloc mémoire B132 de cette chaine CH (contenue plus précisément dans l'élément de chainage AC qui termine ce deuxième bloc mémoire B132) repère le début du troisième bloc mémoire B133 de cette chaine CH de blocs mémoires. Comme ce troisième bloc mémoire B133 est le dernier bloc mémoire de la chaine CH, il contient seulement 10 un en-tête E suivi d'un domaine D dans lequel est écrite une partie de la troisième donnée à stocker. Les en-têtes E des premier et deuxième blocs mémoires B131, B132 de cette chaine CH de blocs mémoires contiennent chacun, comme expliqué précédemment, une indication de la longueur L du domaine D contenu dans ce 15 bloc, ainsi qu'une indication de chainage représentative du fait que ce bloc mémoire est suivi par un autre bloc mémoire, dans cette chaine CH. Ces deux indications sont représentées schématiquement par la référence « L* » (contenue dans chacun de ces en-têtes), sur la figure 2. Des données écrites dans la mémoire 1, au moyen du procédé d'écriture 20 décrit ci-dessus, peuvent être restituées (après avoir été stockées dans cette mémoire) au moyen d'un procédé de lecture mettant en oeuvre les enseignements de l'invention, tel que le procédé de lecture décrit ci-dessous. Ce procédé de lecture est mis en oeuvre par le processeur du microcircuit. 25 Au cours de ce procédé de lecture, une donnée à restituer est tout d'abord sélectionnée, en sélectionnant l'un des emplacements A1, A2, A3, ... ,AN du tableau de pointeur que comprend la première zone Z1 de la mémoire 1. Une adresse contenue dans cet emplacement est ensuite lue, lors d'une étape a'). Cette adresse repère une position située dans la deuxième zone Z2 de 30 cette mémoire 1. Ce procédé de lecture comprend ensuite une étape b') au cours de laquelle un en-tête E contenant une indication de longueur est lu à partir de la position repérée par l'adresse lue à l'étape a'). Cet en-tête E est susceptible de contenir une indication de chainage. 3045864 22 Cette indication de chaînage éventuelle est indicative : - soit du fait que la donnée à restituer est contenue, au sein de la mémoire 1, sous la forme d'une chaine CH de plusieurs blocs mémoires BI distincts, et que cet en-tête appartient à un bloc mémoire qui est suivi, dans cette 5 chaine CH par un autre bloc mémoire, - soit du fait que la donnée à restituer ne s'étend pas, dans la mémoire 1, au-delà d'un domaine D contigu de cet en-tête E, ce domaine présentant une longueur L égale à ladite indication de longueur lue à l'étape b'). Cette indication de chainage peut par exemple être contenue dans un 10 premier octet OC1 de l'en-tête E, l'indication de longueur susmentionnée étant contenue dans des octets suivants 0C2, 0C3 de cet en-tête E (voir figure 1B et 1C). Au cours de ce procédé de lecture, il est considéré par ailleurs, lorsque l'en-tête E contient seulement l'indication de longueur mentionnée ci-dessus 15 (c'est-à-dire lorsque cet en-tête E ne contient pas une telle indication de chainage) que ladite donnée à restituer ne s'étend pas, dans la mémoire 1, au-delà du domaine D contigu de cet en-tête E et qui présente une longueur L égale à ladite indication de longueur lue à l'étape b'). En pratique, le processeur lit le premier octet OC, OC1 de l'en-tête E et, 20 si cet octet vaut 251 ou 252, lit les octets suivants 0C2, 0C3 qui sont dans ce cas indicatifs de la longueur du domaine D. Ce procédé de lecture se poursuit par une étape c'), au cours de laquelle le contenu de ce domaine D est lu. Lorsque l'étape b') a montré que la donnée à restituer ne s'étend pas au-25 delà de ce domaine D (valeur du premier octet OC, OC1 différente de 252), le procédé de lecture se termine, la donnée à restituer ayant été entièrement lue. Lorsque l'étape b') a montré que la donnée à restituer est contenue au sein de la mémoire 1, sous la forme d'une chaine CH de plusieurs blocs mémoires BI distincts (valeur du premier octet OC1 égale à 252), ce processus de lecture se 30 poursuit par la lecture de l'ensemble des blocs mémoires de cette chaine CH. Plus précisément, ce procédé de lecture comprend alors, après l'étape c'), une étape d') comportant la lecture, dans la mémoire 1, à la suite du bloc D dont le contenu a été lu à l'étape c'), d'une adresse de chainage. Cette adresse de chainage est distincte de l'adresse qui a été lue dans la première zone Z1 de la 3045864 23 mémoire 1 à l'étape a'). Le premier bloc mémoire BI de cette chaîne CH comprend l'en-tête lu à l'étape b'), le domaine D contigu de cet en-tête E, et un élément de chainage AC, contigu de ce domaine D, et contenant l'adresse de chainage mentionnée ci- 5 dessus. Cet élément de chainage peut par exemple comprendre 4 octets dans lesquels est écrite cette adresse de chainage. Le procédé de lecture se poursuit ensuite par la lecture du bloc mémoire BI suivant de cette chaine CH de blocs mémoires, à partir de l'adresse de chainage lue à l'étape d'), puis, s'il y a lieu, des autres blocs mémoires de cette 10 chaine CH. La lecture de chacun de ces blocs mémoires est réalisée de manière similaire, au cours des étapes suivantes : bb') lecture, à partir de position repérée par l'adresse de chainage lue dans le bloc mémoire précédent, d'un en-tête E comprenant une indication de 15 longueur, cc') lecture du contenu d'un domaine D de la mémoire 1 contigu de l'entête E lu à l'étape bb'), ce domaine D présentant une longueur égale à ladite indication de longueur, et dd') lorsque l'en-tête E lu à l'étape bb') contient une indication de 20 chainage représentative du fait que le domaine D contigu de cet en-tête E est chainé avec un autre domaine de la mémoire 1, c'est-à-dire lorsque ce bloc mémoire BI est suivi, dans cette chaine CH, par un autre bloc mémoire : - lecture, à la suite du domaine D lu à l'étape cc'), d'une adresse de chainage repérant la position du bloc mémoire suivant (dans la deuxième zone Z2 25 de la mémoire 1), puis - exécution à nouveau des étapes bb'), cc') et dd'). Ce procédé de lecture se termine par la lecture du dernier bloc mémoire BI de cette chaine CH de blocs mémoires, pour lequel ladite indication de chainage soit est absente de l'en-tête E contenu dans ce bloc mémoire, soit 30 indique que ce bloc mémoire n'est pas chainé (c'est-à-dire qu'il n'est pas suivi, dans cette chaine CH de blocs mémoires, par un autre bloc mémoire). La donnée à restituer ainsi obtenue est formée de l'ensemble des contenus de ces domaines D, lus successivement dans les blocs mémoires de cette chaine et mis les uns à la suite des autres. REVENDICATIONS1. Procédé d'écriture d'une donnée à stocker dans une mémoire (1), comprenant une étape de : a) lecture ou d'écriture d'une adresse dans une première zone (Z1) de la mémoire (1), cette adresse repérant une position située dans une deuxième zone (Z2) de la mémoire (1), caractérisé en ce que ce procédé comprend de plus les étapes suivantes : b) écriture, à partir de ladite position, d'un en-tête (E) comprenant une indication de longueur représentative d'une longueur d'au moins une partie de la donnée à stocker, et c) écriture de cette partie de la donnée à stocker, dans un domaine (D) de la mémoire (1) contigu dudit en-tête (E), la longueur (L) de ce domaine (D) étant égale à la longueur de cette partie de la donnée à stocker. 2. Procédé d'écriture selon la revendication 1, dans lequel ledit en-tête (E) a dans la mémoire (1) une longueur (LE) déterminée en fonction de la longueur (L) dudit domaine contigu. 3. Procédé d'écriture selon la revendication 2, dans lequel, lorsque la longueur (L) dudit domaine contigu est inférieure à un premier seuil prédéterminé, alors, la longueur (LE) dudit en-tête (E) correspond à un premier nombre d'octets. 4. Procédé d'écriture selon l'une des revendications 2 et 3, dans lequel, lorsque la longueur (L) dudit domaine contigu est supérieure audit premier seuil, alors, l'en-tête (E) est écrit à l'étape b) de manière à présenter : - ledit premier nombre d'octets, dans lesquels est écrite une valeur prédéterminée, suivis par - un deuxième nombre d'octets dans lesquels est écrite ladite indication de longueur. 5. Procédé d'écriture selon la revendication 4, dans lequel ladite valeur prédéterminée est représentative d'une indication de chainage, indiquant que l'intégralité de la donnée à stocker est écrite dans ledit domaine (D) contigu, ou que la donnée à stocker est écrite sous la forme d'une chaine (CH) de plusieurs blocs mémoires (B13, B132, B133) distincts. 6. Procédé d'écriture selon l'une des revendications 4 et 5, dans lequel 3045 864 25 ladite valeur prédéterminée est représentative du fait que l'en-tête comprend un nombre d'octets supérieur audit premier nombre d'octets. 7. Procédé d'écriture selon l'une des revendications 4 à 6, dans lequel ladite valeur prédéterminée et ledit deuxième nombre d'octets sont déterminés 5 chacun en fonction de la longueur (L) dudit domaine (D) contigu. 8. Procédé d'écriture selon l'une des revendications 1 à 7, dans lequel, lorsque la mémoire (1) présente, à partir de ladite position, un espace disponible suffisamment long pour y écrire l'intégralité de la donnée à stocker ainsi que l'entête (E) correspondant, alors, ladite indication de longueur est représentative de la 10 longueur de l'intégralité de la donnée à stocker, et l'intégralité de la donnée à stocker est écrite dans ledit domaine (D) contigu dudit en-tête (E), au cours de l'étape c). 9. Procédé d'écriture selon l'une des revendications 1 à 8, dans lequel, lorsque la longueur de la donnée à stocker est inférieure à un deuxième seuil, 15 ladite indication de longueur est représentative de la longueur de l'intégralité de la donnée à stocker, et l'intégralité de la donnée à stocker est écrite dans ledit domaine (D) contigu dudit en-tête (E), au cours de l'étape c). 10. Procédé d'écriture selon l'une des revendications 1 à 9, dans lequel : - lorsque la mémoire présente, à partir de ladite position, un espace 20 disponible de longueur insuffisante pour y écrire l'intégralité de la donnée à stocker ainsi que l'en-tête (E) correspondant, - et que la longueur de la donnée à stocker est supérieure audit deuxième seuil, alors, la donnée à stocker est écrite sous la forme d'une chaine (CH) de 25 plusieurs blocs mémoires (B13, B132, B133) distincts, un premier bloc mémoire (B13) de cette chaine (CH) étant écrit dans la mémoire (1) à partir de la position repérée par ladite adresse, et chaque bloc mémoire (B13, B132, B133) de ladite chaine (CH) comprenant : 30 - un domaine (D), dans lequel on écrit une partie de la donnée à stocker, ce domaine étant entièrement occupé par cette partie de la donnée à stocker, et - un en-tête (E), dans lequel on écrit une indication de longueur représentative de la longueur (L) dudit domaine (D) contenu dans ce bloc mémoire. 3045864 26 11. Procédé d'écriture selon la revendication 10, dans lequel, ladite chaîne (CH) de blocs mémoires (B13, B132, B133) est écrite de manière que chaque bloc mémoire (B13, B132) de cette chaine (CH) suivi dans cette chaîne par un autre bloc mémoire (B132, B133) contient un domaine (D) présentant une 5 longueur supérieure audit deuxième seuil. 12. Procédé d'écriture selon l'une des revendications 10 et 11, dans lequel, lorsqu'un bloc mémoire (B13, B132) de ladite chaine (CH) est suivi dans cette chaîne par un autre bloc mémoire (B132, B133), alors, l'en-tête (E) contenu dans ce bloc mémoire est écrit de manière à contenir une indication de chainage 10 indiquant que ce bloc mémoire est suivi, dans ladite chaine, par un autre bloc mémoire. 13. Procédé d'écriture selon la revendication 12, dans lequel, lorsqu'un bloc mémoire (B13, B132) de ladite chaine (CH) est suivi dans cette chaîne par un autre bloc mémoire (B132, B133), alors, l'en-tête (E) contenu dans ce bloc mémoire 15 est écrit de manière à présenter : - ledit premier nombre d'octets, dans lesquels est écrite ladite indication de chainage, sous la forme d'une valeur prédéterminée, suivis par - ledit deuxième nombre d'octets dans lesquels est écrite ladite indication de longueur. 20 14. Procédé d'écriture selon l'une des revendications 10 à 13, dans lequel, lorsqu'un bloc mémoire (B13, B132) de ladite chaine (CH) est suivi dans cette chaîne par un autre bloc mémoire (B132, B133), alors, ce bloc mémoire (B13, B132) comprend en outre une adresse de chainage (ADC1, ADC2), distincte de ladite adresse lue ou écrite dans la première zone (Z1) de la mémoire (1) à l'étape 25 a), et repérant une autre position de la deuxième zone (Z2) de la mémoire (1) à partir de laquelle on écrit le bloc mémoire (B132, B133) suivant de cette chaine (CH). 15. Procédé d'écriture selon l'une des revendications 1 à 14, dans lequel la mémoire (1) est intégrée dans un élément sécurisé ou une carte à microcircuit. 30 16. Procédé de lecture dans une mémoire (1), comprenant une étape de a') lecture, dans une première zone (Z1) de la mémoire (1), d'une adresse repérant une position située dans une deuxième zone (Z2) de la mémoire (1), 3045 864 27 caractérisé en ce que ce procédé comprend de plus les étapes suivantes : b') lecture dans la mémoire (1), à partir de ladite position, d'un en-tête (E) contenant une indication de longueur, et 5 c') lecture du contenu d'un domaine (D) de la mémoire (1) contigu dudit en-tête (E) et présentant une longueur égale à ladite indication de longueur. 17. Procédé de lecture selon la revendication 16, dans lequel - l'étape b') comprend la lecture d'un premier nombre d'octets dudit en- tête (E), 10 - et dans lequel, lorsqu'une valeur lue dans ce premier nombre d'octets est inférieure à un premier seuil prédéterminé, alors, ladite indication de longueur est égale à ladite valeur lue dans ce premier nombre d'octets. 18. Procédé de lecture selon la revendication 17, dans lequel, lorsque ladite valeur lue dans le premier nombre d'octets de l'en-tête (E) 15 est supérieure audit premier seuil, alors, l'étape b') comprend en outre la lecture, dans un deuxième nombre d'octets situés dans la mémoire à la suite dudit premier nombre d'octets, de ladite indication de longueur. 19. Procédé de lecture selon l'une des revendications 16 à 19, dans 20 lequel il est prévu en outre, lorsque ledit en-tête (E) lu à l'étape b') contient une indication de chainage représentative du fait que le domaine (D) contigu de cet en-tête (E) est chainé avec un autre domaine de la mémoire (1), de d') lire, à la suite dudit domaine (D), une adresse de chainage, distincte 25 de ladite adresse lue dans la première zone (Z1) de la mémoire (1) à l'étape a'), cette adresse de chainage (ADC1, ADC2) repérant une autre position de la deuxième zone (Z2) de la mémoire (1), puis de bb') lire, à partir de ladite autre position, un en-tête (E) comprenant une indication de longueur, puis de 30 cc') lire le contenu d'un domaine (D) de la mémoire (1) contigu dudit en- tête (E) lu à l'étape bb'), ce domaine (D) présentant une longueur égale à ladite indication de longueur. 20. Procédé de lecture selon la revendication 19, dans lequel il est prévu en outre, de 3045864 28 dd') lorsque l'en-tête (E) lu à l'étape bb') contient une indication de chaînage représentative du fait que le domaine (D) contigu de cet en-tête (E) est chainé avec un autre domaine de la mémoire (1) : - lire, à la suite du domaine (D) lu à l'étape cc'), une adresse de 5 chainage (ADC1, ADC2), repérant une autre position de la deuxième zone (Z2) de la mémoire (1), puis de - réitérer l'exécution des étapes bb'), cc') et dd'). 21. Procédé de lecture selon l'une des revendications 16 à 20, dans lequel la mémoire (1) est intégrée dans un élément sécurisé ou une carte à 10 microcircuit. 22. Procédé comprenant : - l'écriture d'une donnée à stocker, selon un procédé d'écriture conforme à l'une des revendications 1 à 15, et - la lecture de la donnée ainsi écrite, selon un procédé de lecture 15 conforme à l'une des revendications 16 à 21. 23. Mémoire (1) comprenant une première zone (Z1) et une deuxième zone (Z2), la première zone (Z1) de la mémoire (1) contenant au moins une adresse repérant une position située dans la deuxième zone (Z2) de la mémoire (1), 20 caractérisée en ce que la mémoire (1) comprend en outre : - à partir de ladite position, un en-tête (E) contenant une indication de longueur, ainsi qu' - un domaine (D) contigu dudit en-tête (E), de longueur (L) correspondant à l'indication de longueur contenue dans cet en-tête, ce domaine (D) étant 25 entièrement occupé par une donnée qu'il contient.