Brevet FR2663441A1 — publié le 19911220

Cette invention se rapporte à une carte de circuit intégré et plus particulièrement à une carte de circuit intégré qui contient à la fois un programme d'essai pour tester la carte de circuit intégré elle-même et un programme d'application pour exécuter diverses fonctions données de la carte de circuit intégré. Un programme d'essai stocké dans une carte de circuit intégré elle-même est un programme pour réaliser essentiellement tous les essais sur les fonctions de la carte de ciruit intégré, et par conséquent, il peut accéder à n'importe laquelle des adresses souhaitée dans les mémoires fournies dans la carte de circuit intégré Afin d'empêcher d'autres programmes stockés dans la carte de circuit intégré d'être illicitement découverts à travers le programme d'essai et copiés ou détruits, l'exécution du programme d'essai doit être faite avec un degré élevé de sécurité. Sur la figure 1 des dessins annexés, on a représenté un bloc fonctionnel schématique général d'une carte de circuit intégré Sur cette figure 1, une carte de circuit intégré 10 comporte une unité de traitement centrale (CPU) 1 pour exécuter et commander divers programmes, et une mémoire morte de système (ROM) 3 dans laquelle est stocké un programme d'essai pour divers essais de fonction du produit ou de la carte de circuit intégré en voie de fabrication La carte de circuit intégré inclut en plus une mémoire morte (ROM) 4 d'application qui stocke un programme d'application pour exécuter diverses fonctions affectées à la carte de circuit intégré, une mémoire morte rémanente électriquement effaçable et programmable (EEPROM) 5 dans laquelle un code secret affecté exclusivement à cette carte de circuit intégré indiquant le type de cette carte, un code de vérification d'écriture vérifiant que le code secret a été inscrit, l'information personnelle d'un usager de cette carte, etc sont inscrits et stockés et une mémoire à accès aléatoire (RAM) 6 pour stocker les données de façcon temporaire Ces composants 1-6 sont couplés l'un à l'autre à travers un bus de système 2 Une borne Pl est une borne d'entrée d'alimentation électrique positive Une borne P 2 est une borne de terre d'alimentation électrique Une borne P 3 est une borne d'entrée d'un signal de remise à l'état initial à laquelle est appliqué un signal de remise à l'état initial Si pour initialiser le CPU 1 Une borne P 4 est une borne d'horloge à laquelle un signal d'horloge est fourni Une borne P 5 est une borne 1/0 à laquelle un circuit entrée/sortie 7 est couplé Le circuit entrée/sortie 7 est également couplé au bus de système 2 pour transférer, via la borne 1/0 P 5, les données entre la carte de circuit intégré 10 et le dispositif externe (non représenté). En se référant à la figure 2 qui illustre un système de carte de circuit intégré classique, la carte de circuit intégré 10 illustrée par la figure 1 est décrite en plus grand détail Comme énoncé précédemment, la mémoire morte ROM de système 3 stocke un programme d'essai 31 avec lequel un fabricant de carte de circuit intégré expérimente diverses fonctions et opérations de la carte de circuit intégré pendant la fabrication, un programme de branchement 32 pour décider lequel du programme d'essai 31 et du programme d'application 41 est stocké dans la mémoire morte ROM d'application 4 devra être exécuté, et faire un branchement vers le programme qui doit être exécuté, un programme de vérification d'écriture 34 pour vérifier qu'un code secret affecté exclusivement à cette carte de circuit intégré a été inscrit dans la mémoire morte rémanente électriquement effaçable et programmable l'EEPROM 5, et un programme de vérification de code secret 35 pour vérifier qu'un code secret introduit depuis l'extérieur via la borne 1/0 P 5 et le code secret déjà stocké dans l'EEPROM 5 coincident La mémoire morte ROM d'application 4 stocke le programme d'application 41 qui est utilisé pour exécuter diverses fonctions souhaitées par l'utilisateur de la carte, comme énoncé précédemment Après l'achèvement du procédé de fabrication de la carte de circuit intégré, un code secret 51 qui est affecté exclusivement à chaque carte de circuit intégré est inscrit et stocké dans î'EEPROM 5 De plus, un code séparé de vérification d'écriture 52, pour vérifier que le code secret affecté exclusivement à cette carte de circuit intégré a été inscrit et stocké, est inscrit et stocké dans 1 'EEPROM 5 A partir de ce code de vérification d'écriture 52, un jugement est pris pour dire si un code secret affecté exclusivement 51 a été ou non inscrit Le profil binaire du code de vérification d'écriture 52 est déterminé de façon à ne coincider ni avec aucun des profils binaires des valeurs initiales dans î'EEPROM 5 ni avec aucun des profils binaires qui peut être par la suite placé dans V'EEPROM 5. Dans la figure 2, quand un signal de réinitialisation est fourni à la borne P 3 de signal de réinitialisation, l'unité centrale de traitement CPU 1 extrait une adresse de démarrage du programme de branchement 32 stocké à une adresse prédéterminée dans la ROM de système 3 et démarre l'exécution du programme de branchement à l'adresse extraite Dans le programme de branchement 32, quand un ordre pour exécuter le programme d'essai 31 est fourni à partir du dispositif externe à la borne 1/0 P 5, le programme de vérification d'écriture 34 est exécuté Dans le programme de vérification d'écriture 34, dire si le code secret 51 a été inscrit dans î'EEPROM ou non est décidé sur la base du code de vérification d'écriture 52 stocké dans l'EEPROM 5 Si le code secret 51 a déjà été inscrit, le programme de vérification du code secret 35 est exécuté D'autre part, si aucun code secret n'a été inscrit dans l'EEPROM 5, la vérification du code secret n'est pas réalisée, mais le programme d'essai 31 est exécuté immédiatement Si le code secret 51 a déjà été inscrit, il est confronté avec le code secret introduit via la borne 1/0 P 5 Le programme d'essai 31 est exécuté seulement lorsqu'ils coincident l'un avec l'autre, et, sinon l'opération est terminée. Ainsi, l'art antérieur décrit a l'avantage que différents codes secrets peuvent être utilisés pour des cartes respectives, puisqu'un code secret est stocké dans une mémoire morte rémanente électriquement effaçable et programmable EEPROM. L'information personnelle stockée dans les cartes de circuit du type énoncé ci-dessus peut être lue ou modifiée, en utilisant le programme d'essai De manière spécifique, le contenu de 1 'EEPROM 5 peut être illicitement lu et copié ou modifié par une personne qui connaît ou parvient à connattre par chance le code secret affecté à une carte de circuit intégré. La demande de brevet japonais publiée sous le numéro 62-211756 décrit une carte de circuit intégré dans laquelle, lorsqu'un code secret affecté exclusivement à cette carte inscrit et stocké en elle et un code secret introduit de façon extérieure, coincident l'un avec l'autre, toutes les données stockées dans une mémoire de données sont effacées pour empêcher ainsi les données d'être pillées Cependant, cette carte de circuit intégré ne peut être testée par un programme d'essai sur divers sujets avant d'inscrire le code secret dans la carte. Par conséquent, le but de la présente invention est de fournir une carte de circuit intégré telle que même si quelqu'un intentionnellement ou par chance parvient à connattre le code secret qui est exclusivement affecté à cette carte, il est impossible de lire aucune donnée se rapportant au propriétaire de la carte à partir de 1 'EEPROM 5, tandis qu'il est possible de tester librement la carte de circuit intégré sur divers sujets, en utilisant un programme d'essai, avant que le code secret exclusif soit inscrit dans la carte. Selon la présente invention, une carte de circuit intégré inclut une mémoire micro-programmable, rémanente Un code secret qui diffère d'une carte à l'autre est inscrit dans la mémoire micro- programmable rémanente Le code secret sert à identifier, par exemple, le type de la carte Aussi, un code de vérification d'écriture pour vérifier que le code secret a déjà été inscrit est inscrit dans la mémoire rémanente La carte de circuit intégré inclut en plus une première mémoire morte (ROM) qui stocke un programme d'application pour exécuter les fonctions souhaitées de la carte de circuit intégré, une seconde mémoire ROM qui stocke un programme d'essai aussi bien qu'un programme de branchement, un programme de vérification d'écriture, un programme de vérification de code secret et un programme d'initialisation Le programme de branchement sert à déterminer lequel du programme d'essai ou du programme d'application doit être exécuté Quand il est déterminé que le programme d'essai doit être exécuté, le programme de vérification d'écriture détermine alors, à partir du code de vérification d'écriture dans la mémoire rémanente, avant l'exécution du programme d'essai, si le code secret a déjà été inscrit ou non Si le programme de vérification d'écriture vérifie que le code secret a déjà été inscrit, le programme de vérification de code secret confronte le code secret introduit dans la carte depuis l'extérieur avec le code secret dans la mémoire rémanente Si le programme de vérification du code secret vérifie que le code secret introduit depuis l'extérieur coincide avec le code secret stocké dans la mémoire rémanente, le programme d'initialisation initialise la mémoire rémanente et permet au programme d'essai d'être exécuté seulement après l'achèvement de l'initialisation La carte de circuit intégré inclut en outre des moyens de commande pour exécuter et contrôler les programmes respectifs, des moyens de commande d'entrée/sortie pour commander l'entrée et la sortie de signaux à partir d'un et vers un dispositif externe, et un bus de système pour transférer des signaux entre les moyens respectifs. Pour l'exécution du programme d'essai, si un code secret affecté exclusivement à une carte de circuit intégré a déjà été inscrit dans la mémoire rémanente, un code secret introduit depuis l'extérieur est vérifié et la mémoire rémanente est initialisée, et ensuite, le programme d'essai peut être exécuté D'autre part, si la mémoire rémanente ne contient pas le code secret pour cette carte, le programme d'essai peut être exécuté sans initialiser la mémoire rémanente. D'autres caractéristiques et avantages de cette invention ressortiront de la description faite ci-après en référence aux dessins annexés sur lesquels: la figure 1 montre schématiquement une configuration générale d'une carte de circuit intégré; la figure 2 est un diagramme de fonctionnement permettant d'expliquer le fonctionnement d'une carte de circuit intégré classique et; la figure 3 est un diagramme de fonctionnement servant à expliquer le fonctionnement d'une carte de circuit intégré selon la présente invention. Une carte de circuit intégré selon un mode de réalisation de la présente invention est maintenant décrite avec référence aux figures 1 et 3 L'organisation générale de la carte de circuit intégré selon la présente invention n'a pas de différence spéciale avec l'organisation représentée dans le diagramme en figure 1. La figure 3 est un diagramme de fonctionnement pour les programmes dans la mémoire de système ROM 3 et dans la mémoire d'application ROM 4 Dans ce mode de réalisation, le code secret 51 pour la carte est inscrit et stocké dans la mémoire morte rémanente électriquement effaçable et programmable EEPROM 5, laquelle est une mémoire rémanente, comme montré dans la figure 1 et décrite en référence à cette figure, dans l'étape finale de fabrication pour terminer la carte de circuit intégré Avant l'exécution du programme d'essai, un code secret introduit depuis l'extérieur dans la carte est confronté avec le code secret déjà stocké dans la carte Si la confrontation est réussie, le programme d'initialisation de mémoire 36 est exécuté et ensuite le programme d'essai 31 est exécuté. Dans l'EEPROM 5, séparé du code secret 51 pour cette carte de circuit intégré avec lequel un code secret introduit depuis 1 extérieur doit être confronté avant l'exécution du programme d'essai 31, le code de vérification d'écriture 52 est inscrit et stocké, lequel code de vérification d'écriture 52 indique si le code secret 51 a déjà été stocké dans la carte ou non Comme dans les cartes classiques, ce code de vérification d'écriture 52 a un profil binaire qui ne coincide ni avec les valeurs initiales dans î'EEPROM 5 ni avec d'autres profils binaires divers qui pourraient se trouver dans î'EEPROM 5 par la suite Quand la carte de circuit intégré doit être testée pendant la fabrication lorsque le code secret 51 n'a pas encore été inscrit dans l'EEPROM 5, le programme d'initialisation de mémoire 36 n'est pas exécuté, mais le programme d'essai est immédiatement exécuté. Plus spécialement, en référence au diagramme de fonctionnement illustré par la figure 3, lorsqu'un signal de remise à l'état initial est fourni à la borne de remise à l'état initial P 3, l'unité centrale de traitement CPU 1 lit une adresse de démarrage d'exécution pour le programme de branchement 32 depuis une adresse donnée à l'intérieur de la ROM de système 3 et l'exécution du programme de branchement 32 est commencée à partir de cette adresse de démarrage dtexécution Si un ordre pour exécuter le programme d'essai 31 est introduit depuis un dispositif externe à la borne 1/0 P 5, le programme de branchement 32 oblige la CPU 1 à exécuter le programme de vérification d'écriture 34 Le programme de vérification d'écriture 34 détermine à partir du code de vérification d'écriture 52 dans V'EEPROM 5 si le code secret 51 a déjà été inscrit, le programme de vérification du code secret 35 est exécuté S'il n'a pas encore été inscrit, la confrontation de code secret n'est pas réalisée, mais le programme d'essai 31 est exécuté immédiatement. Dans le programme de vérification du code secret 35, le code secret introduit par la borne 1/0 P 5 est confronté avec le code secret stocké dans 1 'EEPROM 5, et s'ils coincident l'un avec l'autre le programme d'initialisation de mémoire 36 est exécuté pour initialiser î'EEPROM 5, les données personnelles relatives au propriétaire de la carte stockées dans î'EEPROM 5 étant de ce fait empêchées d'être lues. Il va sans dire que, si aucun ordre pour exécuter le programme d'essai stocké dans le ROM de système 3 n'est fourni à la borne 1/0 P 5 à partir d'un dispositif externe, la CPU 1 exécute le programme d'application 41. Comme décrit ci-dessus, selon la présente invention, si un code secret pour une carte de circuit intégré particulière n'a pas été inscrit dans 1 'EEPROM 5 fournie dans cette carte, le programme d'essai peut être exécuté sans initialiser l'EEPROM 5 Si, cependant, le code secret a déjà été inscrit dans l'EEPROM 5, 1 'EEPROM 5 est initialisée par le programme d'initialisation de mémoire 36 En conséquence, si le programme d'essai est exécuté intentionnellement ou accidentellement sur une telle carte de circuit intégré, les données personnelles ayant trait au propriétaire de la carte de circuit intégré ne peuvent être lues Pendant la fabrication de la carte de circuit intégré, le code secret pour cette carte n'a pas été inscrit, et, par conséquent, l'initialisation de l'EEPROM 5 n'est jamais faite Ainsi, selon la présente invention, des essais sur des sujets divers, incluant V'EEPROM 5, peuvent être faits pour les cartes de circuit intégré, avant de charger les cartes de circuit intégré Ainsi, des essais complets peuvent être fournis pour les cartes de circuit intégré. Il demeure bien entendu que cette invention n'est pas limitée aux divers exemples de réalisation ou d'application décrits et/ou mentionnés ici mais qu'elle en englobe toutes les variantes. REVENDICATIONS 1 Carte de circuit intégré comportant un programme d'essai pour tester ladite carte de circuit intégré caractérisée en ce que qu'elle comprend: une mémoire micro-programmable rémanente ( 5) dans laquelle a été inscrit et stocké un code secret affecté exclusivement à ladite carte de circuit intégré et dans laquelle un code de vérification d'écriture destiné à vérifier ledit code secret a été inscrit et stocké; une première mémoire morte ( 4) pour stocker un programme d'application pour diverses fonctions données à ladite carte de circuit intégré; une seconde mémoire ( 3) pour stocker un programme d'essai, cette seconde mémoire morte stockant en outre: un programme de branchement pour déterminer lequel desdits programmes d'essai et d'application doit être exécuté; un programme de vérification d'écriture pour déterminer lorsque ledit programme d'essai doit être exécuté, à partir du code de vérification d'écriture dans ladite mémoire rémanente ( 5), si ledit code secret a déjà été écrit dans ladite mémoire rémanente et, pour permettre immédiatement l'exécution dudit programme d'essai lorsque ledit code secret n'a pas encore été écrit, un programme de vérification de code secret pour assembler un code secret introduit depuis l'extérieur avec ledit code secret stocké lorsque ledit programme de vérification d'écriture vérifie que ledit code secret a déjà été écrit et stocké dans ladite mémoire rémanente et un programme d'initialisation pour initialiser ladite mémoire micro-programmable rémanente ( 5) uniquement lorsque ledit code secret introduit depuis l'extérieur coïncide avec ledit code secret stocké dans ladite mémoire rémanente et, après avoir terminé cette initialisation, permettre l'exécution dudit programme d'essai; des moyens de commande pour exécuter et contrôler les programmes respectifs; des moyens de commande entrée/sortie pour commander l'entrée et la sortie de signaux vers et à partir de ladite carte de circuit intégré de et vers un dispositif externe à ladite carte de circuit intégré et; un bus de système ( 2) pour transférer des signaux parmi lesdits moyens respectifs. 2 Carte de circuit intégré selon la revendication 1, caractérisée en ce que ladite mémoire micro-programmable rémanente est une mémoire morte programmable électriquement effaçable. 3 Carte de circuit intégré selon la revendication 1, caractérisée en ce que le code secret est écrit dans ladite mémoire micro-programmable rémanente au stade final de la fabrication.