Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SECURITY KEY GENERATION METHOD
Document Type and Number:
WIPO Patent Application WO/2004/107283
Kind Code:
A1
Abstract:
The aim of the present invention is to provide a method for restoring the security of a secure assembly such as a smart card after the content of the second memory area thereof has been read out by a third party. This aim is achieved by means of a method for generating a security key using a secure module including a central processing unit, a first conditional-access memory area and at least one second memory area containing all or part of the user program, characterised in that it includes the following steps: reading out all or part of the second memory area, and generating at least one root key based on all or part of the data in the second area and at least one item of secret information stored in the first memory area.

Inventors:
KUDELSKI HENRI (CH)
GAUMAIN SERGE (CH)
Application Number:
PCT/IB2004/050794
Publication Date:
December 09, 2004
Filing Date:
May 27, 2004
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
NAGRACARD SA (CH)
KUDELSKI HENRI (CH)
GAUMAIN SERGE (CH)
International Classes:
G07F7/10; (IPC1-7): G07F7/10
Domestic Patent References:
WO2001086601A12001-11-15
Foreign References:
FR2829645A12003-03-14
EP0434551A11991-06-26
US4786790A1988-11-22
US5067156A1991-11-19
US5944821A1999-08-31
EP0280035A21988-08-31
EP0475837A11992-03-18
Attorney, Agent or Firm:
Leman, Consulting SA. (Nyon, CH)
Download PDF:
Claims:
Claims [1]
1. Méthode de génération d'une clé de sécurité effectuée par un module sécurisé (MOD) comprenant une unité centrale (CPU), une première zone mémoire (Z1) à accès conditionnel et au moins une seconde zone mémoire (Z2) contenant tout ou partie du programme utilisateur, caractérisé en ce qu'elle comprend les étapes suivantes : lecture de tout ou partie de la seconde zone mémoire (Z2), génération d'au moins une clé racine (RK) basée sur tout ou partie des données (DTA) de la seconde zone (Z2) et sur au moins une information secrète (MK2, RTN) stockée dans la première zone mémoire (Z1).
2. Méthode selon la revendication 1, caractérisée en ce que l'information secrète est une clé d'usine (MK2).
3. Méthode selon la revendication 1, caractérisée en ce que l'information secrète est un algorithme (RTN) décrivant l'utilisation des données (DTA) pour la génération de la clé racine (RK).
4. Méthode selon les revendications 1 à 3, caractérisée en ce qu'elle consiste à calculer au moins une information de contrôle (H) représentative de tout ou partie des données (DTA) de la seconde zone (Z2), cette information de contrôle (H) étant utilisée pour la génération de la clé racine (RK).
5. Méthode selon la revendication 4, caractérisé en ce que l'information de contrôle (H) est le résultat d'une fonction (Hash) dite unidirectionnelle et sans collision, effectuée sur tout ou partie des données de la seconde zone mémoire (Z2).
6. Méthode selon les revendications 1 à 5, caractérisée en ce que la seconde zone (Z2) comprend de plus une partie de description (DES) comprenant la lo calisation de la ou des zones mémoires déterminant la formation de l'information de contrôle (H).
7. Méthode selon la revendication 6, caractérisée en ce que cette partie de de scription (DES) comprend une pluralité d'informations de localisation de chaque partie (PA, PB, PC) de la zone mémoire utilisateur (Z2B) correspondant à des in formations de contrôle partielles (H1, H2... Hn).
8. Méthode selon la revendication 2, caractérisée en ce que la clé d'usine (MK2) est de type symétrique.
9. Méthode selon les revendications 1 à 8, caractérisée en ce que la seconde zone (Z2) comprend une zone de vérification (Z2A) et une zone utilisateur (Z2B), les programmes contenus dans la zone de vérification (Z2A) participent à la vérification des données de la zone utilisateur (Z2B), le programme système de la première zone transfère les données nécessaires de cette première zone vers la zone de vérification (Z2A).
10. Méthode selon la revendication 9, caractérisée en ce que la clé d'usine (MK2) est copiée de la première zone (Z1) vers la zone de vérification (Z2A) par le programme système.
11. Méthode selon la revendication 10, caractérisée en ce que la clé d'usine est effacée dès que la clé racine est générée.
12. Méthode selon l'une des revendications précédentes, caractérisée en ce que la clé racine (RK) est utilisée comme clé de transmission pour décrypter les messages en provenance d'un centre de gestion.
Description:
Description MÉTHODE DE GÉNÉRATION D'UNE CLÉ DE SÉCURITÉ [1] La présente invention concerne le domaine des modules de sécurité sécurisés comportant au moins une unité centrale et deux zones mémoires.

