Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SECURE PROCESSOR WITH NO NON-VOLATILE MEMORY
Document Type and Number:
WIPO Patent Application WO/2013/186473
Kind Code:
A1
Abstract:
The invention relates to a method for managing the memory of a secure microcircuit, comprising steps executed by the microcircuit consisting in: applying a specific deterministic function (PUF) of the microcircuit to a first number (a0) in order to obtain a second number (a), generating a secret key (K) from the second number, receiving first data items (EC) from an external memory (DB), and applying a first cryptographic algorithm to the first data items using the secret key, in order to obtain second data items (Pgm) in a volatile memory of the microcircuit.

Inventors:
CHARRAT BRUNO (FR)
FEIX BENOIT (FR)
Application Number:
PCT/FR2013/051334
Publication Date:
December 19, 2013
Filing Date:
June 10, 2013
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
INSIDE SECURE (FR)
International Classes:
H04L9/08
Domestic Patent References:
WO2008152547A12008-12-18
Foreign References:
FR2964278A12012-03-02
Other References:
EDWARD SUH G ET AL: "Aegis: A Single-Chip Secure Processor", IEEE DESIGN & TEST OF COMPUTERS, IEEE SERVICE CENTER, NEW YORK, NY, US, vol. 24, no. 6, 1 November 2007 (2007-11-01), pages 570 - 580, XP011198556, ISSN: 0740-7475, DOI: 10.1109/MDT.2007.179
Attorney, Agent or Firm:
DE ROQUEMAUREL, Bruno et al. (FR)
Download PDF:
Claims:
REVENDICATIONS

1. Procédé de gestion d'une mémoire volatile d'un microcircuit sécurisé, comprenant une procédure de chargement de données comportant des étapes exécutées par le microcircuit consistant à :

appliquer une fonction déterministe (PUF) spécifique du microcircuit à un premier nombre (aO) pour obtenir un second nombre (a),

générer une clé secrète (K) en appliquant une fonction déterministe au second nombre,

recevoir d'une mémoire externe (LM, DB) des premières données (EC, ED), et

appliquer un premier algorithme de cryptographie aux premières données en utilisant la clé secrète, pour obtenir des secondes données (Pgm, Dt) dans une mémoire volatile (MEM2) du microcircuit.

2. Procédé selon la revendication 1, comprenant une procédure de sauvegarde de données, comprenant des étapes exécutées par le microcircuit consistant à :

appliquer un second algorithme de cryptographie à des données à sauvegarder (Pgm, Dt), en utilisant la clé secrète, pour obtenir des troisièmes données (EC, ED), et

transmettre les troisièmes données avec le premier nombre (aO) à l'extérieur du microcircuit pour les stocker dans une mémoire (LM, DB) externe au microcircuit.

3. Procédé selon la revendication 1 ou 2, dans lequel le premier nombre (aO) est généré par le microcircuit lors d'une procédure d'initialisation comprenant l'exécution de la procédure de chargement de données, et est transmis au microcircuit lors d'une procédure de sauvegarde de données.

4. Procédé selon l'une des revendications 1 à 3, dans lequel la fonction déterministe (PUF) spécifique du microcircuit est réalisée par un circuit (IFC) du microcircuit, qui est sensible aux conditions de fabrication du microcircuit, de sorte que deux microcircuits issus d'une même chaîne de fabrication mettent en œuvre des fonctions irréversibles respectives différentes.

5. Procédé selon l'une des revendications 1 à 3, dans lequel l'application d'une fonction déterministe spécifique du microcircuit au premier nombre (aO) est réalisée en appliquant une fonction irréversible standard au premier nombre et à une donnée secrète spécifique du microcircuit.

6. Procédé selon l'une des revendications 1 à 5, dans lequel les premières ou troisièmes données comprennent un bloc de données chiffrées (EC, ED) résultant du chiffrement par un calcul de chiffrement du second calcul cryptographique, appliqué aux secondes données (Pgm, Dt), le premier calcul cryptographique comprenant un calcul de déchiffrement du bloc de données chiffré pour obtenir les secondes données, le procédé comprenant une étape d'exploitation des secondes données résultant du calcul de déchiffrement.

7. Procédé selon l'une des revendications 1 à 6, dans lequel les premières ou troisièmes données comprennent une première signature des secondes données (Pgm,

Dt) obtenue par un premier calcul de signature du premier calcul cryptographique, le premier calcul cryptographique comprenant un calcul de signature pour obtenir une seconde signature, le procédé comprenant des étapes de comparaison de la première signature avec la seconde signature, et l'exploitation des premières ou troisièmes données reçues uniquement si la première signature correspond à la seconde signature.

8. Procédé selon l'une des revendications 1 à 7, dans lequel les secondes données sont du code (Pgm) exécutable par le microcircuit, des données (Dt) utilisées par le code exécutable étant stockées dans une mémoire non volatile (MEM3) du microcircuit, utilisée pour mémoriser exclusivement des données ne comportant pas de code exécutable.

9. Procédé selon l'une des revendications 1 à 7, dans lequel les secondes données comprennent du code (Pgm) exécutable par le microcircuit et des données

(Dt).

10. Procédé selon l'une des revendications 1 à 9, comprenant des étapes de insertion dans les secondes données (Pgm, Dt) d'un identifiant de bloc (CNT) qui est mémorisé de manière non volatile par le microcircuit, avant application du second calcul cryptographique aux secondes données,

extraction de l'identifiant de bloc (CNT') dans les premières ou troisièmes données reçues (EC, ED),

comparaison de l'identifiant de bloc extrait avec l'identifiant de bloc mémorisé, et

si l'identifiant de bloc extrait correspond à l'identifiant de bloc mémorisé, exploitation des premières ou troisièmes données et modification de l'identifiant de bloc mémorisé pour être inséré dans les secondes données avant une nouvelle application du premier calcul cryptographique aux secondes données.

11. Procédé selon la revendication 10, dans lequel l'identifiant de bloc (CNT) à insérer dans les secondes données (Pgm, Dt) et l'identifiant de bloc mémorisé sont fournis au microcircuit par un serveur distant (SRV).

12. Procédé selon la revendication 10, dans lequel l'identifiant de bloc (CNT) à insérer dans les secondes données (Pgm, Dt) est généré par le microcircuit et mémorisé de manière non volatile dans un circuit (MEM3, CNC) interne au microcircuit.

13. Procédé selon l'une des revendications 1 à 12, dans lequel la clé secrète (K) est générée en appliquant une opération d'exponentiation modulaire à un nombre (B) reçu de l'extérieur à la puissance le second nombre (a).

14. Procédé selon l'une des revendications 1 à 13, comprenant des étapes de génération d'une paire de clés publique et privée (RPK, RSK) à partir du second nombre (a), et de transmission de la clé publique générée à l'extérieur du microcircuit (SE, SE1, SE2).

15. Microcircuit comprenant un processeur (PRC), une mémoire programmable une seule fois (MEMl), une mémoire volatile (MEM2) et un circuit mettant en œuvre une fonction irréversible (IFC),

