FR3114671A1 - Embedded secure element - Google Patents

Embedded secure element Download PDF

Info

Publication number
FR3114671A1
FR3114671A1 FR2009752A FR2009752A FR3114671A1 FR 3114671 A1 FR3114671 A1 FR 3114671A1 FR 2009752 A FR2009752 A FR 2009752A FR 2009752 A FR2009752 A FR 2009752A FR 3114671 A1 FR3114671 A1 FR 3114671A1
Authority
FR
France
Prior art keywords
application
volatile memory
execution
volatile
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
FR2009752A
Other languages
French (fr)
Inventor
Olivier Van Nieuwenhuyze
Amedeo Veneroso
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Proton World International NV
STMicroelectronics SRL
Original Assignee
Proton World International NV
STMicroelectronics SRL
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Proton World International NV, STMicroelectronics SRL filed Critical Proton World International NV
Priority to FR2009752A priority Critical patent/FR3114671A1/en
Priority to EP21770041.8A priority patent/EP4217864A1/en
Priority to CN202180066115.9A priority patent/CN116235147A/en
Priority to PCT/EP2021/075778 priority patent/WO2022063720A1/en
Priority to CN202180066011.8A priority patent/CN116209982A/en
Priority to PCT/EP2021/075780 priority patent/WO2022063721A1/en
Priority to US17/479,275 priority patent/US20220004625A1/en
Priority to US17/479,255 priority patent/US20220004509A1/en
Priority to EP21770040.0A priority patent/EP4217861A1/en
Publication of FR3114671A1 publication Critical patent/FR3114671A1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Elément sécurisé embarqué La présente description concerne un système électronique embarqué ou un procédé mis en oeuvre par un tel système, comportant : au moins une mémoire volatile (RAM) ; et au moins un système d'exploitation de bas niveau gérant l'allocation de zones de la mémoire volatile à plusieurs systèmes d’exploitation de haut niveau comportant chacun une ou plusieurs applications, dans lequel ladite mémoire volatile comporte : au moins une première partie (PRAM30) réservée à des données d'exécution d'une première application (App30) ; et au moins une deuxième partie destinée à stocker des données d'exécution d'au moins une deuxième application (App31), les données d'exécution de la première application restant dans la mémoire volatile en cas de désactivation ou de mise en veille de cette première application. Figure pour l'abrégé : Fig. 4Embedded secure element This description relates to an embedded electronic system or a method implemented by such a system, comprising: at least one volatile memory (RAM); and at least one low-level operating system managing the allocation of volatile memory areas to several high-level operating systems each comprising one or more applications, wherein said volatile memory comprises: at least a first part ( PRAM30) reserved for execution data of a first application (App30); and at least a second part intended to store execution data of at least one second application (App31), the execution data of the first application remaining in the volatile memory in the event of deactivation or standby of this first app. Figure for the abstract: Fig. 4

Description

Elément sécurisé embarquéEmbedded secure element

La présente description concerne de façon générale les systèmes électroniques et, plus particulièrement, les systèmes électroniques embarqués. La présente description concerne, encore plus particulièrement, l'utilisation de mémoires dans un système électronique embarqué.The present description generally relates to electronic systems and, more particularly, to on-board electronic systems. The present description relates, even more particularly, to the use of memories in an on-board electronic system.

Un système électronique embarqué est un système électronique et logiciel autonome adapté à être embarqué dans un appareil électronique et/ou un équipement électronique.An embedded electronic system is an autonomous electronic and software system adapted to be embedded in an electronic device and/or electronic equipment.

Les difficultés de conception d'un système embarqué sont fréquemment liées à des contraintes de gestion de mémoires internes ou externes au système embarqué. Le système peut comprendre des mémoires non volatiles réinscriptibles ou non et des mémoires volatiles, chacune adaptée à stocker des données de différents types avec les contraintes et atouts propres à chaque type de mémoire. La gestion de ces mémoires engendre des contraintes en termes de sécurité des données en particulier lorsque que le système est utilisé pour des applications différentes.The difficulties of designing an embedded system are frequently linked to internal or external memory management constraints to the embedded system. The system can comprise rewritable or non-rewritable non-volatile memories and volatile memories, each suitable for storing data of different types with the constraints and advantages specific to each type of memory. The management of these memories generates constraints in terms of data security, in particular when the system is used for different applications.

Il serait souhaitable de pouvoir améliorer, au moins en partie, certains aspects des systèmes électroniques embarqués connus, plus particulièrement de pouvoir améliorer, au moins en partie, certains aspects de l'utilisation des mémoires dans les systèmes électroniques embarqués.It would be desirable to be able to improve, at least in part, certain aspects of known on-board electronic systems, more particularly to be able to improve, at least in part, certain aspects of the use of memories in on-board electronic systems.

Il existe un besoin pour des systèmes embarqués adaptés à gérer plusieurs applications de façon indépendante les unes des autres.There is a need for embedded systems adapted to manage several applications independently of each other.

Il existe, plus particulièrement, un besoin pour des systèmes embarqués dans lesquels l'utilisation des mémoires est optimisée.There is, more particularly, a need for on-board systems in which the use of memories is optimized.

Un mode de réalisation d'un premier aspect prévoit un système électronique embarqué comportant :
- au moins une mémoire volatile ; et
- au moins un système d'exploitation de bas niveau gérant l'allocation de zones de la mémoire volatile à plusieurs systèmes d’exploitation de haut niveau comportant chacun une ou plusieurs applications,
dans lequel ladite mémoire volatile comporte :
au moins une première partie réservée à des données d'exécution d'une première application ; et
au moins une deuxième partie destinée à stocker des données d'exécution d'au moins une deuxième application,
les données d'exécution de la première application restant dans la mémoire volatile en cas de désactivation ou de mise en veille de cette première application.
An embodiment of a first aspect provides an on-board electronic system comprising:
- at least one volatile memory; And
- at least one low-level operating system managing the allocation of volatile memory areas to several high-level operating systems each comprising one or more applications,
wherein said volatile memory includes:
at least a first part reserved for execution data of a first application; And
at least a second part intended to store execution data of at least a second application,
the execution data of the first application remaining in the volatile memory in the event of deactivation or standby of this first application.

Un mode de réalisation du premier aspect prévoit un procédé mis en œuvre par un système électronique embarqué comportant :
- au moins une mémoire volatile ; et
- au moins un système d'exploitation de bas niveau gérant l'allocation de zones de la mémoire volatile à plusieurs systèmes d’exploitation de haut niveau comportant chacun une ou plusieurs applications,
dans lequel ladite mémoire volatile comporte :
au moins une première partie réservée à des données d'exécution d'une première application ; et
au moins une deuxième partie destinée à stocker des données d'exécution d'au moins une deuxième application,
les données d'exécution de la première application restant dans la mémoire volatile en cas de désactivation ou de mise en veille de cette première application.
An embodiment of the first aspect provides a method implemented by an on-board electronic system comprising:
- at least one volatile memory; And
- at least one low-level operating system managing the allocation of volatile memory areas to several high-level operating systems each comprising one or more applications,
wherein said volatile memory includes:
at least a first part reserved for execution data of a first application; And
at least a second part intended to store execution data of at least a second application,
the execution data of the first application remaining in the volatile memory in the event of deactivation or standby of this first application.

Selon un mode de réalisation du premier aspect, des données d’exécution d'une ou plusieurs tâches d'une application sont transférées, en tout ou en partie, par le système d'exploitation de bas niveau, de ladite mémoire volatile vers une mémoire non volatile lorsque que l'exécution de ladite tâche est interrompue par l'exécution d'au moins une tâche d'une autre application.According to an embodiment of the first aspect, execution data of one or more tasks of an application are transferred, in whole or in part, by the low-level operating system, from said volatile memory to a memory non-volatile when the execution of said task is interrupted by the execution of at least one task of another application.

Selon un mode de réalisation du premier aspect, une zone de mémoire volatile est allouée à la deuxième application alors qu'elle n'est pas exécutée, les données d'exécution de cette deuxième application étant transférées en mémoire non volatile si la taille de mémoire volatile disponible n'est pas suffisante à l'exécution d'une troisième application.According to an embodiment of the first aspect, a volatile memory area is allocated to the second application when it is not executed, the execution data of this second application being transferred to non-volatile memory if the memory size volatile available is not enough to run a third application.

Un mode de réalisation d'un deuxième aspect prévoit un système électronique embarque comportant :
- au moins une mémoire volatile ;
- au moins un système d'exploitation de bas niveau gérant l'allocation de zones de la mémoire volatile à plusieurs systèmes d’exploitation de haut niveau comportant chacun une ou plusieurs applications,
dans lequel des données d’exécution d'une ou plusieurs tâches de ladite première application sont transférées, en tout ou en partie, par le système d'exploitation de bas niveau, de ladite mémoire volatile vers une mémoire non volatile lorsque que l'exécution de ladite tâche de la première application est interrompue par l'exécution d'au moins une tâche d'une deuxième application.
An embodiment of a second aspect provides an on-board electronic system comprising:
- at least one volatile memory;
- at least one low-level operating system managing the allocation of volatile memory areas to several high-level operating systems each comprising one or more applications,
wherein execution data of one or more tasks of said first application is transferred, in whole or in part, by the low-level operating system, from said volatile memory to a non-volatile memory when the execution of said task of the first application is interrupted by the execution of at least one task of a second application.

Un mode de réalisation du deuxième aspect prévoit un procédé mis en oeuvre dans un système électronique embarqué comportant :
- au moins une mémoire volatile ;
- au moins un système d'exploitation de bas niveau gérant l'allocation de zones de la mémoire volatile à plusieurs systèmes d’exploitation de haut niveau comportant chacun une ou plusieurs applications,
dans lequel des données d’exécution d'une ou plusieurs tâches de ladite première application sont transférées, en tout ou en partie, par le système d'exploitation de bas niveau, de ladite mémoire volatile vers une zone d'une mémoire non volatile lorsque que l'exécution de ladite tâche de la première application est interrompue par l'exécution d'au moins une tâche d'une deuxième application.
An embodiment of the second aspect provides a method implemented in an on-board electronic system comprising:
- at least one volatile memory;
- at least one low-level operating system managing the allocation of volatile memory areas to several high-level operating systems each comprising one or more applications,
wherein execution data of one or more tasks of said first application are transferred, in whole or in part, by the low-level operating system, from said volatile memory to an area of a non-volatile memory when that the execution of said task of the first application is interrupted by the execution of at least one task of a second application.

Selon un mode réalisation du deuxième aspect, dans lequel une zone de mémoire volatile est allouée à la première application alors qu'elle n'est pas exécutée, les données de cette première application étant transférées en mémoire non volatile si la taille de mémoire volatile disponible n'est pas suffisante à l'exécution d'une deuxième applicationAccording to an embodiment of the second aspect, in which a volatile memory area is allocated to the first application while it is not being executed, the data of this first application being transferred to non-volatile memory if the available volatile memory size is not sufficient for the execution of a second application