[2] Ces unités sont utilisées dans des opérations mettant en oeuvre des systèmes cryp- tographiques et sont livrées sous forme monobloc, soit qu'elles sont réalisées sur une mme puce de silicium, soit qu'elles sont assemblées sur un support et noyées dans une résine ou protégées par une feuille recouvrant les divers éléments et agissant comme fusible en cas de tentative d'intrusion.

[3] Ces processeurs sécurisés ont une première zone mémoire dite d'amorçage (bootstrap en anglais) qui est exécutée lors de l'enclenchement du processeur ou à chaque remise à zéro (reset). Cette mémoire est de type ROM c'est-à-dire qu'elle est à accès en lecture uniquement.

[4] Durant l'exécution du programme de démarrage, ce programme va vérifier la seconde zone mémoire qui est de type reinscriptible, en général de type EEPROM, NVRAM ou Flash.

[5] Cette vérification est importante afin de s'assurer que les données dans cette seconde zone sont légales, c'est-à-dire qu'il s'agisse bien d'un programme (au moins en partie).

[6] Cette vérification peut se faire de plusieurs manières telles que le calcul d'une empreinte (CRC, Hash) et comparaison de cette empreinte avec une valeur stockée dans cette mme zone.

[7] Une fois que le programme maître initialement démarré a terminé sa vérification, il commute sur la seconde zone et débute l'exécution du programme utilisateur à une adresse convenue.

[8] La particularité de ce type de processeur est que lors de l'exécution du programme dans la seconde zone, il n'y pas d'accès libre à la mémoire de la première zone. Cet accès est soit définitivement interdit ou est sujet à un mécanisme de vérification (mot de passe par exemple).

[9] Ceci donne une sécurité importante car les moyens de vérification, voire les données de démarrage, ne sont pas accessibles au programme utilisateur. Toutes les in- formations contenues dans la première zone sont donc protégées de toute intrusion.

[10] Il est possible que cette première zone d'amorçage, en plus d'une partie en mémoire morte (ROM), comporte une partie de mémoire réinscriptible qui est soumise aux mmes conditions de sécurité.

[11] Lorsque la première zone est de taille très restreinte, l'exécution du programme de vérification peut s'effectuer depuis la seconde zone. Cette dernière est divisée en une partie de vérification et une partie utilisateur.

[12] Ainsi, la vérification du programme utilisateur est effectuée sur la base des données de la première zone, à savoir sur la base d'une première clé qui est généralement stockée dans cette première zone et qui permet de vérifier l'empreinte des données de la seconde zone.

[13] La seconde zone contient des données constituant le programme et une signature qui est encryptée par cette première clé.

[14] Le programme de vérification qui peut tre soit dans la première zone, soit dans une partie de vérification de la seconde zone, calcule une empreinte unique (Hash, CRC) sur les données à vérifier.

[15] Pour vérifier que les donnés sont bien valides, la seconde zone contient l'empreinte encryptée par une clé qui est initialement stockée dans la première zone.

[16] Cette clé sert à décrypter l'empreinte encryptée et le résultat obtenu est comparé avec l'empreinte calculée.

[17] Cette clé peut tre dans la première zone soit sous forme définitive (ROM) soit sous forme programmée (EEPROM ou Flash). Dans ce deuxième cas, la pro- grammation se fait en usine ou dans un centre habilité, le programme de la première zone acceptant cette programmation pour autant qu'aucune clé ne se trouve déjà dans cette location mémoire.

