FR2964480A1 - Method for executing computer financial transaction application in e.g. contactless smart card utilized in payment terminal, involves determining function data of execution context before utilizing function data by computer application - Google Patents

Method for executing computer financial transaction application in e.g. contactless smart card utilized in payment terminal, involves determining function data of execution context before utilizing function data by computer application Download PDF

Info

Publication number
FR2964480A1
FR2964480A1 FR1057084A FR1057084A FR2964480A1 FR 2964480 A1 FR2964480 A1 FR 2964480A1 FR 1057084 A FR1057084 A FR 1057084A FR 1057084 A FR1057084 A FR 1057084A FR 2964480 A1 FR2964480 A1 FR 2964480A1
Authority
FR
France
Prior art keywords
data
application
execution
computer application
context
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.)
Granted
Application number
FR1057084A
Other languages
French (fr)
Other versions
FR2964480B1 (en
Inventor
Francis Chamberot
Martinasso Ludovic Martin
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.)
Idemia France SAS
Original Assignee
Oberthur Technologies SA
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 Oberthur Technologies SA filed Critical Oberthur Technologies SA
Priority to FR1057084A priority Critical patent/FR2964480B1/en
Publication of FR2964480A1 publication Critical patent/FR2964480A1/en
Application granted granted Critical
Publication of FR2964480B1 publication Critical patent/FR2964480B1/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/356Aspects of software for card payments
    • G06Q20/3563Software being resident on card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/357Cards having a plurality of specified features
    • G06Q20/3574Multiple applications on card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/357Cards having a plurality of specified features
    • G06Q20/3576Multiple memory zones on card
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Accounting & Taxation (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Abstract

The method involves determining (E231) function data of a current execution context before utilizing (E240) the function data by a computer application, by executing an autonomous software patch that is external to the computer application and is triggered through a jump instruction, where the function data are stored in a rewritable non-volatile memory i.e. electrically EPROM. The determined function data are copied (E232) from a secondary memory region to a main memory region, using the software patch. The data are chosen from a group comprising momentary amount associated with payment facilities, personal identification number associated with users, and secret and dummy data associated with absence and detection of an attack on a smart card. Independent claims are also included for the following: (1) a processing device comprising an executing software environment (2) an information storage medium comprising instructions for performing a method for executing a computer application in a processing device (3) a computer program comprising instructions for performing a method for executing a computer application in a processing device.

Description

La présente invention concerne l'exécution d'une application informatique dans un dispositif de traitement tel qu'une carte à puce, et plus particulièrement un procédé d'exécution d'une application informatique dont l'exécution utilise une donnée stockée en mémoire qui est fonction d'un contexte d'exécution courant, et un dispositif de traitement associé. The present invention relates to the execution of a computer application in a processing device such as a smart card, and more particularly to a method of executing a computer application the execution of which uses data stored in memory which is function of a current execution context, and an associated processing device.

Il est classique qu'une application informatique, notamment mémorisée en mémoire ROM (pour "Read-Only Memory") dans une carte à puce, tienne compte de certains paramètres définissant un contexte d'exécution courant pour choisir telle ou telle donnée à utiliser lors de son exécution. On parle alors de "donnée contextuelle". It is conventional for a computer application, notably memorized in ROM (for "Read-Only Memory") in a smart card, to take into account certain parameters defining a current execution context to choose which data to use when of his execution. This is called "contextual data".

C'est par exemple le cas d'une application de transaction financière, couramment utilisée dans les cartes à puce. Dans ce cadre, une carte à puce peut être utilisée dans un terminal de paiement réalisant une communication avec contact pour réaliser une transaction financière à l'aide de cette application. Cette transaction est fortement sécurisée du fait de la saisie d'un numéro d'identification personnel (ou PIN pour "Persona/ Identification Number') et du fait d'échanges entre le terminal et un serveur distant de sécurité. Des transactions d'un montant élevé peuvent être ainsi réalisées. La même carte à puce peut être dotée de moyens de communication sans contact (généralement connue sous l'appellation de carte "contactless") dans une utilisation de la même application informatique pour des transactions de plus faibles montants, ne requérant pas de connexion en ligne avec un serveur central, comme par exemple une fonctionnalité de porte-monnaie électronique. Le porte-monnaie électronique contient des unités de paiement préchargées. La sécurité des transactions électroniques de faibles montants est toutefois moindre, notamment en ce qu'il n'est généralement pas requis la saisie d'un PIN, ni l'utilisation d'un serveur distant de sécurité. This is for example the case of a financial transaction application, commonly used in smart cards. In this context, a smart card can be used in a payment terminal performing a contact communication to perform a financial transaction using this application. This transaction is highly secure due to the entry of a personal identification number (or PIN for "Persona / Identification Number") and because of exchanges between the terminal and a remote security server. The same smart card can be provided with contactless communication means (generally known as a "contactless" card) in a use of the same computer application for transactions of smaller amounts. This does not require an online connection to a central server, such as an e-purse functionality.The e-purse contains preloaded payment units, but the security of small electronic transactions is less It is not usually required to enter a PIN or use a remote security server.

Le plafond de paiement pour la fonction de porte-monnaie électronique est moindre que celui pour la fonction de paiement à l'aide d'un terminal avec contact. Ces plafonds sont stockés en mémoire dans la carte à puce. The payment ceiling for the electronic wallet function is less than that for the payment function using a contact terminal. These ceilings are stored in memory in the smart card.

Aujourd'hui, la prise en compte d'un plafond variable selon l'utilisation porte-monnaie ou transaction avec contact (ou de toute autre donnée selon un contexte d'exécution variable) est intégrée directement dans le code de l'application (c'est-à-dire "en dur" dans le code), aux nombreux endroits idoines, par exemple à l'aide d'instructions conditionnelles renvoyant vers l'une ou l'autre des données en mémoire. Cela pose un problème, notamment lorsque l'on souhaite faire évoluer l'application informatique, soit parce qu'initialement elle ne tient compte que d'un seul contexte d'exécution, soit parce que l'on souhaite ajouter un nouveau contexte d'exécution. En effet, dans ce cas, il est nécessaire d'intervenir directement dans le code à de nombreux endroits afin d'introduire les instructions conditionnelles adéquates et les renvois correspondants vers la mémoire. Or ces modifications ne sont pas sans effet, notamment en ce qu'elles peuvent nécessiter la certification (selon les "critères communs" par exemple) à nouveau de l'ensemble de l'application informatique mémorisée en mémoire ROM. Une telle certification requiert toutefois plusieurs semaines de délais et engendre des dépenses non négligeables. La présente invention vise à pallier ces inconvénients en réduisant voire supprimant la modification du code de l'application informatique et donc d'éventuelles nouvelles certifications onéreuses et longues pour tenir compte d'un contexte d'exécution nouveau ou changeant. A cet effet, l'invention concerne notamment un procédé d'exécution d'une application informatique dans un dispositif de traitement comprenant un environnement logiciel d'exécution de l'application, ladite application informatique et/ou l'environnement logiciel comprenant au moins une instruction de branchement pour appeler un patch logiciel autonome externe, et ladite application informatique s'exécutant en utilisant au moins une donnée stockée en mémoire, cette donnée utilisée étant fonction d'un contexte d'exécution courant, procédé dans lequel la donnée stockée fonction du contexte d'exécution courant est déterminée, préalablement à son utilisation par l'application, par l'exécution d'un patch logiciel autonome externe à ladite application et déclenchée au travers de ladite instruction de branchement. L'invention permet de s'affranchir d'une modification du code de l'application informatique (ou de se limiter à une unique modification) lorsque l'on souhaite obtenir une telle application informatique dont l'exécution tient compte d'un contexte d'exécution courant. Cet impact inexistant ou minime sur le code de l'application est en effet obtenu par l'utilisation d'un patch logiciel (section de code dont le but initial est d'apporter des correctifs/modifications à l'application) qui est autonome (en ce qu'il n'est pas intégré à l'application elle-même, mais vient se greffer sur elle - donc externe à l'application) et qui permet de déterminer la donnée contextuelle à utiliser par l'application. Ainsi, les instructions conditionnelles de l'état de l'art peuvent être évitées, et du coup les nombreuses interventions tout au long du code. Seule une nouvelle instruction de branchement dans le code peut s'avérer nécessaire, ce qui, d'ailleurs, limite une nouvelle certification à une partie seulement de l'application et non à l'entièreté de celle-ci. En outre, il est classique qu'à la conception initiale, l'application informatique comporte de nombreuses instructions de branchement vers d'hypothétiques patchs. Les patchs ne sont alors développés qu'au fur et à mesure des besoins, certaines instructions de branchement aboutissant du coup sur des patchs "vides". Dans ce cas, ladite instruction de branchement est une instruction de branchement prévue à la conception de l'application informatique et/ou de l'environnement logiciel pour appeler un hypothétique patch logiciel autonome externe non encore défini. Et la présente invention évite toute intervention directe dans le code de l'application ou du système d'exploitation car il est possible d'utiliser une telle instruction de branchement prévue initialement pour déclencher l'exécution du patch autonome selon l'invention. Today, the consideration of a variable ceiling according to the use of wallet or contact transaction (or any other data according to a variable execution context) is integrated directly into the code of the application (c ie "hard" in the code), at the many appropriate places, for example using conditional instructions returning to one or other of the data in memory. This poses a problem, especially when one wishes to evolve the computer application, either because initially it takes into account only one execution context, or because one wishes to add a new context of execution. Indeed, in this case, it is necessary to intervene directly in the code in many places in order to introduce the appropriate conditional instructions and the corresponding references to the memory. However, these modifications are not without effect, in particular in that they may require certification (according to "common criteria" for example) again of the entire computer application stored in ROM. Such certification, however, requires several weeks of delays and incurs significant expenses. The present invention aims to overcome these disadvantages by reducing or even eliminating the modification of the code of the computer application and therefore possible new certifications expensive and long to account for a new or changing execution context. For this purpose, the invention particularly relates to a method of executing a computer application in a processing device comprising a software environment for executing the application, said computer application and / or the software environment comprising at least one branching instruction for calling an external autonomous software patch, and said computer application executing using at least one piece of data stored in memory, this data being used as a function of a current execution context, a process in which the stored data is a function of current execution context is determined, prior to its use by the application, by the execution of an autonomous software patch external to said application and triggered through said branch instruction. The invention makes it possible to dispense with a modification of the code of the computer application (or to limit itself to a single modification) when it is desired to obtain such a computer application the execution of which takes account of a context of current execution. This non-existent or minimal impact on the code of the application is indeed obtained by the use of a software patch (section of code whose initial goal is to bring patches / modifications to the application) which is autonomous ( in that it is not integrated with the application itself, but is grafted onto it - so external to the application) and which determines the contextual data to be used by the application. Thus, the conditional instructions of the state of the art can be avoided, and suddenly the many interventions throughout the code. Only a new branching instruction in the code may be necessary, which, moreover, limits a new certification to only part of the application and not to the entirety of it. In addition, it is conventional that the initial design, the computer application includes many instructions for branching to hypothetical patches. The patches are then developed as and when needed, some branch instructions resulting in hit "empty" patches. In this case, said branch instruction is a branch instruction provided for the design of the computer application and / or the software environment for calling a hypothetical external autonomous software patch not yet defined. And the present invention avoids any direct intervention in the code of the application or the operating system because it is possible to use such a branch instruction initially provided to trigger the execution of the autonomous patch according to the invention.

