FR3074936A1 - Procede d'ecriture d'un ensemble d'informations, par exemple un code programme, cryptees dans une memoire externe d'un circuit integre et circuit integre correspondant - Google Patents

Procede d'ecriture d'un ensemble d'informations, par exemple un code programme, cryptees dans une memoire externe d'un circuit integre et circuit integre correspondant Download PDF

Info

Publication number
FR3074936A1
FR3074936A1 FR1761921A FR1761921A FR3074936A1 FR 3074936 A1 FR3074936 A1 FR 3074936A1 FR 1761921 A FR1761921 A FR 1761921A FR 1761921 A FR1761921 A FR 1761921A FR 3074936 A1 FR3074936 A1 FR 3074936A1
Authority
FR
France
Prior art keywords
address
information
encryption
integrated circuit
encrypted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1761921A
Other languages
English (en)
Other versions
FR3074936B1 (fr
Inventor
Dragos Davidescu
Nicolas Anquet
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.)
STMicroelectronics Rousset SAS
STMicroelectronics Grenoble 2 SAS
Original Assignee
STMicroelectronics Rousset SAS
STMicroelectronics Grenoble 2 SAS
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 STMicroelectronics Rousset SAS, STMicroelectronics Grenoble 2 SAS filed Critical STMicroelectronics Rousset SAS
Priority to FR1761921A priority Critical patent/FR3074936B1/fr
Priority to CN201811333225.3A priority patent/CN109902492B/zh
Priority to CN201821845409.3U priority patent/CN209103293U/zh
Priority to US16/207,817 priority patent/US20190179773A1/en
Publication of FR3074936A1 publication Critical patent/FR3074936A1/fr
Application granted granted Critical
Publication of FR3074936B1 publication Critical patent/FR3074936B1/fr
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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
    • 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/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • H04L9/16Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2125Just-in-time application of countermeasures, e.g., on-the-fly decryption, just-in-time obfuscation or de-obfuscation

Landscapes

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

Abstract

Procédé d'écriture d'un code programme destiné à être exécuté par une unité de traitement d'un circuit intégré, dans une mémoire externe (11) au circuit intégré (10), comprenant avant de débuter le processus d'écriture du code programme, une génération (S20) au sein du circuit intégré d'une clé de cryptage (RD), et au cours dudit processus d'écriture, pour chaque donnée de code (MCi) destinée à être écrite à une adresse (ADRi) de la mémoire, un premier encryptage (S21) de ladite adresse au sein du circuit intégré par des premiers moyens de cryptage/décryptage utilisant ladite clé de façon à obtenir une adresse cryptée (ADRCi), un deuxième encryptage (S22) de ladite donnée de code au sein du circuit intégré avec des deuxièmes moyens de cryptage/décryptage utilisant ladite adresse cryptée, et une écriture (S23) de la donnée de code cryptée (MCCi) à ladite adresse, la mémoire ne pouvant pas être écrite deux fois à la même adresse au cours du processus d'écriture.

Description