Selon un mode de réalisation de l'un ou l'autre des aspects, les applications d'un système d'exploitation de haut niveau n'ont pas accès aux zones de la mémoire volatile allouées aux applications d'un autre système d'exploitation de haut niveau.According to an embodiment of one or the other of the aspects, the applications of a high-level operating system do not have access to the areas of the volatile memory allocated to the applications of another operating system high level.

Selon un mode de réalisation de l'un ou l'autre des aspects, une fonction ou unité de gestion de mémoires exécutée par le système d'exploitation de bas niveau empêche l'accès des données d'exécution d'une application à d'autres applications.According to an embodiment of one or the other of the aspects, a memory management function or unit executed by the low-level operating system prevents the access of the execution data of an application to other apps.

Selon un mode de réalisation du premier aspect, la fonction ou unité de gestion de mémoires adapte la taille des première et deuxième parties de la mémoire volatile en fonction des besoins des différentes applications.According to an embodiment of the first aspect, the memory management function or unit adapts the size of the first and second parts of the volatile memory according to the needs of the different applications.

Selon un mode de réalisation de l'un ou l'autre des aspects, les données d'exécution de plusieurs applications sont simultanément présentes en mémoire volatile.According to an embodiment of one or the other of the aspects, the execution data of several applications are simultaneously present in volatile memory.

Selon un mode de réalisation de l'un ou l'autre des aspects, la mémoire non volatile est externe au système électronique embarqué.According to an embodiment of one or the other of the aspects, the non-volatile memory is external to the on-board electronic system.

Selon un mode de réalisation de l'un ou l'autre des aspects, un code d'exécution d'une application est transféré en mémoire volatile pour son exécution.According to an embodiment of one or other of the aspects, an application execution code is transferred to volatile memory for its execution.

Selon un mode de réalisation de l'un ou l'autre des aspects, la mémoire non volatile est interne au système électronique embarqué.According to an embodiment of one or other of the aspects, the non-volatile memory is internal to the on-board electronic system.

Selon un mode de réalisation de l'un ou l'autre des aspects, un code d'exécution d'une application reste en mémoire non volatile lors de l'exécution d'une tâche.According to an embodiment of one or the other of the aspects, an application execution code remains in non-volatile memory during the execution of a task.

Selon un mode de réalisation de l'un ou l'autre des aspects, une zone de mémoire non volatile allouée à un système d'exploitation de haut niveau est vue par celui-ci comme une mémoire de travail volatile.According to an embodiment of one or the other of the aspects, a non-volatile memory zone allocated to a high-level operating system is seen by the latter as a volatile working memory.

Selon un mode de réalisation de l'un ou l'autre des aspects, les systèmes d'exploitation de haut niveau gèrent une image virtuelle des mémoires dans laquelle les mémoires volatile et non volatile ne font qu'une.According to an embodiment of one or the other of the aspects, the high-level operating systems manage a virtual image of the memories in which the volatile and non-volatile memories are one.

Selon un mode de réalisation de l'un ou l'autre des aspects, lors de son exécution, une tâche principale d'une application se voit allouer une zone de mémoire volatile.According to an embodiment of one or other of the aspects, during its execution, a main task of an application is allocated a volatile memory area.

Un mode de réalisation prévoit un élément sécurisé embarqué, configuré pour la mise en oeuvre du système ou du procédé décrit.One embodiment provides an embedded secure element, configured for implementing the system or the method described.

Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles :These characteristics and advantages, as well as others, will be set out in detail in the following description of particular embodiments given on a non-limiting basis in relation to the attached figures, among which:

la représente, de façon schématique et sous forme de blocs, un mode de réalisation de constituants matériels d'un élément sécurisé embarqué ou système électronique embarqué ; there represents, schematically and in the form of blocks, an embodiment of hardware constituents of an on-board secure element or on-board electronic system;

la représente, de façon schématique et sous forme de blocs, une architecture logicielle d'un système électronique embarqué ; there represents, schematically and in the form of blocks, a software architecture of an on-board electronic system;

la représente des vues (a), (b) et (c) illustrant, de façon schématique et sous forme de blocs, la mise en oeuvre d'un procédé d'exécution d'applications du système électronique embarqué des figures 1 et 2 ; there represents views (a), (b) and (c) illustrating, schematically and in the form of blocks, the implementation of a method for executing applications of the on-board electronic system of FIGS. 1 and 2;

la représente des vues (a), (b) et (c) illustrant, de façon schématique et sous forme de blocs, un mode de mise en oeuvre d'un procédé d'exécution d'applications du système électronique embarqué des figures 1 et 2 ; there represents views (a), (b) and (c) illustrating, schematically and in the form of blocks, an embodiment of a method for executing applications of the on-board electronic system of FIGS. 1 and 2 ;

la représente des vues (a), (b) et (c) illustrant, de façon schématique et sous forme de blocs, la mise en oeuvre d'un procédé d'exécution d'applications du système électronique embarqué des figures 1 et 2 ; et there represents views (a), (b) and (c) illustrating, schematically and in the form of blocks, the implementation of a method for executing applications of the on-board electronic system of FIGS. 1 and 2; And

la représente des vues (a), (b) et (c) illustrant, de façon schématique et sous forme de blocs, un autre mode de mise en oeuvre d'un procédé d'exécution d'applications du système électronique embarqué des figures 1 et 2. there represents views (a), (b) and (c) illustrating, schematically and in the form of blocks, another mode of implementation of a method for executing applications of the on-board electronic system of FIGS. 1 and 2.

De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques.The same elements have been designated by the same references in the various figures. In particular, the structural and/or functional elements common to the various embodiments may have the same references and may have identical structural, dimensional and material properties.

Par souci de clarté, seuls les phases et éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et sont détaillés.For the sake of clarity, only the phases and elements useful for understanding the embodiments described have been represented and are detailed.

Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments reliés ou couplés entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés ou couplés par l'intermédiaire d'un ou plusieurs autres éléments.Unless otherwise specified, when reference is made to two elements connected together, it means directly connected without intermediate elements other than conductors, and when reference is made to two elements connected or coupled together, it means that these two elements can be connected or be linked or coupled through one or more other elements.

Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures.In the following description, when referring to absolute position qualifiers, such as "front", "rear", "up", "down", "left", "right", etc., or relative, such as the terms "above", "below", "upper", "lower", etc., or to qualifiers of orientation, such as the terms "horizontal", "vertical", etc., it reference is made unless otherwise specified to the orientation of the figures.

Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 % près.Unless specified otherwise, the expressions “about”, “approximately”, “substantially”, and “of the order of” mean to within 10%, preferably within 5%.

La représente, de façon très schématique et sous forme de blocs, un mode de réalisation de constituants matériels HW (Hardware) d'un élément sécurisé embarqué E ou système électronique embarqué.There represents, very schematically and in the form of blocks, an embodiment of material constituents HW (Hardware) of an on-board secure element E or on-board electronic system.

L'élément E est réalisé sous la forme d'un circuit électronique comportant, de façon matérielle, :
- une ou plusieurs unité 11 de traitement numérique (PU), par exemple de type machine d'états, microprocesseur ou unité centrale de traitement (CPU), circuit logique programmable, etc. ;
- une ou plusieurs mémoire 12, 13 de stockage volatil (RAM) et/ou non volatil (NVM) de données et programmes ;
- un ou plusieurs bus 14 de données, d'adresses et/ou de commandes entre les différents éléments internes au circuit 1 ;
- une ou plusieurs interfaces 15 d'entrée-sortie (I/O) de communication avec ou sans fil avec l'extérieur du circuit
1 ;
- un ou plusieurs circuits de communication, par exemple un circuit de communication en champ proche 16 (NFC – Near Field Communication) ; et
- divers autres circuits en fonction de l'application, symbolisés en par un bloc 17 (FCT), par exemple un dispositif de communication à courte distance utilisant, par exemple, la norme Bluetooth, des capteurs biométriques, etc. .
Element E is made in the form of an electronic circuit comprising, in material form,:
- one or more digital processing unit 11 (PU), for example of the state machine, microprocessor or central processing unit (CPU) type, programmable logic circuit, etc.; ;
- One or more memories 12, 13 for volatile storage (RAM) and/or non-volatile storage (NVM) of data and programs;
- One or more buses 14 for data, addresses and/or commands between the various elements internal to circuit 1;
- one or more input-output (I/O) interfaces 15 for wired or wireless communication with the outside of the circuit
1;
- One or more communication circuits, for example a near field communication circuit 16 (NFC – Near Field Communication); And
- various other circuits depending on the application, symbolized in by a block 17 (FCT), for example a short-distance communication device using, for example, the Bluetooth standard, biometric sensors, etc. .

La représente, de façon schématique et sous forme de blocs, une architecture logicielle 100 d'un élément sécurisé embarqué E, ou système électronique embarqué sécurisé.There represents, schematically and in the form of blocks, a software architecture 100 of an embedded secure element E, or secure embedded electronic system.

L'architecture logicielle 100 est mise en oeuvre par les composants matériels HW de l'élément sécurisé E décrits en .The software architecture 100 is implemented by the hardware components HW of the secure element E described in .

L'architecture 100 comprend une plateforme primaire 110, généralement désignée plateforme primaire virtuelle (Virtual Primary Platform VPP) comprenant l'accès aux composants électroniques 111 (HW) de l'élément sécurisé E, et comprenant un ou plusieurs systèmes d'exploitation de bas niveau 113 (LLOS, Low Level Operating System).The architecture 100 comprises a primary platform 110, generally designated virtual primary platform (Virtual Primary Platform VPP) comprising access to the electronic components 111 (HW) of the secure element E, and comprising one or more base operating systems level 113 (LLOS, Low Level Operating System).

Les systèmes d'exploitation de bas niveau 113 sont des systèmes d'exploitation permettant de faciliter la communication entre un ou plusieurs systèmes d'exploitation de haut niveau (HLOS1, HLOS2, HLOS, High Level Operating System) 124A, 124B (deux systèmes d'exploitation de haut niveau dans le cas illustré en ) de l'élément sécurisé E et les composants 111 de l'élément E. A titre d'exemple, les systèmes d'exploitation de bas niveau comprennent des logiciels pilotes des composants 111.The low-level operating systems 113 are operating systems making it possible to facilitate communication between one or more high-level operating systems (HLOS1, HLOS2, HLOS, High Level Operating System) 124A, 124B (two systems of high-level operation in the case illustrated in ) of the secure element E and the components 111 of the element E. By way of example, the low-level operating systems include driver software for the components 111.

