Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR THE DYNAMIC CREATION OF AN APPLICATION EXECUTION ENVIRONMENT FOR SECURING SAID APPLICATION, AND ASSOCIATED COMPUTER PROGRAM PRODUCT AND COMPUTING DEVICE
Document Type and Number:
WIPO Patent Application WO/2013/050600
Kind Code:
A1
Abstract:
The invention relates to a method for the dynamic creation of an execution environment for securing an application to be secured (34) in an operating system (20) comprising a set (26) of libraries containing one or more non-secured functions (39), in which, during its execution, the application to be secured (34) is intended to call a function belonging to the library containing one or more non-secured functions (39). This method is performed by a computing device (10) comprising a securing library (24) containing at least one securing function, and comprises the following steps consisting in: loading the securing library (24); from among the function call(s) associated with the application to be secured (34), substituting at least one call to a non-secured function with a call to a corresponding function from the securing library (24); and launching the application to be secured (34) following the substitution step.

Inventors:
FREREBEAU LAURENT (FR)
BIOTEAU ADRIEN (FR)
Application Number:
PCT/EP2012/069874
Publication Date:
April 11, 2013
Filing Date:
October 08, 2012
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
THALES SA (FR)
International Classes:
G06F21/00
Foreign References:
US20020066021A12002-05-30
US6836888B12004-12-28
US7260820B12007-08-21
US20020065776A12002-05-30
US20070101435A12007-05-03
Other References:
None
Attorney, Agent or Firm:
BLOT, Philippe et al. (FR)
Download PDF:
Claims:
REVENDICATIONS

1 . - Procédé de création dynamique d'un environnement d'exécution d'une application à sécuriser (34) pour la sécurisation de ladite application (34), le procédé étant mis en œuvre par un appareil informatique (10) comprenant une unité de traitement d'informations (12) et une mémoire (14), la mémoire (14) étant associée à l'unité de traitement d'informations (12) et comportant un système d'exploitation (20), l'application à sécuriser (34) et une bibliothèque de sécurisation (24) comportant au moins une fonction de sécurisation (37A, 37B, 37C), le système d'exploitation (20) comportant un ensemble (26) de bibliothèques de fonction(s) comprenant une bibliothèque de fonction(s) non sécurisée(s) (39), l'application à sécuriser (34) étant, lors de son exécution, destinée à appeler une fonction de la bibliothèque de fonction(s) non sécurisée(s) (39),

le procédé étant caractérisé en ce qu'il comprend les étapes suivantes mises, en œuvre par une application de création dynamique de l'environnement d'exécution (36) stockée dans la mémoire (14) :

- le chargement (100) de la bibliothèque de sécurisation (24),

- la substitution (1 10), parmi le ou les appel(s) de fonction associé(s) à ladite application à sécuriser (34), d'au moins un appel à une fonction non sécurisée par un appel à une fonction correspondante (37A, 37B, 37C) de la bibliothèque de sécurisation (24),

- le lancement (140) de l'application à sécuriser (34) après l'étape de substitution

(1 10).

2. - Procédé selon la revendication 1 , dans lequel l'étape de substitution (1 10) comporte la suppression d'un lien dynamique entre ladite application à sécuriser (34) et la fonction non sécurisée, et la création d'un lien dynamique de substitution entre ladite application à sécuriser (34) et la fonction correspondante (37A, 37B, 37C) de la bibliothèque de sécurisation (24).

3. - Procédé selon la revendication 1 ou 2, dans lequel, parmi le ou les appel(s) de fonction associé(s) à ladite application à sécuriser, tous les appels à une fonction de stockage de données sont substitués par des appels à une fonction (37A) de sécurisation du stockage de données.

4. - Procédé selon l'une quelconque des revendications précédentes, dans lequel, parmi le ou les appel(s) de fonction associé(s) à ladite application à sécuriser, tous les appels à une fonction d'échange de données avec un autre appareil informatique sont substitués par des appels à une fonction (37B) de sécurisation d'échange de données avec l'autre appareil informatique.

5.- Procédé selon l'une quelconque des revendications précédentes, dans lequel, parmi le ou les appel(s) de fonction associé(s) à ladite application à sécuriser, tous les appels à une fonction d'ajout d'événements de débogage sont substitués par des appels à une fonction (37C) de suppression d'événements de débogage.

6.- Procédé selon l'une quelconque des revendications précédentes, dans lequel le procédé comprend en outre, avant l'étape de lancement de l'application (140), une étape (1 15) de verrouillage de la bibliothèque de sécurisation (24) chargée lors de l'étape de chargement (100) et de la ou des substitution(s) d'appel de fonction effectuée(s) lors de l'étape de substitution (1 10).

