FR2991797B1 - Processeur securise sans memoire non volatile - Google Patents

Processeur securise sans memoire non volatile Download PDF

Info

Publication number
FR2991797B1
FR2991797B1 FR1201678A FR1201678A FR2991797B1 FR 2991797 B1 FR2991797 B1 FR 2991797B1 FR 1201678 A FR1201678 A FR 1201678A FR 1201678 A FR1201678 A FR 1201678A FR 2991797 B1 FR2991797 B1 FR 2991797B1
Authority
FR
France
Prior art keywords
microcircuit
data
identifier
key
chip
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.)
Expired - Fee Related
Application number
FR1201678A
Other languages
English (en)
Other versions
FR2991797A1 (fr
Inventor
Bruno Charrat
Benoit Feix
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.)
Rambus Inc
Original Assignee
Inside Secure SA
Rambus Inc
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 Inside Secure SA, Rambus Inc filed Critical Inside Secure SA
Priority to FR1201678A priority Critical patent/FR2991797B1/fr
Priority to PCT/FR2013/051334 priority patent/WO2013186473A1/fr
Publication of FR2991797A1 publication Critical patent/FR2991797A1/fr
Application granted granted Critical
Publication of FR2991797B1 publication Critical patent/FR2991797B1/fr
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

L'invention concerne un procédé de gestion de la mémoire d'un microcircuit sécurisé, comprenant des étapes exécutées par le microcircuit consistant à : appliquer une fonction déterministe (PUF) spécifique du microcircuit à un premier nombre (a0) pour obtenir un second nombre (a), générer une clé secrète (K) à partir du second nombre, recevoir d'une mémoire externe (DB) des premières données (EC), 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) dans une mémoire volatile du microcircuit.

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.
Il 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.
Il 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 oeuvre 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 B1.
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 SHA1, 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 S1, 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 S10. 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 S10, 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 S15). A la réception du bloc de programme chiffré EC, le microcircuit SE exécute des étapes S12 à S14. A l'étape S12, 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 S13, 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 S14, 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 S16, 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 S17 et S18, puis l’étape S10 précédemment décrite. A l'étape S17, 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 S10. A l’étape S18, 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 S19 et S4 et S5’. A l’étape S19, 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 S11 à S14. A l'étape S11, 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 S12 à S14 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 S14 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 S19 (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 S14, 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 S10 à S12, précédemment décrites, puis une étape S13' 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 S14.
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 S13' 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 S13’ 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 S10. 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 S14 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 S10 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 S14.
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 S14 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 SE1 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 SE1 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’authentification 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 S1 à 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 SE1 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 SE1 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 SE1 à l’étape S57. A l’étape S58 suivante, le microcircuit SE1 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 SE1 exécute les étapes suivantes S59 à S652 seulement si la signature SSB est correcte. A l’étape S59, le microcircuit SE1 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 SE1 détermine une clé Ks en chiffrant le nombre r à l’aide de la clé K. Aux étapes S61, S62, le microcircuit SE1 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 SE1 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 SE1. L’étape S71 est précédée des étapes S51 à S55 au cours desquelles le serveur SRV demande l’identifiant Id du microcircuit SE1 et calcule la signature SSB. A l’étape S71, le serveur SRV transmet au microcircuit SE1 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 SE1 à l’étape S72. A l’étape S73, le microcircuit SE1 le microcircuit SE1 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 SE1 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 SE1 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 SE1 à 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 SE1 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 SE1 qui exécute alors l’étape S81. A l’étape S81, le microcircuit SE1 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 SE1 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 SE1 exécute le programme Pgm.
Bien entendu, les données chiffrées ED transmises à l'étape S79 et déchiffrées à l'étape S82 peuvent ne comprendre qu'un programme à exécuter par le microcircuit SE1 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é K1 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 K1, 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 K1, 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 SHA1, 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 ed = 1 modulo phi, avec phi = lcm(p-1), (q-1 )), Icm 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 à S110 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 à S110 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 S100, et exécute les étapes S101 à S103. 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 S102 et S103, 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 S102. A l’étape S104, 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 S104, et exécute les étapes S106 et S107 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 S105. A l’étape S106, le serveur mémorise dans la base de données DB la clé publique RPK obtenue à l’étape S104, 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 S107, le serveur SRV transmet au microcircuit SE, le programme chiffré ED obtenu à l’étape S106. Le microcircuit SE reçoit le programme chiffré ED à l’étape S108, déchiffre ce programme chiffré à l’aide de la clé RSK à l’étape S109, et exécute le programme Pgm ainsi obtenu à l’étape S110.
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.
Il 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.