Un système d'exploitation 113 de bas niveau est composé d’un code d’exécution (ou code exécutable) et de données d’exécution. Le code d’exécution contient des instructions permettant l’exécution des fonctions du programme. Par définition, les instructions sont invariables pour un programme donné, à l'exception d'une mise à jour du programme qui modifie alors les instructions. Les données d’exécution sont utilisées par le code d’exécution pour contextualiser l’exécution et réaliser la fonction souhaitée. Les données d’exécution peuvent être réparties en deux catégories. Les données d’exécution dites "temporaires" et les données d’exécution dites "permanentes" ou "fixes". Par exemple, si la fonction consiste en la vérification d’un code PIN, cette fonction est décomposée en trois parties, le code d’exécution contient des instructions de vérification du code PIN tandis que les données d’exécution permanentes contiennent le code PIN de référence et le nombre d’essais restants et que les données d’exécution temporaires contiennent le code PIN soumis à vérification.A low-level operating system 113 is composed of runtime code (or executable code) and runtime data. The runtime code contains instructions for executing program functions. By definition, the instructions are invariable for a given program, with the exception of an update of the program which then modifies the instructions. Runtime data is used by runtime code to contextualize execution and perform the desired function. Runtime data can be broken down into two categories. The so-called "temporary" execution data and the so-called "permanent" or "fixed" execution data. For example, if the function consists of the verification of a PIN code, this function is broken down into three parts, the execution code contains instructions for verifying the PIN code while the permanent execution data contains the PIN code of reference and the number of remaining trials and that the temporary execution data contains the PIN code subject to verification.

Dans un élément sécurisé embarqué, le système de bas niveau gère les composants mémoire de l'élément, c'est-à-dire les mémoires physiques, volatiles 12 ( ) et non volatiles 13 (réinscriptibles ou non).In an embedded secure element, the low-level system manages the element's memory components, that is to say the physical, volatile memories 12 ( ) and non-volatile 13 (rewritable or not).

Les systèmes d’exploitation de haut niveau 124A et 124B utilisent des images virtuelles des mémoires disponibles pour la gestion des codes d’exécution et des données d’exécutions. Grâce à cette technique, les systèmes d’exploitation de haut niveau n’ont pas accès directement à la gestion des mémoires physiques qu'elles soient volatiles ou non-volatiles. En d'autres termes, dans les modes de réalisation décrits, les systèmes d'exploitation de haut niveau gèrent une image virtuelle des mémoires dans laquelle les mémoires volatile(s) et non volatile(s) ne font qu'une. La gestion de la répartition physique dans les mémoires volatiles(s) et non volatile(s) est assurée par le ou les systèmes d'exploitation de bas niveau.The high-level operating systems 124A and 124B use virtual images of the available memories for the management of execution codes and execution data. Thanks to this technique, high-level operating systems do not have direct access to the management of physical memories, whether volatile or non-volatile. In other words, in the embodiments described, the high-level operating systems manage a virtual memory image in which the volatile memory(s) and non-volatile memory(s) are one. The management of the physical distribution in the volatile(s) and non-volatile(s) memories is ensured by the low-level operating system(s).

La plateforme 110 a, selon les modes de réalisation décrits, notamment pour rôles ;
- de définir un système d'exploitation de bas niveau entre les composants matériels (HW), notamment le processeur et les mémoires, et les systèmes d'exploitation de haut niveaux et des applications qu'ils exécutent ;
- de gérer les échanges entre les systèmes d'exploitation de haut niveau et les composant matériels ;
- de mettre en oeuvre une fonction (pare-feu ou firewall) empêchant les interaction entre les systèmes d'exploitation de haut niveau ; et
- de permettre un partage des mêmes composants matériels de l'élément sécurisé entre plusieurs systèmes d'exploitation de haut niveau tout en faisant en sorte qu'un seul soit actif à instant donné.
The platform 110 has, according to the embodiments described, in particular for roles;
- to define a low-level operating system between the hardware components (HW), in particular the processor and the memories, and the high-level operating systems and the applications they run;
- manage exchanges between high-level operating systems and hardware components;
- to implement a function (firewall or firewall) preventing interaction between high-level operating systems; And
- to allow sharing of the same hardware components of the secure element between several high-level operating systems while ensuring that only one is active at a given time.

Le système d'exploitation de bas niveau 113 exploite une fonction 115 de gestion des mémoires (Memory Management Function – MMF) pour contrôler ou gérer l'accès des systèmes d'exploitation de haut niveau aux mémoires physiques en réalisant le lien entre les mémoires virtuelles et les mémoires physique en fonction des besoins et demandes des systèmes d'exploitation de haut niveau 124A et 124B. Plus particulièrement, les systèmes d'exploitation de bas niveau 113, en utilisant la fonction de gestion des mémoires 115 (MMF), mettent en oeuvre l’isolation des systèmes d’exploitation de haut niveau 124A et 124B les uns par rapport aux autres et gèrent l'accès des systèmes d'exploitation de haut niveau 124A, 124B aux différentes mémoires. Par exemple, les systèmes d'exploitation de bas niveau 113 peuvent gérer les données stockées dans lesdites mémoires, et plus particulièrement, gérer l'accès de ces données, surtout dans le cas où plusieurs systèmes d'exploitation de haut niveau sont présents dans l'élément sécurisé E. Les systèmes d'exploitation de bas niveau 113 peuvent, par exemple, interdire l'accès à certaines données à un système d'exploitation de haut niveau.The low-level operating system 113 uses a memory management function 115 (Memory Management Function – MMF) to control or manage the access of the high-level operating systems to the physical memories by creating the link between the virtual memories and the physical memories according to the needs and demands of the high level operating systems 124A and 124B. More particularly, the low level operating systems 113, using the memory management function 115 (MMF), implement the isolation of the high level operating systems 124A and 124B from each other and manage the access of high-level operating systems 124A, 124B to the various memories. For example, the low-level operating systems 113 can manage the data stored in said memories, and more particularly, manage the access to this data, especially in the case where several high-level operating systems are present in the memory. secure element E. Low-level operating systems 113 can, for example, prohibit access to certain data by a high-level operating system.

L'architecture 100 comprend, en outre, des applications adaptées à être mise en oeuvre par la plateforme primaire 110. Ces applications sont, par exemple, adaptées à traiter des commandes provenant d'interfaces de communication, comme par exemple une transaction bancaire utilisant un dispositif de communication en champ proche. Chacune de ces applications est mise en oeuvre à l'aide de données fixes formant l'application, par exemple des instructions, des lignes de code, ou des données permanentes telles que des données utilisateurs comme un identifiant, et de données temporaires, données d'exécution, ou variables comme des piles de données, des clés de chiffrement temporaires. Les données d'exécution d'une application sont des données utilisées par l'application uniquement pendant son exécution et non conservées une fois que l'exécution de l'application est terminéeThe architecture 100 further comprises applications adapted to be implemented by the primary platform 110. These applications are, for example, adapted to process commands originating from communication interfaces, such as for example a banking transaction using a near field communication device. Each of these applications is implemented using fixed data forming the application, for example instructions, lines of code, or permanent data such as user data such as an identifier, and temporary data, data execution, or variables like data stacks, temporary encryption keys. Runtime data of an application is data used by the application only during its execution and not retained after the execution of the application is finished.

Plus particulièrement, une application met en oeuvre une ou plusieurs tâches, chaque tâche étant, par exemple, une succession d'instructions. C'est la mise en oeuvre d'une tâche qui produit des données d'exécution. Certaines données d'exécution peuvent être utilisées par différentes tâches de l'application, alors que d'autres peuvent n'être utilisées que par une seule tâche. On considère qu'une application ne peut être mettre en oeuvre qu'une seule tâche à la fois.More particularly, an application implements one or more tasks, each task being, for example, a succession of instructions. It is the implementation of a task that produces execution data. Some runtime data may be used by different tasks in the application, while some may only be used by a single task. It is considered that an application can only be implemented with one task at a time.

Ainsi, dans la suite de la description, on appelle "tâche principale" la tâche qui est en cours d'exécution par l'application et "tâches secondaires" les autres tâches de l'application qui ne sont pas en cours d'exécution. Les tâches d'exécution sont par exemple des tâches qui n'ont pas encore été mises en oeuvre, et qui n'ont pas permis de générer des données d'exécution, ou des tâches qui ont déjà été mises en oeuvre mais qui ont été, par exemple, interrompues (et mises en pause), et qui ont donc déjà permis de générer des données d'exécution. Ainsi on distingue, dans la suite de la description, des données d'exécution relatives à la tâche principale, et des données d'exécution relatives aux tâches secondaires.Thus, in the rest of the description, the term "main task" refers to the task which is being executed by the application and "secondary tasks" to the other tasks of the application which are not being executed. The execution tasks are for example tasks which have not yet been implemented, and which have not made it possible to generate execution data, or tasks which have already been implemented but which have been , for example, interrupted (and paused), and therefore have already generated runtime data. Thus, in the remainder of the description, a distinction is made between execution data relating to the main task and execution data relating to the secondary tasks.

Ces applications peuvent être de différents types, par exemple, une application SIM (Subscriber Identity Module), une application de paiement, une application permettant la validation d'un ticket de transport en commun, etc.These applications can be of different types, for example, a SIM (Subscriber Identity Module) application, a payment application, an application allowing the validation of a public transport ticket, etc.

Selon un exemple de type d'application, une application 121 (App1) est adaptée à être mise en oeuvre directement par la plateforme primaire 110. L'application 121 est, par exemple, une application permettant d'effectuer des paiements en communiquant avec un dispositif de communication en champ proche (NFC, Near Field Communication).According to an example of the type of application, an application 121 (App1) is adapted to be implemented directly by the primary platform 110. The application 121 is, for example, an application making it possible to make payments by communicating with a Near Field Communication (NFC) device.

Selon un autre exemple de type d'application, une application 122 (App2) est adaptée à envoyer des commandes à la plateforme primaire 110 par l'intermédiaire d'un des systèmes d'exploitation de haut niveau, par exemple le système d'exploitation 124B. Ce système d'exploitation de haut niveau peut être, par exemple, un des systèmes d'exploitation de l'élément sécurisé E échangeant des commandes avec la plateforme primaire 110. A titre de variante, on peut également considérer que le système d'exploitation de haut niveau, ainsi que toutes les applications qui lui sont attachées, sont une application adaptée à être mise en oeuvre par la plateforme primaire 110.According to another example of the type of application, an application 122 (App2) is adapted to send commands to the primary platform 110 via one of the high-level operating systems, for example the operating system 124B. This high-level operating system can be, for example, one of the operating systems of the secure element E exchanging commands with the primary platform 110. As a variant, it can also be considered that the operating system level, as well as all the applications which are attached to it, are an application adapted to be implemented by the primary platform 110.

