Brevet FR2638869A1 — publié le 19900511

DISPOSITIF DE SECURITE CONTRE LA DETECTION NON AUTORISEE DE DONNEES PROTEGEES L'invention concerne la sécurité des informations confidentielles contenues dans des circuits intégrés. Dans un certain nombre d'applications des circuits intégrés, et tout particulièrement les circuits contenus dans les cartes dites "cartes & puces", il est nécessaire d'interdire à des personnes non autorisées l'accès à des informations confidentielles stockées dans une mémoire du circuit. Les informations confidentielles sont par exemple stockées dans des mémoires mortes (ROM), ou alors dans des mémoires non volatiles électriquement programmables (EPROM ou EEPROM). Bien entendu, pour que ces informations soient réellement inaccessibles, il est nécessaire que les données inscrites dans la mémoire ne soient pas fournies sur les bornes d'entrée-sortie du circuit intégré. En pratique, on a donc prévu, dans des cas o le degré de confidentialité est particulièrement élevé, que le traitement des informations confidentielles soit effectué par un microprocesseur contenu dans le même circuit intégré que la mémoire. Ainsi, les informations circulent à l'intérieur du circuit intégré, entre le microprocesseur et la mémoire, mais elles ne parviennent pas sur des bornes externes d'accès au circuit intégré. Cette précaution peut concerner la lecture des informations: elles sont lues et exploitées par un microprocesseur qui ne les transmettra pas à l'extérieur. Elle peut aussi concerner l'écriture d'informations dans la mémoire dans le cas des mémoires électriquement programmables: un microprocesseur écrit des informations qu'il a déterminé lui-même, le mode de détermination n'étant pas connu de l'utilisateur, et à aucun moment les informations écrites n'apparaissent sur les bornes extérieures. On a cependant remarqué qu'il était possible d' accéder au moins partiellement au contenu de la mémoire d'une manière détournée qui consisterait à mesurer le courant consommé par le circuit intégré pendant une opération de lecture de la mémoire, ou encore une opération d'écriture. En effet, l'opération de lecture d'un bit 0 ne consomme pas le même courant que l'opération de lecture d'un bit 1. Il en est de même pour l'opération d'écriture. Si la mémoire est Iue ou écrite par mots de huit bits, la différence entre la lecture (ou l'écriture) de huit bits o et la lecture (ou l'écriture) de huit bits i est encore plus importante que celle d'un bit. A titre d'exemple, la lecture d'un bit de mémoire peut consommer 200 microampères pour un bit i et rien pour un bit 0 dans le cas d'une mémoire morte codée par présence ou absence d'un transistor à l'adresse du bit considéré. Des exemples analogues pourraient être donnés pour des mémoires EPROM ou EEPROM, en lecture comme en écriture. Par conséquent il est possible de déchiffrer partiellement ou totalement le contenu confidentiel d'une mémoire par observation du courant consommé pendant la lecture ou l'écriture de cette mémoire. L'utilisateur qui chercherait à frauder pourrait mesurer le courant consommé entre les bornes d'alimentation générale (accessibles obligatoirement à l'extérieur du circuit intégré). A titre d'exemple de fraude possible sur la lecture d'informations confidentielles: on peut lire un programme confidentiel stocké en mémoire morte dans le -2638869 circuit intégré, ou un code confidentiel d'habilitation stocké dans une mémoire électriquement programmable du circuit. Un autre exemple de fraude, concernant cette fois l'écriture et non la lecture d'informations confidentielles, serait le suivant: dans certains circuits protégés, on prévoit que l'utilisateur doit introduire un code d'habilitation par un clavier chaque fois qu'il veut utiliser le circuit; pour éviter la fraude par introduction systématique de tous les codes possibles, on prévoit de stocker en mémoire un bit d'erreur à chaque introduction de code erroné; au bout de trois erreurs, les trois bits d'erreur déclenchent le blocage du fonctionnement du circuit. Mais là encore, on pourrait détecter la consommation du courant et en déduire qu'un bit d'erreur est en train d'être stocké; on utiliserait cette connaissance pour interrompre très rapidement la mise en mémoire du bit d'erreur, annihilant donc la protection qui repose sur la possibilité de stocker à l'insu de l'utilisateur trois bits d'erreur en cas d'introduction successives de codes erronés. La présente invention cherche à éviter ces possibilités de fraude, principalement sur la lecture, mais aussi éventuellement sur l'écriture d'informations confidentielles. L'invention propose d'incorporer au circuit intégré un circuit de protection comprenant plusieurs cellules susceptibles d'être commandées individuellement, ces cellules ayant deux états de consommation de courant différents selon le signal qui les commande, et un générateur de séquences pseudo-aléatoires pour commander ces celluies, de sorte qu'elles se trouvent chacune pseudoaléatoirement dans un état ou un autre, rendant ainsi plus difficile la détermination d'informations confidentielles par lecture de consommation globale de courant du circuit intégré. La consommation vue des bornes extérieures du circuit sera en effet la superposition de la consommation réelle des cellules de mémoire et de la consommation pseudo-aléatoire des cellules du circuit de protection. De préférence, les cellules, qu'on appellera ci-après cellules de simulation, sont construites de telle manière qu'elles consomment dans leurs deux états des courants sensiblement égaux à ceux de cellules mémoires. Le premier état correspondrait à la consommation pour un bit 0 de la mémoire et le deuxième correspondrait à la consommation pour un bit. Ainsi, la détection est encore plus difficile. Selon que la mémoire doit être protégée vis-à-vis d'une lecture des informations stockées, ou vis-à-vis d'une détection des informations en cours d'écriture dans la mémoire, les cellules de simulation seront évidemment construites différemment, car les valeurs de consommation de courant ne sont pas identiques en lecture et en écriture. Dans le cas d'une protection contre la lecture, la cellule pourra être constituée par un transistor identique aux transistors constituant les cellules de mémoire. Dans le cas d'une protection contre la détection d'informations en cours d'écriture, la cellule pourra être constituée par un transistor à grille flottante dont la grille flottante et la grille de commande seront court-circuitées. Le générateur pseudo-aléatoire pourra être réalisé classiquement par une série de bascules en cascade, les sorties de certaines bascules étant rebouclées sur les entrées d'autres bascules à travers des portes OUExclusif. Le caractère aléatoire peut encore être renforcé par variation aléatoire de la fréquence d'horloge qui commande ces bascules. D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit et qui est faite en référence aux dessins annexés dans lesquels: - la figure 1 représente un schéma bloc du circuit de protection selon l'invention; - La figure 2 représente un exemple de générateur de séquences pseudo-aléatoires utilisable dans le circuit de protection selon l'invention; - la figure 3 représente un schéma bloc indiquant comment le générateur de séquences pseudo-aléatoires peut être commandé par un oscillateur dont la fréquence est elle-même commandée par des sorties du générateur; - la figure 4 représente un schéma détaillé de l'oscillateur de la figure 3. Le circuit de protection selon l'invention, représenté à la figure 1, est réalisé sur le même substrat de circuit intégré que le circuit à protéger, et il est alimenté par les mêmes bornes d'alimentation Vcc (niveau haut) et Vss (niveau bas). Il comprend essentiellement plusieurs cellules de simulation (ici trois cellules) commandées, à travers des bascules D respectives BD1 pour la première cellule, BD2 pour la deuxième, et BD3 pour la troisième, par trois sorties S1, S2, S3 d'un générateur de séquences pseudo-aléatoires GPA. Chaque cellule de simulation est destinée à consommer soit un premier courant soit un second courant selon le niveau logique de sortie de la bascule qui la commande. Dans l'exemple représenté, l'élément essentiel de la cellule de simulation est un transistor, T1, T2, T3 respectivement pour chaque cellule. Ce transistor de simulation est connecté entre les bornes d'alimentation Vcc et Vss du circuit, de sorte qu'il consomme un courant I ou un courant nul selon le niveau de sortie de la bascule qui le commande. Toutefois, comme on peut le voir sur la figure, on a prévu de préférence que le transistor T1 est en série avec un transistor Ttl entre Vcc et Vss, le transistor T2 est en série avec un transistor T'2, et le transistor T3 en série avec un transistor T'3. Les transistors T'l, T'2, T'3 sont des transistors d'inhibition, tous commandés par un même signal d'inhibition INH qui permet de contrôler l'instant o le circuit de protection doit effectivement fonctionner: lorsque le signal INH bloque les transistors T'1, T'2, T'3, le circuit de protection ne fonctionne plus. Dans l'exemple représenté, les transistors d'inhibition sont de type P alors que les transistors de simulation sont de type N. Les transistors de simulation sont de préférence dimensionnés de telle sorte que leur consommation (courant I) soit sensiblement identique à la consommation d'une cellule de mémoire du circuit & protéger (non représenté) au moment o cette cellule est lue (dans le cas o on cherche à protéger la confidentialité d'informations en cours de lecture) ou écrite (dans le cas o on cherche à protéger la confidentialité d'informations en cours d'écriture). Si on cherche & protéger une mémoire ROM contre la lecture d'informations confidentielles et si les cellules de mémoire sont constituées par un transistor dont la présence ou l'absence définit la valeur 1 ou O du bit stocké, les transistors de simulation seront de préférence de constitution et dimensions identiques aux transistors constituant les cellules de mémoire. Si on cherche & protéger l'écriture -dans une mémoire EPROM ou EEPROM dont les cellules de mémoire sont des transistors à grille flottante, les transistors de simulation T1, T2, T3 seront de préférence des transistors à grille flottante dont la grille de commande et la grille flottante sont court-circuitées. Ces transistors seront aussi dimensionnés de préférence comme les transistors des cellules de mémoire à protéger. La commande de consommation de courant des cellules se fait par les sorties Sl, S2, S3 du générateur de séquences pseudo-aléatoires qui fournit sur ces sorties des bits qui sont aléatoirement (en réalité pseudo-aléatoirement) des bits O ou 1. Toutefois, la commande des transistors des transistors de simulation Tl, T2, T3 se fait à travers les bascules D BD1, BD2, BD3, commandées par une horloge commune HL, de préférence synchronisée avec les horloges qui commandent les séquences de lecture ou d'écriture de la mémoire qu'on veut protéger. De cette manière, les bits pseudo-aléatoires engendrés sur les sorties S1, S2, S3, ne sont transmis aux transistors qu'au front de montée de cette horloge HL, c'est-à-dire au moment o va être consommé le courant de lecture ou d'écriture des cellules de mémoire à protéger. La figure 2 représente un exemple de constitution possible d'un générateur de séquence pseudo-aléatoire. Ce générateur est constitué par N bascules D en cascade (la sortie de l'une étant reliée à l'entrée D de l'autre), toutes commandées par un même signal d'horloge de fréquence F. Deux rebouclages sont prévus en outre par l'intermédiaire de deux portes OU-EXCLUSIF, désignées respectivement par P1 et P2: l'entrée de la première bascule est constituée par la sortie de la porte P1 qui a pour entrées d'une part la sortie de la deuxième bascule et d'autre part la sortie de la dernière bascule (bascule de rang N); d'autre part, l'entrée de la bascule de rang N-3 n'est pas constituée par la sortie de la bascule de rang N-4 mais par la sortie de la porte P2 qui a pour entrées la sortie de la bascule de rang N-4 et la sortie de la dernière bascule (de rang N). Les sorties du générateur pseudo-aléatoire sont prises sur les sorties des bascules D. Dans l'exemple représenté, les sorties Sl, S2, S3 sont respectivement les sorties des troisième, quatrième, et cinquième bascules. On a prévu aussi, pour des raisons qui vont maintenant être expliquées, deux autres sorties Sa et Sb fournissant des bits pseudo-aléatoires. Ces sorties sont les sorties des bascules de rangs N-2 et N-l, c'est-à-dire les deux qui précèdent la dernière de la série. La figure 3 représente le générateur de séquences pseudo-aléatoires GPA associé avec l'oscillateur OSC qui délivre la fréquence F du signal d'horloge du générateur. L'oscillateur OSC est un oscillateur à fréquence commandée. La fréquence est commandée par un signal d'entrée à cinq bits. Ces cinq bits représentent une séquence pseudo-aléatoire fournie par le générateur GPA lui-même à travers ses sorties S1, S2, S3, Sa, Sb. Ainsi, la fréquence de l'oscillateur varie pseudo-aléatoirement, de sorte que le caractère aléatoire des bits Sl, S2, S3 est renforcé. La figure 4 représente à titre d'exemple comment on peut réaliser l'oscillateur OSC à fréquence variable. L'oscillateur comprend une porte NOR dont la sortie est reliée à l'entrée d'un premier inverseur Il; la sortie du premier inverseur Il est reliée à l'entrée d'un deuxième inverseur I2 dont la sortie est rebouclée sur une entrée de la porte NOR. L'autre entrée de la porte NOR sert simplement à recevoir un signal d'inhibition de l'oscillateur si on désire avoir cette possibilité d'inhibition. Ce bouclage de trois fonctions inverseuses en cascade produit une oscillation dont la fréquence est réglée par descapacités insérées d'une part entre la sortie de la porte NOR et une masse (Vss) et d'autre part entre la sortie du premier inverseur Il et la masse. Entre la sortie de la porte NOR et la masse, on a prévu trois capacités en parallèle Cl, C2, et Ca, qui peuvent être cependant déconnectées chacune par un transistor respectif en série avec elle. Les transistors respectifs Q1, Q2, Qa, sont commandés chacun par une sortie respective Sl, S2, Sa du générateur pseudo-aléatoire GPA. De même, entre la sortie de l'inverseur Il et la masse Vss, on a prévu deux capacités en parallèle C3 et Cb, qui peuvent être déconnectées chacune par un transistor respectif Q3, Qb en série avec elle. Q3 et Qb sont commandés chacun par une sortie respective S3, Sb du générateur GPA. Selon l'état des bits S1, S2, S3, Sa, Sb, la fréquence F prendra une valeur parmi 32 valeurs possibles; les séquences de bits pseudoaléatoires présentes notamment sur les sorties S1, S2, S3, seront donc produites & une fréquence variant elle-même aléatoirement; cela renforce le caractère aléatoire des bits produits sur les sorties S1, S2, S3, donc le caractère aléatoire de la consommation de courant du circuit de protection selon l'invention. On aboutit ainsi a une très bonne protection contre la détection d'informations confidentielles par lecture du courant consommé aux bornes d'un circuit intégré pendant une opération de lecture ou d'écriture de ces informations. REVENDICATIONS 1. Circuit de protection de données confidentielles d'une mémoire en circuit intégré, caractérisé en ce qu'il comprend sur le même circuit intégré plusieurs cellules de simulation (T1, T2, T3) susceptibles d'être commandées individuellement, ces cellules ayant deux états de consommation de courant différents selon le signal qui les commande, et un générateur de séquences pseudo-aléatoires (GPA) pour commander ces cellules, de sorte qu'elles se trouvent chacune pseudo-aléatoirement dans un état ou un autre, rendant ainsi plus difficile la détermination d'informations confidentielles par lecture de consommation globale de courant du circuit intégré. 2. Circuit de protection selon la revendication 1, caractérisé en ce que les cellules consomment dans leurs deux états des courants sensiblement égaux à ceux de cellules mémoires, le premier état correspondant à la consommation de la cellule mémoire dans un état logique 0 et le deuxième correspondant à la consommation de la cellule mémoire dans un état logique 1. 3. Circuit de protection selon l'une des revendications 1 et 2, destiné à la protection d'une mémoire vis-à-vis d'une lecture des informations stockées, caractérisé en ce que les cellules de simulation sont constituées essentiellement par un transistor identique aux transistors constituant les cellules de la mémoire. 4. Circuit de protection selon l'une des revendications 1 et 2, destiné à la protection d'une mémoire EPROM ou EEPROM pendant l'écriture d'informations confidentielles, caractérisé en ce que chaque cellule de simulation est constituée par un transistor à grille flottante dont la grille flottante et la grille de commande sont court-circuitées. 5. Circuit de protection selon l'une des revendications 1 à 4, caractérisé en ce que le générateur pseudo-aléatoire est constitué par une série de bascules en cascade, certaines sorties des bascules étant rebouclées sur des entrées à travers des portes OU-Exclusif.(P1, P2). 6. Circuit de protection selon l'une des revendications 1 à 5, caractérisé en ce que le générateur pseudo-aléatoire est commandé par une fréquence d'horloge (F) dont la variation est pseudo-aléatoire. 7. Circuit de protection selon la revendication 6, caractérisé en ce qu'il comprend un oscillateur (OSC) à fréquence commandée ayant plusieurs entrées de commande de fréquence, ces entrées étant reliées à des sorties (Sl, S2, S3, Sa, Sb) du générateur pseudo-aléatoire (GPA). 8. Circuit de protection selon l'une des revendications 1 à 7, caractérisé en ce que chaque cellule de simulation est commandée par la sortie d'une bascule D respective (BD1, BD2, BD3) recevant comme entrées d'une part un signal d'horloge commun (HL) et d'autre part chacune une sortie respective (Sl, S2, S3) du générateur pseudo-aléatoire. 9. Circuit de protection selon l'une des revendications 1 à 8, caractérisé en ce que chaque cellule de simulation comprend un transistor (Tl, T2, T3 respectivement), et en ce que ce transistor est connecté en série avec un transistor d'Inhibition de fonctionnement (T'i, T'2, T'3 respectivement) entre les bornes d'alimentation Vcc, Vss, du circuit intégré comprenant la mémoire à protéger.