FR3060807A1 - Procede de verification de l'integrite d'un programme, entite electronique associee et appareil electronique comprenant une telle entite electronique - Google Patents

Procede de verification de l'integrite d'un programme, entite electronique associee et appareil electronique comprenant une telle entite electronique Download PDF

Info

Publication number
FR3060807A1
FR3060807A1 FR1662945A FR1662945A FR3060807A1 FR 3060807 A1 FR3060807 A1 FR 3060807A1 FR 1662945 A FR1662945 A FR 1662945A FR 1662945 A FR1662945 A FR 1662945A FR 3060807 A1 FR3060807 A1 FR 3060807A1
Authority
FR
France
Prior art keywords
electronic entity
program
electronic
entity
datum
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1662945A
Other languages
English (en)
Other versions
FR3060807B1 (fr
Inventor
Emmanuelle Dottax
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Idemia France SAS
Original Assignee
Oberthur Technologies SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oberthur Technologies SA filed Critical Oberthur Technologies SA
Priority to FR1662945A priority Critical patent/FR3060807B1/fr
Publication of FR3060807A1 publication Critical patent/FR3060807A1/fr
Application granted granted Critical
Publication of FR3060807B1 publication Critical patent/FR3060807B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2103Challenge-response

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

Un procédé de vérification de l'intégrité d'un programme (Pn) mémorisé dans une mémoire (6) d'un appareil électronique (2) et exécutable par un processeur (4) de l'appareil électronique (2) comprend les étapes suivantes : - réception, en provenance d'un serveur distant (20), d'une valeur de défi par une entité électronique (10) équipant l'appareil électronique (2) ; - comparaison, par l'entité électronique (10), d'une première donnée (Hn) mémorisée dans l'entité électronique (10) et d'une seconde donnée déterminée en fonction d'une partie au moins du programme (Pn) ; - en cas d'égalité entre la première donnée (Hn) et la seconde donnée à l'étape de comparaison, détermination, par l'entité électronique (10), d'une valeur de réponse en fonction de la valeur de défi et d'une clé (SK) mémorisée dans l'entité électronique (10) ; - émission de la valeur de réponse à destination du serveur distant (20). Une entité électronique associée (10) et un appareil (2) comprenant une telle entité électronique (10) sont également présentés.

Description

Domaine technique auquel se rapporte l'invention
La présente invention concerne la vérification de l’intégrité des programmes mémorisés et exécutables au sein d’un appareil électronique.
Elle concerne plus particulièrement un procédé de vérification de l’intégrité d’un programme, une entité électronique associée et un appareil électronique comprenant une telle entité électronique.
L’invention s’applique particulièrement avantageusement dans le cas où l’entité électronique est intégrée (par exemple soudée) à l’appareil électronique.
Arriere-plan technologique
Dans le but de vérifier l’intégrité d’un programme mémorisé dans une mémoire d’un appareil électronique et exécutable par un processeur de l’appareil électronique, il a déjà été proposé qu’un serveur distant transmette un nombre aléatoire à l’appareil électronique afin que celui-ci retourne une preuve d’intégrité déterminée en fonction du nombre aléatoire et des données constituant le programme mémorisé.
Une telle solution est par exemple décrite dans l’article FPGA-Based Remote-Code Integrity Vérification of Programs in Distributed Embedded Systems, de C. Basile, S. Di Carlo et A. Scionti, in IEEE Transactions on Systems, Man, and Cybernetics - Part C : Applications and Reviews, Vol. 42, No. 2, March 2012.
Objet de l’invention
Dans ce contexte, la présente invention propose un procédé de vérification de l’intégrité d’un programme mémorisé dans une mémoire d’un appareil électronique et exécutable par un processeur de l’appareil électronique, caractérisé en ce qu’il comprend les étapes suivantes :
- réception, en provenance d’un serveur distant, d’une valeur de défi par une entité électronique (par exemple une entité électronique sécurisée) équipant l’appareil électronique ;
- comparaison, par l’entité électronique, d’une première donnée mémorisée dans l’entité électronique et d’une seconde donnée déterminée en fonction d’une partie au moins du programme ;
- en cas d’égalité entre la première donnée et la seconde donnée à l’étape de comparaison, détermination, par l’entité électronique, d’une valeur de réponse en fonction de la valeur de défi et d’une clé mémorisée dans l’entité électronique ;
- émission de la valeur de réponse à destination du serveur distant.
Le serveur est ainsi assuré que la comparaison assurant la vérification d’intégrité a bien été effectuée par l’entité électronique associée à l’appareil électronique. En outre, la vérification d’intégrité étant effectuée par l’entité électronique, ceci allège le fonctionnement du serveur et évite la mémorisation au sein du serveur de données nécessaires à la vérification (qu’il s’agisse de paires défi/réponse, ou du programme à vérifier et d’une donnée cryptographique permettant le calcul de la réponse). De ce fait, cette solution est d’ailleurs pratique en particulier lorsque le serveur n’est pas lié à l’organisme fournissant le programme.
Selon un premier mode de réalisation envisageable, le procédé peut comprendre les étapes suivantes :
- réception, par l’entité électronique, de ladite partie au moins du programme ;
- détermination de la seconde donnée par l’entité électronique en fonction de ladite partie au moins du programme.
La seconde donnée est par exemple déterminée par application d’une fonction de hachage à ladite partie au moins du programme.
Selon un second mode de réalisation envisageable, le procédé peut comprendre les étapes suivantes :
- transmission d’un élément de diversification de l’entité électronique au processeur ;
- détermination de la seconde donnée par le processeur en fonction de l’élément de diversification et de ladite partie au moins du programme.
La seconde donnée est ainsi déterminée par le processeur, ce qui évite de transférer le programme (généralement volumineux) à l’entité électronique.
La seconde donnée est par exemple déterminée par application d’une fonction de hachage à la concaténation de l’élément de diversification et de ladite partie au moins du programme.
Selon d’autres caractéristiques envisageables de manière optionnelle (et donc non limitative) :
- la valeur de réponse est déterminée par application, à la valeur de défi reçue, d’un algorithme cryptographique (par exemple de signature) utilisant la clé mémorisée dans l’entité électronique ;
- l’entité électronique est un élément sécurisé ;
- l’entité électronique est intégrée (par exemple soudée) à l’appareil électronique.
L’invention propose également une entité électronique destinée à équiper un appareil électronique comprenant un processeur et une mémoire, et conçue pour mettre en œuvre les étapes suivantes :
- réception d’une valeur de défi ;
- comparaison d’une première donnée mémorisée dans l’entité électronique et d’une seconde donnée déterminée en fonction d’une partie au moins d’un programme mémorisé dans ladite mémoire et exécutable par ledit processeur ;
- en cas d’égalité entre la première donnée et la seconde donnée à l’étape de comparaison, détermination d’une valeur de réponse en fonction de la valeur de défi et d’une clé mémorisée dans l’entité électronique ;
- émission de la valeur de réponse.
Lorsque l’entité électronique comprend un processeur et une mémoire, la mémoire de l’entité électronique mémorise par exemple des instructions de programme exécutables par le processeur de l’entité électronique et conçues de sorte que l’entité électronique mette en œuvre les étapes de réception, de comparaison, de détermination et d’émission mentionnées ci-dessus lorsque ces instructions sont exécutées par le processeur.
L’invention propose enfin un appareil électronique comprenant un processeur, une mémoire et une entité électronique telle que définie ci-dessus.
Description detaillee d’un exemple de réalisation
La description qui va suivre en regard des dessins annexés, donnés à titre d’exemples non limitatifs, fera bien comprendre en quoi consiste l’invention et comment elle peut être réalisée.
Sur les dessins annexés :
- la figure 1 représente schématiquement les éléments principaux d’un système dans lequel peut être mise en œuvre l’invention ;
- la figure 2 est un logigramme représentant un procédé de chargement d’un programme dans un appareil électronique ;
- la figure 3 est un logigramme représentant un premier exemple de procédé de vérification de l’intégrité d’un tel programme ; et
- la figure 4 est un logigramme représentant un second exemple de procédé de vérification de l’intégrité d’un tel programme.
La figure 1 représente schématiquement les éléments principaux d’un système dans lequel peut être mise en œuvre l’invention.
Dans un tel système, un appareil électronique 2 comprend un processeur 4 (par exemple un microprocesseur), une mémoire 6, un circuit de communication 8 et une entité électronique 10.
La mémoire 6 est une mémoire non-volatile réinscriptible, par exemple de type mémoire flash.
Comme cela sera expliqué plus en détail dans la suite, la mémoire 6 mémorise un programme Pn formé d’instructions exécutables par le processeur 4. Par mesure de concision, on écrira ainsi dans la suite que le programme Pn est exécutable par le processeur 4.
Lorsqu’il est exécuté par le processeur 4, le programme Pn permet la mise en œuvre de fonctionnalités par l’appareil électronique 2, par exemple des fonctionnalités prévues dans le cadre du fonctionnement normal de cet appareil électronique 2. Le programme Pn peut en outre permettre la mise en œuvre, par le processeur 4 de l’appareil électronique 2, de l’un au moins des procédés décrits ci-dessous en référence aux figures 2 à 4.
Le circuit de communication 8 est conçu de manière à établir une connexion de l’appareil électronique 2 à un réseau de communication, ici un réseau de communication public I tel que le réseau Internet.
Par souci de simplification, on a représenté sur la figure 1 une connexion directe entre le circuit de communication 8 et le réseau de communication I. On peut toutefois prévoir en pratique que cette connexion s’établisse par l’intermédiaire d’autres dispositifs électroniques. Par ailleurs, la connexion entre le circuit de communication 8 et le réseau de communication I pourra se faire au moyen de liaisons de différents types, par exemple des liaisons sans fil et/ou des liaisons filaires.
Du fait de la connexion établie par le circuit de communication 8 au réseau de communication I, le processeur 4 peut échanger des données avec d’autres équipements connectés au réseau de communication I, en particulier avec un serveur distant 20, comme décrit dans la suite.
Dans l’exemple décrit, l’entité électronique 10 est une entité électronique sécurisée, en l’occurrence un élément sécurisé (ou SE pour Secure Elément”), réalisé ici sous la forme d’un microcontrôleur. Un tel élément sécurisé peut éventuellement être intégré à l’appareil électronique 2, par exemple en étant soudé au sein de l’appareil électronique : l’entité électronique 10 est alors de type eSE (pour embedded Secure Elément”).
En variante, l’entité électronique 10 pourrait être une carte à microcircuit (par exemple une carte à microcircuit universelle ou UICC pour Universal Integrated Circuit Card”, telle que visée dans la spécification technique ETSI TS
102 221), ou une carte à microcircuit universelle soudée ou eUSCC pour embedded Universal Circuit Card’ (telle que décrite dans la norme ETSI TS
103 383).
L’entité électronique 10 comprend un processeur (par exemple un microprocesseur) et au moins une mémoire, notamment ici une mémoire nonvolatile réinscriptible. Cette mémoire mémorise en particulier des instructions conçues de telle sorte que l’entité électronique 10 puisse mettre en œuvre l’un au moins des procédés décrits ci-dessous en références aux figures 2 à 4 lorsque ces instructions sont exécutées par le processeur de l’entité électronique 10.
La mémoire de l’entité électronique 10 mémorise également des données utilisées au cours de son fonctionnement, en particulier une clé publique PKS associée au serveur 20, une clé privée SK spécifique à l’entité électronique 10 et un condensât Hn associé au programme Pn mémorisé dans la mémoire 6 de l’appareil électronique 2 comme mentionné ci-dessus. Dans certains modes de réalisation décrits ci-dessous, l’entité électronique 10 peut également mémoriser une clé secrète de déchiffrement SDecComme déjà indiqué, l’entité électronique 10 est ici sécurisée, c’est-àdire que cette entité électronique 10 est conçue, du fait de sa construction physique et de la conception des programmes d’ordinateur qu’elle mémorise, de façon à rendre très difficile, voire impossible, pour un attaquant l’accès (par lecture et/ou modification) aux données confidentielles qu’elle mémorise. Ainsi, l’entité électronique 10 présente un niveau de sécurité conforme aux critères communs EAL (pour Evaluation Assurance Lever), correspondant à la norme ISO 15408, avec un niveau supérieur ou égal à 4, ou à la norme FIPS (pour Fédéral Information Processing Standard) 140-2.
Lors d’une phase de préparation de l’appareil électronique 2 en vue de son fonctionnement (ou phase de personnalisation), une version initiale Po du programme embarqué dans l’appareil électronique 2 est écrite dans la mémoire 6 et un condensât correspondant Ho est écrit dans la mémoire de l’entité électronique 10.
Le condensât Ho est par exemple produit par application d’une fonction de hachage G à la version initiale Po : Ho = G(P0). Cette fonction de hachage G peut être par exemple une fonction de la famille SHA-2 (NIST FIPS 180-4), ou de la famille SHA-3 (NIST FIPS 202). On pourrait également utiliser une fonction de type MAC (acronyme pour Message Authentication Code), par exemple de type HMAC (NIST FIPS 198-1 ) ou CMAC (NIST SP800-38B). Une telle fonction de type MAC utilise alors dans ce cas une clé secrète mémorisée dans l’entité électronique 10
La figure 2 est un logigramme représentant un procédé de chargement d’un programme Pn dans l’appareil électronique 2 afin de mettre à jour le programme Pn_i embarqué dans cet appareil électronique 2.
Ce procédé débute à l’étape E2 par l’émission, par le serveur 20 et à destination du processeur 4 de l’appareil électronique 2, du programme Pn et d’une signature (électronique) Sn de ce programme Pn. (Une telle signature Sn est par exemple générée au niveau du serveur 20 par application aux données formant le programme Pn d’un algorithme cryptographique de signature utilisant une clé privée associée à la clé publique PKS déjà mentionnée.)
Le processeur 4 reçoit le programme Pn et la signature Sn et les transmet à l’entité électronique 10 à l’étape E4.
L’entité électronique 10 reçoit ainsi le programme Pn et la signature Sn à l’étape E6.
L’entité électronique 10 vérifie la signature Sn à l’étape E8 : pour ce faire, l’entité électronique 10 met en œuvre un algorithme cryptographique de vérification de signature impliquant le programme reçu Pn, la signature reçue Sn et la clé publique PKS mémorisée dans la mémoire de l’entité électronique 10 (comme déjà indiqué).
Si la vérification de signature échoue à l’étape E8, le procédé se poursuit par une étape E10 de traitement d’erreur: l’entité électronique 10 renvoie par exemple un message d’erreur au processeur 4 et le processeur 4 (sur lequel s’exécute le programme embarqué Pn.-i) ne procède pas dans ce cas à l’installation du programme Pn reçu.
Si la vérification de signature réussit à l’étape E8, l’entité électronique 10 détermine un condensât Hn associé au programme Pn, ici par application de la fonction de hachage G (i.e. Hn=G(Pn)), et mémorise ce condensât Hn dans la mémoire de l’entité électronique 10 (étape E12).
On peut prévoir dans certains modes de réalisation de l’étape E12 (dont celui permettant la mise en œuvre ultérieure du procédé décrit plus bas en référence à la figure 4) que l’entité électronique 10 génère (par exemple par tirage aléatoire) une pluralité d’éléments de diversification η, puis détermine un condensât Hnj associé au programme Pn pour chaque élément de diversification η et mémorise les paires (η, Hnj) formées chacune d’un élément de diversification η et du condensât correspondant Hn i.
Le condensât Hn j est par exemple déterminé en appliquant une fonction de hachage F à la concaténation de l’élément de diversification associé η et du programme Pn concerné : Hn,i = F(r, || Pn), où || est l’opérateur de concaténation. La fonction F est ici résistante aux attaques par recherche de second antécédent (en anglais second-preimage résistant”), c’est-à-dire que connaissant x, il est impossible en pratique de trouver un x’ différent de x et tel que F(x) = F(x’).
La fonction de hachage F peut être par exemple une fonction de la famille SHA-2 (NIST FIPS 180-4), ou de la famille SHA-3 (NIST FIPS 202). On pourrait également utiliser une fonction de type MAC (acronyme pour Message Authentication Code”), par exemple de type HMAC (NIST FIPS 198-1) ou CMAC (NIST SP800-38B).
En variante, le condensât Hni peut être déterminé en appliquant une fonction de hachage F’ de type MAC, par exemple de type HMAC (NIST FIPS 198-1) ou CMAC (NIST SP800-38B), au programme Pn concerné en utilisant l’élément de diversification η concerné en tant que clé sécrète dans cette fonction de type MAC : Ηη ί = F’ri(Pn).
Selon une autre variante envisageable, le condensât Hn (ou les paires élément de diversification η - condensât Hnj) peu(ven)t être déterminé(es) au préalable au sein du serveur 20 et transmis(es) à l’entité électronique 10 (par exemple annexé(es) au programme Pn) sous forme chiffrée, par exemple par application (au niveau du serveur 20) d’un algorithme cryptographique de chiffrement utilisant la clé publique associée à la clé secrète de déchiffrement Sdec (dans le cas où cette clé secrète de déchiffrement Sdec est une clé privée de chiffrement asymétrique ; en variante, la clé secrète de déchiffrement SDec pourrait être une clé symétrique partagée entre l’entité électronique 10 et le serveur 20, auquel cas l’algorithme cryptographique de chiffrement précité utiliserait lui aussi cette clé secrète de déchiffrement Sdec)· Le condensât Hn reçu (ou les paires η, Hni reçues) est (sont) dans ce cas déchiffré(es) par l’entité électronique 10 au moyen d’un algorithme cryptographique de déchiffrement utilisant la clé secrète de déchiffrement Sdec, puis mémorisé(es) dans la mémoire de l’entité électronique 10.
On peut prévoir en particulier dans ce cas que le condensât Hn (ou les condensats Hnj) soi(en)t obtenu(s) par application d’une fonction de hachage à l’ensemble du contenu prévu de la mémoire 6 après mémorisation du programme Pn (et non au seul programme Pn).
Par ailleurs, dans ces cas où le condensât Hn (ou les condensats Hnj) est (sont) transmi(s) (chiffré(s)) du serveur 20 à l’appareil électronique 2 avec le programme Pn, il(s) est (sont) également couvert(s) par la signature Sn susmentionnée.
Lorsque le condensât Hn (ou les condensats Hn,i) est (sont) mémorisé(s) dans l’entité électronique 10, l’entité électronique 10 émet un message OK indicatif de bon fonctionnement à destination du processeur 4 (étape E14).
Le processeur 4 reçoit ce message OK à l’étape E16 et procède alors à la mise à jour du programme embarqué au moyen du programme reçu Pn (étape E18), par exemple en mémorisant le programme reçu Pn dans la mémoire 6 susmentionnée.
La figure 3 est un logigramme représentant un premier exemple de procédé de vérification de l’intégrité du programme Pn embarqué dans l’appareil électronique 2.
Ce procédé débute à l’étape E20 à laquelle le serveur 20 envoie une valeur de défi CH à destination de l’appareil électronique 2. Le serveur 20 envoie par exemple la valeur de défi CH au sein d’une requête de vérification d’intégrité du programme embarqué Pn destinée au processeur 4.
Le processeur 4 reçoit cette requête et la valeur de défi CH et initie alors le processus de vérification d’intégrité du programme embarqué Pn en transmettant la valeur de défi reçue CH et les données formant le programme embarqué Pn (mémorisées dans la mémoire 6) à l’entité électronique 10 (étape E22).
L’entité électronique 10 reçoit les données formant le programme embarqué Pn et la valeur de défi CH à l’étape E24.
L’entité électronique 10 vérifie alors à l’étape E26 que l’application de la fonction de hachage G aux données formant le programme embarqué Pn produit bien un résultat identique au condensât Hn mémorisé dans la mémoire de l’entité électronique 10, ce qui est le cas si le programme embarqué Pn n’a pas été altéré pas un attaquant puisqu’on a normalement comme indiqué ci-dessus :
Hn = G(Pn).
Pour que la vérification d’intégrité du programme Pn assure l’absence d’un programme malveillant au sein de l’appareil électronique 2, il convient de s’assurer que la mémoire 6 n’a pas une capacité suffisante pour mémoriser un tel programme malveillant en plus des données formant le programme Pn dont on vérifie l’intégrité. En effet, si cette condition n’était pas respectée, le programme malveillant pourrait en théorie recevoir la requête de vérification d’intégrité et transmettre à l’entité électronique 10 les données formant le programme Pn (ce qui entraînerait une vérification de l’intégrité).
Si la vérification échoue à l’étape E26, l’entité électronique 10 effectue un traitement d’erreur à l’étape E28, par exemple en renvoyant un message d’échec au processeur 4. Le processeur 4 peut éventuellement transmettre à son tour dans ce cas un message d’erreur au serveur 20 (cela n’étant toutefois pas nécessaire, puisqu’en l’absence de réception d’une réponse correcte à l’étape E36 décrite ci-dessous, le serveur 20 considère qu’un problème est survenu).
Si la vérification réussit à l’étape E30, l’entité électronique 10 détermine une valeur de réponse R en fonction de la valeur de défi CH et d’une clé secrète mémorisée dans l’entité électronique 10, ici la clé privée SK. La valeur de réponse R est par exemple obtenue par application à la valeur de défi CH d’un algorithme cryptographique (ici de signature) utilisant la clé secrète (ici la clé privée SK).
L’entité électronique 10 transmet à l’étape E32 la valeur de réponse R au processeur 4. Le processeur 4 peut ainsi envoyer à l’étape E34 la valeur de réponse R (ici en tant que réponse à la requête de vérification mentionnée plus haut) au serveur 20.
Le serveur 20 reçoit la valeur de réponse R à l’étape E36.
Le serveur 20 peut donc vérifier que cette valeur de réponse R a bien été émise par l’entité électronique 10 sur la base de la valeur de défi CH (étape E38), ici en appliquant à la valeur de défi CH et à la valeur de réponse R un algorithme de vérification de signature utilisant la clé publique associée à la clé privée SK.
Si la valeur de réponse R est la réponse attendue {i.e. associée à la valeur de défi CH envoyée à l’étape E20), ceci indique que l’entité électronique 10 a effectivement vérifié l’intégrité du programme Pn à l’étape E26 et l’appareil électronique 2 peut donc continuer à être utilisé sans risque. Le serveur 20 peut ultérieurement lancer (à l’étape E20) une nouvelle vérification de l’intégrité du programme embarqué Pn.
Si la valeur de réponse R n’est pas la valeur attendue (ou si aucune réponse n’est reçue de l’appareil électronique 20 après un laps de temps donné par rapport à l’étape E20), ceci indique que l’entité électronique 10 n’a pas vérifié l’intégrité du programme embarqué Pn et on considère donc alors que le programme embarqué Pn est altéré (que ce soit fortuitement ou suite à une attaque).
On procède donc dans ce cas à une étape E40 de traitement du défaut d’intégrité, qui peut comprendre une ou plusieurs des actions suivantes selon les circonstances :
- lancement d’une mise à jour du programme embarqué (comme décrit ci-dessus à la figure 2) ;
- annulation de droits ou autorisations associé(s) à l’appareil électronique
2;
- signalisation d’un risque d’attaque à un utilisateur de l’appareil électronique 2.
La figure 4 est un logigramme représentant un second exemple de procédé de vérification de l’intégrité du programme Pn embarqué dans l’appareil électronique 2.
Ce procédé débute à l’étape E50 à laquelle le serveur 20 envoie une valeur de défi CH à destination de l’appareil électronique 2. Le serveur 20 envoie par exemple la valeur de défi CH au sein d’une requête de vérification d’intégrité du programme embarqué Pn destinée au processeur 4.
Le processeur 4 reçoit cette requête et la valeur de défi CH et initie alors le processus de vérification d’intégrité du programme embarqué Pn en transmettant la valeur de défi reçue CH à l’entité électronique 10 (étape E52).
L’entité électronique 10 reçoit la valeur de défi CH à l’étape E54.
L’entité électronique 10 choisit alors (étape E55) un élément de diversification η parmi la pluralité d’éléments de diversification mémorisés dans la mémoire de l’entité électronique (voir ci-dessus, dans la description relative à l’étape E12, l’utilisation possible de tels éléments de diversification η).
L’élément de diversification η est par exemple choisi aléatoirement parmi les éléments de diversification mémorisés. En variante, les éléments de diversification sont successivement choisis au fur et à mesure des différentes mises en œuvre du procédé de vérification d’intégrité décrit ici.
L’entité électronique 10 transmet l’élément de diversification choisi r, au processeur 4 à l’étape E56.
Le processeur 4 reçoit l’élément de diversification η à l’étape E58 et peut ainsi déterminer à l’étape E60 le condensât H’nj associé à cet élément de diversification η et à la version courante Pn du programme embarqué. Dans l’exemple décrit ici, le condensai H’nj est déterminé comme suit en utilisant la fonction de hachage F mentionnée plus haut (dans le cadre de la détermination du condensât correspondant Hn,i mémorisé dans l’entité électronique 10) :
H’nj = F(rs H Pn).
Le processeur 4 transmet alors à l’entité électronique 10 le condensât H’nj ainsi déterminé (étape E62).
L’entité électronique 10 reçoit à l’étape E64 le condensât H’n i déterminé par le processeur 4 et compare à l’étape E66 ce condensât H’nj au condensât Hn i mémorisé (lors de l’étape E12 décrite plus haut) dans la mémoire de l’entité électronique 10 en association avec l’élément de diversification η (choisi à l’étape E55).
Si le condensât H’n i reçu par l’entité électronique 10 diffère du condensât Hnj mémorisé dans l’entité électronique 10, cela indique que le programme Pn a été altéré et on procède alors à un traitement d’erreur à l’étape E68, par exemple en renvoyant un message d’échec au processeur 4. Le processeur 4 peut éventuellement transmettre à son tour dans ce cas un message d’erreur au serveur 20 (ce qui n’est toutefois pas nécessaire, puisqu’en l’absence de réception d’une réponse correcte à l’étape E76 décrite ci-dessous, le serveur 20 considère qu’un problème est survenu).
Si le condensât H’nj reçu par l’entité électronique 10 est identique au condensât Hnj mémorisé dans l’entité électronique 10, l’entité électronique 10 détermine une valeur de réponse R en fonction de la valeur de défi CH (reçue à l’étape E54) et d’une clé secrète mémorisée dans l’entité électronique 10, ici la clé privée SK. La valeur de réponse R est par exemple obtenue par application à la valeur de défi CH d’un algorithme cryptographique (ici de signature) utilisant la clé secrète (ici la clé privée SK).
On remarque que cette solution permet une vérification d’intégrité du programme Pn par l’entité électronique 10 sans avoir à transférer l’intégralité du programme Pn à l’entité électronique 10.
L’entité électronique 10 transmet à l’étape E72 la valeur de réponse R au processeur 4. Le processeur 4 peut ainsi envoyer à l’étape E74 la valeur de réponse R (ici en tant que réponse à la requête de vérification mentionnée plus haut) au serveur 20.
Le serveur 20 reçoit la valeur de réponse R à l’étape E76.
Le serveur 20 peut donc vérifier que cette valeur de réponse R a bien été émise par l’entité électronique 10 sur la base de la valeur de défi CH (étape E78), ici en appliquant à la valeur de défi CH et à la valeur de réponse R un algorithme de vérification de signature utilisant la clé publique associée à la clé privée SK.
Si la valeur de réponse R est la réponse attendue (i.e. associée à la valeur de défi CH envoyée à l’étape E50), ceci indique que l’entité électronique 10 a effectivement vérifié l’intégrité du programme Pn à l’étape E66 et l’appareil électronique 2 peut donc continuer à être utilisé sans risque. Le serveur 20 peut ultérieurement lancer (à l’étape E50) une nouvelle vérification de l’intégrité du programme embarqué Pn.
Si la valeur de réponse R n’est pas la valeur attendue (ou si aucune réponse n’est reçue de l’appareil électronique 20 après un laps de temps donné par rapport à l’étape E50), ceci indique que l’entité électronique 10 n’a pas vérifié l’intégrité du programme embarqué Pn et on considère donc alors que le programme embarqué Pn est altéré (que ce soit fortuitement ou suite à une attaque).
On procède donc dans ce cas à une étape E80 de traitement du défaut d’intégrité, qui peut comprendre une ou plusieurs des actions suivantes selon les circonstances :
- lancement d’une mise à jour du programme embarqué (comme décrit 5 ci-dessus à la figure 2) ;
- annulation de droits ou autorisations associé(s) à l’appareil électronique
2;
- signalisation d’un risque d’attaque à un utilisateur de l’appareil électronique 2.

Claims (10)

  1. REVENDICATIONS
    1. Procédé de vérification de l’intégrité d’un programme (Pn) mémorisé dans une mémoire (6) d’un appareil électronique (2) et exécutable par un processeur (4) de l’appareil électronique (2), caractérisé en ce qu’il comprend les étapes suivantes :
    - réception (E24 ; E54), en provenance d’un serveur distant (20), d’une valeur de défi (CH) par une entité électronique (10) équipant l’appareil électronique (2) ;
    - comparaison (E26 ; E66), par l’entité électronique (10), d’une première donnée (Hn) mémorisée dans l’entité électronique (10) et d’une seconde donnée (H’nj) déterminée en fonction d’une partie au moins du programme (Pn) ;
    - en cas d’égalité entre la première donnée (Hn) et la seconde donnée (H’nj) à l’étape de comparaison (E26 ; E66), détermination (E30 ; E70), par l’entité électronique (10), d’une valeur de réponse (R) en fonction de la valeur de défi (CH) et d’une clé (SK) mémorisée dans l’entité électronique (10) ;
    - émission de la valeur de réponse (R) à destination du serveur distant (20).
  2. 2. Procédé de vérification selon la revendication 1, comprenant les étapes suivantes :
    - réception (E24), par l’entité électronique (10), de ladite partie au moins du programme (Pn) ;
    - détermination (E26) de la seconde donnée par l’entité électronique (10) en fonction de ladite partie au moins du programme (Pn).
  3. 3. Procédé de vérification selon la revendication 2, dans lequel la seconde donnée est déterminée par application d’une fonction de hachage à ladite partie au moins du programme (Pn).
  4. 4. Procédé de vérification selon la revendication 1, comprenant les étapes suivantes :
    - transmission (E56) d’un élément de diversification (η) de l’entité électronique (10) au processeur (4) ;
    - détermination (E60) de la seconde donnée (H’nj) par le processeur (4) en fonction de l’élément de diversification (η) et de ladite partie au moins du programme (Pn).
  5. 5. Procédé de vérification selon la revendication 4, dans lequel la seconde donnée (H’nj) est déterminée par application d’une fonction de hachage à la concaténation de l’élément de diversification (η) et de ladite partie au moins du programme (Pn).
  6. 6. Procédé de vérification selon l’une des revendications 1 à 5, dans lequel la valeur de réponse (R) est déterminée par application, à la valeur de défi (CH) reçue, d’un algorithme cryptographique utilisant la clé mémorisée (SK) dans l’entité électronique (10).
  7. 7. Procédé de vérification selon l’une des revendications 1 à 6, dans lequel l’entité électronique (10) est un élément sécurisé.
  8. 8. Procédé de vérification selon l’une des revendications 1 à 7, dans lequel l’entité électronique (10) est intégrée à l’appareil électronique (2).
  9. 9. Entité électronique (10) destinée à équiper un appareil électronique (2) comprenant un processeur (4) et une mémoire (6), et conçue pour mettre en œuvre les étapes suivantes :
    - réception (E24 ; E54) d’une valeur de défi (CH) ;
    - comparaison (E26 ; E66) d’une première donnée (Hn) mémorisée dans l’entité électronique (10) et d’une seconde donnée (Η’π ί) déterminée en fonction d’une partie au moins d’un programme (Pn) mémorisé dans ladite mémoire (6) et exécutable par ledit processeur (4) ;
    - en cas d’égalité entre la première donnée et la seconde donnée à l’étape de comparaison (E26 ; E66), détermination (E30 ; E70) d’une valeur de réponse (R) en fonction de la valeur de défi (CH) et d’une clé (SK) mémorisée dans l’entité électronique (10) ;
    - émission de la valeur de réponse (R).
  10. 10. Appareil électronique (2) comprenant un processeur (4), une mémoire (6) et une entité électronique (10) selon la revendication 9.
    1/2
    20 4 10 Fig.2
    2/2
    20 4 10
    20 4 10 i i I
    E80
FR1662945A 2016-12-20 2016-12-20 Procede de verification de l'integrite d'un programme, entite electronique associee et appareil electronique comprenant une telle entite electronique Active FR3060807B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1662945A FR3060807B1 (fr) 2016-12-20 2016-12-20 Procede de verification de l'integrite d'un programme, entite electronique associee et appareil electronique comprenant une telle entite electronique

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1662945A FR3060807B1 (fr) 2016-12-20 2016-12-20 Procede de verification de l'integrite d'un programme, entite electronique associee et appareil electronique comprenant une telle entite electronique
FR1662945 2016-12-20

Publications (2)

Publication Number Publication Date
FR3060807A1 true FR3060807A1 (fr) 2018-06-22
FR3060807B1 FR3060807B1 (fr) 2019-05-24

Family

ID=58737645

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1662945A Active FR3060807B1 (fr) 2016-12-20 2016-12-20 Procede de verification de l'integrite d'un programme, entite electronique associee et appareil electronique comprenant une telle entite electronique

Country Status (1)

Country Link
FR (1) FR3060807B1 (fr)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2840492A1 (fr) * 2013-08-23 2015-02-25 British Telecommunications public limited company Procédé et appareil de modification d'un programme d'ordinateur d'une manière sécurisée
FR3030831A1 (fr) * 2014-12-23 2016-06-24 Oberthur Technologies Entite electronique securisee, appareil electronique et procede de verification de l’integrite de donnees memorisees dans une telle entite electronique securisee
WO2016181152A1 (fr) * 2015-05-12 2016-11-17 Critical Blue Ltd Attestation de logiciel de client

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2840492A1 (fr) * 2013-08-23 2015-02-25 British Telecommunications public limited company Procédé et appareil de modification d'un programme d'ordinateur d'une manière sécurisée
FR3030831A1 (fr) * 2014-12-23 2016-06-24 Oberthur Technologies Entite electronique securisee, appareil electronique et procede de verification de l’integrite de donnees memorisees dans une telle entite electronique securisee
WO2016181152A1 (fr) * 2015-05-12 2016-11-17 Critical Blue Ltd Attestation de logiciel de client

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BASILE C ET AL: "FPGA-Based Remote-Code Integrity Verification of Programs in Distributed Embedded Systems", IEEE TRANSACTIONS ON SYSTEMS, MAN, AND CYBERNETICS: PART C:APPLICATIONS AND REVIEWS, IEEE SERVICE CENTER, PISCATAWAY, NJ, US, vol. 42, no. 2, 1 March 2012 (2012-03-01), pages 187 - 200, XP011469391, ISSN: 1094-6977, DOI: 10.1109/TSMCC.2011.2106493 *

Also Published As

Publication number Publication date
FR3060807B1 (fr) 2019-05-24

Similar Documents

Publication Publication Date Title
EP3152860B1 (fr) Procédé d'authentification d'une première entité électronique par une seconde entité électronique et entité électronique mettant en oeuvre un tel procédé
EP3320471B1 (fr) Systeme et procede d'authentification et de licence ip de modules hardware
FR2926692A1 (fr) Procedes et dispositifs pour ameliorer la fiabilite de communication entre un aeronef et un systeme distant
WO2005088895A1 (fr) Procede de traitement de donnees securise, base notamment sur un algorithme cryptographique
FR2964812A1 (fr) Procede d'authentification pour l'acces a un site web
EP3238200A1 (fr) Entité électronique sécurisée, appareil électronique et procédé de vérification de l'intégrité de données mémorisées dans une telle entité électronique sécurisée
WO2004107283A1 (fr) Methode de generation d’une cle de securite
EP2077515B1 (fr) Dispositif, systèmes et procédé de démarrage sécurisé d'une installation informatique
EP3419246B1 (fr) Procédé d'authentification par défi-réponse d'un élément sécurisé (se) auprès d'un microcontrôleur
EP2568406B1 (fr) Procédé de mise en oeuvre, a partir d'un terminal, de données cryptographiques d'un utilisateur stockées dans une base de données
FR3002670A1 (fr) Procede et systeme de traitement cryptographique utilisant une donnee sensible
EP2919412B1 (fr) Procédé et système de chiffrement/déchiffrement de données à clé distante et vérification préalable de jeton
EP3327607B1 (fr) Procede de verification de donnees
FR3061618A1 (fr) Procedes mis en œuvre par un dispositif et dans un reseau, entite electronique associee
FR3060807A1 (fr) Procede de verification de l'integrite d'un programme, entite electronique associee et appareil electronique comprenant une telle entite electronique
EP3732604A1 (fr) Contrôle d'intégrité d'un dispositif électronique
FR3060806A1 (fr) Procede de verification de l'integrite de donnees, entite electronique associee et appareil electronique comprenant une telle entite electronique
EP3828737B1 (fr) Architecture d'échanges de données d'intérêt comprenant une pluralité d'objets connectés à ressources contraintes
FR2908194A1 (fr) Entite electronique portable et procede de blocage, a distance, d'une fonctionnalite d'une telle entite electronique portable
EP3021515B1 (fr) Amélioration de l'intégrité authentique de données à l'aide du dernier bloc chiffrant ces données en mode cbc
FR3061384A1 (fr) Procede de traitement de donnees
FR3025631A1 (fr) Selection securisee d'une application dans une carte a puce ou equivalent
WO2013110571A1 (fr) Procede d'authentification d'un dispositif comprenant un processeur et une carte a puce par generation d'un motif
FR3074323A1 (fr) Procede et dispositif de traitement cryptographique de donnees
WO2015170057A1 (fr) Entité électronique et procédé de génération de clé de session

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20180622

PLFP Fee payment

Year of fee payment: 4

CA Change of address

Effective date: 20200120

CD Change of name or company name

Owner name: IDEMIA FRANCE, FR

Effective date: 20200120

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8