Brevet FR3125142A1 — publié le 20230113

Procédé de traitement de l’exécution d’une fonction d’un applet, et procédé de chargement correspondant Procédé de traitement de l’exécution d’une fonction d’un applet par un dispositif électronique comprenant : - une réception (RX_EXEC) d’une demande d’exécution de la fonction, - une vérification (VERIF_TYPE) d’un type associé à la fonction, - si le type de la fonction est un type donné, on détermine (DET_INFO) des informations relatives aux arguments traités et/ou aux données délivrées par la fonction, - on observe (OBS) le déroulement de la fonction et si la fonction traite des données en désaccord avec les informations relatives aux arguments traités et/ou aux données délivrées par la fonction, on met en œuvre un traitement de sécurité (T_SEC). L’invention concerne également le chargement d’un applet. Figure pour l’abrégé : Fig. 1. Procédé de traitement de l’exécution d’une fonction d’un applet, et procédé de chargement correspondant L’invention concerne l’exécution de fonctions dans des dispositifs électroniques, et en particulier des fonctions dont l’exécution peut poser des problèmes de sécurité. L’invention concerne également le chargement d’instructions contenant ces fonctions dans les dispositifs électroniques. Les dispositifs électroniques tels que les cartes à puces peuvent embarquer des systèmes d’exploitation Java Card. Dans ces systèmes d’exploitation, des applets peuvent être exécutées par des machines virtuelles (« Java Card Virtual Machine » en anglais). En fait, on appelle applet les applications exécutées par une machine virtuelle. Des mécanismes de sécurité sont prévus à la fois en dehors de la carte, par exemple avant le chargement de l’applet dans la carte (vérification dite « off-card » en anglais), et au sein de la carte (vérification dite « on-card » en anglais). On connait la vérification de bytecode Java Card qui comporte notamment des vérifications off-card sur des fichiers convertis d’applet (« converted applet »). Cette vérification consiste en une vérification de la validité des fichiers convertis d’applet qui vont être chargés dans les cartes. Des problèmes de sécurité peuvent apparaître une fois les applets chargées dans les cartes. En particulier, il a été observé que des applets peuvent manipuler des données qui ne devraient pas l’être. L’invention vise à améliorer la sécurité de l’exécution des applets. A cet effet, l’invention propose un procédé de traitement de l’exécution d’une fonction d’une applet par un dispositif électronique comprenant : - une réception d’une demande d’exécution de la fonction, - une vérification d’un type associé à la fonction, - si le type de la fonction est un type donné, on détermine des informations relatives aux arguments traités et/ou aux données délivrées par la fonction, - on observe le déroulement de la fonction et si la fonction traite des données en désaccord avec les informations relatives aux arguments traités et/ou aux données délivrées par la fonction, on met en œuvre un traitement de sécurité. Les inventeurs de la présente invention ont observé qu’il est possible d’enregistrer dans le code des applets des informations qui indiquent quels seront les arguments traités ou les données délivrées par une fonction, pour ensuite permettre de mettre en œuvre une vérification. Un désaccord peut comprendre une manipulation de données non prévues dans les informations relatives aux arguments traités et/ou aux données délivrées par la fonction, typiquement une écriture dans une zone de mémoire non prévue ou une délivrance d’un objet d’un type non prévu. En outre, les inventeurs ont observé que les problèmes présentés ci-dessus concernent des fonctions particulières. Selon un mode de mise en œuvre particulier, le type donné est une fonction qui s’exécute directement sur le processeur du dispositif électronique en dehors d’une machine virtuelle qui exécute l’applet. Il a été observé que les fonctions qui s’exécutent sur le processeur ne sont généralement pas testées dans la vérification off-card, et que ces fonctions manipulent des objets en dehors de la machine virtuelle, ce qui peut être problématique. De ce fait, il est particulièrement intéressant de détecter ces fonctions. Selon un mode de mise en œuvre particulier, le type donné est une fonction native et la machine virtuelle est une machine virtuelle Java Card. L’invention est bien adaptée pour les fonctions natives qui s’exécutent sur le processeur du dispositif électronique directement et en dehors de la machine virtuelle Java Card. Selon un mode de mise en œuvre particulier, les informations relatives aux arguments traités et/ou aux données délivrées par la fonction comprennent le type et/ou le nombre des arguments traités par la fonction. Selon un mode de mise en œuvre particulier, les informations relatives aux arguments traités par la fonction comprennent le type et/ou le nombre des données délivrées par la fonction. Selon un mode de mise en œuvre particulier, on met en œuvre les étapes de vérification du type, de détermination des informations relatives aux arguments traités et/ou aux données délivrées par la fonction, et d’observation à chaque réception d’une demande d’exécution de la fonction. Ainsi, toutes les exécutions de la fonction seront concernées. L’invention propose également un procédé de chargement d’une applet dans un dispositif électronique comprenant : - une détection dans l’applet d’une fonction ayant un type donné, - une détermination des arguments traités et/ou des données délivrées par la fonction, - une élaboration d’informations relatives aux arguments traités et/ou aux données délivrées par la fonction, - un ajout dans l’applet des informations relatives aux arguments traités et/ou aux données délivrées par la fonction pour obtenir une applet modifiée, - un chargement de l’applet modifiée dans le dispositif électronique. Le dispositif obtenu peut être celui capable de mettre en œuvre le procédé de traitement tel que décrit ci-avant selon tous ses modes de réalisation. Selon un mode de mise en œuvre particulier, le type donné est une fonction qui s’exécute directement sur le processeur du dispositif électronique en dehors d’une machine virtuelle. Selon un mode de mise en œuvre particulier, le type donné est une fonction native et la machine virtuelle est une machine virtuelle Java Card. Selon un mode de mise en œuvre particulier, l’applet modifiée est une applet convertie Java Card. Selon un mode de mise en œuvre particulier, les informations relatives aux arguments traités et/ou aux données délivrées par la fonction comprennent le type et/ou le nombre des arguments traités par la fonction. Selon un mode de mise en œuvre particulier, les informations relatives aux arguments traités par la fonction comprennent le type et/ou le nombre des données délivrées par la fonction. L’invention propose également un dispositif électronique apte à exécuter une fonction d’une applet comprenant : - un module de réception d’une demande d’exécution de la fonction, - un module de vérification d’un type associé à la fonction, - un module de détermination, si le type de la fonction est un type donné, d’informations relatives aux arguments traités et/ou aux données délivrées par la fonction, - un module d’observation du déroulement de la fonction et si la fonction traite des données en désaccord avec les informations relatives aux arguments traités et/ou aux données délivrées par la fonction, un module de traitement de sécurité du dispositif met en œuvre un traitement de sécurité. Ce dispositif peut être configuré pour la mise en œuvre de tous les modes de mise en œuvre du procédé de traitement tel que décrit ci-avant. Ce dispositif peut être une carte à puce, par exemple une carte à puce en accord avec la norme ISO 7816 dans n’importe laquelle de ses versions. L’invention propose également un dispositif de chargement d’une applet dans un dispositif électronique comprenant : - un module de détection dans l’applet d’une fonction ayant un type donné, - un module de détermination des arguments traités et/ou des données délivrées par la fonction, - un module d’élaboration d’informations relatives aux arguments traités et/ou aux données délivrées par la fonction, - un module d’ajout dans l’applet des informations relatives aux arguments traités et/ou aux données délivrées par la fonction pour obtenir une applet modifiée, - un module de chargement de l’applet modifiée dans le dispositif électronique. Ce dispositif peut être configuré pour la mise en œuvre de tous les modes de mise en œuvre du procédé de chargement tel que décrit ci-avant. L’invention propose également un programme d’ordinateur comportant des instructions pour l’exécution des étapes d’un procédé de traitement tel que défini ci-avant lorsque ledit programme est exécuté par un ordinateur. L’invention propose également un programme d’ordinateur comportant des instructions pour l’exécution des étapes d’un procédé de chargement tel que défini ci-avant lorsque ledit programme est exécuté par un ordinateur. A noter que les programmes d’ordinateur mentionnés dans le présent exposé peuvent utiliser n’importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n’importe quelle autre forme souhaitable. L’invention propose également un support d’enregistrement lisible par un ordinateur sur lequel est enregistré un programme d’ordinateur comprenant des instructions pour l’exécution des étapes d’un procédé de traitement tel que défini ci-avant. L’invention propose également un support d’enregistrement lisible par un ordinateur sur lequel est enregistré un programme d’ordinateur comprenant des instructions pour l’exécution des étapes d’un procédé de chargement tel que défini ci-avant. Les supports d’enregistrement (ou d’information) mentionnés dans le présent exposé peuvent être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette (floppy disc) ou un disque dur. D'autre part, les supports d’enregistrement peuvent correspondre à un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. Alternativement, les supports d’enregistrement peuvent correspondre à un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question. D’autres caractéristiques et avantages de la présente invention ressortiront de la description faite ci-dessous, en référence aux dessins annexés qui en illustrent un exemple de réalisation dépourvu de tout caractère limitatif. Sur les figures : La illustre schématiquement les étapes d’un procédé de traitement selon un exemple. La illustre schématiquement les étapes d’un procédé de chargement selon un exemple. La illustre schématiquement la conversion du code, son chargement, et son exécution. La illustre schématiquement un système avec un dispositif de chargement et un dispositif électronique. Procédé de traitement de l’exécution d’une fonction d’une applet par un dispositif électronique comprenant : - une réception (RX_EXEC) d’une demande d’exécution de la fonction, - une vérification (VERIF_TYPE) d’un type associé à la fonction, - si le type de la fonction est un type donné, on détermine (DET_INFO) des informations relatives aux arguments traités et/ou aux données délivrées par la fonction, - on observe (OBS) le déroulement de la fonction et si la fonction traite des données en désaccord avec les informations relatives aux arguments traités et/ou aux données délivrées par la fonction, on met en œuvre un traitement de sécurité (T_SEC). Procédé selon la revendication 1, dans lequel le type donné est une fonction qui s’exécute directement sur le processeur du dispositif électronique en dehors d’une machine virtuelle qui exécute l’applet. Procédé selon la revendication 2, dans lequel le type donné est une fonction native et la machine virtuelle est une machine virtuelle Java Card. Procédé selon l’une quelconque des revendications 1 à 3, dans lequel les informations relatives aux arguments traités et/ou aux données délivrées par la fonction comprennent le type et/ou le nombre des arguments traités par la fonction. Procédé selon l’une quelconque des revendications 1 à 4, dans lequel les informations relatives aux arguments traités par la fonction comprennent le type et/ou le nombre des données délivrées par la fonction. Procédé selon l’une quelconque des revendications 1 à 5, dans lequel on met en œuvre les étapes de vérification du type, de détermination des informations relatives aux arguments traités et/ou aux données délivrées par la fonction, et d’observation à chaque réception d’une demande d’exécution de la fonction. Procédé de chargement d’une applet dans un dispositif électronique comprenant : - une détection (DET_FCT) dans l’applet d’une fonction ayant un type donné, - une détermination (DET_ARG_D) des arguments traités et/ou des données délivrées par la fonction, - une élaboration (ELA_INFO) d’informations relatives aux arguments traités et/ou aux données délivrées par la fonction, - un ajout (ADD_INFO) dans l’applet des informations relatives aux arguments traités et/ou aux données délivrées par la fonction pour obtenir une applet modifiée, - un chargement (LOAD_APP) de l’applet modifiée dans le dispositif électronique. Procédé selon la revendication 7, dans lequel le type donné est une fonction qui s’exécute directement sur le processeur du dispositif électronique en dehors d’une machine virtuelle. Procédé selon la revendication 8, dans lequel le type donné est une fonction native et la machine virtuelle est une machine virtuelle Java Card. Procédé selon l’une quelconque des revendications 7 à 9, dans lequel l’applet modifiée est une applet convertie Java Card. Procédé selon l’une quelconque des revendications 7 à 10, dans lequel les informations relatives aux arguments traités et/ou aux données délivrées par la fonction comprennent le type et/ou le nombre des arguments traités par la fonction. Procédé selon l’une quelconque des revendications 7 à 11, dans lequel les informations relatives aux arguments traités par la fonction comprennent le type et/ou le nombre des données délivrées par la fonction. Dispositif électronique apte à exécuter une fonction d’une applet comprenant : - un module de réception (101, 104) d’une demande d’exécution de la fonction, - un module de vérification (101, 105) d’un type associé à la fonction, - un module de détermination (101, 106), si le type de la fonction est un type donné, d’informations relatives aux arguments traités et/ou aux données délivrées par la fonction, - un module d’observation (101, 107) du déroulement de la fonction et si la fonction traite des données en désaccord avec les informations relatives aux arguments traités et/ou aux données délivrées par la fonction, un module de traitement de sécurité (101, 108) du dispositif met en œuvre un traitement de sécurité. Dispositif de chargement d’une applet dans un dispositif électronique comprenant : - un module de détection (201, 203) dans l’applet d’une fonction ayant un type donné, - un module de détermination (201, 204) des arguments traités et/ou des données délivrées par la fonction, - un module d’élaboration (201, 205) d’informations relatives aux arguments traités et/ou aux données délivrées par la fonction, - un module d’ajout (201, 206) dans l’applet des informations relatives aux arguments traités et/ou aux données délivrées par la fonction pour obtenir une applet modifiée, - un module de chargement (201, 207) de l’applet modifiée dans le dispositif électronique. Programme d’ordinateur comportant des instructions pour l’exécution des étapes d’un procédé de traitement selon l’une quelconque des revendications 1 à 6, lorsque ledit programme est exécuté par un ordinateur. Support d’enregistrement lisible par un ordinateur sur lequel est enregistré un programme d’ordinateur comprenant des instructions pour l’exécution des étapes d’un procédé de traitement selon l’une quelconque des revendications 1 à 6. Programme d’ordinateur comportant des instructions pour l’exécution des étapes d’un procédé de chargement selon l’une quelconque des revendications 7 à 12, lorsque ledit programme est exécuté par un ordinateur. Support d’enregistrement lisible par un ordinateur sur lequel est enregistré un programme d’ordinateur comprenant des instructions pour l’exécution des étapes d’un procédé de chargement selon l’une quelconque des revendications 7 à 12.