Exécution d'une application dans un objet électronique portable à faible capacité de mémoire
La présente invention concerne l'exécution d'applications dans des objets électroniques portables, comme des cartes à puce, dites également cartes à microcontrôleur ou à circuit intégré, qui présentent une faible capacité de mémoire comparativement à l'étendue d'une application à exécuter dans l'objet électronique.
Les capacités de mémoire des cartes à puce sont généralement utilisées pour stocker des informations personnelles des usagers. Certaines de ces informations peuvent être librement divulguées, par exemple, le nom de l'usager, d'autres sont confidentielles, comme le numéro de compte bancaire de carte par exemple. Une carte à puce dispose de mécanismes distinguant de multiples niveaux de confidentialité, afin de ne présenter les informations qu'aux entités autorisées. L'extrême confidentialité de certaines informations nécessite de ne jamais les divulguer en dehors de la carte. Seules des applications s' exécutant dans le microprocesseur de la carte peuvent accéder aux informations confidentielles.
Les capacités de mémoire des cartes à puce sont également utilisées pour conserver du code exécutable. Ce code peut être générique, comme une librairie offrant un service de chiffrement, ou dédié à une application. Ce code est alors exécuté dans le microcontrôleur de la carte. Dans cette catégorie, on trouve le code qui traite les données qui ne doivent pas sortir de la carte. On peut également choisir d'exécuter du code sur la carte afin d'éviter de
déployer du code dans le terminal d'accueil de la carte .
Cependant, l'exécution d'une application logicielle au sein même de la carte à puce peut être impossible dans le cas où l'application nécessite une trop grosse taille de mémoire de stockage et de travail. Quelques solutions à ce problème présentent néanmoins des inconvénients :
- L'application est installée sur un terminal à partir d'un support. L'application peut ainsi être copiée, dupliquée, provoquant des pertes d'argent considérables pour le fournisseur de logiciel.
- Des applications conséquentes en taille ne peuvent pas toujours être installées sur tous les types de terminaux. En effet, un terminal radiotëléphonique mobile ou un assistant numérique personnel PDA par exemple ne peut accueillir que des applications de tailles limitées ou un ensemble limité d'applications. - Une même application ne peut pas actuellement être exécutée sur l'ensemble des terminaux. En effet, il est nécessaire de développer une même application pour l'ensemble des supports systèmes disponibles.
Les inconvénients ci-dessus montrent qu'il est difficile de sécuriser une application logicielle, de l'installer et de l'exécuter sur tout type de terminal .
La présente invention a pour objectif d'exécuter une application relativement étendue dans un objet électronique portable à microcontrôleur du type carte à puce dont la taille de la mémoire est insuffisante pour stocker totalement l'application et l'exécuter.
A cette fin, un procédé pour exécuter une application composée de plusieurs éléments, essentiellement dans un objet électronique portable qui comprend des descripteurs des éléments de l'application et qui est relié à un moyen externe de traitement de données, est caractérisé en ce qu'il comprend les étapes suivantes pour l'exécution d'une partie de l'application dans au moins un élément appelé par l'objet électronique en fonction du descripteur de l'élément appelé lorsque l'élément appelé a été trouvé dans le moyen externe : demande de transmission de la taille de l'élément appelé par l'objet électronique au moyen externe, - comparaison de la taille de l'élément appelé avec la taille de mémoire disponible dans l'objet électronique, de manière itérative dans l'objet électronique, sauvegarde de l'état d'un élément de l'application précédemment chargé dans l'objet électronique et effacement dudit élément précédemment chargé tant que la taille de l'élément appelé est supérieure à la taille de mémoire disponible et tant que des éléments précédemment chargés dans l'objet électronique y sont encore contenus, et chargement dudit élément appelé depuis le moyen externe dès que la taille de mémoire disponible devient au moins égale à la taille de l'élément.
Selon l'invention, l'exécution de l'application est segmentée., L'exécution de l'application peut se poursuivre tantôt par l'exécution d'une partie de l'application dans un élément initialement stocké dans la carte ou précédemment téléchargé dynamiquement dans la carte, tantôt par l'exécution d'une autre partie de l'application dans un élément
qui a été prélevé à l'extérieur de la carte et téléchargé dans celle-ci, puis qui est ultérieurement, le cas échéant, effacé dans la carte pour libérer un emplacement de mémoire pour stocker un autre élément de l'application à télécharger. Lorsqu'un élément de l'application est signalé comme indisponible dans la carte par le descripteur de cet élément, un défaut d'application est provoqué pour chercher 1 ' élément dans le moyen externe et télécharger l'élément depuis le moyen externe dans la carte. Le moyen externe comprend par exemple le terminal d'accueil de la carte et des bibliothèques d'éléments dans un réseau de télécommunication relié au terminal . Grâce à l'invention, l'objet électronique portable exécute une application très étendue, qui ne peut être stockée dans l'objet électronique.
L'invention remédie également à une saturation de la mémoire relativement petite de l'objet électronique au cours de l'exécution de la partie de l'application dans tout élément appelé. A cette fin, le procédé comprend les étapes suivantes : poursuite de l'exécution de la partie d'application tant que la mémoire de l'objet électronique est suffisante, voire n'est pas saturée,
- dès que la mémoire de l'objet électronique est insuffisante, interruption de l'exécution, sauvegarde de l'état d'un élément de l'application précédemment chargé dans l'objet électronique s'il existe, et effacement dudit élément précédemment chargé dans la mémoire de l'objet électronique.
L'invention concerne également un objet électronique portable à microcontrôleur comprenant un moyen pour décrire des éléments d'une application
essentiellement exécutée dans l'objet électronique et un moyen pour piloter l'exécution de l'application particulièrement pour l'exécution d'une partie de l'application dans un élément appelé selon la mise en oeuvre du procédé de l'invention.
D'autres caractéristiques et avantages de la présente invention apparaîtront plus clairement à la lecture de la description suivante de plusieurs réalisations préférées de l'invention en référence aux dessins annexés correspondants dans lesquels :
- la figure 1 est un graphe d'une application avec de nombreux éléments selon 1 ' invention ;
- la figure 2 est un bloc-diagramme schématique d'une carte à puce selon l'invention dans un terminal d'accueil, pouvant exécuter l'application montrée à la figure 1 ;
- la figure 3 est un algorithme de préparation d'une application à exécuter dans la carte à puce ; et
- la figure 4 est un algorithme d'exécution de l'application selon l'invention.
En référence à la figure 1, une application AP selon l'invention est composée de plusieurs éléments dont certains sont distants répartis et qui sont une interface d'usager IU, des agents AGI à AGM et des serveurs de données SEl à SEN, l'un au moins des entiers M et N étant supérieur à 1. Dans la figure 1 sont également représentés d'autres éléments de l'application AP constituant des connexions CIAG1 à
CIAGM respectivement entre 1 ' interface IU et les agents AGI à AGM et des connexions CAS11-CAS1N à
CASM1-CASMN respectivement entre chacun des agents AGI à AGM et les serveurs SEl à SEN. L'application
peut comprendre d'autres connexions non représentées dans la figure 1, par exemple entre des agents.
Un composant d'application est une unité de traitement logiciel encapsulant des fonctionnalités, assez petite pour que l'on puisse la créer et la maintenir, et assez grande pour que l'on puisse l'installer et en assurer le support. Les propriétés fonctionnelles d'un composant sont les possibilités de traitement offertes par le composant et sont programmées et invariantes quel que soit le contexte. Le composant possède également des propriétés non- fonctionnelles qui représentent des aspects systèmes liés à l'implantation du composant, tels que transaction, sécurité, persistance, tolérance aux fautes, et qui sont variables en fonction du contexte et de l'application. La séparation entre propriétés fonctionnelles invariables et non-fonctionnelles variables permet d'exécuter le composant de manière différente sur une plate-forme d'exécution. Le composant est également doté d'interfaces de communication pour qu'il puisse coopérer avec d'autres composants et ainsi présenter son comportement à ces autres composants. En pratique, un composant logiciel peut être implanté sur n'importe quel site d'un réseau de télécommunication RT, et donc peut être modifié indépendamment de son exploitation dans des applications.
Une connexion d'application CX définit les relations entre les interfaces de communication de deux composants. Des paramètres des connexions de l'application sont également adaptés au contexte de la plate-forme d'exécution.
L'interface d'usager IU est localisée dans le terminal d'accueil TE d'une carte à puce CP où les autres éléments de l'application AP sont exécutés. L'interface d'usager constitue essentiellement l'interface homme-machine pour l'application AP, et est paramétrée par l'usager notamment au niveau du graphisme des pages d'écran et de l'écoute de messages vocaux. L'interface d'usager IU présente ainsi visuellement et/ou vocalement des données transmises par au moins l'un des agents AGI à AGM inclus dans l'application AP, comme on le verra dans la suite. Inversement, des commandes à traiter par un agent de l'application sont saisies par l'interface IU, par exemple au moyen du clavier ou par reconnaissance vocale dans le terminal TE, pour déclencher des opérations sur des données dans l'un ou plusieurs des serveurs SEl à SEN inclus dans l'application. Initialement, l'usager peut avoir la possibilité de sélectionner des paramètres relatifs à l'application AP. Ces paramètres sont contenus dans le descripteur DIU et sauvegardés dans la mémoire non volatile EEPROM de la carte à puce CP entre deux sessions de l'application, c'est-à-dire entre deux sélections d'états de l'application. L'interface d'usager IU est ainsi un composant de type session qui est créé en début de session et détruit totalement ou partiellement à chaque fin de session de l'application. L'interface d'usager IU constitue le point d'entrée de l'application AP pour l'usager, et intervient donc chaque fois que l'usager souhaite faire exécuter l'application AP.
Un agent AGm, avec 1 < m < M, qualifie au moins un processus prédéterminé pour traiter des données transmises par l'interface d'usager IU lorsque celle- ci est reliée à l'agent AGm, et/ou pour traiter des
données transmises par au moins l'un des serveurs SEl à SEN lorsque celui-ci est relié à l'agent AGm. L'agent AGm est soit déjà installé initialement dans la carte CP, soit doit être téléchargé dans la carte depuis une bibliothèque d'élément, à travers le terminal TE, comme on le verra ci-après. L'agent AGm est paramétrable par l'usager depuis l'interface IU et/ou selon les caractéristiques du contexte de l'application dépendant essentiellement de caractéristiques du terminal d'accueil TE et de la carte à puce CP . Le descripteur DAGm de 1 ' agent AGm possède ainsi plusieurs paramètres dont les valeurs programmées notamment par l'usager sont sauvegardées dans la mémoire non volatile de la carte à puce. L'agent AGm est donc de type processus ce qui implique qu'il peut être maintenu lors d'une terminaison partielle de l'application.
Un serveur de données SEn est une entité contenant ou traitant des données qui peuvent être consultées ou traitées par l'un des agents AGI à AGM de manière à retransmettre les données sans ou avec modification à l'interface d'usager IU et/ou au serveur SEn et/ou au moins à un autre serveur. Le serveur SEn est soit déjà installé initialement dans la carte CP, soit peut être téléchargé dans la carte depuis une bibliothèque d'élément, à travers le terminal TE, comme on le verra ci-après, soit encore peut être exécuté hors de la carte sous le contrôle de celle-ci. L'état du serveur SEn, c'est-à-dire les données dans celui-ci et les fonctionnalités de celui-ci en fonction du contexte de l'application, est géré par le concepteur du serveur SEn, tout comme un agent AGm est géré par le concepteur de 1 ' agent AGm, depuis un terminal approprié à travers un réseau
de télécommunication RT desservant le terminal d'accueil TE.
Une ou plusieurs applications sont décrites sous la forme de descripteurs dans la carte à puce CP dite également carte à microcontrôleur, ou tout autre objet électronique portable, comme un assistant électronique personnel PDA, présentant une capacité de mémoire relativement faible, de l'ordre du Mégaoctet. Comme montré à la figure 2, la carte à puce CP comprend au moins un descripteur DAP identifiant les éléments de l'application AP. Le descripteur DAP inclut des descripteurs DIU, DAG1 à DAGM et DSE1 à DSEN des composants et des descripteurs des connexions de l'application. Les descripteurs des connexions dans la figure 2 ne sont pas repérés pour plus de clarté.
' La carte à puce CP est par exemple une carte d'identité SIM (Subscriber Identity Module) amovible d'un terminal radiotelephonique mobile, ou une carte à puce notamment pour lecteur additionnel dans un terminal radiotelephonique ou pour terminal bancaire .
Dans la suite, "terminal d'accueil " TE désigne tout type de terminal pouvant accueillir la carte à puce CP, tel qu'un terminal radiotelephonique, un terminal bancaire, un terminal point de vente, ou un récepteur radioélectrique d'aide à la navigation ou au guidage routier.
Une application AP peu étendue comprend au minimum un élément qui est un composant, ou bien deux composants de types différents, par exemple l'interface d'usager IU et/ou un agent AGm reliés par la connexion correspondante CIAGm, ou un agent AGm et/ou l'un de serveurs SEl à SEN reliés par la
connexion correspondante CASml à CASmN, avec 1 < m < M, ou bien encore deux agents connectés. Une application très étendue est l'agencement d'une interface IU, de nombreux agents AGI à AGM et de nombreux serveurs SEl à SEN avec de nombreuses connexions entre tous ces éléments. Entre les applications "minimales" peu étendues et des applications très étendues, des applications comprennent un ou quelques agents AGI à AGM pouvant être reliés chacun à une interface d'usager IU et/ou un ou quelques serveurs respectifs SEl à SEN reliés chacun à au moins un agent .
En variante, une application ayant des éléments prédéterminés peut présenter des états qui résultent chacun d'une combinaison prédéterminée d'éléments de l'application. Les états de l'application peuvent être sélectionnés par un usager ou en fonction du contexte de l'application. Par exemple, un état de l'application AP montrée à la figure 1 est composé seulement d'un composant IU ou AGm, ou des composants connectés IU et AGm, ou AGm et SEn, ou de quelques agents connectés à quelques serveurs, ou de l'interface IU, d'un agent et de quelques serveurs, ou de l'interface IU, de quelques agents et d'un serveur, etc. Un état d'application peut être distinct des autres états d'application par des paramètres d'un élément. Tous ces états d'application sont considérés comme des applications dans la suite de la description.
Au niveau de la carte à puce CP, le descripteur d'application DAP ne contient pas les éléments eux- mêmes, les composants logiciels et les connexions, mais des descripteurs des éléments contenant chacun des propriétés et des paramètres de l'élément
respectif le définissant et permettant de le retrouver parmi une multitude d'éléments.
Les propriétés du descripteur d'un élément sont fixées une fois pour toutes par le fournisseur de l'application qui spécialise l'élément, composant ou connexion, afin de satisfaire les besoins de l'application et de l'usager selon les caractéristiques d'abonnement. Elles indiquent les caractéristiques de la plate-forme d'exécution, en l'occurrence essentiellement la carte à puce selon l'invention, sur laquelle l'élément peut être exécuté, ainsi que les besoins systèmes nécessaires à l'exécution. Par exemple, une propriété est le type ou l'adresse d'un élément qui est associé à chaque élément et utilisé pour la recherche du code ou de l'implantation de l'élément, ou est intimement liée à l'application ou à un type d'application, comme la propriété "numéro de compte" associée à un composant, agent de consultation ou serveur de compte bancaire. Ces propriétés sont, selon la technique antérieure, figées lors de la souscription au service correspondant à l'application par l'usager de la carte à puce, et ne sont accessibles qu'en lecture seule. D'autres propriétés, dites paramètres, sont de préférence personnalisées par l'usager et peuvent être modifiées à tout instant. Par exemple, un paramètre a pour valeur la monnaie d'affichage d'un montant, ou une panoplie de couleurs pour l'affichage de pages sur un écran, ou bien la valeur du débit ou d'une caractéristique de transmission dans une connexion, ou bien encore des paramètres sont des coordonnées des lieux de départ et de destination pour un guidage routier.
Chaque descripteur d'une application est représenté sous la forme d'un graphe d'objet en langage orienté objet, par exemple le langage JAVA
(marque déposée) . Les descripteurs des applications dans une carte à puce multi-applications sont réunis dans une applet qui fait office d'un serveur de descripteur créant l'arborescence des objets représentant les composants et les connexions des descripteurs. Selon un autre exemple, les descripteurs des applications sont écrits avec le langage XML (Extensible Markup Langage) .
Au serveur de descripteurs constituant 1 ' applet est associé un client, appelé pilote PI (en anglais bootstrap) qui constitue au sein de la carte à puce CP une application pour configurer l'application sélectionnée AP en fonction de son descripteur. Après 1 ' introduction de la carte CP dans le terminal d'accueil TE, le pilote gère l'exécution de l'application sélectionnée AP dans la carte à puce CP et plus particulièrement selon l'invention, les problèmes liés à la taille de la mémoire dans la carte comparativement à la somme beaucoup plus grande des tailles de mémoire des composants de l'application AP lorsqu'elle est très étendue. La carte à puce ne pouvant contenir tous les éléments d'une telle application à la fois, l'exécution de l'application fait appel dynamiquement à des composants distants qui sont répartis à l'extérieur de la carte à puce. Le pilote PI contrôle alors les chargements, les installations, les connexions temporaires et les effacements des composants distants dans la mémoire de la carte à puce, notamment la mémoire non volatile EEPROM de la carte, au fur et à mesure de l'exécution de l'application,
chaque fois que l'application doit être exécutée en partie dans un composant distant. De même, l'application en cours d'exécution peut faire appel dynamiquement à des connexions distantes réparties. En groupant le serveur de descripteurs et le pilote dans la carte, la confidentialité des descripteurs est assurée si bien que la lecture des descripteurs par le pilote constituant un client connu ne nécessite pas d' authentification. En revanche, le pilote authentifie chaque client qui l'interroge avant de mettre à sa disposition l'ensemble des méthodes de l' applet. Lorsque l'usager a sélectionné une application AP, le pilote PI informe le serveur de descripteurs qui considère alors toutes les requêtes qui lui sont adressées comme étant relatives au descripteur DAP de l'application sélectionnée. Le pilote PI traite ainsi une ou plusieurs exécutions d'application en fonction du descripteur DAP de l'application sélectionnée AP et du contexte d'exécution de l'application constitué essentiellement par le terminal d'accueil TE.
Comme déjà dit, un élément d'application, composant ou connexion, est configuré en fonction du contexte de l'application, c'est-à-dire des propriétés matérielles et logicielles de la plateforme constituée essentiellement par la carte à puce CP où est exécutée l'application, et de paramètres choisis par l'usager et personnalisant l'application. Des propriétés du contexte d'exécution sont fournies par le terminal. Elles sont par exemple le type du terminal d'accueil utilisé TE, le nom du terminal, un certificat ou clé d'identification du terminal, la localisation du terminal dans le réseau de télécommunication et une date de fabrication du terminal . Toutes ces informations sont regroupées
dans le descripteur de l'élément d'application, tel que l'interface d'usager UI, afin que le pilote PI filtre les informations contenues dans le descripteur de l'élément en fonction du contexte de l'application et des paramètres de personnalisation de l'usager.
Le pilote PI localisé dans la carte à puce CP transmet des commandes à un portail PO qui est un élément applicatif implémenté dans le terminal d'accueil TE. Le portail a pour principal rôle de recevoir des commandes pour installer et paramétrer l'interface d'usager IU dans le terminal TE et pour ré-émettre d'autres commandes notamment pour lire la taille d'éléments de l'application disponibles à distance et charger ceux-ci dans la carte à puce. Ainsi pour la carte à puce, le portail a principalement une fonction d'information sur son environnement proche défini par le terminal d'accueil TE de l'application sélectionnée.
L'application est lancée par une commande d'exécution (RUN) qui contient le nom du composant de l'application sélectionnée déterminant le point d'entrée de l'application, généralement le composant d'interface d'usager IU. L'exécution est réalisée par le pilote PI à partir du descripteur DAP de l'application sélectionnée AP afin qu'un dialogue soit établi entre le pilote PI dans la carte à puce CP et le portail PO dans le terminal d'accueil TE. Le portail peut contenir un moteur de recherche d'éléments, ou être en liaison avec un ou plusieurs moteurs de recherche d'éléments MR, comme montré à la figure 2. Chaque moteur de recherche MR constitue un annuaire d'éléments d'application pour référencer et rechercher des éléments distants de l'application AP,
non contenus dans la carte CP, dans des bibliothèques d'éléments d'application BI à travers le réseau de télécommunication RT. Chaque élément dans une bibliothèque est mémorisé avec son descripteur et géré par le concepteur de l'élément, et est lu sous la commande du pilote PI à chaque appel de cet élément au cours du déroulement de l'application.
Par exemple comme schématisé à la figure 2, si l'application comprend l'interface d'usager IU, des agents AGI et AGM et des serveurs SEl et SEn, seul l'agent AGI est contenu initialement dans la mémoire de la carte à puce CP, tandis que l'interface IU est contenue dans le terminal TE. Les autres composants AGM, SEl et SEn et les connexions entre les composants de l'application sont distants et répartis dans des bibliothèques d'éléments BI qui doivent être appelés, copiés et transférés dans la mémoire de la carte CP pour exécuter progressivement l'application, comme on le verra ci-après.
L'agent AGI peut être un module de calcul du plus court chemin entre un point de départ variable et un point de destination, en fonction de données de cartes routières appelées dans des serveurs SEl, ... SEn chargées et effacées dynamiquement par une carte à puce logée dans un récepteur de radioguidage routier dans une automobile. Les appels, chargements et effacements dynamiques sont effectuées au fur et à mesure du déplacement de l'automobile, en fonction du lieu où elle se trouve. L'agent AGM est dans ce cas par exemple un calculateur pour prédire périodiquement la durée restant à parcourir.
En référence maintenant à la figure 3, pour préparer l'exécution d'une application AP dans une
carte à puce multi-applications CP, l'usager introduit d'abord la carte à puce CP dans la fente de lecteur du terminal d'accueil TE à une étape El. Après l'introduction de la carte à puce, celle-ci authentifie l'usager par l'intermédiaire d'un code confidentiel ou d'une empreinte biométrique saisie par le terminal TE, à une étape E2.
Puis au cours du dialogue établi entre la carte à puce CP et le terminal d'accueil TE, des caractéristiques du contexte d'exécution sont transmises par le terminal TE au pilote PI dans la carte à puce CP, à une étape E3. Les caractéristiques du contexte d'exécution fournies par le terminal sont par exemple le type du terminal d'accueil utilisé TE, le nom du terminal, un certificat ou clé d'identification du terminal, la localisation du terminal dans le réseau de télécommunication RT et une date de fabrication du terminal . Ces caractéristiques permettent au pilote PI de limiter la quantité de données qu'il transmet au portail PO. Les caractéristiques du contexte d'exécution peuvent en outre comprendre au moins une clé de sécurisation composée par- l'usager dans le terminal TE et susceptible d'être attribuée à l'accès de connexions avec au moins un élément, tel qu'un agent, de l'application sélectionnée AP ci-après ; cet élément associé à une clé peut être commune à plusieurs applications dans la carte.
A une étape suivante E4, l'usager sélectionne l'une AP des applications dont les descripteurs DAP sont mémorisés dans la carte à puce CP . En fonction notamment de clés de sécurisation composées par l'usager et transmises par le terminal TE, le pilote PI retransmet la liste des applications autorisées à être exécutées par la carte CP. L'une AP des
applications autorisées est alors sélectionnée par l'usager dans la liste des applications autorisées affichées dans le terminal TE. En particulier, l'application sélectionnée AP comprend au moins des connexions avec les éléments associés aux clés de sécurisation transmises.
A une étape E5, le terminal TE selon le contexte et de préférence selon des souhaits de l'usager paramètre le descripteur DAP, c'est-à-dire paramètre certains des ou éventuellement tous les descripteurs des composants et connexions de l'application sélectionnée AP qui peuvent être paramétrés. Le paramétrage par l'usager est classique à l'aide de menus arborescents demandant des valeurs de paramètre .
A la suite des étapes de sélection d'application et de paramétrage des composants de l'application sélectionnée, l'application sélectionnée est exécutée dans la carte à puce CP à l'étape E6 détaillée ci- après selon l'invention en référence à la figure 4.
En référence à la figure 4, la carte à puce CP commence l'exécution de l'application sélectionnée AP en appelant le composant de l'application constituant le point d'entrée de celle-ci, soit l'interface d'usager IU dans le terminal TE à une étape EX1.
Cet appel de l'interface d'usager IU consiste d'abord à envoyer une commande [INSTALLER IU] contenant le descripteur DIU par le pilote PI au portail PO afin que l'interface d'usager soit installée dans le terminal d'accueil TE. Une fois l'interface d'usager IU installée, le portail PO transmet un acquittement [ACK(INSTALLER lu) ] de l'installation de l'interface IU par le terminal TE. Puis le pilote PI commande, bien souvent, un
paramétrage de l'interface IU lorsqu'elle est paramétrable. En réponse à une commande [PARAMETRER IU] , le terminal TE paramètre 1 ' interface installée IU en fonction d'un ou plusieurs paramètres initialement contenus dans le descripteur DIU ou sélectionnés à l'étape E5.
En réponse à un acquittement [ACK (PARAMETRER IU) ] du paramétrage de 1 ' interf ce IU par le terminal TE, le pilote PI de la carte CP commande le début de l'exécution de l'interface d'usager ainsi instanciée, c'est-à-dire une exécution au moins partielle de 1 ' interface IU dans le terminal TE à une étape EX2.
Tous ces échanges depuis et vers la carte CP, ainsi que d'autres avec des bibliothèques d'éléments BI via le terminal TE et le réseau RT, sont chiffrés. A ces étapes d'initialisation d'exécution EX1 et EX2 , l'interface d'usager IU est considérée comme un "premier" élément ELO correspondant à un indice d'élément k mis à zéro. A une étape suivante EX3 , le pilote PI vérifie que l'application AP n'est pas terminée. En effet, l'application AP peut ne contenir qu'un élément, en l'occurrence l'interface d'usager IU, qui après l'exécution totale de cet élément unique, conduit à l'arrêt de l'application AP à l'étape EX4.
Sinon, l'application sélectionnée AP contient un ou plusieurs autres éléments ELk, en particulier un ou M agents qualifiant un processus et/ou un ou N serveurs de données, comme montré à la figure 1.
Les étapes suivantes EX5 à EX18 concernent l'installation d'un prochain élément (ELk) déjà présent ou téléchargé dans la carte CP, dans lequel est exécutée une partie de l'application AP lorsque l'élément ELk est appelé par l'interface d'usager ELO
= IU et lorsque k = 1. Plus généralement, les étapes EX5 à EX18 concernent la préparation de l'exécution d'une partie de l'application AP dans un élément quelconque ELk appelé par un élément appelé précédemment EL(k-l) de l'application AP, avec l'indice k inférieur au nombre d'éléments composant 1 'application.
Ainsi, à l'étape EX5 , l'indice k est augmenté d'une unité et le pilote PI de la carte à puce CP procède à un appel de 1 ' élément suivant ELk demandé par l'élément précédent EL(k-l). En l'occurrence, le pilote constate dans le descripteur de l'élément appelé ELk qui peut être un agent AGm ou un serveur SEn de l'application, que l'élément ELk est initialement contenu ou récemment chargé dans la carte CP, ou bien est absent de la carte et situé dans une bibliothèque d'élément éloignée BI, à l'étape EX6. Si l'élément ELk est déjà mémorisé dans la carte CP, une partie de l'application AP est immédiatement exécutée dans l'élément ELk dans la carte CP, à l'étape EX7.
Sinon, une erreur d'exécution intervient à l'étape suivante EX8 afin que le pilote PI tente de commander le téléchargement de l'élément ELk aux étapes suivantes EX8 à EX17 et, en cas de succès, de connecter l'élément chargé ELk avec l'élément précédent EL(k-l) en installant la connexion correspondante CX(EL(k-l), E (k) ) .
Pour installer l'élément ELk principalement dans la mémoire non volatile EEPROM de la carte à puce CP, le pilote PI demande au portail PO une recherche de l'élément ELk dans le réseau RT et, si l'élément ELk est trouvé dans une bibliothèque BI, une transmission de la taille Tk de l'élément trouvé ELk afin de vérifier que l'espace de mémoire restant disponible
de taille TD dans la mémoire de la carte CP est assez grand pour l'élément ELk. Si ce n'est pas le cas, le pilote PI tente de créer une place suffisante dans la mémoire de la carte à puce CP, au moins égale à la taille Tk de l'élément ELk. Les étapes suivantes EX9 à EX16 concernent la préparation du chargement de l'élément ELk.
A l'étape EX9, le pilote PI demande à un moteur de recherche MR, via le terminal TE, de rechercher l'élément ELk dans les bibliothèques BI en fonction du descripteur de l'élément ELk. Si aucun élément ELk n'est trouvé, ou en variante aucun élément sensiblement similaire à l'élément ELk n'est trouvé dans le réseau RT, l'exécution de l'application est arrêtée à l'étape EX10. Un élément similaire présente des propriétés et/ou des paramètres sensiblement similaires à ceux de l'élément appelé ELk selon des critères prédéterminés. Sinon, la bibliothèque BI contenant l'élément ELk trouvé, ou un élément sensiblement similaire trouvé et remplaçant l'élément ELk, transmet la taille de mémoire Tk pouvant être occupée par l'élément ELk à la carte CP qui la mémorise à l'étape EX11.
L'élément ELk pouvant être mis à jour par le concepteur de celui-ci à tout moment, indépendamment de l'exploitation de l'élément ELk notamment dans l'application AP en cours d'exécution, il est préférable que la taille Tk ainsi modifiable soit transmise à la carte CP, au lieu que, en variante, elle soit lue directement dans le descripteur de l'élément ELk par le pilote PI.
Le pilote PI compare ensuite la taille Tk de l'élément trouvé ELk et la taille de mémoire disponible TD dans la carte CP à l'étape EX12. Si la taille TD de mémoire restant disponible est
inférieure à la taille Tk de l'élément trouvé ELk, le pilote PI recherche un élément ELP de l'application AP parmi tous les éléments précédemment ayant été chargés et ainsi mémorisés actuellement, c'est-à-dire non effacés, dans la carte CP à l'étape EX13. L'application est arrêtée s'il n'existe aucun élément précédemment chargé à l'étape EX14, l'élément trouvé ELk ne pouvant être mémorisé dans l'espace disponible trop petit. A l'étape EX13, l'élément précédent ELP est sélectionné parmi tous les éléments précédemment chargés et mémorisés actuellement selon des critères appropriés pour être : le plus ancien des éléments précédemment chargés ; ou le moins utilisé des éléments précédemment chargés ; ou le plus grand en taille des éléments précédemment chargés . Le descripteur de chaque élément qui n'est pas présent initialement dans la carte est associé à au moins une référence relative à l'un choisi des critères ci-dessus et mise à jour au fur et à mesure des appels des éléments dans la carte. L'élément précédemment chargé et sélectionné ELP a son état sauvegardé dans la carte à puce à l'étape suivante EX15, afin de retourner à cet état (Cf. étape suivante EX18) si l'application continue par une poursuite d'exécution de l'élément ELP après celle de l'élément ELk. Grâce à cette sauvegarde, le pilote PI efface l'élément ELP dans la mémoire de la carte CP à l'étape suivante EX16, sans interdire un éventuel retour convenable à l'élément ELP. La taille de mémoire disponible TD est alors augmentée de la taille TELP de l'élément précédemment chargé et
sélectionné ELP, puis est de nouveau comparée à la taille Tk de l'élément appelé trouvé à charger ELk, en revenant à 1 ' étape EX12.
Tant que Tk>TD et qu'il existe au moins un élément précédemment chargé et mémorisé actuellement dans la carte CP à effacer, le pilote effectue des cycles d'étapes EX12 à EX16.
Dès que la taille de mémoire disponible TD devient suffisante, soit TD≥Tk, l'élément appelé ELk de taille Tk est chargé et ainsi installé localement dans la mémoire de la carte CP, à l'étape EX17. Le chargement de l'élément EL(k) est initié par le pilote PI par une commande [COPIER ELk] de copie de l'élément appelé ELk dans la bibliothèque distante BI . Le pilote charge l'élément appelé ELk ainsi copié dans un emplacement libre de l'espace disponible de la mémoire de la carte CP, et le paramètre en fonction des paramètres contenus dans le descripteur de l'élément ELk. Si au moins l'élément précédemment appelé EL(k- 1) et l'élément appelé venant d'être chargé ELk sont par exemple des composants, ils sont ensuite connectés en installant la connexion CX(EL(k-l), EL(k)) à l'étape EX18. Cette connexion est bien souvent disponible dans la carte, mais parfois peut être téléchargée selon des étapes analogues aux étapes EX8 à EX17. L'élément EL(k) et la connexion précédente sont activés à l'étape EX18.
Le cas échéant, si l'élément chargé ELk a eu son état sauvegardé lors d'une participation à une étape précédente EX15 au cours de l'exécution de l'application, en tant qu'élément précédemment chargé ELP, l'élément appelé chargé ELk est activé à partir d'un état sauvegardé de cet élément à ladite étape
précédente EX15 et lu en mémoire dans la carte CP par le pilote PI.
Après l'étape EX18, ou lorsque l'élément appelé ELk est déjà contenu dans la carte CP à l'étape EX6, une partie de l'application AP est exécutée dans 1 ' élément ELk à 1 ' étape EX7.
L'exécution de l'élément ELk peut entraîner une augmentation de l'espace de mémoire occupé par l'application dans la carte, voire une saturation. Des étapes suivantes EX19-EX20-EX7 vérifient l'état de saturation de la mémoire de la carte pendant l'exécution de tout élément appelé ELk, par exemple à chaque ligne de code ou toutes les quelques unes lignes de code d'exécution de l'élément ELk.
Tant que la mémoire de la carte n'est pas saturée à l'étape EX19, l'exécution de la partie de l'application AP dans l'élément ELk est poursuivie à l'étape EX7 si à l'étape EX20 l'exécution de la partie de l'application AP à exécuter dans l'élément ELk n'est pas terminée.
Si au cours de l'exécution de l'élément appelé chargé ELk, la mémoire de la carte CP devient saturée à l'étape EX19, une erreur d'exécution interrompt l'exécution de l'élément appelé ELk pour réaliser des étapes EX21 à EX24 analogues aux étapes cycliques précédentes EX13 à EXlβ. Le pilote PI recherche un élément ELPR de l'application AP parmi tous les éléments précédemment chargés et mémorisés actuellement dans la carte CP à l'étape EX21. L'application AP est arrêtée s'il n'existe aucun élément précédemment chargé à l'étape EX22. A l'étape EX21, l'élément précédent ELPR est sélectionné parmi tous les éléments précédemment chargés et mémorisés actuellement selon l'un des critères énoncés
précédemment. L'élément ELPR est le plus ancien ou le moins utilisé, ou le plus grand en taille de mémoire des éléments précédemment chargés dans la carte à puce C . L'élément précédemment chargé et sélectionné ELPR a son état sauvegardé dans la carte à puce à l'étape suivante EX23. Grâce à cette sauvegarde, le pilote PI efface l'élément ELPR dans la mémoire de la carte CP à l'étape suivante EX24, sans interdire un éventuel retour convenable à l'élément ELPR. La taille de mémoire disponible TD précédemment quasiment nulle à l'étape EX19 est alors augmentée de la taille TELPR de l'élément précédemment chargé et sélectionné ELPR. Puis le procédé revient éventuellement à 1 ' étape EX19 où le pilote PI ne constate plus de saturation de mémoire, ou selon la figure 4, poursuit l'exécution temporairement interrompue de la partie de l'application dans l'élément appelé chargé ELk par l'étape EX20.
Lorsque la partie de l'application AP dans l'élément ELk est exécutée à l'étape EX20 et si l'application AP est terminée à une étape suivante EX21, le pilote PI arrête l'exécution de l'application AP et, le cas échéant, efface les éléments appelés pour l'exécution de l'application AP, à une étape EX22.
Si l'application AP est poursuivie, un autre élément EL(k+l) peut être appelé par l'élément EL(k) à l'étape EX5 au début d'un autre cycle d'étape EX5 à EX21. Selon une autre possibilité, à une étape EX23, l'indice k est mis à k-q et l'application AP revient à un élément précédent déjà appelé EL (k-q) avec l≤q≤k, par exemple à l'élément d'interface d'usager
ELO = IU via 1 ' étape EX2 , ou revient à un élément quelconque EL (k-q) ≠ ELO via l'étape EX6.
L'exécution d'une application par segmentation en éléments selon 1 ' invention offre un certain nombre d' avantages .
Un élément de l'application AP est exécuté au sein de la carte à puce CP. Ensuite, au moins une partie de l'application étant stockée sur un serveur de bibliothèque d'élément, le fournisseur de l'application peut mettre à jour de manière transparente pour l'usager son service. Par exemple, dans l'exemple du radioguidage routier, les cartes routières peuvent être remises à jour de manière transparente pour l'usager. L'usager bénéficie à chaque instant de la dernière mise à jour du service de carte routière.
Un autre avantage significatif de l'invention est qu'un seul développement de l'application est nécessaire et non plus un développement pour chaque plate-forme d'exécution.
En ce qui concerne le piratage d'une application segmentée selon l'invention, il est très difficile de reconstruire l'application, chaque élément n'étant qu'une partie de l'application. Seul les éléments nécessaires à l'exécution de l'application à un instant donné sont téléchargés à travers le réseau RT et nécessitent bien souvent des connexions avec d'autres éléments déjà présents dans la carte à puce. Afin d'améliorer la protection de l'application logicielle, les codes transmis entre les serveurs de bibliothèque et la carte à puce sont cryptés, comme déjà précisé.