FR 2862150 A1 20050513 FR 0313228 A 20031112 Circuit intégré à bus de données protégé par brouillage La présente invention concerne un circuit intégré à bus de données protégé par brouillage. Le domaine de l'invention est celui des circuits intégrés programmables, 5 notamment celui des circuits utilisés pour réaliser des transactions confidentielles. Actuellement, plusieurs types d'attaques permettent l'identification des données circulant sur les bus de données. Premièrement, le bus peut être observé directement par une sonde de contact posée sur ce bus afin de lire son contenu. Cependant, avec les réductions de tailles résultant des nouvelles technologies, il devient très difficile de poser avec précision la sonde de mesure à l'endroit souhaité. Deuxièmement, des analyses de type SPA , pour le terme anglais Single Power Analysis qui signifie analyse de la seule puissance, ou DPA, pour le terme anglais Differential Electromagnetic Analysis qui signifie analyse électromagnétique différentielle, consistent, par observation de la consommation en puissance électrique du circuit, à en déduire la valeur des données circulant sur le bus. Pour ce faire, il suffit d'ajouter une résistance en série sur l'alimentation du circuit, puis de mesurer directement le courant consommé. Troisièmement, l'analyse de type DEMA , pour le terme anglais Differential Electromagnetic Analysis qui signifie analyse électromagnétique différentielle, consiste à positionner une sonde électromagnétique sans contact au-dessus du composant et à mesurer le rayonnement électromagnétique provenant de la consommation des transistors et du courant passant dans le bus. Un bon positionnement au- dessus du bus permet d'observer les données circulant dans ce dernier. Cette situation va à l'encontre des intérêts de l'utilisateur. L'invention se propose d'améliorer cette situation en renforçant la 30 protection des informations confidentielles circulant sur le bus de données du circuit intégré. Selon l'invention, un circuit intégré comporte une pluralité de blocs reliés par un bus, ce bus étant apte à acheminer des données brouillées; de plus, chacun de ces blocs comporte un moyen de brouillage pour produire, à partir d'une donnée en clair, une donnée brouillée et pour injecter cette donnée brouillée sur ce bus. Cette protection renforcée, pouvant s'ajouter à d'éventuelles protections physiques, consiste à brouiller les données circulant sur le bus, et à les rendre par conséquent inutilisables même si elles sont extraites du circuit par l'une des méthodes précédentes. Avantageusement, un des blocs au moins comporte un moyen de débrouillage complémentaire des moyens de brouillage. Préférentiellement, le moyen de brouillage est un moyen de cryptage et le moyen de débrouillage est un moyen de décryptage. Selon un mode de réalisation privilégié, le moyen de cryptage comporte: d'une part un opérateur réalisant une fonction OU exclusif, recevant en entrée la donnée et la clef pour produire une donnée cryptée, et d'autre part un registre à décalage générant cette clef. De même, le moyen de décryptage comporte: d'une part un opérateur réalisant une fonction OU exclusif, recevant en entrée la donnée cryptée et d'autre la clef pour produire une donnée décryptée, et d'autre part un registre à décalage générant cette clef. En outre, la clef est issue d'un générateur de nombre aléatoire. Suivant une caractéristique additionnelle de l'invention, la clef est distribuée par une liaison série à tous les blocs du circuit intégré. Avantageusement, cette liaison série est enfouie dans le circuit, ceci à des fins de protection. De préférence, la clef provient d'un générateur aléatoire analogique. Eventuellement, la clef est recombinée à l'aide d'un algorithme unique au sein de chaque bloc. Par exemple, cet algorithme est du type registre à décalage à rétroaction linéaire. Avantageusement, un contrôleur de signal d'horloge comportant une porte logique ET est intercalé entre l'horloge et le registre à décalage, cette porte ET recevant en entrée le signal d'horloge et un signal d'activité du bus et ayant sa sortie raccordée à l'entrée d'horloge de ce registre. De manière préférentielle, le générateur de nombre aléatoire englobe un combinateur fournissant un signal aléatoire à partir de deux signaux émis chacun 35 par un oscillateur en anneau. La présente invention apparaîtra maintenant avec plus de détails dans le cadre de la description qui suit d'exemples de réalisations données à titre illustratif en se référant aux figures annexées, qui représentent: la figure 1, un synoptique général du circuit intégré, la figure 2, une porte OU exclusif utilisée en cryptage, la figure 3, une porte OU exclusif utilisée en décryptage, la figure 4, un moyen de génération d'une première clef de cryptage, la figure 5, un moyen de génération d'une seconde clef de cryptage, et la figure 6, une interface dynamique de cryptage. Les éléments présents dans plusieurs figures sont affectés d'une seule et même référence. La figure 1 représente un circuit intégré CI conforme à l'invention. Il est muni d'un bus de données BD. Ce bus de données BD est relié à différents blocs, tels une unité centrale de calcul CPU, une mémoire à accès aléatoire RAM, une mémoire à lecture seule ROM. L'unité centrale de calcul CPU comporte au moins un registre REGCPU reliés au bus de données BD via une interface de cryptage dynamique DEICPU en sortie et via une interface de décryptage dynamique DDICPU en entrée. Ce type de bloc assure à la fois des opérations de lecture et d'écriture. La mémoire RAM comporte une mémoire de lecture et d'écriture MEMRAM reliée au bus de données BD de façon analogue via les interfaces de cryptage DEIRAM et de décryptage DDIRAM. Ce type de bloc assure également à la fois des opérations de lecture et d'écriture. La mémoire ROM comporte une mémoire de lecture seule MEMROM reliée au bus de données BD exclusivement en sortie via une interface de cryptage DEIROM. Ce type de bloc est en effet destiné à des opérations de lecture seule, sans écriture. De plus, le circuit intégré CI est muni d'une liaison série LS qui reçoit un nombre aléatoire provenant d'un générateur de nombre aléatoire RNG et qui l'achemine vers l'ensemble des interfaces de cryptage et décryptage DEICPU, DDICPU, DEIRAM, DDIRAM, DEIROM. Ce nombre aléatoire constitue une première clef de cryptage KEY1, qui est également utilisée pour le décryptage. Avantageusement, le générateur de nombre aléatoire RNG est de type analogique. C'est un module présent dans le circuit Cl et ayant pour rôle d'envoyer des nombres aléatoires vers les blocs logiques du circuit Cl. II est donc implanté dans la même zone de circuit, avec le reste de la logique. Le générateur de nombre aléatoire RNG est avantageusement relié à une horloge CLK afin d'assurer la réévaluation de la première clef KEY1 à chaque coup d'horloge CLK. Les figures suivantes référencées 2 à 6 présentent de façon détaillée les 5 opérations de cryptage et de décryptage. La figure 2 représente une opération de cryptage de données à l'aide d'une porte OU exclusif XOR, laquelle se trouve intégrée à l'intérieur des diverses interfaces de cryptage DEI, DEICPU, DEIRAM, DEIROM. Cette porte XOR permet de mixer une donnée DAT avec la clef KEY1 pour fournir une donnée cryptée CRP. De même, la figure 3 représente une opération de décryptage de données à l'aide également d'une porte OU exclusif XOR, laquelle se trouve intégrée à l'intérieur des interfaces de décryptage DDI, DDICPU, DDIRAM. Cette porte permet de mixer la donnée cryptée CRP avec la clef KEY1 et de fournir une donnée décryptée DAT. On s'aperçoit que les deux opérations ci-dessus sont réalisées à l'aide du même opérateur OU exclusif. La table de vérité de l'opérateur OU exclusif symbolisé par # se présente ainsi: S=e1 #e2 el e2 s 0 0 0 0 1 1 1 0 1 1 1 0 Soit el, e2 et s trois variables booléennes, la connaissance de s et de l'une des deux variables el ou e2 permet de retrouver l'autre. En effet: et =s#e2 Et e2=s#e1 Donc, dans notre cas: (donnée cryptée) = clef # donnée, et donnée = clef # (donnée cryptée) L'exemple de cryptage suivant est donné à titre indicatif. Clef = 01010101 11111111 # 01010101 = 10101010 (donnée cryptée) 2862150 5 L'exemple de décryptage suivant est donné à titre indicatif. 10101010 # 01010101 = 11111111 (donnée décryptée) La figure 4 représente le caractère dynamique de la première clef KEY1 et de sa distribution. Via la liaison série LS, la première clef KEY1 est envoyée en même temps à tous les blocs du circuit Cl qui devront lire ou écrire des données sur le bus BD, de manière à ce qu'ils puissent crypter/décrypter les données. Cette première clef KEY1, étant issue d'un générateur de nombre aléatoire RNG, est donc imprévisible. Il n'existe aucune suite mathématique qui permettrait sa modélisation. De plus, elle est en évolution constante car le nombre aléatoire issu du générateur de nombre aléatoire RNG est réévalué à chaque coup d'horloge CLK du système. Le signal ALEA, généré par un bloc analogique qui fournit un signal totalement aléatoire, est complètement décorrélé de l'horloge système CLK. Une bascule permet son envoi vers la liaison série LS à chaque impulsion d'horloge CLK, par transfert de la valeur D sur Q, produisant ainsi la première clef KEY1. La première clef KEY1 est envoyée en série à tous les blocs du circuit Cl qui doivent l'utiliser, à savoir l'unité centrale CPU, la mémoire de lecture et écriture RAM et la mémoire de lecture seule ROM. Une solution pour obtenir le signal ALEA consiste à utiliser deux oscillateurs en anneaux, chaque oscillateur consistant pour mémoire en une série d'inverseurs montés en boucle. La fréquence de chacun de ces oscillateurs est liée aux caractéristiques et dimensions des inverseurs le composant. Les inverseurs sont dimensionnés afin d'être largement dépendants du process de fabrication. Dans le cas présent, les transistors implantés sur le silicium ont un rapport largeur/longueur très faible. De ce fait les fréquences des deux oscillateurs sont aléatoires et décorrélées. Il suffira de combiner d'une quelconque manière ces fréquences au sein d'un combinateur CMB pour obtenir un signal aléatoire ALEA. Ce générateur est implanté dans la partie analogique du circuit. La figure 5 présente un registre à décalage utilisé dans les différents blocs unité centrale de calcul CPU, mémoire à lecture/écriture RAM et mémoire à lecture seule ROM pour assurer le chargement série de la première clef KEY1. La première clef KEY1 est donc envoyée en série à tous les blocs du circuit qui doivent l'utiliser. Les registres utilisés dans ces différents blocs sont des registres à décalage qui permettent le chargement série de la première clef KEY1. L'utilisation d'un transfert série présente un double avantage. En premier lieu, il permet d'optimiser le routage, car un chargement parallèle (de 32 bits) vers les différents blocs du circuit engendrerait une perte de surface considérable. En second lieu, il permet de réduire le risque d'interception de la première clef par une attaque extérieure (sondage des bus...) car la connectique distribuant la clef entre le bloc de génération de nombre aléatoire et les différents sous blocs du circuit est noyée dans la partie logique du circuit. Dans ce but, toute la partie logique du circuit est concentrée sur une unique zone dans laquelle il est beaucoup plus difficile de repérer un fil unique connecté à différents blocs qu'un bus de 32 bits où habituellement les fils sont positionnés en parallèle les uns à côté des autres. L'invention propose d'augmenter encore la sécurité du circuit par la mise en oeuvre préférentielle d'une dernière barrière sécuritaire. II s'agit de recombiner la première clef KEY1 grâce à un algorithme de type RDLR (registre à décalage à rétroaction linéaire). Cet algorithme est implanté dans tous les blocs du circuit qui doivent accéder au bus de données BD et permet de construire une seconde clef KEY2 différente de la première clef KEY1 délivrée par le générateur de nombre aléatoire RNG aux différents blocs. Donc, même en ayant connaissance de la première clef KEY1, il ne sera pas possible de connaître la deuxième clef KEY2 utilisée ici pour le cryptage et le décryptage. La deuxième clef KEY2 est produite dans tous les blocs utilisant le cryptage dynamique du bus de données BD. Chacun de ces blocs possède non plus un simple registre à décalage, mais un registre à décalage à rétroaction linéaire RDLR, pour construire la deuxième clef KEY2 par l'intermédiaire de la rétroaction linéaire de ce registre RDLR. Le même algorithme étant présent dans tous les blocs, c'est donc la même deuxième clef KEY2 qui sera générée. Le registre à décalage à rétroaction RDLR représenté sur la figure 5 se compose de deux parties: un registre à décalage et une fonction de rétroaction. Ce registre mémorise une suite de bits. Chaque fois qu'un nouveau bit apparaît, tous les bits du registre à décalage RDLR se trouvent décalés vers la droite d'une position. Le nouveau bit le plus à gauche est calculé en fonction des autres bits du registre et du bit fourni par la liaison série LS. Pour un registre à décalage à rétroaction linéaire RDLR, la fonction de rétroaction est simplement la combinaison de certains des bits du registre. La liste de ces bits s'appelle une séquence de dérivation ou parfois une combinaison de Fibonacci. La figure 6 représente de façon globale un montage associant une interface de cryptage DEICPU, DEIRAM, et une interface de décryptage 5 DDICPU, DDIRAM, DDIROM. Dans le cas du cryptage, l'interface utilise à la fois un registre à décalage à rétroaction linéaire RDLR recevant de la liaison série LS la première clef KEY1, et une première porte OU exclusif d'encryptage XORE. Cette porte XORE reçoit en entrée la deuxième clef KEY2 provenant du registre RDLR ainsi que des données provenant soit du registre REGCPU, soit de la mémoire MEMROM soit de la mémoire MEMRAM selon le cas, et envoie en sortie sur le bus BD une donnée cryptée. Dans le cas du décryptage, l'interface utilise à la fois le même registre à décalage à rétroaction linéaire RDLR, et une deuxième porte OU exclusif de décryptage XORD. Cette porte XORD reçoit en entrée la deuxième clef KEY2 provenant du registre RDLR ainsi que des données provenant du bus de données BD. Selon le cas, l'interface envoie en sortie, soit sur le registre REGCPU, soit sur la mémoire de lecture/écriture MEMRAM des données décryptées. Dans le cas du bloc à lecture seule, la figure 6 se simplifie et il n'y a plus de deuxième porte XORD, l'interface de décryptage n'existant pas car la mémoire correspondante ROM ne peut être que lue. La figure 1 présente également la liaison LS chargée de véhiculer la première clef KEY1 vers les différents blocs. Pour garantir que la première clef KEY1 soit identique à l'émission d'une donnée cryptée CRP et à la réception en vue de son décryptage, on la fige, c'est-à-dire que l'on arrête la rotation des registres à décalage dans chaque bloc, lorsque le bus de données BD est actif. Pour ce faire, on désactive l'entrée horloge de ces registres. Ainsi, un détecteur BAD d'activité du bus BD produit un signal d'inactivité qui vaut 1 lorsque le bus BD est inactif. Un contrôleur de signal d'horloge CSS, à titre d'exemple, comporte une porte logique ET recevant en entrée l'horloge système CLK et le signal d'inactivité, porte dont la sortie est raccordée à l'entrée d'horloge du registre à décalage à rétroaction linéaire RDLR. En cas d'activité du bus de données BD, le signal d'inactivité vaut 0, si bien que ce registre est figé. L'invention présente des moyens particuliers de cryptage et décryptage mais n'exclut nullement d'autres types de réalisation mettant en oeuvre différents procédés de brouillage. Les exemples de réalisation de l'invention présentés ci-dessus ont été choisis eu égard au caractère concret qu'ils ont en commun. II ne serait cependant pas possible de répertorier de manière exhaustive tous les modes de réalisation que recouvre cette invention. En particulier, tout moyen décrit peut être remplacé par un moyen équivalent sans sortir du cadre de la présente invention. REVENDICATIONS 1) Circuit intégré CI comportant une pluralité de blocs CPU, RAM, ROM reliés par un bus BD, ledit bus étant apte à acheminer des données brouillées, caractérisé en ce que chacun desdits blocs comporte un moyen de brouillage DEICPU, DEIRAM, DEIROM pour produire, à partir d'une donnée DAT en clair, une donnée brouillée CRP et pour injecter cette donnée brouillée sur ce bus. Circuit selon la revendication 1, caractérisé en ce qu'un desdits blocs CPU, RAM, ROM au moins comporte un moyen de débrouillage DDICPU, DDIRAM complémentaire dudit moyen de brouillage DEICPU, DEIRAM. Circuit selon la revendication 1, caractérisé en ce que ledit moyen de brouillage est un moyen de cryptage DEICPU, DEIRAM, DEIROM, ladite donnée brouillée étant ainsi une donnée cryptée CRP. 4) Circuit selon la revendication 2, caractérisé en ce que ledit moyen de débrouillage est un moyen de décryptage DDICPU, DDIRAM, ladite donnée brouillée étant ainsi une donnée cryptée CRP. 5) Circuit selon la revendication 3, caractérisé en ce que ledit moyen de cryptage DEICPU, DEIRAM, DEIROM comporte: - un opérateur XORE réalisant une fonction OU exclusif, recevant en entrée ladite donnée DAT et une clef KEY1, KEY2 pour produire en sortie ladite donnée cryptée CRP, et - un registre à décalage RDLR générant ladite clef. 6) Circuit selon la revendication 4, caractérisé en ce que ledit moyen de décryptage DDICPU, DDIRAM comporte: un opérateur XORD réalisant une fonction OU exclusif, recevant en entrée ladite donnée cryptée CRP et une clef KEY1, KEY2 pour produire en sortie une donnée décryptée DAT, et un registre à décalage RDLR générant ladite clef. 2862150 10 7) Circuit selon l'une quelconque des revendications 5 ou 6, caractérisé en ce que ladite clef KEY1 est issue d'un générateur de nombre aléatoire RNG. Circuit selon la revendication 7, caractérisé en ce que ladite clef KEY1 est distribuée par une liaison série LS à tous lesdits blocs CPU, RAM, ROM. 9) Circuit selon la revendication 8, caractérisé en ce que ladite liaison série LS est enfouie dans le circuit à des fins de protection. 10) Circuit selon l'une quelconque des revendications 7 ou 8, caractérisé en ce que ladite clef KEY1 provient d'un générateur aléatoire analogique 15 RNG. 11) Circuit selon la revendication 6, caractérisé en ce que ladite clef KEY2 est recombinée à l'aide d'un algorithme unique au sein de chaque bloc CPU, RAM, ROM. 12) Circuit selon la revendication 11, caractérisé en ce que ledit algorithme est un registre à décalage à rétroaction linéaire RDLR. 13) Circuit selon la revendication 12, caractérisé en ce qu'il comporte un contrôleur de signal d'horloge CSS, intercalé entre l'horloge et le registre à décalage et réalisant une fonction logique ET entre une horloge CLK et un signal d'inactivité IN dudit bus de données BD pour appliquer le résultat à l'entrée d'horloge dudit registre à décalage à rétroaction linéaire RDLR. 14) Circuit selon la revendication 7, caractérisé en ce que ledit générateur de nombre aléatoire RNG englobe un combinateur CMB fournissant un signal aléatoire ALEA à partir de deux signaux A et B émis par deux oscillateurs en anneaux.