[18] Cette clé peut tre de type symétrique et donc secrète ou peut tre de type asymétrique. Dans cette seconde variante, cette clé peut se trouver dans une zone mémoire autre que la première zone car mme si un tiers arrivait à découvrir cette clé, il ne serait pas pour autant capable de signer un ensemble de données modifiées car il doit nécessairement le faire grâce à la clé privée correspondante. Cette clé ne sort bien évidemment pas du centre de gestion qui est en charge de préparer les mises à jour des données.

[19] Les données de la seconde zone mémoire peuvent représenter soit un ou des programmes, soit des données importantes telles que des droits ou des clés de décryption, soit un mélange des deux.

[20] Une des attaques connues pour découvrir le contenu de la seconde zone est de rechercher une faille de sécurité comme un débordement de mémoire qui permettrait de prendre le contrôle du processeur. Une fois cette prise de contrôle réussie, un tiers va transférer le contenu de la seconde zone vers l'extérieur et pouvoir analyser le mécanisme de sécurité et les clés utilisées.

[21] A partir de la connaissance du contenu de la seconde zone mémoire, ce tiers possède les clés servant à gérer les différents droits et accès aux services que contrôle ce processeur.

[22] Ainsi, si un changement de clés intervient, ordonné par le centre de gestion, cette commande de changement sera encryptée par une clé présente dans la seconde zone mémoire. Le tiers qui a connaissance de cette clé, pourra décrypter ce message et mettre également à jour le contenu de cette nouvelle clé.

[23] On constate donc que, bien qu'un mécanisme sûr ait été utilisé pour vérifier le contenu de la zone de programme (seconde zone), lorsque la sécurité a été une fois violée, tous les changements initiés par le centre de gestion sont sans effet sur la sécurité car les moyens de changement (nouvelle clé de transmission par exemple) utilisent des clés que le tiers a déjà en sa possession. Il peut donc décrypter le message de mise à jour et changer également sa clé de transmission. La brèche ne peut plus tre refermée mme si la brèche de sécurité a été corrigée dans l'applicatif.

[24] L'objet de la présente invention est de proposer une méthode pour rétablir la sécurité d'un tel ensemble sécurisé après que le contenu de la seconde zone mémoire ait été lu par un tiers.

[25] Ce but est atteint par une méthode de génération d'une clé de sécurité effectuée par un module sécurisé comprenant une unité centrale, une première zone mémoire à accès conditionnel et au moins une seconde zone mémoire contenant tout ou partie du programme utilisateur, caractérisé en ce qu'elle comprend les étapes suivantes : [26] -lecture de tout ou partie de la seconde zone mémoire, [27]-génération d'au moins une clé racine basée sur tout ou partie des données de la seconde zone et sur au moins une information secrète stockée dans la première zone mémoire.

[28] Ainsi, grâce à la génération de cette nouvelle clé racine, il sera possible de sécuriser le remplacement de la clé de transmission et par là mme, de toutes les clés transmises subséquemment.

[29] Il est important que cette clé racine ne soit pas fixe et doit pour cela tre différente d'une clé stockée dans la première zone mémoire telle que la clé d'usine. C'est pourquoi cette clé racine est générée en utilisant comme variable les nouvelles données transmises par le centre de gestion.

[30] Dans une première version, cette nouvelle clé est générée sans que les données de la seconde zone soient nécessairement vérifiées. Si ces données ont été modifiées, la clé racine sera simplement fausse et la décryption future d'une clé de transmission avec cette clé ne donnera pas le résultat correct.

[31] Cette clé racine dépend donc d'une part du téléchargement ou contenu de la seconde mémoire (ou données) et d'une clé stockée dans une région inaccessible à un tiers.

[32] Selon un autre mode de réalisation, la clé d'usine est remplacée par un programme secret stocké dans la première zone et qui calcule, selon un algorithme secret, une empreinte sur tout ou partie des données de la seconde zone. La manipulation des données (mélange, multiplication, division, EXOR etc..) de la seconde zone selon un algorithme particulier permet de déterminer la clé racine.