caractérisé en ce qu'il est configuré pour mettre en œuvre le procédé selon l'une des revendications 1 à 14.

16. Microcircuit selon la revendication 15, comprenant une mémoire non volatile, programmable une seule fois (MEM3), ou un compteur non volatil (CNC) mémorisant un identifiant du dernier bloc sauvegardé à l'extérieur du microcircuit (SE1, SE2).

Description:
PROCESSEUR SECURISE SANS MEMOIRE NON VOLATILE

La présente invention concerne généralement les microcircuits sécurisés tels que ceux qui sont intégrés dans des cartes à puce, et les objets portables tels que les téléphones mobiles, intégrant de telles cartes à puce.

La présente invention s'applique notamment aux cartes à puces permettant de sécuriser des transactions sensibles telles que des transactions de paiement ou d'accès à un service, à contact ou à champ proche NFC (Near Field Communication).

Les microcircuits comprennent généralement une mémoire non volatile, réinscriptible, pour mémoriser notamment le programme exécuté par un processeur du microcircuit et des données propres au système et d'autres à conserver entre deux transactions. Cette mémoire non volatile, généralement de type EEPROM ou Flash, est relativement coûteuse à fabriquer, comparativement au processeur, et occupe une surface importante du microcircuit. En outre, les techniques de fabrication requises pour fabriquer des cellules mémoires de mémoire non volatile ne sont pas disponibles dans les technologies les plus denses.

II peut donc être souhaitable de proposer un microcircuit sans mémoire non volatile et réinscriptible, ou avec une telle mémoire non volatile de faible capacité, insuffisante pour y mémoriser le programme d'exploitation ("operating System") exécuté par le processeur du microcircuit, et des données devant être conservées lorsque le microcircuit est mis hors tension. Les programmes et données devant être conservés peuvent être stockés à l'extérieur du microcircuit, par exemple dans une mémoire non volatile du dispositif dans lequel est intégré le microcircuit, et être chargés dans une mémoire volatile du microcircuit à la mise sous tension de ce dernier.

Cependant, la sauvegarde de programmes et de données à l'extérieur du microcircuit soulève des problèmes de sécurité. En effet, les microcircuits de carte à puce peuvent stocker dans des mémoires des données secrètes telles que des identifiants et des clés de chiffrement. Le contenu de ces mémoires n'est pas accessible de l'extérieur, seul le microcircuit peut y accéder. Par ailleurs, les programmes exécutés par ces microcircuits sont généralement certifiés. En revanche, la mémoire externe où seraient stockés les programmes et données à sauvegarder n'est pas nécessairement sécurisée, ni reliée au microcircuit par une liaison sécurisée. Il peut donc être nécessaire d'assurer la confidentialité et/ou l'intégrité des données et des programmes sauvegardés à l'extérieur du microcircuit. A cet effet, il peut être prévu de chiffrer et/ou de signer les programmes et les données à sauvegarder avant de les transmettre à l'extérieur du microcircuit. Le processeur doit donc disposer d'une clé de chiffrement secrète. En l'absence de mémoire non volatile, cette clé secrète ne peut pas être conservée par le microcircuit lorsque celui-ci est mis hors tension, afin de pouvoir déchiffrer des programmes et données reçus ou vérifier des signatures ultérieurement.

La sauvegarde de programmes et de données dans une mémoire externe peut également soulever des problèmes de sécurité, lorsqu'il s'agit de contrôler ou limiter un nombre d'opérations ou de transactions autorisées à être exécutées par le microcircuit. Ce problème se pose lorsque le microcircuit ne doit pouvoir exécuter qu'un nombre limité de transactions, par exemple dans le cadre d'applications de paiement ou de contrôle d'accès à un lieu ou un service. En effet, si les données de transactions sont stockées à l'extérieur du microcircuit, même sous forme chiffrée, une attaque dite "par rejeu" peut consister à remplacer un dernier bloc de données chiffrées par un bloc de données chiffrées précédemment transmis par le microcircuit. En l'absence de mémoire non volatile, le microcircuit ne peut pas déterminer si un bloc de données chiffrées reçu correspond au dernier bloc de données qu'il a émis pour être sauvegardé dans une mémoire non volatile externe.

II peut donc être souhaitable de proposer un microcircuit sans mémoire Flash ou EEPROM, ou avec une telle mémoire mais de faible capacité, insuffisante pour y stocker le programme exécuté par le microcircuit. Il peut être également souhaitable que ce microcircuit offre une sécurité au moins équivalente à un microcircuit comportant une mémoire Flash ou EEPROM permettant de sauvegarder tous les programmes et données utilisées par le microcircuit.

Des modes de réalisation concernent un procédé de gestion d'une mémoire volatile d'un microcircuit sécurisé, comprenant une procédure de chargement de données comportant des étapes exécutées par le microcircuit consistant à : appliquer une fonction déterministe spécifique du microcircuit à un premier nombre pour obtenir un second nombre, générer une clé secrète en appliquant une fonction déterministe au second nombre, recevoir d'une mémoire externe des premières données, et appliquer un premier algorithme de cryptographie aux premières données en utilisant la clé secrète, pour obtenir des secondes données dans une mémoire volatile du microcircuit. Selon un mode de réalisation, le procédé comprend une procédure de sauvegarde de données, comprenant des étapes exécutées par le microcircuit consistant à : appliquer un second algorithme de cryptographie à des données à sauvegarder, en utilisant la clé secrète, pour obtenir des troisièmes données, et transmettre les troisièmes données avec le premier nombre à l'extérieur du microcircuit pour les stocker dans une mémoire externe au microcircuit.

Selon un mode de réalisation, le premier nombre est généré par le microcircuit lors d'une procédure d'initialisation comprenant l'exécution de la procédure de chargement de données, et est transmis au microcircuit lors d'une procédure de sauvegarde de données.

Selon un mode de réalisation, la fonction déterministe spécifique du microcircuit est réalisée par un circuit du microcircuit, qui est sensible aux conditions de fabrication du microcircuit, de sorte que deux microcircuits issus d'une même chaîne de fabrication mettent en œuvre des fonctions irréversibles respectives différentes.

Selon un mode de réalisation, l'application d'une fonction déterministe spécifique du microcircuit au premier nombre est réalisée en appliquant une fonction irréversible standard au premier nombre et à une donnée secrète spécifique du microcircuit.

Selon un mode de réalisation, les premières ou troisièmes données comprennent un bloc de données chiffrées résultant du chiffrement par un calcul de chiffrement du second calcul cryptographique, appliqué aux secondes données, le premier calcul cryptographique comprenant un calcul de déchiffrement du bloc de données chiffré pour obtenir les secondes données, le procédé comprenant une étape d'exploitation des secondes données résultant du calcul de déchiffrement.