Procédé d’écriture d’un ensemble d’informations, par exemple un code programme, cryptées dans une mémoire externe d’un circuit intégré et circuit intégré correspondant
Des modes de mise en œuvre et de réalisation de l’invention concernent l’encryptage et le décryptage d’informations, par exemple des données, ou bien des mots ou instructions d’un code programme, dans une mémoire externe d’un circuit intégré.
L’invention s’applique tout particulièrement à l’encryptage et au stockage au vol d’un code programme dans une mémoire externe à un circuit intégré, ce code programme étant destiné à être exécuté par une unité de traitement du circuit intégré, notamment mais non exclusivement un microcontrôleur, par exemple un microcontrôleur de la famille STM32® commercialisé par la société STMicroelectronics.
Le fait de stocker un code programme crypté dans une mémoire externe au circuit intégré contenant l’unité de traitement, rend le procédé de cryptage et de stockage plus vulnérable aux attaques par injection de fautes visant notamment à retrouver la clé de cryptage.
Il existe donc un besoin de rendre un tel procédé de cryptage et de stockage plus robuste à de telles attaques.
Par ailleurs il est souhaitable que l’augmentation de la robustesse soit compatible avec une latence faible du procédé de cryptage, surtout lorsque ce procédé est effectué au vol.
Selon un mode de mise en œuvre et de réalisation il est proposé de répondre à ce besoin de robustesse tout en offrant une faible latence.
Selon un aspect, il est ainsi proposé un procédé d’écriture, en particulier au vol, d’informations, par exemple un code programme destiné à être exécuté par une unité de traitement d’un circuit intégré, par exemple un microcontrôleur, l’écriture étant effectuée dans une mémoire externe au circuit intégré.
Le procédé comprend, avant de débuter le processus d’écriture des informations, une génération au sein du circuit intégré d’une clé de cryptage, par exemple mais non limitativement une génération aléatoire.
Le procédé comprend également, au cours du processus d’écriture, pour chaque information, par exemple une donnée de code, destinée à être écrite à une adresse de la mémoire, un premier encryptage de ladite adresse au sein du circuit intégré par des premiers moyens de cryptage/décryptage, par exemple un algorithme de cryptage symétrique du type AES, utilisant ladite clé de façon à obtenir une analyse cryptée.
Le procédé comprend également un deuxième encryptage de l’information au sein du circuit intégré avec des deuxièmes moyens de cryptage/décryptage utilisant ladite adresse cryptée, et une écriture de l’information cryptée à ladite adresse, la mémoire ne pouvant pas être écrite deux fois à la même adresse au cours du processus d’écriture.
Ainsi, le fait d’interdire au cours du processus d’écriture des informations, par exemple du code programme, que la mémoire soit écrite deux fois à la même adresse, permet d’éviter qu’un tiers mal intentionné puisse modifier le processus d’écriture pour écrire plusieurs données différentes successives à la même adresse dans le but d’obtenir la clé de cryptage.
On peut ainsi effectuer une écriture au vol d’un ensemble d’informations, par exemple un code programme, encrypté de façon robuste, cette génération d’adresses configurée de façon à ce que la mémoire ne puisse pas être écrite deux fois à la même adresse au cours du processus d’écriture, ayant un impact très faible voir nul sur la latence du procédé d’écriture.
Une façon particulièrement simple d’interdire une écriture deux fois à la même adresse au cours du processus d’écriture consiste à écrire la première information à une adresse initiale puis à incrémenter l’adresse après chaque écriture d’une donnée.
Cela étant, l’écriture de la mémoire dans un mode strictement incrémental n’est qu’un exemple non limitatif.
Il serait tout à fait possible par exemple de prévoir une table mémorisant les adresses successives utilisées et des moyens vérifiant, avant d’adresser la mémoire à une adresse courante, que celle-ci ne figure pas déjà dans la table.
Par ailleurs, lorsque l’ensemble d’informations, par exemple le code programme, est destiné à être écrit à une plage d’adresses de la mémoire, il est particulièrement avantageux, lorsque toutes les adresses de ladite plage ont été utilisées lors du processus d’écriture, d’interdire toute nouvelle opération d’écriture dans la mémoire avec la clé de cryptage qui vient d’être utilisée.
Outre le fait que la génération de la clé de cryptage puisse être avantageusement aléatoire, il est préférable, toujours dans le but d’augmenter la robustesse du procédé d’écriture de l’ensemble d’informations, par exemple du code programme, de générer une nouvelle clé de cryptage avant chaque nouveau processus d’écriture, par exemple lorsque le code programme doit être modifié ou mis à jour.
La mémoire externe peut être une mémoire volatile ou non volatile, par exemple une mémoire flash.
Par ailleurs, il est avantageux, dans le but du décryptage de l’ensemble d’informations, par exemple du code mémoire, de stocker la clé de cryptage dans un moyen de stockage interne au circuit intégré, par exemple dans une mémoire protégée.
Selon un autre aspect, il est proposé un procédé de traitement, en particulier au vol, d’un ensemble d’informations, par exemple un procédé d’exécution d’un code programme, par une unité de traitement d’un circuit intégré, l’ensemble d’informations, par exemple les données de code du code programme, ayant été écrit dans une mémoire externe au circuit intégré selon le procédé tel que défini ci-avant.
Le procédé de traitement comprend alors, pour chaque information stockée à une adresse de la mémoire externe et destinée à être chargée dans l’unité de traitement, un premier encryptage de ladite adresse au sein du circuit intégré par les premiers moyens de cryptage/décryptage utilisant ladite clé de façon à obtenir une adresse cryptée, une lecture de l’information cryptée stockée dans la mémoire externe à ladite adresse, un décryptage de ladite information cryptée au sein du circuit intégré avec les deuxièmes moyens de cryptage/décryptage utilisant ladite adresse cryptée, et un chargement de la donnée décryptée dans un registre de l’unité de traitement. Ce registre peut être un registre de données si les informations sont des données ou bien un registre d’instructions si les informations sont des instructions ou données de code d’un code programme.
Selon un autre aspect, il est proposé un dispositif comprenant un circuit intégré comportant une unité de traitement et une mémoire externe au circuit intégré, le circuit intégré comprenant une entrée d’information pour recevoir un ensemble d’informations, par exemple un code programme, destiné à être écrit dans la mémoire externe en vue de son traitement ultérieur, par exemple son exécution, par l’unité de traitement, des moyens de génération configurés pour générer une clé de cryptage, des moyens d’adressage configurés pour générer une adresse de la mémoire pour chaque information destinée à être écrite dans la mémoire et pour ne pas générer deux fois la même adresse au cours du processus d’écriture du code programme, des premiers moyens de cryptage/décryptage configurés pour effectuer un premier encryptage de ladite adresse utilisant ladite clé de façon à obtenir une adresse cryptée, des deuxièmes moyens de cryptage/décryptage configurés pour effectuer un deuxième encryptage de ladite information utilisant ladite adresse cryptée, et des moyens d’écriture configurés pour écrire l’information cryptée à ladite adresse.
Selon un mode de réalisation, lors du processus d’écriture les moyens d’adressage sont configurés pour générer une adresse initiale et pour incrémenter l’adresse après chaque écriture d’une information.
Selon un mode de réalisation, les moyens d’adressage sont configurés pour écrire l’ensemble d’informations à une plage d’adresses de la mémoire, et pour interdire tout nouvel adressage lorsque toutes les adresses de ladite plage ont été utilisées lors du processus d’écriture.
Selon un mode de réalisation, les moyens de génération sont configurés pour générer ladite clé de cryptage de façon aléatoire.
Selon un mode de réalisation, les moyens de génération sont configurés pour générer une nouvelle clé de cryptage avant chaque nouveau processus d’écriture.
Selon un mode de réalisation, les deuxièmes moyens de cryptage/décryptage comportent un opérateur OU EXCLUSIF.
Selon un mode de réalisation, les deuxièmes moyens de cryptage/décryptage comportent des moyens de brouillage configurés pour modifier les entrées de l’opérateur OU EXCLUSIF selon un code de brouillage.
Selon un mode de réalisation, le dispositif comprend en outre un moyen de stockage interne au circuit intégré configuré pour stocker la clé de cryptage.
Selon un mode de réalisation, lorsque la mémoire externe contient des informations, par exemple des données de code cryptées, les premiers moyens de cryptage/décryptage sont configurés pour extraire la clé de cryptage du moyen de stockage interne et pour crypter avec ladite clé de cryptage, chaque adresse à laquelle doit être lue une information, le circuit intégré comprenant des moyens de lecture configurés pour lire dans la mémoire externe à ladite adresse, l’information cryptée, et les deuxièmes moyens de cryptage/décryptage sont configurés pour décrypter l’information cryptée lue avec ladite adresse cryptée, et pour délivrer l’information décryptée dans un registre d’instructions de l’unité de traitement.
D’autres avantages et caractéristiques de l’invention apparaîtront à l’examen de la description détaillée de modes de mise en œuvre et de réalisation, nullement limitatifs, et des dessins annexés sur lesquels :
-les figures 1 à 6 illustrent schématiquement des modes de mise en œuvre et de réalisation de l’invention.
Dans tout ce qui suit, on suppose à titre d’exemple non limitatif que l’ensemble d’informations destiné à être stocké encrypté dans une mémoire externe, est un code programme, bien que ces informations puissent être également des données.
Sur la figure 1, la référence 1 désigne un dispositif comportant un circuit intégré 10 et une mémoire 11, externe au circuit intégré 10.
La mémoire 11 est destinée à stocker un code programme encrypté 110 destiné à être exécuté par une unité de traitement 100 du circuit intégré. Cette unité de traitement peut être par exemple un microcontrôleur tel qu’un microcontrôleur de la famille STM32® commercialisé par la société STMicroelectronics.
La mémoire externe 11 peut être une mémoire vive ou encore une mémoire morte, par exemple une mémoire flash.
Le circuit intégré 10 comporte une entrée de code 107 pour recevoir un code programme destiné à être écrit encrypté dans la mémoire externe 11.
Le dispositif 1 comporte également au sein du circuit intégré 10, des moyens de génération 101 configurés pour générer une clé de cryptage. Cette clé de cryptage RD peut être générée de façon aléatoire au début du processus d’écriture du code programme. Dans ce cas, préférentiellement, lors de toute répétition d’un processus d’écriture d’un code programme, par exemple lors d’une modification ou une mise à jour du code programme, on pourra avantageusement générer une nouvelle clé de cryptage valable pour le processus d’écriture en cours.
De tels moyens de génération 101 sont de structure classique et connue en soi.
Le circuit intégré comporte également des moyens d’adressage configurés pour générer une adresse de la mémoire pour chaque donnée de code destinée à être écrite dans la mémoire 11 et pour ne pas générer deux fois la même adresse au cours du processus d’écriture du code programme.
On reviendra plus en détail ci-après sur un exemple de structure de ces moyens d’adressage.
Le circuit intégré 10 comporte également des premiers moyens de cryptage/décryptage 103, par exemple un algorithme de cryptage symétrique du type AES ou DES, configurés pour effectuer un premier encryptage de l’adresse à laquelle la donnée de code doit être écrite, en utilisant la clé, de façon à obtenir une adresse cryptée.
Le circuit intégré comporte également des deuxièmes moyens de cryptage/décryptage 104, configurés pour effectuer un deuxième encryptage de la donnée de code en utilisant l’adresse cryptée.
Là encore, des exemples de structures de tels deuxièmes moyens de cryptage/décryptage 104 seront détaillés ci-après.
Le circuit intégré 10 comporte également des moyens d’écriture, de structure classique et connue en soi, 105, configurés pour écrire la donnée de code cryptée à l’adresse correspondante.
Le circuit intégré 10 comporte également, dans le cadre d’un chargement du code programme dans un registre d’instruction 1000 de l’unité de traitement 100, des moyens de lecture 106, de structure classique et connue en soi, configurés pour lire les données de code programme cryptées 110 contenues dans la mémoire externe 11.
On se réfère maintenant plus particulièrement à la figure 2 pour décrire un mode de mise en œuvre d’un procédé d’encryptage et de stockage d’un code programme dans la mémoire externe 11.
On suppose ici que la donnée de code MCi, qui peut être un mot numérique, doit être stockée dans la mémoire externe à l’adresse ADRi.
Dans l’étape S20, les moyens de génération 101 génèrent, par exemple de façon aléatoire, la clé de cryptage RD.
Cette clé de cryptage RD peut être avantageusement stockée (étape S27) dans une mémoire interne 109 (figure 1) du circuit intégré, par exemple une mémoire morte protégée.
Il convient de noter que ce stockage peut être effectué au début, en cours ou à la fin du processus d’écriture du code programme dans la mémoire externe 11.
Dans une étape S21, les premiers moyens de cryptage/décryptage 103 encryptent l’adresse ADRi avec la clé de cryptage RD pour fournir une adresse cryptée ADRCi.
Puis, dans l’étape S22, les deuxièmes moyens de cryptage/décryptage 104 effectuent un encryptage de la donnée de code MCi avec l’adresse cryptée ADRCi de façon à fournir une donnée de code cryptée MCCi.
Les moyens d’écriture 105 écrivent alors (étape S23) la donnée cryptée MCCi dans la mémoire 11 à l’adresse ADRi.
On recommence ce qui vient d’être décrit pour l’adresse suivante tant que l’on n’a pas atteint la plage d’adresses prévue pour le stockage du code programme (étapes S24 et S26).
Par contre, dans le cas où on a atteint la fin de la plage d’adresses représentée dans l’étape S24 par la valeur N pour l’indice i, alors on stoppe le processus d’écriture et on interdit toute nouvelle écriture dans la mémoire externe 11 avec la clé de cryptage RD qui vient d’être utilisée.
Par ailleurs, lorsque dans l’étape S26, on passe de l’adresse ADRi à l’adresse suivante ADRi+1, on génère l’adresse suivante de sorte que la mémoire ne puisse pas être écrite deux fois à la même adresse.
Comme illustré sur la figure 3, une façon particulièrement simple de réaliser cette fonction consiste à utiliser un compteur matériel pour la structure des moyens d’adressage 102 de façon à ce que l’adresse ADRi+1 soit égale à l’adresse ADRi incrémentée de 1 par exemple (étape S30). Lorsque le compteur a atteint sa valeur de comptage correspondant à la fin de la plage d’adresses, l’unité de traitement interdit toute nouvelle écriture dans la mémoire externe.
Ainsi, si un tiers mal intentionné essaie de stocker dans la mémoire en utilisant le processus de cryptage décrit ci-avant, plusieurs données successives à une même adresse, cela ne sera pas possible car deux données successives ne peuvent pas être écrites à la même adresse comme indiqué ci-avant.
Il sera donc plus difficile voire impossible pour le tiers malintentionné d’essayer d’obtenir la clé de cryptage par ce moyen.
On se réfère maintenant à la figure 4 pour décrire un procédé d’exécution du code programme stocké dans la mémoire externe 11.
Plus précisément, pour une donnée de code cryptée MCCi stockée à l’adresse ADRi dans la mémoire 11, les moyens de lecture extraient cette donnée dans l’étape S40.
Par ailleurs, les premiers moyens d’encryptage 103 encryptent l’adresse ADRi avec la clé de cryptage RD extraite dans l’étape S41 de la mémoire protégée 109.
On obtient alors l’adresse cryptée ADRCi qui est utilisée par les moyens de décryptage 104 pour effectuer un décryptage S43 de la donnée de code cryptée MCCi de façon à délivrer la donnée de code en clair MCi.
Cette donnée de code est alors délivrée (étape S44) par les deuxièmes moyens de cryptage/décryptage 104 directement au registre d’instruction 1000 de l’unité de traitement.
Comme illustré sur la figure 5, les deuxièmes moyens de cryptage/décryptage 104 peuvent comporter un opérateur OU EXCLUSIF 1040 recevant en entrée les bits de chaque donnée de code MCi (ou de chaque donnée de code cryptée MCCi) et les bits de l’adresse cryptée correspondante ADRCi pour délivrer le mot de code crypté MCCi (ou le mot de code en clair MCi).
En variante, il serait possible, comme illustré sur la figure 6, que les deuxièmes moyens de cryptage/décryptage 104 comportent des moyens de brouillage (« scrambling ») 1041 configurés pour modifier les entrées de l’opérateur OU EXCLUSIF 1040 selon un code de brouillage CDS.

