Brevet FR3060807A1 — publié le 20180622

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 Verification 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 à 3060807 2 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. 5 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 10 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 15 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. 20 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 25 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. 30 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) : 3060807 3 - 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é ; 5 - 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 oeuvre les étapes suivantes : 10 - 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 ; 15 - 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 20 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 oeuvre 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. 25 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 REALISATION 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 30 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 oeuvre l'invention ; - la figure 2 est un logigramme représentant un procédé de chargement 3060807 4 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 5 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 oeuvre 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 10 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 P, formé d'instructions exécutables par le processeur 4. 15 Par mesure de concision, on écrira ainsi dans la suite que le programme P, est exécutable par le processeur 4. Lorsqu'il est exécuté par le processeur 4, le programme P, permet la mise en oeuvre de fonctionnalités par l'appareil électronique 2, par exemple des fonctionnalités prévues dans le cadre du fonctionnement normal de cet appareil 20 électronique 2. Le programme P, peut en outre permettre la mise en oeuvre, 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 25 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 30 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 3060807 5 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 Element"), 5 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 Element"). En variante, l'entité électronique 10 pourrait être une carte à microcircuit 10 (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 eUICC pour "embedded Universal Circuit Card' (telle que décrite dans la norme ETSI TS 103 383). 15 L'entité électronique 10 comprend un processeur (par exemple un microprocesseur) et au moins une mémoire, notamment ici une mémoire non-volatile réinscriptible. Cette mémoire mémorise en particulier des instructions conçues de telle sorte que l'entité électronique 10 puisse mettre en oeuvre l'un au moins des procédés décrits ci-dessous en références aux figures 2 à 4 lorsque 20 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 condensat H, associé au programme P, mémorisé dans la mémoire 6 de 25 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 SpEc. Comme 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 30 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 150 15408, 3060807 6 avec un niveau supérieur ou égal à 4, ou à la norme FIPS (pour "Federal 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 5 programme embarqué dans l'appareil électronique 2 est écrite dans la mémoire 6 et un condensat correspondant Ho est écrit dans la mémoire de l'entité électronique 10. Le condensat 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 10 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é 15 électronique 10 La figure 2 est un logigramme représentant un procédé de chargement d'un programme P, dans l'appareil électronique 2 afin de mettre à jour le programme Pu_i embarqué dans cet appareil électronique 2. Ce procédé débute à l'étape E2 par l'émission, par le serveur 20 et à 20 destination du processeur 4 de l'appareil électronique 2, du programme P, et d'une signature (électronique) S, de ce programme P. (Une telle signature S, est par exemple générée au niveau du serveur 20 par application aux données formant le programme P, d'un algorithme cryptographique de signature utilisant une clé privée associée à la clé publique PKs déjà mentionnée.) 25 Le processeur 4 reçoit le programme P, et la signature S, et les transmet à l'entité électronique 10 à l'étape E4. L'entité électronique 10 reçoit ainsi le programme P, et la signature S, à l'étape E6. L'entité électronique 10 vérifie la signature S, à l'étape E8 : pour ce faire, 30 l'entité électronique 10 met en oeuvre un algorithme cryptographique de vérification de signature impliquant le programme reçu P,, la signature reçue S, 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 3060807 7 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_1) ne procède pas dans ce cas à l'installation du programme P, reçu. 5 Si la vérification de signature réussit à l'étape E8, l'entité électronique 10 détermine un condensat H, associé au programme P,, ici par application de la fonction de hachage G (Le, H,=G(P,)), et mémorise ce condensat H, 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 10 celui permettant la mise en oeuvre 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 ri, puis détermine un condensat Ho associé au programme P, pour chaque élément de diversification ri et mémorise les paires (ri, Ho) formées chacune d'un élément de diversification ri 15 et du condensat correspondant Ho. Le condensat Ho est par exemple déterminé en appliquant une fonction de hachage F à la concaténation de l'élément de diversification associé ri et du programme P, concerné : Ho = F(ri II Pu), où II est l'opérateur de concaténation. La fonction F est ici résistante aux attaques par recherche de second antécédent 20 (en anglais "second-preimage resistant"), 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 25 Authentication Code"), par exemple de type HMAC (NIST FIPS 198-1) ou CMAC (NIST SP800-38B). En variante, le condensat Ho 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 P, concerné en utilisant 30 l'élément de diversification ri concerné en tant que clé sécrète dans cette fonction de type MAC : Ho = F',;(P,). Selon une autre variante envisageable, le condensat H, (ou les paires élément de diversification ri - condensat Ho) peu(ven)t être déterminé(es) au préalable au sein du serveur 20 et transmis(es) à l'entité électronique 10 (par 3060807 8 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 5 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 condensat H, reçu (ou les paires ri, Ho reçues) est (sont) dans ce cas déchiffré(es) par l'entité 10 é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 condensat H, (ou les condensats Ho) soi(en)t obtenu(s) par application d'une fonction de hachage à 15 l'ensemble du contenu prévu de la mémoire 6 après mémorisation du programme P, (et non au seul programme Pu). Par ailleurs, dans ces cas où le condensat H, (ou les condensats H1) 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 S, 20 susmentionnée. Lorsque le condensat H, (ou les condensats Ho) 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 à 25 la mise à jour du programme embarqué au moyen du programme reçu P, (étape E18), par exemple en mémorisant le programme reçu P, 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 P, embarqué dans l'appareil 30 é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é P, destinée au processeur 4. 3060807 9 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é P, en transmettant la valeur de défi reçue CH et les données formant le programme embarqué P, (mémorisées dans la mémoire 6) à l'entité électronique 10 (étape 5 E22). L'entité électronique 10 reçoit les données formant le programme embarqué P, 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é P, produit 10 bien un résultat identique au condensat H, mémorisé dans la mémoire de l'entité électronique 10, ce qui est le cas si le programme embarqué P, n'a pas été altéré pas un attaquant puisqu'on a normalement comme indiqué ci-dessus : H, = G(P,). Pour que la vérification d'intégrité du programme P, assure l'absence 15 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 P, 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 20 transmettre à l'entité électronique 10 les données formant le programme P, (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 25 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 30 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 3060807 10 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é 5 é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 10 a effectivement vérifié l'intégrité du programme P, à 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é P. Si la valeur de réponse R n'est pas la valeur attendue (ou si aucune 15 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é P, et on considère donc alors que le programme embarqué P, est altéré (que ce soit fortuitement ou suite à une attaque). 20 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) ; 25 - 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 30 procédé de vérification de l'intégrité du programme P, 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é 3060807 11 du programme embarqué P, 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é P, en transmettant la valeur de défi reçue CH à l'entité électronique 10 (étape E52). 5 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 ri 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 ri). 10 L'élément de diversification ri 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 oeuvre du procédé de vérification d'intégrité décrit ici. L'entité électronique 10 transmet l'élément de diversification choisi ri au 15 processeur 4 à l'étape E56. Le processeur 4 reçoit l'élément de diversification ri à l'étape E58 et peut ainsi déterminer à l'étape E60 le condensat H'1 associé à cet élément de diversification ri et à la version courante P, du programme embarqué. Dans l'exemple décrit ici, le condensat H'n,1 est déterminé comme suit en utilisant la 20 fonction de hachage F mentionnée plus haut (dans le cadre de la détermination du condensat correspondant Ho mémorisé dans l'entité électronique 10) : H'n,1= F(ri II Pu). Le processeur 4 transmet alors à l'entité électronique 10 le condensat H'1 ainsi déterminé (étape E62). 25 L'entité électronique 10 reçoit à l'étape E64 le condensat H'1 déterminé par le processeur 4 et compare à l'étape E66 ce condensat 1-1'0 au condensat Ho 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 ri (choisi à l'étape E55). 30 Si le condensat H'1 reçu par l'entité électronique 10 diffère du condensat Ho mémorisé dans l'entité électronique 10, cela indique que le programme P, 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 3060807 12 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 condensat H'ro reçu par l'entité électronique 10 est identique au 5 condensat Ho 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é 10 secrète (ici la clé privée SK). On remarque que cette solution permet une vérification d'intégrité du programme P, par l'entité électronique 10 sans avoir à transférer l'intégralité du programme P, à l'entité électronique 10. L'entité électronique 10 transmet à l'étape E72 la valeur de réponse R au 15 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é 20 é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 25 a effectivement vérifié l'intégrité du programme P, à 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é P. Si la valeur de réponse R n'est pas la valeur attendue (ou si aucune 30 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é P, et on considère donc alors que le programme embarqué P, est altéré (que ce soit fortuitement ou suite à une attaque). 3060807 13 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. 10 REVENDICATIONS1. Procédé de vérification de l'intégrité d'un programme (Pu) 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 (Ha) mémorisée dans l'entité électronique (10) et d'une seconde donnée (H'',1) déterminée en fonction d'une partie au moins du programme (Pu) ; - en cas d'égalité entre la première donnée (Ha) et la seconde donnée (H'',1) à 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. 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 (Pu) ; - détermination (E26) de la seconde donnée par l'entité électronique (10) en fonction de ladite partie au moins du programme (Pu). 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 (Pu). 4. Procédé de vérification selon la revendication 1, comprenant les étapes suivantes : - transmission (E56) d'un élément de diversification (ri) de l'entité électronique (10) au processeur (4) ; 3060807 15 - détermination (E60) de la seconde donnée (H'n,1) par le processeur (4) en fonction de l'élément de diversification (r1) et de ladite partie au moins du programme (Pu). 5 5. Procédé de vérification selon la revendication 4, dans lequel la seconde donnée (H'n,1) est déterminée par application d'une fonction de hachage à la concaténation de l'élément de diversification (r1) et de ladite partie au moins du programme (Pu). 10 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). 15 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. 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). 20 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 oeuvre les étapes suivantes : - réception (E24 ; E54) d'une valeur de défi (CH) ; 25 - comparaison (E26 ; E66) d'une première donnée (Ha) mémorisée dans l'entité électronique (10) et d'une seconde donnée (H'n,1) déterminée en fonction d'une partie au moins d'un programme (Pu) 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 à 30 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). 3060807 16 10. Appareil électronique (2) comprenant un processeur (4), une mémoire (6) et une entité électronique (10) selon la revendication 9.