Selon un mode de réalisation, les premières ou troisièmes données comprennent une première signature des secondes données obtenue par un premier calcul de signature du premier calcul cryptographique, le premier calcul cryptographique comprenant un calcul de signature pour obtenir une seconde signature, le procédé comprenant des étapes de comparaison de la première signature avec la seconde signature, et l'exploitation des premières ou troisièmes données reçues uniquement si la première signature correspond à la seconde signature.

Selon un mode de réalisation, les secondes données sont du code exécutable par le microcircuit, des données utilisées par le code exécutable étant stockées dans une mémoire non volatile du microcircuit, utilisée pour mémoriser exclusivement des données ne comportant pas de code exécutable.

Selon un mode de réalisation, les secondes données comprennent du code exécutable par le microcircuit et des données.

Selon un mode de réalisation, le procédé comprend des étapes de : insertion dans les secondes données d'un identifiant de bloc qui est mémorisé de manière non volatile par le microcircuit, avant application du second calcul cryptographique aux secondes données, extraction de l'identifiant de bloc dans les premières ou troisièmes données reçues, comparaison de l'identifiant de bloc extrait avec l'identifiant de bloc mémorisé, et si l'identifiant de bloc extrait correspond à l'identifiant de bloc mémorisé, exploitation des premières ou troisièmes données et modification de l'identifiant de bloc mémorisé pour être inséré dans les secondes données avant une nouvelle application du premier calcul cryptographique aux secondes données.

Selon un mode de réalisation, l'identifiant de bloc à insérer dans les secondes données et l'identifiant de bloc mémorisé sont fournis au microcircuit par un serveur distant.

Selon un mode de réalisation, l'identifiant de bloc à insérer dans les secondes données est généré par le microcircuit et mémorisé de manière non volatile dans un circuit interne au microcircuit.

Selon un mode de réalisation, la clé secrète est générée en appliquant une opération d'exponentiation modulaire à un nombre reçu de l'extérieur à la puissance le second nombre.

Selon un mode de réalisation, le procédé comprend des étapes de génération d'une paire de clés publique et privée à partir du second nombre, et de transmission de la clé publique générée à l'extérieur du microcircuit.

Des modes de réalisation concernent également un microcircuit comprenant un processeur, une mémoire programmable une seule fois, une mémoire volatile et un circuit mettant en œuvre une fonction irréversible, le microcircuit étant configuré pour mettre en œuvre le procédé tel que précédemment défini.

Selon un mode de réalisation, le microcircuit comprend une mémoire non volatile, programmable une seule fois, ou un compteur non volatil mémorisant un identifiant du dernier bloc sauvegardé à l'extérieur du microcircuit.

Des exemples de réalisation de l'invention seront décrits dans ce qui suit, à titre non limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente schématiquement un dispositif portable comprenant un microcircuit sécurisé,

la figure 2 représente schématiquement des circuits du microcircuit sécurisé, selon un mode de réalisation,

la figure 3 représente des étapes exécutées à la mise sous tension du microcircuit sécurisé et à la suite de la réception d'un signal d'initialisation, selon un mode de réalisation,

la figure 4 représente des étapes exécutées à la mise sous tension du microcircuit sécurisé et à la suite de la réception d'un programme à recharger dans le microcircuit sécurisé, selon un mode de réalisation,

la figure 5 représente des étapes exécutées par le microcircuit sécurisé et par un serveur en communication avec le microcircuit, selon un mode de réalisation,

la figure 6 représente des étapes exécutées par le microcircuit sécurisé et par un processeur en communication avec le microcircuit, selon un mode de réalisation, les figures 7 et 8 représentent schématiquement des circuits du microcircuit sécurisé, selon d'autres modes de réalisation,

les figures 9 à 12 représentent des étapes exécutées par le microcircuit, et un processeur ou un serveur en communication avec le microcircuit, selon d'autres modes de réalisation,

la figure 13 représente schématiquement un circuit du microcircuit, selon un mode de réalisation,

la figure 14 représente des étapes exécutées par le microcircuit sécurisé et par un serveur en communication avec le microcircuit, selon un autre mode de réalisation.

La figure 1 représente un dispositif portable HD tel qu'un téléphone mobile. Le dispositif HD comprend par exemple un processeur principal BBP, également appelé processeur en "bande de base" ("Base-Band Processor"), un circuit de radiocommunication RCT connecté au processeur BBP, et un microcircuit SE relié au processeur BBP. Le microcircuit SE peut être de type UICC ("Universal Integrated Circuit Card"), par exemple de type mini-SIM ou micro-SIM, ou de type micro-SD ("Micro Secure Digital card").

Le dispositif portable HD peut être de type à champ proche NFC, équipé d'une interface de communication à champ proche. Ainsi, le dispositif portable peut comprendre également un contrôleur NFC, référencé NFCC, qui est relié au processeur BBP par une liaison B2, un circuit d'antenne AC1 connecté au contrôleur NFCC. Le microcircuit SE peut être relié au contrôleur NFCC par une liaison B3. Le microcircuit SE peut être configuré pour effectuer des transactions NFC avec un terminal de transaction (non représenté) par l'intermédiaire du contrôleur NFCC. Le contrôleur NFCC comprend une interface de communication sans contact CLF connectée au circuit d'antenne AC1. Le contrôleur NFCC peut se présenter sous la forme d'un circuit intégré, tel que MicroRead® commercialisé par le Déposant.

Le dispositif HD peut également comprendre un autre processeur sécurisé, par exemple intégré dans une carte SIM ("Subscriber Identity Module"), ainsi qu'une carte mémoire non volatile, telle qu'une carte Micro-SD. Le microcircuit SE qui est par exemple intégré dans une carte, peut être relié au processeur BBP par une liaison Bl .

La figure 2 représente des circuits du microcircuit SE. Le microcircuit SE comprend un processeur PRC, ainsi que des mémoires MEM1, MEM2 et des circuits de calcul cryptographiques CRYC, connectés au processeur PRC. La mémoire MEM1 est par exemple de type ROM ("Read-Only Memory") ou de type programmable une seule fois OTP ("One Time Programmable") et la mémoire MEM2 est volatile, par exemple de type RAM ("Random Access Memory").

Selon un mode de réalisation, le microcircuit ne comprend pas de mémoire réinscriptible non volatile, mais comprend un circuit physiquement non reproductible IFC connecté au processeur PRC. Le circuit IFC met en œuvre une fonction déterministe, irréversible, physiquement non reproductible PUF ("Physically Unclonable Function"), dont le fonctionnement est essentiellement imprédictible et non déterminable si l'on ne dispose pas du microcircuit. Une telle fonction peut donc être utilisée à des fins d'identification de microcircuit. Les fonctions PUF sont généralement réalisées par un circuit sensible aux conditions de fabrication du circuit, de sorte que les fonctions PUF respectives de deux microcircuits ont une probabilité très faible de fournir un résultat identique même si les deux microcircuits sont issus d'une même chaîne de fabrication. La fonction PUF peut donc être une fonction à sens unique équivalente à une fonction de hachage telle que SHAl, dont le fonctionnement ne peut pas être reproduit. La fonction PUF peut également fournir toujours la même valeur. Le circuit IFC est utilisé pour générer une ou plusieurs valeurs secrètes qui peuvent par exemple servir à générer des clés de chiffrement.

