Brevet FR2833120A1 — publié le 20030606

une durée prédétermince. La présente invention concerne un appareil et un procédé pour crypter des données entre un processeur et une mémoire et, en particulier, un appareil et un procédé de cryptage de données permettant d'éviter des écritures en mémoire inutiles dues à un recryptage et de réduire une consommation d'énergie grâce à l'exécution d'un cryptage de données dynamique sans recryptage, à l'enregistrement dans une zone spéciale d'une mémoire d'un index-indiquant lequel de plusieurs codes secrets est utilisé pour crypter des données lors de l'écriture de celles-ci, à la lecture de l' index stocké lors de la lecture des données cryptées et à l'utilisation de l' index pour décrypter celles-ci. Un système de cryptographie sert à protéger un système interne contre des attaques extérieures. Par exemple, dans la société informatisce actuelle dans laquelle de plus en plus de cartes à mémoire ou cartes à puce sont distribuées, il est essentiel de protoger les informations personnelles et les informations de compte bancaire d'utilisateurs qui sont mémorisées dans ces cartes à mémoire. Etant donné que ces informations sont stockées dans une mémoire prédéterminée après une opération de traitement spécial, la mémoire peut être la cible d'attaques par des agresseurs extérieurs. Comme procédés de cryptage de donnces entre un processeur et une mémoire, on connaît un procédé de brouillage de mémoire, un procédé de brouillage de bus et un procédé de cryptage dynamique. Dans le procédé de brouillage de mémoire, lorsque des données sont stockées dans une mémoire, un emplacement de stockage des données est modifié à l' aide d'une adresse convertie au moyen d'un certain algorithme, en remplacement d'une adresse initiale. Par conséquent, des agresseurs extérieurs ne peuvent pas détecter le contenu de la mémoire. Dans le procédé de brouillage de bus, les bus prévus entre le processeur et la mémoire ne sont pas alignés de manière séquentielle. Par conséquent, même si des agresseurs extérieurs sondent les bus, ils ne peuvent pas décrypter le contenu de ceux-ci. Cependant, comme les procédés mentionnés ci-dessus . sont mis en oeuvre de manière statique dans la configuration des puces, il existe un risque de fuite de données par suite de tentatives et d'erreurs des agresseurs. Pour compenser les procédés de brouillage statiques, on a proposé le procédé de cryptage dynamique divulgué dans le brevet américain n 5 987 572. Le procédé de cryptage dynamique fait appel au recryptage. En l' absence d'une demande d'accès mémoire, des données sont lues dans une mémoire désignée par un indicateur, décryptées à l'aide d'un premier code secret, cryptées à l 'aide d'un second code secret et réccrites dans la mémoire désignée par l'indicateur. Le procédé de cryptage dynamique crypte les données de la zone de mémoire désignée par l'indicateur, au moyen de deux codes secrets différents. Dans ce cas, l'opération de recryptage exécutée pour renouveler des informations de code secret lorsqu'une demande d'accès mémoire n'est pas générée conserve simplement le cryptage des données. Par conséquent, le recryptage n'est pas nécessaire lors d'une opération de cryptage de données du processeur. En particulier, les mémoires mortes reprogrammables et effagables électriquement (EEPROM) généralement utilisées pour les cartes à puce ont un nombre d'écritures limité. Ce recryptage inutile réduit la durée de vie des cartes à puce. En outre, la consommation d'énergie de l'ensemble s de la puce est augmentée par le recryptage fréquent. La présente invention a par conséquent pour but principal de réduire une consommation d'énergie en évitant une opération d'écriture en mémoire due à un recryptage inutile lors d'un cryptage de donnces .. dynamique entre un processeur et une mémoire. La présente invention a pour autre but d' augmenter la durée de vie de dispositifs à mémoire, tels que des cartes à mémoire, en évitant une opération d'écriture en mémoire due à un recryptage inutile au cours d'un cryptage de données dynamique entre un processeur et une mémoire. Pour atteindre ce but et selon un premier aspect de la présente invention, il est proposé un appareil pour crypter des donnses entre un processeur et une mémoire, caractérisé en ce qu'il comprend un module destiné à crypter des données d'entrée ou à décrypter des donnces cryptées; une table de codes destinée à stocker des codes secrets pour le cryptage/décryptage de données; et des moyens de commande destinés à 2s générer un lndex pour l'opération de cryptage du module; et en ce que la mémoire comprend une matrice de cellules de mémoire destinée a stocker des données cryptées par le module du processeur; et une mémoire d'état de code destinée à stocker l' index généré dans les moyens de commande du processeur et utilisé pour le cryptage des données d'entrée. De préférence, le module comprend un multiplexeur destiné à sélectionner l'un des codes secrets stockés dans la table de codes; et des moyens opérateurs pour 3s crypter des données d'entrce ou décrypter des données cryptées stockées dans la mémoire, en fonction du code secret sélectionné par le multiplexeur. De préférence également, le multiplexeur sélectionne l'un des codes secrets stockés dans la table de codes en fonction de l' index généré dans les moyens de commande, au cours du cryptage, et l'un des codes secrets stockés dans la table de codes en fonction de l' index stocké dans la mémoire d'état de code de la mémoire, au cours du décryptage. - Conformément à une caractéristique particulière de la présenteinvention, des moyens exécutant une opération OU exclusif peuvent être utilisés comme moyens opérateurs. De préférence, les moyens de commande comprennent un registre destiné à stocker un index global; et des moyens d'incrémentation destinés à incrémenter une valeur de l' index utilisé pour le cryptage et à stocker la valeur dans le registre. De préférence également, les moyens de commande comprennent un générateur de nombres aléstoires destiné à générer l' index. La mémoire d'état de code peut comprendre des cellules de mémoire identiques aux cellules de mémoire qui constituent la matrice de cellules de mémoire. Selon un second aspect de la présente invention, il est également proposé un procédé de cryptage et de décryptage de données, caractérisé en ce que le cryptage comprend les étapes qui consistent à générer un index; à sélectionner un code secret pour le cryptage en fonction de l' index; à stocker l' index utilisé pour le cryptage dans une zone de stockage spéciale de la mémoire; et à crypter des données d'entrée à l 'aide du code secret sélectionné; et en ce que le décryptage comprend les étapes qui consistent à lire des donnéss cryptées stockées dans la mémoire; à lre l' index stocké dans la zone de stockage spéciale de la mémoire; à sélectionner un code secret pour le décryptage en fonction de l' index; et à décrypter les donnces cryptées à l' aide du code secret sélectionné. s L'étape de génération d' index peut comprendre les étapes qui consistent à stocker un index global; et à incrémenter une valeur de l' index à utiliser pour le cryptage suivant. De préférence, l'étape de génération d' index génère l' index de manière aléatoire à l'aided-e moyens générateurs de nombres aléatoires. Ce qui précède, ainsi que d'autres buts, caractéristiques et avantages de la présente invention, ressortira plus clairement de la description détaillée suivante d'un mode de réalisation préféré donnée à titre d'exemple nullement limitatif en référence aux dessins annexés dans lesquels: la figure 1 est un schéma fonctionnel d'un appareil pour exéauter un cryptage dynamique de données entre un processeur et une mémoire, conformément à la présente invention; la figure 2 est un schéma représentant une opération de cryptage de données entre le processeur et la mémoire, conformément à la présente invention; 2s la figure 3 est un schéma représentant une opération de décryptage de données entre le processeur et la mémoire, conformément à la présente lnvention; la figure 4 est un organigramme d'un procédé de cryptage de données entre le processeur et la mémoire, conformément à la présente invention; et la figure 5 est un organigramme d'un procédé de décryptage de données entre le processeur et la mémoire, conformément à la présente invention. Un appareil et un procédé de cryptage de données selon un mode de réalisation préféré de la présente invention vont maintenant être décrits en détail en référence aux dessins. En référence à la figure 1, l'appareil de cryptage de données comprend un processeur 10 et un bloc de mémoire 20. Le processeur 10 comprend une mémoire centrale 11 destinée à stocker des données DATA introduites de l'extérieur, un module de cryptage/décryptage 12 destiné à crypter les données DATA stockées dans la mémoire centrale 11, une table de codes 13 destinée à stocker des codes secrets K1 à Kn pour le cryptage/décryptage des données; et une unité de commande de cryptage de données 14 destinée à générer un index IND en vue de la sélection du code secret Ki pour le cryptage/décryptage des donnces. Le bloc de mémoire 20 comprend une matrice de cellules de mémoire 21 destinée à stocker des données EDATA cryptées dans le processeur 10, et une mémoire d'état de code 22 destinée à stocker l' index IND utilisé pour le cryptage des données. Dans ce mode de réalisation, l' index IND qui constitue les informations de cryptage dynamique de données est stocké dans la mémoire d'état de code 22 du bloc de mémoire 20. Plus précisément, l' index IND qui indique lequel de n codes secrets K1 à Kn est utilisé pour le cryptage des données est enregistré dans la mémoire d'état de code 22 lors de l'écriture des donnces. De plus, l' index IND stocké dans la mémoire d'état de code 22 est lu en même temps que les données cryptées EDATA et utilisé pour le décryptage des données. La mémoire d'état de code 22 est constituée par l'addition d'une cellule à 2N bits à chaque unité d'accès minimum (en général octale) de la mémoire. Une cellule de mémoire de la mémoire d'état de code 22 présente la même configuration que celle de la mémoire générale. La table de codes 13 comprend un registre ou une cellule de mémoire pour stocker n codes secrets K1 S à Kn. En fonction de l' index IND délivré en sortie par l'unité de commande de cryptage de données 14 au cours du cryptage, ou de l' index IND délivré en sortie par la mémoire d'état de code 22 du bloc de mémoire 20 au l0 cours du décryptage, un code se-cret Ki -ou Km est sélectionné par l'intermédiaire d'un multiplexeur N à -1 parmi les n codes secrets K1 à Kn et est utilisé pour le cryptage ou le décryptage. On suppose que "n" est un nombre pouvant être IS défini arbitrairement conformément aux spécifications du système et que les n codes secrets K1 à Kn ont été générés préalablement grâce à un générateur de nombres aléatoires (non représenté). L'unité de commande de cryptage de donnces 14 détermine l' index IND du code secret exécutant le cryptage récl parmi les codes secrets stockés dans la table de codes 13. Dans le présent mode de réalisation, l'unité de commande de cryptage de données 14 comprend un registre à 2N bits 17 pour stocker un index global, 2s et un dispositif d'incrémentation à 2N bits 18. Dans un autre mode de réalisation de la présente invention, l'unité de commande de cryptage de données 14 peut comprendre un générateur de nombres aléatoires à 2N bits pour générer l' index IND. Une valeur stockée dans le registre binaire 17 est utilisée comme index de cryptage IND au cours de l'opération d'écriture en mémoire, et incrémentée de +1 dans le dispositif d'incrémentation 18 au cours d'une opération d'écriture en mémoire suivante, puis stockée 3s dans le registre binaire 17. En vertu de l'opération de postincrémentation, même les données stockées à la même adresse peuvent être cryptées de manière dynamique à l' aide de codes secrets différents lors de chaque opération d'écriture en mémoire. L' index IND utilisé pour le cryptage est stocké dans la mémoire d'état de code 22 du bloc de mémoire 20 afin que le code secret utilisé pour le cryptage corresponde au code secret utilisé pour le décryptage. Le module de cryptage/décryptage 12 crypte les données DATA du processeur lO ou décrypte les données EDATA stoc-kées-dans la mémoire, à l' aide du code secret sélectionné à partir de la table de codes 13. Par conséquent, un code secret différent est sélectionné à chaque cryptage par l' index IND de l'unité de commande de cryptage de données 14, pour exécuter le cryptage dynamique des données. Une unité de cryptage/décryptage l6 crypte/décrypte les données et le code secret conformément à une opération logique OU exclusif. Etant donné que l'opération logique OU exclusif est une opération symétrique pour décrypter les donnces cryptées EDATA à l' aide du code secret utilisé pour le cryptage, les données d'origine sont reconstituées avec précision. Comme on peut le voir sur la figure 2 qui représente une opération de cryptage de données à l' aide de l'appareil de cryptage de données de la figure l, au cours de l'opération d'écriture de données, l' index de cryptage IND est généré dans l'unité de commande de cryptage de données 14. Dans le présent mode de réalisation, l' index de cryptage IND est incrémenté par le dispositif d'incrémentation 18 pour avoir une valeur différente à chaque opération d'écriture en mémoire et est stocké dans le registre binaire 17. En fonction de l' index IND généré par 1lunité de commande de cryptage de données 14, le multiplexeur 15 sélectionne pour le cryptage le code secret Ki parmi les multiples codes secrets K1 à Kn fournis par la s table de codes 13. L'unité de cryptage/décryptage 16 qui comporte une porte OU exclusif crypte les donnces DATA stockées dans la mémoire centrale 11 à l'aide du code secret Ki sélectionné. Les donnces cryptées EDATA sont inscrites dans la matrice de cellules de mémoire 21 du bloc -de mémoire 20. Dans le présent mode de réalisation, l' index IND utilisé pour le cryptage est également stocké dans la mémoire d'état de code 22 du bloc de mémoire 20. En référence à la figure 3 qui représente une opération de décryptage de données à l' aide de l'appareil de la figure 1, au cours de l'opération de lecture de données, les données cryptées EDATA stockées dans la matrice de cellules de mémoire 21 du bloc de mémoire 20 sont tout d'abord lues en méme temps que l' index IND stocké dans la mémoire d'état de code 22 du bloc de mémoire 20. En fonction de l' index IND lu dans la mémoire d'état de code 22 du bloc de mémoire 20, le 2s multiplexeur 15 sélectionne à partir de la table de codes 13 le même code secret Km que celui utilisé pour les données cryptées EDATA. Etant donné que le même index IND est utilisé pour sélectionner le code secret destiné au cryptage et au décryptage, le même code est utilisé pour crypter/décrypter les mêmes données. Par conséquent, les données cryptées EDATA sont reconstituces exactement sous là forme des donnces initiales DATA par l'opération de décryptage. Le procédé de cryptage dynamique de donnces entre le processeur et la mémoire, selon la présente invention, va maintenant être décrit en référence à l'organigramme de la figure 4. s L'unité de commande de cryptage de données 14 génère l' index de cryptage IND au cours de l'étape S1, puis génère et stocke un index IND' en vue de son utilisation ultérieure. En fonction de l' index IND généré dans l'unité de commande de cryptage de données 14, le multiplexeur 1$ sélecti-onne-le code secret Ki parmi les multiples codes secrets K1 à Kn stockés dans la table de codes 13, au cours de l'étape S2. L' index IND utilisé pour le cryptage est stocké dans la mémoire d'état de code 22 du bloc de mémoire 20 au cours de l'étape S3. Les données d'entrce DATA sont cryptées à l 'aide du code secret Ki sélectionné, au cours de l'étape S4. Les données cryptées EDATA sont stockées dans la matrice de cellules de mémoire 21 du bloc de mémoire 20 au cours de l'étape S5. Le procédé de décryptage dynamique de donnces entre le processeur et la mémoire, conformément à la présente invention, va maintenant étre décrit en référence à l'organigramme de la figure 5. Les données cryptées EDATA stockées dans la matrice de cellules de mémoire 21 du bloc de mémoire 20 sont lues au cours de l'étape S11. Conformément au procédé de décryptage dynamique de l' invention, l' index IND stocké dans la mémoire d'état de code 22 du bloc de mémoire 20 est lui aussi lu au cours de l'étape S12. En fonction de l' index IND, le multiplexeur 15 sélectionne pour le décryptage le code secret Km parmi les multiples codes secrets K1 à Kn au cours de l'étape S13. Les données cryptées EDATA sont décryptées à l aide du code secret Km sélectionné, et les données décryptées sont déllvrées en sortie au cours de l'étape S14. s Comme cela a été expliqué précédemment, l'appareil et le procédé proposés par la présente invention pour crypter les données entre le processeur et la mémoire permettent d'éviter une écriture en mémoire inutile due au recryptage, et de réduire une consommation d'énergie grâce à l'enregistrement de l' index indiquant celui des multiples codes- secrets qui est utilisé pour le cryptage des données, dans la mémoire d'état de code qui constitue la zone de mémoire spéciale au cours de l'écriture des données, à la lecture de l' index stocké dans la mémoire d'état de code au cours de la lecture des données et à l'utilisation de l' index pour le décryptage. Bien que la description précédente ait porté sur un mode de réalisation préféré de la présente invention, celle-ci n'est bien entendu pas limitée à l'exemple particulier décrit et illustré ici et l'homme de l'art comprendra aisément qu'il est possible d'y apporter de nombreuses variantes et modifications sans pour autant sortir du cadre de l' invention. REVENDI CAT IONS 1. Appareil pour crypter des données entre un processeur et une mémoire, caractérisé en ce que le processeur (10) comprend: un module (12) destiné à crypter des données d'entrée ou à décrypter des donnces cryptées; une table de codes (13) déstinée à stocker des codes secrets pour le cryptage/décryptage de données; ; et : - des moyens de commande (14) destinés à générer un index pour l'opération de cryptage du module; et ence que la mémoire (20) comprend: une matrice de cellules de mémoire (21) destinée à stocker des données cryptées par le module du processeur; et une mémoire d'état de code (22) destinée à stocker l' index généré dans les moyens de commande du processeur et utilisé pour le cryptage des données d'entrée. 2. Appareil selon la revendication 1, caractérisé en ce que le module (12) comprend: un multiplexeur (15) destiné à sélectionner l'un des codes secrets stockés dans la table de codes (13); et des moyens opérateurs (16) destinés à crypter des données d'entrée ou à décrypter des données cryptées stockées dans la mémoire, en fonction du code secret sélectionné par le multiplexcur. 3. Appareil selon la revendication 2, caractérisé en ce que le multiplexeur (15) sélectionne l'un des codes secrets stockés dans la table de codes (13) en fonction de l' index généré dans les moyens de commande (14), au cours du cryptage, et l'un des codes secrets stockés dans la table de codes en fonction de l' index stocké dans la mémoire d'état de code (22) de la mémoire, au cours du décryptage. 4. Appareil selon la revendication 2, caractérisé en ce que des moyens exécutant une opération OU exclusif sont utilisés comme moyens opérateurs (16). 5. Appareil selon la revendication 1, caractérisé en ce que les moyens de commande (14) comprennent: un registre (17) destiné à stocker un index global; et des moyens d'incrémentation (18) destinés à incrémenter une valeur de l' index utilisé pour le cryptage, et à stocker la valeur dans le registre (17). 6. Apparei.l selon la revendication 1, caractérisé en ce que les moyens de commande (14) comprennent un générateur de nombres aléatoires pour générer l' index. 7. Appareil selon la revendication 1, caractérisé en ce que la mémoire d'état de code (22) comprend des cellules de mémoire identiques aux cellules de mémoire qui constituent la matrice de cellules de mémoire (21). 8. Procédé de cryptage et de décryptage de données, caractérisé en ce que le cryptage comprend les étapes qui consistent à: générer un index (IND); sélectionner un code secret (Ki) pour le cryptage en fonction de l'index; stocker l' index (IND) utilisé pour le cryptage dans une zone de stockage spéciale d'une mémoire; et crypter des données d'entrée (DATA) à l 'aide du code secret (Ki) sélectionné; et en ce que le décryptage comprend les étapes qui consistent à: lire des donnces cryptées (EDATA) stockéss dans la mémoire; lire l' index (IND) stocké dans la zone de stockage spéciale de la mémoire; sélectionner un code secret (Km) pour le décryptage en fonction de l' index; et décrypter les donnces cryptées (EDATA) à l' aide du code secret (Km) sélectionné. 9. Procédé selon la revendication 8, caractérisé en ce que l'étape de génération d' index comprend les étapes qui consistent à: stocker un index global; et incrémenter une valeur de l' index à utiliser pour le cryptage suivant. 10. Procédé selon la revendication 8, caractérisé en ce que l'étape de génération d' index génère l' index de manière aléatoire à l' aide de moyens générateurs de