CA2510602A1 - Procede et dispositif de verification de l'integrite d'une application logicielle - Google Patents
Procede et dispositif de verification de l'integrite d'une application logicielle Download PDFInfo
- Publication number
- CA2510602A1 CA2510602A1 CA002510602A CA2510602A CA2510602A1 CA 2510602 A1 CA2510602 A1 CA 2510602A1 CA 002510602 A CA002510602 A CA 002510602A CA 2510602 A CA2510602 A CA 2510602A CA 2510602 A1 CA2510602 A1 CA 2510602A1
- Authority
- CA
- Canada
- Prior art keywords
- software application
- certificate
- instructions
- execution
- executable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000012795 verification Methods 0.000 title description 19
- 238000012545 processing Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 8
- 230000004048 modification Effects 0.000 claims description 5
- 238000012986 modification Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 claims description 2
- 241001269238 Data Species 0.000 claims 1
- 230000006870 function Effects 0.000 description 8
- 230000006399 behavior Effects 0.000 description 5
- 230000002441 reversible effect Effects 0.000 description 4
- 230000006378 damage Effects 0.000 description 2
- 230000004064 dysfunction Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000002243 precursor Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F7/00—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
- G07F7/08—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
- G07F7/10—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
- G07F7/1008—Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/109—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by using specially-adapted hardware at the client
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/77—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/34—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
- G06Q20/341—Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F7/00—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
- G07F7/08—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F7/00—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
- G07F7/08—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
- G07F7/0806—Details of the card
- G07F7/0813—Specific details related to card security
- G07F7/082—Features insuring the integrity of the data on or in the card
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F7/00—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
- G07F7/08—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
- G07F7/12—Card verification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2153—Using hardware token as a secondary aspect
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0823—Network architectures or network communication protocols for network security for authentication of entities using certificates
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Networks & Wireless Communication (AREA)
- Business, Economics & Management (AREA)
- Mathematical Physics (AREA)
- Radar, Positioning & Navigation (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Remote Sensing (AREA)
- Accounting & Taxation (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Computing Systems (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
Le procédé de vérification de l'intégrité d'une application logicielle exécutable dans un terminal hôte, comprend les étapes suivantes i) détermine r au moins une suite d'instructions de contrôle formant certificat exécutable (4,15) pour l'application logicielle, exécutable par ledit terminal hôte au cours de l'exécution de l'application logicielle à vérifier (1,11), ii) sur le terminal hôte, exécuter l'application logicielle à vérifier (1,11), recevoir le certificat exécutable (4,15) ainsi déterminé lors de l'étape i) et exécut er la suite d'instructions de contrôle dudit certificat exécutable dans le contexte mémoire dudit terminal hôte, iii) comparer le résultat ainsi obtenu par l'exécution des instructions de contrôle avec le résultat attendu d'une application logicielle authentique et, iv) en cas de comparaison positive, continuer le cours de l'exécution de l'application logicielle à vérifier (1,11).
Description
PROCÉDÉ ET DISPOSITIF DE VÉRIFICATION DE L'INTÉGRITÉ
D'UNE APPLICATION LOGICIELLE
La présente invention concerne la vérification de l'authenticité d'une application logicielle exécutée sur un terminal hôte sans nëcessairement faire appel â des clés de chiffrement /
déchiffrement.
Elle trouve une application générale dans l'authentification d'applications logicielles et plus particulièrement les applications logicielles destinées à être exécutées sur un dispositif de traitement de données, notamment un terminal hôte tel qu'un décodeur de télévision numérique, un équipement de visualisation de contenus multimédia, un micro-ordinateur, une carte à puce, un assistant personnel, une console de jeux, un téléphone mobile ou analogue.
On connaît déjà des moyens d'authentification permettant de vérifier l'authenticité ou l'intégrité
d'applications logicielles embarquées et exécutées sur des terminaux hôtes.
Généralement, de tels moyens d'authentification mettent en oeuvre des fonctions de hachage et/ou des algorithmes cryptographiques qui utilisent des données secrètes telles que des clés privées ou secrètes de c~~.ement/déchiffrement cachées dans le logiciel de vérification du terminal hôte. Le plus souvent, ces données secrètes sont protégées par des techniques d'offuscation destinées à rendre plus difficile la rétro-conception.
En pratique, de tels moyens d'authentification embarqués dans les terminaux hôtes sont tout aussi vulnérables que les applications logicielles dont ils sont sensés contrôler l'authenticité. En effet, un pirate averti peut opérer des modifications malveillantes sur ces moyens d'authentification, afin, par exemple, de récupérer les données secrètes, leurrer le système de vérification ou lui faire produire, malgré lui, les résultats attendus.
La présente invention remédie à cet inconvénient. Elle porte sur un procédé de vérification de l'intëgrité d'une application logicielle exécutable dans un terminal hôte.
Selon une définition générale de l'invention, le procédé comprend les étapes suivantes i) déterminer au moins une suite d'instructions de contrôle formant certificat exécutable pour ladite application logicielle, ü) sur le terminal hôte, exécuter l'application logicielle à vérifier, recevoir le certificat exécutable ainsi déterminé lors de l'étape i); et exécuter la suite d'instructions de contrôle dudit certificat
D'UNE APPLICATION LOGICIELLE
La présente invention concerne la vérification de l'authenticité d'une application logicielle exécutée sur un terminal hôte sans nëcessairement faire appel â des clés de chiffrement /
déchiffrement.
Elle trouve une application générale dans l'authentification d'applications logicielles et plus particulièrement les applications logicielles destinées à être exécutées sur un dispositif de traitement de données, notamment un terminal hôte tel qu'un décodeur de télévision numérique, un équipement de visualisation de contenus multimédia, un micro-ordinateur, une carte à puce, un assistant personnel, une console de jeux, un téléphone mobile ou analogue.
On connaît déjà des moyens d'authentification permettant de vérifier l'authenticité ou l'intégrité
d'applications logicielles embarquées et exécutées sur des terminaux hôtes.
Généralement, de tels moyens d'authentification mettent en oeuvre des fonctions de hachage et/ou des algorithmes cryptographiques qui utilisent des données secrètes telles que des clés privées ou secrètes de c~~.ement/déchiffrement cachées dans le logiciel de vérification du terminal hôte. Le plus souvent, ces données secrètes sont protégées par des techniques d'offuscation destinées à rendre plus difficile la rétro-conception.
En pratique, de tels moyens d'authentification embarqués dans les terminaux hôtes sont tout aussi vulnérables que les applications logicielles dont ils sont sensés contrôler l'authenticité. En effet, un pirate averti peut opérer des modifications malveillantes sur ces moyens d'authentification, afin, par exemple, de récupérer les données secrètes, leurrer le système de vérification ou lui faire produire, malgré lui, les résultats attendus.
La présente invention remédie à cet inconvénient. Elle porte sur un procédé de vérification de l'intëgrité d'une application logicielle exécutable dans un terminal hôte.
Selon une définition générale de l'invention, le procédé comprend les étapes suivantes i) déterminer au moins une suite d'instructions de contrôle formant certificat exécutable pour ladite application logicielle, ü) sur le terminal hôte, exécuter l'application logicielle à vérifier, recevoir le certificat exécutable ainsi déterminé lors de l'étape i); et exécuter la suite d'instructions de contrôle dudit certificat
2 exécutable dans le contexte mémoire dudit terminal hôte, iii) comparer le résultat ainsi obtenu par (exécution des instructions de contrôle avec le résultat attendu d'une application authentique et, iv) en cas de comparaison positive, continuer (exécution de (application logicielle à vérifier.
On entend ici par le terme "comparaison positive" le fait que toute acüon, opération, ou modification sur les données utilisées par (application logicielle à vérifier ou toute action, opération ou modification sur le déroulement de (exécution de (application logicielle à vérifier, produise un comportement de (application logicielle à vérifier identique à
celui qui est attendu pue. le déroulement de l'exécution de (application authentique.
En renouvelant, à une cadence choisie, la suite d'instructions de contrôle du certificat exécutable, il est possible de mettre en oeuvre un nombre important de moyens d'authentification d'une application et il devient quasi impossible de mettre au point des applications logicielles pirates qui déjouent systématiquement le processus de vérification.
Ainsi, le procédé selon l'invention permet de vérifier (intégrité d'une application logicielle exécutée sur un terminal hôte avec un degré de sécurisation relativement satisfaïsant vis-à-vïs des pirates adeptes de la rétro-conception et cela sans faire appel à des clés de chiffrement /
déchiffrement ou à des composants matériels coûteux.
Selon une réalisation, la suite d'instructions de contrôle est choisie de telle sorte que (état du contexte mémoire d'une application logicielle authentique après (exécution de la suite d'instructions de contrôle est identique (sans modification) à (état du contexte mémoire de l'application logicielle avant (exécution de la suite d'instructions de contrôle. Ainsi la mise en oeuvre du procédé selon l'invention n'apporte pas de dysfonctionnement au niveau du déroulement de (application logicielle à vérifier si cette dernière est authentique.
Selon une réalisation, dans laquelle le terminal hôte est équipé d'un processeur, la suite , destructions de contrôle formant certificat exécutable est codée en langage interprétable par ledit processeur du terminal hôte.
En variante, dans laquelle le terminal hôte est équipé d'une machine virtuelle apte à émuler un processeur, la suite d'instructions de contrôle formant certificat exécutable est codée en langage
On entend ici par le terme "comparaison positive" le fait que toute acüon, opération, ou modification sur les données utilisées par (application logicielle à vérifier ou toute action, opération ou modification sur le déroulement de (exécution de (application logicielle à vérifier, produise un comportement de (application logicielle à vérifier identique à
celui qui est attendu pue. le déroulement de l'exécution de (application authentique.
En renouvelant, à une cadence choisie, la suite d'instructions de contrôle du certificat exécutable, il est possible de mettre en oeuvre un nombre important de moyens d'authentification d'une application et il devient quasi impossible de mettre au point des applications logicielles pirates qui déjouent systématiquement le processus de vérification.
Ainsi, le procédé selon l'invention permet de vérifier (intégrité d'une application logicielle exécutée sur un terminal hôte avec un degré de sécurisation relativement satisfaïsant vis-à-vïs des pirates adeptes de la rétro-conception et cela sans faire appel à des clés de chiffrement /
déchiffrement ou à des composants matériels coûteux.
Selon une réalisation, la suite d'instructions de contrôle est choisie de telle sorte que (état du contexte mémoire d'une application logicielle authentique après (exécution de la suite d'instructions de contrôle est identique (sans modification) à (état du contexte mémoire de l'application logicielle avant (exécution de la suite d'instructions de contrôle. Ainsi la mise en oeuvre du procédé selon l'invention n'apporte pas de dysfonctionnement au niveau du déroulement de (application logicielle à vérifier si cette dernière est authentique.
Selon une réalisation, dans laquelle le terminal hôte est équipé d'un processeur, la suite , destructions de contrôle formant certificat exécutable est codée en langage interprétable par ledit processeur du terminal hôte.
En variante, dans laquelle le terminal hôte est équipé d'une machine virtuelle apte à émuler un processeur, la suite d'instructions de contrôle formant certificat exécutable est codée en langage
3 5 ~terprétable par la machine virtuelle du terminal hôte.
En pratique, le contexte mémoire d'exécution d'une application logicielle est constitué, entre autre, des adresses en mémoire des symboles (fonctions, variables,...), des instructions exécutables, des données, et de (état de la pile d'exécution de l'application.
Ces valeurs sont uniques pour chaque application informatique en cours d'exécution et pour chaque type de processeur ou de machine virtuelle.
Dans (étape i) il est prévu d'établir, dans un environnement sécurisé, une carte du contexte mémoire de (application logicielle authentique en cours d'exécuüon, de déterminer, en utilisant les valeurs de cette carte mémoire, une suite d'instructions de contrôle formant certificat exécutable.
Dans (étape ü), le dispositif d'acheminement du certificat exécutable â
destination du tern~inal hôte est logé dans un circuit électronique de traitement physiquement séparé
du terminal hôte.
Toujours dans (étape ü) la récupération des valeurs du contexte mémoire d'exécution se fait par lecture des valeurs aux adresses des différentes zones de mémoire du terminal hôte. Dans ces zones sont logées les instructions exécutables intrinsèques à (application, les valeurs des variables et les valeurs des références aux fonctions de (application à
contrôler.
A l'étape iii), le résultat obtenu par (exécution de ladite suite d'instructions de contrôle est une signature de (application à vérifier. Cette signature est calculée par ladite suïte d'instructions de contrôle qui utilise les valeurs du contexte mémoire de (application logicielle à vérifier en cours d'exécution. De préférence, (application logicielle comprend des instructions permettant d'insérer et d'exécuter dans son contexte mémoire ladite suite d'instructions en substituant au moins une adresse d'exécution d'une instruction de ladite application logicielle par au moins l'adresse d'une instruction de la suite d'instructions de contrôle formant certificat exécutable.
Selon une autre réalisation, la suite d'instructions de contrôle formant certificat exécutable est transportée dans ün flux de données nécessaire à (exécution de l'application logicielle à vérifier.
Pour forcer (exécution de la suite d'instructions dudit certificat exécutable, lesdites données utiles sont préalablement protégées par une méthode de chiffrement. Le déchiffrement de ces données est correctement effectué par ladite suite d'instructions de contrôle du certificat exécutable si (application à vérifier est une application authentique. Si le procédé de chiffrement utilise une clé, cette dernière est produite par les instructions de contrôle avec des valeurs du contexte mémoire de (application logicielle à vérifier, valeurs formant signature de (application logicielle à vérifier. Les opérations pôur obtenir la clé de chiffrement sont codées dans la suite 3 5 destructions du certificat exécutable.
En variante, la méthode de protection est sans clé, la suite d'opérations pour obtenir (accessibilité
En pratique, le contexte mémoire d'exécution d'une application logicielle est constitué, entre autre, des adresses en mémoire des symboles (fonctions, variables,...), des instructions exécutables, des données, et de (état de la pile d'exécution de l'application.
Ces valeurs sont uniques pour chaque application informatique en cours d'exécution et pour chaque type de processeur ou de machine virtuelle.
Dans (étape i) il est prévu d'établir, dans un environnement sécurisé, une carte du contexte mémoire de (application logicielle authentique en cours d'exécuüon, de déterminer, en utilisant les valeurs de cette carte mémoire, une suite d'instructions de contrôle formant certificat exécutable.
Dans (étape ü), le dispositif d'acheminement du certificat exécutable â
destination du tern~inal hôte est logé dans un circuit électronique de traitement physiquement séparé
du terminal hôte.
Toujours dans (étape ü) la récupération des valeurs du contexte mémoire d'exécution se fait par lecture des valeurs aux adresses des différentes zones de mémoire du terminal hôte. Dans ces zones sont logées les instructions exécutables intrinsèques à (application, les valeurs des variables et les valeurs des références aux fonctions de (application à
contrôler.
A l'étape iii), le résultat obtenu par (exécution de ladite suite d'instructions de contrôle est une signature de (application à vérifier. Cette signature est calculée par ladite suïte d'instructions de contrôle qui utilise les valeurs du contexte mémoire de (application logicielle à vérifier en cours d'exécution. De préférence, (application logicielle comprend des instructions permettant d'insérer et d'exécuter dans son contexte mémoire ladite suite d'instructions en substituant au moins une adresse d'exécution d'une instruction de ladite application logicielle par au moins l'adresse d'une instruction de la suite d'instructions de contrôle formant certificat exécutable.
Selon une autre réalisation, la suite d'instructions de contrôle formant certificat exécutable est transportée dans ün flux de données nécessaire à (exécution de l'application logicielle à vérifier.
Pour forcer (exécution de la suite d'instructions dudit certificat exécutable, lesdites données utiles sont préalablement protégées par une méthode de chiffrement. Le déchiffrement de ces données est correctement effectué par ladite suite d'instructions de contrôle du certificat exécutable si (application à vérifier est une application authentique. Si le procédé de chiffrement utilise une clé, cette dernière est produite par les instructions de contrôle avec des valeurs du contexte mémoire de (application logicielle à vérifier, valeurs formant signature de (application logicielle à vérifier. Les opérations pôur obtenir la clé de chiffrement sont codées dans la suite 3 5 destructions du certificat exécutable.
En variante, la méthode de protection est sans clé, la suite d'opérations pour obtenir (accessibilité
4 des données est dans la suite d'instructions de contrôle du certificat exécutable. En, pratique, la protection des données nécessaires au~ fonctionnement de (application logicielle à vérifier est entreprise dans un environnement séçurisé avant que ces données ne soient transmises. La méthode de protection,. avec ou sans clé, doit être réversible.
Selon encore une autre réalisation, dans laquelle (exécution de (application logicielle fait appel à
une carte à puce ou à tout autre circuit sécurisé pour fonctionner, la suite d'instructions de contrôle est logée dans la carte à puce (ou le circuit sécurisé) et envoyée à
(application logicielle à vérifier, (application logicielle étant apte à récupérer et exécuter ladite suite d'instructions de contrôle ainsi envoyée avec les données dont elle a besoin pour fonctionner.
En pratique, (accès à des données transmises par la carte à puce (ou le circuit sécurisé) doit étre nécessaire à
(application logicielle à vérifier pour que celle-ci se comporte de façon identique à une application authentique.
Selon une autre réalisation, à la suite d'une vérification négative de (intégrité de (application logicielle à vérifier, le certificat exécutable exécute des instructions faisant appel à des fonctions appartenant à une autre application.
La présente invention a également pour objet un dispositif de vérification de l'intégrité d'une application logicielle pour la mise en oeuvre du procédé selon (invention.
Selon une caractéristique impbrtante de (invention, le dispositif de vérification comprend des moyens de traitement aptes à déterminer au moins une suite d'instructions de contrôle formant certificat exécutable pour (application logicielle, exécutable par ledit terminal hôte au cours de (exécution de (application logicielle à'vérifier, et des moyens de comparaison pour comparer le rësultat de (exécution du certificat exécutable sur le comportement de (application logicielle à
vérifier, avec le résultat attendu du comportement d'une application authentique, et des moyens de modifier (exécution de (application logicielle à vérifier en fonctïon ~ du résultat de la comparaison.
Selon une réalisation, le dispositif de vérification comprend une carte à puce ou tout autre circuit sécurisé apte à contenir d'une part, la suite d'instructions de contrôle formant certificat exécutable et d'autre part, une application réalisant le test de vérification.
Le terminal hôte est équipé d'un lecteur de carte à puce (ou d'un moyen de communication avec le circuit sécurisé) et les moyens d'exécution de (application logicielle à vérifier sont agencés pour charger et exécuter dans son contexte mémoire la suite d'instructions formant certificat.
L'application de vérification dans la carte à puce ou le circuit sécurisé est agencée de .façon à modifier le déroulement normal 'S
de (exécution de (application logicielle à vérifier si le résultat de (.exécution de la suite d'instructions de contrôle n'est pas transmis, dans des conditions définies préalablement, à
(application de vérification dans la carte à puce ou du circuit, sécurisé, ou sï le résultat de la vérification s'avère négatif.
Selon une variante, le dispositif est apte à déterminer unè pliuralité de certificats exécutables différents les uns des autres selon use cadence et/ou condition choisie. En pratique, le terminal hôte appartient au groupe formé par les dispositifs de traitement des données, les décodeurs de télévision numérique, les équipements de visualisation de contenus multimédias, les micro-ordinateurs, les cartes à puces, les assistants personnels, les consoles de jeux, les téléphones mobiles ou analogues.
D'autres caractéristiques et avantages de (invention apparaîtront à la lumière de la description détaillée ci-après et des dessins dans lesquels:
_ la figure 1 est une vue schématique illustrant la vérification d'une application logicielle dont les données utiles contiennent 1e certificat exécutable, selon (invention, et - la figure 2 est une vue schématique illustrant la vérification d'uns application logïcielle utilisant une carte à puce selon (invention.
En pratique, les termes "intégré" et "authentique" sont ici utilisés indifFëremment pour une application logicielle.
On entend ici par "certificat exécutable" une suite d'instructions de contrôle exécutables dans le contexte mémoire d'une application logicielle en cours d'exécution et dont (exécution produit des effets tels que (exécution d'une (application logicielle à vérifier, si cette dernière est intègre, a un comportement identique à celui qui est attendu. . ' En référence à la figure 1, (application logicielle à vérifier 1 est embarquée dans un terminal hôte (non représenté). Par exemple, le terniinal hôte appartient au groupe formé
par les dispositifs de ~.~t~ent des données, les décodeurs de télévision numériqûe, Ies équipements de visualisation de contenus multimédias, les micro-ordinateurs, les cartes à puces, les assistants personnels, les consoles de jeux, les téléphones mobiles ou analogues.
En pratique, (application logicielle à vérifier 1 traite 3 des données préalablement protégées 2, 3 5 c'est à-dire non traitables par (application à vérifier tant que des instructions de contrôle du certificat exécutable que fon décrira plus en détail ci-après n'ont pas authentifiées (application à
vérifier. Une méthode pour rendre non accessibles ces données consiste à les chiffrer. Toute autre méthode de protection réversible est envisageable.
Ces données protégées 2 contiennent 7 un certificat exécutable 4 renfermant une suite d'instructions de contrôle non protégées, qui sont exécutées 5 par (application à vérifier 1. En pratique, les instructions de contrôle du certificat exécutable 4 sont codées dans le langage du processeur du terminal hôte, encore âppelé langage machine. En variante, les instructions du certificat exécutable 4 peuvent aussi être codées dans lé langage d'une machine virtuelle, émulant le comportement d'un processeur.
Ces instructions de contrôle du certificat exécutable 4 en langage machine sont des structures binaires préalablement déterminées avant que celles-ci ne soïent transmises à
l'application logicielle à vérifier.
Les instructions de contrôle du certificat exécutable 4 sont choisies de façon à ce que seule une application logicielle authentique puisse les exécuter pour produire un résultat identique à celui qui est attendu. Comme on le verra plus en détail ci-après, l'absence de dysfonctionnement de l'application logicielle authentique est obtenue en choisissant une suite d'instructions de contrôle de telle sorte que l'état du contexte mémoire d'une l'application logicielle à
vérifier 1 après l'exécution de la suite d'instructions de contrôle soit identique à l'état du contexte mémoire de l'application logicielle avant l'exécution de la sûite d'instructions de contrôle.
Le certificat exécutable 4 peut aussi être inséré dans le flôt de,données que l'application 1 est sensée traiter. L'insertion de certificats exécutables dans un,flot de données peut correspondre au cas où il est nécessaire d'authentifier une application de traitement de flux multimédia protégé, accessible à l'utilisateur à la condition que off. dernier se soit acquitté des obligations telles que définies par le vendeur des contenus. La source du flux multimédia peut être un point d'émission d'un réseau de diffusion, la mémoire persïstante du terminal hôte, ou encore une unité de mémoire extractible du terminal hôte.
Les instructions de contrôle du certificat exécutable 4 sont choisies pour calculer 6 une signature 8 de (application à contrôler 1, en utilisant 9 le contexte mémoire de (application à
contrôler 1, en cours d'exécution. L'utilisation du contexte mémoire par les instructions de . contrôle est réalisé en allant chercher les valeurs de certains symboles (variâbles~ fonctions, instructions exécutables) de (application à vérifier en cours d'exécutïon. La rëcupération de ces valeurs dépend entre autre du modèle mémoire implémenté dans le prôcesseur du terniinal hôte.
En pratique, la suite d'instructions de contrôle du certificat exécutable 4 produit 6 une si~ature 8 qui dépend 9 du contexte mémoire de fapplicatiori logicielle à vérifier 1 et utilise cette signature pour lever la protection 10 des données protégées 2. Si (application logicielle est authentique, les données 2 sont rendues accessibles et léur traitement 3 par (application logicielle à vérifier 1 produira un résultat identique à celui d'une application authentique.
Dans le cas où le certificat exécutable 4 contenant les instructions de contrôle est inséré dans un flot de données, il est nécessaire de forcer (application à~ exécuter ces instructions. Les instructions de contrôle sont alors programmées pour dêchiffrer une partie du flot de données que (application à vérifier doit traiter. Cela nécessite un traitement préalable du flot de données par chiffrement avant que ce flot ne soit accédé, pour traitement, par (application à vérifier.
L'algorithme de déchiffrement peut être implémenté dans les instructions de contrôle ou être disponible sous forme de fonction implémentée dans le terminal, et appelée par les instructions de contrôle. Les clés, si utilisées par (algorithme de déchiffrement, sont calculées par les instructions de contrôle en utilisant des valeurs du contexte mémoire préalablement définies de (application en cours d'exécution.
En référence à la figure 2, (application logicielle à vérifier 11 interagit 12 avec un circuit sécurisé
13, de type carte à puce ou analogue.
La carte à puce I3 transmet 19 un certificat exécutable 15 contenant des instructions de contrôle qui sont chaxgées et exécutées 16 par (application logicielle à vérifier II.
Ainsi, pour une application 11 nécessitant 12 une carte à puce 13 pour fonctionner, les instructions de contrôle 15 sont stockées dans la carte à puce 13 et envoyées à (application à
contrôler 11 par le biais du lien interactif 12.
L'application à contrôler 11 utilise 21 pour fonctionner des données 20' qu'elle récupère par interaction 12 avec la carte à pucé 13. Ces données 20 contiennent 22 le certificat exécutable 15.
Les instructions de contrôle du certificat exécutable 15, lorsqu'elles sont stockées sur la carte à
puce 13, sont chargéës par (application à contrôler 11 de façon à ce que celle-ci les exécute 16 selon le principe exposé en référence à la figure 1.
Une signature 18 de (application logicielle à vérifier est produite 17 par les instructions de contrôle du certificat exécutable en utilisant 14 le contexte mémoire de (application logicielle à
contrôler.
Les instructions de contrôle du certificat exécutable interagissent 19 avec le circuit sécurisé 13 de façon à ce que la signature 18 de l'application contrôlée 11 soit transmise à une autre ô
application de vérification 24 hébergée sur la carte à puce 13, considérée ici comme un environnement sécurisé. L'application de vérification 24 dans la carte à puce maintient pour chaque type de processeur et pour chaque application à contrôler, une table de correspondance entre les instructions de contrôle exécutables 15 et les résultats attendus.
Cette table de correspondance permet de vérifier 23 la validité de la signature calculée par le certificat exécutable 15. Si le résultat de la vérification est négatif, (application de vérification hébergée dans la carte à puce interagit 12 avec (application ~à contrôler afin de modifier le fonctionnement de cette dernière. Si la vérification est positive, la carte à
puce 13 produit les données 20 dont (application logicielle 11 a besoin pour fonctionner 21.
Dans un mode de réalisation, les. certificats hébergés dans la carte à puce ou le circuit sécurisé
changent selon une cadence ou condition choisie.
Selon encore une autre réalisation, dans laquelle (exécution de (application logicielle fait appel à
une carte à puce ou à tout autre circuit sécurisé pour fonctionner, la suite d'instructions de contrôle est logée dans la carte à puce (ou le circuit sécurisé) et envoyée à
(application logicielle à vérifier, (application logicielle étant apte à récupérer et exécuter ladite suite d'instructions de contrôle ainsi envoyée avec les données dont elle a besoin pour fonctionner.
En pratique, (accès à des données transmises par la carte à puce (ou le circuit sécurisé) doit étre nécessaire à
(application logicielle à vérifier pour que celle-ci se comporte de façon identique à une application authentique.
Selon une autre réalisation, à la suite d'une vérification négative de (intégrité de (application logicielle à vérifier, le certificat exécutable exécute des instructions faisant appel à des fonctions appartenant à une autre application.
La présente invention a également pour objet un dispositif de vérification de l'intégrité d'une application logicielle pour la mise en oeuvre du procédé selon (invention.
Selon une caractéristique impbrtante de (invention, le dispositif de vérification comprend des moyens de traitement aptes à déterminer au moins une suite d'instructions de contrôle formant certificat exécutable pour (application logicielle, exécutable par ledit terminal hôte au cours de (exécution de (application logicielle à'vérifier, et des moyens de comparaison pour comparer le rësultat de (exécution du certificat exécutable sur le comportement de (application logicielle à
vérifier, avec le résultat attendu du comportement d'une application authentique, et des moyens de modifier (exécution de (application logicielle à vérifier en fonctïon ~ du résultat de la comparaison.
Selon une réalisation, le dispositif de vérification comprend une carte à puce ou tout autre circuit sécurisé apte à contenir d'une part, la suite d'instructions de contrôle formant certificat exécutable et d'autre part, une application réalisant le test de vérification.
Le terminal hôte est équipé d'un lecteur de carte à puce (ou d'un moyen de communication avec le circuit sécurisé) et les moyens d'exécution de (application logicielle à vérifier sont agencés pour charger et exécuter dans son contexte mémoire la suite d'instructions formant certificat.
L'application de vérification dans la carte à puce ou le circuit sécurisé est agencée de .façon à modifier le déroulement normal 'S
de (exécution de (application logicielle à vérifier si le résultat de (.exécution de la suite d'instructions de contrôle n'est pas transmis, dans des conditions définies préalablement, à
(application de vérification dans la carte à puce ou du circuit, sécurisé, ou sï le résultat de la vérification s'avère négatif.
Selon une variante, le dispositif est apte à déterminer unè pliuralité de certificats exécutables différents les uns des autres selon use cadence et/ou condition choisie. En pratique, le terminal hôte appartient au groupe formé par les dispositifs de traitement des données, les décodeurs de télévision numérique, les équipements de visualisation de contenus multimédias, les micro-ordinateurs, les cartes à puces, les assistants personnels, les consoles de jeux, les téléphones mobiles ou analogues.
D'autres caractéristiques et avantages de (invention apparaîtront à la lumière de la description détaillée ci-après et des dessins dans lesquels:
_ la figure 1 est une vue schématique illustrant la vérification d'une application logicielle dont les données utiles contiennent 1e certificat exécutable, selon (invention, et - la figure 2 est une vue schématique illustrant la vérification d'uns application logïcielle utilisant une carte à puce selon (invention.
En pratique, les termes "intégré" et "authentique" sont ici utilisés indifFëremment pour une application logicielle.
On entend ici par "certificat exécutable" une suite d'instructions de contrôle exécutables dans le contexte mémoire d'une application logicielle en cours d'exécution et dont (exécution produit des effets tels que (exécution d'une (application logicielle à vérifier, si cette dernière est intègre, a un comportement identique à celui qui est attendu. . ' En référence à la figure 1, (application logicielle à vérifier 1 est embarquée dans un terminal hôte (non représenté). Par exemple, le terniinal hôte appartient au groupe formé
par les dispositifs de ~.~t~ent des données, les décodeurs de télévision numériqûe, Ies équipements de visualisation de contenus multimédias, les micro-ordinateurs, les cartes à puces, les assistants personnels, les consoles de jeux, les téléphones mobiles ou analogues.
En pratique, (application logicielle à vérifier 1 traite 3 des données préalablement protégées 2, 3 5 c'est à-dire non traitables par (application à vérifier tant que des instructions de contrôle du certificat exécutable que fon décrira plus en détail ci-après n'ont pas authentifiées (application à
vérifier. Une méthode pour rendre non accessibles ces données consiste à les chiffrer. Toute autre méthode de protection réversible est envisageable.
Ces données protégées 2 contiennent 7 un certificat exécutable 4 renfermant une suite d'instructions de contrôle non protégées, qui sont exécutées 5 par (application à vérifier 1. En pratique, les instructions de contrôle du certificat exécutable 4 sont codées dans le langage du processeur du terminal hôte, encore âppelé langage machine. En variante, les instructions du certificat exécutable 4 peuvent aussi être codées dans lé langage d'une machine virtuelle, émulant le comportement d'un processeur.
Ces instructions de contrôle du certificat exécutable 4 en langage machine sont des structures binaires préalablement déterminées avant que celles-ci ne soïent transmises à
l'application logicielle à vérifier.
Les instructions de contrôle du certificat exécutable 4 sont choisies de façon à ce que seule une application logicielle authentique puisse les exécuter pour produire un résultat identique à celui qui est attendu. Comme on le verra plus en détail ci-après, l'absence de dysfonctionnement de l'application logicielle authentique est obtenue en choisissant une suite d'instructions de contrôle de telle sorte que l'état du contexte mémoire d'une l'application logicielle à
vérifier 1 après l'exécution de la suite d'instructions de contrôle soit identique à l'état du contexte mémoire de l'application logicielle avant l'exécution de la sûite d'instructions de contrôle.
Le certificat exécutable 4 peut aussi être inséré dans le flôt de,données que l'application 1 est sensée traiter. L'insertion de certificats exécutables dans un,flot de données peut correspondre au cas où il est nécessaire d'authentifier une application de traitement de flux multimédia protégé, accessible à l'utilisateur à la condition que off. dernier se soit acquitté des obligations telles que définies par le vendeur des contenus. La source du flux multimédia peut être un point d'émission d'un réseau de diffusion, la mémoire persïstante du terminal hôte, ou encore une unité de mémoire extractible du terminal hôte.
Les instructions de contrôle du certificat exécutable 4 sont choisies pour calculer 6 une signature 8 de (application à contrôler 1, en utilisant 9 le contexte mémoire de (application à
contrôler 1, en cours d'exécution. L'utilisation du contexte mémoire par les instructions de . contrôle est réalisé en allant chercher les valeurs de certains symboles (variâbles~ fonctions, instructions exécutables) de (application à vérifier en cours d'exécutïon. La rëcupération de ces valeurs dépend entre autre du modèle mémoire implémenté dans le prôcesseur du terniinal hôte.
En pratique, la suite d'instructions de contrôle du certificat exécutable 4 produit 6 une si~ature 8 qui dépend 9 du contexte mémoire de fapplicatiori logicielle à vérifier 1 et utilise cette signature pour lever la protection 10 des données protégées 2. Si (application logicielle est authentique, les données 2 sont rendues accessibles et léur traitement 3 par (application logicielle à vérifier 1 produira un résultat identique à celui d'une application authentique.
Dans le cas où le certificat exécutable 4 contenant les instructions de contrôle est inséré dans un flot de données, il est nécessaire de forcer (application à~ exécuter ces instructions. Les instructions de contrôle sont alors programmées pour dêchiffrer une partie du flot de données que (application à vérifier doit traiter. Cela nécessite un traitement préalable du flot de données par chiffrement avant que ce flot ne soit accédé, pour traitement, par (application à vérifier.
L'algorithme de déchiffrement peut être implémenté dans les instructions de contrôle ou être disponible sous forme de fonction implémentée dans le terminal, et appelée par les instructions de contrôle. Les clés, si utilisées par (algorithme de déchiffrement, sont calculées par les instructions de contrôle en utilisant des valeurs du contexte mémoire préalablement définies de (application en cours d'exécution.
En référence à la figure 2, (application logicielle à vérifier 11 interagit 12 avec un circuit sécurisé
13, de type carte à puce ou analogue.
La carte à puce I3 transmet 19 un certificat exécutable 15 contenant des instructions de contrôle qui sont chaxgées et exécutées 16 par (application logicielle à vérifier II.
Ainsi, pour une application 11 nécessitant 12 une carte à puce 13 pour fonctionner, les instructions de contrôle 15 sont stockées dans la carte à puce 13 et envoyées à (application à
contrôler 11 par le biais du lien interactif 12.
L'application à contrôler 11 utilise 21 pour fonctionner des données 20' qu'elle récupère par interaction 12 avec la carte à pucé 13. Ces données 20 contiennent 22 le certificat exécutable 15.
Les instructions de contrôle du certificat exécutable 15, lorsqu'elles sont stockées sur la carte à
puce 13, sont chargéës par (application à contrôler 11 de façon à ce que celle-ci les exécute 16 selon le principe exposé en référence à la figure 1.
Une signature 18 de (application logicielle à vérifier est produite 17 par les instructions de contrôle du certificat exécutable en utilisant 14 le contexte mémoire de (application logicielle à
contrôler.
Les instructions de contrôle du certificat exécutable interagissent 19 avec le circuit sécurisé 13 de façon à ce que la signature 18 de l'application contrôlée 11 soit transmise à une autre ô
application de vérification 24 hébergée sur la carte à puce 13, considérée ici comme un environnement sécurisé. L'application de vérification 24 dans la carte à puce maintient pour chaque type de processeur et pour chaque application à contrôler, une table de correspondance entre les instructions de contrôle exécutables 15 et les résultats attendus.
Cette table de correspondance permet de vérifier 23 la validité de la signature calculée par le certificat exécutable 15. Si le résultat de la vérification est négatif, (application de vérification hébergée dans la carte à puce interagit 12 avec (application ~à contrôler afin de modifier le fonctionnement de cette dernière. Si la vérification est positive, la carte à
puce 13 produit les données 20 dont (application logicielle 11 a besoin pour fonctionner 21.
Dans un mode de réalisation, les. certificats hébergés dans la carte à puce ou le circuit sécurisé
changent selon une cadence ou condition choisie.
Claims (23)
1. Procédé de vérification de l'intégrité d'une application logicielle exécutable dans un terminal hôte, caractérisé en ce qu'il comprend les étapes suivantes :
i) déterminer au moins une suite d'instructions de contrôle formant certificat exécutable (4,15) pour l'application logicielle, exécutable par ledit terminal hôte au cours de l'exécution de l'application logicielle à vérifier (1,11), ii) sur le terminal hôte, exécuter l'application logicielle à vérifier (1,11), recevoir le certificat exécutable (4,15) ainsi déterminé lors de l'étape i), et exécuter la suite d'instructions de contrôle dudit certificat exécutable dans le contexte mémoire dudit terminal hôte, iii) comparer le résultat ainsi obtenu par l'exécution des instructions de contrôle avec le résultat attendu d'une application logicielle authentique et, iv) en cas de comparaison positive, continuer le cours de l'exécution de l'application logicielle à vérifier (1,11).
i) déterminer au moins une suite d'instructions de contrôle formant certificat exécutable (4,15) pour l'application logicielle, exécutable par ledit terminal hôte au cours de l'exécution de l'application logicielle à vérifier (1,11), ii) sur le terminal hôte, exécuter l'application logicielle à vérifier (1,11), recevoir le certificat exécutable (4,15) ainsi déterminé lors de l'étape i), et exécuter la suite d'instructions de contrôle dudit certificat exécutable dans le contexte mémoire dudit terminal hôte, iii) comparer le résultat ainsi obtenu par l'exécution des instructions de contrôle avec le résultat attendu d'une application logicielle authentique et, iv) en cas de comparaison positive, continuer le cours de l'exécution de l'application logicielle à vérifier (1,11).
2. Procédé selon la revendication 1, dans lequel le terminal hôte est équipé
d'un processeur caractérisé eu ce que la suite d'instructions de contrôle formant certificat (4, 15) est codée en langage interprétable par ledit processeur du terminal hôte.
d'un processeur caractérisé eu ce que la suite d'instructions de contrôle formant certificat (4, 15) est codée en langage interprétable par ledit processeur du terminal hôte.
3. Procédé selon la revendication 1, dans lequel le terminal hôte est équipé
d'une machine virtuelle apte à émuler un processeur, caractérisé en ce que la suite d'instructions de contrôle formant certificat (4, 15) est codée en langage interprétable par 1a machine virtuelle du terminal hôte.
d'une machine virtuelle apte à émuler un processeur, caractérisé en ce que la suite d'instructions de contrôle formant certificat (4, 15) est codée en langage interprétable par 1a machine virtuelle du terminal hôte.
4. Procédé selon fane des revendications 1 à 3, dans lequel le certificat exécutable comporte une partie des traitements nécessaire au bon fonctionnement de l'application authentique.
5. Procédé selon l'une des revendications 1 à 4, caractérisé en ce que dans l'étape i) il est prévu d'établir, dans un environnement sécurisé, une carte du contexte mémoire de l'application logicielle authentique en cours d'exécution, et de déterminer, à
partir des valeurs de cette carte mémoire, la suite d'instructions de contrôle destinée à former le certificat exécutable (4,15).
partir des valeurs de cette carte mémoire, la suite d'instructions de contrôle destinée à former le certificat exécutable (4,15).
6. Procédé selon l'une des revendications 1 à 5, caractérisé en ce que dans l'étape ii), le certificat exécutable (4, 15) à destination du terminal hôte émane d'un circuit électronique de traitement physiquement séparé du terminal hôte.
7. Procédé selon l'une des revendications 1 à 6, caractérisé en ce que dans l'étape ii) la récupération des valeurs du contexte mémoire d'exécution se fait par lecture des valeurs aux adresses des différentes zones de la mémoire du terminal hôte, ces zones contenant les instructions exécutables et les données intrinsèques à l'application à
vérifier.
vérifier.
8. Procédé selon l'une des revendications 1 à 7, caractérisé en ce que dans l'étape iii), le résultat obtenu par l'exécution de ladite suite d'instructions de contrôle (4,15) produit une signature de (application à vérifier, cette signature étant calculée par ladite suite d'instructions de contrôle (4, 15) qui utilise les valeurs du contexte mémoire de l'application logicielle à
vérifier en cours d'exécution de l'application.
vérifier en cours d'exécution de l'application.
9. Procédé selon l'une des revendications précédentes, caractérisé en ce que l'application logicielle comprend des instructions permettant de charger et d'exécuter dans sa carte de contexte mémoire ladite suite d'instructions de contrôle (4, 15) en substituant au moins une adresse d'exécution d'une instruction de ladite application logicielle par au moins une adresse d'instruction de la suite d'instructions formant certificat.
10. Procédé selon l'une des revendications précédentes, caractérisé en ce que la suite d'instructions de contrôle (4, 15) est choisie de telle sorte que l'état du contexte mémoire d'une l'application logicielle après (exécution de la suite d'instructions de contrôle est identique et/ou sans modification de (état du contexte mémoire de l'application logicielle avant (exécution de la suite d'instructions de contrôle.
11. Procédé selon l'une quelconque des revendications 1 à 10, caractérisé en ce que la suite d'instructions formant certificat (4,15) est transportée dans un flux de données nécessaire à l'exécution de l'application logicielle à vérifier.
12. Procédé selon fane quelconque des revendications 1 à 11, caractérisé en ce que l'application logicielle à vérifier est tout ou partie chiffrée, le déchiffrement correct de l'application logicielle étant réalise en cas d'intégrité de l'application logicielle à vérifier.
13. Dispositif de vérification de l'intégrité d'une application logicielle destinée à être exécutée dans un terminal hôte pour la mise en oeuvre du procédé selon l'une des revendications 1 à 12, caractérisé en ce qu'il comprend - des moyens de traitement aptes à déterminer au moins une suite d'instructions de contrôle (4,15) pour l'application logicielle (1,11), exécutable par ledit terminal hôte au cours de l'exécution de l'application logicielle, et formant un certificat exécutable de ladite application logicielle, - des moyens d'acheminement dudit certificat exécutable jusqu'au terminal hôte et des moyens d'exécution pour exécuter la suite d'instructions formant certificat (4,15) sur ledit terminal hôte au cours de l'exécution de ladite application logicielle, - des moyens de comparaison pour comparer le résultat obtenu par l'exécution des instructions de contrôle avec le résultat attendu d'une application authentique, et - des moyens aptes en cas de comparaison positive à continuer l'exécution de l'application logicielle à vérifier (1,11).
14. Dispositif selon la revendication 13, caractérisé en ce qu'il comprend une carte à
puce ou tout autre circuit sécurisé apte à contenir la suite d'instructions de contrôle formant certificat (4,15), en ce que le terminal hôte est équipé d'un lecteur de carte à puce ou d'un moyen de communication avec le circuit sécurisé et en ce que les moyens d'exécution de l'application logicielle sont agencés pour aller chercher, dans la carte à
puce ou le circuit sécurisé, la suite d'instructions formant certificat au cours de l'exécution de l'application logicielle à vérifier.
puce ou tout autre circuit sécurisé apte à contenir la suite d'instructions de contrôle formant certificat (4,15), en ce que le terminal hôte est équipé d'un lecteur de carte à puce ou d'un moyen de communication avec le circuit sécurisé et en ce que les moyens d'exécution de l'application logicielle sont agencés pour aller chercher, dans la carte à
puce ou le circuit sécurisé, la suite d'instructions formant certificat au cours de l'exécution de l'application logicielle à vérifier.
15. Dispositif selon la revendication 14, caractérisé en ce que le terminal hôte est apte à renvoyer à la carte à puce ou au circuit sécurisé la signature produite par la suite d'instructions de contrôle, et en ce que la carte à puce ou le circuit sécurisé comprend en outre une application logicielle de vérification apte à valider ou invalider l'authenticité de l'application logicielle à vérifier en fonction du résultat de la comparaison entre la signature produite par la suite d'instructions de contrôle et une valeur de la signature connue et préalablement stockée dans la carte à puce ou dans le circuit sécurisé.
16. Dispositif selon la revendication 15, caractérisé en ce qu'en cas de comparaison négative, la carte à puce est apte à modifier le fonctionnement de l'application logicielle à
vérifier.
vérifier.
17. Dispositif selon la revendication 15 ou la revendication 16, caractérisé
en ce qu'en cas de non transmission de la signature conformément à des conditions prédéterminées, la carte à puce est apte à modifier le fonctionnement de l'application logicielle à vérifier.
en ce qu'en cas de non transmission de la signature conformément à des conditions prédéterminées, la carte à puce est apte à modifier le fonctionnement de l'application logicielle à vérifier.
18. Dispositif selon fane des revendications 13 à 17, caractérisé en ce qu'en cas de comparaison négative, le dispositif comprend en outre des moyens aptes à
empêcher le fonctionnement de l'application logicielle dans le terminal hôte.
empêcher le fonctionnement de l'application logicielle dans le terminal hôte.
19. Dispositif selon fane des revendications 13 à 18, caractérisé en ce que le terminal hôte appartient au groupe formé par les dispositifs de traitement des données, les décodeurs de télévision numérique, les équipements de visualisation de contenus multimédias, les micro-ordinateurs, les cartes à puces, les assistants personnels, les consoles de jeux, les téléphones mobiles ou analogues.
20. Dispositif selon l'une des revendications 13 à 19, caractérisé en ce que les moyens de traitement sont aptes à déterminer une pluralité de certificats exécutables (4, 15), différents les un par rapport aux autres selon une cadence et/ou condition choisie.
21. Dispositif selon l'une des revendications 13 à 20, caractérisé en ce que les moyens de traitement sont aptes à déterminer une pluralité de certificats exécutables (14,15), différents les uns par rapport aux autres selon une cadence et/ou une condition choisie.
22. Procédé selon fane des revendications 1 à 6, caractérisé en ce qu'il comprend en outre après l'étape i), une étape consistant à insérer le certificat exécutable (4) dans un premier flot de données et à traiter par chiffrement un deuxième flot des données nécessaires au bon fonctionnement de l'application logicielle (1,11) à vérifier, avant que ledit deuxième flot ne soit accédé pour traitement par l'application logicielle (1,11) à
vérifier.
vérifier.
23. Dispositif selon l'une des revendications 13 à 18, caractérisé en ce qu'il comprend en outre des moyens aptes à insérer le certificat exécutable (4) dans un premier flot de données et des moyens de traitement par chiffrement d'un deuxième flot des données nécessaires au bon fonctionnement de l'application logicielle (1,11) à
vérifier, avant que ledit deuxième flot ne soit accédé pour traitement par l'application logicielle (1,11) à vérifier.
vérifier, avant que ledit deuxième flot ne soit accédé pour traitement par l'application logicielle (1,11) à vérifier.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0216652A FR2849230B1 (fr) | 2002-12-24 | 2002-12-24 | Procede et dispositif de verification de l'integrite d'une application logicielle sans cle de chiffrement/dechiffrement |
FR02/16652 | 2002-12-24 | ||
PCT/FR2003/003877 WO2004059450A1 (fr) | 2002-12-24 | 2003-12-23 | Procede et dispositif de verification de l'integrite d'une application logicielle |
Publications (1)
Publication Number | Publication Date |
---|---|
CA2510602A1 true CA2510602A1 (fr) | 2004-07-15 |
Family
ID=32406503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA002510602A Abandoned CA2510602A1 (fr) | 2002-12-24 | 2003-12-23 | Procede et dispositif de verification de l'integrite d'une application logicielle |
Country Status (8)
Country | Link |
---|---|
US (1) | US7739514B2 (fr) |
EP (1) | EP1576444A1 (fr) |
CN (1) | CN100520670C (fr) |
AU (1) | AU2003299401A1 (fr) |
CA (1) | CA2510602A1 (fr) |
FR (1) | FR2849230B1 (fr) |
HK (1) | HK1083545A1 (fr) |
WO (1) | WO2004059450A1 (fr) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060048226A1 (en) * | 2004-08-31 | 2006-03-02 | Rits Maarten E | Dynamic security policy enforcement |
EP1698958A1 (fr) * | 2005-02-25 | 2006-09-06 | Axalto SA | Procédé de sécurisation de l'ecriture en mémoire contre des attaques par rayonnement ou autres |
GB0514492D0 (en) * | 2005-07-14 | 2005-08-17 | Ntnu Technology Transfer As | Secure media streaming |
GB2443264A (en) * | 2006-10-27 | 2008-04-30 | Ntnu Technology Transfer As | Integrity checking method for a device in a computer network, which controls access to data; e.g. to prevent cheating in online game |
CN101226569A (zh) * | 2007-01-19 | 2008-07-23 | 国际商业机器公司 | 在虚拟机中验证代码模块的方法及装置 |
JP5320561B2 (ja) * | 2009-03-19 | 2013-10-23 | 株式会社日立製作所 | 真正性を保証する端末システム、端末及び端末管理サーバ |
WO2011119137A1 (fr) | 2010-03-22 | 2011-09-29 | Lrdc Systems, Llc | Procédé destiné à identifier et à protéger l'intégrité d'un ensemble de données de source |
EP2466505B1 (fr) | 2010-12-01 | 2013-06-26 | Nagravision S.A. | Procédé d'authentification de terminal |
US8615684B2 (en) * | 2011-04-18 | 2013-12-24 | Astronautics Corporation Of America | High reliability processor system |
US8695060B2 (en) * | 2011-10-10 | 2014-04-08 | Openpeak Inc. | System and method for creating secure applications |
WO2013123233A2 (fr) * | 2012-02-14 | 2013-08-22 | Apple Inc. | Procédés et appareils pour distribution à grande échelle de clients d'accès électronique |
US10140139B1 (en) | 2012-06-19 | 2018-11-27 | Bromium, Inc. | Ensuring the privacy and integrity of a hypervisor |
US9021476B1 (en) * | 2012-06-19 | 2015-04-28 | Bromium, Inc. | Ensuring the privacy and integrity of a hypervisor |
US9135046B1 (en) | 2012-06-19 | 2015-09-15 | Bromium, Inc. | Preventing host operating system from inspecting or modifying data received by hardware controller by moving host operating system into a virtual machine after boot up |
CN103902878B (zh) * | 2012-12-28 | 2017-08-22 | 新华三技术有限公司 | 一种虚拟环境下的License认证方法和装置 |
CN104134021B (zh) * | 2013-06-20 | 2016-03-02 | 腾讯科技(深圳)有限公司 | 软件的防篡改验证方法及装置 |
US9762657B2 (en) | 2014-06-17 | 2017-09-12 | International Business Machines Corporation | Authentication of mobile applications |
US8938547B1 (en) | 2014-09-05 | 2015-01-20 | Openpeak Inc. | Method and system for data usage accounting in a computing device |
US20160071040A1 (en) | 2014-09-05 | 2016-03-10 | Openpeak Inc. | Method and system for enabling data usage accounting through a relay |
US9232013B1 (en) | 2014-09-05 | 2016-01-05 | Openpeak Inc. | Method and system for enabling data usage accounting |
US9350818B2 (en) | 2014-09-05 | 2016-05-24 | Openpeak Inc. | Method and system for enabling data usage accounting for unreliable transport communication |
US9100390B1 (en) | 2014-09-05 | 2015-08-04 | Openpeak Inc. | Method and system for enrolling and authenticating computing devices for data usage accounting |
EP3026557A1 (fr) * | 2014-11-28 | 2016-06-01 | Thomson Licensing | Procédé et dispositif permettant d'assurer la vérification de l'intégrité d'une application |
EP3026558A1 (fr) * | 2014-11-28 | 2016-06-01 | Thomson Licensing | Procédé et dispositif permettant d'assurer la vérification de l'intégrité d'une application |
US9232078B1 (en) | 2015-03-16 | 2016-01-05 | Openpeak Inc. | Method and system for data usage accounting across multiple communication networks |
SG10201602449PA (en) | 2016-03-29 | 2017-10-30 | Huawei Int Pte Ltd | System and method for verifying integrity of an electronic device |
US10523418B2 (en) | 2016-06-03 | 2019-12-31 | Cryptography Research, Inc. | Providing access to a hardware resource based on a canary value |
EP3373178B1 (fr) * | 2017-03-08 | 2024-09-18 | Secure-IC SAS | Comparaison de signatures de données de contexte d'exécution avec des références |
EP3696698A1 (fr) * | 2019-02-18 | 2020-08-19 | Verimatrix | Procédé de protection d'un programme logiciel contre la falsification |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6006328A (en) * | 1995-07-14 | 1999-12-21 | Christopher N. Drake | Computer software authentication, protection, and security system |
WO1999035582A1 (fr) * | 1998-01-05 | 1999-07-15 | Chew Wah Lui | Systeme d'activation de logiciel et procede d'authentification de logiciel |
US6308270B1 (en) * | 1998-02-13 | 2001-10-23 | Schlumberger Technologies, Inc. | Validating and certifying execution of a software program with a smart card |
AUPP734298A0 (en) * | 1998-11-26 | 1998-12-24 | Aristocrat Leisure Industries Pty Ltd | Electronic casino gaming with authentication and improved security |
EP2306259B1 (fr) * | 2000-09-21 | 2015-05-27 | BlackBerry Limited | Système et procédé de signature par code |
US6782477B2 (en) * | 2002-04-16 | 2004-08-24 | Song Computer Entertainment America Inc. | Method and system for using tamperproof hardware to provide copy protection and online security |
-
2002
- 2002-12-24 FR FR0216652A patent/FR2849230B1/fr not_active Expired - Fee Related
-
2003
- 2003-12-23 CA CA002510602A patent/CA2510602A1/fr not_active Abandoned
- 2003-12-23 AU AU2003299401A patent/AU2003299401A1/en not_active Abandoned
- 2003-12-23 CN CN200380107152.1A patent/CN100520670C/zh not_active Expired - Fee Related
- 2003-12-23 EP EP03799695A patent/EP1576444A1/fr not_active Withdrawn
- 2003-12-23 WO PCT/FR2003/003877 patent/WO2004059450A1/fr not_active Application Discontinuation
- 2003-12-23 US US10/539,566 patent/US7739514B2/en not_active Expired - Fee Related
-
2006
- 2006-03-16 HK HK06103351.1A patent/HK1083545A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
HK1083545A1 (en) | 2006-07-07 |
EP1576444A1 (fr) | 2005-09-21 |
AU2003299401A1 (en) | 2004-07-22 |
FR2849230B1 (fr) | 2005-04-22 |
FR2849230A1 (fr) | 2004-06-25 |
CN100520670C (zh) | 2009-07-29 |
CN1729436A (zh) | 2006-02-01 |
US7739514B2 (en) | 2010-06-15 |
WO2004059450A1 (fr) | 2004-07-15 |
US20060085645A1 (en) | 2006-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2510602A1 (fr) | Procede et dispositif de verification de l'integrite d'une application logicielle | |
US10482238B2 (en) | Method and device for verifying the integrity of platform software of an electronic device | |
CN107977553B (zh) | 移动应用程序的安全加固的方法及装置 | |
US8335931B2 (en) | Interconnectable personal computer architectures that provide secure, portable, and persistent computing environments | |
US8429389B2 (en) | ROM BIOS based trusted encrypted operating system | |
CN112514321B (zh) | 共享秘密建立 | |
CA2618544C (fr) | Systeme d'exploitation a chiffrement securise a base de rom bios | |
US9230455B2 (en) | Steganographic embedding of executable code | |
CN112257086B (zh) | 一种用户隐私数据保护方法及电子设备 | |
CN111404696A (zh) | 协同签名方法、安全服务中间件、相关平台及系统 | |
CN101046776A (zh) | Bios自动生成的用于保护数据存储设备的随机密码 | |
EP0720098B1 (fr) | Dispositif de sécurisation de systèmes d'information organisés autour de microprocesseurs | |
CN111950035A (zh) | 对apk文件完整性保护的方法、系统、设备及存储介质 | |
EP1728354A1 (fr) | Procede d'authentification dynamique de programmes par un objet portable electronique | |
CN113094708B (zh) | 电子文件处理方法及装置、存储介质和处理器 | |
CN114817956A (zh) | 一种usb通信对象验证方法、系统、装置及存储介质 | |
WO2004061622A2 (fr) | Procede pour la securisation des systemes informatiques incorporant un module d'interpretation de code. | |
FR2893732A1 (fr) | Procede et dispositif d'authentification par un utilisateur d'une interface de confiance et programme d'oedinateur associe | |
EP2912598B1 (fr) | Procédé de téléchargement d'au moins un composant logiciel dans un appareil informatique, produit programme d'ordinateur, appareil informatique et système informatique associés | |
EP3350745B1 (fr) | Gestion d'un affichage d'une vue d'une application sur un écran d'un dispositif électronique de saisie de données, procédé, dispositif et produit programme d'ordinateur correspondants | |
US9171135B2 (en) | Method for acquisition of software applications | |
CN1553315A (zh) | 在安全引导装载程序中使用散列技术 | |
US8661234B2 (en) | Individualized per device initialization of computing devices in avoidance of mass exploitation of vulnerabilities | |
CN1265287C (zh) | 嵌入式软件的保护方法 | |
KR20100055713A (ko) | 휴대 장치의 해킹 방지를 위한 부팅 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FZDE | Discontinued |