En détournant l'utilisation classique des patchs logiciels correctifs pour en faire des outils de détermination et de sélection de données contextuelles utilisées par l'application logicielle, l'invention réduit drastiquement les interventions sur ces dernières, et du coup les coûts et délais de nouvelle certification, le cas échéant. On notera que I"'environnement logiciel d'exécution de l'application" peut être constitué d'un ensemble de logiciels qui sont en cours d'exécution lorsque ladite application est exécutée. A titre principal, il s'agit notamment du système d'exploitation prévu dans le dispositif de traitement, type carte à puce. By diverting the traditional use of patches patches fixes to make tools for determining and selecting contextual data used by the software application, the invention drastically reduces the interventions on the latter, and suddenly the costs and delays of new certification, if any. It should be noted that the "application execution software environment" may consist of a set of software programs that are running when said application is executed. Mainly, it includes the operating system provided in the processing device, type smart card.

L'invention s'applique à l'utilisation d'une ou plusieurs données spécifiques à un contexte d'exécution. Dans un mode de réalisation, l'application informatique accède une zone mémoire principale pour obtenir ladite donnée à utiliser, et ledit patch logiciel renseigne, dans ladite zone mémoire principale, la donnée déterminée en fonction du contexte d'exécution courant. Dans cette configuration, l'application informatique accède toujours à la même zone mémoire pour récupérer la donnée dont elle à besoin. Les opérations réalisées par le patch logiciel aux fins d'indiquer dans cette zone mémoire la donnée contextuelle qui convient sont donc totalement transparentes pour l'application. Cela garantit l'absence de modification de l'application pour introduire le choix de données contextuelles. En particulier, le patch logiciel copie la donnée déterminée depuis une zone mémoire secondaire vers la zone mémoire principale. Cette configuration est simple à mettre en oeuvre. On prévoira d'ailleurs éventuellement une recopie du contenu de la zone mémoire principale vers la zone mémoire secondaire à l'issue de l'exécution de l'application. Cela est valable notamment lorsque ces données contextuelles sont susceptibles d'évoluer au cours de l'exécution de l'application (par exemple un compteur du montant cumulé des transactions depuis la dernière transaction réalisée avec connexion à un serveur central). En particulier, il peut être prévu que la donnée déterminée en fonction du contexte d'exécution courant est renseignée par une écriture en mémoire non volatile réinscriptible. The invention applies to the use of one or more data specific to an execution context. In one embodiment, the computer application accesses a main memory area to obtain said data to be used, and said software patch informs, in said main memory area, the data determined according to the current execution context. In this configuration, the computer application always accesses the same memory area to retrieve the data it needs. The operations carried out by the software patch to indicate in this memory zone the appropriate contextual data are thus completely transparent for the application. This ensures no modification of the application to introduce the choice of contextual data. In particular, the software patch copies the determined data from a secondary memory area to the main memory area. This configuration is simple to implement. It will also be possible to copy the contents of the main memory area to the secondary memory area after execution of the application. This is particularly valid when these contextual data are likely to change during the execution of the application (for example a counter of the cumulative amount of transactions since the last transaction performed with connection to a central server). In particular, it can be provided that the data determined according to the current execution context is filled by a rewritable non-volatile memory write.

En variante, le patch logiciel associe à la zone mémoire principale un pointeur vers une zone mémoire secondaire stockant la donnée déterminée. Cette disposition présente l'avantage que la zone mémoire principale (ou les zones mémoires principales dans le cas où l'on met en oeuvre l'invention pour plusieurs données contextuelles simultanées) peuvent être de taille réduite. En effet, un pointeur (par exemple l'indication d'une autre adresse mémoire) est généralement compact: par exemple sur deux octets là où une donnée, type compteur de valeurs, est prévue sur six octets plus six octets de somme de contrôle (en anglais "checksum"). In a variant, the software patch associates with the main memory zone a pointer to a secondary memory zone storing the determined datum. This arrangement has the advantage that the main memory area (or the main memory areas in the case where the invention is implemented for several simultaneous contextual data) can be reduced in size. Indeed, a pointer (for example the indication of another memory address) is generally compact: for example on two bytes where a datum, type counter of values, is provided on six bytes plus six bytes of checksum ( in English "checksum").

En outre, l'usage de pointeurs permet d'éviter l'étape de recopie du contenu de la zone mémoire principale vers la zone mémoire secondaire en cas d'évolution du contenu des données contextuelles au cours de l'exécution de l'application. En particulier, la zone mémoire principale comprend des données par défaut d'un contexte par défaut, un champ binaire de partage et une adresse de partage, et on renseigne, dans la zone mémoire principale, au moins une donnée déterminée différente des données par défaut, en utilisant le champ binaire de partage pour indiquer quelles données par défaut sont remplacées par l'au moins une donnée déterminée et en utilisant l'adresse de partage pour pointer sur l'emplacement mémoire stockant l'au moins une donnée déterminée. Selon une caractéristique de l'invention, le patch logiciel détermine le contexte d'exécution courant pour sélectionner ladite donnée à utiliser parmi une pluralité de données associées à une pluralité respective de contextes d'exécution. C'est la donnée ainsi sélectionnée qui est renseignée dans la zone mémoire principale évoquée précédemment. A titre d'exemple, à chaque contexte d'exécution peut être associé un fichier de données de partage dans lequel est défini l'ensemble des données spécifiques à ce contexte. Le patch selon l'invention peut alors permettre de "charger" ces données contextuelles d'un coup en indiquant ou pointant la zone mémoire principale vers ce fichier. In addition, the use of pointers avoids the step of copying the contents of the main memory area to the secondary storage area in case of changes in the content of the contextual data during the execution of the application. In particular, the main memory zone includes default data of a default context, a sharing bit field and a sharing address, and is informed, in the main memory area, at least one determined data different from the default data. , using the sharing bit field to indicate which default data is replaced by the at least one given datum and using the sharing address to point to the memory location storing the at least one given datum. According to a feature of the invention, the software patch determines the current execution context for selecting said data to be used from among a plurality of data associated with a respective plurality of execution contexts. This is the data thus selected which is entered in the main memory area mentioned above. For example, each execution context can be associated with a share data file in which the set of data specific to this context is defined. The patch according to the invention can then be used to "load" these contextual data at once by indicating or pointing the main memory area to this file.

En particulier, la détermination du contexte d'exécution courant comprend la détection de l'une parmi : - une interface de communication utilisée pour l'exécution de l'application, entre une interface de communication à contact et une interface de 5 communication sans contact ; - une information identifiant un utilisateur du dispositif de traitement au moment de l'exécution de ladite application ; et - une information identifiant la détection d'une attaque sur le dispositif de traitement. 10 Le premier contexte d'exécution relatif à la nature de l'interface de communication peut simplement être déterminé en détectant la provenance du signal électrique d'alimentation du dispositif de traitement (soit via un contact électrique, soit via le module sans contact). Le deuxième contexte peut par exemple découler d'une identification 15 préalable de l'utilisateur (ou "porteur") du dispositif. Cette identification permet ainsi de "charger" des données spécifiques à cet utilisateur pour l'exécution de l'application, sans que cette dernière ne soit modifiée pour y indiquer explicitement l'existence de plusieurs utilisateurs possibles. Le troisième contexte découle des mécanismes de détection 20 d'attaques, par exemple d'attaque par faute, bien connus de l'homme de l'art. La présente invention offre ici une réalisation modulaire des préventions contre ces attaques car les mécanismes de détection des attaques, l'application informatique et le patch autonome apte à sélectionner des données en fonction de la détection ou non d'une attaque sont totalement indépendants. 25 Selon une caractéristique particulière, la pluralité de données associées à une pluralité respective de contextes d'exécution comprend l'une parmi: - une pluralité de montants monétaires associée respectivement à une pluralité de moyens de paiement mettant en oeuvre des moyens de 30 communication différents ; - une pluralité de numéros d'identification personnels (PIN) associée à une pluralité d'utilisateurs ; et - au moins une donnée secrète et une donnée factice associées à l'absence et à la détection d'une attaque sur la carte à puce. Ces données peuvent correspondre aux trois contextes d'exécution évoqués précédemment. In particular, the determination of the current execution context comprises the detection of one of: a communication interface used for the execution of the application between a contact communication interface and a contactless communication interface ; an information identifying a user of the processing device at the time of execution of said application; and an information item identifying the detection of an attack on the processing device. The first execution context relating to the nature of the communication interface can simply be determined by detecting the origin of the electrical supply signal of the processing device (either via an electrical contact or via the contactless module). The second context may for example arise from a prior identification of the user (or "carrier") of the device. This identification thus makes it possible to "load" data specific to this user for the execution of the application, without the latter being modified to explicitly indicate the existence of several possible users. The third context arises from the attack detection mechanisms, for example fault attack, well known to those skilled in the art. The present invention offers here a modular realization of the preventions against these attacks because the attack detection mechanisms, the computer application and the autonomous patch able to select data according to the detection or not of an attack are completely independent. According to one particular characteristic, the plurality of data associated with a respective plurality of execution contexts comprises one of: a plurality of monetary amounts respectively associated with a plurality of payment means implementing different communication means ; a plurality of personal identification numbers (PINs) associated with a plurality of users; and at least one secret data and one fact data associated with the absence and detection of an attack on the smart card. These data can correspond to the three execution contexts mentioned above.