[33] L'invention sera mieux comprise grâce à la description détaillée qui va suivre et qui se réfère aux dessins annexés qui sont donnés à titre d'exemple nullement limitatif, à savoir : <BR> <BR> [34] -la figure 1 décrit l'organisation d'un ensemble processeur sécurisé,<BR> [35] -la figure 2 illustre une division de la seconde zone,<BR> [36] -la figure 3 décrit le mécanisme de génération de la clé racine.

[37] Sur la figure 1, le module MOD est un module processeur sécurisé. A ce titre il dispose d'au moins deux zones mémoires soit la première zone Z1 et la seconde zone Z2. La première zone est constituée par tout ou partie de mémoire ROM donc non réinscriptible. Il se peut qu'une partie comprenne des places mémoires en RAM ou EEPROM pour des variables entre autre. Elle est dite à accès conditionnel du fait qu'elle ne peut tre librement accessible, en particulier lors de l'exécution d'un programme dans la deuxième zone.

[38] La seconde zone Z2 va contenir le programme d'exploitation et les données. Cette zone est constituée de mémoire non volatile mais avec possibilité d'écriture telle que de l'EEPROM. La zone Z2 peut également contenir de la mémoire volatile comme de la RAM. En fait, cette zone n'est généralement pas homogène et peut comprendre plusieurs mémoires du type ROM, RAM, EEPROM, NVRAM ou Flash.

[39] Dans notre exemple, nous allons considérer une première partie de la zone 2 dite zone de travail Z2A qui va servir pour les opérations relatives à la génération de la clé racine.

[40] La zone utilisateur Z2B est une vue schématique de la partie contenant le ou les programmes d'exploitation. Selon l'implémentation, il est possible d'inclure des variables telles les clés de sécurité par exemple.

[41] Le processeur CPU est dirigé automatiquement sur la première zone Zl lors d'un enclenchement ou un redémarrage (reset). C'est là que les premières opérations de sécurité sont exécutées.

[42] Ces opérations vont utiliser la première zone mémoire mais également la zone de travail Z2A si nécessaire. Du fait de la place restreinte de la première zone, des appels sont faits à la zone de travail pour effectuer le calcul de l'empreinte par exemple. La routine permettant de calculer cette empreinte peut se trouver dans le seconde zone.

Rien n'empche que cette routine fasse partie des données qui seront vérifiées. Ce programme est appelé programme système [43] Le programme d'initialisation lancé au démarrage, calcule une empreinte sur la partie convenue des données à vérifier. Cette partie est définie par des pointeurs qui sont contenus dans la seconde zone mémoire. Une illustration du mécanisme de portions de la zone utilisateur Z2B est contenue dans la figure 2.

[44] La prise en compte des données formant l'empreinte peut se faire sur l'ensemble ou sur une partie de la zone utilisateur. Dans la pratique, cette empreinte se calculera de préférence sur la partie programme et non sur la partie données (droits de visualisation par exemple) car ces dernières sont susceptibles d'tre modifiées durant l'utilisation du programme utilisateur. Le programme de détermination de l'empreinte initialisé au démarrage, calcule cette empreinte sur la partie convenue des données à vérifier. Cette partie est définie par des pointeurs qui sont contenus dans la seconde zone mémoire, en particulier dans la portion DES de la figure 2.

[45] Dans le cadre de l'invention, cette empreinte est réalisée par une opération unidi- rectionnelle qui est une application mathématique H d'un ensemble source vers un ensemble objet, dans laquelle chaque élément x de l'ensemble source se voit attribuer une image H (x). Ces fonctions sont particulièrement utiles lorsque ce sont des fonctions dites Hash, telles que définies en page 27 de l'ouvrage RSA Laboratories' Frequently Asked Questions About Today's Cryptography, v4.0. L'élément x peut tre d'une longueur quelconque mais H (x) est toujours une suite de caractères de longueur fixe ('fixed-size string'). Une telle fonction est difficile à inverser, c'est-à-dire que la connaissance de H (x) ne permet en général pas de retrouver x. Elle est de plus dite libre de collision lorsqu'elle est injective, c'est-à-dire que H (y) =H (x) entraîne nécessairement y=x, de mme que H (y) 1H (x) entraîne nécessairement ylx.