Claims (21)

  1. REVENDICATIONS
    1. Procédé d’écriture d’un ensemble d’informations destinées à être traitées par une unité de traitement d’un circuit intégré, dans une mémoire externe (11) au circuit intégré (10), comprenant avant de débuter le processus d’écriture de l’ensemble d’informations, une génération (S20) au sein du circuit intégré d’une clé de cryptage (RD), et au cours dudit processus d’écriture, pour chaque information (MCi) destinée à être écrite à une adresse (ADRi) de la mémoire, un premier encryptage (S21) de ladite adresse au sein du circuit intégré par des premiers moyens de cryptage/décryptage utilisant ladite clé de façon à obtenir une adresse cryptée (ADRCi), un deuxième encryptage (S22) de ladite information au sein du circuit intégré avec des deuxièmes moyens de cryptage/décryptage utilisant ladite adresse cryptée, et une écriture (S23) de l’information cryptée (MCCi) à ladite adresse, la mémoire ne pouvant pas être écrite deux fois à la même adresse au cours du processus d’écriture.
  2. 2. Procédé selon la revendication 1, dans lequel lors du processus d’écriture on écrit la première information à une adresse initiale et on incrémente (S30) l’adresse (ADRi) après chaque écriture d’une information.
  3. 3. Procédé selon l’une des revendications précédentes, dans lequel l’ensemble d’informations est destiné à être écrit dans à une plage d’adresses de la mémoire, et lorsque toutes les adresses de ladite plage ont été utilisées lors du processus d’écriture, on interdit (S25) toute nouvelle opération d’écriture dans la mémoire avec la clé de cryptage qui vient d’être utilisée.
  4. 4. Procédé selon l’une des revendications précédentes, dans lequel la génération (S20) de ladite clé de cryptage est aléatoire.
  5. 5. Procédé selon l’une des revendications précédentes, dans lequel on génère une nouvelle clé de cryptage avant chaque nouveau processus d’écriture.
  6. 6. Procédé selon l’une des revendications précédentes, dans lequel l’unité de traitement (100) est un microcontrôleur.
  7. 7. Procédé selon l’une des revendications précédentes, dans lequel l’ensemble d’informations comprend un code programme destiné à être exécuté par l’unité de traitement.
  8. 8. Procédé selon l’une des revendications précédentes, comprenant en outre un stockage (S27) de la clé de cryptage dans un moyen de stockage (109) interne au circuit intégré.
  9. 9. Procédé de traitement d’un ensemble d’informations par une unité de traitement d’un circuit intégré, ledit ensemble d’informations ayant été écrit dans une mémoire externe au circuit intégré selon le procédé selon la revendication 8, le procédé d’exécution comprenant pour chaque information (MCCi) stockée à une adresse de la mémoire externe et destinée à être chargée dans l’unité de traitement, un premier encryptage (S42) de ladite adresse (ADRi) au sein du circuit intégré par les premiers moyens de cryptage/décryptage utilisant ladite clé de façon à obtenir une adresse cryptée (ADRCi), une lecture (S40) de l’information cryptée (MCCi) stockée dans la mémoire externe à ladite adresse, un décryptage (S43) de ladite information cryptée au sein du circuit intégré avec les deuxièmes moyens de cryptage/décryptage utilisant ladite adresse cryptée, et un chargement (S44) de l’information décryptée dans un registre de l’unité de traitement.
  10. 10. Procédé selon la revendication 9, dans lequel ledit ensemble d’informations comprend un code programme comportant des données de code, le traitement dudit ensemble d’informations comprend une exécution du code programme par l’unité de traitement, et chaque donnée de code décryptée étant chargée dans un registre d’instructions de l’unité de traitement.
  11. 11. Dispositif comprenant un circuit intégré (10) comportant une unité de traitement (100) et une mémoire (11) externe au circuit intégré, le circuit intégré comprenant une entrée d’information (107) pour recevoir un ensemble d’informations destiné à être écrit dans la mémoire externe en vue de son traitement ultérieur par l’unité de traitement, des moyens de génération (101) configurés pour générer une clé de cryptage, des moyens d’adressage (102) configurés pour générer une adresse de la mémoire pour chaque information destinée à être écrite dans la mémoire et pour ne pas générer deux fois la même adresse au cours du processus d’écriture de l’ensemble d’informations, des premiers moyens de cryptage/décryptage (103) configurés pour effectuer un premier encryptage de ladite adresse utilisant ladite clé de façon à obtenir une adresse cryptée, des deuxièmes moyens de cryptage/décryptage (104) configurés pour effectuer un deuxième encryptage de ladite information utilisant ladite adresse cryptée, et des moyens d’écriture (105) configurés pour écrire l’information cryptée à ladite adresse.
  12. 12. Dispositif selon la revendication 11, dans lequel lors du processus d’écriture les moyens d’adressage (102) sont configurés pour générer une adresse initiale et pour incrémenter l’adresse après chaque écriture d’une information.
  13. 13. Dispositif selon la revendication 11 ou 12, dans lequel les moyens d’adressage (102) sont configurés pour écrire l’ensemble d’informations à une plage d’adresses de la mémoire, et pour interdire tout nouvel adressage lorsque toutes les adresses de ladite plage ont été utilisées lors du processus d’écriture.
  14. 14. Dispositif selon l’une des revendications 11 à 13, dans lequel les moyens de génération (101) sont configurés pour générer ladite clé de cryptage de façon aléatoire.
  15. 15. Dispositif selon l’une des revendications 11 à 14, dans lequel les moyens de génération (101) sont configurés pour générer une nouvelle clé de cryptage avant chaque nouveau processus d’écriture.
  16. 16. Dispositif selon l’une des revendications 11 à 15, dans lequel les deuxièmes moyens de cryptage/décryptage (104) comportent un opérateur OU EXCLUSIF (1040).
  17. 17. Dispositif selon la revendication 16, dans lequel les deuxièmes moyens de cryptage/décryptage (104) comportent des moyens de brouillage (1041) configurés pour modifier les entrées de l’opérateur OU EXCLUSIF (1040) selon un code de brouillage (CDS).
  18. 18. Dispositif selon l’une des revendications 11 à 17, dans lequel l’unité de traitement (100) est un microcontrôleur.
  19. 19. Dispositif selon l’une des revendications 9 à 18, dans lequel l’ensemble d’informations comprend un code programme comportant des données de code et destiné à être exécuté par l’unité de traitement.
  20. 20. Dispositif selon l’une des revendications 9 à 19, comprenant en outre un moyen de stockage (109) interne au circuit intégré configuré pour stocker la clé de cryptage.
  21. 21. Dispositif selon la revendication 20, dans lequel, lorsque la mémoire externe contient des informations cryptées, les premiers moyens de cryptage/décryptage (103) sont configurés pour extraire la clé de cryptage du moyen de stockage interne et pour crypter avec ladite clé de cryptage, chaque adresse à laquelle doit être lue une information, le circuit intégré comprenant des moyens de lecture configurés pour lire dans la mémoire externe à ladite adresse, l’information cryptée, et les deuxièmes moyens de cryptage/décryptage (104) sont configurés pour décrypter l’information cryptée lue avec ladite adresse cryptée, et pour délivrer la donnée de code décryptée dans un registre (1000) de l’unité de traitement.