Dans un mode de réalisation, ladite instruction de branchement est intégrée dans le code de l'application informatique, avant les instructions mettant en oeuvre ladite donnée stockée en mémoire. Cette disposition permet soit d'utiliser directement les instructions de branchement vers d'hypothétiques patchs prévues dès la conception de l'application afin de ne pas intervenir à nouveau sur celle-ci, soit de modifier uniquement l'application en un seul emplacement du code, préalablement à la première instruction mettant en oeuvre la donnée contextuelle (donc par exemple au niveau du début de l'application). En variante, ladite instruction de branchement est intégrée à un système d'exploitation dans lequel est exécutée l'application informatique, ladite instruction de branchement étant prévue au sein d'instructions de code configurées pour traiter une commande de sélection de ladite application informatique. Cette disposition permet d'éviter toute modification de l'application informatique. En outre, elle présente l'avantage d'une mise en oeuvre simple de l'invention car associer l'instruction de branchement vers le patch au morceau de code traitant toute commande de sélection de l'application informatique garantit que la détermination et la sélection des données contextuelles sont bien réalisées avant leur utilisation. In one embodiment, said branch instruction is integrated in the code of the computer application, before the instructions implementing said data stored in memory. This arrangement makes it possible either to directly use the connection instructions to hypothetical patches provided at the design of the application so as not to intervene again on it, or to modify only the application in one location of the code , prior to the first instruction implementing the contextual data (thus for example at the beginning of the application). Alternatively, said branch instruction is integrated with an operating system in which the computer application is executed, said branch instruction being provided within code instructions configured to process a selection command of said computer application. This arrangement makes it possible to avoid any modification of the computer application. In addition, it has the advantage of a simple implementation of the invention because associating the connection instruction to the patch to the piece of code processing any selection command of the computer application ensures that the determination and selection contextual data is well realized before use.

Selon une caractéristique de l'invention, ladite application informatique est mémorisée dans une mémoire protégée en écriture du dispositif de traitement. Il peut s'agir d'une mémoire morte non réinscriptible, ou d'une mémoire Flash EEPROM protégée contre l'écriture par des moyens matériels. En effet, les applications pour lesquels les certifications sont généralement requises sont celles prévues pour être stockées dans les mémoires protégées en écriture. La mise en oeuvre de l'invention s'avère donc particulièrement avantageuse pour ce type d'applications informatiques. According to one characteristic of the invention, said computer application is stored in a write-protected memory of the processing device. It can be a non-rewritable read-only memory, or a Flash EEPROM protected against writing by material means. Indeed, the applications for which certifications are generally required are those intended to be stored in the write-protected memories. The implementation of the invention is therefore particularly advantageous for this type of computer applications.

Selon une caractéristique de l'invention, le dispositif de traitement est une carte à puce. L'invention a également pour objet un procédé d'exécution d'une application informatique mémorisée dans une mémoire protégée en écriture d'une carte à puce, ladite application informatique s'exécutant en utilisant une donnée stockée en mémoire qui est fonction d'un contexte d'exécution courant, comprenant les étapes suivantes: à détection, par un système d'exploitation de la carte à puce, d'une commande de sélection de ladite application informatique, exécution d'une instruction de branchement prévue dans le système d'exploitation et configurée pour déclencher l'exécution d'un patch logiciel autonome, le patch logiciel alors en exécution sélectionne, en fonction de l'interface de communication utilisée par la carte parmi une interface de communication avec contact et une interface de communication sans contact, une donnée à utiliser parmi au moins une première donnée contextuelle associée à une communication avec contact et au moins une deuxième donnée contextuelle associée à une communication sans contact. Ce procédé présente des avantages similaires à ceux exposés précédemment, notamment celui d'éviter toute intervention dans le code de l'application informatique pour introduire une utilisation de données contextuelles. L'invention a également pour objet un dispositif de traitement, par exemple une carte à puce, comprenant un environnement logiciel d'exécution et une application informatique dont l'exécution, dans l'environnement logiciel d'exécution, utilise au moins une donnée stockée en mémoire du dispositif de traitement, cette donnée utilisée étant fonction d'un contexte d'exécution courant, ladite application informatique et/ou l'environnement logiciel comprenant au moins une instruction de branchement pour appeler un patch logiciel autonome externe, et le dispositif de traitement comprenant un patch logiciel autonome externe à l'application et agencé pour déterminer ladite donnée à utiliser en fonction du contexte d'exécution courant parmi une pluralité de données stockées en mémoire, dispositif dans lequel ladite instruction de branchement est configurée pour déclencher l'exécution du patch logiciel autonome préalablement à l'utilisation de ladite donnée par l'application de sorte à sélectionner ladite donnée à utiliser parmi ladite pluralité de données. Le dispositif de traitement ou a carte à puce présente des avantages similaires à ceux du procédé exposé ci-dessus. En particulier, il permet de ne pas avoir à modifier le code de l'application informatique (ou alors de façon très minime) pour introduire l'utilisation de données contextuelles. De façon optionnelle, le dispositif de traitement peut comprendre des moyens se rapportant aux caractéristiques du procédé exposé précédemment, et notamment des zones mémoires principale et secondaire à partir desquelles sont réalisées des opérations de copie ou sont instanciés des pointeurs; un système d'exploitation définissant l'environnement logiciel d'exécution de l'application et dans lequel l'instruction de branchement est prévue au sein d'instructions de code configurées pour traiter une commande de sélection de l'application informatique. Dans un mode de réalisation particulier, l'invention concerne 20 également une carte à puce comprenant : au moins une mémoire protégée en écriture mémorisant une application informatique dont l'exécution utilise une donnée stockée en mémoire et fonction d'un contexte d'exécution courant, et mémorisant un système d'exploitation définissant une environnement logiciel dans lequel 25 s'exécute ladite application, une interface de communication avec contact et une interface de communication sans contact pour communiquer avec l'extérieur de la carte, une mémoire stockant au moins une première donnée contextuelle associée à une communication avec contact, et au moins une deuxième 30 donnée contextuelle associée à une communication sans contact, un patch logiciel autonome agencé pour sélectionner, en fonction d'une interface de communication utilisée, la donnée à utiliser par l'application parmi la première et la deuxième données, carte dans laquelle le système d'exploitation comprend une instruction de branchement apte à être exécutée à la détection d'une commande de sélection de ladite application informatique, ladite instruction de branchement étant configurée pour déclencher l'exécution dudit patch de sorte à sélectionner ladite donnée à utiliser. Cette carte à puce présente notamment les avantages évoqués précédemment en lien avec le procédé d'exécution selon l'invention. L'invention concerne également un moyen de stockage d'informations comprenant des instructions pour un programme informatique adapté à mettre en oeuvre le procédé d'exécution conforme à l'invention lorsque ce programme est chargé et exécuté par un système informatique. According to one characteristic of the invention, the processing device is a smart card. The subject of the invention is also a method for executing a computer application stored in a memory protected in writing from a smart card, said computer application executing using data stored in memory which is a function of a memory card. current execution context, comprising the steps of: detecting, by an operating system of the smart card, a selection command of said computer application, executing a branch instruction provided in the system of operating and configured to trigger the execution of a standalone software patch, the software patch then in execution selects, according to the communication interface used by the card from a contact communication interface and a contactless communication interface, data to be used from at least one first contextual data associated with a contact communication and at least one second Contextual context associated with contactless communication. This method has advantages similar to those described above, in particular that of avoiding any intervention in the code of the computer application to introduce a use of contextual data. The invention also relates to a processing device, for example a smart card, comprising a runtime software environment and a computer application whose execution, in the runtime software environment, uses at least one stored data. in memory of the processing device, this data used being a function of a current execution context, said computer application and / or the software environment comprising at least one branch instruction for calling an external autonomous software patch, and the device for processing comprising an autonomous software patch external to the application and arranged to determine said data to be used according to the current execution context among a plurality of data stored in memory, wherein said branch instruction is configured to trigger the execution the autonomous software patch prior to the use of said data by the app cation to select said data item to be used from said plurality of data. The processing device or chip card has advantages similar to those of the method explained above. In particular, it makes it possible to avoid having to modify the code of the computer application (or in a very minimal way) to introduce the use of contextual data. Optionally, the processing device may comprise means relating to the characteristics of the method described above, and in particular main and secondary memory areas from which copy operations are performed or instantiated pointers; an operating system defining the application execution software environment and wherein the branch instruction is provided within code instructions configured to process a selection command of the computer application. In a particular embodiment, the invention also relates to a smart card comprising: at least one write-protected memory storing a computer application whose execution uses a piece of data stored in memory and according to a current execution context and storing an operating system defining a software environment in which said application executes, a contact communication interface and a contactless communication interface for communicating with the outside of the card, a memory storing at least one first contextual data associated with a contact communication, and at least one second contextual data associated with a contactless communication, an autonomous software patch arranged to select, according to a communication interface used, the data to be used by the application among the first and the second data, a map in which the system me operating comprises a branch instruction which can be executed upon detection of a gear selection control of said computer program, said branch instruction is configured to initiate execution of said patch so as to select said data to be used. This smart card has in particular the advantages mentioned above in connection with the execution method according to the invention. The invention also relates to an information storage means comprising instructions for a computer program adapted to implement the execution method according to the invention when this program is loaded and executed by a computer system.

L'invention concerne également un programme d'ordinateur lisible par un microprocesseur, comprenant des instructions pour la mise en oeuvre du procédé d'exécution conforme à l'invention, lorsque ce programme est chargé et exécuté par le microprocesseur. Les moyens de stockage d'information et programme d'ordinateur présentent des caractéristiques et avantages analogues aux procédés qu'ils mettent en oeuvre. D'autres particularités et avantages de l'invention apparaîtront dans la description ci-après, illustrée par les dessins ci-joints, dans lesquels : - la figure 1 illustre schématiquement une carte à puce mettant en oeuvre la présente invention; - la figure 2 représente, sous forme de logigramme, des étapes générales d'exécution d'une application embarquée dans une carte à puce, selon la présente invention; et - les figures 3a-3c illustrent un mode de réalisation des mécanismes d'indication de données contextuelles à l'application embarquée, en fonction du contexte d'exécution courant. The invention also relates to a computer program readable by a microprocessor, comprising instructions for implementing the execution method according to the invention, when this program is loaded and executed by the microprocessor. The information storage means and computer program have characteristics and advantages similar to the processes they implement. Other features and advantages of the invention will appear in the description below, illustrated by the accompanying drawings, in which: - Figure 1 schematically illustrates a smart card embodying the present invention; FIG. 2 represents, in the form of a logic diagram, general steps for executing an application embedded in a smart card, according to the present invention; and FIGS. 3a-3c illustrate an embodiment of the contextual data indication mechanisms for the embedded application, as a function of the current execution context.

