Circuit programmable pourvu d'une mémoire sécurisée La présente invention concerne un circuit programmable pourvu d'une mémoire sécurisée.
Le domaine de l'invention est celui des composants électroniques sécurisés, notamment celui des circuits utilisés pour réaliser des transactions confidentielles.
Un tel circuit peut être subdivisé en deux zones, l'une sécurisée, l'autre non. Les informations qui transitent dans la zone sécurisée sont protégées : elles sont brouillées à l'émission et débrouillées à la réception. Dans la zone non sécurisée, les informations transitent en clair.
En tout état de cause, ce circuit intègre un microprocesseur et, souvent, une mémoire cache, un contrôleur de mémoire de cache et / ou une unité de gestion mémoire. De plus, une mémoire non volatile, une ou plusieurs mémoires de travail telles que mémoire à accès aléatoire (« RAM » pour le terme anglais « Random Access Memory ») ou mémoire à lecture seule (« ROM » pour le terme anglais « Read Only Memory ») figurent généralement dans la zone sécurisée. La plupart du temps, d'autres périphériques sont implantés dans la zone non sécurisée.
La mémoire non volatile (dite aussi mémoire « flash ») conserve les données enregistrées lorsque le circuit est hors tension, si bien que ces données sont accessibles à la prochaine mise sous tension. C'est donc dans cette mémoire que sont stockées les données qui doivent être toujours disponibles et, notamment, les clés de chiffrement propre au circuit.
Or une mémoire flash n'est pas totalement protégée. Il est possible de venir lire son contenu de l'extérieur au moyen de deux grands types d'attaques.
En premier lieu, l'attaque logicielle consiste à demander au circuit par une interface externe la lecture de la mémoire flash, ou bien à demander directement au microprocesseur qu'il sorte du circuit les données enregistrées dans cette mémoire. Ce type d'attaque est généralement prévenu par l'utilisation d'une unité de gestion de mémoire couplée au microprocesseur.
En second lieu, l'attaque physique du circuit est réalisée le plus souvent avec un microscope à effet de champ. Celui-ci permet de mesurer les charges stockées sur les grilles flottantes des cellules non volatiles afin de décoder les données contenues dans ces cellules. Cette deuxième attaque est aujourd'hui lente et coûteuse. De plus, certains mécanismes ont été mis en place pour la détecter et vider le contenu complet de la mémoire en cas de détection.
Cependant, ces mécanismes présentent un certain temps de réponse et il peut arriver qu'une partie au moins de la mémoire soit décodée avant que celle-ci ne soit effacée.
Dans certaines applications, il ne faut pas prendre le risque d'une telle attaque qui rend vulnérable les données stockées dans la mémoire flash, données au nombre desquelles peuvent figurer des clés de chiffrement.
La présente invention a ainsi pour objet de renforcer la protection de cette mémoire contre les accès frauduleux.
Selon l'invention, un circuit programmable comprend un microprocesseur, des périphériques dont une mémoire non volatile et une mémoire de travail, un bus d'interconnexion pour relier ces périphériques au microprocesseur ; de plus ce circuit comprend des moyens de protection pour sécuriser la mémoire non volatile.
Avantageusement, ces moyens de protection comportent des moyens de cryptage pour adresser des mots cryptés à la mémoire non volatile.
De préférence, les moyens de cryptage font appel à une clé privée.
Selon un mode de réalisation privilégié du circuit, les moyens de cryptage figurent dans un module d'adaptation raccordé d'une part au bus d'interconnexion et d'autre part à la mémoire non volatile par l'intermédiaire d'une liaison dédiée.
Il est souhaitable que la longueur de la clé de cryptage soit supérieure à la longueur standard des données que traite le microprocesseur, si bien que celui-ci comprend des moyens pour décomposer les mots cryptés en données de longueur standard. Selon le mode de réalisation privilégié ci-dessus, ces moyens pour décomposer les mots cryptés en données de longueur standard figurent de préférence dans le module d'adaptation.
Ainsi, lorsque le circuit comporte de plus une mémoire cache associé à un contrôleur, la longueur de la clé de cryptage étant supérieure à la longueur standard des données que traite le microprocesseur, le module d'adaptation est prévu pour exploiter les accès consécutifs de ce contrôleur afin de décomposer les mots cryptés en données de longueur standard.
Il est préférable que la clé de cryptage soit stockée dans un registre programmable une seule fois, ce registre pouvant figurer dans la mémoire non volatile.
La présente invention apparaîtra maintenant avec plus de détails dans le cadre de la description qui suit d'un exemple de réalisation donné à titre illustratif en se référant à la figure annexée qui représente un schéma d'un circuit programmable selon l'invention. En référence à la figure, un circuit programmable comporte un microprocesseur MIC éventuellement associé à une mémoire cache et/ou à un contrôleur de mémoire (non représentés). Les autres éléments du circuit sont : une mémoire non volatile FL de type flash, une mémoire de travail RAM à accès aléatoire, - éventuellement un ou plusieurs autres périphériques PER, un module d'adaptation AD, un bus système BUS pour interconnecter tous les éléments du circuit hormis la mémoire non volatile FL, et une liaison dédiée DL pour relier cette mémoire non volatile FL et le module d'adaptation AD.
L'invention propose donc de protéger les données dans la mémoire non volatile FL et une solution avantageuse consiste à recourir à des moyens de cryptage qui sont mis en œuvre de préférence par le module d'adaptation AD.
Ainsi, les données sont cryptées avant d'être enregistrées dans cette mémoire et elles sont décryptées lorsqu'elles sont lues avant d'être traitées.
Il convient donc de chiffrer les données a la volée avant de les stocker dans la mémoire non volatile FL.
Couramment, le microprocesseur traite des données d'une longueur de 8, 16 ou 32 bits (longueur standard), si bien qu'accéder à de telles données de manière sécurisée imposerait un cryptage sur 32 bits. Il s'agirait là d'un cryptage très vulnérable, pratiquement inefficace, si l'on emploie des algorithmes connus.
Il est donc souhaitable de choisir un algorithme travaillant sur des données de 64 bits dans le cas présent, voire même 128 bits dès lors que cela s'avère nécessaire. La sélection d'un algorithme standard permet d'éviter des contraintes supplémentaires, tout en assurant un niveau de sécurité maximal.
On préférera un algorithme a clé privée car il nécessite des temps de calcul beaucoup plus courts qu'un algorithme à clé publique.
A titre d'exemple, on retiendra les algorithmes suivants :
AES (abréviation de l'expression anglaise « Advanced Encryption Standard »), travaillant sur des mots de 128 bits et offrant, à l'heure actuelle, une sécurité maximale,
DES (abréviation de l'expression anglaise « Data Encryption Standard »), travaillant sur des mots de 64 bits, connu pour son universalité dans les systèmes les moins exigeants en matière de sécurité, - 3DES (abréviation de l'expression anglaise « Triple Data
Encryption Standard »), ou
XDES (abréviation de l'expression anglaise « Extended Data Encryption Standard »), ces deux derniers algorithmes étant réputés pour des systèmes plus exigeant en terme de sécurité tout en assurant de hauts débits de chiffrement à faible coût.
Naturellement, le module d'adaptation AD permet de crypter des données plus longues que la longueur standard. Ce module est prévu pour traiter des données de 64 ou 128 bits enregistrées en deux ou quatre mots de 32 bits dans la mémoire non volatile FL, si bien qu'un accès à une de ces données est divisé en plusieurs accès de 32 bits.
A cet effet, le module d'adaptation AD peut exploiter les accès groupés ou accès consécutifs du contrôle de la mémoire cache du microprocesseur. Cette mémoire cache contient une copie partielle de la mémoire non volatile FL qui est mise à jour en fonction de la partie du programme que le microprocesseur MIC exécute. La mémoire cache étant très rapide et très proche du microprocesseur MIC, elle permet généralement d'améliorer les performances du circuit.
Le remplacement des données présentes dans la mémoire cache au moyen du contrôleur de cache s'effectue par paquets, ces paquets ayant une taille minimale de 2 ou plus souvent 4 mots de 32 bits, ceci quelle que soit la taille des données traitées par le microprocesseur MIC.
On remarquera ici que la mémoire cache peut également être utilisée à d'autres fins par le circuit.
Le contrôleur écrit les données enregistrées dans la mémoire cache qui concernent la mémoire flash FL, par paquets d'une taille multiple de 64 bits.
L'interfaçage de la mémoire cache avec la mémoire flash FL qui n'est capable de gérer que des accès de 32 bits se fait de façon simple en scindant un accès de taille 64bits en deux accès de 32 bits.
L'algorithme DES ou 3DES sera ainsi chargé tous les 2 mots de 32 bits, tandis que l'algorithme AES sera chargé tous les 4 mots de 32 bits. Les données sont chargées à la volée. Dans le cas d'un traitement « pipeline » de l'algorithme
AES, autrement dit lorsque le traitement complet d'une donnée en un ou plusieurs cycles est capable de recevoir une nouvelle donnée à chaque cycle, seul le premier accès introduit un temps de latence sur le temps total du transfert des données. La clé privée utilisée par l'algorithme est stockée dans une zone non sécurisée du circuit dont l'accès se fait sans chiffrement, de préférence dans un registre programmable une seule fois dit « OTP » (pour l'expression anglaise One Time Programmable). Ce registre peut d'ailleurs prendre place dans la mémoire non volatile FL. Dans le cas d'une attaque physique telle que décrite ci-dessus, il suffit d'effacer la clé de cryptage dès que l'attaque est détectée, ce qui est une opération très rapide. Il n'est plus nécessaire de vider complètement la mémoire flash FL pour la rendre inopérante, cette opération de vidage pouvant prendre un temps relativement important si cette mémoire a une taille conséquente. Le fait que cette mémoire soit rendue inopérante beaucoup plus rapidement offre un facteur de sécurité supplémentaire.
L'exemple de réalisation de l'invention présenté ci-dessus a été choisi pour son caractère concret. Il ne serait cependant pas possible de répertorier de manière exhaustive tous les modes de réalisation que recouvre cette invention. En particulier, tout moyen décrit peut-être remplacé par un moyen équivalent sans sortir du cadre de la présente invention.