FR1761921A 2017-12-11 2017-12-11 Procede d'ecriture d'un ensemble d'informations, par exemple un code programme, cryptees dans une memoire externe d'un circuit integre et circuit integre correspondant Expired - Fee Related FR3074936B1 (fr)

Priority Applications (4)

Application Number Priority Date Filing Date Title
FR1761921A FR3074936B1 (fr) 2017-12-11 2017-12-11 Procede d'ecriture d'un ensemble d'informations, par exemple un code programme, cryptees dans une memoire externe d'un circuit integre et circuit integre correspondant
CN201811333225.3A CN109902492B (zh) 2017-12-11 2018-11-09 集成电路外部存储器中写加密信息集合的方法和集成电路
CN201821845409.3U CN209103293U (zh) 2017-12-11 2018-11-09 电子设备
US16/207,817 US20190179773A1 (en) 2017-12-11 2018-12-03 Method for writing a set of information encrypted in an external memory of an integrated circuit and corresponding integrated circuit

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1761921 2017-12-11
FR1761921A FR3074936B1 (fr) 2017-12-11 2017-12-11 Procede d'ecriture d'un ensemble d'informations, par exemple un code programme, cryptees dans une memoire externe d'un circuit integre et circuit integre correspondant

Publications (2)

Publication Number Publication Date
FR3074936A1 true FR3074936A1 (fr) 2019-06-14
FR3074936B1 FR3074936B1 (fr) 2020-08-14