Dans l'exemple de réalisation décrit ci-après en référence aux figures 1 à 3, l'application informatique au sens de l'invention est une application de transaction financière embarquée dans un dispositif de traitement. Bien entendu, l'invention peut s'appliquer à d'autres types d'applications embarquées, telles qu'une application d'authentification ou de cryptographie. En référence à la figure 1, un dispositif portatif de traitement de type carte à puce 1 comprend un corps de carte 10 et un module de carte 20. Le corps de carte 10 comprend, dans son épaisseur, une antenne 11 de communication sans contact reliée au module de carte 20, bien connue de l'homme de l'art. Le module de carte 20 comprend, comme illustré schématiquement, un bus central 21 auquel sont reliés une mémoire morte non réinscriptible (mémoire ROM) 22, une mémoire vive RAM 23, une mémoire de stockage réinscriptible 24, type mémoire EEPROM, un microprocesseur 25, un module de communication sans contact 26 relié à l'antenne 11 par des bornes de connexion (non représentées), et une interface de communication par contact 27 présentant des contacts électriques affleurant la carte. Le module de communication sans contact 26 (ou cellule radiofréquence) associé à l'antenne 11 contribue aux communications selon la norme ISO 14443 avec un lecteur sans contact 50 externe à la carte à puce. L'interface de communication par contact 27 contribue aux communications selon la norme ISO 7816 avec un lecteur avec contact 51 externe à la carte à puce. In the embodiment described hereinafter with reference to FIGS. 1 to 3, the computer application within the meaning of the invention is a financial transaction application embedded in a processing device. Of course, the invention can be applied to other types of embedded applications, such as an authentication or cryptographic application. With reference to FIG. 1, a portable smart card type processing device 1 comprises a card body 10 and a card module 20. The card body 10 comprises, in its thickness, an attached contactless communication antenna 11 to the card module 20, well known to those skilled in the art. The card module 20 comprises, as illustrated schematically, a central bus 21 to which are connected a non-rewritable read-only memory (ROM) 22, a random access memory RAM 23, a rewritable storage memory 24, EEPROM memory type, a microprocessor 25, a contactless communication module 26 connected to the antenna 11 by connection terminals (not shown), and a contact communication interface 27 having electrical contacts flush with the card. The contactless communication module 26 (or radiofrequency cell) associated with the antenna 11 contributes to communications according to ISO 14443 with a contactless reader 50 external to the smart card. The contact communication interface 27 contributes to communications according to the ISO 7816 standard with a reader 51 with contact external to the smart card.

Dans la mémoire ROM 22, sont mémorisées les instructions logicielles d'une application informatique de transaction financière 220 et d'un système d'exploitation 221 qui est exécuté lors de l'alimentation électrique de la carte à puce, soit par le lecteur 51 via les contacts électriques 27, soit par le lecteur 50 via le circuit de communication sans contact 11-26. L'invention s'applique toutefois également lorsque l'application informatique est mémorisée dans la mémoire réinscriptible 24. In the ROM 22, are stored the software instructions of a financial transaction computer application 220 and an operating system 221 which is executed during the power supply of the smart card, either by the reader 51 via the electrical contacts 27, or by the reader 50 via the contactless communication circuit 11-26. The invention however also applies when the computer application is stored in the rewritable memory 24.

