FR 3050844 A1 20171103 FR 1653719 A 20160427 1 Procédé d'allocation d'espace mémoire DOMAINE DE L'INVENTION La présente invention concerne un procédé d'allocation d'espace dans une mémoire. ETAT DE LA TECHNIQUE De façon conventionnelle, l'écriture de données dans une mémoire est précédée par une étape d'allocation d'espace dans la mémoire, cet espace servant à héberger les futures données. Sur la base d'une taille à allouer passée en paramètre, un algorithme d'allocation recherche et sélectionne une zone de la mémoire ayant au moins cette taille et qui est marquée comme libre dans la mémoire (c'est-à-dire non déjà allouée). Typiquement, l'algorithme d'allocation retourne une adresse de la zone sélectionnée. Un algorithme d'allocation est généralement déterministe : pour une configuration de la mémoire déterminée, et pour une taille à allouer déterminée, la zone sélectionnée dans la mémoire par l'algorithme est toujours la même. A cet égard, on connaît des algorithmes d'allocation poursuivant des objectifs différents et même concurrents. Par exemple, certains algorithmes déterministes recherchent et sélectionnent une zone de la mémoire qui minimise la durée d'exécution de l'algorithme d'allocation mais qui est susceptible de fragmenter la mémoire. D'autres algorithmes déterministes, plus lents, recherchent et sélectionnent une zone de la mémoire qui minimise la fragmentation de la mémoire. Certaines mémoires sont tout particulièrement destinées à stocker des données confidentielles. C'est le cas des mémoires des dispositifs que l'on appelle éléments sécurisés » (« Secure Element » en anglais). Pour cette raison, il est important de protéger la confidentialité et l'intégrité du contenu des mémoires de tels éléments sécurisés contre différents types d'attaques: altération, observation, 30 perturbation. Une méthode d'attaque d'élément sécurisée connue consiste à trouver la localisation précise d'une donnée sensible dans la mémoire afin de la modifier 3050844 2 directement, ou d'en perturber la lecture ou l'écriture, ou d'en observer l'utilisation afin d'en déduire la valeur. Dans le cas d'un modèle d'élément sécurisé produit en série, à faible coût, et mettant en oeuvre une méthode d'allocation déterministe, alors une attaque par 5 localisation de donnée sensible dans la mémoire d'un échantillon donné de ce modèle peut être répliquée à volonté pour tout autre échantillon du même modèle, sans effort additionnel à fournir. Pour protéger une mémoire d'élément sécurisé contre une telle attaque par localisation de donnée, il a été proposé d'utiliser une méthode d'allocation 10 d'espace mémoire aléatoire (ASLR ou - Address space layout randomization »). De la sorte, la zone allouée n'est pas toujours la même, pour une taille d'espace déterminée et pour une configuration mémoire déterminée, si bien qu'une donnée particulière pourra se trouver à des endroits différents de la mémoire, pour deux exécutions différentes (par exemple sur deux échantillons différents du même 15 modèle d'élément sécurisé). Toutefois, la mise en oeuvre d'une telle méthode peut supprimer les avantages liés à une allocation déterministe : une telle méthode peut ainsi s'avérer plus lente et/ou fragmenter davantage la mémoire qu'une allocation déterministe. 20 EXPOSE DE L'INVENTION Un but de l'invention est donc de protéger efficacement une mémoire contre des attaques de type - localisation de données », tout en conservant les avantages d'une méthode d'allocation déterministe. 25 Il est dès lors proposé, selon un premier aspect de l'invention, un procédé d'allocation d'un espace de taille prédéterminée dans une mémoire, comprenant des étapes de : - présélection déterministe, dans la mémoire, d'au moins une zone libre ayant une taille supérieure à la taille prédéterminée, - sélection, dans une zone libre présélectionnée, d'une sous-zone ayant une taille égale à la taille prédéterminée, la sélection de la sous-zone étant variable pour une même zone libre présélectionnée, 3050844 3 - utilisation de la sous-zone sélectionnée comme espace mémoire alloué. L'étape de présélection de la zone libre suit une politique déterministe : sa mise en oeuvre permet de donc de bénéficier des avantages procurés par cette politique déterministe. 5 Au contraire de la zone libre, qui est entièrement déterminable à partir de la taille prédéterminée demandée et de la configuration courante de la mémoire, une sous-zone est sélectionnée de façon variable. En d'autres termes, pour une zone présélectionnée déterminée, et pour une configuration déterminée de la mémoire, deux exécutions différentes de l'étape de sélection de la sous-zone 10 peuvent fournir deux résultats différents, c'est-à-dire sélectionner deux sous- zones différentes à l'intérieur de la zone libre. Ainsi, le procédé proposé permet de protéger efficacement une telle mémoire contre des attaques de type localisation de données ». En définitive, le procédé d'allocation ainsi proposé permet de conserver les 15 avantages de la politique d'allocation déterministe mise en oeuvre au cours de l'étape de présélection, tout en y ajoutant une possibilité de diversification (grâce à l'étape de sélection variable de la sous-zone). Le procédé d'allocation présente en outre d'autres avantages : - il ne nécessite à aucun moment d'allouer de l'espace supplémentaire par 20 rapport au mécanisme d'allocation mémoire normal ; - il est applicable à tous types de mémoires (volatile et non volatile) ; - il applicable à des allocations en vue de la mémorisation de données et de code de programme (par exemple du code Java) ; - il permet, si nécessaire, de répliquer à volonté une cartographie mémoire ; 25 - il ne nécessite que très peu de ressources ; - il est rapide d'exécution. Lorsque l'étape de présélection déterministe utilise une politique de type first-fit », alors le procédé d'allocation offre un bon compromis entre rapidité d'exécution et protection contre des attaques de de type - localisation de 30 données ». Lorsque l'étape de présélection déterministe utilise une politique de type next-fit », alors le procédé d'allocation est encore plus rapide qu'avec la politique 3050844 4 first-fit », mais nécessite de conserver en mémoire des informations relatives à la dernière allocation effectuée. Lorsque l'étape de présélection déterministe utilise une politique de type best-fit », alors le procédé d'allocation offre un bon compromis entre minimisation 5 de la fragmentation de la mémoire et protection contre des attaques de type localisation de données ». La sous-zone peut être choisie parmi plusieurs sous-zones candidates incluses dans la zone libre présélectionnée, dont : - une première sous-zone candidate ayant une adresse de début égale à 10 l'adresse de début de la zone libre sélectionnée, et/ou - une deuxième sous-zone candidate ayant une adresse de fin égale à l'adresse de fin de la zone libre sélectionnée, et/ou - une troisième sous-zone candidate ayant une adresse de début strictement supérieure à l'adresse de début de la zone libre sélectionnée, et une 15 adresse de fin strictement inférieure à l'adresse de fin de la zone libre sélectionnée. Dans le cas où les sous-zones candidates sont constituées uniquement de la première sous-zone et de la deuxième sous-zone mentionnées ci-dessus, le procédé d'allocation mis en oeuvre minimise fortement la fragmentation de la 20 mémoire. Dans le cas où les sous-zones candidates comprennent la première sous-zone, la deuxième sous-zone et au moins une troisième zone mentionnées ci-dessus, le procédé d'allocation permet d'obtenir une cartographie mémoire davantage diversifiée. 25 La sous-zone peut être choisie aléatoirement dans la zone libre sélectionnée, ce qui permet de rendre totalement imprévisible le résultat de l'allocation, et par conséquent de rendre de rendre imprévisible l'emplacement d'une donnée à écrire en mémoire. Alternativement, la sous-zone peut être choisie pseudo-aléatoirement dans la 30 zone libre sélectionnée, ce qui permet d'aider un programmeur à débugger le code exécutant le procédé d'allocation, tout en rendant quasiment imprévisible le résultat de l'allocation. 3050844 5 La zone libre sélectionnée peut être d'un seul tenant et/ou la sous-zone être d'un seul tenant, ce qui simplifie l'implémentation du procédé d'allocation. Selon un deuxième aspect de l'invention, il est proposé un produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution 5 des étapes du procédé d'allocation selon le premier aspect de l'invention, lorsque ce programme est exécuté par au moins un processeur. Selon un troisième aspect de l'invention, il est proposé un élément sécurisé, tel qu'une carte à puce, comprenant au moins une mémoire, et au moins un processeur configure pour exécuter le produit programme d'ordinateur selon le 10 deuxième aspect de l'invention, en vue d'allouer de l'espace dans la mémoire. DESCRIPTION DES FIGURES D'autres caractéristiques, buts et avantages de l'invention ressortiront de la description qui suit, qui est purement illustrative et non limitative, et qui doit être 15 lue en regard des dessins annexés sur lesquels : - La figure 1 représente de façon schématique un élément sécurisé selon un mode de réalisation de l'invention. - La figure 2 est un organigramme d'étapes d'un procédé d'allocation d'espace mémoire selon un mode de réalisation de l'invention. 20 - Les figures 3, 4 et 5 représentent de façon schématique le contenu d'une mémoire dans trois états différents. Sur l'ensemble des figures, les éléments similaires portent des références identiques. 25 DESCRIPTION DETAILLEE DE L'INVENTION En référence la figure 1, un élément sécurisé 1 comprend au moins une mémoire 2 et au moins un processeur 3. L'élément sécurisé 1 est par exemple une carte à puce. La mémoire 2 est de type EEPROM, FLASH, disque dur, SSD ou tout autre type 30 de mémoire apte à mémoriser des données, en particulier des données confidentielles. 3050844 6 La mémoire 2 est par exemple destinée à mémoriser des clés cryptographiques. Le processeur 3 est configuré pour exécuter les instructions de code de programme d'un programme de gestion de la mémoire 2 de l'élément sécurisé 1. 5 Ce programme de gestion 2 met en oeuvre un procédé d'allocation dans le fonctionnement sera détaillé plus loin. Le programme 4 est également configuré pour exécuter les instructions de code de d'autres programmes, par exemple des programmes utilisateur, qui appellent le programme de gestion et accèdent en lecture et/ou en écriture à la 10 mémoire 2. Le programme de gestion de la mémoire 2 est par exemple mémorisé dans la mémoire 2 elle-même, ou dans une autre mémoire qui est dédiée à cet effet. Dans ce qui suit, on considère que la mémoire 2 présente une certaine taille en bits et que cette mémoire est divisée en unités mémoire, chaque unité 15 mémoire étant dans un état - libre » ou dans un état - alloué ». Chaque unité mémoire dispose d'une adresse qui lui est propre dans la mémoire. Dans le présent document, on considère qu'une zone de la mémoire 2 est définie par au moins une adresse de début, au moins une adresse de fin et une taille en nombre d'unités mémoire. En particulier, lorsque la zone considérée est 20 d'un seul tenant, cette zone peut être définie par une unique adresse de début et une unique adresse de fin. On peut également définir une zone d'un seul tenant par une adresse de début et une taille, l'adresse de fin étant alors égale à l'adresse de début plus la taille. Il est également supposé dans ce qui suit que l'adresse de fin d'une première 25 zone d'un seul tenant est égale à l'adresse de début d'une deuxième zone d'un seul tenant qui suit immédiatement la première zone dans la mémoire 2. En référence à la figure 2, un procédé d'allocation d'espace dans la mémoire 2 comprend les étapes suivantes. Un programme utilisateur appelle une fonction ou méthode d'allocation 30 implémentée dans le programme de gestion. Est passé en paramètre de cette fonction ou méthode une taille T à allouer (en nombre d'unités mémoire par exemple). 3050844 7 Dans une étape 100, le programme de gestion sélectionne dans la mémoire 2 au moins une zone libre de la mémoire 2 présentant une taille strictement supérieure à la taille T qui a été demandée, et qui est libre (c'est-à-dire constituée d'unités mémoire chacune dans l'état - libre »). 5 Cette présélection est conduite selon une politique déterministe. L'étape de présélection 100 est par exemple conduite selon la politique déterministe - first-fit ». Dans ce cas, le programme de gestion parcourt la mémoire selon un sens de parcours prédéterminé (par exemple, par adresse croissante ou par adresse décroissante). Le programme de gestion présélectionne 10 la première zone libre trouvée en mémoire ayant une taille supérieure ou égale à la taille demandée. Cette politique - first-fit » est particulièrement rapide d'exécution. En variante, la présélection 100 est conduite selon la politique - next-fit ». Dans ce cas, plutôt que de parcourir l'intégralité de la mémoire pour déterminer 15 une zone libre suffisamment grande en partant d'une extrémité de la mémoire, conformément à la politique - first-fit », le programme de gestion parcourt la mémoire selon un sens de parcours prédéterminé en partant de l'adresse de la dernière allocation effectuée par le programme de gestion. Ainsi, la rapidité d'exécution de la présélection est encore plus rapide qu'avec la politique - first- 20 fit », moyennant toutefois la mémorisation des informations relatives à la dernière allocation effectuée (par exemple l'adresse de début de la dernière zone allouée. Dans une autre variante, la présélection 100 est conduite selon la politique best-fit », connue de l'homme du métier. Dans ce cas, la zone présélectionnée à l'issue de l'étape 100 est une zone dont la taille est supérieure à, mais au plus 25 proche de la taille T, ce qui permet de minimiser la fragmentation de la mémoire 2 induite par l'allocation en cours. La figure 3 illustre de façon schématique une mémoire 2 comprenant 20 unités mémoire, chaque unité étant représentée par un rectangle. Les unités mémoires dans l'état - libre » sont représentées en blanc, et les unités mémoire 30 en gris sont dans l'état - alloué ». Par convention, l'unité en haut à gauche de la figure 4 a l'adresse de début de la mémoire (par exemple l'adresse - zéro »), et l'unité mémoire 2 en bas à droite de la figure 4 a l'adresse de fin de la mémoire 2. 3050844 8 Ainsi la mémoire 2 représentée en figure 4 comporte les zones successives suivantes, depuis son adresse de début jusqu'à son adresse de fin : - une zone Z1 allouée de taille 3 (comptée en nombre d'unités mémoire) ; - une zone Z2 libre de taille 13 ; 5 - une taille Z3 allouée de taille 5 ; et - une zone Z4 libre de taille 3. Par exemple, si T=4, ne peut être présélectionnée au cours de l'étape 100 que la zone Z2 de puisqu'il s'agit de la seule zone libre qui est de taille supérieure à 4. 10 Néanmoins, dans d'autres configurations de la mémoire 2, il se peut que plusieurs zones puissent remplir simultanément le critère fixé par la politique déterministe utilisée au cours de l'étape de présélection 100. Par exemple, dans le cas où la politique - best-fit » est utilisée au cours de l'étape de présélection 100, plusieurs zones minimisant la fragmentation de la mémoire en des proportions 15 identiques peuvent être présélectionnées 100 (par exemple plusieurs zones libres trouvées présentant des tailles identiques). Lorsque plusieurs zones sont ainsi présélectionnées 100, l'une de ces zones présélectionnée est sélectionnée dans une étape 102. La sélection 102 peut être conduite de façon aléatoire ou de façon pseudo20 aléatoire. Dans une étape 104, le programme de gestion procède à la sélection d'une sous-zone qui se trouve à l'intérieur de la zone libre sélectionnée au cours de l'étape 102 (ou présélectionnée de façon unique au cours de l'étape 100). La sous-zone sélectionnée a une taille égale à la taille T demandée. 25 Au contraire de l'étape 100, qui met en oeuvre une politique déterministe, la sous-zone sélectionnée au cours de l'étape 104 est variable. En d'autres termes, pour une zone présélectionnée déterminée, et pour une configuration déterminée de la mémoire 2, deux exécutions différentes de l'étape 104 par le programme de gestion mémoire peuvent fournir deux résultats différents, c'est-à-dire 30 sélectionner deux sous-zones différentes de la zone libre. Dans un mode de réalisation, la sélection 104 de la sous zone est aléatoire. A cette fin, un générateur de nombres aléatoires (RNG) est utilisé par le programme 3050844 9 de gestion. Il est dans ce cas parfaitement impossible de prédire la sous zone qui va être sélectionnée par le programme de gestion au cours d'une exécution future de l'étape 104, ce qui permet d'améliorer grandement la protection de l'élément sécurisé contre des attaques visant à localiser l'emplacement de données 5 sensibles. Une telle sélection 104 aléatoire peut par exemple se fonder sur des phénomènes physiques imprévisibles, tels qu'un courant électrique circulant dans l'élément sécurisé 1. Dans un autre mode de réalisation, la sélection 104 de la sous zone est pseudo-aléatoire. A cette fin, un générateur de nombres pseudo-aléatoires (PRNG) 10 est utilisé par le programme de gestion. Dans ce cas, il est possible de prédire une sélection prochaine mise en oeuvre par le programme de gestion, moyennant la connaissance des paramètres du générateur pseudo-aléatoire utilisé (en général, au moins un de ces paramètres est une graine). Une telle sélection 104 pseudoaléatoire est particulièrement avantageuse à des fins de debug par un 15 programmeur qui implémente le programme de gestion, tout en fournissant un degré de sécurisé raisonnable pour l'élément sécurisé 1 ; la prédiction susmentionnée reste en effet très difficile à effectuer sans la connaissance des paramètres du générateur pseudo-aléatoire utilisé. La sous-zone est sélectionnée parmi plusieurs sous-zones candidates incluses 20 dans la zone libre présélectionnée (et de taille T). Dans le cas où l'étape 104 est configurée pour rechercher une sous-zone qui est d'un seul tenant, dans une zone libre elle-même d'un seul tenant, les sous-zones candidates se distinguent uniquement par des adresses de début différentes ; ces sous-zones sont simplement décalées les unes par rapport aux 25 autres dans la zone libre présélectionnée. Une première sous-zone candidate a une adresse de début égale à l'adresse de début de la zone libre sélectionnée. La figure 4 illustre un tel choix : la zone libre sélectionnée Z2, de taille 13, a A2 comme adresse de début ; peut être sélectionnée au cours de l'étape 104 la sous-zone SZ2a de taille T ayant A2 comme 30 adresse de début (la sous zone sélectionnée a donc A2+T comme adresse de fin). Une deuxième sous-zone candidate a une adresse de fin égale à l'adresse de fin de la zone libre sélectionnée. La figure 5 illustre un tel choix : la zone libre 3050844 10 sélectionnée Z2, de taille 13, a B2=A2+13 comme adresse de fin ; peut être sélectionnée au cours de l'étape 104 la sous-zone SZ2b de taille T ayant B2 comme adresse de fin (la sous-zone sélectionnée a donc B2-T comme adresse de début). D'autres sous-zones candidates sont également envisageables, chacune de 5 ces autres sous-zones candidates ayant une adresse de début strictement supérieure à l'adresse de début de la zone libre sélectionnée, et une adresse de fin strictement inférieure à l'adresse de fin de la zone libre sélectionnée. Dans la configuration illustrée en figure 4, et pour T=4, il existe 8 sous-zones candidates respectant ces conditions. 10 Très avantageusement, les sous-zones candidates sont constituées de la première sous-zone (en début de la zone libre) et de la deuxième sous-zone (en fin de la zone libre) susmentionnées. Ceci permet de limiter de façon importante la fragmentation de la mémoire 2. En effet, chacune des deux sous-zones sélectionnables 104 sont contigües à des zones déjà allouées (Z1 et Z3 dans 15 l'exemple illustré sur les figures 3 à 5). Dans ce mode de réalisation à deux sélections candidates, la cartographie de la mémoire 2 varie alors suivant la puissance de 2 du nombre de zones allouées. Dans une carte à puce, il est commun d'allouer plusieurs dizaines voire plusieurs centaines de zones différentes en vue de mémoriser des données distinctes, ce qui introduit une variabilité conséquente 20 de la cartographie d'un échantillon d'un modèle d'élément sécurisé à l'autre. Dans une étape 106, le programme utilise la sous-zone sélectionnée au cours de l'étape 104 comme espace alloué. Cette utilisation 106 comprend par exemple un marquage des unités mémoire constituant la sous-zone sélectionnée dans l'état - alloué ». Bien entendu, les 25 autres unités mémoire contenue dans la zone libre sélectionnée au cours de l'étape 100 restent dans l'état - libre », donc sont disponibles pour une demande d'allocation subséquente. Dans le cas illustré sur les figures 4 et 5 pour T=4, la zone libre Z2 est de taille 13 donc il reste à l'issue de l'étape 106, 9 unités mémoires libres localisés entre les zones Z2 et Z3 allouées. 30 L'utilisation 106 comprend en outre la fourniture, au programme ayant demandé l'allocation d'un espace de taille T, une adresse de la sous-zone allouée (par exemple son adresse de début). 3050844 11 Lorsque le procédé d'allocation est implémenté dans une fonction ou méthode de programme prenant en paramètre la taille T, cette adresse peut être un résultat retourné par cette fonction ou méthode. A ce stade, des données peuvent être écrites dans la sous-zone allouée. 5 Lorsque la politique - next-fit » est utilisée au cours de l'étape de présélection 100, alors le programme de gestion mémorise en outre des informations relatives à la sous-zone allouée (typiquement son adresse de début). En réponse à une demande d'allocation subséquente, le programme de gestion parcourra la mémoire 2 selon un sens de parcours prédéterminé, en commençant 10 par cette adresse mémorisée. La libération d'une zone précédemment allouée au moyen du procédé selon l'invention est mise en oeuvre de façon classique. A l'issue d'une telle libération, les unités mémoire constituant la zone libérée sont configurées dans l'état libre ». 15 Le procédé d'allocation d'espace mémoire n'est évidemment pas limité au mode de réalisation qui vient décrit en relation avec les figures. En particulier, il a été pris l'exemple dans ce qui précède que les zones examinées par le programme de gestion mémoire sont d'un seul tenant. En particulier, le procédé selon l'invention peut être généralisé de sorte que l'étape de présélection 100 et/ou 20 l'étape de sélection 102 et/ou l'étape de sélection 104 donnent comme résultats respectifs des zones mémoires qui ne sont pas forcément d'un seul tenant, mais constituées de plusieurs blocs d'un seul tenant. REVENDICATIONS1. Procédé d'allocation d'un espace de taille prédéterminée dans une mémoire (2), caractérisé en ce qu'il comprend des étapes de : - présélection (100) déterministe, dans la mémoire (2), d'au moins une zone libre ayant une taille supérieure à la taille prédéterminée, - sélection (104), dans une zone libre présélectionnée, d'une sous-zone ayant une taille égale à la taille prédéterminée, la sélection de la sous-zone étant variable pour une même zone libre présélectionnée, - utilisation (106) de la sous-zone sélectionnée comme espace mémoire alloué. 2. Procédé selon la revendication précédente, dans lequel la sous-zone est choisie parmi plusieurs sous-zones candidates incluses dans la zone libre présélectionnée, dont une première sous-zone candidate ayant une adresse de début égale à l'adresse de début de la zone libre sélectionnée. 3. Procédé selon l'une des revendications précédentes, dans lequel la sous-zone est choisie parmi plusieurs sous-zones candidates incluses dans la zone libre présélectionnée, dont une deuxième sous-zone candidate ayant une adresse de fin égale à l'adresse de fin de la zone libre sélectionnée. 4. Procédé selon l'une des revendications précédentes, dans lequel la sous-zone est choisie parmi plusieurs sous-zones candidates incluses dans la zone libre présélectionnée, dont une troisième sous-zone candidate ayant une adresse de début strictement supérieure à l'adresse de début de la zone libre sélectionnée, et une adresse de fin strictement inférieure à l'adresse de fin de la zone libre sélectionnée. 5. Procédé selon la revendication 2 et la revendication 3 prises en combinaison, dans lequel les sous-zones candidates sont constituées de la première sous-zone et de la deuxième sous-zone. 3050844 13 6. Procédé selon l'une des revendications précédentes, dans lequel la sous-zone est choisie (102) aléatoirement dans la zone libre sélectionnée. 5 7. Procédé selon l'une des revendications 1 à 5, dans lequel la sous-zone est choisie (102) pseudo-aléatoirement dans la zone libre sélectionnée. 8. Procédé selon l'une des revendications précédentes, dans lequel la zone libre sélectionnée (100) est d'un seul tenant et/ou dans lequel la sous-zone réservée est 10 d'un seul tenant. 9. Procédé selon l'une des revendications précédentes, dans lequel la présélection déterministe (100) utilise une politique de type - best-fit ». 15 10. Procédé selon l'une des revendications 1 à 8, dans lequel la présélection déterministe (100) utilise une politique de type - next fit ». 11. Procédé selon l'une des revendications 1 à 8, dans lequel la présélection déterministe (100) utilise une politique de type - first-fit ». 12. Procédé selon l'une des revendications précédentes, dans lequel, si plusieurs zones libres sont présélectionnées (100), alors l'étape de sélection (104) de la sous-zone est mise en oeuvre dans une zone libre choisie (102) aléatoirement ou pseudo-aléatoirement parmi les zone libres présélectionnées (100). 13. Produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé d'allocation selon l'une de revendications précédentes, lorsque ce programme est exécuté par au moins un processeur (3). 14. Elément sécurisé (1), tel qu'une carte à puce, comprenant : - au moins une mémoire (2), 20 25 30 3050844 14 - au moins un processeur (3) configure pour exécuter le produit programme d'ordinateur selon la revendication précédente, en vue d'allouer de l'espace dans la mémoire (2).