Claims (15)

  1. REVENDICATIONS
    1. Procédé de gestion d’une mémoire volatile d'un microcircuit sécurisé, comprenant une procédure de chargement de donnéès comportant des étapes exécutées par le microcircuit consistant à : appliquer une fonction déterministe (PUF) spécifique du microcircuit à un premier nombre (aO) choisi aléatoirement 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 chiffrées (EC, ED), , appliquer un premier calcul cryptographique aux premières données en utilisant la clé secrète, pour obtenir des secondes données (Pgm, Dt) déchiffrées dans une mémoire volatile (MEM2) du microcircuit, extraire un identifiant (CNT) des secondes données, comparer l'identifiant extrait avec un identifiant (CNT) mémorisé de manière non volatile par le microcircuit, et si l'identifiant extrait correspond à l'identifiant mémorisé, exploiter les secondes données et modifier l'identifiant mémorisé pour être inséré ultérieurement dans des données à sauvegarder à l’extérieur du microcircuit.
  2. 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 calcul cryptographique a des données à sauvegarder (Pgm, Dt) incluant l’identifiant mémorisé (CNT), en utilisant la clé secrète, pour obtenir des troisièmes données (EC/ED) chiffrées, ét transmettre les troisièmes données avec le premier nombre (aO) à l’extérieur du microcircuit pour les stocker--dans une mémoire (LMTDB) externe au microcircuit.
  3. 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 en vue de sauvegarder des données du microcircuit à i’extérieur du microcircuit.
  4. 4. Procédé selon l’une des revendications 1 à 3, dans lequel la fonction déterministe (PUF) spécifiqué-ée-'-microdrcuit 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. 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. 6. Procédé selon l'une des revendications 1 à 5, dans lequel les premières données comprennent une première signature des secondes données (Pgm, Dt), le premier calcul crypfographique comprenant un calcul de signature appliqué aux secondes données pour obtenir une seconde signature, le procédé comprenant des étapes de comparaison de la première signature avec la seconde signature, l'exploitation des secondes données reçues étant effectuée uniquement si la première signature correspond à la seconde signature.
  7. 7. Procédé selon l'une des revendications 1 à 6, 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.
  8. 8. Procédé selon l'une des revendications 1 à 6, dans lequel les secondes données comprennent du code (Pgm) exécutable par le microcircuit et des données (Dt).
  9. 9. Procédé selon l'une des revendications 2 à 8, comprenant une étape d'insertion dans les données à sauvegarder (Pgm, Dt) de l'identifiant (CNT) mémorisé de manière non volatile parle microcircuit, avant application du second calcul cryptographique aux données à sauvegarder,
  10. 10. Procédé selon l’une des revendications 1 à 9, dans lequel l'identifiant (CNT) mémorisé est fourni au microcircuit par un serveur distant (SRV).
  11. 11. Procédé selon l’une des revendications 1 à 9, dans lequel l'identifiant (CNT) mémorisé est généré par le microcircuit et mémorisé de manière non volatile dans un circuit (MEM3, CNC) interne au microcircuit.
  12. 12. Procédé selon l'une des revendications 1 à 11, 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).
  13. 13. Procédé selon l'une des revendications 1 à 12, 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),
  14. 14. Microcircuit comprenant un processeur (PRC), une mémoire programmable une seule fois (MEM1), 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 à 13,
  15. 15. Microcircuit selon la revendicationi 14, comprenant une mémoire non volatile, programmable une seule fois (MEM3), ou un compteur non volatil (CNC) mémorisant un identifiant d’un dernier bloc de données sauvegardé à l’extérieur du microcircuit (SE1, SE2).
FR1201678A 2012-06-12 2012-06-12 Processeur securise sans memoire non volatile Expired - Fee Related FR2991797B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR1201678A FR2991797B1 (fr) 2012-06-12 2012-06-12 Processeur securise sans memoire non volatile
PCT/FR2013/051334 WO2013186473A1 (fr) 2012-06-12 2013-06-10 Processeur securise sans memoire non volatile

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1201678 2012-06-12
FR1201678A FR2991797B1 (fr) 2012-06-12 2012-06-12 Processeur securise sans memoire non volatile