Selon un autre exemple de type d'application, une application 123 (App3) est adaptée à envoyer des commandes à la plateforme primaire 110 par l'intermédiaire d'un environnement d'exécution 125 (ENV) et d'un des systèmes d'exploitation de haut niveau, par exemple le système d'exploitation 124A. L'environnement d'exploitation est par exemple de type Java ou JavaCard. A titre de variante, on peut également considérer que le système d'exploitation, ainsi que toutes les applications qui lui sont attachées, sont une application adaptée à être mise en oeuvre par la plateforme primaire 110.According to another example of the type of application, an application 123 (App3) is adapted to send commands to the primary platform 110 via an execution environment 125 (ENV) and one of the control systems. high level exploitation, for example the 124A operating system. The operating environment is for example of the Java or JavaCard type. As a variant, it is also possible to consider that the operating system, as well as all the applications which are attached to it, are an application adapted to be implemented by the primary platform 110.

Pour mettre en oeuvre ces différentes applications 121, 122, 123, les systèmes d'exploitation 124A, 124B, et l'environnement d'exécution 125, les composants 111 de l'élément sécurisé E comprennent, plus particulièrement, au moins une mémoire non volatile et au moins une mémoire volatile. La mémoire non volatile sert généralement à stocker des données fixes et le code d’exécution d’une ou plusieurs applications. La mémoire volatile sert généralement à stocker les données d’exécution d'une ou plusieurs applications. Dans le cas où les données fixes et les données d'exécution de plusieurs applications sont stockées en même temps dans la mémoire volatile et dans la mémoire non volatile, il existe une protection, par exemple un logiciel de protection et/ou un mécanisme pare-feu, permettant d'empêcher une application d'accéder aux données fixes et aux données d'exécution d'une autre application. Cette fonction est, comme indiqué précédemment, mise en oeuvre par une fonction 115 de gestion de mémoires MMF (Memory Management Function) ou unité de gestion de mémoires (Memory Management Unit – MMU). Cette fonction 115 permet de faire le lien entre la mémoire "virtuelle" connue par l’application et les mémoires physiques (volatiles et non-volatiles). Les systèmes d’exploitation de haut niveau (124A et 124B) n’ont pas accès "directement" à la gestion de la mémoire physique. Ils utilisent une image virtuelle de cette mémoire. Cependant, la gestion de cette image virtuelle ou mémoire virtuelle est découpée afin de permettre aux systèmes d’exploitation de haut niveau (124A et 124B) de gérer les codes d’exécution, ainsi que les données fixes ou les données d’exécutions en fonction de leur nature. Ce sont bien les systèmes d’exploitation de haut niveau qui font la gestion de leurs données et non les systèmes d’exploitation de bas niveau. Les systèmes d'exploitation de bas niveau et la fonction de gestion de mémoires font la correspondance entre les données d'exécution virtuelles (la mémoire virtuelle) et leur stockage en mémoire physique.To implement these different applications 121, 122, 123, the operating systems 124A, 124B, and the execution environment 125, the components 111 of the secure element E comprise, more particularly, at least one memory not volatile and at least one volatile memory. Nonvolatile memory is generally used to store fixed data and the execution code of one or more applications. Volatile memory is typically used to store runtime data for one or more applications. In the case where the fixed data and the execution data of several applications are stored at the same time in the volatile memory and in the non-volatile memory, there is a protection, for example a software protection and/or a firewall mechanism. fire, allowing to prevent an application from accessing the fixed data and the execution data of another application. This function is, as indicated above, implemented by a memory management function 115 MMF (Memory Management Function) or memory management unit (Memory Management Unit – MMU). This function 115 is used to make the link between the "virtual" memory known by the application and the physical memories (volatile and non-volatile). High-level operating systems (124A and 124B) do not have "direct" access to physical memory management. They use a virtual image of this memory. However, the management of this virtual image or virtual memory is cut out in order to allow the high level operating systems (124A and 124B) to manage the execution codes, as well as the fixed data or the execution data according to of their nature. It is the high-level operating systems that manage their data and not the low-level operating systems. Low-level operating systems and memory management function map virtual runtime data (virtual memory) to its physical memory storage.

Selon un mode de réalisation, au moins une zone ou partie de la mémoire non volatile est utilisée comme une mémoire de travail (working memory). Autrement dit, cette zone de la mémoire non volatile fonctionne, vu des applications de haut niveau, comme une mémoire volatile, pour stocker des données temporaires utilisées par les applications pendant leur fonctionnement. La mémoire non volatile peut être interne ou externe à l'élément sécurisé E (interne ou externe au circuit HW). Selon que la mémoire non volatile (sa zone utilisée en mémoire de travail par les systèmes d'exploitation de haut niveau) est interne ou externe à l'élément sécurisé, la gestion de cette mémoire diffère lors de l’exécution d’un système d'exploitation de haut niveau.According to one embodiment, at least one zone or part of the non-volatile memory is used as a working memory. In other words, this area of the non-volatile memory functions, seen from high-level applications, like a volatile memory, to store temporary data used by the applications during their operation. The non-volatile memory can be internal or external to the secure element E (internal or external to the circuit HW). Depending on whether the non-volatile memory (its area used in working memory by high-level operating systems) is internal or external to the secure element, the management of this memory differs when running a system. high-level operation.