La figure 3 représente des étapes exécutées par un serveur SRV d'une autorité de confiance, par le processeur PRC du microcircuit sécurisé SE préalablement mis en communication avec le serveur SRV. La communication entre le microcircuit SE et le serveur SRV peut être sécurisée. A la suite de la mise sous tension POR du microcircuit SE, le microcircuit SE se met en attente d'un message. A une étape SI, le serveur SRV émet un message d'initialisation Init. A la réception de ce message, le microcircuit exécute des étapes S6 à S8. A l'étape S6, le microcircuit SE reçoit le message émis par le serveur SRV. S'il s'agit d'un message d'initialisation, le microcircuit SE exécute des étapes S7, S8 et S 10. A l'étape S7, le microcircuit SE génère un nombre aO à l'aide d'une fonction de génération d'un nombre aléatoire RND1. Le nombre aO peut également être fourni par le serveur SRV. Dans ce cas, l'utilisation de la fonction RND1 n'est pas nécessaire. Le nombre aO est appliqué en entrée de la fonction PUF qui fournit un nombre a à conserver secret par le microcircuit. Compte tenu des propriétés de la fonction PUF, la connaissance du nombre aO ne permet pas de déterminer le nombre secret a.

Le nombre a est utilisé pour générer une ou plusieurs clés de chiffrement. Ainsi, le nombre a peut par exemple être utilisé pour mettre en œuvre l'algorithme de cryptographie de Diffie-Hellman à partir de nombres g et p, par exemple inscrits dans la mémoire MEM1 lors de la fabrication du microcircuit. A cet effet un nombre A est calculé par une opération d'exponentiation modulaire, en élevant le nombre g à la puissance a modulo p. A l'étape S8, le microcircuit SE transmet au serveur SRV en réponse au message d'initialisation, une requête d'un programme à charger et exécuter, contenant les nombres A et aO, ainsi qu'un identifiant Id du microcircuit SE. A l'étape S 10, le microcircuit SE se met en attente d'une réponse à la requête émise à l'étape S8.

A la réception de cette requête, le serveur SRV exécute des étapes S2, S4 et S5. A l'étape S2, le serveur SRV génère un nombre aléatoire b à l'aide d'une fonction aléatoire RND2. Le nombre b est utilisé pour calculer un nombre B, par une opération d'exponentiation modulaire modulo p élevant un nombre g à la puissance le nombre b. Le serveur SRV détermine une clé secrète K par une opération d'exponentiation modulaire modulo p en élevant à la puissance le nombre b, le nombre A reçu dans la requête de programme. A l'étape S4, le serveur SRV chiffre à l'aide de la clé K, un programme exécutable Pgm à transmettre au microcircuit SE. L'algorithme de chiffrement utilisé peut être ici un algorithme de cryptographie symétrique tel que l'AES (Advanced Encryption Standard) ou le TDES (Triple Digital Encryption Standard).

A l'étape S5, le serveur SRV transmet au microcircuit SE le nombre B, ainsi que le bloc de programme chiffré EC obtenu à l'étape S4. Le serveur SRV peut stocker dans une base de données DB l'identifiant Id du microcircuit SE et en association avec cet identifiant, les données aO et B et la clé K ou bien les données A et b permettant de régénérer la clé K (étape S 15).

A la réception du bloc de programme chiffré EC, le microcircuit SE exécute des étapes S 12 à S 14. A l'étape S 12, le microcircuit SE détermine la clé secrète K en élevant le nombre B reçu à la puissance le nombre a modulo p. De cette manière, le microcircuit SE et le serveur SRV partagent la même clé secrète K. A l'étape S 13, le microcircuit SE déchiffre le bloc programme chiffré EC à l'aide de la clé K, et charge le programme Pgm ainsi obtenu dans sa mémoire MEM2. A l'étape S 14, le microcircuit SE exécute le programme Pgm ainsi chargé dans la mémoire MEM2.

L'identifiant Id du circuit peut être choisi égal au résultat de la fonction PUF appliqué à un nombre IdO qui peut être mémorisé à l'extérieur du microcircuit avec les nombres aO et B. Le nombre IdO peut également être choisi égal à 0. La clé utilisée pour chiffrer et déchiffrer le programme Pgm peut être non pas la clé K qui peut être considérée comme une clé maître, mais une clé dérivée obtenue en chiffrant un nombre aléatoire par exemple, à l'aide de la clé K, le nombre aléatoire étant transmis par le serveur SRV au microcircuit SE par exemple à l'étape S5.

Les étapes de la figure 3 peuvent être exécutées une seule fois, par exemple avant la remise du microcircuit SE à un utilisateur final. Une nouvelle exécution de ces étapes peut être empêchée en fermant ou ouvrant définitivement un contact (fusible) à l'intérieur du microcircuit SE. Si le microcircuit SE est mis hors tension, puis mis à nouveau sous tension, seules certaines étapes représentées sur la figure 3 nécessitent d'être exécutées, notamment pour régénérer la clé K.

Ainsi, la figure 4 représente des étapes exécutées par le serveur SRV et par le microcircuit SE, à chaque mise sous tension de ce dernier, une fois que le serveur SRV a mémorisé dans une base de données DB les nombres aO et B, et la clé K, en association avec l'identifiant Id du microcircuit SE. A la suite de la mise sous tension POR du microcircuit SE, le microcircuit SE se met en attente d'un message. A une étape S 16, le serveur SRV émet un message de début de transaction Trs. A la réception de ce message, le microcircuit exécute des étapes S 17 et S 18, puis l'étape S 10 précédemment décrite. A l'étape S 17, le microcircuit SE reçoit le message émis par le serveur SRV. S'il s'agit d'un message de début de transaction, le microcircuit SE exécute les étapes S18 et S 10. A l'étape S 18, le microcircuit SE transmet une requête de programme et de données avec son identifiant Id.

A la réception de ce message, le serveur SRV exécute les étapes S 19 et S4 et S5'. A l'étape S 19, le serveur SRV reçoit l'identifiant Id et recherche dans sa base de données DB la clé K et les données aO et B correspondant à l'identifiant Id. A l'étape S4, le serveur SRV chiffre le programme Pgm à exécuter par le microcircuit SE à l'aide de la clé K. A l'étape S5', le serveur SRV transmet au microcircuit SE le bloc de programme chiffré EC obtenu, ainsi que les nombres aO et B. A la réception de ces données, le microcircuit SE exécute les étapes SU à S 14. A l'étape SU, le microcircuit SE calcule la donnée secrète a en appliquant la fonction PUF à la donnée aO reçue. Le microcircuit SE peut ensuite exécuter les étapes S 12 à S 14 précédemment décrites de génération de la clé K, de déchiffrement du bloc de programme chiffré EC à l'aide de la clé K, et d'exécution du programme Pgm.