Family

ID=61750299

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1761921A Expired - Fee Related FR3074936B1 (fr) 2017-12-11 2017-12-11 Procede d'ecriture d'un ensemble d'informations, par exemple un code programme, cryptees dans une memoire externe d'un circuit integre et circuit integre correspondant

Country Status (3)

Country Link
US (1) US20190179773A1 (fr)
CN (2) CN209103293U (fr)
FR (1) FR3074936B1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3074936B1 (fr) * 2017-12-11 2020-08-14 Stmicroelectronics (Grenoble 2) Sas Procede d'ecriture d'un ensemble d'informations, par exemple un code programme, cryptees dans une memoire externe d'un circuit integre et circuit integre correspondant

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030046563A1 (en) * 2001-08-16 2003-03-06 Dallas Semiconductor Encryption-based security protection for processors
WO2005076515A1 (fr) * 2004-02-05 2005-08-18 Research In Motion Limited Stockage sur puce, creation et manipulation d'une cle de cryptage
US20100299538A1 (en) * 2009-05-20 2010-11-25 Conexant Systems, Inc. Systems and Methods for Low-Latency Encrypted Storage

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE602004017417D1 (de) * 2004-03-18 2008-12-11 St Microelectronics Res & Dev Vorrichtung mit einer Schlüsselauswahleniheit und ein Mechanismus zur Aktualisierung der Schüssel für die verschlüsselung/Entschlüsselung von daten die in einen Speicher geschrieben/gelesen werden.
EP1615369A1 (fr) * 2004-07-06 2006-01-11 Proton World International N.V. Chiffrement par blocs du contenu d'une mémoire externe à un processeur
JP2006023957A (ja) * 2004-07-07 2006-01-26 Sony Corp 半導体集積回路及び情報処理装置
US20060059372A1 (en) * 2004-09-10 2006-03-16 International Business Machines Corporation Integrated circuit chip for encryption and decryption having a secure mechanism for programming on-chip hardware
JP2007004338A (ja) * 2005-06-22 2007-01-11 Renesas Technology Corp データ処理装置
JP4372061B2 (ja) * 2005-07-01 2009-11-25 パナソニック株式会社 機密情報実装システム及びlsi
KR100836758B1 (ko) * 2006-09-11 2008-06-10 삼성전자주식회사 메모리 카드의 암호화 장치 및 그것에 따른 데이터 기입 및독출 방법
US9336160B2 (en) * 2008-10-30 2016-05-10 Qualcomm Incorporated Low latency block cipher
US8745410B2 (en) * 2009-03-18 2014-06-03 Atmel Corporation Method and apparatus to scramble data stored in memories accessed by microprocessors
US20110181396A1 (en) * 2010-01-25 2011-07-28 Hilla Jr Ralph Rfid information data on external memory
US8843767B2 (en) * 2011-07-06 2014-09-23 The Boeing Company Secure memory transaction unit
US9792439B2 (en) * 2012-09-19 2017-10-17 Nxp B.V. Method and system for securely updating firmware in a computing device
JP2015141603A (ja) * 2014-01-29 2015-08-03 キヤノン株式会社 画像処理装置およびその制御方法、並びにプログラム
US10169618B2 (en) * 2014-06-20 2019-01-01 Cypress Semiconductor Corporation Encryption method for execute-in-place memories
US9483664B2 (en) * 2014-09-15 2016-11-01 Arm Limited Address dependent data encryption
FR3074936B1 (fr) * 2017-12-11 2020-08-14 Stmicroelectronics (Grenoble 2) Sas Procede d'ecriture d'un ensemble d'informations, par exemple un code programme, cryptees dans une memoire externe d'un circuit integre et circuit integre correspondant

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030046563A1 (en) * 2001-08-16 2003-03-06 Dallas Semiconductor Encryption-based security protection for processors
WO2005076515A1 (fr) * 2004-02-05 2005-08-18 Research In Motion Limited Stockage sur puce, creation et manipulation d'une cle de cryptage
US20100299538A1 (en) * 2009-05-20 2010-11-25 Conexant Systems, Inc. Systems and Methods for Low-Latency Encrypted Storage