7.- Procédé selon l'une quelconque des revendications précédentes, dans lequel le procédé comprend en outre, avant l'étape de lancement de l'application (140), une étape (120) d'authentification de l'utilisateur de l'appareil informatique (10) et de récupération d'une clé de déverrouillage de la bibliothèque de sécurisation (24).

8. - Procédé selon l'une quelconque des revendications précédentes, dans lequel le procédé comprend en outre, avant l'étape de lancement de l'application (140), une étape (130) d'interception d'un message échangé entre le système d'exploitation (20) et l'application à sécuriser (34), et de traitement dudit message par une fonction correspondante de la bibliothèque de sécurisation 24.

9. - Procédé selon l'une quelconque des revendications précédentes, dans lequel l'application de création de l'environnement d'exécution (36) est une application dédiée à la ou aux application(s) à sécuriser (34), et est distincte du système d'exploitation (20).

10. - Procédé selon l'une quelconque des revendications précédentes, dans lequel le système d'exploitation (20) comporte une machine virtuelle (28) propre à exécuter l'application (34, 36).

1 1 .- Procédé selon la revendication 10, dans lequel le système d'exploitation (20) est Android, et la machine virtuelle (28) est la machine virtuelle Dalvik.

12. - Produit programme d'ordinateur comportant des instructions logicielles qui, lorsque mises en œuvre par une unité de traitement d'informations (12) intégrée à un appareil informatique (10), met en œuvre le procédé selon l'une quelconque des revendications précédentes.

13. - Appareil informatique (10) comprenant :

- une unité de traitement d'informations (12),

- une mémoire (14) comportant un système d'exploitation (20), au moins une application à sécuriser (34) et une bibliothèque de sécurisation (24) comportant au moins une fonction de sécurisation (37A, 37B, 37C), la mémoire (14) étant associée à l'unité de traitement d'informations (12), le système d'exploitation (20) comportant un ensemble (26) de bibliothèques de fonctions comprenant une bibliothèque de fonction(s) non sécurisée(s) (39), l'application à sécuriser (34) étant destinée à appeler une fonction de la bibliothèque de fonction(s) non sécurisée(s) (39),

caractérisé en ce que la mémoire (14) comporte en outre une application (36) de création dynamique d'un environnement d'exécution de l'application à sécuriser, l'application de création de l'environnement d'exécution (36) comportant des moyens (40) de chargement de la bibliothèque de sécurisation (24), des moyens (42) de substitution, parmi le ou les appel(s) de fonction associé(s) à ladite application à sécuriser (34), d'au moins un appel à une fonction non sécurisée par un appel à une fonction correspondante (37A, 37B, 37C) de la bibliothèque de sécurisation (24), et des moyens (48) de lancement de l'application à sécuriser (34) suite à la substitution de l'appel à la fonction non sécurisée par l'appel à la fonction de sécurisation (37A, 37B, 37C).

Description:
Procédé de création dynamique d'un environnement d'exécution d'une application pour sécuriser ladite application, produit programme d'ordinateur et appareil informatique associés La présente invention concerne un procédé de création dynamique d'un environnement d'exécution d'une application à sécuriser, pour la sécurisation de ladite application, le procédé étant mis en œuvre par un appareil informatique comprenant une unité de traitement d'informations et une mémoire, la mémoire étant associée à l'unité de traitement d'informations et comportant un système d'exploitation, l'application à sécuriser et une bibliothèque de sécurisation comportant au moins une fonction de sécurisation, le système d'exploitation comportant un ensemble de bibliothèques de fonction(s) comprenant une bibliothèque de fonction(s) non sécurisée(s), l'application à sécuriser (34) étant, lors de son exécution, destinée à appeler une fonction de la bibliothèque de fonction(s) non sécurisée(s).

L'invention concerne également un produit programme d'ordinateur comportant des instructions logicielles qui, lorsque mis en œuvre par une unité de traitement d'informations intégrée à un appareil informatique, met en œuvre un tel procédé.

L'invention concerne également un appareil informatique comprenant :

- une unité de traitement d'informations,

- une mémoire, comportant un système d'exploitation, au moins une application à sécuriser et une bibliothèque de sécurisation comportant au moins une fonction de sécurisation, la mémoire étant associée à l'unité de traitement d'informations,

le système d'exploitation comportant un ensemble de bibliothèques de fonctions comprenant une bibliothèque de fonction(s) non sécurisée(s), l'application à sécuriser étant destinée à appeler une fonction de la bibliothèque de fonction(s) non sécurisée(s).

