FR 2704341 A1 19941028 FR 9304773 A 19930422 DISPOSITIF DE PROTECTION DES CLES D'UNE CARTE A PUCE La présente invention concerne un dispositif de protection des clés d'une carte à puce. La sécurité des cartes à puce repose sur la conception hardware des puces et surtout sur les mécanismes cryptographiques mis en oeuvre dans le système opératoire de la carte. Les clés utilisées dans la carte par les algorithmes symétriques ou asymétriques sont secrètes. Le caractère secret de ces clés revêt donc une importance capitale pour les systèmes dont la sécurité repose sur l'exploitation de cartes à micro calculateur. 1o Il existe aujourd'hui, une méthode théoriquement applicable qui permette avec quelques moyens de découvrir le contenu d'une clé. Cette méthode consiste à faire basculer successivement toutes les cellules de la mémoire non volatile (ex EPROM ou EEPROM) qui enregistre les éléments binaires constituant la clé. Cette méthode peut être mise en oeuvre par un moyen électronique ou physique, sélectif permettant de modifier le contenu logique (ou la charge électrique) d'une cellule élémentaire de mémoire. Pour toutefois réaliser une telle opération, il est absolument nécessaire de connaître la règle d'implantation physique des cellules de mémoire sur la puce et d'être en mesure d'assurer la correspondance entre ces adresses o20 physiques, gérées par le masque lui-même et les adresses logiques, relatives ou absolues qui permettent à un utilisateur d'accéder à une information. Dès lors que l'emplacement d'une cellule de mémorisation contenant un élément binaire constitutif d'une clé a été identifié, cette cellule peut, par exemple, être soumise à une exposition sélective de rayons X. L'attaque de la clé consiste à faire effectuer à la carte, un calcul utilisant cette clé, de sauvegarder le résultat obtenu puis de tenter, par le moyen décrit plus haut, de modifier le contenu d'une cellule (la modification n'est possible que dans un sens, charge ou décharge de la cellule) puis de refaire le calcul précédent. Sil n'y a pas eu modification de charge, donc de la valeur binaire de la cellule, on obtient le même résultat, sinon celui- ci est modifié. On peut donc déterminer ainsi la valeur d'un bit de la clé soumise à l'attaque. En procédant ainsi de proche en proche on pourrait déterminer la valeur de l'ensemble des bits constitutifs d'une clé. Cette possibilité de fraude est d'autant plus effective si l'on considère le cas des clés de base ou clés de carte mère qui sont implantées sur un nombre n de cartes et qui permettrait donc en attaquant par la procédure décrite ci-dessus, un bit de chacune des n cartes d'arriver à déterminer la totalité des bits de la clé de base implantée sur chacune des n cartes. Le but de l'invention est donc de palier les inconvénients cités cidessus. Ce but est atteint par le fait que le dispositif de protection des clés d'une carte à puce dans laquelle chaque clé est chiffrée à l'aide d'une clé diversifiée comporte: 0o - une information de protection correspondant à une information dépendante de la clé diversifiée générée et associée à chaque clé chiffrée; - un moyen de détection implanté sur la carte permettant de vérifier l'intégrité de la clé chiffrée en comparant l'information de protection avec une information de vérification générée à partir de la clé de la carte - un moyen de blocage permettant le blocage de tout calcul ultérieur sur la clé dans le cas o l'information de vérification n'est pas identique à l'information de protection. Selon une autre particularité l'information de protection est dans la zone secrète de la carte o est inscrite la clé chiffrée. Selon une autre particularité, le moyen de détection comprend des moyens de correction de la clé. Selon une autre particularité, l'algorithme de chiffrement de la clé chiffrée à l'aide de la clé diversifiée est différent de celui d'exploitation et conservé dans la zone secrète de la carte. Selon une autre particularité, l'information de protection est un total de contrôle (checksum). Selon une autre particularité, l'information de protection est un contrôle par redondance cyclique (C.R.C.). Selon une autre particularité, l'information de protection est le nombre de bits (CBVip) de la clé chiffrée (CCCi) ayant une valeur donnée. Selon une autre particularité, l'information de protection est une signature (Sip) calculée à l'aide d'une clé secrète (CS). Selon une autre particularité, le moyen de détection est un algorithme exécuté par le microprocesseur de la carte. Un autre de but de l'invention est de proposer une carte à puce permettant de palier les inconvénients cités ci-dessus. Ce but est atteint par le fait que la carte à puce comporte - une clé chiffrée à l'aide d'une clé diversifiée; - une information de protection, correspondant à une information dépendante de la clé, calculée à l'aide d'un algorithme de calcul de somme de contrôle ou de code cyclique redondant (A.CA.S.C) et l'information de protection associée à chaque clé; - un moyen de détection implanté sur la carte permet de vérifier l'intégrité de la clé, en comparant l'information de protection avec une information de vérification générée à partir de la clé de la carte - un moyen de blocage présent sur la carte pour bloquer tout calcul ultérieur sur la clé dans le cas o l'information de vérification n'est pas identique à l'information de protection. Un autre but de l'invention est de proposer un procédé d'exploitation du dispositif selon l'invention. Ce but est atteint par le fait que le procédé d'exploitation comporte après l'opération de vérification de l'intégrité des informations, une opération de déchiffrement de la clé chiffrée (CCCi) par un algorithme de chiffrement et déchiffrement spécifique (A.S.C.C.) et une clé (C.SP. Di) et une opération de sauvegarde de la clé prête pour exploitation soit dans une zone protégée de la mémoire vive (4) de la carte soit dans une zone protégée de la mémoire non volatile (3) de la carte pour la durée d'une session. Un dernier but est de proposer un procédé de mise en place d'au moins s une clé dans une carte en vue de son exploitation dans un dispositif selon l'invention. Ce but est atteint par le fait que le procédé de mise en place d'au moins une clé utilisateur comporte les étapes suivantes chiffrement de la clé utilisateur non-chiffrée (CU) par un algorithme de chiffrement spécifique de clés (A.S.C.C.) contenu dans la mémoire morte ou non volatile de la carte et une clé diversifiée (C.SP.Di) pour obtenir une clé chiffrée (CCCi); - calcul de l'information de protection par un algorithme de calcul de somme de contrôle ou de code cyclique redondant (A.CA.S.C.) contenu dans la mémoire morte de la carte, et; - sauvegarde de la clé chiffrée (CCCi) et de l'information de protection (SC ou CCR) dans la zone secrète de la mémoire non volatile. Selon une autre particularité, le procédé de mise en place comporte en outre les étapes suivantes -chargement d'une clé chiffrée (CCU); déchiffrement de la clé par un algorithme de chiffrement-déchiffrement utilisateur et d'une clé utilisateur associée (CUAi) de préférence diversifiée contenus dans la carte pour obtenir la clé utilisateur nonchiffrée (CU); D'autres caractéristiques et avantages apparaîtront plus clairement à la lecture de la description ci-après faite en référence aux dessins annexés dans lesquels La figure 1 représente une vue schématique des différents éléments constituant le dispositif de protection; La figure 2 représente un schéma de l'algorithme d'exploitation du dispositif selon l'invention. La figure 3 représente le procédé d'installation des clés dans le dispositif de l'invention. Le dispositif comporte comme représenté à la figure 1, un circuit intégré comportant un microprocesseur (1) relié par un bus (5) à une mémoire morte (2) de type ROM contenant les programmes nécessaires au 1o fonctionnement du dispositif. Le même bus (5) relie également au processeur (1), une mémoire non volatile (3) inscriptible, par exemple du type EPROM ou EEPROM servant de mémoire utilisateur et contenant entre autre les clés d'utilisation (CCCi) affectées à un utilisateur donné et inscrites en zone secrète (ZS). Cette mémoire (3) est partagée en une zone secrète (ZS) pour laquelle l'accès en lecture ou écriture ne peut se faire qu'à partir du microprocesseur (1) sous le contrôle du système d'exploitation (OS) alors que pour les autres zones de la mémoire (3), les accès peuvent être effectués soit du processeur (1) soit de l'extérieur par une liaison (6), en fonction d'informations contenues par cette mémoire et 2O d'un algorithme de gestion des accès mémoires faisant partie du système d'exploitation (OS). Une telle architecture est décrite plus en détail dans les demandes de brevet français FR 2 401 459 (US 4 211 919) et FR 2 461 301 (US 4 382 279). Le microprocesseur (1) de la carte est également en liaison à travers le bus (5) avec une mémoire vive (4), par exemple de type RAM. Le circuit de la carte est mis en liaison avec le monde extérieur et reçoit certaines commandes nécessaires ou certaines informations nécessaires à son fonctionnement par la liaison (6). La mémoire programme (2) comporte en plus du système d'exploitation (OS) incluant l'algorithme de gestion des accès mémoire et permettant de faire la différenciation entre un accès dans une zone secrète et de vérifier que l'instruction à exécuter est compatible avec les modalités d'accès à cette zone, d'autres programmes dont les rôles respectifs vont être définis ci- après: Le programme A.S.C.C. qui constitue l'algorithme spécifique de chiffrement-déchiffrement de clés dont le rôle sera explicité ultérieurement. Le programme A.CA.S.C peut être un algorithme de calcul des sommes de contrôle (checksum) ou de code cyclique redondant (CCR), ou un algorithme déterminant le nombre de bits d'une clé ayant une valeur logique donnée, ou un algorithme déterminant une signature à base d'une clé secrète (CS). Enfin le programme A.CU qui est un algorithme de chiffrement- déchiffrement des clés utilisateur qui peut servir soit à chiffrer, soit à déchiffrer. La carte comporte à sa livraison une clé spécifique de protection diversifiée appelée (C.SP.Di) inscrite dans la zone secrète (ZS) de la carte. Cette clé spécifique (C.SP.Di) a été élaborée à partir de la clé de base par un algorithme de diversification et pourra être protégée par utilisation du programme (A.CA.S.C). On pourra utiliser comme procédé de diversification par exemple les procédés connus par les brevets BULL FR 2600 190 et FR 2 601 795 (US 4 811 393). Lorsqu'un organisme habilité veut charger la carte avec une clé, cet organisme connecte la carte a un terminal qui émet en direction du microprocesseur (1) de la carte par la liaison (6) une clé utilisateur chiffrée (CCU.) ou non chiffrée (CU) avec un ordre de chargement (31 fig. 3) de cette clé. Si la clé est chiffrée, le système d'exploitation (OS) lors de l'exécution de cette instruction va faire appel à l'algorithme (A.CU) et à une clé utilisateur associée (CUAi) pour déchiffrer à l'étape (32) cette clé chiffrée (CCU) en une clé utilisateur (CU.), puis le système d'exploitation (OS) lance l'étape 33. Si la clé utilisateur est non chiffrée, le système d'exploitation lance directement l'étape 33 d'exécution de l'algorithme spécifique de chiffrement des clés (A.S.C.C. ) utilisant une clé spécifique diversifiée (C.SP.Di), pour permettre au microprocesseur (1) de chiffrer la clé utilisateur (CU) en une clé chiffrée appelée (CCCi). Dès que cet algorithme aura été exécuté, celuici rend la main au système d'exploitation (OS) qui déclenche à l'étape 34 l'exécution de l'algorithme de calcul. On notera que la clé chiffrée utilisateur (CCU) a été fournie par un moyen extérieur sécurisé ayant utilisé pour le chiffrement le même algorithme (ACU) et la même clé utilisateur associée (CUAi). Le microprocesseur (1) exécute cet algorithme et calcule soit une somme de vérification (checksum) (SCip), soit un code cyclique redondant (CCRip) qui constitue une information de protection ou une signature (Sip) ou un compte des bits de même valeur composant la clé (CBVip). Cette s information de protection (SCip ou CCRip ou Sip ou CBVip) est associée à la clé (CCCi), soit directement dans une zone secrète de la mémoire (3), soit en établissant par le système d'exploitation (OS) un lien entre la clé (CCCi) et l'information de protection (SCip ou CCRip ou Sip ou CBVip). Ce lien dans ce cas sera connu uniquement par l'algorithme de gestion des 1o accès mémoires. Ainsi, on peut concevoir que la clé (CCCi) soit gardée en zone secrète (ZS) alors que l'information de protection (SCip ou CCRip ou Sip ou CBVip) soit stockée ailleurs dans la mémoire (3) par exemple dans une zone définie grâce à un index intervenant dans l'algorithme de gestion des accès mémoire (sur l'adresse de la clé (CCCi). L'algorithme (A.CA.S.C) sera dans le cas d'un calcul d'une somme de contrôle, par exemple, une instruction d'addition de l'ensemble des octets de la clé chiffrée (CCCi). Le résultat de cette opération constitue dans cet exemple, l'information de protection à sauvegarder dans l'endroit désigné par l'algorithme de gestion des accès mémoire ou dans le même emplacement de sauvegarde des clés sous forme d'un octet supplémentaire. Ce procédé pourra être mis en oeuvre systématiquement pour chaque mise en place d'une clé qui devra être sauvegardée dans la zone secrète de la mémoire et permet l'utilisation du procédé d'exploitation décrit ci- après: Lorsque au cours de l'exploitation de la carte, le terminal envoie au microprocesseur (1) de la carte une commande faisant appel à une clé, par exemple la clé utilisateur chiffrée (CCCi) pour par exemple une opération de contrôle de certificat (cf. demande de brevet BULL français N 2 601 476, FR 2 601 535, FR 2 592 510 (US 4 825 052). Le système d'exploitation (OS) va rechercher la clé (CCCi) dans la zone secrète (ZS) et exécuter un algorithme de calcul d'une somme de contrôle en lançant à l'étape (21) I'algorithme (A.CA.S.C.). L'information de vérification (CCRiv ou SCiv ou Siv ou CBViv) ainsi calculée est comparée à l'opération (22) de la figure 2 avec l'information de protection (25) (CCRip ou SCip ou Sip ou CBVip) qui avait été sauvegardée lors de la mise en place de la clé. Si l'information de vérification résultant du calcul effectué par l'algorithme (A.CA.S.C) représentée à l'étape 21 n'est pas identique à l'information de protection, le microprocesseur (1) va générer un signal d'erreur et éventuellement provoquer sur le terminal l'affichage d'une information signalant une erreur ou bien invalider la clé (CCCi). Si l'opération de vérification s'est déroulée correctement, la comparaison étant positive, l'étape suivante (23) du système d'exploitation sera exécutée. Cette étape consiste en un déchiffrement de la clé chiffrée (CCCi.). par l'algorithme spécifique de chiffrement de clés (A.S.C.C.) et la clé (C. SP.Di). Cet algorithme (A.S.C.C) étant conservé dans la mémoire (2) ROM, il ne sera à aucun moment accessible à l'utilisateur ou au terminal. L'exécution de cet algorithme A.S.C.C. est effectuée à l'aide de la clé (C.SP.Di) par le microprocesseur (1) qui délivre comme résultat la clé utilisateur (CU). Ce résultat est ensuite sauvegardé à l'étape (24) soit en RAM (4), soit dans l'EEPROM (3) dans une zone non secrète pour permettre une exploitation ultérieure dans, par exemple, le procédé de contrôle de certificat cité ci- dessus. Cette sauvegarde est effectuée pour au plus la durée d'une session, c'est-à-dire la durée de connexion de la carte au terminal. Une clé utilisateur (CU) sauvegardée ne pourra être utilisée que si elle résulte d'un calcul effectué au cours de la même session, ce qui est exprimé par un indicateur (CUAct) activé, par exemple en le positionnant à 1 pour montrer que la clé (CU) est active et signifier qu'elle a été calculée au cours de la même session. Cet indicateur (CUAct) est toujours remis à zéro en début de session. Avant une utilisation de (CU) dans un calcul, on effectue une étape de test (25) pour déterminer si l'indicateur (CUAct) a la valeur "1" requise ou non. Si oui, le calcul utilisant (CU) est effectué, si non, la carte génère un signal d'erreur qui redonne la main au terminal, permettant ainsi à ce dernier de lancer la séquence de détermination de (CU). Toutes modifications à la portée de l'homme de métier fait également partie de l'esprit de l'invention. REVENDICATIONS: 1.-Dispositif de protection des clés d'une carte à puce, caractérisé en ce que: - chaque clé est chiffrée (CCCi) à l'aide d'une clé diversifiée; une information de protection (SCip ou CCRip ou Sip ou CBVip), correspondant à une information dépendante de chaque clé chiffrée, générée et associée à chaque clé chiffrée (CCCi); - un moyen de détection implanté sur la carte permet de vérifier l'intégrité de la clé chiffrée (CCCi), en comparant l'information de protection avec une information de vérification (SCiv ou CCRiv ou Siv ou CBViv) générée à partir de la clé (CCCi) de la carte; - un moyen de blocage (1, OS) permet le blocage de tout calcul ultérieur sur la clé (CCCi) dans le cas o l'information de vérification n'est pas identique à l'information de protection. 2.-Dispositif selon la revendication 1 caractérisé en ce que l'information de protection (SCip ou CCRip ou Sip ou CBVip) est dans la zone secrète (ZS) de la carte o est inscrite la clé chiffrée (CCCi). 3.-Dispositif selon une des revendications 1 ou 2 caractérisé en ce que le moyen de détection comprend des moyens de correction de la clé. 4-Dispositif selon une des revendications 1 à 3 caractérisé en ce que l'algorithme de chiffrement (A.S.C.C) de la clé chiffrée à l'aide de la clé diversifiée (C.SP.Di) est différent de celui d'exploitation (ACU) et conservé dans la zone secrète (ZS) de la carte. -Dispositif selon la revendication 1 ou 4 caractérisé en ce que l'information de protection (SCip)est un total de contrôle (checksum). 6.-Dispositif selon la revendication 1 ou 4 caractérisé en ce que l'information de protection (CCRip) est un contrôle par redondance cyclique (C.R.C.). 7.-Dispositif selon la revendication 1 ou 4 caractérisé en ce que l'information de protection est le nombre de bits (CBVip) de la clé chiffrée (CCCi) ayant une valeur donnée. 8.-Dispositif selon la revendication 1 ou 4 caractérisé en ce que l'information de protection est une signature (Sip) calculée à l'aide d'un clé secrète (CS). 9.-Dispositif selon la revendication 1 caractérisé en ce que le moyen de détection est un algorithme (A.CA.S.C.) exécuté par le microprocesseur (1) de la carte. 10.-Carte à puce comportant un microprocesseur (1), une mémoire morte (2) contenant entre autres le système d'exploitation (OS) de la carte, une mémoire non volatile (3) disposant d'au moins une zone secrète (ZS) dans laquelle au moins une clé est sauvegardée caractérisée en ce que: - la clé {CCCi) est chiffrée à l'aide d'une clé diversifiée (C.SP.Di); - une information de protection (SCip ou CCRip ou Sip ou CBVip), correspondant à une information dépendante de la clé, est calculée à l'aide d'un algorithme de calcul de somme de contrôle ou de code cyclique redondant (A.CA.S.C) et l'information de protection est associée à chaque clé (CCCi + (SCip ou CCRip ou Sip ou CBVip)); - un moyen de détection implanté sur la carte permet de vérifier l'intégrité de la clé, en comparant l'information de protection avec une information de vérification (CCRiv ou SCiv ou Siv ou CBViv) générée à partir de la clé (CCCi) de la carte; - un moyen de blocage (1, OS) est présent sur la carte pour bloquer tout calcul ultérieur sur la clé (CCCi) dans le cas o l'information de vérification n'est pas identique à l'information de protection. ,: 2704341 l! 11. Procédé d'exploitation d'un dispositif selon une des revendications 1 à 7 ou d'une carte selon la revendication 10 caractérisé en ce qu'il comporte après une opération (22) de vérification de l'intégrité des informations, une opération de déchiffrement (23) de la clé chiffrée (CCCi) par un algorithme de chiffrement et déchiffrement spécifique (A. S.C.C.) et une clé (C.SP.Di) et une opération de sauvegarde (24) de la clé prête pour exploitation soit dans une zone protégée de la mémoire vive (4) de la carte soit dans une zone protégée de la mémoire non volatile (3) de la carte pour la durée d'une session. 0o 12. Procédé de mise en place d'au moins une clé utilisateur dans une carte à puce en vue de son exploitation dans un dispositif selon une des revendications 1 à 7 ou dans un procédé selon la revendication 11 caractérisé en ce qu'il comporte les étapes suivantes: - chiffrement de la clé utilisateur non-chiffrée (CU) par un algorithme de chiffrement spécifique de clés (A.S.C.C.) contenu dans la mémoire morte ou non volatile de la carte et une clé diversifiée (C.SP.Di) pour obtenir une clé chiffrée (CCCi); - Calcul de l'information de protection (SCip ou CCRip) par un algorithme de calcul de somme de contrôle ou de code cyclique redondant (A.CA.S.C.) contenu dans la mémoire morte (2) de la carte, et; sauvegarde de la clé chiffrée (CCCi) et de l'information de protection (SCip ou CCRip ou Sip ou CBVip) dans la zone secrète de la mémoire non volatile. 13. Procédé de mise en place d'au moins une clé utilisateur dans une carte à puce selon la revendication 10, caractérisé en ce qu'il comporte les étapes initiales suivantes -chargement d'une clé chiffrée (CCU); - déchiffrement de la clé (CCU) par un algorithme de chiffrement- déchiffrement utilisateur (A.CU.) et d'une clé utilisateur associée (CUAi) contenus dans la carte pour obtenir la clé utilisateur nonchiffrée (CU);