Also Published As

Publication number Publication date
CN109902492B (zh) 2023-08-01
CN209103293U (zh) 2019-07-12
US20190179773A1 (en) 2019-06-13
FR3074936B1 (fr) 2020-08-14
CN109902492A (zh) 2019-06-18

Similar Documents

Publication Publication Date Title
EP4242884B1 (fr) Procédé de protection contre les attaques par canaux auxiliaires
EP4068128B1 (fr) Démarrage sécurisé d'une unité de traitement
FR3056789A1 (fr) Procede de chiffrement ou de dechiffrement symetrique par bloc
EP1983436B1 (fr) Contrôle d'intégrité d'une mémoire externe à un processeur
EP3671470B1 (fr) Procédé de gestion d'une mémoire cache d'un calculateur électronique
EP3712795B1 (fr) Procédé d'exécution, par un microprocesseur, d'un code binaire comportant une fonction appelante et une fonction appelee
FR3074936A1 (fr) Procede d'ecriture d'un ensemble d'informations, par exemple un code programme, cryptees dans une memoire externe d'un circuit integre et circuit integre correspondant
EP1617586B1 (fr) Chiffrement en continu du contenu d'une mémoire externe à un processeur
FR3106909A1 (fr) Circuit intégré configuré pour réaliser des opérations de chiffrement symétrique avec protection de clé secrète
EP2284748B1 (fr) Procédé de contremesure pour protéger des données mémorisées
EP4435615B1 (fr) Procédé de gestion d'une mémoire cache
EP3693862B1 (fr) Procédé de gestion d'une mémoire cache d'un calculateur électronique
FR2974919A1 (fr) Protection d'une memoire volatile contre des virus par changement d'instructions
FR3116356A1 (fr) Procédé de compilation d’un code source
EP4057168B1 (fr) Procédé d exécution d'un programme d ordinateur par un appareil électronique
WO2024083855A1 (fr) Clés cryptographiques en boite blanche
EP3239845A1 (fr) Procédé d'allocation d'espace mémoire
EP4089557A1 (fr) Procédé d'exécution d'un code binaire par un microprocesseur
FR3147397A1 (fr) Système informatique configuré pour exécuter un programme d’ordinateur
EP2227772B1 (fr) Procede et dispositif de reduction de la remanence de donnees stockees sur un support d'enregistrement
EP3832947A1 (fr) Procédé d' exécution d'un programme d'ordinateur par un appareil électronique
FR3100901A1 (fr) Système de protection de la mémoire
FR2907236A1 (fr) Procede de securisation lors de l'execution d'une fonction et dispositif associe
WO2007057577A2 (fr) Dispositif de prise de vues equipe d'une protection cryptographique
FR3019349A1 (fr) Procede et module de transformation d'une adresse memoire

Legal Events

Date Code Title Description
PLSC Publication of the preliminary search report

Effective date: 20190614

PLFP Fee payment

Year of fee payment: 3

ST Notification of lapse

Effective date: 20210806