Sur la figure 4, les communications entre le microcircuit SE et le serveur SRV peuvent être établies par l'intermédiaire du processeur BBP. Dans ce cas, l'étape S 14 peut être suivie d'une étape de sauvegarde du programme EC chiffré à l'aide de la clé K, et des données aO et B, dans une mémoire non volatile telle qu'une mémoire LM connectée au processeur BBP. A la mise sous tension du microcircuit SE, le processeur BBP peut transmettre le bloc de programme chiffré EC et les nombres aO et B au microcircuit SE, pour que ce dernier puisse générer la clé K, puis déchiffrer et exécuter le programme Pgm ainsi transmis.

Lorsque le microcircuit SE est relié à distance au serveur SRV, il peut être nécessaire d'authentifier au préalable le microcircuit SE. A cet effet, le serveur SRV peut exécuter des étapes S20 à S24 représentées sur la figure 5, avant de transmettre le programme Pgm à exécuter au microcircuit SE à l'étape S4. Les étapes S20 à S24 peuvent être exécutées par exemple à la suite de l'étape S2 (figure 3) ou S 19 (figure 4). A l'étape S20, le serveur SRV transmet au microcircuit SE une requête d'authentification contenant un nombre aléatoire r. A la réception de cette requête d'authentification, le microcircuit SE exécute des étapes S21 et S22. A l'étape S21, le microcircuit SE chiffre le nombre r reçu et son identifiant Id à l'aide de la clé K. A l'étape S22, le microcircuit SE transmet le résultat du chiffrement EIA au serveur SRV. A l'étape S23, le serveur SRV reçoit la donnée chiffrée EIA et la déchiffre à l'aide de la clé K. Si à l'étape S24, les données résultant du déchiffrement à l'étape S23 ne correspondent pas à l'identifiant Id du microcircuit sécurisé et au nombre aléatoire r généré pour l'identifiant Id et transmis à l'étape S20, le serveur SRV estime qu'il n'est pas en communication avec le microcircuit sécurisé authentique attendu et met fin à la procédure, sans envoyer le programme Pgm à exécuter par le microcircuit SE (étape S4). Dans le cas contraire, le serveur SRV exécute les étapes S4, puis S5 ou S5'. Les figures 3 et 4 illustrent le cas où le microcircuit SE n'a pas besoin de mémoriser des données à chaque exécution d'un programme reçu du serveur SRV et dispose d'un accès au serveur. Les figures 3 et 4 illustrent également le cas où le microcircuit SE est toujours alimenté par exemple par une batterie du dispositif HD, les étapes de la figure 3 ou 4 étant exécutées exceptionnellement pour réinitialiser le microcircuit en cas de coupure de l'alimentation de ce dernier.

Dans d'autres cas, il peut être nécessaire de mémoriser à la fois le programme Pgm et des données dans un mode hors ligne, à chaque exécution du programme. Ainsi, la figure 6 représente des étapes exécutées par le microcircuit SE et le processeur BBP du dispositif HD. A la fin ou durant l'exécution du programme Pgm à l'étape S 14, le microcircuit SE exécute des étapes S25 et S26. A l'étape S25, le microcircuit SE chiffre le programme exécuté Pgm avec des données à sauvegarder Dt, en utilisant la clé K. A l'étape S26, le bloc de programme et données ED résultant de ce chiffrement est transmis au processeur BBP avec les données aO et B. A une étape S27, le processeur BBP reçoit le bloc chiffré ED et les données aO et B et les mémorise localement dans sa mémoire non volatile LM.

Lorsque le microcircuit SE est remis sous tension et reçoit une requête de début de transaction à l'étape S28, il exécute les étapes S29 et S30. A l'étape S29, s'il s'agit d'un message de début de transaction, le microcircuit SE exécute l'étape S30. A l'étape S30, le microcircuit SE transmet une requête de programme et de données avec son identifiant Id. Le processeur BBP en mode hors ligne reçoit la requête de programme et exécute des étapes S31 et S32. A l'étape S31, le processeur BBP lit la mémoire LM pour y retrouver un dernier bloc de programme et de données chiffrés ED et les nombres aO et B. A l'étape S32, le processeur BBP transmet au microcircuit SE le bloc ED lu, ainsi que les nombres aO et B. A la réception du bloc ED et des nombres aO et B, le microcircuit SE exécute les étapes S 10 à S 12, précédemment décrites, puis une étape S 13' où il déchiffre le bloc ED et charge le programme Pgm et les données Dt déchiffrées dans sa mémoire MEM2. Le microcircuit SE exécute ensuite le programme Pgm à l'étape S 14.

Dans les étapes de la figure 6, si le programme et/ou les données ne sont pas confidentiels, seule une signature ou une somme de contrôle du programme et/ou des données peut être calculée à l'étape S25, et transmise à l'étape S26 avec le programme Pgm et/ou les données Dt non chiffrées. Dans ce cas, l'étape S 13' comprend une vérification de la signature ou de la somme de contrôle transmise avec le programme Pgm et/ou les données Dt à l'étape S25. L'étape S14 est alors exécutée seulement si la signature ou la somme de contrôle est correcte. Si l'intégrité et la confidentialité des programmes et/ou données doit être assurée, le programme Pgm et/ou les données Dt peuvent également être à la fois chiffrés et signés avant d'être transmis à l'extérieur du microcircuit SE.

Dans certaines applications, il peut être nécessaire de protéger le microcircuit

SE contre ce que l'on appelle le "rejeu" d'un ancien bloc de programme et/ou de données ED qui est authentique mais n'est pas le dernier bloc sauvegardé par le microcircuit SE. Pour protéger le microcircuit SE contre une attaque par rejeu, le microcircuit peut être équipé d'une mémoire non volatile de faible capacité, par exemple de quelques dizaines d'octets, ou bien une mémoire programmable une seule fois qui peut être fabriquée à moindre coût par comparaison avec une mémoire de type Flash ou EEPROM, ou encore une mémoire RAM de faible capacité, alimentée par une batterie miniaturisée lorsque le microcircuit n'est plus alimenté par une source de tension d'alimentation externe. Ici "faible capacité" signifie de capacité insuffisante pour sauvegarder le programme Pgm et éventuellement les données Dt. Ainsi, la figure 7 représente un microcircuit SE1 qui diffère du microcircuit SE uniquement en ce qu'il comprend une telle mémoire MEM3 de faible capacité, non volatile et/ou programmable une seule fois, ou bien une mémoire volatile sauvegardée par une batterie dédiée qui est rechargée lorsque le microcircuit est relié à une source de tension d'alimentation externe.

Selon un mode de réalisation, la mémoire MEM3 est utilisée pour mémoriser des données devant être sauvegardées à chaque exécution du programme Pgm, et donc peut présenter une capacité juste suffisante pour sauvegarder ces données. Seul le programme Pgm est sauvegardé à l'extérieur du microcircuit SE1, aux étapes S25 à S27, et rechargé à l'étape S32. Cette disposition permet de contrer les attaques par rejeu, sachant que le programme Pgm n'est pas modifié à chaque exécution de celui-ci.