Dans le cas où la mémoire non volatile est interne à l’élément sécurisé E, le système d’exploitation de haut-niveau peut être directement exécuté à partir de la mémoire où le système d'exploitation se trouve (est chargé). On parle d’exécution "in place" (XIP) ou "en place". En général, les systèmes d'exploitation de bas niveau permettent alors la gestion de l'exécution de plusieurs systèmes d'exploitation de haut niveau. Dans le cas où une application est exécutée "en place", la partie instructions (le code d'exécution) de l'application reste en mémoire non volatile. Les données d'exécution (permanentes et temporaires) sont le cas échéant déplacées en mémoire de travail (mémoire non volatile).In the case where the non-volatile memory is internal to the secure element E, the high-level operating system can be directly executed from the memory where the operating system is located (is loaded). We speak of execution "in place" (XIP) or "in place". In general, low-level operating systems then allow the management of the execution of several high-level operating systems. In the case where an application is executed "in place", the instructions part (the execution code) of the application remains in non-volatile memory. Execution data (permanent and temporary) is moved to working memory (non-volatile memory), if necessary.

A l’inverse, si la mémoire non volatile est externe à l’élément sécurisé E, l’exécution "in place" n’est pas possible. La gestion de la mémoire non volatile implique un déplacement en tout ou en partie du système d’exploitation de haut niveau dans une mémoire volatile interne de l’élément sécurisé. Dans ce cas, le système d’exploitation de bas niveau peut autoriser ou non la gestion de l’exécution de plusieurs systèmes d’exploitation de haut-niveau dans sa mémoire interne.Conversely, if the non-volatile memory is external to the secure element E, "in place" execution is not possible. Non-volatile memory management involves moving all or part of the high-level operating system into an internal volatile memory of the secure element. In this case, the low-level operating system may or may not authorize the management of the execution of several high-level operating systems in its internal memory.

Par ailleurs, on considère qu'une application peut être dans au moins trois états différents :
- un état actif ou en cours d'exécution (running) par la plateforme primaire 110 ;
- un état de veille, c'est-à-dire que son exécution est interrompue mais qu'elle peut reprendre à tout moment ; et
- un état inactif ou désactivée, c'est-à-dire que son exécution ne peut être redémarrée sans une ou plusieurs opérations préalables.
Furthermore, it is considered that an application can be in at least three different states:
- an active or running state (running) by the primary platform 110;
- a standby state, that is to say that its execution is interrupted but that it can resume at any time; And
- an inactive or deactivated state, ie its execution cannot be restarted without one or more prior operations.

Lorsqu’une application sort de veille pour être exécutée à nouveau, elle reprend son exécution là où elle s’est arrêtée. Elle n’est pas besoin d’utiliser de routine particulière pour continuer son traitement (processing). Du point de vue de l’application, tout apparaît comme si l'application n’a pas été interrompue.When an app wakes up to run again, it resumes running where it left off. She does not need to use any particular routine to continue her processing. From the application's point of view, everything appears as if the application has not been interrupted.

Plus particulièrement, lorsqu'une application est en cours d'exécution, tout ou partie des données relatives à sa tâche principale sont stockées dans la mémoire volatile du circuit et sont utilisées pour la mise en oeuvre de l'application. Les données relatives à des tâches secondaires de l'application peuvent être stockées dans la mémoire volatile ou dans la mémoire de travail (non volatile). En variante, certaines données d'exécution (permanentes ou temporaires) relatives à la tâche principale peuvent se trouver dans la mémoire de travail (non volatile) et être chargées dans la mémoire volatile lorsque que la tâche principale en a besoin.More particularly, when an application is being executed, all or part of the data relating to its main task are stored in the volatile memory of the circuit and are used for the implementation of the application. Data relating to secondary tasks of the application can be stored in volatile memory or in working (non-volatile) memory. As a variant, certain execution data (permanent or temporary) relating to the main task can be found in the working memory (non-volatile) and be loaded into the volatile memory when the main task needs it.

Lorsqu'une application est en veille, les données relatives à sa tâche principale sont stockées dans la mémoire volatile et ne sont pas en cours d'utilisation pour la mise en oeuvre de l'application. Les données relatives à des tâches secondaires de l'application peuvent être stockées dans la mémoire volatile ou dans la mémoire de travail. Une application peut, en outre, être en veille si son exécution est interrompue par l'exécution d'une autre application qui peut se trouver dans un système d'exploitation de haut niveau différent. Dans ce cas, toutes les tâches de l'application en veille sont considérées comme étant des tâches secondaires puisqu'aucune n'est exécutée. Ainsi, lorsque qu'une application est en veille parce qu'une autre application est en cours d'exécution, l'ensemble de ses données se retrouve physiquement, soit dans une zone dédiée de la mémoire volatile non accessible aux autres systèmes d'exploitation, soit dans la mémoire non volatile. Cette gestion est réalisée par la fonction de gestion de mémoire 115. Toutefois, vu de l'application (du système d'exploitation de haut niveau), les données temporaires sont dans une mémoire de travail assimilée, par l'image virtuelle qu'utilise ce système d'exploitation, à une mémoire volatile. Selon un autre exemple de réalisation, des données d'exécution de plusieurs applications différentes de plusieurs systèmes d'exploitation de haut niveau différents se trouvent en même temps dans la mémoire volatile. Dans ce cas, chaque application n'a accès qu'à ses propres données et n'a pas accès aux données de l'autre ou dans autres application. Par l'emploi du système de bas niveau et de la fonction de gestion de mémoires, les applications n'ont pas connaissance de la présence de données d'autres applications dans la mémoire volatile.When an application is in standby, the data relating to its main task are stored in the volatile memory and are not in use for the implementation of the application. Data relating to secondary tasks of the application can be stored in volatile memory or in working memory. An application may additionally sleep if its execution is interrupted by the execution of another application which may be in a different high-level operating system. In this case, all the tasks of the sleeping application are considered secondary tasks since none are executed. Thus, when an application is on standby because another application is running, all of its data is found physically, either in a dedicated area of volatile memory not accessible to other operating systems , or in non-volatile memory. This management is carried out by the memory management function 115. However, seen from the application (of the high-level operating system), the temporary data are in an assimilated working memory, by the virtual image that uses this operating system, to volatile memory. According to another exemplary embodiment, execution data of several different applications of several different high-level operating systems are found at the same time in the volatile memory. In this case, each application only has access to its own data and does not have access to the data of the other or in other applications. By using the low-level system and the memory management function, the applications are not aware of the presence of data from other applications in the volatile memory.

Lorsqu'une application est désactivée, toutes ses données (qu'elles soient relatives à une tâche principale ou à une tâche principale) sont stockées en mémoire de la même façon que pour une application en veille.When an application is deactivated, all its data (whether related to a main task or to a main task) is stored in memory in the same way as for a sleeping application.

Les figures 3 à 6 illustrent différentes mises en oeuvre d'applications de l'élément sécurisé E, et plus particulièrement l'utilisation des mémoires physiques volatile et non volatile (de travail).FIGS. 3 to 6 illustrate different implementations of applications of the secure element E, and more particularly the use of volatile and non-volatile (working) physical memories.

On aurait pu penser laisser les systèmes d'exploitation de haut niveau gérer directement les mémoires volatiles 12 et non volatile 13. Toutefois, certaines transactions opérées par certaines applications (par exemple des transactions en champs proche – NFC) requièrent une rapidité d'exécution incompatible avec une gestion d'une mémoire non volatile par un système d'exploitation de haut niveau. Le fait de transférer cette gestion au système d'exploitation de bas niveau et de "faire croire" au système d'exploitation de haut niveau qu'il transfère ses données en mémoire volatile accélère le processus.One would have thought to let the high-level operating systems directly manage the volatile 12 and non-volatile 13 memories. with non-volatile memory management by a high-level operating system. Passing this management to the low-level operating system and "trick" the high-level operating system that it is transferring its data to volatile memory speeds up the process.

La comprend trois vues (a), (b), et (c) illustrant chacune une phase d'une mise en oeuvre d'un procédé d'exécution d'applications App20 et App21 de l'élément sécurisé E décrit en relation avec les figures 1 et 2. Ces trois vues illustrent plus particulièrement l'utilisation de la mémoire de travail WM utilisant la mémoire non volatile (Physical NVM), considérée par les applications comme une mémoire volatile, et de la mémoire volatile RAM réelle (Physical RAM), de l'élément sécurisé E pendant l'exécution des applications App20 et App21.There comprises three views (a), (b), and (c) each illustrating a phase of an implementation of a method for executing applications App20 and App21 of the secure element E described in relation to the figures 1 and 2. These three views more particularly illustrate the use of working memory WM using non-volatile memory (Physical NVM), considered by applications to be volatile memory, and real volatile RAM (Physical RAM), of the secure element E during the execution of the applications App20 and App21.

Les applications App20 et App21, en fonction de leur implémentation, peuvent se trouver dans un même système d’exploitation de haut niveau ou dans deux systèmes d’exploitation de haut niveau différents.App20 and App21 applications, depending on their implementation, can be in the same high-level operating system or in two different high-level operating systems.

Selon l'exemple décrit en , on suppose que l'application App21 est désactivée, mais a déjà été démarrée, avant le démarrage de l'application App20. Les données d’exécution relatives à la tâche principale et secondaires de l'application App21 sont stockées dans une zone W21 de la mémoire non volatile de travail WM.According to the example described in , it is assumed that the App21 application is deactivated, but has already been started, before the App20 application is started. The execution data relating to the main and secondary task of the application App21 are stored in an area W21 of the non-volatile working memory WM.

L'application App20 est aussi désactivée mais n'a jamais été démarrée. Elle n'a donc pas encore généré de données d'exécution.The App20 application is also disabled but has never been started. It has therefore not yet generated any runtime data.

A une première phase (vue (a)), l'application App20 est démarrée par l'élément sécurisée E. Plus particulièrement, l'application App20 est démarrée par le système d'exploitation de bas niveau 113. L'application App20 est alors en cours d'exécution. Des données d’exécution, relatives à la tâche principale de l'application App20 sont téléchargées ou chargées dans la mémoire volatile RAM.In a first phase (view (a)), the application App20 is started by the secure element E. More particularly, the application App20 is started by the low-level operating system 113. The application App20 is then running. Execution data relating to the main task of the App20 application is downloaded or loaded into the volatile RAM memory.

Pendant toute son exécution, et si elle n'est pas interrompue par l'exécution d'une autre application, l'application App20 stocke ses données d’exécution dans la mémoire volatile RAM.During its entire execution, and if it is not interrupted by the execution of another application, the App20 application stores its execution data in volatile RAM memory.

A une deuxième phase (vue (b)), on suppose que l'application App21, jusqu'ici désactivée, demande à être exécutée par l'élément sécurisé E.In a second phase (view (b)), it is assumed that the application App21, deactivated until now, requests to be executed by the secure element E.

Les données d’exécution relatives à la tâche principale, et, éventuellement, à des tâches secondaires, de l'application App20, présentes dans la mémoire volatile RAM sont transférées et stockées dans une zone WM20 de la mémoire non volatile de travail WM et sont supprimées de la mémoire volatile RAM. Ainsi, l'état actuel de l'application App20 est sauvegardé dans la mémoire WM, vue par l'application App20 comme une mémoire volatile, et l'application App20 devient alors désactivée.The execution data relating to the main task, and, possibly, to secondary tasks, of the application App20, present in the volatile memory RAM are transferred and stored in a zone WM20 of the non-volatile working memory WM and are removed from volatile RAM memory. Thus, the current state of the App20 application is saved in the memory WM, seen by the App20 application as a volatile memory, and the App20 application then becomes deactivated.

Des données d’exécution relatives à l'application App21 stockées précédemment dans la zone WM21 sont chargées dans la mémoire volatile RAM. Ainsi, l'utilisation de l'application App21 peut reprendre là où elle s'était arrêtée précédemment. Autrement dit, l'application App21 passe d'un état désactivé à un état "en cours d'exécution".Execution data relating to the App21 application previously stored in the WM21 zone are loaded into the volatile RAM memory. Thus, the use of the App21 application can resume where it left off previously. In other words, the App21 application goes from a deactivated state to a "running" state.

A une troisième phase (vue (c)), l'application App21 continue de s'exécuter, et modifie dans la mémoire volatile RAM ses données d’exécution relatives à sa tâche principale et, éventuellement, à des tâches secondaires. Des données sont pour cela transférées de la mémoire non volatile de travail WM vers la mémoire volatile PRAM.In a third phase (view (c)), the App21 application continues to run, and modifies in the volatile RAM memory its execution data relating to its main task and, possibly, to secondary tasks. Data are therefore transferred from the non-volatile working memory WM to the volatile memory PRAM.

La comprend trois vues (a), (b), et (c) illustrant chacune une phase d'un mode de mise en oeuvre d'un procédé d'exécution d'applications App30 et App31 de l'élément sécurisé E décrit en relation avec les figures 1 et 2. Ces trois vues illustrent plus particulièrement l'utilisation de la mémoire non volatile de travail WM et d'une mémoire volatile RAM de l'élément sécurisé E pendant l'activation des applications App30 et App31.There comprises three views (a), (b), and (c) each illustrating a phase of an embodiment of a method for executing applications App30 and App31 of the secure element E described in relation to FIGS. 1 and 2. These three views illustrate more particularly the use of the non-volatile working memory WM and of a volatile memory RAM of the secure element E during the activation of the applications App30 and App31.

Les applications App30 et App31, en fonction de leur implémentation, peuvent se trouver dans un même système d’exploitation de haut niveau ou dans deux systèmes d’exploitation de haut niveau différents.App30 and App31 applications, depending on their implementation, can be in the same high-level operating system or in two different high-level operating systems.

Selon un mode de réalisation, l'application App30 est une application à usage fréquent, ou application résidente, ou met en oeuvre une tâche à usage fréquent, une tâche résidente. Le fait de considérer une application comme étant "fréquente" est décidé, demandé et/ou indiqué par le système d’exploitation de haut niveau qui héberge l’application. Les données d’exécution relatives à l'application résidente App30 sont stockées dans une zone PRAM30 réservée de la mémoire volatile RAM. La zone (ou plage d'adresses physiques) PRAM30 de la mémoire RAM est toujours disponible pour stocker les données d’exécution de l'application App30, et les données d’exécution d'une ou d'autres applications ne peuvent y être stockées.According to one embodiment, the application App30 is a frequently used application, or resident application, or implements a frequently used task, a resident task. Whether an application is considered "frequent" is decided, requested, and/or indicated by the high-level operating system that hosts the application. The execution data relating to the resident application App30 is stored in a reserved area PRAM30 of the volatile RAM memory. The PRAM30 area (or range of physical addresses) of RAM memory is always available to store App30 application runtime data, and runtime data from one or more applications cannot be stored there. .

On suppose que l'application App30 est active et en cours d'exécution.It is assumed that the App30 application is active and running.

A une première phase (vue (a)), l'application App30 est mise en veille. Des données d’exécution relatives à la tâche principale de l'application App30 sont stockées dans la zone PRAM30. La tâche principale de l'application App30 est, par exemple, une tâche résidente.In a first phase (view (a)), the App30 application is placed on standby. Execution data relating to the main task of the App30 application is stored in the PRAM30 area. The main task of the App30 application is, for example, a resident task.

L'application App31 est, ensuite, démarrée par l'élément sécurisée E. Des données d’exécution, relatives à la tâche principale, et, éventuellement à des tâches secondaires, de l'application App31, sont téléchargées ou chargées dans une zone PRAM31 de la mémoire volatile RAM. La zone PRAM31 est distincte de la zone PRAM30. L'application App31 se trouve alors en cours d'exécution.The application App31 is then started by the secure element E. Execution data, relating to the main task, and, possibly to secondary tasks, of the application App31, are downloaded or loaded into a zone PRAM31 volatile RAM memory. The PRAM31 area is distinct from the PRAM30 area. The App31 application is then running.

Pendant toute son exécution, et si elle n'est pas interrompue par l'exécution d'une autre application, l'application App31 stocke ses données d’exécution dans la zone PRAM31 de la mémoire volatile RAM.Throughout its execution, and if it is not interrupted by the execution of another application, the App31 application stores its execution data in the PRAM31 area of the volatile RAM memory.

A une deuxième phase (vue (b)), l'application résidente App30, jusque-là en veille, demande à être exécutée par l'élément sécurisé E, plus particulièrement, par le système d'exploitation de bas niveaux 113.In a second phase (view (b)), the resident application App30, hitherto on standby, requests to be executed by the secure element E, more particularly, by the low-level operating system 113.

Si la capacité de la mémoire volatile n'est pas suffisante pour contenir les données d'exécution des zone App30 et App31, les données d’exécution relatives à l'application App31, présentes dans la zone PRAM31 de la mémoire volatile RAM, sont alors transférées dans une zone WM31 de la mémoire non volatile de travail WM. Ainsi, l'état actuel de l'application App31 est sauvegardé dans la mémoire de travail WM et l'application App31 est alors désactivée. Cette situation peut également se produire si deux applications sont déjà présentes dans la mémoire volatile et qu'une troisième application demande à être exécutée.If the capacity of the volatile memory is not sufficient to contain the execution data of the App30 and App31 zones, the execution data relating to the App31 application, present in the PRAM31 zone of the volatile RAM memory, are then transferred to an area WM31 of the non-volatile working memory WM. Thus, the current state of the application App31 is saved in the working memory WM and the application App31 is then deactivated. This situation can also occur if two applications are already present in volatile memory and a third application requests to be executed.

A une troisième phase (vue (c)), des données d’exécution relatives à la tâche principale de l'application App30, déjà présentes dans la zone PRAM30 de la mémoire volatile RAM dédiée à l'application 30, peuvent être directement traitées. Ainsi, l'utilisation de l'application App30 peut reprendre là où elle s'était arrêtée précédemment. L'application App30 est alors en cours d'exécution.In a third phase (view (c)), execution data relating to the main task of the application App30, already present in the area PRAM30 of the volatile RAM memory dedicated to the application 30, can be directly processed. Thus, the use of the App30 application can resume where it left off previously. The App30 application is then running.

Un avantage de ce mode de réalisation est qu'une application à usage fréquent, ou application résidente, est garantie d'avoir de la place dans la mémoire volatile physique PRAM pour y stocker ses données d’exécution. Dans le cas où, la taille de la mémoire volatile résidente demandée par une nouvelle application résidente qui devrait être activée serait supérieure à la taille de la mémoire volatile physique PRAM, son activation serait refusée jusqu’à ce que la mémoire PRAM soit libérée, ou que la taille disponible de la mémoire PRAM soit suffisante, ou que la taille de la mémoire dite résidente demandée par l'application à activer soit compatible avec la taille disponible de la mémoire PRAM. Ce cas peut se produire si plusieurs applications résidentes sont activées.An advantage of this embodiment is that a frequently used application, or resident application, is guaranteed to have room in the physical volatile memory PRAM to store its execution data. In the event that, the size of the resident volatile memory requested by a new resident application which should be activated would be greater than the size of the physical volatile memory PRAM, its activation would be refused until the PRAM memory is freed, or that the available size of the PRAM memory is sufficient, or that the size of the so-called resident memory requested by the application to be activated is compatible with the available size of the PRAM memory. This case can occur if several resident applications are activated.

La comprend trois vues (a), (b) et (c) illustrant chacune une phase d'une mise en oeuvre d'un procédé d'exécution d'applications App40 et App41 de l'élément sécurisé E décrit en relation avec les figures 1 et 2. Ces trois vues illustrent plus particulièrement l'utilisation de la mémoire non volatile de travail WM et de la mémoire volatile RAM de l'élément sécurisé E pendant l'activation des applications App40 et App41.There comprises three views (a), (b) and (c) each illustrating a phase of an implementation of a method for executing applications App40 and App41 of the secure element E described in relation to FIGS. 1 and 2. These three views more particularly illustrate the use of the non-volatile working memory WM and of the volatile memory RAM of the secure element E during the activation of the applications App40 and App41.

Les applications App40 et App41, en fonction de leur implémentation, pourraient se trouver dans un même système d’exploitation de haut niveau ou dans deux systèmes d’exploitation de haut niveau différents.The App40 and App41 applications, depending on their implementation, could be in the same high-level operating system or in two different high-level operating systems.

On suppose que les applications App40 et App41 ont déjà été préalablement démarrées ou exécutées par l'élément sécurisé E, mais sont désormais en veille ou inactives. Toutes les données d’exécution relatives au démarrage et au fonctionnement des applications App40 et App41 sont alors stockées dans, respectivement, des zones WM40 et WM41 de la mémoire non volatile de travail WM.It is assumed that the applications App40 and App41 have already been previously started or executed by the secure element E, but are now on standby or inactive. All the execution data relating to the starting and operation of the applications App40 and App41 are then stored in, respectively, areas WM40 and WM41 of the non-volatile working memory WM.

A une première phase (vue (a)), l'application App40 demande à être exécutée par l'élément sécurisé E, et devient alors "en cours d'exécution". Des données d’exécution de démarrage et de fonctionnement relatives à l'application App40 sont transférées, téléchargées ou chargées dans une zone PRAM40 de la mémoire volatile RAM, à partir de la zone WM40 de la mémoire non volatile de travail WM, lorsque la tâche principale de l'application App40 en a besoin.In a first phase (view (a)), the application App40 requests to be executed by the secure element E, and then becomes “running”. Start-up and operating execution data relating to the application App40 are transferred, downloaded or loaded into a zone PRAM40 of the volatile memory RAM, from the zone WM40 of the non-volatile working memory WM, when the task main application App40 needs it.

A une deuxième phase (vue (b)), l'application App41 demande à son tour à être exécutée par l'élément sécurisé E. Les données d’exécution relatives à la tâche principale de l'application App41 sont transférées, téléchargées ou chargées dans une zone PRAM41 de la mémoire volatile RAM, à partir de la zone WM41 de la mémoire non volatile de travail WM. Ces données sont stockées à la suite des données d’exécution relatives à l'application App40 dans la mémoire volatile RAM. L'application App41 est alors en cours d'exécution, et l'application App40 est alors en veille.In a second phase (view (b)), the application App41 in turn requests to be executed by the secure element E. The execution data relating to the main task of the application App41 are transferred, downloaded or loaded in a zone PRAM41 of the volatile memory RAM, from the zone WM41 of the non-volatile working memory WM. These data are stored following the execution data relating to the App40 application in the volatile RAM memory. The App41 application is then running, and the App40 application is then on standby.

A une troisième phase (vue (c)), l'application App41 est toujours exécutée par l'élément sécurisé E, mais la mémoire volatile RAM n'a plus d'espace disponible pour stocker des données d’exécution supplémentaires relatives à cette application App41. Des données d’exécution relatives à des tâches secondaires de l'application App40, présentes dans la zone PRAM40, sont alors transférées ou déplacées vers la zone WM40 de la mémoire non volatile WM pour libérer de l'espace de stockage dans la mémoire volatile RAM.At a third phase (view (c)), the application App41 is still executed by the secure element E, but the volatile RAM memory no longer has space available to store additional execution data relating to this application App41. Execution data relating to secondary tasks of the application App40, present in the area PRAM40, are then transferred or moved to the area WM40 of the non-volatile memory WM to free up storage space in the volatile memory RAM .

Il peut également se produire que des données de l'application App41 soient transférées dans la mémoire de travail, par exemple si toutes les données d'exécution de l'application App40 ont déjà été transférées en mémoire de travail mais que la capacité de la mémoire volatile n'est pas suffisante pour toutes les données d'exécution de l'application App41. Dans ce cas, les données les moins utilisées ou les plus anciennes sont transférées en mémoire de travail.It can also happen that data from the App41 application is transferred to working memory, for example if all the execution data of the App40 application has already been transferred to working memory but the memory capacity volatile is not sufficient for all App41 application runtime data. In this case, the least used or oldest data is transferred to working memory.

La comprend trois vues (a), (b), et (c) illustrant chacune une phase d'un mode de mise en oeuvre d'un procédé d'exécution d'applications App50 et App51 de l'élément sécurisé E décrit en relation avec la . Ces trois vues illustrent plus particulièrement l'utilisation de la mémoire non volatile de travail WM et de la mémoire volatile RAM de l'élément sécurisé E pendant l'activation des applications App50 et App51.There comprises three views (a), (b), and (c) each illustrating a phase of an embodiment of a method for executing applications App50 and App51 of the secure element E described in relation to there . These three views illustrate more particularly the use of the non-volatile working memory WM and of the volatile memory RAM of the secure element E during the activation of the applications App50 and App51.

. Les applications App50 et App51, en fonction de leur implémentation, pourraient se trouver dans un même système d’exploitation de haut niveau ou dans deux systèmes d’exploitation de haut niveau différents.. The App50 and App51 applications, depending on their implementation, could be in the same high-level operating system or in two different high-level operating systems.

On suppose que les applications App50 et App51 ont déjà été démarrées par l'élément sécurisé E et sont désactivées. Toutes les données d’exécution relatives au démarrage et au fonctionnement des applications App50 et App51 sont respectivement stockées dans des zones WM50 et WM51 de la mémoire non volatile de travail WM.It is assumed that applications App50 and App51 have already been started by secure element E and are deactivated. All the execution data relating to the starting and operation of the applications App50 and App51 are respectively stored in areas WM50 and WM51 of the non-volatile working memory WM.

Selon l'exemple décrit en , l'application App50 est une application à usage fréquent, appelée par la suite application résidente, aussi décrite en relation avec la .According to the example described in , the App50 application is a frequently used application, hereinafter called resident application, also described in relation to the .

A une première phase (vue (a)), l'application résidente App50 demande à être exécutée par l'élément sécurisé E. Des données d’exécution, de démarrage et de fonctionnement, relatives à l'application App50 sont transférées, téléchargées ou chargées dans une zone PRAM50 réservée de la mémoire volatile RAM, à partir de la zone WM50 de la mémoire non volatile de travail WM. La zone PRAM50 est une zone de la mémoire volatile RAM toujours disponible pour stocker les données d’exécution de l'application App50, et qui ne peut pas être utilisée pour stocker des données d’exécution d'autres applications. L'application App50 est alors en cours d'exécution.In a first phase (view (a)), the resident application App50 requests to be executed by the secure element E. Execution, start-up and operating data relating to the application App50 are transferred, downloaded or loaded into a reserved PRAM50 area of the volatile RAM memory, from the WM50 area of the non-volatile working memory WM. The PRAM50 area is an area of volatile RAM memory that is always available to store App50 application runtime data, and cannot be used to store runtime data from other applications. The App50 application is then running.

A une deuxième phase (vue (b)), l'application App51 demande à être exécutée par l'élément sécurisé E. Des données d’exécution de démarrage et de fonctionnement relatives à l'application App51 sont transférées, téléchargées ou chargées dans une zone PRAM51 de la mémoire volatile RAM, à partir de la zone WM51 de la mémoire non volatile de travail WM. Ces données sont stockées à la suite des données d’exécution relatives à l'application App50 dans la mémoire volatile RAM. L'application App51 est alors en cours d'exécution, et l'application App50 est alors en veille.In a second phase (view (b)), the App51 application requests to be executed by the secure element E. Startup and operating execution data relating to the App51 application are transferred, downloaded or loaded into a area PRAM51 of the volatile memory RAM, from area WM51 of the non-volatile working memory WM. These data are stored following the execution data relating to the App50 application in the volatile RAM memory. The App51 application is then running, and the App50 application is then on standby.

A une troisième phase (vue (c)), l'application App51 est toujours en cours d'exécution par l'élément sécurisé E, mais la mémoire volatile RAM n'a plus d'espace disponible pour stocker des données d’exécution supplémentaires relatives à l'application App51. Les données d’exécution relatives à l'application App51 ne pouvant être stockées dans la zone PRAM50, certaines données d’exécution relatives à des tâches secondaires de l'application App51 sont alors déplacées vers la zone WM51 de la mémoire non volatile de travail WM pour libérer de l'espace de stockage dans la mémoire volatile RAM.At a third phase (view (c)), the application App51 is still being executed by the secure element E, but the volatile RAM memory no longer has space available to store additional execution data relating to the App51 application. Since the execution data relating to the App51 application cannot be stored in the PRAM50 area, certain execution data relating to secondary tasks of the App51 application are then moved to the WM51 area of the non-volatile working memory WM to free up storage space in volatile RAM.

Dans le cas où l'élément sécurisé E a besoin de mettre en oeuvre une troisième application, alors que la mémoire volatile RAM n'a plus d'espace disponible pour stocker des données d’exécution, le système de bas niveau (sa fonction de gestion de mémoire MMF) déplacera les données de l'application, qui n'est pas résidente, dont l'exécution est la plus ancienne.In the event that the secure element E needs to implement a third application, while the volatile RAM memory no longer has space available to store execution data, the low-level system (its MMF memory management) will move data from the oldest non-resident application.

En variante, une application résidente a une partie des données d'exécution en mémoire volatile dédiée (résidente) et une autre partie en mémoire volatile partagée avec d'autres applications. Cette partie partagée peut alors être transférée en mémoire de travail (non volatile) lorsque l'exécution de la tâche de l'application concernée est interrompue ou a besoin de plus de place en mémoire volatile.Alternatively, a resident application has part of the execution data in dedicated volatile memory (resident) and another part in volatile memory shared with other applications. This shared part can then be transferred to working memory (non-volatile) when the execution of the task of the application concerned is interrupted or needs more space in volatile memory.

Un avantage des modes de réalisation décrits est que toutes les applications sont chargées dans une mémoire vue, par les systèmes d'exploitation de haut niveau de ces applications, comme une mémoire volatile. Cela permet un démarrage rapide de chaque application.An advantage of the embodiments described is that all the applications are loaded into a memory seen, by the high-level operating systems of these applications, as a volatile memory. This allows a quick start of each application.

Un autre avantage des modes de réalisation décrits est qu'une application à usage fréquent est garantie d'avoir de la place dans la mémoire volatile RAM du circuit pour y stocker ses données d’exécution de fonctionnement.Another advantage of the described embodiments is that a frequently used application is guaranteed to have room in the circuit's volatile RAM memory to store its operating execution data.

De préférence, les systèmes d'exploitation de bas niveau 113, décrits en relation avec la , gèrent l'affectation des zones mémoire et leur remplissage avec les données d'exécution des applications (résidentes ou non). Plus particulièrement, le ou les systèmes d'exploitation de bas niveau sont adaptés à détecter si une application est une application résidente ou non. Un élément sécurisé E peut comprendre plusieurs applications résidentes. Les systèmes d'exploitation de bas niveau 113 sont, en outre, adaptés à refuser l'installation d'une application en tant qu'application résidente, par exemple, si l'élément sécurisé E comprend trop d'applications résidentes, en particulier lorsqu'une trop grande partie, par exemple plus de la moitié, de la mémoire volatile RAM est réservée à des données d'exécutions d'applications résidentes. Selon une variante, les systèmes d'exploitation de bas niveau 113 sont adaptés à configurer les tailles des parties de la mémoire volatile RAM réservées à des données d'exécution d'applications résidentes. En particulier, les systèmes d'exploitation de bas niveau 113 sont adaptés à configurer la taille d'une partie de la mémoire volatile RAM réservée à des données d'exécution d'une application résidente, pour la rendre égale à zéro.Preferably, the low-level operating systems 113, described in connection with the , manage the allocation of memory zones and their filling with the runtime data of the applications (resident or not). More particularly, the low-level operating system or systems are adapted to detect whether an application is a resident application or not. A secure element E can comprise several resident applications. Low-level operating systems 113 are further adapted to refuse the installation of an application as resident application, for example, if the secure element E includes too many resident applications, in particular when Too much, for example more than half, of the volatile RAM memory is reserved for resident application execution data. According to a variant, the low-level operating systems 113 are adapted to configure the sizes of the portions of the volatile RAM memory reserved for the execution data of resident applications. In particular, the low-level operating systems 113 are suitable for configuring the size of a part of the volatile RAM memory reserved for execution data of a resident application, to make it equal to zero.

De plus, si l'élément sécurisé comprend plusieurs applications résidentes, alors les données d'exécution de ces applications résidentes sont toutes stockées dans une même partie "résidente" de la mémoire volatile RAM. Lorsque cette partie "résidente" est pleine, les données d'exécution relatives à des tâches secondaires des applications résidentes sont déplacées vers la mémoire non volatile de travail WM.Moreover, if the secure element comprises several resident applications, then the execution data of these resident applications are all stored in the same “resident” part of the volatile RAM memory. When this "resident" part is full, the execution data relating to secondary tasks of the resident applications are moved to the non-volatile working memory WM.

De plus, si toutes les applications résidentes de l'élément sécurisé sont désactivées, la partie "résidente" de la mémoire volatile RAM, qui est réservée aux données d'exécution des applications résidentes, peut être utilisée pour stocker des données d'exécution d'autres applications de l'élément sécurisé. Par ailleurs, la taille de la partie "résidente" de la mémoire volatile RAM peut être ajustée en fonction des besoins des applications résidentes. En outre, si une application résidente, qui demande à être exécuté, n’a pas assez de place pour charger ses données dans la partie "résidente" de la mémoire volatile RAM, son exécution est suspendue et elle reste dans l’état désactivé. L'application concernée ne pourra être exécutée que lorsqu’il y aura assez de place dans la partie "résidente" de la mémoire volatile RAM. A titre d'exemple, de la place peut être libérée en désactivant d'autres applications résidentes. Selon un autre exemple, la taille de la partie "résidente" de la mémoire volatile PRAM peut être augmentée.Additionally, if all of the secure element's resident applications are disabled, the "resident" portion of volatile RAM, which is reserved for resident application execution data, can be used to store execution data for Other Secure Element Applications. Furthermore, the size of the "resident" part of the volatile RAM memory can be adjusted according to the needs of the resident applications. Furthermore, if a resident application, which requests to be executed, does not have enough room to load its data into the "resident" part of the volatile RAM, its execution is suspended and it remains in the disabled state. The application concerned can only be executed when there is enough space in the "resident" part of the volatile RAM memory. For example, space can be freed up by disabling other resident applications. According to another example, the size of the "resident" part of the volatile memory PRAM can be increased.

Selon un autre mode de réalisation, les données d'exécution d'une application inactive ou en veille qui sont stockées dans la mémoire de travail WM ne sont transférées en mémoire volatile, lors d'une nouvelle activation de cette application, qu'au fur et à mesure des besoins de l'application. Cette action est effectuée par le système d'exploitation de bas niveau et est transparente pour l'application et le système d'exploitation de haut niveau correspondant. En effet, les déplacements de données entre la mémoire volatile et la mémoire non volatile de travail et inversement ne sont pas vus par les systèmes d'exploitation de haut niveau. Dans le cas où toute la mémoire volatile a besoin d'être utilisée lors d'un chargement, le système d'exploitation de bas niveau déplace au préalable, vers la mémoire de travail, une donnée d'exécution qui est considérée comme la plus ancienne (celle qui a été utilisée le moins récemment) ou la moins utilisée.According to another embodiment, the execution data of an inactive or standby application which are stored in the working memory WM are transferred to volatile memory, during a new activation of this application, only as and as required by the application. This action is performed by the low-level operating system and is transparent to the application and the corresponding high-level operating system. Indeed, data movements between volatile memory and non-volatile working memory and vice versa are not seen by high-level operating systems. In the event that all the volatile memory needs to be used during a load, the low-level operating system first moves, to the working memory, a piece of execution data which is considered to be the oldest. (the one that has been used least recently) or the least used.

Divers modes de réalisation, aspects et variantes ont été décrits. L’homme de l’art comprendra que certaines caractéristiques de ces divers modes de réalisation, aspects et variantes pourraient être combinées, et d’autres variantes apparaitront à l’homme de l’art.Various embodiments, aspects and variations have been described. Those skilled in the art will understand that certain features of these various embodiments, aspects and variations could be combined, and other variations will occur to those skilled in the art.

En particulier, l'utilisation de la mémoire non volatile de travail a surtout été décrite avec l'exécution de deux applications mais, en pratique, cette utilisation peut être transposée avec l'utilisation de plus de deux applications.In particular, the use of the non-volatile working memory has above all been described with the execution of two applications but, in practice, this use can be transposed with the use of more than two applications.

De plus, une application pourrait être divisée en une ou plusieurs sous-applications résidentes et une ou plusieurs sous-applications non résidentes. Autrement dit, l'application résidente pourrait être une partie d'une autre application.Additionally, an application could be divided into one or more resident sub-applications and one or more non-resident sub-applications. In other words, the resident application could be part of another application.

Enfin, la mise en oeuvre pratique des modes de réalisation et variantes décrits est à la portée de la personne du métier à partir des indications fonctionnelles données ci-dessus.Finally, the practical implementation of the embodiments and variants described is within the abilities of those skilled in the art based on the functional indications given above.

Claims (17)

Système électronique embarqué (E) comportant :
- au moins une mémoire volatile (12, RAM) ; et
- au moins un système d'exploitation de bas niveau (113) gérant l'allocation de zones de la mémoire volatile à plusieurs systèmes d’exploitation de haut niveau comportant chacun une ou plusieurs applications (App30, App31 ; App50, App51),
dans lequel ladite mémoire volatile comporte :
au moins une première partie (PRAM30 ; PRAM50) réservée à des données d'exécution d'une première application (App30 ; App50) ; et
au moins une deuxième partie destinée à stocker des données d'exécution d'au moins une deuxième application (App31 ; App51),
les données d'exécution de la première application restant dans la mémoire volatile en cas de désactivation ou de mise en veille de cette première application.
Embedded electronic system (E) comprising:
- at least one volatile memory (12, RAM); And
- at least one low-level operating system (113) managing the allocation of volatile memory areas to several high-level operating systems each comprising one or more applications (App30, App31; App50, App51),
wherein said volatile memory includes:
at least a first part (PRAM30; PRAM50) reserved for execution data of a first application (App30; App50); And
at least a second part intended to store execution data of at least a second application (App31; App51),
the execution data of the first application remaining in the volatile memory in the event of deactivation or standby of this first application.
Procédé mis en oeuvre par un système électronique embarqué (E) comportant :
- au moins une mémoire volatile (12, RAM) ; et
- au moins un système d'exploitation de bas niveau (113) gérant l'allocation de zones de la mémoire volatile à plusieurs systèmes d’exploitation de haut niveau comportant chacun une ou plusieurs applications (App30, App31 ; App50, App51),
dans lequel ladite mémoire volatile comporte :
au moins une première partie (PRAM30 ; PRAM50) réservée à des données d'exécution d'une première application (App30 ; App50) ; et
au moins une deuxième partie destinée à stocker des données d'exécution d'au moins une deuxième application (App31 ; App51),
les données d'exécution de la première application restant dans la mémoire volatile en cas de désactivation ou de mise en veille de cette première application.
Method implemented by an on-board electronic system (E) comprising:
- at least one volatile memory (12, RAM); And
- at least one low-level operating system (113) managing the allocation of volatile memory areas to several high-level operating systems each comprising one or more applications (App30, App31; App50, App51),
wherein said volatile memory includes:
at least a first part (PRAM30; PRAM50) reserved for execution data of a first application (App30; App50); And
at least a second part intended to store execution data of at least a second application (App31; App51),
the execution data of the first application remaining in the volatile memory in the event of deactivation or standby of this first application.
Procédé selon la revendication 2, dans lequel les données d'exécution de plusieurs applications sont simultanément présentes en mémoire volatile (12).Method according to claim 2, in which the execution data of several applications are simultaneously present in volatile memory (12). Procédé selon la revendication 2 ou 3, dans lequel une fonction ou unité de gestion de mémoires (115) exécutée par le système d'exploitation de bas niveau empêche l'accès des données d'exécution d'une application à d'autres applications.A method as claimed in claim 2 or 3, wherein a memory management function or unit (115) performed by the low-level operating system prevents access of runtime data of one application to other applications. Procédé selon la revendication 4, dans lequel la fonction ou unité de gestion de mémoires adapte la taille des première et deuxième parties de la mémoire volatile en fonction des besoins des différentes applications.Method according to claim 4, in which the memory management function or unit adapts the size of the first and second portions of the volatile memory according to the needs of the different applications. Procédé selon l'une quelconque des revendications 2 à 5, dans lequel des données d’exécution d'une ou plusieurs tâches d'une application sont transférées, en tout ou en partie, par le système d'exploitation de bas niveau, de ladite mémoire volatile (12) vers une mémoire non volatile (13, WM) lorsque que l'exécution de ladite tâche est interrompue par l'exécution d'au moins une tâche d'une autre application.Method according to any one of Claims 2 to 5, in which data for the execution of one or more tasks of an application are transferred, in whole or in part, by the low-level operating system, from said volatile memory (12) to a non-volatile memory (13, WM) when the execution of said task is interrupted by the execution of at least one task of another application. Procédé selon la revendication 6, dans lequel la mémoire non volatile est externe au système électronique embarqué.Method according to claim 6, in which the non-volatile memory is external to the on-board electronic system. Procédé selon la revendication 7, dans lequel un code d'exécution d'une application est transféré en mémoire volatile (12) pour son exécution.A method according to claim 7, wherein an application execution code is transferred to volatile memory (12) for execution. Procédé selon la revendication 6, dans lequel la mémoire non volatile est interne au système électronique embarqué.Method according to claim 6, in which the non-volatile memory is internal to the on-board electronic system. Procédé selon la revendication 9, dans lequel un code d'exécution d'une application reste en mémoire non volatile (13) lors de l'exécution d'une tâche.Method according to claim 9, in which an application's execution code remains in non-volatile memory (13) during the execution of a task. Procédé selon l'une quelconque des revendications 6 à 10, dans lequel une zone de mémoire non volatile allouée à un système d'exploitation de haut niveau est vue par celui-ci comme une mémoire de travail volatile.A method as claimed in any one of claims 6 to 10, wherein an area of non-volatile memory allocated to a high-level operating system is viewed by it as volatile working memory. Procédé selon l'une quelconque des revendications 6 à 10, dans lequel les systèmes d'exploitation de haut niveau gèrent une image virtuelle des mémoires dans laquelle les mémoires volatile et non volatile ne font qu'une.A method according to any one of claims 6 to 10, wherein the high level operating systems maintain a virtual image of the memories in which the volatile and non-volatile memories are one. Procédé selon l'une quelconque des revendications 6 à 10, dans lequel une zone de mémoire volatile est allouée à la deuxième application alors qu'elle n'est pas exécutée, les données d'exécution de cette deuxième application étant transférées en mémoire non volatile si la taille de mémoire volatile disponible n'est pas suffisante à l'exécution d'une troisième application.Method according to any one of Claims 6 to 10, in which a volatile memory area is allocated to the second application while it is not being executed, the execution data of this second application being transferred to non-volatile memory if the available volatile memory size is not sufficient for the execution of a third application. Procédé selon l'une quelconque des revendications 2 à 13, dans lequel, lors de son exécution, une tâche principale d'une application se voit allouer une zone de mémoire volatile.Method according to any one of Claims 2 to 13, in which, during its execution, a main task of an application is allocated an area of volatile memory. Procédé selon l'une quelconque des revendications 2 à 14, dans lequel les applications d'un système d'exploitation de haut niveau n'ont pas accès aux zones de la mémoire volatile allouées aux applications d'un autre système d'exploitation de haut niveau.Method according to any one of Claims 2 to 14, in which the applications of a high-level operating system do not have access to the areas of the volatile memory allocated to the applications of another high-level operating system. level. Système selon la revendication 1, configuré pour la mise en œuvre du procédé selon l'une quelconque des revendications 2 à 15System according to claim 1, configured for the implementation of the method according to any one of claims 2 to 15 Elément sécurisé embarqué, configuré pour la mise en oeuvre du procédé selon l'une quelconque des revendications 2 à 15.On-board secure element, configured for implementing the method according to any one of Claims 2 to 15.
FR2009752A 2019-03-26 2020-09-25 Embedded secure element Pending FR3114671A1 (en)

Priority Applications (9)

Application Number Priority Date Filing Date Title
FR2009752A FR3114671A1 (en) 2020-09-25 2020-09-25 Embedded secure element
EP21770041.8A EP4217864A1 (en) 2020-09-25 2021-09-20 Memory reservation for frequently-used applications in an embedded secure element
CN202180066115.9A CN116235147A (en) 2020-09-25 2021-09-20 Memory management of frequently used applications in embedded secure elements
PCT/EP2021/075778 WO2022063720A1 (en) 2020-09-25 2021-09-20 Memory management for applications of a multiple operating systems embedded secure element
CN202180066011.8A CN116209982A (en) 2020-09-25 2021-09-20 Memory management for applications of multiple operating system embedded secure elements
PCT/EP2021/075780 WO2022063721A1 (en) 2020-09-25 2021-09-20 Memory reservation for frequently-used applications in an embedded secure element
US17/479,275 US20220004625A1 (en) 2019-03-26 2021-09-20 Embedded secure element
US17/479,255 US20220004509A1 (en) 2019-03-26 2021-09-20 Embedded secure element
EP21770040.0A EP4217861A1 (en) 2020-09-25 2021-09-20 Memory management for applications of a multiple operating systems embedded secure element

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR2009752A FR3114671A1 (en) 2020-09-25 2020-09-25 Embedded secure element
FR2009752 2020-09-25

Publications (1)

Publication Number Publication Date
FR3114671A1 true FR3114671A1 (en) 2022-04-01

Family

ID=74859970

Family Applications (1)

Application Number Title Priority Date Filing Date
FR2009752A Pending FR3114671A1 (en) 2019-03-26 2020-09-25 Embedded secure element

Country Status (1)

Country Link
FR (1) FR3114671A1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1524597A1 (en) * 2003-10-14 2005-04-20 Axalto S.A. Method for managing threads in a memory-constrained system
US20150113257A1 (en) * 2013-10-23 2015-04-23 Insyde Software Corp. System and method for dual os memory switching
US20180113817A1 (en) * 2015-06-15 2018-04-26 Intel Corporation Virtualization-based platform protection technology
US20180165008A1 (en) * 2016-12-13 2018-06-14 International Business Machines Corporation Memory transaction prioritization

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1524597A1 (en) * 2003-10-14 2005-04-20 Axalto S.A. Method for managing threads in a memory-constrained system
US20150113257A1 (en) * 2013-10-23 2015-04-23 Insyde Software Corp. System and method for dual os memory switching
US20180113817A1 (en) * 2015-06-15 2018-04-26 Intel Corporation Virtualization-based platform protection technology
US20180165008A1 (en) * 2016-12-13 2018-06-14 International Business Machines Corporation Memory transaction prioritization

Similar Documents

Publication Publication Date Title
EP0733245B1 (en) Memory card and operation method
EP1605333B1 (en) Program execution control
EP2764462A1 (en) Method of generating, from an initial package file comprising an application to be secured and an initial configuration file, a package file for securing the application, and associated computer program product and computing device
WO2008107438A1 (en) Method for executing a program pertaining to several services, corresponding electronic system and device
FR2862397A1 (en) Electronic apparatus booting method, involves extending secure domain to application processor, when application and boot-strap processors are authenticated, and booting operating system of processors to store data in protected part of RAM
EP2735969A1 (en) Electronic assembly including a deactivation module
FR2969334A1 (en) SAFETY EQUIPMENT MODULE AND METHOD FOR DEBUGGING SUCH A MODULE
EP2466470B1 (en) Hardware security module and processing method in such a module
FR2808359A1 (en) MULTI-APPLICATIVE CHIP CARD
FR2945143A1 (en) Applications i.e. contactless payment applications, administrating method for mobile telephone terminal, involves deactivating applications to transmit deactivation request of previously activated group to access controller
FR3114671A1 (en) Embedded secure element
FR3114670A1 (en) Embedded secure element
FR3105854A1 (en) Embedded system
FR3105853A1 (en) Embedded system
WO2020193664A1 (en) Secure on-board element
FR3089655A1 (en) Device such as a connected object provided with means for controlling the execution of a program executed by the device
EP4036717A1 (en) Start-up of an application
WO2014063940A1 (en) Method for managing identifiers in an integrated circuit board and corresponding integrated circuit board
FR2864650A1 (en) METHOD FOR UPDATING APPLICATIONS FOR A CHIP CARD
FR2854261A1 (en) Software application executing method for personal computer, involves detecting coupling of chip card with personal computer using software bootstrap program, and loading and executing client program in computer
EP4024221B1 (en) Method for increasing the number of applications in a limited memory device
EP3648491B1 (en) Multi-configuration secure element and associated method
WO2002008897A1 (en) Protocol for message exchange between applications implanted on an onboard system, and corresponding onboard system
EP3317800A1 (en) Method of managing profiles in a secure element
EP2115656B1 (en) Method for modifying secrets in a cryptographic module, particularly in a non-protected environment

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20220401

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4