On connaît un appareil informatique, tel qu'un terminal mobile, du type précité. Le terminal mobile est géré par une plateforme Android hébergeant des applications. La plateforme Android comporte un noyau Linux (de l'anglais Linux Kernel), un ensemble de bibliothèques de fonctions en langage C ou C++, et une machine virtuelle Dalvik (de l'anglais Dalvik Virtual Machiné) propre à exécuter les applications hébergées par la plateforme Android.

Le fonctionnement d'applications sensibles nécessite d'être sécurisé afin de protéger les données traitées par ces applications et de faire face aux menaces de récupération d'informations résultant de la perte ou du vol du terminal mobile, ou encore de l'interception de communications entre le terminal mobile et un autre équipement informatique. Une solution de sécurisation des données consiste alors à modifier le code source ou binaire de chacune des applications à sécuriser afin de leur faire appeler des bibliothèques spécialisées comportant des fonctions de sécurisation adéquates.

Toutefois, une telle sécurisation des applications nécessite de modifier le code source ou binaire de chacune des applications, ce qui est particulièrement contraignant, et n'est en outre pas toujours autorisé par le fournisseur de l'application lorsque la modification du code est effectuée par un tiers.

Un but de l'invention est donc de proposer un procédé de création dynamique d'un environnement d'exécution d'une application à sécuriser et un appareil informatique associé permettant de sécuriser une application tout en limitant les modifications du code du système d'exploitation, de l'environnement applicatif ou encore de l'application à sécuriser.

A cet effet, l'invention a pour objet un procédé de création dynamique d'un environnement d'exécution du type précité, caractérisé en ce que le procédé comprend les étapes suivantes, mises en œuvre par une application de création dynamique de l'environnement d'exécution stockée dans la mémoire :

- le chargement de la bibliothèque de sécurisation,

- la substitution, parmi le ou les appel(s) de fonction associé(s) à ladite application à sécuriser, d'au moins un appel à une fonction non sécurisée par un appel à une fonction correspondante de la bibliothèque de sécurisation,

- le lancement de l'application à sécuriser après l'étape de substitution.

Suivant d'autres aspects avantageux de l'invention, le procédé comprend une ou plusieurs des caractéristiques suivantes, prises isolément ou suivant toutes les combinaisons techniquement possibles :

- l'étape de substitution comporte la suppression d'un lien dynamique entre ladite application à sécuriser et la fonction non sécurisée, et la création d'un lien dynamique de substitution entre ladite application à sécuriser et la fonction correspondante de la bibliothèque de sécurisation ;

- parmi le ou les appel(s) de fonction associé(s) à ladite application à sécuriser, tous les appels à une fonction de stockage de données sont substitués par des appels à une fonction de sécurisation du stockage de données ;

- parmi le ou les appel(s) de fonction associé(s) à ladite application à sécuriser, tous les appels à une fonction d'échange de données avec un autre appareil informatique sont substitués par des appels à une fonction de sécurisation d'échange de données avec l'autre appareil informatique ; - parmi le ou les appel(s) de fonction associé(s) à ladite application à sécuriser, tous les appels à une fonction d'ajout d'événements de débogage sont substitués par des appels à une fonction de suppression d'événements de débogage ;

- le procédé comprend en outre, avant l'étape de lancement de l'application, une étape de verrouillage de la bibliothèque de sécurisation chargée lors de l'étape de chargement et de la ou des substitution(s) d'appel de fonction effectuée(s) lors de l'étape de substitution ;

- le procédé comprend en outre, avant l'étape de lancement de l'application, une étape d'authentification de l'utilisateur de l'appareil informatique et de récupération d'une clé de déverrouillage de la bibliothèque de sécurisation ;

- le procédé comprend en outre, avant l'étape de lancement de l'application, une étape d'interception d'un message échangé entre le système d'exploitation et l'application à sécuriser, et de traitement dudit message par une fonction correspondante de la bibliothèque de sécurisation ;

- l'application de création de l'environnement d'exécution est une application dédiée à la ou aux application(s) à sécuriser, et est distincte du système d'exploitation ;

- le système d'exploitation comporte une machine virtuelle propre à exécuter l'application ;

- le système d'exploitation est Android, et la machine virtuelle est la machine virtuelle Dalvik.

L'invention a également pour objet un produit programme d'ordinateur comportant des instructions logicielles qui, lorsque mis en œuvre par une unité de traitement d'informations intégrée à un appareil informatique, met en œuvre un procédé tel que défini ci-dessus.

L'invention a également pour objet un appareil informatique du type précité, caractérisé en ce que la mémoire comporte en outre une application de création dynamique d'un environnement d'exécution de l'application à sécuriser, l'application de création de l'environnement d'exécution comportant des moyens de chargement de la bibliothèque de sécurisation, des moyens de substitution, parmi le ou les appel(s) de fonction associé(s) à ladite application à sécuriser, d'au moins un appel à une fonction non sécurisée par un appel à une fonction correspondante de la bibliothèque de sécurisation, et des moyens de lancement de l'application à sécuriser suite à la substitution de l'appel à la fonction non sécurisée par l'appel à la fonction de sécurisation.

Ces caractéristiques et avantages de l'invention apparaîtront à la lecture de la description qui va suivre, donnée uniquement à titre d'exemple, et faite en référence aux dessins annexés, sur lesquels : - la figure 1 est une vue schématique d'un appareil informatique selon l'invention,

- la figure 2 est une représentation schématique d'une mémoire de l'appareil informatique de la figure 1 ,

- la figure 3 est un organigramme d'un procédé de création dynamique d'un environnement d'exécution d'une application à sécuriser, selon l'invention, et

- la figure 4 est une représentation de la création dynamique de l'environnement d'exécution de l'application à sécuriser et de l'exécution de ladite application.

Sur la figure 1 , un appareil informatique 10, tel qu'un terminal mobile, comprend une unité de traitement d'informations 12, une mémoire 14 associée à l'unité de traitement d'informations et un écran 15.

Dans l'exemple de réalisation de la figure 1 , l'appareil informatique 10 est un téléphone mobile et comprend en outre une antenne radioélectrique 16 et un émetteur- récepteur radioélectrique 18 connectés à l'unité de traitement d'informations.

L'unité de traitement d'informations 12 comporte, par exemple, un processeur de données.

La mémoire 14 comporte un système d'exploitation 20 et une pluralité de premiers fichiers de paquetage 21 et de deuxièmes fichiers de paquetage 22.

En complément, la mémoire 14 comporte un troisième fichier de paquetage 23.

La mémoire 14 comporte également une bibliothèque de sécurisation 24 propre à sécuriser par exemple le stockage de données et/ou l'échange de données avec un autre appareil informatique.

L'émetteur-récepteur radioélectrique 18 comporte des moyens d'émission et de réception de signaux radioélectriques via l'antenne radioélectrique 16. L'émetteur- récepteur radioélectrique 18 est conforme à la norme de communication GPRS (de l'anglais General Packet Radio Service), ou encore à la norme UMTS (de l'anglais Universal Mobile Télécommunication System).

L'antenne radioélectrique 16 et l'émetteur-récepteur radioélectrique 18 sont propres à permettre l'établissement d'une liaison radioélectrique entre l'appareil informatique 10 et un autre appareil informatique comportant une antenne et un émetteur- récepteur radioélectrique conformes à la même norme de communication.

Le système d'exploitation 20 comporte un noyau 25, un ensemble 26 de bibliothèques de fonctions, une machine virtuelle 28 et une structure d'accueil applicative 30 (de l'anglais Application framework).

Chaque premier fichier de paquetage 21 comporte une application non sensible 31 sous forme d'un premier fichier binaire et un premier fichier de configuration 33, l'application non sensible 31 ne nécessitant pas d'être sécurisée. Chaque deuxième fichier de paquetage 22 comporte une application à sécuriser 34 sous forme d'un deuxième fichier binaire, un deuxième fichier de configuration 35 et une application 36 de création dynamique d'un environnement d'exécution de l'application à sécuriser, l'application de création de l'environnement d'exécution 36 étant sous forme d'un troisième fichier binaire.

En complément, le troisième fichier de paquetage 23 comporte une application, non représentée, d'authentification de l'utilisateur et de récupération d'une clé de déverrouillage de la bibliothèque de sécurisation. Le troisième fichier de paquetage 23 comporte un troisième fichier de configuration, non représenté, associé à l'application d'authentification de l'utilisateur et de récupération de la clé de déverrouillage. L'authentification de l'utilisateur est effectuée à l'aide, par exemple, d'une carte à puce incluse dans l'appareil 10, ou encore d'une carte de communication en champ proche extérieure à l'appareil, également appelée carte NFC (de l'anglais Near Field Communication). Ladite application est également propre à vérifier des permissions associées à une application tierce pour le contrôle de l'accès à ladite application tierce par l'utilisateur.

La bibliothèque de sécurisation 24 comporte une fonction 37A de sécurisation du stockage de données, une fonction 37B de sécurisation d'échange de données avec un autre appareil informatique et une fonction 37C de suppression d'évènement(s) de débogage, comme représenté sur la figure 2.

Dans l'exemple de réalisation des figures 1 et 2, la bibliothèque de sécurisation 24 est une bibliothèque spécifique distincte des bibliothèques natives incluses dans le système d'exploitation 20.

En variante, tel qu'illustré par les traits pointillés sur la figure 2, la bibliothèque de sécurisation 24 est une bibliothèque native incluse dans l'ensemble de bibliothèques 26 du système d'exploitation livré par le fournisseur du système d'exploitation.

Comme connu en soi, le noyau 25 forme une couche d'abstraction entre, d'une part, une partie matérielle comportant notamment l'unité de traitement d'informations 12, la mémoire 14 et l'émetteur-récepteur radioélectrique 18, et d'autre part, le reste du système d'exploitation 20, notamment l'ensemble de bibliothèques 26. Le noyau 25 est adapté pour gérer des services essentiels tels que la sécurité du système d'exploitation, la gestion de la mémoire, ou encore la gestion des processus.

L'ensemble de bibliothèques 26 comprend une bibliothèque 39 de fonctions non sécurisées.

La machine virtuelle 28 est connue en soi, et est propre à exécuter chaque fichier binaire contenu dans les fichiers de paquetage 21 , 22, 23 respectifs. La structure d'accueil applicative 30 comporte des services 38A, 38B à la disposition des applications 31 , 34, 36, tels qu'un service 38A de gestion d'activité, un service 38B de gestion des fichiers de paquetage associés aux applications.

Chaque application 31 , 34, 36 est en forme d'un fichier binaire comportant un code binaire, également appelé code intermédiaire (de l'anglais bytecodé) destiné à être exécuté par la machine virtuelle 28. L'exécution de l'application 31 , 34, 36 par la machine virtuelle 28 est une interprétation du code intermédiaire de l'application.