L'application informatique 220 présente, lorsqu'elle est exécutée, une fonction de transaction "grand montant" utilisant le lecteur avec contact 51, et une fonction de transaction "faible montant" utilisant le lecteur sans contact 50. Ces deux fonctions sont réalisées sensiblement à l'aide des mêmes mécanismes, c'est-à-dire par les mêmes portions de code de l'application informatique 220. Lors de cette exécution, l'application informatique utilise des données stockées en mémoire EEPROM 24, pour contrôler les mécanismes de transaction. Dans l'exemple de la figure, ces données sont au nombre de quatre comme suit: - un compteur 240 du montant cumulé des transactions effectuées depuis la dernière connexion on fine avec un serveur central; - un compteur 241 du nombre de transactions effectuées depuis la dernière connexion on fine avec le serveur central; - des valeurs seuils haute et basse 242 pour le compteur 240: la valeur basse définit la valeur à partir de laquelle il est essayé de réaliser la transaction courante on fine avec le serveur central, et la valeur haute définit la valeur à partir de laquelle toute nouvelle transaction est bloquée s'il n'est pas possible de réaliser une connexion avec le serveur central; - des valeurs seuils haute et basse 243 pour le compteur 241, ayant la même finalité que les valeurs 242 eu égard au nombre de transactions 241; - des valeurs 244 d'un premier seuil et d'un second seuil définissant respectivement un premier plafond de montant de transaction à partir duquel la transaction nécessite une connexion avec le serveur central, et un deuxième plafond de montant maximal autorisé. L'application informatique 220 et/ou le système d'exploitation 221 comprennent des instructions de branchement vers d'hypothétiques patchs, prévues dès leur conception. De telles instructions de branchement prévues dès la conception sont connues de l'homme de l'art pour permettre notamment d'introduire à faible coût des patchs correctifs de l'application ou du système d'exploitation. En pratique ces instructions de branchement sont exécutées mais en l'absence du patch correspondant en mémoire (ou si celui-ci est vide), aucune action ne se passe. En variante, de telles instructions de branchement peuvent être rajoutées au coup par coup à ces logiciels, nécessitant alors une recompilation avant réinstallation. Selon l'invention, ces instructions de branchement vont permettre de lancer l'exécution d'un patch qui remplira les données 240-244 avec les données spécifiques au contexte de la transaction en cours (transaction avec contact ou transaction de porte-monnaie électronique sans contact). Le microprocesseur 25 est apte à exécuter tout logiciel tel que le système d'exploitation 221 et l'application informatique 220 et d'éventuels patchs (section de code additionnelle d'un logiciel) tels qu'introduits par la suite. Le microprocesseur 25 permet ainsi à la carte à puce 1 d'exécuter un procédé conforme à l'invention dont des exemples sont donnés par la suite. Chaque logiciel est composé d'une série d'instructions de commande du microprocesseur 25 qui sont chargées depuis une mémoire non volatile 22 ou 24 vers la mémoire vive RAM 23 ou qui sont exécutées directement depuis la mémoire non volatile. En variante, l'ensemble microprocesseur 25 - mémoire non-volatile 22 - mémoire vive 23 peut être remplacé par un circuit à application spécifique qui comprend alors des moyens de mise en oeuvre des différentes étapes du procédé selon l'invention. La mémoire non volatile réinscriptible 24 stocke par ailleurs une pluralité de données 240'-244'; 240"-244" associées à une pluralité respective de contextes d'exécution C1-C2. L'invention s'applique également lorsque tout ou partie de ces données sont mémorisées dans une autre mémoire, par exemple la mémoire ROM 22 lorsque ces données concernent des données secrètes (clés de cryptage par exemple). Dans notre exemple de la figure, quatre données 240'-244' sont associées à un contexte d'exécution Cl défini par l'utilisation de l'interface de communication avec contact 27 lors d'une transaction. Ces données comprennent : - un compteur 240' du montant cumulé des transactions effectuées depuis la dernière connexion on fine avec un serveur central ; - un compteur 241' du nombre de transactions effectuées depuis la dernière connexion on fine avec le serveur central ; - des valeurs seuils haute et basse 242' pour le compteur 240': la valeur basse définit la valeur à partir de laquelle il est essayé de réaliser la transaction courante on fine avec le serveur central, et la valeur haute définit la valeur à partir de laquelle toute nouvelle transaction est bloquée s'il n'est pas possible de réaliser une connexion avec le serveur central ; - des valeurs seuils haute et basse 243' pour le compteur 241', ayant la même finalité que les valeurs 242' eu égard au nombre de transactions 241' ; - des valeurs 244 d'un premier seuil et d'un second seuil définissant respectivement un premier plafond de montant de transaction à partir duquel la transaction nécessite une connexion avec le serveur central, et un deuxième plafond de montant maximal autorisé pour les transactions avec contact. The computer application 220 has, when executed, a "large amount" transaction function using the reader with contact 51, and a "low amount" transaction function using the contactless reader 50. These two functions are performed substantially. using the same mechanisms, that is to say by the same portions of code of the computer application 220. During this execution, the computer application uses data stored in the EEPROM memory 24, to control the mechanisms transaction. In the example of the figure, these data are four in number as follows: a counter 240 of the cumulative amount of transactions made since the last fine connection with a central server; a counter 241 of the number of transactions carried out since the last fine connection with the central server; high and low threshold values 242 for the counter 240: the low value defines the value from which it is attempted to perform the current transaction on the central server, and the high value defines the value from which any new transaction is blocked if it is not possible to make a connection with the central server; high and low threshold values 243 for the counter 241, having the same purpose as the values 242 with regard to the number of transactions 241; values 244 of a first threshold and a second threshold respectively defining a first transaction amount ceiling from which the transaction requires a connection with the central server, and a second maximum amount ceiling authorized. The computer application 220 and / or the operating system 221 include instructions for connection to hypothetical patches, provided from their conception. Such branching instructions provided in the design are known to those skilled in the art to allow in particular to introduce low-cost patch patches of the application or the operating system. In practice these branching instructions are executed but in the absence of the corresponding patch in memory (or if it is empty), no action occurs. Alternatively, such branch instructions can be added piecemeal to these software, requiring recompilation before reinstallation. According to the invention, these branching instructions will make it possible to start the execution of a patch that will fill the data 240-244 with the context-specific data of the current transaction (transaction with contact or electronic purse transaction without contact). The microprocessor 25 is capable of executing any software such as the operating system 221 and the computer application 220 and any patches (additional code section of software) as introduced thereafter. The microprocessor 25 thus enables the smart card 1 to execute a method according to the invention, examples of which are given below. Each software is comprised of a series of microprocessor control instructions that are loaded from nonvolatile memory 22 or 24 to RAM 23 or are executed directly from the nonvolatile memory. In a variant, the microprocessor assembly 25 - non-volatile memory 22 - random access memory 23 may be replaced by a specific application circuit which then comprises means for implementing the various steps of the method according to the invention. The non-volatile rewritable memory 24 also stores a plurality of data 240'-244 '; 240 "-244" associated with a respective plurality of C1-C2 execution contexts. The invention also applies when all or part of these data are stored in another memory, for example the ROM 22 when these data relate to secret data (encryption keys for example). In our example of the figure, four data 240'-244 'are associated with an execution context C1 defined by the use of the contact communication interface 27 during a transaction. This data comprises: a counter 240 'of the cumulative amount of transactions made since the last connection on a central server; a counter 241 'of the number of transactions carried out since the last fine connection with the central server; high and low threshold values 242 'for the counter 240': the low value defines the value from which it is tried to carry out the current transaction with the central server, and the high value defines the value from which any new transaction is blocked if it is not possible to make a connection with the central server; - high and low threshold values 243 'for the counter 241', having the same purpose as the values 242 'with respect to the number of transactions 241'; values 244 of a first threshold and a second threshold respectively defining a first transaction amount ceiling from which the transaction requires a connection with the central server, and a second maximum amount ceiling authorized for contact transactions. .

Par défaut, ces données peuvent être copiées au niveau des données 240-244 à la mise sous tension de la carte à puce. Cela définit le contexte Cl comme contexte par défaut. De façon similaire, les quatre données 240"-244" sont associées à un contexte d'exécution C2 défini par l'utilisation de l'interface de communication sans contact 26+11 lors d'une transaction "faible montant". Ces données comprennent : - un compteur 240" du montant cumulé des transactions effectuées depuis la dernière connexion on fine avec un serveur central ; - un compteur 241" du nombre de transactions effectuées depuis la dernière connexion on fine avec le serveur central ; - des valeurs seuils haute et basse 242" pour le compteur 240" ; - des valeurs seuils haute et basse 243" pour le compteur 241" ; - des valeurs 244" d'un seuil définissant un plafond de montant maximal autorisé pour les transactions sans contact. By default, this data can be copied at data 240-244 when the smart card is powered up. This sets the Cl context as the default context. Similarly, the four 240 "-244" data are associated with a C2 execution context defined by the use of the 26 + 11 contactless communication interface in a "small amount" transaction. These data comprise: a counter 240 of the cumulative amount of transactions made since the last connection on a central server, a counter 241 of the number of transactions made since the last connection with the central server; - high and low threshold values 242 "for the counter 240"; - high and low threshold values 243 "for the counter 241"; - 244 "values of a threshold defining a ceiling of maximum amount allowed for contactless transactions.

En pratique l'utilisation du porte-monnaie électronique ne requiert pas d'identification par code PIN, ni de connexion avec un serveur central (transaction offline). De ce fait les valeurs seuils haute et basse 242" et 243" sont de préférence plus faibles que les valeurs seuils haute et basse 242' et 243'. A noter que dans ce cas, les compteurs comptabilisent par exemple le montant cumulé et le nombre de transactions depuis la dernière connexion on fine effectuée pour recharger le porte-monnaie électronique. In practice, the use of the electronic purse does not require identification by PIN code or connection with a central server (offline transaction). As a result, the high and low threshold values 242 "and 243" are preferably lower than the high and low threshold values 242 'and 243'. Note that in this case, the counters count for example the accumulated amount and the number of transactions since the last connection was fine made to recharge the electronic purse.

Enfin, la mémoire EEPROM 24 mémorise un patch logiciel autonome 249 constitué d'une suite d'instructions de code agencée pour déterminer un contexte d'exécution courant entre Cl et C2 et pour sélectionner les données 240'-244' ou 240"-244" correspondantes et les associer aux emplacements mémoires 240-244 utilisés par l'application. Bien entendu, un plus grand nombre de contextes peut être prévu. En référence à la figure 2, on décrit maintenant les étapes principales d'une mise en oeuvre de l'invention. A la mise sous tension de la carte à puce 1 par le lecteur 50 ou 51, le système d'exploitation détermine, à l'aide de moyens logiciels appropriés, si les communications mises en oeuvre le sont via l'interface sans contact 26 ou via l'interface avec contact 27. Cette information 230 est alors stockée en mémoire RAM 23 (étape E200) et indique directement dans quel contexte d'exécution Cl ou C2 se situent les communications en cours. La détermination du mode de communication mis en oeuvre peut notamment résulter de la détection du courant d'alimentation, soit par induction via le circuit 26, soit directement via les contacts électriques de l'interface 27. En variante, cette détection peut être réalisée ultérieurement à la mise sous tension, par exemple au moment où l'application informatique de transaction 220 est appelée et sélectionnée. Finally, the EEPROM memory 24 stores an autonomous software patch 249 consisting of a sequence of code instructions arranged to determine a current execution context between C1 and C2 and to select the 240'-244 'or 240 "-244 data. "corresponding and associate them with memory locations 240-244 used by the application. Of course, more contexts can be expected. With reference to FIG. 2, the main steps of an implementation of the invention will now be described. When the smart card 1 is turned on by the reader 50 or 51, the operating system determines, using appropriate software means, whether the communications implemented are via the contactless interface 26 or via the contact interface 27. This information 230 is then stored in RAM 23 (step E200) and indicates directly in which execution context C1 or C2 are the current communications. The determination of the mode of communication used can in particular result from the detection of the supply current, either by induction via the circuit 26, or directly via the electrical contacts of the interface 27. As a variant, this detection can be performed later. upon power-up, e.g., when the transaction computer application 220 is called and selected.

Puis pour la mise en oeuvre d'une transaction financière (avec ou sans contact), le terminal actif 50 ou 51 sélectionne l'application de transaction financière 220 par émission d'une commande APDU (pour "Application Protocol Data Unit") de type SELECT, à l'étape E210. En variante, la sélection de l'application 220 peut être implicite et automatique à la mise sous tension E200). A réception de la commande APDU SELECT, le système d'exploitation 221 exécute son propre code destiné à traiter ces commandes APDU SELECT. Ce code contient notamment une instruction de branchement vers le patch 249. Ainsi, le code du patch 249 est exécuté à cette occasion s'il n'est pas vide (étape E220), c'est-à-dire avant l'utilisation des données 240-244 par l'application 220. Si le patch 249 est vide, l'exécution du système d'exploitation 221 se poursuit vers l'étape E240. Dans un mode de réalisation, un drapeau (non représenté) peut être prévu au niveau de la mémoire EEPROM 24 pour indiquer si le patch 249 est vide. Ainsi, le système d'exploitation 221 n'accède au patch 249 que s'il est non vide. Then for the implementation of a financial transaction (with or without contact), the active terminal 50 or 51 selects the financial transaction application 220 by issuing an APDU command (for "Application Protocol Data Unit") of type SELECT, at step E210. Alternatively, the selection of the application 220 may be implicit and automatic at power-up E200). Upon receipt of the APDU SELECT command, the operating system 221 executes its own code for processing these APDU SELECT commands. This code contains in particular a connection instruction to the patch 249. Thus, the code of the patch 249 is executed on this occasion if it is not empty (step E220), that is to say before the use of the data 240-244 by the application 220. If the patch 249 is empty, the execution of the operating system 221 continues to step E240. In one embodiment, a flag (not shown) may be provided at the EEPROM 24 to indicate whether the patch 249 is empty. Thus, the operating system 221 only accesses patch 249 if it is not empty.

Au cours de l'étape E230 correspondant à l'exécution du code du patch 249 s'il est non vide, ce dernier : - détermine (E231) le contexte d'exécution courant Cl ou C2 par simple lecture de l'information 230. En variante, la détermination de l'information 230 peut être réalisée à cette occasion en lieu et place de l'étape E200 ci-dessus ; - détermine (E232), dans la mémoire EEPROM 24, les données spécifiques au contexte courant, à savoir 240'-244' pour le contexte Cl et 240"-244" pour le contexte C2 ; - renseigne (E233), au niveau des données 240-244 qui vont être utilisées par l'application de transaction 220, les données déterminées à l'étape E232. A titre illustratif, l'étape E233 peut consister à recopier les données déterminées 240'-244' ou 240"-244" au niveau des données 240-244, avec écrasement des données qui y sont présentes. During the step E230 corresponding to the execution of the code of the patch 249 if it is not empty, the latter: determines (E231) the current execution context C1 or C2 by simply reading the information 230. Alternatively, the determination of the information 230 can be performed on this occasion instead of step E200 above; determines (E232), in the EEPROM 24, the data specific to the current context, namely 240'-244 'for the context C1 and 240 "-244" for the context C2; - informs (E233), at the data 240-244 that will be used by the transaction application 220, the data determined in step E232. As an illustration, the step E233 may consist of copying the determined data 240'-244 'or 240 "-244" to the data 240-244, with overwriting of the data present therein.

En variante, le patch 249 peut renseigner, dans les emplacements 240-244, des pointeurs appropriés vers les données déterminées 240'-244' ou 240"-244". Puis à l'étape E240, l'application de transaction 220 est effectivement sélectionnée et lancée. Son exécution utilise alors les données 240-244 (contenant 240'-244' ou 240"-244") pour réaliser ladite transaction demandée par le lecteur actif 50 ou 51. A noter qu'en l'absence de patch 249, les données 240-244 comprennent des données par défaut qui correspondent à un unique contexte d'exécution envisagé. Grâce à l'invention, en une seule action, c'est-à-dire à partir d'un seul point de branchement dans le système d'exploitation 221 (de façon similaire dans l'application 220 le cas échéant), on affecte les bonnes valeurs contextuelles à utiliser en fonction du contexte d'exécution courant. Dans notre exemple, l'application 220 utilise ainsi les données spécifiques 240"-244" à une transaction de porte-monnaie électronique s'il s'agit d'une transaction avec un lecteur sans contact 50, et utilise les données spécifiques 240'-244' d'une transaction avec contact en cas d'utilisation du lecteur par contact 51. Une étape E250 peut alors être prévue dans le cas où l'étape E233 consiste en une copie des valeurs 240'-244' ou 240"-244" dans les emplacements mémoires 240-244. Au cours de cette étape, les données mémorisées dans les données 240-244 (qui ont pu évoluer lors de l'exécution de l'application 220) sont recopiées dans les emplacements d'origine 240'-244' ou 240"-244" selon que le contexte d'exécution courant soit Cl ou C2 (indiqué dans l'information 230). L'exécution de l'application 220 pour la transaction se termine alors. Alternatively, the patch 249 may provide, in the locations 240-244, appropriate pointers to the determined data 240'-244 'or 240 "-244". Then in step E240, the transaction application 220 is actually selected and started. Its execution then uses the data 240-244 (containing 240'-244 'or 240 "-244") to carry out said transaction requested by the active reader 50 or 51. Note that in the absence of patch 249, the data 240-244 include default data that corresponds to a single intended execution context. Thanks to the invention, in a single action, that is to say from a single point of connection in the operating system 221 (similarly in the application 220 if necessary), it affects the right contextual values to use based on the current execution context. In our example, the application 220 thus uses the specific data 240 "-244" to an electronic purse transaction if it is a transaction with a contactless reader 50, and uses the specific data 240 ' 244 'of a contact transaction in case of use of the reader by contact 51. A step E250 can then be provided in the case where the step E233 consists of a copy of the values 240'-244' or 240 "- 244 "in memory slots 240-244. During this step, the data stored in the data 240-244 (which may have changed during the execution of the application 220) are copied back to the original locations 240'-244 'or 240 "-244" depending on whether the current execution context is C1 or C2 (indicated in information 230). The execution of the application 220 for the transaction then ends.

Selon une variante de cette réalisation, l'instruction de branchement permettant l'exécution du patch 249 peut être prévue dans l'application 220 elle-même et non plus dans le système d'exploitation 221 définissant l'environnement d'exécution de l'application. Dans ce cas, cette instruction de branchement est prévue au début des instructions de code de l'application 220, et en tout état de cause avant les instructions de code utilisant les données 240-244. Ainsi, le système d'exécution 221 déclenche l'exécution de l'application, laquelle déclenche presque immédiatement l'exécution du patch 249 à l'aide de l'instruction de branchement. Les données 240'-244' ou 240"- 244" selon le contexte courant Cl ou C2 indiquée dans 230 sont alors chargées ou renseignées dans les emplacements mémoires 240-244, de sorte à ce que l'application 220 utilise les bonnes données lors de son exécution. According to a variant of this embodiment, the branch instruction allowing the execution of the patch 249 can be provided in the application 220 itself and no longer in the operating system 221 defining the execution environment of the application. application. In this case, this branch instruction is provided at the beginning of the code instructions of the application 220, and in any case before the code instructions using the data 240-244. Thus, the execution system 221 triggers the execution of the application, which triggers the patch 249 almost immediately with the help of the branch instruction. The data 240'-244 'or 240 "- 244" according to the current context C1 or C2 indicated in 230 are then loaded or entered in the memory locations 240-244, so that the application 220 uses the correct data when of his execution.

Bien entendu, le cas échéant, une recopie des données 240-244 vers les données 240'-244' ou 240"-244" peut être mise en oeuvre. Dans une réalisation différente de l'invention, le patch 249 peut être intégré au sein du système d'exploitation 221 ou de l'application 220 (avant les instructions de code utilisant les données 240-244). L'invention prévoit ainsi d'intervenir qu'en un seul emplacement du logiciel modifié (220 ou 221), là où les techniques de l'état de l'art nécessitent l'intégration d'un grand nombre d'instructions conditionnelles. Par ailleurs, bien que l'exemple précédant mette en oeuvre cinq données spécifiques à chaque contexte d'exécution, l'invention s'applique à un nombre quelconque de telles données spécifiques. Le patch 249 est alors adapté pour tenir compte des spécificités de chaque contexte d'exécution: par exemple deux contextes d'exécution peuvent conduire à la copie d'un nombre différents de données spécifiques contextuelles car l'application peut nécessiter plus ou moins de données selon le contexte. Selon différentes applications données ici à titre illustratif, ces données peuvent correspondre, en variante ou en combinaison : - à des valeurs monétaires variables d'un contexte d'exécution à l'autre, comme suggéré dans l'exemple ci-dessus ; - à des numéros d'identification personnels (PIN) qui sont différents selon l'utilisateur/porteur de la carte à puce au moment de la transaction ou qui sont différents selon que la transaction soit réalisée avec ou sans contact ; - à une clé secrète (de cryptage ou d'authentification par exemple, mémorisée en mémoire ROM de préférence) utilisée dans un contexte où aucune attaque n'est détectée (par exemple par défaut) et à des données factices (dummy data) qui sont chargées dans les emplacements mémoires 240-244 dès qu'une attaque est détectée (afin dans ce cas de permettre une exécution de l'application 220 sans danger car les données 240-244 manipulées sont alors sans intérêt) ; - à tout autre paramètre spécifique qui varie d'un contexte à l'autre. Egalement, bien que l'exemple précédent mette en oeuvre deux contextes d'exécution différents, un plus grand nombre peut être prévu, en combinant par exemple plusieurs critères de contexte. A titre d'exemple, ces critères (pris individuellement ou en combinaison) peuvent comprendre le type de communication (avec ou sans contact), l'identification du porteur/utilisateur de la carte (par exemple via un menu de sélection initial - utilisation personnelle/utilisation professionnelle ou plusieurs personnes physiques différentes), la détection d'une attaque de la carte à l'aide de moyens matériels et/ou logiciels de détection. L'étape E200 est alors adaptée pour procéder à la détermination des critères définissant ces contextes. On décrit maintenant en référence à la figure 3, un mode de réalisation des moyens d'affectation (E233) des données contextuelles en 240-244 en fonction du contexte déterminée en E200. Les instructions de code de l'application de transaction 220 qui utilisent les données contextuelles stockées en mémoire pointent directement sur un fichier de données 2400 qui est associé à un contexte CO, défini ici comme contexte par défaut. Par exemple, ces instructions de code pointent sur l'adresse mémoire correspondant au début du fichier 2400. Ce fichier 2400 comprend un entête 2410 et des données utiles 2420. L'entête 2410 comprend comprenant un identifiant unique du fichier (file_id 2411), une adresse des données utiles 2412 pointant sur le début de la section 2420 (@1000h), un champ binaire 2413 définissant les données utiles partagées comme décrit par la suite, et une adresse de partage 2414. Par défaut, le champ binaire 2413 est nul (uniquement des '0') indiquant que les valeurs des données utiles 2412 doivent être utilisées. Les données utiles 2420 correspondent à des données 240-244 spécifiques au contexte CO, mémorisées par exemple sous forme de structure TLV (tag-length-value). Sans l'exécution du patch 249 ou lorsque le contexte d'exécution courant (dans 230) est le contexte CO, le champ binaire 2413 est nul indiquant que l'application 220 doit utiliser les données 240-244 de la section 2420 (figure 3a). Les données spécifiques 240'-244' et 240"-244" aux autres contextes (dans l'exemple de la figure, les contextes Cl et C2) sont également mémorisées dans des fichiers similaires 2400' et 2400", respectivement au niveau des adresses @2000h et @3000h. Lorsque le contexte Cl est détecté comme étant le contexte d'exécution courant, le patch 249 vient modifier l'entête 2410 du fichier par défaut 2400 sur lequel pointe directement l'application 220, afin d'indiquer qu'il y a lieu désormais d'utiliser une ou plusieurs données spécifiques au contexte Cl. Dans l'exemple de la figure, on illustre l'utilisation d'une seule donnée spécifique au contexte Cl, la donnée data2 (notée data2 Cl, en gras sur la figure 3b). La donnée data2 CO (barrée) est donc remplacée, pour les traitements de l'application, par cette donnée data2 Cl. Cette indication comprend la modification du champ binaire 2413 pour indiquer que la deuxième donnée data2 est désormais à récupérer au niveau de l'adresse 2414 qui est elle-même précisée à la valeur @2000h. Par exemple le champ binaire consiste en une succession de bits ordonnés dont le moins significatif correspond à la première donnée datai. Dans ce cas, l'indication que la deuxième donnée data2 est à récupérer à l'adresse 2414 prend la forme d'un champ 2413 valant '00010' (pour cinq données uniquement). Of course, if necessary, a copy of the data 240-244 to 240'-244 'or 240 "-244" data can be implemented. In a different embodiment of the invention, the patch 249 may be integrated within the operating system 221 or the application 220 (before the code instructions using the data 240-244). The invention thus provides for the intervention of only one location of the modified software (220 or 221), where the techniques of the state of the art require the integration of a large number of conditional instructions. Moreover, although the preceding example implements five data specific to each execution context, the invention applies to any number of such specific data. The patch 249 is then adapted to take into account the specificities of each execution context: for example two execution contexts may lead to the copying of a different number of context specific data because the application may require more or less data. according to the context. According to various applications given here for illustrative purposes, these data may correspond, alternatively or in combination: to variable monetary values from one execution context to another, as suggested in the example above; - Personal identification numbers (PINs) which are different according to the user / holder of the smart card at the time of the transaction or which are different depending on whether the transaction is performed with or without contact; a secret key (encryption or authentication for example, stored in ROM preferably) used in a context where no attack is detected (for example by default) and dummy data which are loaded in the memory locations 240-244 as soon as an attack is detected (in this case to allow an execution of the application 220 without danger because the data 240-244 manipulated are then irrelevant); - any other specific parameter that varies from one context to another. Also, although the previous example implements two different execution contexts, a larger number can be provided, for example by combining several context criteria. For example, these criteria (taken individually or in combination) may include the type of communication (with or without contact), the identification of the cardholder / user of the card (for example via an initial selection menu - personal use / professional use or several different natural persons), the detection of an attack of the card using material means and / or detection software. Step E200 is then adapted to proceed to the determination of the criteria defining these contexts. 3, an embodiment of the allocation means (E233) of the contextual data in 240-244 according to the context determined in E200 is described with reference to FIG. The code instructions of the transaction application 220 that use the contextual data stored in memory directly point to a data file 2400 that is associated with a context CO, defined here as the default context. For example, these code instructions point to the memory address corresponding to the beginning of the file 2400. This file 2400 includes a header 2410 and payload 2420. The header 2410 comprises a unique identifier of the file (file_id 2411), a address useful data 2412 pointing to the beginning of the section 2420 (@ 1000h), a bit field 2413 defining the shared payload as described later, and a share address 2414. By default, the bit field 2413 is zero ( only '0') indicating that the values of the payload 2412 should be used. The useful data 2420 corresponds to 240-244 data specific to the CO context, stored for example in the form of TLV (tag-length-value) structure. Without the execution of the patch 249 or when the current execution context (in 230) is the context CO, the bit field 2413 is zero indicating that the application 220 must use the data 240-244 of the section 2420 (FIG. ). The specific data 240'-244 'and 240 "-244" in the other contexts (in the example of the figure, the contexts C1 and C2) are also stored in similar files 2400' and 2400 ", respectively at the address level @ 2000h and @ 3000h When the context C1 is detected as being the current execution context, the patch 249 modifies the header 2410 of the default file 2400 to which the application 220 points directly, in order to indicate that it is now necessary to use one or more data specific to the context C1. In the example of the figure, the use of a single data specific to the context C1 is illustrated, the datum data2 (denoted data2 C1, in bold The data2 CO (crossed out) is therefore replaced, for the processing of the application, by this datum data2C1. This indication includes the modification of the binary field 2413 to indicate that the second datum data2 is now recover at the level of address 2414 which is itself set to @ 2000h. For example, the binary field consists of a succession of ordered bits, the least significant of which corresponds to the first datai datai. In this case, the indication that the second data2 data is to be retrieved at address 2414 takes the form of a field 2413 worth '00010' (for only five data).