La figure 8 représente un microcircuit SE2 selon un autre mode de réalisation. Le microcircuit SE2 comprend un compteur réalisé par un circuit en logique câblée CNC qui peut être alimenté par une batterie miniature dédiée BT. La batterie BT est rechargée lorsque le microcircuit est relié à une source de tension d'alimentation externe.

La figure 9 représente des étapes exécutées par le microcircuit SE1 ou SE2 et le processeur BBP, permettant d'empêcher une attaque par rejeu. Les étapes de la figures 9 diffèrent de celles de la figure 6 en ce que l'étape S25 est remplacée par des étapes S40 et S41, et l'étape S 13' est remplacée par des étapes S42 et S43. A l'étape S40, la valeur d'un compteur CNT mémorisée dans la mémoire MEM3 ou fournie par le circuit CNC est incrémentée avant d'être chiffrée avec le programme Pgm et les données Dt à l'étape S41. A cet effet, la valeur CNT peut être concaténée avec le programme Pgm et les données Dt. A l'étape S42, une valeur de compteur CNT' est déchiffrée avec le programme Pgm et les données Dt préalablement reçues à l'étape S 10. A l'étape S43, le microcircuit SE1, SE2 compare la valeur de compteur CNT' avec la valeur CNT mémorisée dans la mémoire MEM3 ou fournie par le circuit CNC. Le programme déchiffré et chargé dans la mémoire MEM2 est ensuite exécuté à l'étape S 14 uniquement si les deux valeurs de compteur CNT et CNT' sont identiques. De cette manière, si le microcircuit SE1, SE2 reçoit à l'étape S 10 un autre bloc que le dernier bloc de programme et de données chiffrés ED sauvegardé à l'étape S26, il n'exécute pas le programme déchiffré Pgm à l'étape S 14.

Il est à noter que les étapes S26 à S32 (figures 6 et 9) peuvent aussi être exécutées avec un serveur distant, tel que le serveur SRV, avec lequel le dispositif est en communication.

La mémoire non volatile MEM3 ou le circuit CNC pour conserver la valeur d'un compteur, ne sont pas forcément nécessaires si le microcircuit a systématiquement accès au serveur SRV lors de l'exécution du programme Pgm. En effet, à chaque exécution du programme Pgm, le serveur SRV peut incrémenter la valeur du compteur CNT et transmettre la valeur de ce compteur pour comparaison avant ou pendant chaque exécution du programme Pgm. Ainsi, la figure 10 représente des étapes exécutées par le microcircuit SE et le processeur BBP. Les étapes de la figure 10 diffèrent de celles représentées sur la figure 9, en ce que l'étape S40 est remplacée par des étapes S35 et S36, et des étapes S37 et S38 sont insérées entre les étapes S42 et S43. A l'étape S35, le microcircuit SE émet un message de requête d'une nouvelle valeur de compteur géré par le serveur SRV en relation avec un identifiant Id du microcircuit SE. Ce message est relayé par le processeur BBP. A l'étape S36, le serveur SRV transmet au microcircuit SE, par l'intermédiaire du processeur BBP, la valeur requise CNT, éventuellement chiffrée à l'aide de la clé K. La valeur CNT est chiffrée avec le programme Pgm et les données Dt à l'étape suivante S41.

A l'étape S37 exécutée à la suite de l'étape S42, le microcircuit ST émet un message de requête de la valeur courante du compteur géré par le serveur SRV en relation avec l'identifiant Id du microcircuit SE. Ce message est relayé par le processeur BBP. A l'étape S38, le serveur SRV transmet au microcircuit SE, par l'intermédiaire du processeur BBP, la valeur requise du compteur CNT, éventuellement chiffrée à l'aide de la clé K. A l'étape S43, le microcircuit SE reçoit la valeur CNT et la compare à la valeur du compteur CNT' qu'il a obtenue à l'étape de déchiffrement S42. L'exécution du programme Pgm est lancée ou poursuivie à l'étape S 14 uniquement si les valeurs de compteurs CNT et CNT' correspondent.

L'utilisation d'un compteur permet de distinguer différents blocs de données stockés à l'extérieur du microcircuit, et de déterminer si un bloc de données reçu par le microcircuit correspond au dernier bloc de données émis par le microcircuit. Il n'est donc pas nécessaire que les valeurs de compteur attribuées à des blocs successivement sauvegardés à l'extérieur du microcircuit soient consécutives ou croissantes, ou encore décroissantes. Il importe simplement qu'une valeur de compteur attribuée à un bloc de données ne soit pas attribuée par le microcircuit à un autre bloc de donnée.

La mémoire MEM3 du microcircuit SEl peut être utilisée pour mémoriser une clé publique du serveur SRV, permettant d'authentifier le programme et les données transmises par le serveur SRV. Cette clé étant publique, la mémoire MEM3 n'a pas besoin d'être sécurisée. La clé publique peut être utilisée par le microcircuit SEl pour authentifier le serveur SRV lors de la génération d'une clé de chiffrement commune. La figure 11 représente des étapes d'authentifïcation du serveur SRV, exécutées durant une phase d'initialisation du microcircuit. Ces étapes peuvent être précédées d'une séquence d'initialisation en usine comprenant les étapes SI à S7 au cours desquelles, le microcircuit génère le nombre aO et un identifiant Id, calcule les nombres a et A, et transmet l'identifiant Id et les nombres aO et A à un serveur qui enregistre les données reçues dans la base de données DB.

Les étapes de la figure 11 comprennent des étapes S51 à S65. A l'étape S51, le serveur SRV émet une requête d'identifiant du microcircuit. A l'étape S52, le microcircuit SEl reçoit cette requête et émet en réponse son identifiant Id à l'étape S53. A l'étape S54, le serveur SRV reçoit l'identifiant Id et recherche dans la base de données DB, les nombres aO et B, ainsi que la clé K, correspondant à l'identifiant Id. A l'étape S55 suivante, le serveur SRV génère un nombre aléatoire r et signe les nombres B et r, par exemple concaténés ensemble avec une clé privée SSK, pour obtenir une signature SSB. A l'étape S56 suivante, le serveur SRV transmet au microcircuit SEl un message d'initialisation contenant les nombres aO, B et r et la signature SSB. Ce message d'initialisation est reçu par le microcircuit SEl à l'étape S57. A l'étape S58 suivante, le microcircuit SEl teste la signature SSB en utilisant les nombres B et r reçus et la clé publique SPK correspondant à la clé SSK, qu'il mémorise dans la mémoire MEM3. Le microcircuit SEl exécute les étapes suivantes S59 à S652 seulement si la signature SSB est correcte. A l'étape S59, le microcircuit SEl calcule le nombre a en appliquant la fonction PUF au nombre aO reçu, et détermine la clé K en élevant le nombre B à la puissance le nombre a modulo le nombre p. A l'étape S60, le microcircuit SEl détermine une clé Ks en chiffrant le nombre r à l'aide de la clé K. Aux étapes S61, S62, le microcircuit SEl chiffre un identifiant Id du microcircuit à l'aide de la clé Ks, et envoie l'identifiant ainsi chiffré Eid au serveur SRV. A la réception de l'identifiant chiffré Eid, le serveur SRV exécute des étapes S63 à S66. A l'étape S63, le serveur SRV détermine la clé Ks à l'aide de la clé K et du nombre r. Cette étape peut être exécutée avant la réception de l'identifiant chiffré Eid. A l'étape S64, le serveur SRV reçoit l'identifiant chiffré Eid et le déchiffre à l'aide de la clé Ks. A l'étape S65, le serveur vérifie que l'identifiant Id' ainsi obtenu correspond à celui utilisé à l'étape S54. Si les identifiants Id et Id' correspondent, le serveur SRV exécute l'étape S66 où il mémorise les nombres aO, B, A et b en association avec l'identifiant Id dans la base de données DB de microcircuits mis en service. La clé K peut être mémorisée à la place des nombres A et b.