Chaque application 31 , 34, 36 comprend un ou plusieurs composants A, B, #A, #B, comme représenté sur la figure 4, les composants présentant différents types, tels qu'une activité, un service, un fournisseur de contenu, ou encore un récepteur de diffusion. Chaque composant A, B, #A, #B joue un rôle différent dans le comportement de l'application, et est activable individuellement, même par d'autres applications.

Dans le mode de réalisation décrit, le système d'exploitation 20 est le système d'application Android® de la société Google. Le noyau 25 est alors basé sur un noyau Linux, plus précisément sur la version 2.6 du noyau Linux. L'ensemble de bibliothèque 26 est écrite en langage informatique C/C++. La machine virtuelle 28 est la machine virtuelle Dalvik. Les applications 31 , 34, 36 sont écrites en langage Java et sont en forme d'un code binaire exécutable par la machine virtuelle Dalvik 28.

En variante, l'invention s'applique à n'importe quel système d'exploitation de même type que le système d'exploitation Android®. En particulier, l'invention s'applique à un système d'exploitation comportant un noyau, une machine virtuelle destinée à exécuter les applications et un ensemble de bibliothèques de fonctions accessibles par le noyau et par la machine virtuelle.

Le premier fichier de configuration 33 est connu en soi et comporte des informations de nommage et d'indication de la version de l'application, des informations concernant les composants de l'application et des filtres de message permettant à l'application d'identifier de manière prédéfinie certains messages parmi ceux reçus du système d'exploitation 20 ou d'autres applications. Dans le cas d'Android®, le premier fichier de configuration 33 est également appelé fichier Manifest (de l'anglais Manifest file).

L'application à sécuriser 34 est destinée à appeler au moins une fonction de la bibliothèque de fonction non sécurisée 39 lors de son exécution.

Le deuxième fichier de configuration 35 comporte le même type d'informations que le premier fichier de configuration 33, et est en outre modifié, afin que l'application de création de l'environnement d'exécution 36 soit lancée à la place de l'application à sécuriser 34 lors de l'exécution du deuxième fichier de paquetage 22 par la machine virtuelle 28.

En variante, l'application à sécuriser 34 et l'application de création de l'environnement d'exécution 36 sont encapsulées dans deux fichiers de paquetage distincts, chaque application 34, 36 étant encapsulée avec un fichier de configuration propre dans un fichier de paquetage respectif. Le fichier de configuration associé à l'application à sécuriser 34 est modifié afin que l'application de création dynamique de l'environnement d'exécution 36 soit initialement exécutée en lieu et place de l'application à sécuriser, et afin de permettre également l'exécution de l'application à sécuriser 34 dans un processus existant préparé par l'application de création de l'environnement de l'exécution 36.

L'application de création dynamique de l'environnement 36 comporte des moyens

40 de chargement de la bibliothèque de sécurisation, des moyens 42 de substitution, parmi le ou les appels de fonction associés à l'application à sécuriser 34, d'au moins un appel à une fonction non sécurisée par un appel à une fonction correspondante de la bibliothèque de sécurisation 24.

En complément, l'application de création de l'environnement d'exécution 36 comporte des moyens 44 d'authentification de l'utilisateur de l'appareil informatique et de récupération d'une clé de déverrouillage de la bibliothèque de sécurisation, et des moyens 46 d'interception et de traitement d'un message lié à la mise en veille ou au réveil de l'application à sécuriser 34.

L'application de création de l'environnement de l'exécution 36 comporte des moyens 48 de lancement de l'application à sécuriser suite à la substitution de l'appel à la fonction non sécurisée par l'appel à la fonction de sécurisation.

L'application de création de l'environnement d'exécution 36 est une application dédiée à la ou aux applications à sécuriser 34, et est distincte du système d'exploitation

20.

La fonction de sécurisation du stockage de données 37A est propre à protéger des données sensibles stockées dans une zone mémoire de la mémoire 14, par exemple via un chiffrement des données stockées. La protection est une protection en confidentialité afin d'interdire l'accès de ces données à une personne non autorisée, et également une protection en intégrité afin d'empêcher une modification du contenu de ces données.

La fonction de sécurisation d'échange de données 37B est propre à protéger des échanges de données entre l'application à sécuriser 34 et l'autre appareil informatique, non représenté. La fonction de suppression d'événements de débogage 37C est propre à supprimer les événements de débogage avant qu'ils ne soient enregistrés dans la mémoire 14, les événements de débogage étant générés lors de l'exécution de marqueurs contenus dans le code de l'application à sécuriser 34. Ces événements de débogage, servant à déverminer le code de l'application avant que le code ne soit finalisé, sont parfois conservés dans le code de l'application, et sont alors susceptibles d'engendrer une faille de sécurité.

La bibliothèque de fonction(s) non sécurisée(s) 39 est connue en soi. Dans le cas du système d'exploitation Android®, la bibliothèque de fonction(s) non sécurisée(s) 39 est une bibliothèque de fonction(s) écrite(s) en langage informatique C/C++.

Dans l'exemple de réalisation de la figure 1 , les moyens d'authentification et de récupération 44 sont des moyens d'appel de l'application d'authentification de l'utilisateur et de récupération de la clé de déverrouillage encapsulée dans le troisième fichier de paquetage 23. Autrement dit, les moyens d'authentification et de récupération 44 comportent seulement un point d'entrée vers ladite application d'authentification de l'utilisateur et de récupération de la clé.

En variante, la mémoire 14 ne comporte pas le troisième fichier de paquetage, et les moyens d'authentification et de récupération 44 de chaque application de création de l'environnement d'exécution comprennent les fonctionnalités de l'application d'authentification de l'utilisateur et de récupération de la clé de déverrouillage, et sont propres à authentifier l'utilisateur de l'appareil 10, puis en cas d'authentification réussie, à récupérer la clé de déverrouillage de la bibliothèque de sécurisation 24.

Le fonctionnement de l'appareil informatique 10 selon l'invention va désormais être expliqué à l'aide des figures 3 et 4.

Avant d'être stocké dans la mémoire 14, chaque deuxième fichier de paquetage

22 est créé à l'aide d'une application de création du fichier de paquetage. L'application de création du fichier de paquetage est une application tierce extérieure à l'appareil informatique, et est propre à créer le fichier de paquetage 22 de l'application à sécuriser à partir d'un fichier de paquetage initial de l'application à sécuriser 34 comportant l'application à sécuriser 34 et un fichier initial de configuration analogue au premier fichier de configuration 33.

L'application tierce de création du fichier de paquetage crée le deuxième fichier de configuration 35 en modifiant le fichier initial de configuration, afin que l'application de création de l'environnement d'exécution 36 soit lancée à la place de l'application à sécuriser 34 lors de l'exécution du deuxième fichier de paquetage 22. L'application tierce de création construit alors le deuxième fichier de paquetage 22 en ajoutant, au deuxième fichier de configuration 35 préalablement créé, le deuxième fichier binaire correspondant à l'application à sécuriser et le troisième fichier binaire correspondant à l'application de création de l'environnement d'exécution 36. En complément, l'application tierce de création ajoute également la bibliothèque de sécurisation 24 dans le deuxième fichier de paquetage 22.

L'application tierce de création signe enfin le deuxième fichier de paquetage 22 préalablement construit.

La figure 3 illustre un procédé de création dynamique d'un environnement d'exécution de l'application à sécuriser 34 mis en œuvre par l'application de création de l'environnement d'exécution 36.

Lors de l'étape initiale 100, la bibliothèque de sécurisation 24 est chargée afin que les fonctions de sécurisation 37A, 37B, 37C contenues dans ladite bibliothèque de sécurisation 24 soient disponibles pour la machine virtuelle 28 lors du lancement ultérieur de l'application à sécuriser 34.

L'application de création de l'environnement d'exécution 36 substitue ensuite lors de l'étape 1 10 au moins un appel à une fonction non sécurisée, parmi le ou les appels de fonction associée à ladite application à sécuriser 34, par un appel à une fonction correspondante 37A, 37B, 37C de la bibliothèque de sécurisation 24 précédemment chargée.

L'étape de substitution 1 10 comporte, par exemple, la suppression d'un lien dynamique entre ladite application à sécuriser 34 et la fonction non sécurisée, et la création d'un lien dynamique de substitution entre ladite application à sécuriser 34 et la fonction correspondante 37A, 37B, 37C de la bibliothèque de sécurisation 24.

Dans le mode de réalisation décrit, tous les appels à une fonction de stockage de données parmi les appels de fonction associée à ladite application à sécuriser 34 sont substitués par des appels à la fonction de sécurisation du stockage de données 37A.

Tous les appels à une fonction d'échange de données avec un autre appareil informatique parmi les appels de fonction associée à ladite application à sécuriser 34 sont substitués par des appels à la fonction de sécurisation d'échange de données 37B.

Tous les appels à une fonction d'ajout d'événement de débogage parmi les appels de fonction associée à ladite application à sécuriser 34 sont substitués par des appels à la fonction de suppression d'événements de débogage 37C.

En complément, l'application de création de l'environnement d'exécution 36 effectue ensuite, lors de l'étape 1 15, le verrouillage de la bibliothèque de sécurisation 24 chargée lors de l'étape 100 et de la ou des substitution(s) d'appel de fonction effectuée(s) lors de l'étape 1 10 précédente.

Lorsque l'étape 1 10 de substitution est effectuée via l'introduction d'une fonction de substitution dans l'application à sécuriser elle-même ou dans la machine virtuelle 28 au moyen d'un lien dynamique, la fonction de substitution étant issue de l'application de création de l'environnement d'exécution 36, l'étape de verrouillage consiste, par exemple, à remplacer la référence de la fonction de substitution par une référence à une nouvelle fonction de substitution.

Le code correspondant au code des étapes 1 10 et 1 15, ainsi qu'à la nouvelle fonction de substitution et aux fonctions de sécurisation, est positionné dans la bibliothèque de sécurisation 24. Cette nouvelle fonction de substitution opère un filtrage sur les demandes de substitution en refusant de substituer les appels de fonction traités à l'étape 1 10, et en autorisant la substitution des autres appels de fonction.

En complément, l'application de création de l'environnement d'exécution 36 requiert ensuite, lors de l'étape 120, l'authentification de l'utilisateur de l'appareil informatique 10, puis en cas d'authentification réussie, récupère une clé de déverrouillage de la bibliothèque de sécurisation 24.

En complément, lors de l'étape 130, l'application de création de l'environnement d'exécution 36 intercepte et traite des messages échangés entre le système d'exploitation et l'application à sécuriser, lesdits messages étant traités par la bibliothèque de sécurisation 24. Les messages interceptés concernent notamment la mise en veille, le réveil de l'application à sécuriser 34, le stockage de données dans la mémoire 14 et l'échange de données avec un autre appareil informatique.

L'application de création de l'environnement de l'exécution 36 lance enfin lors de l'étape 140 l'application à sécuriser 34.

Après le lancement de l'application à sécuriser 34 et de par la ou les substitution(s) précédemment effectuée(s) d'appel de fonction, le ou les appels correspondants générés par l'application à sécuriser 34 ou à destination de l'application à sécuriser, éventuellement via le système d'exploitation 20, sont transmis en premier lieu à la bibliothèque de sécurisation 24, et si cette dernière l'autorise, au besoin à la bibliothèque non sécurisée 39.

La création de l'environnement d'exécution de l'application à sécuriser 34 est dynamique étant donné qu'elle est effectuée à chaque exécution de ladite application et suite à la réception par le système d'exploitation 20 d'un ordre d'exécution de ladite application. La figure 4 est une représentation de la création dynamique de l'environnement d'exécution de l'application à sécuriser 34 et de l'exécution de ladite application.

Suite à la réception par le système d'exploitation 20 d'un ordre d'exécution du deuxième fichier de paquetage 22, le système d'exploitation commence par lancer le composant #A de l'application de création de l'environnement d'exécution 36 à l'aide du service de gestion d'activité 38A (flèche F1 ), suivant les informations contenues dans le deuxième fichier de configuration 35 modifié, afin que l'application de création de l'environnement d'exécution 36 soit lancée à la place de l'application à sécuriser 34.

L'application de création de l'environnement d'exécution 36 charge alors la bibliothèque de sécurisation 24 (flèche F2), conformément à l'étape initiale 100 du procédé de création de l'environnement d'exécution. Les fonctions de sécurisation 37A, 37B, 37C contenues dans ladite bibliothèque de sécurisation sont ainsi disponibles pour les actions ultérieures de la machine virtuelle 28. Les liens dynamiques entre l'application à sécuriser 34 et certaines fonctions non sécurisées sont supprimés, et les liens dynamiques de substitution correspondants sont crées entre ladite application à sécuriser 34 et les fonctions correspondantes 37A, 37B, 37C de la bibliothèque de sécurisation 24, conformément à l'étape 1 10 décrite précédemment (flèche F3).

Le composant #A requiert ensuite, auprès du système d'exploitation, le lancement du composant A correspondant de l'application à sécuriser 34, (flèche F4). Cette requête est interceptée par la bibliothèque de sécurisation 24 afin de requérir l'authentification de l'utilisateur, puis en cas d'authentification réussie, de récupérer la clé de déverrouillage de la bibliothèque de sécurisation 24. En cas d'authentification réussie de l'utilisateur, la requête est transmise au service de gestion d'activité 38A du système d'exploitation (flèche F5).

Le système d'exploitation 20 lance alors le composant A de l'application à sécuriser 34 à l'aide du service de gestion d'activité 38A, conformément à l'étape 140 décrite précédemment (flèche F6). Le lancement est effectué dans le même processus que celui de l'application de création de l'environnement d'exécution 36 suivant les informations contenues dans le deuxième fichier de configuration 35.

Au cours de l'exécution de l'application à sécuriser 34, le composant A requiert, auprès du système d'exploitation 20, le lancement du composant B, et cette requête est alors dirigée par la machine virtuelle 28 vers la bibliothèque de sécurisation 24 (flèche F7) de par l'étape précédente de substitution de liens dynamiques. La requête est alors modifiée par la bibliothèque de sécurisation 24 afin que le système d'exploitation 20 lance le composant #B au lieu du composant B de l'application à sécuriser 34, puis transmise au service de gestion d'activité 38A (flèche F8). Le système d'exploitation 20 lance donc le composant #B (flèche F9).

Le composant #B requiert ensuite, auprès du système d'exploitation, le lancement du composant B correspondant de l'application à sécuriser 34, (flèche F10). Cette requête est interceptée par la bibliothèque de sécurisation 24 afin d'effectuer des traitements de sécurisation correspondants, puis transmise au service de gestion d'activité 38A du système d'exploitation (flèche F1 1 ).

Le système d'exploitation 20 lance alors le composant B de l'application à sécuriser 34 à l'aide du service de gestion d'activité 38A (flèche F12). Le composant B, souhaitant ensuite stocker un fichier de données, appelle à cet effet une fonction de stockage (flèche F13). De par l'étape précédente de substitution de liens dynamiques, la fonction de sécurisation du stockage de données 37A de la bibliothèque de sécurisation est alors automatiquement appelée, et le fichier de données est chiffré par ladite fonction sécurisée 37A avant d'être stocké dans la mémoire 14 (flèche F14).

L'homme du métier comprendra que si le composant avait souhaité échanger des données avec un autre appareil informatique et avait appelé à cet effet une fonction d'échange de données, alors la fonction de sécurisation d'échange de données 37B aurait été, de manière analogue, appelée automatiquement de par l'étape précédente de substitution de liens dynamiques.

L'homme du métier comprendra que si le composant avait souhaité ajouter des événements de débogage et avait appelé à cet effet une fonction d'ajout d'événement de débogage, alors la fonction de suppression d'événements de débogage 37C aurait été, de manière analogue, appelée automatiquement de par l'étape précédente de substitution de liens dynamiques.

Dans l'exemple de réalisation de la figure 4, les différentes requêtes décrites sont effectuées en mode superviseur et passent alors par le noyau 25. L'homme du métier comprendra que certaines requêtes sont, en variante, susceptibles d'être effectuées en mode utilisateur sans passer par le noyau 25.

L'appareil informatique 10, via la mise en œuvre du procédé de création dynamique de l'environnement d'exécution de l'application à sécuriser 34 à l'aide de l'application de création de l'environnement d'exécution 36, permet donc de sécuriser le fonctionnement de l'application 34, notamment en ce qui concerne le lancement des composants, le stockage de données ou l'échange de données avec un autre appareil informatique, ceux-ci étant automatiquement chiffrés via les fonctions adéquates de la bibliothèque de sécurisation 24. Cette sécurisation de l'application 34 nécessite seulement la réécriture du fichier de configuration de l'application (appelé fichier Manifest dans le cas d'Android®), l'ajout de l'application de création de l'environnement d'exécution 36, celle-ci étant encapsulée dans le fichier de paquetage de l'application à sécuriser 34, ou en variante dans un fichier de paquetage séparé, et l'ajout de la bibliothèque de sécurisation 24, si l'ensemble de bibliothèques 26 ne comporte pas déjà une telle bibliothèque.

L'homme du métier remarquera que cette sécurisation ne nécessite aucune modification du code source ou binaire de l'application à sécuriser 34, ni aucune modification du système d'exploitation 20.

On conçoit ainsi que le procédé de création dynamique d'un environnement d'exécution d'une application à sécuriser et l'appareil informatique 10 permettent de sécuriser l'application 34 tout en limitant les modifications du code du système d'exploitation, de l'environnement applicatif ou encore de l'application à sécuriser.

Bien que le procédé de création dynamique de l'environnement d'exécution de l'application à sécuriser et l'appareil informatique selon l'invention aient été décrits en relation avec un système d'exploitation comportant une machine virtuelle propre à exécuter l'application, l'homme du métier comprendra que l'invention s'applique également à un système d'exploitation ne comportant pas de machine virtuelle, l'application étant alors exécutée directement par le processeur de l'unité de traitement d'informations.