La récupération de data2 Cl s'avère aisée pour l'application 220, en accédant à l'adresse 2414 et en identifiant la deuxième donnée dans la section 2420' à l'aide des tags de la structure TLV. Par défaut, l'adresse 2414 peut être celle des données utiles 2420' du deuxième fichier 2400', soit @2000h, auquel cas l'indication du contexte Cl consiste uniquement à modifier le champ 2413 pour indiquer que la deuxième donnée qui doit être utilisée est celle à l'adresse @2000h déjà renseignée. Comme montré sur la figure 3b, l'application 220 lorsqu'elle utilise les données contextuelles 240-244 accède à data1_C0 (240), datai CO (242), data4 CO (243) et datas CO (244) dans le fichier 2400 et accède à data2 Cl (241' - deuxième tag dans la section 2420') dans le fichier 2400' comme cela est indiqué au travers du champ binaire de partage 2413 et de l'adresse associée 2414. The recovery of data2 Cl is easy for the application 220, by accessing the address 2414 and identifying the second data in the section 2420 'using the tags of the structure TLV. By default, the address 2414 can be that of the payload 2420 'of the second file 2400', that is @ 2000h, in which case the indication of the context C1 consists only of modifying the field 2413 to indicate that the second datum to be used is the one at @ 2000h already filled in. As shown in FIG. 3b, the application 220 when using the contextual data 240-244 accesses data1_C0 (240), datai CO (242), data4 CO (243) and datas CO (244) in the file 2400 and accesses data2 Cl (241 '- second tag in section 2420') in file 2400 'as indicated through share binary field 2413 and associated address 2414.

