FR2976147A1 - Schema d'entrelacement de donnees pour une memoire externe d'un microcontroleur securise - Google Patents
Schema d'entrelacement de donnees pour une memoire externe d'un microcontroleur securise Download PDFInfo
- Publication number
- FR2976147A1 FR2976147A1 FR1154694A FR1154694A FR2976147A1 FR 2976147 A1 FR2976147 A1 FR 2976147A1 FR 1154694 A FR1154694 A FR 1154694A FR 1154694 A FR1154694 A FR 1154694A FR 2976147 A1 FR2976147 A1 FR 2976147A1
- Authority
- FR
- France
- Prior art keywords
- integrity
- data
- words
- word
- external memory
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 173
- 238000010586 diagram Methods 0.000 title description 6
- 238000000034 method Methods 0.000 claims abstract description 88
- 230000006870 function Effects 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 6
- 230000036541 health Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 230000001172 regenerating effect Effects 0.000 claims 1
- 230000000737 periodic effect Effects 0.000 abstract description 9
- 238000013506 data mapping Methods 0.000 abstract description 8
- 238000013496 data integrity verification Methods 0.000 abstract 1
- 238000012795 verification Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 239000000243 solution Substances 0.000 description 6
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000013478 data encryption standard Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013524 data verification Methods 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000002285 radioactive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
Divers modes de réalisation de la présente invention concernent des systèmes, des dispositifs et des procédés d'entrelacement de données de charge utile et de données de contrôle d'intégrité dans une mémoire externe interfacée avec un microcontrôleur pour améliorer la vérification d'intégrité des données, accroître la confidentialité des données et économiser la mémoire interne. Une pluralité de mots de données et une pluralité d'adresses logiques sont reçues pour le stockage dans la mémoire externe. Chaque mot de données est utilisé pour générer un mot d'intégrité respectif sur la base d'un procédé de vérification d'intégrité, tandis que l'adresse logique associée est traduite en une première adresse physique pour le mot de données et une seconde adresse physique pour le mot d'intégrité dans la mémoire externe selon un procédé de mappage de données. Les mots de données peuvent être chiffrés avant d'être stockés dans la mémoire externe dans le microcontrôleur sécurisé. Les adresses physiques pour les mots de données et les mots d'intégrité associés sont entrelacées dans la mémoire externe, et parfois entrelacées dans un schéma périodique. En particulier, chaque mot de données peut être associé à un sous-mot d'intégrité inclus dans un mot d'intégrité ayant la même longueur que celle d'un mot de données. La mémoire externe peut être une ROM, une RAM ou une mémoire flash, et peut comporter des régions dédiées pour les mots de données et les mots d'intégrité, respectivement.
Description
SCHEMA D'ENTRELACEMENT DE DONNEES POUR UNE MEMOIRE EXTERNE D'UN MICROCONTROLEUR SECURISE
ARRIERE-PLAN A. Domaine technique La présente invention concerne généralement un microcontrôleur sécurisé utilisant une mémoire externe, et plus particulièrement des procédés, des systèmes et des dispositifs pour effectuer une vérification d'intégrité en entrelaçant des données de charge utile et des données de contrôle d'intégrité dans une mémoire externe interfacée avec un microcontrôleur sécurisé.
B. Arrière-plan de l'invention Un microcontrôleur est normalement un circuit intégré unique comprenant un coeur d'unité centrale de traitement (CPU), une mémoire, et des périphériques d'entrée/sortie (E/S). Un microcontrôleur sécurisé est utilisé pour des applications qui impliquent des opérations de confiance sur des actifs de valeur dans un environnement non sécurisé où un voleur ou un pirate informatique peut avoir accès à des coeurs de processeur, des dispositifs de mémoire ou des périphériques d'El S qui sont utilisés pour communiquer et traiter des données sensibles. Ces données sensibles peuvent inclure des numéros de compte, des codes d'accès, un numéro d'identification personnel (PIN), des clés cryptographiques, des transactions financières/ soldes de compte, la gestion des droits, et le comptage (par ex., énergie, unités). En particulier, ces données sensibles peuvent être des programmes ou
des instructions employés pour contrôler le coeur de CPU ou les périphériques d'E/S. Diverses fonctions de sécurité ont été employées pour éviter l'accès non autorisé à ces données sensibles. A ce jour, le microcontrôleur sécurisé a été appliqué dans une large gamme d'applications cruciales du point de vue de la sécurité comme la banque électronique, les transactions commerciales, et le contrôle d'accès à la TV payante, ou toute application qui requiert la protection de logiciels et de procédés propriétaires. Etant donné que les données sensibles peuvent être stockées dans une mémoire externe du microcontrôleur sécurisé, la confidentialité et l'intégrité du contenu de la mémoire sont deux menaces distinctes qui doivent être prises en compte. La première menace provoque la divulgation d'informations sensibles (c'est-à-dire, la confidentialité des données) où des données confidentielles sont révélées et la faiblesse d'un programme est exposée. La seconde menace provoque une modification du comportement de l'application (c'est-à-dire, l'intégrité des données) qui implique que des programmes et des données soient modifiés dans la mémoire externe et se solde par un problème quant à l'intégrité des données.
Le microcontrôleur sécurisé est conçu pour offrir un niveau de sécurité aux données sensibles stockées dans la mémoire externe. Par exemple, la sécurité physique peut être établie contre la vérification par une protection anti-fraude. Toutefois, cette solution peut être onéreuse et ne couvre pas de nouvelles méthodes d'attaque basées sur l'injection de fautes à partir d'un pépin dans l'alimentation électrique, de la lumière, d'un laser synchrone ou asynchrone, ou de particules radioactives. Les fonctions de sécurité peuvent également comprendre le chiffrement de mémoire où les données sensibles stockées dans la mémoire externe sont chiffrées ou déchiffrées en utilisant des clés cryptographiques dans le microcontrôleur sécurisé pendant le processus d'échange de données. Les clés cryptographiques sont stockées localement à l'intérieur du microcontrôleur sécurisé. En conséquence, le périmètre de sécurité physique peut être limité au microcontrôleur tandis que la mémoire externe et ses bus de communication peuvent rester exposés physiquement. Il convient de noter que généralement le chiffrement ne fournit pas en soi une protection d'intégrité suffisante. Par exemple, un algorithme de chiffrement est utilisé avec un mode de livre de codes électronique (ECB), et aucune modification n'est détectée sur un texte chiffré corrompu dans la mémoire externe. Le texte chiffré corrompu est déchiffré en texte en clair, et en raison de la modification/corruption de données réelle, le texte en clair est associé à une valeur différente par rapport à une valeur attendue. Toutefois, étant donné que l'algorithme de déchiffrement même ne signale aucune erreur, le texte en clair résultant est toujours considéré corne une valeur légitime. Le format de données sous-jacent peut être utilisé pour identifier une corruption de données, et pour certains formats de données, cette corruption peut être difficile à identifier. Un exemple typique d'intégrité de données insuffisante dans un microcontrôleur est une transaction financière où seul le montant d'argent est chiffré. Un texte chiffré modifié conduirait à un texte en clair corrompu, pouvant correspondre à un montant supérieur au montant réel.
Une intégrité de données insuffisante se produit également dans la protection d'instructions du microcontrôleur stockées dans la mémoire sur la base d'un chiffrement de code. Lorsque la mémoire est trafiquée, une instruction de texte chiffré modifiée aléatoirement serait déchiffrée en une instruction de texte en clair modifiée qui ne correspond pas à l'instruction de texte en clair originale. Cette instruction de texte en clair erronée peut être considérée comme légitime selon le jeu d'instructions du microprocesseur particulier et sa couverture d'un espace en clair. Par exemple, les instructions de coeur MIPS 4KSd ont une longueur de 32 bits. Seulement 56 % de toute instruction de 32 bits sont associés à des instructions de coeur valides, et les 44 % restants des instructions de 32 bits sont considérés par le microcontrôleur comme illicites et rejetés en émettant une exception de microcontrôleur. Dans un autre cas, un algorithme de chiffrement de 64 bits, comme la norme de chiffrement de données (DES), est utilisé pour traiter deux mots de 32 bits à la fois pour le chiffrement/ déchiffrement. Lorsqu'une instruction de texte chiffré de 64 bits est modifiée, le texte en clair déchiffré correspondant inclut deux mots de 32 bits, et la probabilité est d'approximativement 30 % pour que ces deux mots soient des instructions de coeur légitimes. En conséquence, la probabilité est de 70 % pour détecter une modification de texte chiffré et une instruction de 32 bits illicite dans un système DES de 64 bits corrompu.
Un contrôle d'intégrité des données est mis en oeuvre pour les données sensibles stockées dans la mémoire externe afin de détecter toute corruption volontaire ou involontaire entre ce qui a été envoyé à l'origine pour le stockage et ce qui est stocké dans la mémoire. Des procédés de vérification d'intégrité spécifiques sont utilisés pour générer des données de contrôle d'intégrité (c'est-à-dire, une étiquette ou une signature) pendant une opération d'écriture mémoire, et la validité des données stockées est vérifiée par leur cohérence avec les données de contrôle d'intégrité correspondantes pendant une opération de lecture mémoire. Le contrôle d'intégrité constitue une protection suffisante contre les attaques par injection de fautes, et les modules de contrôle d'intégrité peuvent être intégrés dans le microcontrôleur sécurisé pour garantir un niveau de confiance suffisant aux parties intéressées.
Plusieurs procédés de vérification d'intégrité peuvent être employés. Le procédé de vérification d'intégrité le plus simple est une vérification de parité pair/impair d'1 bit, dans lequel un bit de contrôle d'intégrité est généré pour maintenir une parité paire ou impaire parmi tous les bits dans les données. Des procédés de vérification d'intégrité alternatifs vont de simples procédés de contrôle par redondance cyclique (CRC) ou de code de correction/correcteur d'erreurs (ECC) à des procédés forts et éprouvés, comme le code d'authentification de message (MAC). En dépit de leur faible résistance de sécurité, les procédés de vérification d'intégrité simples sont en général suffisants pour protéger contre la corruption involontaire ; toutefois, les procédés forts et éprouvés sont obligatoires pour la protection contre la corruption volontaire ou active. Un procédé simple (par ex., ECC) n'implique normalement pas de clés secrètes, donc les attaqueurs peuvent facilement générer des données d'intégrité cohérentes en modifiant les données sensibles. Un élément secret (c'est-à-dire, une clé cryptographique) peut être incorporé dans des procédés de vérification d'intégrité forts et éprouvés. Les attaqueurs sont empêchés de faire une modification facile étant donné que l'élément secret doit d'abord être reconstitué.
La figure 1 illustre un microcontrôleur sécurisé 102 s'interfaçant avec une mémoire chiffrée 104. Les préoccupations liées à la
confidentialité et à l'intégrité des données susmentionnées sont considérées dans ce microcontrôleur. Le microcontrôleur sécurisé 102 comprend un coeur de CPU 106, un contrôleur de mémoire 110, et des bus pour les données, les adresses et les clés. Les procédés pour la vérification d'intégrité, le chiffrement de données ou le déchiffrement de données sont incorporés dans le coeur de CPU 102. Pendant une opération d'écriture mémoire, les données originales sont chiffrées dans le coeur de CPU 106 en données de charge utile pour le stockage dans la mémoire 104. Pendant une opération de lecture mémoire, les données de charge utile de la mémoire 104 sont déchiffrées en données originales dans le coeur de CPU 106. Les données de contrôle d'intégrité sont générées et stockées habituellement dans une mémoire interne à l'intérieur du coeur de CPU 106 pendant une opération d'écriture mémoire, et extraites pour la vérification d'intégrité des données pendant une opération de lecture mémoire subséquente. Les données de contrôle d'intégrité sont stockées habituellement dans un emplacement dédié en utilisant des adresses de mémoire statique. Cette solution est appliquée dans de nombreux microcontrôleurs de l'art antérieur pour stocker leurs données de contrôle d'intégrité respectives, par ex., la valeur de hachage de référence dans le brevet US N° 5 708 274 et la valeur de vérification d'intégrité dans le brevet français N° 1 885 709. Cette solution conventionnelle peut requérir une utilisation intensive de mémoire interne, et par conséquent, peut être une solution onéreuse, même si le taux d'accès aux données est satisfaisant.
Résumé de l'invention Divers modes de réalisation de la présente invention concernent un microcontrôleur sécurisé utilisant une mémoire externe, et plus particulièrement des procédés, des systèmes et des dispositifs pour effectuer une vérification d'intégrité en entrelaçant des données de charge utile et des données de contrôle d'intégrité dans une mémoire externe interfacée avec un microcontrôleur sécurisé. Une pluralité de mots de données et une pluralité d'adresses logiques sont générés dans un microcontrôleur, et chaque mot de données est associé à une adresse logique. Chaque mot de données est utilisé pour générer un mot d'intégrité respectif sur la base d'un
procédé de vérification d'intégrité, tandis que l'adresse logique associée est traduite en une première adresse physique pour le mot de données et une seconde adresse physique pour le mot d'intégrité dans la mémoire externe. Les mots de données et les mots d'intégrité associés sont entrelacés dans la mémoire externe sur la base d'un procédé de mappage de données, et les adresses physiques pour les mots de données et d'intégrité sont déterminées dynamiquement. La mémoire externe peut être une ROM, une RAM ou une mémoire flash, et peut avoir des régions dédiées pour les mots de données et les mots d'intégrité, respectivement. Les mots de données et les mots d'intégrité sont entrelacés dans un schéma périodique dans la mémoire externe. En particulier, chaque mot de données peut être associé à un sous-mot d'intégrité, et plusieurs sous-mots d'intégrité forment un mot d'intégrité ayant la même longueur que celle d'un mot de données. Par conséquent, des mots de données associés alternent avec ce mot d'intégrité dans un schéma périodique. Le microcontrôleur utilisant une mémoire externe pour stocker les mots de données et d'intégrité est configuré pour générer deux adresses physiques dans la mémoire externe pour chaque mot de données et chaque mot d'intégrité associé. En particulier, un bloc de chiffrement et de protection d'intégrité intégré peut comprendre un traducteur d'adresse pour mettre en oeuvre un procédé de mappage de données, et un générateur de données de contrôle d'intégrité pour générer des mots d'intégrité. Les mots de données et les mots d'intégrité concernés sont stockés dans la mémoire externe. Pour l'utilisation dans un microcontrôleur sécurisé, le bloc de chiffrement et de protection d'intégrité intégré comprend également une pluralité de blocs de fonction pour le chiffrement/déchiffrement de données et le stockage temporaire de sous-mots d'intégrité. Certaines caractéristiques et avantages de la présente invention ont été décrits de manière générale dans cette section de résumé ; toutefois, des caractéristiques, avantages et modes de réalisation additionnels sont présentés ici ou seront évidents pour un homme du métier ordinaire au vu des dessins, du mémoire, et des revendications de celle-ci. En conséquence, il convient de comprendre
que la portée de l'invention ne doit pas être limitée par les modes de réalisation particuliers décrits dans cette section de résumé.
BREVE DESCRIPTION DES DESSINS Il va maintenant être fait référence aux modes de réalisation de l'invention, dont des exemples sont illustrés sur les figures jointes. Ces figures sont destinées à être illustratives, non limitatives. Bien que l'invention soit généralement décrite dans le contexte de ces modes de réalisation, il convient de comprendre que cela n'est pas destiné à limiter la portée de l'invention à ces modes de réalisation particuliers. La figure 1 illustre un microcontrôleur sécurisé s'interfaçant avec une mémoire externe où les préoccupations de sécurité et d'intégrité sont considérées. La figure 2 illustre un schéma de principe en exemple d'un système de microcontrôleur sécurisé comprenant un micro contrôleur sécurisé s'interfaçant avec une mémoire externe selon divers modes de réalisation de l'invention. La figure 3(a) illustre un procédé de génération et de stockage de mot de données et de mot d'intégrité s'entrelaçant dans la mémoire 20 externe selon divers modes de réalisation de l'invention. La figure 3(b) illustre un procédé d'extraction d'un mot de données et d'un mot d'intégrité d'une mémoire externe selon divers modes de réalisation de l'invention. La figure 4 illustre un schéma de principe en exemple du bloc de 25 chiffrement et de protection d'intégrité selon divers modes de réalisation de l'invention. La figure 5 illustre un schéma d'entrelacement de données en exemple dans la mémoire externe selon divers modes de réalisation de l'invention. 30 La figure 6 illustre un autre schéma d'entrelacement de données en exemple dans la mémoire externe selon divers modes de réalisation de l'invention. La figure 7 illustre un schéma d'entrelacement de données en exemple dans la mémoire externe selon divers modes de réalisation de 35 l'invention. La figure 8 illustre un procédé en exemple de mappage d'adresses logiques de données dans un bloc de données en adresses physiques dans la mémoire externe selon un schéma d'entrelacement de données selon divers modes de réalisation de l'invention. DESCRIPTION DETAILLEE DES MODES DE REALISATION PREFERES La présente invention concerne généralement un microcontrôleur sécurisé utilisant une mémoire externe, et plus particulièrement des procédés, des systèmes et des dispositifs pour effectuer une vérification d'intégrité en entrelaçant des données de charge utile et des données de contrôle d'intégrité dans une mémoire externe interfacée avec un microcontrôleur sécurisé.
Dans la description suivante, à des fins d'explication, des détails spécifiques sont exposés afin de procurer une bonne compréhension de l'invention. Toutefois, il sera évident pour un homme du métier que l'invention puisse être pratiquée sans ces détails. Un homme du métier reconnaîtra que les modes de réalisation de la présente invention, décrits ci-dessous, peuvent être effectués de diverses manières et en utilisant diverses structures. L'homme du métier reconnaîtra également que des modifications, applications, et modes de réalisation additionnels soient dans sa portée, de même que des domaines additionnels dans lesquels l'invention peut procurer une utilité. En conséquence, les modes de réalisation décrits ci-dessous sont illustratifs de modes de réalisation spécifiques de l'invention et sont destinés à éviter d'obscurcir l'invention.
La référence dans le mémoire à « un mode de réalisation » (point de vue quantitatif) ou « un mode de réalisation » (point de vue indéfini) signifie qu'une particularité, structure, caractéristique ou fonction particulière décrite en relation avec le mode de réalisation est incluse dans au moins un mode de réalisation de l'invention. L'apparition de l'expression « dans un mode de réalisation » (point de vue quantitatif), « dans un mode de réalisation » (point de vue indéfini), ou similaire à divers endroits dans le mémoire ne font pas forcément toutes référence au même mode de réalisation.
En outre, les connexions entre composants ou entre étapes de procédé sur les figures ne sont pas restreintes à des connexions qui sont effectuées directement. Au contraire, les connexions illustrées sur les figures entre composants ou étapes de procédé peuvent être modifiées ou sinon changées en y ajoutant des composants ou étapes de procédé intermédiaires, sans s'écarter des enseignements de la présente invention.
La figure 2 illustre un schéma de principe en exemple 200 d'un système de microcontrôleur sécurisé comprenant un microcontrôleur sécurisé 220 s'interfaçant avec une mémoire externe selon divers modes de réalisation de l'invention. Le microcontrôleur sécurisé 220 comprend un coeur de CPU 206, un bloc de chiffrement et de protection d'intégrité 208, un contrôleur de mémoire 210, un stockage de clé 212 et des bus pour les données, les adresses et les clés. Le bloc de chiffrement et de protection d'intégrité 208 est utilisé pour mettre en oeuvre un mappage d'adresses, un calcul de données d'intégrité, une vérification d'intégrité, un chiffrement de données et un déchiffrement de données. Dans divers modes de réalisation de la présente invention, des données de contrôle d'intégrité sont générées par le bloc 208 et stockées par la suite dans la mémoire chiffrée et à intégrité protégée 240 (c'est-à-dire, la mémoire externe 240) de sorte qu'un espace de mémoire interne dans le coeur de CPU 206 n'ait pas besoin d'être réservé pour des données de contrôle d'intégrité. En conséquence, le bloc de chiffrement et de protection d'intégrité 208 et le contrôleur de mémoire 210 sont ajustés pour générer et accéder à des adresses physiques dans la mémoire externe non seulement pour des données de charge utile mais également pour les données de contrôle d'intégrité correspondantes. Dans divers modes de réalisation de la présente invention, une gestion d'intégrité (par ex., ECC) est mise en oeuvre dans le bloc 208 plutôt que dans la mémoire externe 240 bien que certaines mémoires, comme flash NON-ET, puissent également fournir une gestion d'intégrité.
La mémoire externe 240 est partitionnée en au moins une région de contenu en clair 214, et au moins une région de contenu chiffré 216. Le contenu stocké dans la région de contenu chiffré 216 peut comprendre des données de charge utile et des données de contrôle d'intégrité. Les données de charge utile sont des programmes ou des données chiffrés associés à des informations confidentielles, par ex., des noms d'utilisateurs, des mots de passe, des transactions etc. Chaque donnée de contrôle d'intégrité est dérivée des données originales ou de données chiffrées (c'est-à-dire, données de charge utile) selon un procédé de vérification d'intégrité spécifique qui peut être propriétaire dans certains cas.
Les données de charge utile et les données de contrôle d'intégrité sont stockées comme mots de données de charge utile (c'est-à-dire, mots de données) et mots de données de contrôle d'intégrité (c'est-à-dire, mots d'intégrité) dans la mémoire externe 240, respectivement, et les longueurs de ces mots sont associées au type de mémoire et aux procédés pour le chiffrement et la vérification d'intégrité. Une solution opportune est de stocker les mots de données et les mots de données de contrôle d'intégrité dans leurs régions dédiées respectives dans la mémoire externe 240. Les mémoires à l'intérieur de plages d'adresses spécifiques sont configurées pour stocker les mots de données et les données de contrôle d'intégrité, respectivement. En conséquence, un mot de données et son mot d'intégrité associé sont stockés au niveau de deux cellules de mémoire qui peuvent être distantes physiquement l'une de l'autre et peuvent même être situées sur deux pages de mémoire distinctes. Dans divers modes de réalisation de la présente invention, les mots d'intégrité sont entrelacés avec les mots de données dans la mémoire externe 240 selon un schéma d'entrelacement de données régulier pour améliorer la performance. Le schéma d'entrelacement de données régulier simplifie le flux de données et évite le mécanisme de saut en récupérant les mots d'intégrité dans des emplacements de stockage d'intégrité dédiés qui sont adjacents aux emplacements de stockage de données associés. En particulier, le schéma d'entrelacement de données régulier est préféré pour les mémoires paginées, comme SDRAM, où le saut entre pages requiert un temps de commutation de page supplémentaire et dégrade le taux d'accès à la mémoire de manière significative. Dans un mode de réalisation, un schéma périodique est employé dans lequel tous les deux ou trois mots de données peuvent être entrelacés avec un mot d'intégrité associé directement à ces mots de données. Afin de mettre en oeuvre le schéma d'entrelacement de données régulier, le bloc de chiffrement et de protection d'intégrité 208 effectue un remappage automatique de la mémoire externe 240 de sorte que le coeur de CPU 206 puisse extraire des données et des programmes/instructions sans identifier les adresses pour les mots d'intégrité associés. La mémoire externe 240 est allouée pour stocker les données de charge utile et les données de contrôle d'intégrité dynamiquement. Dans
certains modes de réalisation, la mémoire externe 240 peut comprendre plus d'une mémoire parmi RAM, ROM et mémoire flash. Le microcontrôleur sécurisé 220 s'interface à diverses mémoires dans la mémoire externe 240 sans configurer de régions de données dédiées pour chaque mémoire. Comme plus d'une mémoire est impliquée, le mappage d'adresses pour certains schémas d'entrelacement de données est mis en oeuvre dynamiquement dans le bloc de chiffrement et de protection d'intégrité 208. Dans certains modes de réalisation, pendant une opération d'écriture mémoire, le coeur de CPU 206 fournit des données et des adresses logiques au bloc de chiffrement et de protection d'intégrité 208 qui chiffre en outre les données en données de charge utile en utilisant un procédé de chiffrement. Le procédé de chiffrement est basé sur les adresses logiques et une clé, et la clé est fixée ou générée aléatoirement par le coeur de CPU 206 et stockée dans le stockage de clé 212. Dans un mode de réalisation, le procédé de chiffrement est directement basé sur une adresse physique traduite depuis l'adresse logique. Les données de contrôle d'intégrité sont générées dans le bloc de chiffrement et de protection d'intégrité 208 en utilisant un procédé de vérification d'intégrité prédéterminé basé sur les données. Dans certains modes de réalisation, au moins une clé cryptographique est utilisée pour générer les données de contrôle d'intégrité. En plus de chiffrer les données et de générer les données de contrôle d'intégrité correspondantes, le bloc 208 traduit également les adresses logiques d'entrée en deux adresses physiques distinctes, une pour les données de charge utile et l'autre pour les données de contrôle d'intégrité. Le contrôleur de mémoire 210 identifie les adresses physiques dans la mémoire externe 240 et stocke les données de charge utile et les données de contrôle d'intégrité comme spécifié par les adresses physiques.
Dans certains modes de réalisation, pendant une opération de lecture mémoire, une adresse logique est fournie par le coeur de CPU 206 pour extraire des donnes de charge utile spécifiques de la mémoire externe chiffrée et à intégrité protégée 240. Le bloc de chiffrement et de protection d'intégrité 208 traduit l'adresse physique pour reconstituer deux adresses physiques pour les données de charge utile et les données de contrôle d'intégrité associées, respectivement. Le procédé utilisé dans ce processus de reconstitution d'adresse est similaire au
procédé utilisé pour traduire l'adresse logique lorsque les données ont besoin d'être stockées pendant l'opération d'écriture mémoire. Le contrôleur de mémoire 210 permet l'accès à des contenus de mémoire stockés aux adresses physiques spécifiées, et le bloc de chiffrement et de protection d'intégrité 208 est couplé pour recevoir les données de charge utile et les données de contrôle d'intégrité en provenance de la mémoire chiffrée et à intégrité protégée 240. Un procédé de déchiffrement peut être mis en oeuvre pour utiliser l'adresse logique et la clé stockée dans le stockage de clé 212 afin de reconstituer les données de charge utile tandis que les données d'intégrité associées sont extraites de la mémoire 240. Les données reconstituées à partir des données de charge utile sont traitées en utilisant le même procédé de vérification d'intégrité qui est utilisé auparavant pour générer les données de contrôle d'intégrité. Si les données de contrôle d'intégrité regénérées à partir des données reconstituées sont cohérentes avec les données de contrôle d'intégrité extraites de la mémoire externe 240, alors les données reconstituées sont valides et fournies par la suite au coeur de CPU 206 ; sinon, une erreur est reconnue et un matériel dédié est employé pour dresser une exception CPU sur la base de la politique de sécurité du microcontrôleur. Dans divers modes de réalisation de la présente invention, l'exception CPU peut être exploitée pour effacer les données sensibles, déclencher une interruption non masquable, écrire une valeur dans un registre à drapeaux, réinitialiser le microcontrôleur, ou exécuter un code dédié.
L'entrelacement de données augmente la rentabilité du microcontrôleur sécurisé. Dans un microcontrôleur sécurisé traditionnel, les données de contrôle d'intégrité sont stockées dans la mémoire interne, alors que dans la présente invention, cette mémoire interne peut être épargnée étant donné qu'au moins une partie associée aux données de contrôle d'intégrité est déplacée vers la mémoire chiffrée et à intégrité protégée 240 localisée de manière externe par rapport au coeur de CPU. Le coût pour le coeur de CPU sera largement réduit en raison de la disponibilité de ce stockage de données d'intégrité sécurisé dans la mémoire externe.
La figure 3(a) illustre un procédé 300 de génération et de stockage de mots de données et d'intégrité s'entrelaçant dans la mémoire externe 240 selon divers modes de réalisation de l'invention. Un mot de données et son adresse logique à l'intérieur d'un bloc de données sont reçus à l'étape 302. Le mot de données est en outre chiffré sur la base d'un procédé de chiffrement prédéterminé à l'étape 304, et un mot d'intégrité est généré à partir du mot de données sur la base d'un procédé de vérification d'intégrité prédéterminé à l'étape 306. Dans un mode de réalisation, le mot d'intégrité peut également être généré à partir du mot de données chiffré (c'est-à-dire, données de charge utile). L'adresse logique est mappée en deux adresses physiques dans la mémoire externe à l'étape 310, une adresse physique pour le mot de données chiffré (c'est-à-dire, données de charge utile) et l'autre adresse physique pour le mot d'intégrité (c'est-à-dire, données de contrôle d'intégrité). Un schéma d'entrelacement de données peut être incorporé à l'étape 310. En conséquence, le mot de données et le mot d'intégrité peuvent être stockés dans les mémoires adressées par les deux adresses physiques, respectivement, à l'étape 312.
La figure 3(b) illustre un procédé 350 d'extraction d'un mot de données et d'un mot d'intégrité d'une mémoire externe 240 selon divers modes de réalisation de l'invention. Une adresse logique à l'intérieur d'un bloc de données est reçue à l'étape 352 pour un mot de données d'intérêt. L'adresse logique est utilisée pour identifier deux adresses physiques pour le mot de données et le mot d'intégrité à l'étape 354 selon un schéma d'entrelacement de données. Le mot de données et le mot d'intégrité sont par conséquent extraits des adresses physiques spécifiées à l'étape 356. Le mot de données est déchiffré à l'étape 358 sur la base d'un procédé de déchiffrement inverse d'un procédé de chiffrement, et le mot de données déchiffré est en outre utilisé pour générer un mot d'intégrité regénéré à l'étape 360 en utilisant un procédé de vérification d'intégrité. Dans un mode de réalisation, le mot d'intégrité regénéré peut également être généré à partir du mot de données chiffré. Le mot d'intégrité extrait de la mémoire externe est généré par le même procédé de vérification d'intégrité pendant un processus de chiffrement antérieur, et par conséquent, la cohérence entre le mot d'intégrité reconstitué et le mot d'intégrité regénéré est applicable à l'étape 364 pour la vérification de données. Si la cohérence existe, le mot de données extrait de la mémoire externe peut être sorti ; sinon, un drapeau d'erreur serait sorti.
De manière avantageuse, le procédé peut comprendre en outre le stockage d'au moins un mot d'intégrité, à l'intérieur de la pluralité de mots d'intégrité, dans un cache d'intégrité dans le microcontrôleur avant l'étape de vérification de la validité de la pluralité de mots de données en utilisant la pluralité de mots d'intégrité reconstitués sur la base d'une vérification d'intégrité, où le cache d'intégrité est différent d'un cache de CPU. Diverses structures sont incorporées dans le bloc de chiffrement et de protection d'intégrité 208 pour mettre en oeuvre des fonctions critiques de chiffrement/déchiffrement de données, génération de mot d'intégrité, vérification d'intégrité et mappage d'adresses. La figure 4 illustre un schéma de principe exemplaire 400 du bloc de chiffrement et de protection d'intégrité 208 selon divers modes de réalisation de l'invention. Le bloc de chiffrement et de protection d'intégrité 400 comprend un traducteur d'adresse 402, un chiffreur de données 404, un déchiffreur de données 406, un générateur de données de contrôle d'intégrité 412, et un bloc de validation d'intégrité 414. Les processus d'écriture et de lecture mémoire susmentionnés sont étiquetés dans des lignes en trait continu et trait tireté, respectivement. Une adresse logique est traduite en deux adresses physiques respectives pour les données de charge utile et les données de contrôle d'intégrité dans le traducteur d'adresse 402 pendant à la fois les opérations d'écriture mémoire et de lecture mémoire. Pendant une opération d'écriture mémoire, les données entrantes sont chiffrées en données de charge utile dans le chiffreur de données 404, tandis que les données de contrôle d'intégrité sont générées dans le générateur de données de contrôle d'intégrité 412. Pendant une opération de lecture mémoire, les données de charge utile sont extraites de la mémoire externe 240, déchiffrées dans le déchiffreur de données 406, et utilisées pour regénérer les données de contrôle d'intégrité dans le générateur de données de contrôle d'intégrité 412. Les données de contrôle d'intégrité sont en outre comparées avec les données de contrôle d'intégrité extraites dans le bloc de validation d'intégrité 414. Des données déchiffrées ou un drapeau d'erreur est sorti concernant les données de charge utile valides ou invalides extraites de la mémoire externe, respectivement.
L'accès aux données de contrôle d'intégrité introduit des retards pour les opérations de lecture et d'écriture des données de charge utile. Chaque fois que les données de charge utile sont lues ou écrites, les données de contrôle d'intégrité associées sont lues depuis ou écrites vers la mémoire externe. Le temps d'accès à la mémoire peut être largement dégradé. Par conséquent, dans certains modes de réalisation, un cache d'intégrité 416 peut être utilisé pour augmenter le taux d'accès à la mémoire en stockant temporairement les données de contrôle d'intégrité pendant des opérations de lecture ou d'écriture consécutives. Le cache d'intégrité 416 est différent d'un cache de CPU inclus dans le coeur de CPU. Dans divers modes de réalisation, des mots de données consécutifs sont associés à des sous-mots d'intégrité différents dans un mot de données de contrôle d'intégrité. Un mot de données de contrôle d'intégrité peut être lu dans une opération de lecture mémoire, et stocké dans le cache d'intégrité 416 pour l'utilisation par plusieurs opérations de lecture de données de charge utile consécutives. Une pluralité de sous-mots de données de contrôle d'intégrité peuvent être combinés en utilisant le cache d'intégrité 416 et un bloc de combinaison pendant des opérations d'écriture mémoire consécutives, et écrits dans la mémoire externe 240 à l'intérieur d'une opération d'écriture mémoire. Plusieurs procédés peuvent être employés pour écrire dans ou lire depuis la mémoire externe d'un microcontrôleur sécurisé. Ces procédés incluent un procédé de mappage de données, un procédé de chiffrement de données, et un procédé de vérification d'intégrité. Le procédé de chiffrement de données peut être inversé pour fournir le procédé de déchiffrement de données correspondant. Particulièrement, dans divers modes de réalisation de la présente invention, le schéma d'entrelacement de données est intégré dans le procédé de mappage de données dans le traducteur d'adresse 402. Dans la mémoire chiffrée et à intégrité protégée 240, les données de charge utile et les données de contrôle d'intégrité sont entrelacées selon un certain schéma d'entrelacement de données, et deux adresses physiques sont traduites à partir de chaque adresse logique en conséquence pendant l'opération de lecture et d'écriture mémoire. En particulier, il existe divers modes de réalisation de schémas d'entrelacement de données réguliers dans lesquels les données de
charge utile et les données de contrôle d'intégrité sont agencées dans une configuration périodique. Dans un mode de réalisation, chaque mot de données de charge utile est suivi d'un mot de données de contrôle d'intégrité pertinent. Dans un autre mode de réalisation, plusieurs mots de données de charge utile forment un bloc de données de charge utile, et chaque bloc de données de charge utile est suivi d'un mot ou bloc de données de contrôle d'intégrité, qui contient les données de contrôle d'intégrité de tous les mots de données de charge utile inclus dans le bloc de données de charge utile. Les données de charge utile et les données de contrôle d'intégrité pertinentes peuvent ne pas être localisées physiquement ensemble dans la mémoire 240. Le schéma d'entrelacement de données détermine directement le procédé de mappage de données utilisé par le traducteur d'adresse 402 pour traduire une adresse logique en deux adresses physiques différentes pour les données de charge utile et les données de contrôle d'intégrité pendant les opérations de lecture et d'écriture mémoire. La figure 5 illustre un schéma d'entrelacement de données en exemple 500 dans la mémoire externe 240 selon divers modes de réalisation de l'invention. Chaque mot de données de charge utile (c'est- à-dire, mot de données, DW) est suivi directement d'un mot de données de contrôle d'intégrité (c'est-à-dire, mot d'intégrité, IW) qui est lié au mot de données de charge utile précédent sur la base d'un procédé de vérification d'intégrité. Par exemple, les longueurs des mots de données et des mots de données de contrôle d'intégrité peuvent être de 16, 22, 54 ou 128 bits comme spécifié par la spécification de mémoire externe. Dans certains modes de réalisation, la longueur des mots de données et la longueur des mots d'intégrité ne sont pas égales, et peuvent être inférieures à la longueur de mot autorisée par la mémoire externe. Des zéros ou des uns peuvent être utilisés pour remplir les bits inutilisés.
Les bits inutilisés peuvent être les deux ou trois premiers bits ou les deux ou trois derniers bits, et ils peuvent également être mélangés aléatoirement avec les bits utilisés du moment que leurs emplacements soient suivis par le contrôleur de mémoire 210. Dans divers modes de réalisation de la présente invention, tous les deux ou trois mots de données sont entrelacés avec un mot d'intégrité de la même longueur dans la mémoire externe 240. Ce mot d'intégrité se compose de plusieurs sous-mots d'intégrité (ISW) qui ont une longueur égale. Chaque ISW est un mot d'intégrité lié à un mot de données de charge utile sur la base d'un procédé de vérification d'intégrité. Par conséquent, le nombre de sous-mots d'intégrité est égal au nombre de mots de données. Les mots de données stockés dans la mémoire externe ont une largeur de i bit, où i est un entier. La longueur de chaque ISW, ISWlength est une fraction de la longueur du mot de données i, et peut être dérivée comme : a ISWlength n où n est le nombre de mots de données et le nombre de sous-mots d'intégrité. L'équation (1) est applicable à des schémas d'entrelacement de données périodiques dans lesquels les sous-mots d'intégrité ont une longueur égale.
La figure 6 illustre un autre schéma d'entrelacement de données périodique en exemple 600 dans la mémoire 240 selon divers modes de réalisation de l'invention. Tous les huit mots de données de 128 bits sont alternés avec un mot de données de contrôle d'intégrité de 128 bits qui se compose de huit sous-mots d'intégrité de 16 bits. Chacun des huit sous-mots d'intégrité de 16 bits est lié successivement à chacun des huit mots de données de charge utile de 128 bits sur la base du procédé de vérification d'intégrité. Dans ce mode de réalisation, un mot d'intégrité de 128 bits IWO se compose de huit sous-mots d'intégrité de 16 bits ISWO-ISW7, et ISWO-ISW7 correspondent à huit mots de données successifs DWO-DW7, respectivement. En particulier, le sous-mot d'intégrité ISWO qui occupe les 16 bits de poids faible d'IWO est lié au premier mot de données DWO, tandis que le sous-mot d'intégrité ISW7 qui occupe les 16 bits de poids fort d'IWO est lié au dernier mot de données DW7. Dans ce mode de réalisation, le schéma d'entrelacement de données est compatible avec l'équation (1), et les entiers i et n sont égaux à 128 et 8, respectivement.
La figure 7 illustre un schéma d'entrelacement de données en exemple 700 dans la mémoire externe 240 selon divers modes de réalisation de l'invention. La longueur pour chaque sous-mot d'intégrité applicable à chaque mot de données est 1 bit. La longueur du mot de données i et le nombre d'ISW n sont égaux. Le mot de contrôle (1) d'intégrité d'l bit peut être généré à partir d'une vérification de parité paire/impaire. Les mots de données de charge utile d'i bit sont liés successivement aux mots de contrôle d'intégrité d'l bit sur la base d'un certain procédé de vérification d'intégrité. Le premier mot de données DWO est associé à ISWO qui est le bit de poids faible du mot d'intégrité d'i bit, tandis que le dernier mot de données DW;_1 est associé à ISWI_i qui est le bit de poids fort du mot d'intégrité d'i bit. Du fait de la longueur ISW d'l bit, ce mode de réalisation est un cas limite qui peut être représenté par l'équation (1).
La figure 8 illustre un procédé en exemple 800 de mappage d'adresses logiques de données dans un bloc de données en adresses physiques dans la mémoire externe 240 selon un certain schéma d'entrelacement de données selon divers modes de réalisation de l'invention. Les équations doivent convertir les adresses logiques en adresses physiques. Dans le mode de réalisation illustré sur la figure 5, tous les huit mots de données de charge utile de 128 bits sont entrelacés avec un mot de données de contrôle d'intégrité de 128 bits. Un x-ième mot de données de charge utile à l'intérieur d'un bloc de données entrantes peut être mappé en le y-ième mot à l'intérieur d'un bloc de données résultantes stocké dans la mémoire externe. Les deux indices des données entrantes et résultantes commencent à partir de 0. Sur la base du schéma d'entrelacement de données périodique particulier, la relation des adresses relatives x et y dans le bloc de données résultantes peut être représentée comme y = 9 x floor (g) + mod(x,8) (2) où floor(x/8) est un résultat arrondi de la division de x par 8, et mod(x,8) est un reste. En conséquence, toutes les huit données de charge utile sont entrelacées avec une donnée de contrôle d'intégrité dont l'adresse relative Addrw dans le bloc de données résultantes est Add1W = 9 x floor(g) +8 (3) Les adresses relatives pour les données de charge utile et les données de contrôle d'intégrité sont générées dans le traducteur d'adresse 402, et superposées en outre à une adresse de bloc pour identifier leurs adresses physiques dans la mémoire externe. Les équations (2) et (3) sont intégrées dans le procédé de mappage de données employé par le traducteur d'adresse 402.
Un mot d'intégrité (IW) comprend une pluralité de sous-mots d'intégrité (ISW) qui occupent des bits différents de l'IW. Comme un mot de données (DW) est stocké dans la mémoire externe, un ISW (c'est-à- dire, une pluralité de bits dans l'IW) est écrit dans un mot de mémoire correspondant également. Les sous-mots d'intégrité associés aux mots de données successifs forment un mot d'intégrité et partagent une même adresse physique pour le mot d'intégrité. Dans un mode de réalisation, le mot d'intégrité est extrait une fois, et stocké dans le cache d'intégrité 416. Les sous-mots d'intégrité sont extraits pendant des opérations de lecture successives pour diverses données de charge utile. Dans un mode de réalisation, le bloc de chiffrement et de protection d'intégrité 208 utilise le cache d'intégrité 416 pour stocker des ISW temporairement pour une opération d'écriture mémoire. Le bloc 208 attend qu'un mot d'intégrité complet soit dérivé de données de charge utile successives avant que le mot d'intégrité complet ne puisse être stocké dans le mot de mémoire spécifié par l'adresse physique du mot d'intégrité. Ce mode de réalisation permet un temps d'accès à la mémoire court pendant les opérations d'écriture. Dans un autre mode de réalisation, le mot d'intégrité est extrait de l'adresse physique IW, et les bits alloués au mot de données de charge utile présent sont recouverts avec l'ISW avant que le mot d'intégrité ne soit restocké à l'adresse physique IW spécifiée dans la mémoire externe. Des modules additionnels (par ex., des caches d'intégrité) et des contrôles sont intégrés dans le bloc de chiffrement et de protection d'intégrité 208 pour entrelacer des données si une pluralité de mots de données sont associés à un mot.
Le schéma d'entrelacement de données est mis en oeuvre par matériel et s'avère transparent au logiciel utilisé par le microcontrôleur sécurisé. Le logiciel utilise normalement des adresses logiques sans la nécessité d'utiliser de registres supplémentaires pour configurer une zone de données (c'est-à-dire, un bloc) dans la mémoire externe. Dans
la présente invention, les adresses logiques sont configurées en adresses physiques dans le traducteur d'adresse. A la fois la confidentialité des données et l'intégrité des données sont améliorées du fait de la programmation du schéma d'entrelacement de données dans le matériel. Bien que le schéma d'entrelacement de données périodique soit préféré dans certaines mémoires, par ex., SDRAM, l'homme du métier reconnaîtra qu'un schéma d'entrelacement de données plus complexe puisse être utilisé. Dans un mode de réalisation, une adresse physique d'un mot de données de contrôle d'intégrité peut être générée à partir d'un procédé spécial dépendant d'une clé. Un schéma d'entrelacement de données complexe améliorera la confidentialité des données, et créera plus d'obstacles pour les attaqueurs pour distinguer les données de charge utile des données de contrôle d'intégrité dans une mémoire externe. En combinaison avec des procédés de chiffrement de données, ce schéma d'entrelacement de données complexe fournit une solution robuste pour protéger un microcontrôleur sécurisé d'une majorité d'efforts de manipulation frauduleuse. Les procédés utilisés pour mettre en oeuvre des schémas d'entrelacement de données complexes sont incorporés dans le traducteur d'adresse 402, et le coût pour la conception et le matériel augmente avec la complexité des schémas d'entrelacement de données. Un schéma d'entrelacement de données dans une mémoire externe est particulièrement utile pour garantir la confidentialité des données et l'intégrité des données dans un microcontrôleur sécurisé. Toutefois, un homme du métier ordinaire peut se rendre compte que le schéma d'entrelacement de données est également applicable dans des microcontrôleurs traditionnels. Ces microcontrôleurs peuvent nécessiter d'économiser le coût de mémoires de CPU onéreuses provenant du stockage des données de contrôle d'intégrité. Un procédé de mappage de données incorporé dans le traducteur d'adresse peut être utilisé pour mettre en oeuvre le schéma d'entrelacement de données, et le contrôleur de mémoire peut être acheminé vers la mémoire externe plutôt que la mémoire de CPU interne.
Pour le mémoire ci-dessus, la référence à « données de charge utile » signifie des données chiffrées qui sont associées à des « données » qui sont fournies par le coeur de CPU 206 et stockées dans la mémoire 240. Toutefois, « données de charge utile » peut être équivalent à « données » dans le cas où aucun chiffrement/ déchiffrement n'est impliqué dans les opérations d'écriture ou de lecture mémoire. Les expressions « mot de données de charge utile » et « mot de données » à divers endroits dans le mémoire sont équivalentes. Les expressions « mot de données de contrôle d'intégrité » et « mot d'intégrité à divers endroits dans le mémoire sont également équivalentes. Dans divers modes de réalisation de la présente invention, l'utilisation de « données » est associée non seulement à des données liées à des informations confidentielles (par ex., noms d'utilisateurs, mots de passe, transactions, etc.) mais également à des programmes, instructions et codes exécutés par le coeur de CPU. Bien que l'invention soit susceptible de diverses modifications et formes alternatives, des exemples spécifiques de celle-ci ont été montrés sur les dessins et sont décrits ici en détail. Toutefois, il convient de comprendre que l'invention ne doive pas être limitée aux formes particulières décrites, mais au contraire, l'invention doit couvrir toutes les modifications, équivalents, et alternatives se trouvant à l'intérieur de la portée des revendications annexées.20
Claims (14)
- REVENDICATIONS1. Procédé pour le stockage sécurisé de mots de données et de mots d'intégrité à l'intérieur d'une mémoire externe d'un 5 microcontrôleur, le procédé comprenant : la réception (302) d'une pluralité de mots de données et d'une pluralité d'adresses logiques ; l'association de chaque mot de données, à l'intérieur de la pluralité de mots de données, à une adresse logique correspondante à 10 l'intérieur de la pluralité d'adresses logiques ; la génération (306) d'une pluralité de mots d'intégrité à partir de la pluralité de mots de données sur la base d'un procédé de vérification d'intégrité, chaque mot d'intégrité étant associé à au moins un mot de données à l'intérieur de la pluralité de mots de données ; 15 la traduction (310) de la pluralité d'adresses logiques en une pluralité de premières adresses physiques à l'intérieur de la mémoire externe et une pluralité de secondes adresses physiques à l'intérieur de la mémoire externe sur la base d'une mappe de données ; le stockage (312) de la pluralité de mots de données dans la 20 pluralité de premières adresses physiques dans la mémoire externe ; et le stockage (312) de la pluralité de mots d'intégrité dans la pluralité de secondes adresses physiques dans la mémoire externe.
- 2. Procédé selon la revendication 1, comprenant en outre le chiffrement (304) de la pluralité de mots de données avant le 25 stockage des mots de données ; dans lequel la pluralité de mots de données sont stockés dans la pluralité de premières adresses physiques dans la mémoire externe sous forme chiffrée.
- 3. Procédé selon la revendication 1 ou 2, comprenant en outre 30 le stockage d'au moins un mot d'intégrité, à l'intérieur de la pluralité de mots d'intégrité, dans un cache d'intégrité dans le microcontrôleur avant l'étape de stockage de la pluralité de mots d'intégrité dans la pluralité de secondes adresses physiques dans la mémoire externe, où le cache d'intégrité est différent d'un cache de 35 CPU.
- 4. Procédé selon l'une quelconque des revendications 1 à 3, dans lequel chaque mot d'intégrité, à. l'intérieur de la pluralité de motsd'intégrité, comporte un premier nombre de bits et chaque mot de données chiffré, à l'intérieur de la pluralité de mots de données chiffrés, comporte un second nombre de bits, le premier nombre de bits étant égal au second nombre de bits.
- 5. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel chaque mot d'intégrité comprend une pluralité de sous-mots d'intégrité, chaque sous-mot d'intégrité correspondant à un mot de données à l'intérieur de la pluralité de mots de données.
- 6. Procédé selon l'une quelconque des revendications 1 à 5, 10 dans lequel la pluralité de mots de données chiffrés et la pluralité de mots d'intégrité sont entrelacés dans la mémoire externe.
- 7. Procédé selon la revendication 6, dans lequel un sous-ensemble de la pluralité de mots de données chiffrés est associé à un mot d'intégrité ayant une pluralité de sous-mots d'intégrité 15 correspondant au sous-ensemble de la pluralité de mots de données chiffrés, le sous-ensemble étant stocké avec le mot d'intégrité dans un schéma entrelacé à l'intérieur de la mémoire externe.
- 8. Procédé selon la revendication 7, dans lequel le sous-ensemble de la pluralité de mots de données chiffrés comporte huit 20 mots de données chiffrés et le mot d'intégrité comporte huit sous-mots d'intégrité.
- 9. Système de microcontrôleur sécurisé comprenant : un coeur de traitement central (206) agencé pour générer une pluralité de mots de données et une pluralité d'adresses logiques ; 25 un bloc de chiffrement et de protection d'intégrité (208), couplé au coeur de traitement central, le bloc de chiffrement et de protection d'intégrité étant agencé pour générer une pluralité de mots d'intégrité à partir de la pluralité de mots de données, chiffrer la pluralité de mots de données, et mapper la pluralité d'adresses logiques en une pluralité de 30 premières adresses physiques et une pluralité de secondes adresses physiques à l'intérieur d'une mémoire externe ; et un contrôleur de mémoire (210), couplé au bloc de chiffrement et de protection d'intégrité, le contrôleur de mémoire étant agencé pour stocker la pluralité de mots de données chiffrés dans la pluralité de 35 premières adresses physiques et la pluralité de mots d'intégrité dans la pluralité de secondes adresses physiques.
- 10. Système de microcontrôleur sécurisé selon la revendication 9, dans lequel le bloc de chiffrement et de protection d'intégrité (208) comprend en outre : un générateur de données de contrôle d'intégrité agencé pour générer une pluralité de mots d'intégrité à partir de la pluralité de mots de données sur la base d'un procédé de vérification d'intégrité ; un traducteur d'adresse agencé pour traduire la pluralité d'adresses logiques en la pluralité de premières adresses physiques et la pluralité de secondes adresses physiques sur la base d'une mappe de données ; et un chiffreur de données agencé pour chiffrer la pluralité de mots de données en la pluralité de mots de données chiffrés sur la base d'un procédé de chiffrement de données ; dans lequel à la fois la pluralité de premières adresses physiques 15 et la pluralité de secondes adresses physiques sont associées à une mémoire externe du microcontrôleur ; dans lequel chacun de la pluralité de mots d'intégrité est associé à au moins un de la pluralité des mots de données.
- 11. Système de microcontrôleur sécurisé selon l'une quelconque 20 des revendications 9 ou 10, dans lequel le bloc de chiffrement et de protection d'intégrité (208) comprend en outre un cache d'intégrité pour stocker au moins un de la pluralité de mots d'intégrité, où le cache d'intégrité est différent d'un cache de CPU.
- 12. Procédé pour extraire des mots de données chiffrés et des 25 mots d'intégrité à l'intérieur d'une mémoire externe d'un microcontrôleur, le procédé comprenant : la réception (352) d'une pluralité d'adresses logiques ; la traduction (354) de la pluralité d'adresses logiques en une pluralité de premières adresses physiques à l'intérieur de la mémoire 30 externe et une pluralité de secondes adresses physiques à l'intérieur de la mémoire externe sur la base d'une mappe de données ; la lecture (356) d'une pluralité de mots de données chiffrés à partir de la pluralité de premières adresses physiques dans la mémoire externe et d'une pluralité de mots d'intégrité à partir de la pluralité de 35 secondes adresses physiques dans la mémoire externe ; le déchiffrement (358) de la pluralité de mots de données chiffrés en une pluralité de mots de données ;la vérification de la validité (360, 364) de la pluralité de mots de données en utilisant la pluralité de mots d'intégrité reconstitués sur la base d'une vérification d'intégrité ; et la sortie de la pluralité de mots de données si la pluralité de mots 5 de données sont valides.
- 13. Procédé selon la revendication 12, dans lequel l'étape de vérification de la validité de la pluralité de mots de données comprend en outre les étapes suivantes : regénérer (360) une pluralité de mots d'intégrité regénérés à partir 10 de la pluralité de mots de données sur la base de la vérification d'intégrité ; comparer (364) la pluralité de mots d'intégrité regénérés avec la pluralité de mots d'intégrité ; et indiquer la validité de la pluralité de mots de données par des 15 résultats de comparaison qui sont associés à la cohérence entre la pluralité de mots d'intégrité et la pluralité de mots d'intégrité reconstitués.
- 14. Procédé selon l'une quelconque des revendications 12 ou 13, dans lequel la validité de la pluralité de mots de données est en 20 outre appliquée pour dresser une exception CPU sur la base d'une politique de sécurité du microcontrôleur, l'exception CPU étant exploitée pour mettre en oeuvre au moins une fonction sélectionnée dans un groupe de fonctions incluant l'effacement des données sensibles, le déclenchement d'une interruption non masquable, l'écriture d'une 25 valeur dans un registre à drapeaux, la réinitialisation du microcontrôleur, et l'exécution d'un code dédié.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1154694A FR2976147B1 (fr) | 2011-05-30 | 2011-05-30 | Schema d'entrelacement de donnees pour une memoire externe d'un microcontroleur securise |
CN201210172262.7A CN102855161B (zh) | 2011-05-30 | 2012-05-29 | 用于安全微控制器的外部存储器的数据交织方案 |
US13/483,669 US10797857B2 (en) | 2011-05-30 | 2012-05-30 | Data interleaving scheme for an external memory of a secure microcontroller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1154694A FR2976147B1 (fr) | 2011-05-30 | 2011-05-30 | Schema d'entrelacement de donnees pour une memoire externe d'un microcontroleur securise |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2976147A1 true FR2976147A1 (fr) | 2012-12-07 |
FR2976147B1 FR2976147B1 (fr) | 2013-11-22 |
Family
ID=44785931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1154694A Active FR2976147B1 (fr) | 2011-05-30 | 2011-05-30 | Schema d'entrelacement de donnees pour une memoire externe d'un microcontroleur securise |
Country Status (3)
Country | Link |
---|---|
US (1) | US10797857B2 (fr) |
CN (1) | CN102855161B (fr) |
FR (1) | FR2976147B1 (fr) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9256551B2 (en) | 2013-08-09 | 2016-02-09 | Apple Inc. | Embedded encryption/secure memory management unit for peripheral interface controller |
US9419952B2 (en) * | 2014-06-05 | 2016-08-16 | Stmicroelectronics (Grenoble 2) Sas | Memory encryption method compatible with a memory interleaved system and corresponding system |
US10223289B2 (en) * | 2015-07-07 | 2019-03-05 | Qualcomm Incorporated | Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management |
CN106681941A (zh) * | 2015-11-07 | 2017-05-17 | 上海复旦微电子集团股份有限公司 | 存储器的数据写入、读出方法及装置 |
US10594491B2 (en) * | 2015-12-24 | 2020-03-17 | Intel Corporation | Cryptographic system memory management |
US10992453B2 (en) * | 2016-05-18 | 2021-04-27 | International Business Machines Corporation | System architecture for encrypting external memory |
US11163701B2 (en) * | 2018-11-15 | 2021-11-02 | Intel Corporation | System, apparatus and method for integrity protecting tenant workloads in a multi-tenant computing environment |
US11520709B2 (en) * | 2020-01-15 | 2022-12-06 | International Business Machines Corporation | Memory based encryption using an encryption key based on a physical address |
US11763008B2 (en) | 2020-01-15 | 2023-09-19 | International Business Machines Corporation | Encrypting data using an encryption path and a bypass path |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030200448A1 (en) * | 2002-04-18 | 2003-10-23 | International Business Machines Corporation | Control function implementing selective transparent data authentication within an integrated system |
US6708274B2 (en) * | 1998-04-30 | 2004-03-16 | Intel Corporation | Cryptographically protected paging subsystem |
EP2026470A1 (fr) * | 2007-08-17 | 2009-02-18 | Panasonic Corporation | Vérification de redondance cyclique de fonctionnement sur des segments de codage |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5332315A (en) | 1991-04-27 | 1994-07-26 | Gec Avery Limited | Apparatus and sensor unit for monitoring changes in a physical quantity with time |
US5892900A (en) * | 1996-08-30 | 1999-04-06 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
NZ513862A (en) * | 2000-01-21 | 2001-09-28 | Sony Corp | Data authentication system |
DK1797645T3 (en) * | 2004-08-30 | 2018-11-19 | Google Llc | Systems and methods for providing non-volatile memory management in cordless phones |
US7340672B2 (en) * | 2004-09-20 | 2008-03-04 | Intel Corporation | Providing data integrity for data streams |
US7657756B2 (en) * | 2004-10-08 | 2010-02-02 | International Business Machines Corporaiton | Secure memory caching structures for data, integrity and version values |
US8055970B1 (en) * | 2005-11-14 | 2011-11-08 | Raytheon Company | System and method for parallel processing of data integrity algorithms |
US8830072B2 (en) | 2006-06-12 | 2014-09-09 | Intelleflex Corporation | RF systems and methods for providing visual, tactile, and electronic indicators of an alarm condition |
US7809899B2 (en) * | 2007-05-29 | 2010-10-05 | Lsi Corporation | System for integrity protection for standard 2n-bit multiple sized memory devices |
JP2009301482A (ja) | 2008-06-17 | 2009-12-24 | Totoku Electric Co Ltd | 無線タグおよび無線タグ・システム |
US8555015B2 (en) * | 2008-10-23 | 2013-10-08 | Maxim Integrated Products, Inc. | Multi-layer content protecting microcontroller |
EP2221750A1 (fr) | 2009-02-10 | 2010-08-25 | EM Microelectronic-Marin SA | Carte à puce à circuit de mesure à capteur, et procédé de réalisation de la carte à puce |
-
2011
- 2011-05-30 FR FR1154694A patent/FR2976147B1/fr active Active
-
2012
- 2012-05-29 CN CN201210172262.7A patent/CN102855161B/zh active Active
- 2012-05-30 US US13/483,669 patent/US10797857B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6708274B2 (en) * | 1998-04-30 | 2004-03-16 | Intel Corporation | Cryptographically protected paging subsystem |
US20030200448A1 (en) * | 2002-04-18 | 2003-10-23 | International Business Machines Corporation | Control function implementing selective transparent data authentication within an integrated system |
EP2026470A1 (fr) * | 2007-08-17 | 2009-02-18 | Panasonic Corporation | Vérification de redondance cyclique de fonctionnement sur des segments de codage |
Also Published As
Publication number | Publication date |
---|---|
CN102855161B (zh) | 2018-10-12 |
US20120311239A1 (en) | 2012-12-06 |
CN102855161A (zh) | 2013-01-02 |
US10797857B2 (en) | 2020-10-06 |
FR2976147B1 (fr) | 2013-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
FR2976147A1 (fr) | Schema d'entrelacement de donnees pour une memoire externe d'un microcontroleur securise | |
KR101577886B1 (ko) | 무결성 검사 및 리플레이 공격들에 대한 보호를 이용하는 메모리 암호화를 위한 방법 및 장치 | |
JP6592621B2 (ja) | 認証ネットワーク | |
CN109388975B (zh) | 针对安全性和可靠性的存储器组织 | |
KR101863143B1 (ko) | 메모리 무결성 | |
US8843767B2 (en) | Secure memory transaction unit | |
US10922243B2 (en) | Secure memory | |
US8452984B2 (en) | Message authentication code pre-computation with applications to secure memory | |
US8332652B2 (en) | Computing device that securely runs authorized software | |
FR2979443A1 (fr) | Microcontroleur securise a base de mode | |
FR3025041A1 (fr) | ||
FR3098319A1 (fr) | Procédé d'exécution d'un code binaire d'une fonction sécurisée par un microprocesseur | |
EP1983436B1 (fr) | Contrôle d'intégrité d'une mémoire externe à un processeur | |
US20100194609A1 (en) | Method and Device For Coding Data Words | |
CN110659506A (zh) | 基于密钥刷新对存储器进行重放保护 | |
JP5060372B2 (ja) | データ処理装置 | |
US20070168680A1 (en) | Anti-tamper system | |
CN110311773B (zh) | 一种高级加密标准协处理器防注入式攻击的方法 | |
US7707431B2 (en) | Device of applying protection bit codes to encrypt a program for protection | |
EP3832947A1 (fr) | Procédé d' exécution d'un programme d'ordinateur par un appareil électronique | |
FR2930065A1 (fr) | Procede de securisation de donnees d'une carte a puce |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
CA | Change of address |
Effective date: 20131120 |
|
PLFP | Fee payment |
Year of fee payment: 6 |
|
PLFP | Fee payment |
Year of fee payment: 7 |
|
PLFP | Fee payment |
Year of fee payment: 8 |
|
PLFP | Fee payment |
Year of fee payment: 9 |
|
PLFP | Fee payment |
Year of fee payment: 10 |
|
PLFP | Fee payment |
Year of fee payment: 11 |
|
PLFP | Fee payment |
Year of fee payment: 12 |
|
PLFP | Fee payment |
Year of fee payment: 13 |
|
PLFP | Fee payment |
Year of fee payment: 14 |