La clé publique SPK peut être également utilisée par le microcircuit SEl pour authentifier le serveur SRV lors de la réception de programme et de données. Ainsi, la figure 12 représente des étapes S71 à S83 de transmission d'un programme et de données par le serveur SRV au microcircuit SEl . L'étape S71 est précédée des étapes S51 à S55 au cours desquelles le serveur SRV demande l'identifiant Id du microcircuit SEl et calcule la signature SSB. A l'étape S71, le serveur SRV transmet au microcircuit SEl une requête de début de transaction contenant les nombres aO, B, r et la signature SSB. Cette requête est reçue par le microcircuit SEl à l'étape S72. A l'étape S73, le microcircuit SEl le microcircuit SEl teste la signature SSB en utilisant les nombres B et r reçus et la clé publique SPK correspondant à la clé SSK, qu'il mémorise dans la mémoire MEM3. Les étapes suivantes S74 à S82 sont exécutées seulement si la signature SSB est correcte. A l'étape S74, le microcircuit SEl calcule le nombre a en appliquant la fonction PUF au nombre aO reçu, et détermine la clé K en élevant le nombre B à la puissance le nombre a modulo le nombre p. A l'étape S75, le microcircuit SEl détermine une clé Ks en chiffrant le nombre r à l'aide de la clé K. A l'étape S76, le microcircuit transmet au serveur SRV une requête de programme et de données contenant l'identifiant Id qui peut être chiffré comme à l'étape S61. A la réception de l'identifiant Id, le serveur SRV exécute des étapes S77 à S79. A l'étape S77, le serveur SRV détermine la clé Ks à l'aide de la clé K et du nombre r. Cette étape peut être exécutée avant la réception de l'identifiant Id. A l'étape S78, le serveur SRV chiffre le programme et les données à envoyer au microcircuit SEl à l'aide de la clé Ks et signe le bloc chiffré obtenu ED, éventuellement concaténé avec un nombre r choisi aléatoirement, en utilisant la clé secrète SSK. A l'étape S79, le serveur SRV transmet au microcircuit SEl le bloc chiffré ED, la signature SSP obtenue à l'étape S78 et éventuellement le nombre r. Les données ED, SSP et r sont reçues à l'étape S80 par le microcircuit SEl qui exécute alors l'étape S81. A l'étape S81, le microcircuit SEl teste la signature SSP en utilisant la clé publique SPK stockée dans la mémoire MEM3, le bloc ED et le nombre r. Les étapes suivantes S82 et S83 sont exécutées seulement si la signature SSP est correcte. A l'étape S82, le microcircuit SEl déchiffre le bloc ED et charge le programme Pgm et les données Dt ainsi obtenus dans sa mémoire MEM2. A l'étape S83, le microcircuit SEl exécute le programme Pgm.

Bien entendu, les données chiffrées ED transmises à l'étape S79 et déchiffrées à l'étape S 82 peuvent ne comprendre qu'un programme à exécuter par le microcircuit SEl ou seulement des données Dt. Par ailleurs, le programme Pgm et les données Dt peuvent bien entendu être chiffrés avec la clé K au lieu de la clé Ks.

Par ailleurs, la clé utilisée à l'étape S21 ou S21' peut être une autre clé que la clé K utilisée dans les échanges avec le serveur SRV. Ainsi une clé Kl peut être générée par exemple à partir d'un nombre h mémorisé dans la mémoire MEM1, élevé à la puissance a modulo p. Le programme et les données peuvent aussi être chiffrés séparément dans des blocs différents, éventuellement avec des clés différentes. Ainsi, le programme Pgm peut être chiffré à l'aide de la clé K ou Kl, et une autre clé K2 peut être générée pour chiffrer les données Dt. La clé K2 peut être générée à partir d'un nombre secret c obtenu en appliquant la fonction PUF à un nombre aléatoire cO, et en élevant le nombre g ou h à la puissance le nombre c modulo p. Le nombre cO est alors sauvegardé avec le nombre aO à l'extérieur du microcircuit SE avec les blocs de programme et de données chiffrés. Les clés Kl, K2 peuvent aussi être générées à partir d'une fonction irréversible H appliquée à un premier nombre j, par exemple choisi aléatoirement, ou égal à la clé K, concaténé avec un nombre i qui est changé à chaque génération de clé. Le nombre i peut par exemple être incrémenté à chaque génération de clé. La fonction irréversible peut être une fonction de hachage tel que SHAl, ou SHA256.

Comme illustré sur la figure 13, le circuit IFC peut comprendre un circuit PUC implémentant une fonction PUF, couplé à un circuit de correction d'erreur ECC recevant par ailleurs une information de correction d'erreur ECI. L'information ECI peut être déterminée durant une phase de mise en service du microcircuit SE, SE1, SE2. L'information ECI peut être mémorisée dans une mémoire inscriptible une seule fois, par exemple la mémoire MEM3, ou bien être déterminée à chaque mise sous tension du microcircuit SE, SE1, SE2.

Dans les figures 3 à 6, et 9 à 12, la clé K a été générée en appliquant l'algorithme de Diffie-Hellman. D'autres algorithmes de cryptographie peuvent bien entendu être mis en œuvre. Ainsi, un algorithme de cryptographie asymétrique tel que RSA (Rivest, Shamir, Adleman) ou à base de courbe elliptique, peut également être mis en œuvre. Pour mettre en œuvre l'algorithme RSA, le microcircuit peut utiliser le nombre a résultant de la transformation du nombre aO par la fonction PUF comme graine pour générer deux grands nombres premiers p et q. La clé privée comprend les nombres p et q et un nombre d tel que e-d = 1 modulo phi, avec phi = lcm(p-l), (q- 1)), 1cm représentant le plus petit multiple commun à (p-1) et (q-1), e étant un nombre choisi plus grand que 1 tel que gcd(e, phi) = 1, gcd représentant le plus grand diviseur commun des nombres e et phi. La clé publique comprend les nombres n=pq et e, qui sont transmis au serveur SRV avec le nombre aO qui permet au microcircuit SE, SE1 de regénérer les nombres p, q et d.