La figure 3c illustre le cas où le contexte C2 est le contexte courant. Dans ce cas, le patch 249 a modifié le champ binaire 2413 pour indiquer que les deuxième et troisième données (data2 et datai) sont spécifiques au contexte courant (donc ce champ vaut '00110') et a renseigné dans l'adresse 2414 l'adresse @3000h correspondant à la structure TLV associé au contexte C3. Bien entendu, les cinq données data 1-data5 peuvent être différentes pour chaque contexte auquel cas le champ binaire 2413 prendra la valeur 11111 pour un contexte courant différent de CO, afin d'indiquer à l'application 220 d'aller chercher toutes les données contextuelles à l'adresse 2414. Lorsque l'intégralité du fichier 2400 est à utiliser pour chaque contexte, on peut s'affranchir de l'utilisation du champ 2413: seule la présence d'une adresse dans 2414 indique s'il y a des valeurs spécifiques à utiliser et où elles sont mémorisées. L'absence d'une adresse dans 2414 indique ainsi d'utiliser le contexte par défaut et les données 2420. Ainsi, en jouant sur le champ binaire de partage 2413 et/ou sur l'adresse de partage 2414 on dirige efficacement l'exécution de l'application 220 vers l'utilisation des données spécifiques au contexte d'exécution courant. En outre, l'utilisation de pointeurs (adresse 2414) et d'un contexte par défaut permet d'éviter la mise en oeuvre de l'étape E250 de recopie des données en cas d'évolution de celles-ci au cours de l'exécution de l'application 220. Ces modifications de l'entête 2410 sont relativement simples à mettre en oeuvre, de telle sorte que la présente invention relève d'une complexité réduite, tout en garantissant l'absence de modification de l'application 220. Les exemples qui précèdent ne sont que des modes de réalisation de l'invention qui ne s'y limite pas. Figure 3c illustrates the case where context C2 is the current context. In this case, the patch 249 has modified the bit field 2413 to indicate that the second and third data (data2 and datai) are specific to the current context (so this field is '00110') and filled in the address 2414 the address @ 3000h corresponding to the TLV structure associated with context C3. Of course, the five data data 1-data5 may be different for each context in which case the bit field 2413 will take the value 11111 for a current context different from CO, in order to indicate to the application 220 to fetch all the data 2414. When the entire file 2400 is to be used for each context, we can dispense with the use of the 2413 field: only the presence of an address in 2414 indicates whether there are any specific values to use and where they are stored. The absence of an address in 2414 thus indicates to use the default context and the data 2420. Thus, by playing on the share binary field 2413 and / or on the sharing address 2414 the execution is effectively directed. from the application 220 to the use of data specific to the current execution context. In addition, the use of pointers (address 2414) and a default context makes it possible to avoid the implementation of step E250 of copying the data in the event of evolution thereof during the execution of the application 220. These modifications of the header 2410 are relatively simple to implement, so that the present invention is of reduced complexity, while ensuring the absence of modification of the application 220. The foregoing examples are only embodiments of the invention which is not limited thereto.

Claims (15)

