Brevet FR2818845A1 — publié le 20020628

l 2818845 CIRCUIT INTEGRE COMPRENANT UN CIRCUIT DE BROUILLAGE DE DONNEES ENREGISTREES DANS UNE ZONE MEMOIRE VOLATILE La présente invention concerne un circuit intégré comprenant une zone mémoire volatile dont le contenu présente une valeur déterminée après une remise à zéro du circuit intégré, la zone mémoire volatile étant connectée à un bus de données par l'intermédiaire d'un circuit de brouillage assurant le codage des données enregistrées dans la zone mémoire et le décodage des données lues dans la zone mémoire, le codage des données étant au moins fonction d'une clé appliquée au circuit de brouillage. La figure 1 représente schématiquement un circuit intégré du type précité, formant ici un microprocesseur MP1 (ou microcontrôleur). Le circuit intégré comprend une unité centrale CPU, une mémoire programme PMEM, par exemple une mémoire FLASH programmable et effaçable électriquement, et une mémoire volatile DTMEM, généralement une mémoire de type RAM, prévue pour sauvegarder des données temporaires pendant une session. Ces éléments sont connectés par un bus de données commun DTB. Un circuit de brouillage JMCT est agencé entre le bus de données DTB et l'entrée/sortie de données de la mémoire DTMEM. Ce circuit de brouillage comprend une partie WJM qui assure le codage de données lors de leur écriture dans la mémoire DTMEM, et une partie RJM qui assure le décodage des données lors de leur lecture dans la mémoire DTMEM et leur application sur le bus de données. Pour coder des données DTin à enregistrer dans la mémoire DTMEM, le circuit JMCT reçoit une clé fixe Ks ainsi que, de préférence, des données supplémentaires DTsup prélevées en divers points du circuit intégré MP1 (au choix du concepteur). Les données codées DTout délivrées par le circuit JMCT sont du type: 2 2818845 DTout = F (DTin, Ks, DTsup) F étant la fonction de brouillage réalisée par le circuit JMCT. La clé fixe Ks présente un nombre de bits déterminé, par exemple 8, 16 ou 32 bits. Le circuit de brouillage est généralement un circuit à logique câblée d'une structure assez simple, comprenant par exemple des portes OU Exclusif agencées pour mélanger les bits des données DTin avec les bits de la clé Ks et les bits des données DTsup. Un tel circuit de brouillage offre généralement une bonne sécurité contre la lecture frauduleuse des données stockées dans la mémoire DTMEM au cours d'une session. Un tel circuit de brouillage présente toutefois une faiblesse au plan de la sécurité, qui apparaît au moment du démarrage du circuit intégré MP1, après qu'un signal de remise à zéro RESET a été appliqué à l'unité CPU et à la mémoire DTMEM. En effet, dans ce cas, tout le contenu de la mémoire DTMEM est effacé et chaque cellule mémoire présente une valeur identique, par exemple la valeur "0". Ainsi, il existe un risque qu'un fraudeur prenne le contrôle de l'unité CPU au commencement d'une cession, après la remise à zéro du microprocesseur, et procède à une lecture complète de tout le contenu de la mémoire. Le contenu de la mémoire étant connu après une remise à zéro, la partie RJM du circuit de brouillage délivre sur le bus de données DTB des données décodées DTout' qui sont égales à la transformée des données constantes par la fonction inverse de la fonction de brouillage. Si par exemple les données constantes sont égales à "0", les données DTout' sont de la forme suivante: DTout' = F-1 (0, Ks, DTsup) Dans ce cas, la lecture des données DTout' peut permettre de découvrir la fonction inverse F-1 de la 3 2818845 fonction de brouillage F et permettre par conséquent de découvrir la fonction de brouillage elle-même et la clé secrète Ks. Une solution connue pour pallier cet inconvénient consiste à modifier la structure des cellules mémoire de la mémoire DTMEM de manière que cellesci présentent un contenu différent, l'une relativement à l'autre, après application du signal de remise à zéro. Ainsi, certaines cellules se retrouvent à "1" et d'autres à "0". Toutefois, cette solution rend l'architecture de la mémoire plus complexe en raison de la différenciation de chaque cellule mémoire. En outre, malgré la différenciation des valeurs par défaut dans les cellules mémoire après remise à zéro, le contenu de la mémoire est toujours identique après chaque remise à zéro.La présente invention vise à pallier cet inconvénient. Plus particulièrement, la présente invention vise un moyen de protection contre le piratage d'un circuit de brouillage associé à une zone mémoire volatile présentant un contenu constant après chaque remise à zéro. Cet objectif est atteint par la prévision d'un circuit intégré comprenant une zone mémoire volatile dont le contenu présente une valeur déterminée après une remise à zéro du circuit intégré, la zone mémoire volatile étant connectée à un bus de données par l'intermédiaire d'un circuit de brouillage assurant le codage des données enregistrées dans la zone mémoire et le décodage des données lues dans la zone mémoire, le codage des données étant au moins fonction d'une clé appliquée au circuit de brouillage, dans lequel la clé appliquée au circuit de brouillage est une clé aléatoire délivrée par un générateur de signal aléatoire agencé pour changer la valeur de la clé au moins à chaque nouvelle remise à zéro du circuit intégré. Selon un mode de réalisation, la clé aléatoire délivrée par le générateur de signal aléatoire est stockée dans un registre par l'intermédiaire du bus de 4 2818845 données, la sortie du registre étant appliquée au circuit de brouillage. Selon un mode de réalisation, la sortie du générateur de signal aléatoire est reliée directement au circuit de brouillage, de telle manière que la clé aléatoire est appliquée au circuit de brouillage sans passer par le bus de données. Selon un mode de réalisation, la zone mémoire volatile est une mémoire RAM. Selon un mode de réalisation, la zone mémoire volatile est une banque de registres. Selon un mode de réalisation, le circuit intégré comprend une mémoire RAM, une banque de registres, un premier circuit de brouillage agencé entre la mémoire RAM et le bus de données, et un second circuit de brouillage agencé entre la banque de registres et le bus de données. Selon un mode de réalisation, le premier générateur de signal aléatoire a sa sortie reliée directement au premier circuit de brouillage sans passer par le bus de données, et le second générateur de signal aléatoire a sa sortie reliée directement au second circuit de brouillage sans passer par le bus de données. Selon un mode de réalisation, le circuit intégré comprend une unité centrale de traitement et forme un microprocesseur. Selon un mode de réalisation, le circuit intégré est agencé sur un support potable pour former une carte à puce ou tout autre objet portatif électronique équivalent. Ces objets, caractéristiques et avantages ainsi que d'autres de la présente invention seront exposés plus en détail dans la description suivante d'exemples de réalisation d'un circuit intégré selon l'invention, faite en relation avec les figures jointes parmi lesquelles: - la figure 1 précédemment décrite représente un circuit intégré comprenant un circuit de brouillage classique agencé à l'entrée d'une zone mémoire volatile, 2818845 - la figure 2 représente schématiquement un exemple de réalisation d'un circuit intégré selon l'invention comprenant un circuit de brouillage protégé contre le piratage, - la figure 3 représente un autre exemple de réalisation d'un circuit intégré selon l'invention, et - la figure 4 représente un autre exemple de réalisation d'un circuit intégré selon l'invention. La figure 2 représente schématiquement un circuit intégré selon l'invention, ici un microprocesseur MP2 comprenant une mémoire programme de type ROM ou FLASH et une mémoire de données DTMEM de type RAM connectée à un bus de données DTB. La mémoire volatile DTMEM est connectée au bus de données par l'intermédiaire d'un circuit de brouillage classique JMCT, comprenant une partie codeuse WJM pour l'écriture dans la mémoire et une partie décodeuse RJM pour la lecture de la mémoire. La partie codeuse WJM est active lorsqu'un signal d'écriture WRITE est appliqué à la mémoire et la partie décodeuse RJM est active lorsqu'un signal de lecture READ est appliqué à la mémoire. Le circuit de brouillage JMCT reçoit sur une entrée une clé de brouillage Ks. Optionnellement mais avantageusement, le circuit de brouillage JMCT reçoit également des données supplémentaires de brouillage DTsup prélevées en divers points du microprocesseur. Selon l'invention, la clé de brouillage Ks est délivrée par un générateur de signal aléatoire RGEN dont la sortie est connectée au bus de données. Après chaque démarrage du microprocesseur, lorsqu'un signal de remise à zéro RESET interne ou externe a été appliqué à l'unité CPU et à la mémoire DTMEM, l'unité CPU applique au générateur RGEN un signal LTCH provoquant l'émission, à la sortie du générateur RGEN, d'une nouvelle clé Ks. La nouvelle clé Ks est stockée dans un registre KREG accessible en écriture depuis le bus de données, dont la 6 2818845 sortie est directement reliée au circuit de brouillage JMCT. Ainsi, si un fraudeur prend le contrôle de l'unité CPU au moyen d'un programme frauduleux après remise à zéro du microprocesseur, lit tout le contenu de la mémoire DTMEM et parvient à décoder la clé Ks, cette clé ne sera pas utilisable par la suite. En effet, lorsque le fraudeur relancera une nouvelle session au moyen d'un programme application prévu dans la mémoire PMEM et cherchera à décoder les données stockées dans la mémoire DTMEM par le programme application, la clé Ks ne sera plus la même. La figure 3 représente un mode de réalisation d'un microprocesseur MP3 selon l'invention offrant un degré de sécurité plus élevé. Ici, la sortie du générateur RGEN est reliée directement au circuit de brouillage JMCT, sans passer par le bus de données DTB. Ainsi, la nouvelle clé Ks délivrée à chaque nouvelle session ne circule pas en clair sur le bus de données DTB. Le signal LTCH appliqué au générateur RGEN pour déclencher l'émission d'une nouvelle clé Ks, est de préférence généré de façon hardware par l'unité CPU afin de ne pouvoir être inhibé par une manipulation du système d'exploitation de l'unité CPU. Un circuit hardware spécifique peut également être prévu pour déclencher le circuit RGEN après une remise à zéro du microprocesseur. Dans le mode de réalisation représenté en figure 4, un microprocesseur MP4 selon l'invention comprend en outre une banque de registres RBANK connectée au bus de données DTB. Cette banque de registres est également formée par des cellules mémoire volatiles et est équipée de son propre circuit de brouillage JMCT' agencé entre le bus de données et son entrée/sortie. La clé Ks' appliquée au second circuit de brouillage JMCT' est générée par un second générateur de signal aléatoire RGEN' dont la sortie est reliée ici directement au circuit de brouillage, sans passer par le bus de données. Ainsi, 7 2818845 chaque circuit de brouillage JMCT, JMCT' dispose de sa propre clé secrète Ks, Ks' qui change de valeur à chaque nouvelle session. Il apparaîtra clairement à l'homme de l'art que la présente invention est susceptible de diverses variantes de réalisation. Notamment, en figure 4, un générateur de signal aléatoire commun aux deux circuits de brouillage pourrait être prévu. Par ailleurs, d'autres circuits de brouillage peuvent être prévus en d'autres points du microprocesseur, par exemple entre le bus de données et la mémoire programme PMEM. La présente invention est également susceptible de diverses applications. L'application principale visée ici consiste dans la réalisation d'un microprocesseur sécurisé destiné à être incorporé dans un objet portable tel une carte plastique, pour former une carte à puce ou tout autre objet portatif électronique sécurisé, par exemple une étiquette électronique, un badge électronique de contrôle d'accès, etc.. Toutefois, la présente invention est applicable de façon générale à tout type de circuit intégré sécurisé pourvu d'une zone mémoire volatile susceptible de contenir des données dont la confidentialité doit être préservée. 8 2818845 REVENDICATIONS 1. Circuit intégré (MP2, MP3, MP4) comprenant une zone mémoire volatile (DTMEM, REGBANK) dont le contenu présente une valeur déterminée après une remise à zéro du circuit intégré, la zone mémoire volatile étant connectée à un bus de données (DTB) par l'intermédiaire d'un circuit de brouillage (JMCT, JMCT') assurant le codage des données enregistrées dans la zone mémoire et le décodage des données lues dans la zone mémoire, le codage des données étant au moins fonction d'une clé (Ks, Ks') appliquée au circuit de brouillage, caractérisé en ce que la clé appliquée au circuit de brouillage est une clé aléatoire délivrée par un générateur de signal aléatoire (RGEN, RGEN') agencé pour changer la valeur de la clé au moins à chaque nouvelle remise à zéro du circuit intégré. 2. Circuit intégré selon la revendication 1, dans lequel la clé aléatoire délivrée par le générateur de signal aléatoire est stockée dans un registre (KREG) par l'intermédiaire du bus de données (DTB), la sortie du registre étant appliquée au circuit de brouillage. 3. Circuit intégré selon la revendication 1, dans lequel la sortie du générateur de signal aléatoire est reliée directement au circuit de brouillage, de telle manière que la clé aléatoire est appliquée au circuit de brouillage sans passer par le bus de données. 4. Circuit intégré selon l'une des revendications 1 à 3, dans lequel la zone mémoire volatile est une mémoire RAM (DTMEM). 5. Circuit intégré selon l'une des revendications 1 à 3, dans lequel la zone mémoire volatile est une banque de registres (RBANK). 9 2818845 6. Circuit intégré selon l'une des revendications 4 et 5, comprenant une mémoire RAM (DTMEM), une banque de registres (RBANK), un premier circuit de brouillage (JMCT) agencé entre la mémoire RAM et le bus de données, et un second circuit de brouillage (JMCT') agencé entre la banque de registres et le bus de données. 7. Circuit intégré selon la revendication 6, dans lequel le premier générateur de signal aléatoire a sa sortie reliée directement au premier circuit de brouillage sans passer par le bus de données, et le second générateur de signal aléatoire a sa sortie reliée directement au second circuit de brouillage sans passer par le bus de données. 8. Circuit intégré selon l'une des revendications 1 à 7, comprenant une unité centrale de traitement (CPU) et formant un microprocesseur. 9. Circuit intégré selon l'une des revendications 1 à 8, agencé sur un support potable pour former un carte à puce ou tout autre objet portatif électronique équivalent.