Les nombres p et q peuvent aussi être mémorisés dans la mémoire MEM1. Dans ce cas, le nombre a peut être utilisé pour générer les nombres e et d.

Le chiffrement d'une donnée x à l'aide de la clé publique est effectué en élevant cette donnée x à la puissance e modulo n. Le déchiffrement d'une donnée y chiffrée à l'aide de la clé publique, est effectué en élevant cette donnée y à la puissance d modulo n, sachant que e-d = 1 modulo phi.

La figure 14 représente des étapes S90 à SI 10 exécutées par le microcircuit

SE (ou l'un des microcircuits SE1 et SE2), et par le serveur SRV, utilisant un algorithme cryptographique asymétrique tel que RSA ou à base de courbe elliptique. Les étapes S90 à S94 sont exécutées lors d'une phase de mise en service du microcircuit SE. A l'étape S90, le serveur SRV transmet un message d'initialisation au microcircuit SE. A l'étape S91, le microcircuit SE reçoit ce message et exécute les étapes S92 et S93. A l'étape S92, le microcircuit génère aléatoirement des nombres aO et cO, génère une clé K en appliquant la fonction PUF au nombre cO. A l'étape S93, le microcircuit SE transmet son identifiant Id, les nombres aO et cO et la clé K. A l'étape S94, le serveur SRV reçoit ces données et les mémorise dans la base de donnée DB en association avec l'identifiant Id du microcircuit SE. Les étapes S95 à SI 10 sont exécutées lors d'une phase de démarrage du microcircuit SE. A l'étape S95, le serveur SRV émet une requête d'identifiant du microcircuit. A l'étape S96, le microcircuit SE reçoit cette requête et émet en réponse son identifiant Id à l'étape S97. A l'étape S98, le serveur SRV reçoit l'identifiant Id et recherche dans la base de données DB, les nombres aO et cO, ainsi que la clé K, correspondant à l'identifiant Id. A l'étape S99, le serveur transmet au microcircuit SE un ordre de démarrage associé aux nombres aO et cO. Le microcircuit SE reçoit cet ordre à l'étape S 100, et exécute les étapes S101 à SI 03. A l'étape S91, le microcircuit SE génère la clé K en appliquant la fonction PUF au nombre cO reçu, calcule le nombre a en appliquant la fonction PUF au nombre aO reçu et génère une paire de clés publique et privée RPK, SPK en utilisant comme graine le nombre a. Les clés RPK, SPK peuvent être générées conformément au procédé de RSA décrit précédemment. Aux étapes S 102 et S 103, le microcircuit chiffre à l'aide de la clé K la clé publique RPK concaténée avec l'identifiant Id, et transmet au serveur une requête d'un programme à exécuter, cette requête contenant le résultat du chiffrement RKF obtenu à l'étape S 102. A l'étape S 104, le serveur SRV reçoit cette requête et déchiffre les données chiffrées RKF reçues à l'aide de la clé K qui est mémorisée dans la base de données en association avec l'identifiant Id. A l'étape S105, le serveur SRV vérifie que l'identifiant obtenu correspond bien à la clé K utilisée pour effectuer le déchiffrement à l'étape S 104, et exécute les étapes S 106 et S 107 si l'identifiant obtenu est bien celui qui figure dans la base de données DB en association avec la clé K utilisée à l'étape S 105. A l'étape S 106, le serveur mémorise dans la base de données DB la clé publique RPK obtenue à l'étape S 104, en association avec l'identifiant Id, et chiffre un programme Pgm et éventuellement des données, à transmettre au microcircuit SE, à l'aide de la clé RPK, en utilisant un algorithme de chiffrement asymétrique REnc. A l'étape S 107, le serveur SRV transmet au microcircuit SE, le programme chiffré ED obtenu à l'étape S 106. Le microcircuit SE reçoit le programme chiffré ED à l'étape S 108, déchiffre ce programme chiffré à l'aide de la clé RSK à l'étape S 109, et exécute le programme Pgm ainsi obtenu à l'étape S 110.

La fonction PUF peut ne pas comprendre d'entrée de donnée, et donc fournir toujours un même nombre. Dans ce cas, la fonction utilisée notamment pour générer le nombre a à partir du nombre aO peut être de la forme f(x) = Enc(x,F), Enc une fonction de chiffrement qui peut être de type AES ou TDES, et F étant le nombre fourni par la fonction PUF, utilisé comme clé de chiffrement par la fonction Enc. La fonction PUF implémentée par le circuit IFC peut être remplacée par ou combinée avec une fonction de type MAC associant une fonction de hachage, une clé secrète et l'identifiant Id du microcircuit. La fonction MAC peut être remplacée par une fonction de type AES ou TDES. La clé secrète peut être stockée dans la mémoire MEM1 ou MEM3. S'il n'est pas nécessaire d'empêcher qu'un bloc de programme et/ou de donnée puisse être chargé dans un autre microcircuit, la fonction PUF implémentée par le circuit IFC peut être remplacée simplement par une fonction de type MAC combinant une fonction de hachage et la clé secrète, ou une fonction de type AES ou TDES et la clé secrète.

II apparaîtra clairement à l'homme de l'art que la présente invention est susceptible de diverses variantes de réalisation et diverses applications. En particulier, il peut ne pas être nécessaire de sauvegarder les programmes et/ou les données stockées dans la mémoire non volatile du microcircuit. En effet, il peut être prévu de ne jamais ou exceptionnellement couper l'alimentation du microcircuit. Si l'alimentation du microcircuit est coupée, il peut alors être prévu d'exécuter la procédure d'initialisation du microcircuit à partir d'un serveur distant.

Il peut également ne pas être nécessaire de conserver secret le programme Pgm chargé dans le microcircuit SE, mais simplement de garantir l'authenticité de ce programme. Les étapes de chiffrement de programme et/ou de données décrites précédemment peuvent donc consister à signer le programme et/ou les données à charger dans le microcircuit SE, à l'aide de la clé K ou SSK. La signature obtenue est alors transmise avec le programme et les données non chiffrés au microcircuit SE. Le microcircuit SE se limite alors à vérifier la signature, et à charger et exécuter le programme reçu seulement si la signature est correcte.

Le programme et les données sauvegardées en dehors du microcircuit peuvent également être à la fois chiffrés et signés avant d'être transmis à l'extérieur du microcircuit. Dans une variante simplifiée, seule l'intégrité du programme transmis est vérifiée par le microcircuit SE. A cet effet, le serveur ou le microcircuit calcule une somme de contrôle du programme Pgm, telle qu'un code CRC (Cyclic redundancy check), ce code étant transmis au microcircuit SE pour vérification.