REVENDICATIONS1. Procédé d'exécution d'une application informatique (220) dans un dispositif de traitement (1) comprenant un environnement logiciel (221) d'exécution de l'application, ladite application informatique et/ou l'environnement logiciel comprenant au moins une instruction de branchement pour appeler un patch logiciel autonome externe, et ladite application informatique s'exécutant en utilisant au moins une donnée (240-244) stockée en mémoire (24), cette donnée utilisée étant fonction d'un contexte d'exécution courant (CO, Cl, C2), caractérisé en ce que la donnée stockée fonction du contexte d'exécution courant est déterminée (E232), préalablement à son utilisation (E240) par l'application (220), par l'exécution d'un patch logiciel autonome (249) externe à ladite application et déclenchée au travers de ladite instruction de branchement. REVENDICATIONS1. A method of executing a computer application (220) in a processing device (1) comprising a software application execution environment (221), said computer application and / or the software environment comprising at least one instruction branch for calling an external autonomous software patch, and said computer application executing using at least one datum (240-244) stored in memory (24), this datum being used as a function of a current execution context (CO , C1, C2), characterized in that the stored data according to the current execution context is determined (E232), prior to its use (E240) by the application (220), by the execution of a software patch autonomous (249) external to said application and triggered through said branch instruction. 2. Procédé selon la revendication 1, dans lequel ladite instruction de branchement est une instruction de branchement prévue à la conception de l'application informatique et/ou de l'environnement logiciel pour appeler un hypothétique patch logiciel autonome externe non encore défini. 2. The method of claim 1, wherein said branching instruction is a branch instruction provided in the design of the computer application and / or the software environment to call a hypothetical external autonomous software patch not yet defined. 3. Procédé selon la revendication 1 ou 2, dans lequel l'application informatique (220) accède une zone mémoire principale (240-244, 2400) pour obtenir ladite donnée à utiliser, et ledit patch logiciel (249) renseigne (E233), dans ladite zone mémoire principale, la donnée déterminée en fonction du contexte d'exécution courant (CO, Cl, C2). The method of claim 1 or 2, wherein the computer application (220) accesses a main memory area (240-244, 2400) to obtain said data to be used, and said software patch (249) provides information (E233), in said main memory area, the data determined according to the current execution context (CO, Cl, C2). 4. Procédé selon la revendication 3, dans lequel le patch logiciel (249) copie (E233) la donnée déterminée depuis une zone mémoire secondaire (240'-244', 240"-244") vers la zone mémoire principale (240-244). The method of claim 3, wherein the software patch (249) copies (E233) the determined data from a secondary memory area (240'-244 ', 240 "-244") to the main memory area (240-244). ). 5. Procédé selon la revendication 3 ou 4, dans lequel la donnée déterminée en fonction du contexte d'exécution courant est renseignée par une écriture en mémoire non volatile réinscriptible (24). 5. Method according to claim 3 or 4, wherein the data determined according to the current execution context is filled by a rewritable non-volatile memory write (24). 6. Procédé selon la revendication 3, dans lequel le patch logiciel (249) associe à la zone mémoire principale un pointeur (2414) vers une zone mémoire secondaire (2420', 2420") stockant la donnée déterminée. The method of claim 3, wherein the software patch (249) associates with the main memory area a pointer (2414) to a secondary storage area (2420 ', 2420 ") storing the determined data. 7. Procédé selon la revendication 3 ou 6, dans lequel la zone mémoire principale (2400) comprend des données par défaut (240-244) d'un contexte par défaut (CO), un champ binaire de partage (2413) et une adresse de partage (2414), et on renseigne (233), dans la zone mémoire principale, au moins une donnée déterminée différente des données par défaut, en utilisant le champ binaire de partage (2413) pour indiquer quelles données par défaut sont remplacées par l'au moins une donnée déterminée et en utilisant l'adresse de partage (2414) pour pointer sur l'emplacement mémoire stockant l'au moins une donnée déterminée. The method of claim 3 or 6, wherein the main memory area (2400) includes default data (240-244) of a default context (CO), a share binary field (2413), and an address of sharing (2414), and informing (233), in the main memory area, at least one determined datum different from the default data, using the sharing bit field (2413) to indicate which default data is replaced by the at least one given datum and using the sharing address (2414) to point to the memory location storing the at least one given datum. 8. Procédé selon l'une des revendications précédentes, dans lequel le patch logiciel (249) détermine (E200, E231) le contexte d'exécution courant (CO, Cl, C2) pour sélectionner (E232) ladite donnée à utiliser parmi une pluralité de données (240-244, 240'-244', 240"-244") associées à une pluralité respective de contextes d'exécution (CO, Cl, C2). 8. Method according to one of the preceding claims, wherein the software patch (249) determines (E200, E231) the current execution context (CO, C1, C2) to select (E232) said data to be used among a plurality data (240-244, 240'-244 ', 240 "-244") associated with a respective plurality of execution contexts (CO, C1, C2). 9. Procédé selon la revendication 8, dans lequel la détermination (E200) du contexte d'exécution courant comprend la détection de l'une parmi : - une interface de communication utilisée pour l'exécution de l'application, entre une interface de communication à contact (27) et une interface de communication sans contact (26) ; - une information identifiant un utilisateur du dispositif de traitement 25 au moment de l'exécution de ladite application ; et - une information identifiant la détection d'une attaque sur le dispositif de traitement. 9. The method of claim 8, wherein the determination (E200) of the current execution context comprises the detection of one of: - a communication interface used for the execution of the application, between a communication interface contact (27) and a contactless communication interface (26); an information identifying a user of the processing device 25 at the time of execution of said application; and an information item identifying the detection of an attack on the processing device. 10. Procédé selon la revendication 8 ou 9, dans lequel la pluralité de données associées à une pluralité respective de contextes d'exécution 30 comprend l'une parmi :- une pluralité de montants monétaires associée respectivement à une pluralité de moyens de paiement mettant en oeuvre des moyens de communication différents ; - une pluralité de numéros d'identification personnels (PIN) associée à une pluralité d'utilisateurs ; et - au moins une donnée secrète et une donnée factice associées à l'absence et à la détection d'une attaque sur la carte à puce. The method of claim 8 or 9, wherein the plurality of data associated with a respective plurality of execution contexts includes one of: a plurality of monetary amounts respectively associated with a plurality of payment means implementing implement different means of communication; a plurality of personal identification numbers (PINs) associated with a plurality of users; and at least one secret data and one fact data associated with the absence and detection of an attack on the smart card. 11. Procédé selon l'une des revendications 1 à 10, dans lequel ladite instruction de branchement est intégrée à un système d'exploitation (221) dans lequel est exécutée l'application informatique (220), ladite instruction de branchement étant prévue au sein d'instructions de code configurées pour traiter une commande de sélection (SELECT) de ladite application informatique. The method according to one of claims 1 to 10, wherein said branch instruction is integrated with an operating system (221) in which the computer application (220) is executed, said branch instruction being provided within code instructions configured to process a select command (SELECT) of said computer application. 12. Procédé selon l'une des revendications précédentes, dans lequel ladite application informatique (220) est mémorisée dans une mémoire morte non réinscriptible (22) du dispositif de traitement (1). 12. Method according to one of the preceding claims, wherein said computer application (220) is stored in a non-rewritable read-only memory (22) of the processing device (1). 13. Dispositif de traitement (1) comprenant un environnement logiciel (221) d'exécution et une application informatique (220) dont l'exécution, dans l'environnement logiciel d'exécution, utilise au moins une donnée (240-244) stockée en mémoire (24) du dispositif de traitement, cette donnée utilisée étant fonction d'un contexte d'exécution courant (CO, Cl, C2), ladite application informatique et/ou l'environnement logiciel comprenant au moins une instruction de branchement pour appeler un patch logiciel autonome externe, caractérisé en ce qu'elle comprend: un patch logiciel autonome (249) externe à l'application et agencé pour déterminer ladite donnée à utiliser en fonction du contexte d'exécution courant parmi une pluralité de données stockées (240-244, 240'-244', 240"-244") en mémoire, et en ce que ladite instruction de branchement est configurée pour déclencher l'exécution du patch logiciel autonome (249) préalablement à l'utilisation de ladite donnée par l'application (220) de sorte à sélectionner ladite donnée à utiliser parmi ladite pluralité de données. 13. Processing device (1) comprising an execution software environment (221) and a computer application (220), the execution of which, in the execution software environment, uses at least one stored data item (240-244) in memory (24) of the processing device, this data used being a function of a current execution context (CO, Cl, C2), said computer application and / or the software environment comprising at least one branch instruction for calling an external autonomous software patch, characterized in that it comprises: an autonomous software patch (249) external to the application and arranged to determine said data to be used according to the current execution context among a plurality of stored data (240 -244, 240'-244 ', 240 "-244") in memory, and in that said branch instruction is configured to trigger the execution of the autonomous software patch (249) prior to the use of said data by the application (220) to select said data to be used from said plurality of data. 14. Moyen de stockage d'informations comprenant des instructions pour un programme informatique adapté à mettre en oeuvre le procédé d'exécution selon l'une des revendications 1 à 12, lorsque ce programme est chargé et exécuté par un système informatique. 14. Information storage means comprising instructions for a computer program adapted to implement the execution method according to one of claims 1 to 12, when the program is loaded and executed by a computer system. 15. Programme d'ordinateur lisible par un microprocesseur, comprenant des instructions pour la mise en oeuvre du procédé d'exécution selon l'une des revendications 1 à 12, lorsque ce programme est chargé et exécuté par le microprocesseur. 15. A computer program readable by a microprocessor, comprising instructions for carrying out the execution method according to one of claims 1 to 12, when the program is loaded and executed by the microprocessor.
FR1057084A 2010-09-07 2010-09-07 METHOD FOR EXECUTING AN APPLICATION IN A PROCESSING DEVICE SUCH AS A CHIP CARD, AND PROCESSING DEVICE THEREFOR Expired - Fee Related FR2964480B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1057084A FR2964480B1 (en) 2010-09-07 2010-09-07 METHOD FOR EXECUTING AN APPLICATION IN A PROCESSING DEVICE SUCH AS A CHIP CARD, AND PROCESSING DEVICE THEREFOR

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1057084A FR2964480B1 (en) 2010-09-07 2010-09-07 METHOD FOR EXECUTING AN APPLICATION IN A PROCESSING DEVICE SUCH AS A CHIP CARD, AND PROCESSING DEVICE THEREFOR

Publications (2)

Publication Number Publication Date
FR2964480A1 true FR2964480A1 (en) 2012-03-09
FR2964480B1 FR2964480B1 (en) 2012-10-12

Family

ID=43064634

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1057084A Expired - Fee Related FR2964480B1 (en) 2010-09-07 2010-09-07 METHOD FOR EXECUTING AN APPLICATION IN A PROCESSING DEVICE SUCH AS A CHIP CARD, AND PROCESSING DEVICE THEREFOR

Country Status (1)

Country Link
FR (1) FR2964480B1 (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020116478A1 (en) * 2001-02-20 2002-08-22 Pierre Paradinas Adaptation of service applications to heterogeneous execution context by means of smart cards
US20020178239A1 (en) * 2001-05-22 2002-11-28 United Parcel Service Of America, Inc. System, method, and computer program product for configuring computing systems
US6658562B1 (en) * 2000-08-25 2003-12-02 International Business Machines Corporation Method, system, and program for customizing a basic input/output system (“BIOS”) configuration according to the type of user
US20070157010A1 (en) * 2005-12-30 2007-07-05 Ingo Zenz Configuration templates for different use cases for a system
US20080155573A1 (en) * 2006-12-21 2008-06-26 International Business Machines Corporation User-configurable variables
WO2009083979A2 (en) * 2007-12-31 2009-07-09 Safend Ltd. System, apparatus, and method for bios level contextual configuration of resources

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658562B1 (en) * 2000-08-25 2003-12-02 International Business Machines Corporation Method, system, and program for customizing a basic input/output system (“BIOS”) configuration according to the type of user
US20020116478A1 (en) * 2001-02-20 2002-08-22 Pierre Paradinas Adaptation of service applications to heterogeneous execution context by means of smart cards
US20020178239A1 (en) * 2001-05-22 2002-11-28 United Parcel Service Of America, Inc. System, method, and computer program product for configuring computing systems
US20070157010A1 (en) * 2005-12-30 2007-07-05 Ingo Zenz Configuration templates for different use cases for a system
US20080155573A1 (en) * 2006-12-21 2008-06-26 International Business Machines Corporation User-configurable variables
WO2009083979A2 (en) * 2007-12-31 2009-07-09 Safend Ltd. System, apparatus, and method for bios level contextual configuration of resources

Also Published As

Publication number Publication date
FR2964480B1 (en) 2012-10-12

Similar Documents

Publication Publication Date Title
EP2688010B1 (en) Update of an operating system for a secure element
EP2164031B1 (en) Method and device for protecting an integrated circuit against attacks
EP2786317B1 (en) Writing data in a non-volatile memory of a smart card
EP1605333B1 (en) Program execution control
FR2666671A1 (en) METHOD FOR MANAGING AN APPLICATION PROGRAM LOADED IN A MICROCIRCUIT MEDIUM.
EP0606029B1 (en) IC card with data and programs protected against aging
FR2808359A1 (en) MULTI-APPLICATIVE CHIP CARD
FR2732487A1 (en) METHOD FOR PROTECTING ZONES OF NON-VOLATILE MEMORIES
EP2388948B1 (en) Method and system for access to an integrated circuit comprising a personal authentication key
FR2964480A1 (en) Method for executing computer financial transaction application in e.g. contactless smart card utilized in payment terminal, involves determining function data of execution context before utilizing function data by computer application
EP1612637A1 (en) Security module and method of personalisation of a security module
EP1325418A1 (en) Protection against abusive use of a statement in a storage unit
EP2901291B1 (en) Method for managing the memory resources of a security device, such as a smart card, and security device implementing said method
EP3340098B1 (en) Method for securing an electronic operation with a smart card
EP2091028A1 (en) Method of detecting non-authentic microprocessor cards, corresponding microprocessor card, card-reading terminal and programs
EP3671519A1 (en) Transaction securisation using a smartcard
EP2252978B1 (en) Integrated circuit card having a modifiable operating program and corresponding method of modification
FR3010211A1 (en) METHOD FOR PROVIDING SECURITY MEANS IN MEMORY ELECTRONIC DEVICE, AND DEVICE FOR IMPLEMENTING SAID METHOD
EP2280380B1 (en) Method for customising an electronic entity, and electronic entity implementing this method
FR3042626A1 (en) METHOD AND SYSTEM FOR SECURE ACCESS AND DISCRIMINATION TO INTEGRATED CIRCUIT SERVICES BY DIVERSIFYING A SINGLE ROOT KEY
FR3062501A1 (en) METHOD FOR SECURING ELECTRONIC OPERATION
EP3203405B1 (en) Method for executing instructions of object-oriented applications by an interpreter
EP3188032B1 (en) Storage of data in a flash memory
EP3179400B1 (en) Method for loading a computing resource into an electronic device, electronic module and corresponding computer program
EP3317832B1 (en) Monitoring method implemented by an electronic device during a transaction, and corresponding device

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9

PLFP Fee payment

Year of fee payment: 10

CA Change of address

Effective date: 20200908

CD Change of name or company name

Owner name: IDEMIA FRANCE, FR

Effective date: 20200908

ST Notification of lapse

Effective date: 20210505