Brevet FR2643478A1 — publié le 19900824

La présente invention se rapporte à une carte à circuit intégré, et en particulier à une carte à circuit intégré dans laquelle un programme d'application utilisé pour exécuter diverses fonctions pour l'utilisation de la carte à circuit intégré ainsi qu'un programme de test utilisé pour exécuter les tests (inspections du produit) sur la carte à circuit intégré sont stockés. La figure 1 donne un schéma bloc de la configuration d'une carte conventionnelle à circuit intégré. Dans une carte à circuit intégré 10, une mémoire morte 3 du système et une mémoire morte 4 d'application sont connectées à une unité centrale de traitement 1 par un bus 2. La figure 2 est un organigramme qui montre la configuration des programmes respectivement stockés dans la mémoire morte 3 du système qui sert de seconde mémoire morte et la mémoire morte 4 d'application qui sert de première mémoire morte. Comme le montre la figure 2, par exemple, un programme de test 31 qui est utilisé par le fabricant pour accomplir des tests fonctionnels des produits pendant la production des cartes à _ircuit intégrée est stocké dans la mémoire morte 3 du système et un programme d'application 41, qui est en réalité employé par l'utilisateur pour exécuter diverses fonctions, est stocké dans la mémoire morte d'application 4. Dans la mémoire morte 3 du système est également stockée une routine de branchement 32 qui sert à décider du programme à exécuter parmi le programme de test 31 et le programme d'application 41 et qui se branche dans l'un de ces programmes. Sur la figure 1, une mémoire morte électriquement effaçable et programmable 5 dans laquelle est stockée une donnée variable, une mémoire à accès aléatoire 6 dans laquelle est temporairement stockée une donnée et un circuit 7 d'entrée-sortie pour accomplir l'entrée et la sortie de données entre le circuit 7 et des dispositifs externes, sont de plus connectés au bus 2. En addition, une borne P1 est une borne d'entrée d'une source positive, une borne P2 est une borne de mise à la terre de la source de courant, une borne P3 est une borne du signal de remise à l'état initial pour introduire un signal de remise à l'état initial utilisé pour l'initialisation de l'unité centrale de traitement 1, une borne P4 est une borne d'horloge pour introduire un signal d'horloge et une borne P5 est une borne d'entrée/sortie. Dans une telle carte, quand un signal de remise à l'état initial est introduit par la borne P3, l'unité centrale de traitement i sert à lire l'adresse de début d'exécution de la routine de branchement 32 qui a été stockée au préalable à une adresse donnée dans la mémoire morte 3 du système et à débuter l'exécution de la routine de branchement 32 à partir de l'adresse de début d'exécution. Dans la routine de branchement 32, lorsqu'un ordre d'exécution du programme de test 31 est introduit à la borne d'entrée/sortie P5, d'un dispositif externe, l'unité centrale de traitement i commence le programme de test 31 sans aucune autre opération. Le programme de test 31 a pour fonction de permettre l'accès à toute adresse souhaitée afin d'accomplir des tests satisfaisants de produit (inspections) de façon que l'unité centrale de traitement 1 puisse avoir accès à chaque adresse selon le programme de test 31 pour ainsi pouvoir entreprendre des tests de produit. Par ailleurs, lorsqu'aucun ordre d'exécution du programme de test 31 n'est introduit, l'adresse de début d'exécution du programme d'application 41 qui a été stockée au préalable à une adresse donnée dans la mémoire morte d'application 4 est lue, et l'exécution du programme d'application 41 débute à partir de l'adresse de début d'exécution. Les cartes conventionnelles à circuit intégré ont la configuration cidessus décrite dans laquelle, lorsqu'un ordre d'exécution du programme de test est reçu dans la routine de branchement, le programme de test est exécuté sans aucune autre opération. Comme on l'a décrit ci-dessus, le programme de test est un programme utilisé pour des tests fonctionnels (tests de produit) sur une carte et a pour fonction d'accéder à toute adresse souhaitée dans la mémoire de la carte. Il est par conséquent nécessaire d'impartir un haut degré de sécurité pour l'accès au programme de test, c'est-à-dire son exécution, afin d'empêcher le programme de test d'être utilisé pour une lecture, un copiage ou une irruption dans d'autres programmes stockés dans une carte à circuit intégré et pour en changer le contenu. Cependant, les cartes conventionnelles ne sont pourvues d'aucun moyen de régulation de l'accès au programme de test ou de son exécution. La présente invention a pour but de résoudre le problème ci-dessus avec une carte à circuit intégré qui comprend un moyen de régulation de l'accès à un programme de test de manière que d'autres programmes stockés dans la carte ne puissent être copiés ou perçus d'une manière illicite par le programme de test. Pour atteindre cet objectif, la présente invention offre une carte à circuit intégré qui contient un programme d'application utilisé pour exécuter diverses fonctions pour l'emploi de la carte à circuit intégré et un programme de test utilisé pour le test de produit, la carte à circuit intégré comprenant un moyen formant mémoire vive non volatile dans laquelle sont écrits et stockés un code chiffré intrinsèque particulier à chaque carte à circuit intégré et un code de confirmation d'écriture pour confirmer que le code chiffré intrinsèque est écrit; un premier moyen formant mémoire morte o est stocké un programme d'application pour exécuter diverses fonctions pour l'utilisation de la carte à'circuit intégré; un second moyen formant mémoire morte contenant un programme de test, une routine de branchement qui sert à décider si le programme de test ou le programme d'application est 26 3478 exécuté, une routine de confirmation d'écriture pour confirmer que le code chiffré intrinsèque a déjà été écrit en utilisant le code de confirmation d'écriture du moyen formant mémoire non volatile quand une décision est faite que le programme de test doit être exécuté, et une première routine d'interclassement du code chiffré qui sert à l'interclassement du code chiffré intrinsèque avec l'entrée du code chiffré de l'extérieur de la carte lorsque l'on décide, dans la routine de confirmation d'écriture, que le code chiffré intrinsèque est écrit et qui permet l'accès au programme de test lorsque les deux codes chiffrés coincident l'un avec l'autre; un moyen de commande pour exécuter et contrôler chacun des programmes; un moyen de commande d'entrée/sortie pour contrôler l'entrée du signal et sa sortie par rapport à l'extérieur de la carte; et'un moyen pour transmettre les signaux entre les moyens respectifs; ces moyens étant prévus sur un seul semiconducteur. Dans un autre mode de réalisation de la présente invention, la seconde mémoire morte comprend de plus un code chiffré différent du code chiffre intrinsèque et une seconde routine d'interclassement du code chiffré qui sert à l'interclassement du code chiffré ci-dessus dans le second moyen formant mémoire morte avec le code chiffré à l'entrée de l'extérieur de la carte lorsque l'on décide, dans la routine de confirmation d'écriture, que le code chiffré intrinsèque n'est pas inscrit dans le moyen formant mémoire morte non volatile, et qui permet l'accès au programme de test lorsque les deux codes chiffrés sont en accord l'un avec l'autre. Dans un autre mode de réalisation de la présente invention, le code de confirmation d'écriture écrit en même temps que le code chiffré intrinsèque dans le moyen formant mémoire vive non volatile est un code de vérification du code chiffré intrinsèque et une décision est faite pour savoir si le code chiffré intrinsèque est correct ou non dans la routine de confirmation d'écriture du second moyen formant mémoire morte selon le code de vérification. Si le code chiffré intrinsèque est correct, on décide que le code chiffré intrinsèque est écrit. Dans la présente invention, l'interclassement avec le code chiffré stocké dans la carte est accompli avant que le programme de test ne soit exécuté, et l'accès au programme de test n'est permis que lorsque l'accord est réalisé. L'invention sera mieux comprise, et d'autres buts, caractéristiques, détails et avantages de celle-ci apparaîtront plus clairement au cours de la description explicative qui va suivre faite en référence aux dessins schématiques annexés donnés uniquement à titre d'exemple illustrant plusieurs modes de réalisation de l'invention, et dans lesquels: - la figure 1 donne un schéma bloc de la configuration interne d'une carte conventionnelle à circuit intégré; - la figure 2 est un organigramme qui montre la configuration des programmes stockés dans l'unité formant mémoire morte de la carte à circuit intégré montrée à la figure 1; - la figure 3 est un organigramme qui montre la configuration des programmes stockés dans l'unité formant mémoire morte d'un mode de réalisation d'une carte à circuit intégré selon la présente invention; - la figure 4 est un dessin donné pour expliquer l'état o un code chiffré de la carte à circuit intégré de la figure 3 est stocké; - la figure 5 est un organigramme qui montre la configuration des programmes stockés dans l'unité formant mémoire morte d'un autre mode de réalisation de la carte à circuit intégré selon la présente invention; et - la figure 6 est un dessin qui explique l'état o le code chiffré de la carte à circuit intégré de la figure 5 est stocké. Un mode de réalisation de la présente invention sera décrit ci-dessous en se référant aux dessins. La configuration générale de la carte à circuit intégré de la présente invention ne diffère pas particulièrement de celle de la carte conventionnelle montrée à la figure 1. La figure 3 est un organigramme qui montre la configuration des programmes stockés dans une mémoire morte 3a du système et une mémoire morte 4 d'application d'une carte à circuit intégré d'un mode de réalisation de la présente invention. Dans ce mode de réalisation, un code chiffré intrinsèque 51 est inscrit et stocké dans une mémoire morte programmable effaçable électriquement 5, qui sert de mémoire non volatile, pendant le processus de fabrication de la carte à circuit intégré, comme le montre la figure 4. Ce code chiffré intrinsèque 51 est interclassé avec le code chiffré à l'entrée de l'extérieur de la carte avant qu'un programme de test 31 ne soit exécuté et l'accès au programme de test 31 et son exécution ne sont possibles que lorsqu'un accord entre ces codes est confirmé. Dans la mémoire morte 5 est également stocké un code de confirmation d'établissement 52 qui sert de code de confirmation d'écriture indiquant que le code chiffré intrinsèque 51 est écrit, outre le code chiffré intrinsèque 51. Un code de confirmation 52 d'une valeur donnée signifie que le code chiffré intrinsèque 51 est déjà inscrit et un code de confirmation d'établissement d'une valeur autre que cette valeur donnée signifie que le code chiffré intrinsèque 51 n'a pas encore été inscrit. Une décision est faite en utilisant le code de confirmation d'établissement 52 pour savoir si oui ou non le code chiffré intrinsèque 51 a déjà été inscrit et stocké. Le code de confirmation 51 est établi à une valeur qui est différente de la valeur initiale de la mémoire morte programmable effaçable électriquement 5 pendant la production des cartes. Cela sera décrit en détail ci-dessous en se référant à la figure 3. Lorsqu'un signal de remise à l'état initial est introduit d'une borne P3, l'unité centrale de traitement 1 lit l'adresse à laquelle l'exécution d'une routine de branchement 32 débute et qui a été au préalable stockée à une adresse donnée dans la mémoire morte 3 du système et commence l'exécution de la routine de brar..hement 32 à partir de l'adresse de début d'exécution. Dans la routine de branchement 32, l'unité centrale de traitement 1 provoque l'exécution de la routine 34 de confirmation d'établissement lorsqu'un ordre d'exécution du programme de test 31 a été introduit vers une borne d'entrée/sortie P5 en provenance d'un dispositif externe. Dans la routine de confirmation d'établissement 34, on décide à partir du code de confirmation d'établissement 52 stocké dans la mémoire 5 si oui ou non le code chiffré intrinsèque 51 a déjà été inscrit dans la mémoire morte programmable et effagable électriquement 5. Lorsque l'on décide que le code chiffré intrinsèque 51 a déjà été écrit, la première routine d'interclassement de code chiffré 35 est exécutée. Dans cette première routine 35, le code chiffré intrinsèque stocké dans la mémoire morte 5 est interclassé avec le code chiffre à l'entrée de la borne d'entrée/sortie PS et l'accès au programme de test 31 n'est permis que lorsque les deux codes sont en accord l'un avec l'autre et l'opération est arrêtée lorsqu'ils ne sont pas en accord. Alternativement, lorsque le code chiffré intrinsèque 51 n'a pas encore été inscrit, le programme de test 31 est directement exécuté sans accomplir l'interclassement des codes chiffrés. En d'autres termes, par exemple, lorsqu'il n'est pas nécessaire d'impartir une sécurité, en particulier à l'accès au programme de test 31 en usine, le programme de test peut être exécuté sans nécessité d'interclassement des codes chiffrés si le code chiffré intrinsèque 51 n'a pas été écrit. Dans ce mode de réalisation, comme les codes chiffrés sont stockés dans la mémoire morte programmable effaçable électriquement, différents codes chiffrés peuvent être établis pour des cartes respectives. La figure 5 est un organigramme qui montre la configuration des programmes stockés dans la mémoire morte 3b du système et la mémoire morte 4 d'application dans une carte à circuit intégré d'un autre mode de réalisation de la présente invention. Dans ce mode de réalisation, l'interclassement avec le code chiffré 38 stocké au préalable dans la mémoire morte 3b du système de la figure 6 est accompli pendant le processus de fabrication de la carte à circuit intégré, et le programme de test 31 ne débute que lorsque la coincidence est réalisée. Différents codes chiffrés intrinsèques 51 sont inscrits dans la mémoire morte programmable effaçable électriquement 5 des cartes à la fin du processus de fabrication et l'accès au programme de test 31 n'est alors permis que selon les résultats de l'interclassement avec les codes chiffrés intrinsèques 51 inscrits dans la mémoire morte programmable effaçable électriquement. De plus, un code de vérification 53 servant de code de confirmation d'écriture utilisé, pour décider si oui ou non le code chiffré intrinsèque 51 est correct, =st inscrit et stocké dans la mémoire morte programmable effaçable électriquement 5 en même temps que le code chiffré intrinsèque 51 y est stocké. Cette opération sera décrite en détail ci-dessous en se référant à la figure 5. Lorsqu'un ordre d'exécution du programme de test 31 est donné par la routine de branchement 32, une routine 36 de confirmation de code de vérification, stockée dans la mémoire morte programmable effaçable électriquement pour décider si oui ou non le code chiffré intrinsèque est correct, est exécutée. La décision est faite si oui ou non le code chiffré intrinsèque 51 est correct par application du code de vérification 53 au code chiffré intrinsèque 51. Il est par conséquent nécessaire de décider de la méthode de détermination du code de vérification 53 de façon que le code de vérification 53 ne soit pas une valeur correcte pour le code chiffré intrinsèque 51 pendant le processus de production. Lorsque l'on décide, à partir du code de vérification 53, que le code chiffré intrinsèque 51 est correct, on juge que le code chiffré intrinsèque 51 a déjà été écrit et la première routine d'interclassement du code chiffré 35 est exécutée pour l'interclassement du code chiffré intrinsèque 51 écrit, dans la mémoire morte 5 avec l'entrée de code chiffré de la borne P5 d'entrée/ sortie. Le programme de test 31 n'est exécuté que lorsque les deux codes sont en accord l'un avec l'autre et l'opération est arrêtée lorsqu'ils ne sont pas en accord l'un avec l'autre. De plus, lorsque l'on décide, dans la routine de confirmation du code de vérification, que le code chiffré intrinsèque stocké dans la mémoire morte 5 n'est pas correct, on décide que le code chiffré intrinsèque 51 n'a pas encore été écrit et la seconde routine d'interclassement de code chiffré 33 est exécutée pour l'interclassement du code chiffré 38 stocké au préalable dans la mémoire morte 3c du système avec le code chiffré à l'entrée de la borne d'entrée/sortie PS. Le programme de test 31 n'est exécuté que lorsque les deux codes sont en accord l'un avec l'autre et l:'pération est arrêtée lorsqu'ils ne sont pas en accord l'un avec l'autre. Le code de vérification 53 inscrit dans la mémoire morte programmable effaçable électriquement 5 en même temps que le code chiffré intrinsèque 51 peut être simplement le code de confirmation d'établissement utilisé pour décider si oui ou non le code chiffré intrinsèque 51 est écrit dans la mémoire morte 5 comme on l'a décrit dans le mode de réalisation montré aux figures 3 et 4. Par ailleurs, il est bien entendu que le mode de réalisation montré aux figures 3 et 4 peut employer le code de vérification 51 dans le but de décider si oui ou non le code chiffré intrinsèque a été inscrit. Le stade auquel le code chiffré intrinsèque 51 est inscrit dans la mémoire morte 5 n'est pas limité au stade final du procédé de production. L'interclassement avec le code chiffré stocké dans la mémoire morte du système peut être accompli avant que le code chiffré intrinsèque ne soit écrit, et l'interclassement avec le code chiffré intrinsèque écrit dans la mémoire morte programmable effaçable électriquement peut être accompli après avoir écrit le code chiffré intrinsèque. Par ailleurs, l'unité centrale de traitement, le circuit d'entrée/sortie, chaque mémoire et le bus auquel sont connectées ces unités sont tous formés sur un seul semiconducteur. REVEND I CA T IONS 1. Carte à circuit intégré, du type contenant un programme d'application utilisé pour l'exécution de diverses fonctions pour l'emploi de ladite carte à circuit intégré et un programme de test utilisé pour des tests de produit, caractérisée en ce qu'elle comprend: un moyen formant mémoire vive non volatile (5) o sont inscrits et stockés un code chiffré intrinsèque (51) particulier à chaque carte à circuit intégré et un code de confirmation d'écriture pour confirmer que ledit code chiffré intrinsèque est inscrit et stocké; un premier moyen formant mémoire morte (4) o est stocké le programme d'applicaticr. utilisé pour exécuter diverses fonctions pour l'emploi de la carte à circuit intégré; un second moyen formant mémoire morte (3a) qui contient le programme de test, une routine de branchement utilisée pour décider si le programme de te:t ou le programme d'application est exécuté, une routine de confirmation d'écriture pour confirmer, dudit code de confirmation d'écriture dans ledit moyen formant mémoire non volatile, que ledit code chiffré intrinsèque a déjà été écrit lorsque l'on décide que ledit programme de test doit être exécuté, et une première routine d'interclassement de- code chiffré qui sert à l'interclassement dudit code chiffré intrinsèque avec le code chiffré à l'entrée de l'extérieur de la carte à circuit intégré lorsque l'on décide, dans ladite routine de confirmation d'écriture, que ledit code chiffré intrinsèque est écrit et qui permet l'accès audit programme de test quand les deux codes chiffrés sont en accord l'un avec l'autre; un moyen de commande (1) pour l'exécution et le contr8le de chacun des programmes; un moyen de commande d'entrée/sortie (7) pour contr8ler l'entrée du signal et la sortie vers l'extérieur de la carte à circuit intégré; et un moyen (2) pour transmettre les signaux entre les moyens respectifs; tous lesdits moyens étant prévus sur un seul semiconducteur. 2. Carte selon la revendication 1, caractérisée en ce que le code de confirmation d'écriture inscrit dans le moyen formant mémoire vive non volatile (5) avec le code chiffré intrinsèque sert de code de vérification dudit code chiffré intrinsèque et dans la routine de confirmation d'écriture dans le second moyen formant mémoire morte, une décision est faite si oui ou non ledit code chiffré intrinsèque est correct en utilisant ledit code de vérification et on décide que ledit code chiffré intrinsèque est écrit quand il est correct. 3. Carte selon la revendication 2, caractérisée en ce que le code chiffré intrinsèque (51) inscrit dans le moyen formant mémoire vive non volatile est inscrit au stade final du procédé de production de la carte. 4. Carte selon la revendication 1, caractérisée en ce que le second moyen formant mémoire morte (3a) comprend de plus un code chiffré différent du code chiffré intrinsèque et une seconde routine d'interclassement de code chiffré qui sert à l'interclassement dudit code chiffré stocké dans ledit second moyen formant mémoire morte avec le code chiffré à l'entrée de l'extérieur de la carte lorsque l'on décide, dans la routine de confirmation d'écriture, que le code chiffré intrinsèque n'est pas écrit dans le moyen formant mémoire non volatile et qui permet l'accès au programme de test uniquement quand les deux codes chiffrés sont en accord l'un avec l'autre. 5. Carte selon la revendication 4, caractérisée en ce que le code de confirmation d'écriture inscrit dans le moyen formant mémoire vive non volatile (5) en même temps que le code chiffré intrinsèque sert de code de vérification dudit code chiffré intrinsèque et dans la routine de confirmation d'écriture dans la seconde mémoire morte une décision est faite si oui ou non le code chiffré intrinsèque est correct en utilisant ledit code de vérification et on décide que ledit code chiffré est écrit quand ledit code chiffré intrinsèque est correct. 6. Carte selon la revendication 5, caractérisée en ce que ledit code chiffré intrinsèque inscrit dans le moyen formant mémoire vive non volatile (5) est écrit au stade final du procédé de production de la carte.