[46] Il est considéré comme impossible de reproduire la mme information de contrôle H dès qu'une seule valeur de l'ensemble x a été modifiée mme si d'autres valeurs sont modifiées dans le but d'annuler la modification générée par la première modification.

[47] Dans la figure 2, la zone utilisateur Z2B de la figure 1 est fractionnée en plusieurs portions PA, PB et PC. Ces portions ne sont pas contiguës dans cet exemple et sont séparées par des portions PI qui n'interviennent pas dans le calcul de l'empreinte.

L'information décrivant ces différentes portions est contenue dans la portion DES qui fait également partie de la zone utilisateur Z2B. Elle contient les indications de locations mémoire participant au calcul de l'information de contrôle. Ces indications peuvent tre soit sous la forme'pointeur début'et'longueur'ou'pointeur début'et 'pointeur fin'.

[48] De plus, il est possible de n'avoir pas une seule information de contrôle, mais plusieurs, chaque information H1, H2, Hn s'appliquant sur une portion PA, PB ou PC.

Ceci permet de générer non seulement une clé racine mais plusieurs clés.

[49] Sur la figure 1 le bloc I/O illustre les moyens de communication vers l'extérieur du module MOD, moyens indispensables pour utiliser les fonctions cryptographiques et les droits stockés dans la mémoire Z2B. C'est également par ce biais que des données sont extraites accidentellement de la zone Z2 par une faille telle que décrite plus haut.

[50] Sur la figure 3, l'étape de la génération de la clé racine est schématisée. Les données DTA qui, selon l'exemple de la figure 2, sont constituées des portions PA, PB et PC, servent à calculer par le processeur l'empreinte qui est dans notre cas une in- formation de contrôle Hash. Pour calculer la clé racine RK, l'on va utiliser cette in- formation de contrôle H et une clé d'usine MK2 pour obtenir cette clé racine RK par l'intermédiaire d'un module d'encryption ENC. Cette clé secrète sera de type symétrique (ou utiliser symétriquement par le centre de gestion) car dans le cas contraire, la clé racine résultante ne serait pas la mme au centre de gestion et dans le module MOD.

[51] Il est à noter que si le contenu de la partie utilisateur Z2B dispose déjà d'une empreinte établie lors de la vérification de la conformité du programme stocké, il est possible d'utiliser cette empreinte en lieu et place de l'information de contrôle H. Ce qui compte dans cette opération est d'utiliser des données qui représentent tout ou partie des données DTA. Dans une variante, il est possible de sélectionner un octet sur trois par exemple pour la détermination des données qui seront encryptées par la clé d'usine MK2.

[52] Selon un autre mode de réalisation, la clé d'usine est remplacée par un algorithme secret (RTN) qui est stocké dans la première zone Z1. Il peut tre copié de cette première zone vers la zone de travail Z2A durant la phase d'initialisation si cela est nécessaire.

[53] Cet algorithme mélange selon un mode particulier tout ou partie des données DTA afin d'obtenir un résultat unique dépendant de ces données. Ce mélange peut mettre en oeuvre différentes opérations arithmétiques tells que multiplication, Exor etc.

[54] Une fois cette clé racine calculée, elle est stockée dans une zone mémoire de la seconde zone Z2.

[55] Le lieu de l'exécution de ces étapes de procédé n'est pas déterminante. Le programme dans la zone d'amorçage peut simplement copier la clé d'usine dans une zone mémoire temporaire et le programme de génération de la clé racine, appelé programme système, peut tre contenu dans la zone de travail Z2A. L'important est de stocker cette clé d'usine dans la première zone Z1 afin de la rendre inaccessible lors de l'exécution normale du programme utilisateur.