Publications (2)

Publication Number Publication Date
FR2991797A1 FR2991797A1 (fr) 2013-12-13
FR2991797B1 true FR2991797B1 (fr) 2019-08-30

Family

ID=47351722

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1201678A Expired - Fee Related FR2991797B1 (fr) 2012-06-12 2012-06-12 Processeur securise sans memoire non volatile

Country Status (2)

Country Link
FR (1) FR2991797B1 (fr)
WO (1) WO2013186473A1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875378B2 (en) 2015-06-12 2018-01-23 QUALCOMOM Incorporated Physically unclonable function assisted memory encryption device techniques

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9214183B2 (en) * 2007-06-12 2015-12-15 Nxp B.V. Secure storage
FR2964278A1 (fr) * 2010-08-31 2012-03-02 St Microelectronics Rousset Extraction de cle dans un circuit integre

Also Published As

Publication number Publication date
WO2013186473A1 (fr) 2013-12-19
FR2991797A1 (fr) 2013-12-13

Similar Documents

Publication Publication Date Title
EP1427231B1 (fr) Procédé d'établissement et de gestion d'un modèle de confiance entre une carte à puce et un terminal radio
EP2166728B1 (fr) Procédé d'échange de données, telles que des clés cryptographiques, entre un système informatique et une entité électronique, telle qu'une carte à microcircuit
CA2623621C (fr) Procede de chargement securise de donnees d'acces a un service dans un chipset nfc
EP2053827B1 (fr) Procédé de personnalisation sécurisé d'un chipset NFC
EP3238474B1 (fr) Procédé de sécurisation de transactions sans contact
EP3014849B1 (fr) Procédé de changement de clé d'authentification
US9143323B2 (en) Securing a link between two devices
US20060225126A1 (en) Securely using a display to exchange information
EP0285520A1 (fr) Procédé pour acheminer des clés secrètes vers des modules de sécurité et des cartes utilisateurs, dans un réseau de traitement d'informations
FR3022053A1 (fr) Procede d'authentification d'une premiere entite electronique par une seconde entite electronique et entite electronique mettant en œuvre un tel procede
EP2193626B1 (fr) Communication securisee entre une etiquette electronique et un lecteur
CA2888662A1 (fr) Systeme et procede de securisation des echanges de donnees, objet portable utilisateur et dispositif distant de telechargement de donnees
FR2991797B1 (fr) Processeur securise sans memoire non volatile
EP3238150A1 (fr) Procédé de sécurisation de transactions sans contact
EP2859497B1 (fr) Procede de sauvegarde de donnees a l'exterieur d'un microcircuit securise
EP3054393A1 (fr) Procédé d'authentification d'un objet par un dispositif capables de communiquer mutuellement sans contact, système et objet correspondants
EP4096159B1 (fr) Méthode de provisionnement de clés dans un réseau d'objets connectés
EP3021515B1 (fr) Amélioration de l'intégrité authentique de données à l'aide du dernier bloc chiffrant ces données en mode cbc
WO2023175253A1 (fr) Procédé d'authentification d'un dispositif esclave par un dispositif hôte
WO2023274577A1 (fr) Schéma d'authentification pour fournir des mises à jour logicielles à un agent de mise à jour
EP1398983B1 (fr) Procédé de mise à jour à distance d'un logiciel embarqué dans un téléphone mobile et système de mise en oeuvre
EP3564841A1 (fr) Authentification d'un circuit électronique
EP2330772A1 (fr) Procédé de chiffrement à clef publique sans certificat
EP3029878A1 (fr) Procédé de transmission de secret à durée de vie limitée pour réaliser une transaction entre un terminal mobile et un équipement

Legal Events

Date Code Title Description
CA Change of address

Effective date: 20140220

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

CD Change of name or company name

Owner name: VERIMATRIX, FR

Effective date: 20191119

CA Change of address

Effective date: 20191209

TP Transmission of property

Owner name: RAMBUS INC., US

Effective date: 20200402

ST Notification of lapse

Effective date: 20210205