[56] Une fois la clé racine générée, la clé d'usine est effacée de la mémoire temporaire.

[57] Selon une des applications pratique, le centre de gestion qui est en charge de la sécurité, prépare un nouveau logiciel afin de pallier à un défaut connu tel qu'une attaque de contrefacteur visant à extraire les données de la zone Z2. Ce nouveau logiciel est signé c'est-à-dire que l'on calcule la fonction Hash sur ces données et on encrypte le résultat avec la clé privée MK1.

[58] Le tout est ensuite encrypté par les clés de transmission et transmis sous forme de messages aux modules de sécurité MOD.

[59] Le programme existant dans la zone utilisateur Z2B traite les données entrantes et décrypte les messages par la ou les clés de transmission du système. Les données sont ensuite stockées aux emplacements prévus à cet effet. Une fois ce téléchargement terminé le processeur active une fonction de redémarrage. Ceci lui permet de vérifier toutes les données nouvellement stockées.

[60] Cette vérification porte en général sur l'ensemble des programmes stockés et cette vérification s'effectue selon les étapes décrites ci-dessus. Si l'on considère l'hypothèse qu'un tiers dispose d'un module MOD non sécurisé, la première zone mémoire Z1 n'existe pas (ou est vierge) et le processeur débute immédiatement dans la seconde zone Z2. Le nouveau programme reçu du centre de gestion est décrypté par le tiers et la zone utilisateur est dès lors identique à celle d'un processeur sécurisé à double zones mémoires.

[61] Lors du démarrage du processeur sécurisé, la clé racine est générée et est utilisée pour décrypter la nouvelle clé de transmission. Le module fictif ne possède par cette clé racine et ne peut décrypter la clé de transmission. Dès cet instant, les messages échangés entre le centre de gestion le module de sécurité ne sont plus accessibles au module fictif. Si ce dernier tente de retrouver la clé racine par une attaque telle que celle qui lui a permis d'obtenir le contenu de la seconde zone, cette attaque ne fonctionne plus car le but de ce nouveau logiciel est justement de pallier à ce type de faille. Le module sécurisé retrouve le niveau de sécurité précédant l'attaque qui avait permis d'extraire les données.

[62] Ainsi, cette méthode permet de refermer à distance une faille de sécurité et de rétablir la sécurité originale sans devoir échanger tous les modules comme c'était souvent le cas.

[63] Comme indiqué plus haut, l'accès à la première zone Z1 est effectué lors du démarrage du microprocesseur ou après un mécanisme de vérification. Durant le scénario décrit ci-dessus, il est possible de ne pas déclencher une remise à zéro (reset) du microprocesseur et de demander l'accès à la première zone par une passerelle. Une fois l'entrée par cette passerelle demandée (par l'introduction d'un mot de passe par exemple), l'exécution du programme n'est plus visible depuis la seconde zone et donc inconnue à un tiers ayant recopié cette zone. Le programme ainsi initié va débuter la génération de la clé racine.

[64] La zone mémoire Z1 à accès conditionnel ne peut servir qu'à fournir les in- formations secrètes nécessaires à la formation de la clé racine. Dans cette con- figuration, le programme de la zone utilisation Z2, ne fait qu'ouvrir l'accès à la première zone Zl pour lire les informations pour le calcul de la clé racine. Lors de ces opérations, on limitera la durée de visibilité de la première zone au temps nécessaire à la lecture puis cette zone sera rendue inaccessible.

[65] Selon un mode de réalisation, la clé d'usine est en fait un jeu de clés. A chaque génération d'une clé racine, une clé d'usine est désactivée. La sélection de la clé à utiliser peut de faire de différente manière, à savoir : [66]-sur commande du centre de gestion, c'est-à-dire par un descripteur dans les données de définition DES, [67]-en utilisant les n derniers bits de l'empreinte (par exemple 3 bits) qui permettent de choisir parmi les clés (par exe. les 8 clés) stockées.