FR 2874105 A1 20060210 FR 0507243 A 20050707 CIRCUIT INTEGRE ET PROCEDE POUR LE FAIRE FONCTIONNER L'invention concerne un circuit intégré et un procédé pour faire fonctionner un circuit de ce genre. Les circuits intégrés pour des applications de sécurité sont souvent la cible d'attaques qui visent à modifier un bit ou plusieurs bits d'information confidentielle. Ces modifications se produisent en conséquence de rayonnements ionisés ou de rayonnements laser qui peuvent être utilisés pour une attaque. Il se produit en outre des erreurs de bit aléatoires également en raison de la radioactivité naturelle ou du rayonnement cosmique secondaire ou tertiaire. Un circuit intégré est constitué essentiellement d'une mémoire principale dans laquelle se trouvent les données, d'une mémoire intermédiaire qui sert à mettre à disposition les données lors du traitement et d'une unité de calcul pour le traitement des données. Les mémoires statiques d'écriture-lecture qui sont dénommées aussi SRAM sont particulièrement sujettes à des erreurs de bit sous l'effet d'un rayonnement. On utilise des mémoires statiques d'écriture- lecture pour mettre à disposition des données en vue de leur traitement au sein d'un circuit intégré. Cette mise à disposition s'effectue au moyen d'un banc de registres, auquel le processeur proprement dit accède. Pour augmenter la puissance de tout le système, les architectures actuelles de processeurs comportent des mémoires tampons désignées aussi par mémoires caches. Les mémoires tampons sont plus petites qu'une mémoire principale et permettent un accès plus rapide que la mémoire principale lente. Ces zones de circuit sensibles au rayonnement peuvent être protégées en matériel par des capteurs de rayonnement. Ces procédés sont coûteux et compliqués compte tenu de la surface à protéger. Une mesure appropriée de technique de programmation pour la détection d'une attaque consiste à calculer plusieurs fois tout l'algorithme ou certaines de ses parties pertinentes. Une inégalité des résultats permet de tirer la conclusion qu'une attaque a eu lieu. Cela prend d'une part beaucoup de temps et d'énergie et donne d'autre part des résultats erronés reproductibles lorsque l'attaque s'effectue pour chaque calcul de la même façon ou d'une façon très semblable. L'invention vise à détecter des modifications par attaque éventuelle de données sensibles qui sont destinées à être utilisées dans la zone de mémoire intermédiaire. L'invention a donc pour objet un circuit intégré caractérisé en ce qu'il comprend une zone de mémoire intermédiaire ayant une première partie constituée pour mémoriser un mot de données en tant qu'original et au moins une deuxième partie constituée pour mémoriser le mot de données en tant que double et une unité de comparaison constituée pour émettre un signal d'alerte lorsque l'original et le au moins un double ne coïncident pas. Le mot de données sous forme d'original et de double ne doit pas se présenter nécessairement sous une forme identique. Bien au contraire, le double peut être engendré aussi par une opération à partir du mot de données. C'est ainsi par exemple qu'on a la possibilité d'engendrer le double par inversion du mot de données ou par une combinaison logique ouexclusif avec une valeur fixe. On peut songer aussi à une rotation du mot de données désignée aussi comme étant un shift. L'unité de comparaison est constituée de façon à contrôler si l'original et le double coïncident, ce qui signifie que l'original et le double sont combinés suivant l'opération utilisée. Le contrôle de coïncidence englobe bien entendu aussi le cas spécial du contrôle d'identité lorsque l'original et le double ont été préparés de la même façon. Si l'on met à disposition plus d'un double, il est aussi possible d'engendrer les doubles par des opérations différentes. Dans un mode de réalisation préféré du circuit intégré, la zone de mémoire intermédiaire est couplée entre une mémoire principale et une unité de calcul. Comme il s'agit d'applications relevant de la sécurité, les mots de données sont présents dans la mémoire principale en étant en règle générale chiffrés. La mémoire principale comprend dans ce cas une unité de cryptographie qui est constituée de façon à déchiffrer le mot de données après le chargement hors de la mémoire principale et à le chiffrer avant la mémorisation dans la mémoire principale. Avantageusement, l'unité de calcul dans laquelle les mots de données sont traités est constituée pour effectuer la comparaison de l'original et du double. Suivant un perfectionnement, l'unité de cryptographie aussi peut être constituée pour effectuer un contrôle de coïncidence. La comparaison peut s'effectuer ainsi juste avant la mise en mémoire d'un mot de données dans la mémoire principale. La zone de mémoire intermédiaire comprend au moins un banc de registres par lequel le mot de données est mis à disposition de l'unité de calcul. La zone de mémoire intermédiaire peut comprendre en outre une mémoire tampon supplémentaire qui est plus grande que le banc de registres et qui permet d'avoir un accès rapide à un plus grand nombre de mots de données mémorisés intermédiairement. La mémoire tampon est couplée à l'unité de calcul par le banc de registres. Un mode de réalisation du circuit intégré comprend un premier tampon qui est monté tout comme un deuxième tampon entre la mémoire tampon et la mémoire principale. Le premier tampon et le deuxième tampon servent d'étage pipe-line pour effectuer le chargement ou la mémorisation dans la mémoire principale. Le premier tampon est constitué de façon à changer le mot de données dans la mémoire tampon. Le deuxième tampon est constitué de manière à charger le mot de données dans la mémoire principale. De préférence, il est prévu un premier tampon constitué de façon à mémoriser intermédiairement le mot de données lors du chargement de la mémoire principale à la zone de mémoire intermédiaire et un deuxième tampon, constitué de manière à mémoriser intermédiairement le mot de données lors du chargement de la zone de mémoire intermédiaire à la mémoire principale, qui sont couplés respectivement entre la zone de mémoire intermédiaire et la mémoire principale. De préférence, le circuit intégré comporte un premier bus de données et un deuxième bus de données qui sont constitués pour transférer un mot de données entre la mémoire principale et la zone de mémoire intermédiaire. Chaque bus constitue une voie. L'original et le double peuvent être chargés sur deux voies différentes dans la zone de mémoire intermédiaire de sorte qu'une attaque concentrée localement n'agit pas de la même façon sur le mot de données qui est chargé par des bus de données différents. Cela permet de constater la manipulation de données. Le deuxième bus de données peut être tel qu'il est couplé directement au banc de registres en contournant la mémoire tampon ou en contournant la mémoire tampon et le premier et le deuxième tampon. Ce mode de réalisation permet un chargement rapide par l'intermédiaire du deuxième bus. Un perfectionnement du circuit intégré a pour la programmation un jeu d'instructions qui comprend une instruction de mémorisation d'un mot de données comme original et au moins un double dans la zone de mémoire intermédiaire. Il est prévu en outre une instruction de chargement dans un mode de fonctionnement sécurisé de façon à charger outre l'original au moins aussi un double dans la zone de mémoire intermédiaire. Il est prévu une autre instruction pour mémoriser intermédiairement dans le mode de fonctionnement sécurisé, de façon à mémoriser outre l'original au moins aussi un double dans la zone de mémoire intermédiaire. Cette instruction est nécessaire pour mémoriser les résultats intermédiaires de mots de données calculés ou modifiés dans l'unité de calcul également dans le mode de fonctionnement sécurisé. Une autre instruction comporte la mémorisation dans la mémoire principale dans le mode de fonctionnement sécurisé de manière à ce qu'une comparaison de l'original et du au moins un double ait lieu avant la mémorisation. L'invention vise également un procédé pour faire fonctionner un circuit intégré, caractérisé en ce que dans un mode de fonctionnement sécurisé, on met à disposition un mot de données tant une fois comme original en un emplacement d'une zone de mémoire intermédiaire, qu'aussi au moins une fois en tant que double en un autre emplacement de la zone de mémoire intermédiaire, on compare l'original et le au moins un double et l'on modifie le déroulement du fonctionnement du circuit si l'original et le au moins un double ne coïncident pas. Dans ce cas aussi, coïncidence ne signifie pas nécessairement identité, puisque le double peut être engendré aussi par une opération à partir du mot de données et n'a pas à être identique à l'original. Lors de la comparaison, on contrôle si original et double sont liés entre eux d'une manière définie. Dans le cas le plus simple, l'original et le double sont identiques. Le procédé suivant l'invention a l'avantage qu'en mettant à disposition deux modes de fonctionnement, on peut limiter le coût supplémentaire pour sécuriser les données aux données sensibles. On limite ainsi le coût en temps et en matériel par le chargement multiple et la mémorisation multiple. Pour détecter une attaque limitée dans le temps et dans l'espace, on charge le mot de données et le double l'un après l'autre à partir de la mémoire principale. De préférence, on charge l'original par un premier bus de données et le double par un deuxième bus de données. La séparation dans le temps et dans l'espace du chargement de l'original et du double peut ne comprendre aussi qu'une partie de la voie allant de la mémoire principale à la mémoire intermédiaire. Il est ainsi possible que le deuxième bus de données mette à disposition une voie alternative entre le premier tampon et le banc de registres ou une voie alternative entre l'unité de cryptographie et le banc de registres. Il est aussi possible que le mot de données soit chargé dans le premier tampon et qu'ensuite il soit chargé plusieurs fois comme original et comme double dans la zone de mémoire intermédiaire. De préférence, pour le traitement du mot de données, on peut commuter entre le mode de fonctionnement sécurisé et un mode de fonctionnement régulier dans lequel le mot de données est mis en disposition en un emplacement de la zone de mémoire intermédiaire. De préférence, on charge le mot de données dans une partie du circuit intégré constituée en mémorisation intermédiaire et couplée entre le banc de registres et la mémoire principale et de là on charge l'original et le au moins un double pour la mise à disposition. De préférence, on charge l'original et le au moins un double pour la comparaison dans un banc (RF) de registre. De préférence, dans le mode de fonctionnement sécurisé on contrôle juste avant et/ou après l'utilisation du mot de données dans l'unité de calcul si l'original et le au moins un double coïncident. Avantageusement, la comparaison a lieu juste avant ou après l'utilisation du mot de données dans l'unité de calcul pour exclure une manipulation lors de l'utilisation proprement dite du mot de données sensible. Un procédé simple pour le contrôle d'identité est une opération ouexclusif de l'original et du double. L'invention sera explicitée dans ce qui suit au moyen d'un exemple de réalisation en se reportant dans lequel: la figure 1 est un schéma fonctionnel d'un circuit intégré. Le circuit intégré comprend une mémoire XM principale qui comporte une unité MED de cryptographie. Le circuit intégré comprend en outre un premier tampon FB, un deuxième tampon WWB et une zone ZS de mémoire intermédiaire qui comprend une mémoire d'essai tampon et un banc RF de registre ainsi qu'une unité ALU de calcul. L'unité MED de cryptographie est couplée par une voie S1 de bus qui se subdivise en deux voies S3 et S5 de bus au premier tampon FB et au deuxième tampon WBB. Le premier tampon FB et le deuxième tampon WBB sont couplés à la mémoire d'essai tampon par l'intermédiaire de deux voies S6 et S7 de bus qui se réunissent en une voie S2 de bus. La mémoire d'essai tampon est reliée par la voie S7 de bus au banc RF de registre qui pour sa part est couplé par une voie S8 de bus à l'unité ALU de calcul. La zone ZS de mémoire intermédiaire comprend la mémoire d'essai tampon et le banc RF de registre. Toutes les voies de bus décrites sont désignées comme étant le premier bus par lequel le transfert de données se déroule d'une manière régulière. 2874105 8 Un deuxième bus de données comprend à la figure 1 par exemple la liaison S9 qui s'étend entre le banc RF de registre et le point de bifurcation de la liaison entre l'unité MED de cryptographie et le premier et le deuxième tampons FB et WBB. Une variante du deuxième bus de données comprend la liaison S10 qui s'étend entre le point de bifurcation entre le premier et le deuxième tampons FB et WBB et la mémoire d'essai tampon et le banc RF de registre. Le circuit intégré peut, comme cela est représenté à la figure 1, être constitué aussi de plus de deux bus. En fonctionnement, un mot de données est chargé de la mémoire XM principale au banc RF de registre dans lequel l'unité ALU de calcul peut accéder pour le traitement directement à des mots de données; Les mots de données se trouvent à l'état chiffré dans la mémoire XL principale et sont déchiffrés par l'unité MED de cryptographie avant d'être chargés par l'intermédiaire du premier ou du deuxième bus de données. Dans un mode de fonctionnement de manière régulière, le mot de données est chargé dans la zone ZS de mémoire intermédiaire par l'intermédiaire d'un premier bus de données. Suivant la figure 1, l'opération de charge s'effectue par les voies S1 et S3 de bus de l'unité MED de cryptographie de la mémoire XM principale au premier tampon FB. Le premier tampon FB sert d'étage pipe-line pour charger le mot de données dans la mémoire d'essai tampon par l'intermédiaire des voies S4 et S2 de bus. De là, un mot de données est mis à disposition pour le traitement par l'intermédiaire de la voie S7 de bus d'un banc RF de registre auquel l'unité ALU de calcul accède par la voie S8 de bus. Pour le traitement, l'unité ALU de calcul lit des mots de données en tant que valeurs d'entrée pour une opération à effectuer dans le banc RF de registre et réécrit les résultats de l'opération dans le banc RF de registre. Pour la mémorisation intermédiaire jusqu'au traitement supplémentaire ou jusqu'à la mémorisation dans la mémoire XM principale, le mot de données est chargé du banc RF de registre dans la mémoire d'essai tampon par l'intermédiaire de la voie S7 de bus. Pour la mémorisation dans la mémoire XM principale, le mot de données est chargé par les voies S2 et S6 de bus dans un deuxième tampon WBB et de là est chargé par les voies S5 et S1 de données dans l'unité MED de cryptographie de la mémoire XM principale, unité dans laquelle il est chiffré avant une mémorisation. Dans un mode de fonctionnement sécurisé, le mot de données se trouve plusieurs fois dans la zone ZS de mémoire intermédiaire. Le mot de données est mis à disposition comme original et au moins un double est mis à disposition dans diverses parties de la zone ZS de mémoire intermédiaire pour détecter au moyen des différences une attaque ayant eu lieu éventuellement. On énonce dans ce qui suit les différences entre le mode de fonctionnement sécurisé et le mode de fonctionnement d'une manière régulière. L'opération de chargement dans le mode de fonctionnement sécurisé se distingue de l'opération de chargement dans le mode de fonctionnement d'une façon régulière en le fait que le mot de données est chargé plusieurs fois et est mémorisé une fois en tant qu'original et au moins une fois en tant que double dans la zone ZS de mémoire intermédiaire. Les opérations de chargement s'effectuent avantageusement les unes après les autres pour détecter des attaques qui varient dans le temps. En outre, suivant la figure 1, au moins un double est chargé par un deuxième bus de données dans la zone ZS de mémoire intermédiaire. Des attaques limitées localement agissent ainsi de façon différente sur l'original et sur le au moins un double. Suivant la figure 1, le double peut être chargé le long des voies S1 et S9 de bus par le deuxième bus directement dans le banc de registres. En variante, il peut être chargé aussi par l'intermédiaire des voies S1 et S3 de bus dans le premier tampon FB et par les autres voies S4 et S10 de bus en contournant la mémoire d'essai tampon dans le banc de registres. Pour un circuit ayant plus de deux bus, il peut être associé à chaque double un bus ou le bus peut être associé à un double suivant le principe aléatoire. Il est aussi possible de mémoriser l'original jusqu'à utilisation d'abord dans une mémoire d'essai tampon et de charger le double par la même voie dans la mémoire d'essai tampon et immédiatement après dans le banc RF de registre dans lequel il est mis à disposition jusqu'à la comparaison. Il est aussi possible de mémoriser l'original et le double dans des parties différentes de la mémoire d'essai tampon. L'original et le double n'ont pas à être mémorisés de façon identique, mais ils peuvent être transposables l'un dans l'autre par une opération. Avant l'utilisation proprement dite du mot de données dans l'unité ALU de calcul, on compare l'original et le double. On a à cet effet la possibilité de charger l'original et le double dans le banc RF de registre pour autant que cela n'ait pas encore eu lieu. La comparaison est effectuée par l'unité ALU de calcul. Lorsque l'original et le double ont été enregistrés de façon identique, une possibilité de contrôler l'identité de deux mots de données consiste à la combinaison de ceux-ci par une fonction ou-exclusif. Une autre possibilité consiste en la fonction de soustraction. On a la possibilité d'effectuer la comparaison juste avant utilisation du mot de données dans l'unité ALU de calcul ou ensuite pour s'assurer que le mot de données est bien correct pendant utilisation. Dans le cas où l'original et le double ne sont pas identiques ou ne se combinent pas entre eux de la façon à laquelle on s'attend, le mode de fonctionnement du circuit se modifie. Cette modification est constituée dans le cas le plus simple qu'il est émis un signal d'alerte qui indique l'attaque éventuelle. La réaction du circuit à ce signal d'alerte peut être du reste d'effectuer des programmes divers, par exemple une remise à l'état initial du circuit pour qu'il passe dans un état initial défini, ce qui est désigné aussi comme étant un reset ou de faire en sorte que le circuit passe en sous-fonctionnement. Bien entendu, le procédé ne se limite pas dans le mode de fonctionnement sécurisé à la mise à disposition de seulement un double mais on peut mettre aussi à disposition plusieurs doubles. Lorsqu'on utilise plus d'un double, on peut effectuer aussi comme réaction au signal d'alerte une décision de multiplicité de l'original présent et des doubles présents pour déterminer un mot de données vraisemblable. La mémorisation intermédiaire de mots de données qui ont été engendrés ou modifiés par l'unité ALU de calcul s'effectue aussi de la même façon que le chargement dans le mode de fonctionnement sécurisé. La répartition de l'original et du double peut s'effectuer comme décrit précédemment entre la mémoire d'essai tampon et le banc RF de registre. La mémorisation de mots de données dans le mode de fonctionnement sécurisé dans la mémoire XM principale s'effectue en soumettant le mot de données avant la mémorisation à une comparaison de l'original et du double. On peut effectuer cette comparaison tant que l'original et le double sont encore présents dans la zone ZS de mémoire intermédiaire ou l'original et le double sont chargés dans le deuxième tampon WBB ou dans l'unité MED de cryptographie et la comparaison est alors effectuée. La comparaison peut s'effectuer tant par l'unité ALU de calcul que par l'unité MED de cryptographie qui à cette fin doit être agrandie du point de vue du matériel en conséquence. ENUMERATION DES REFERENCES: XM mémoire principale MED unité cryptographique FB premier tampon WBB deuxième tampon ZS zone de mémoire intermédiaire DC mémoire tampon RF banc de registres ALU unité de calcul S1 à S10 voies de bus REVENDICATIONS 1. Circuit intégré caractérisé en ce qu'il comprend: une zone (ZS) de mémoire intermédiaire ayant une première partie constituée pour mémoriser un mot de données en tant qu'original et au moins une deuxième partie constituée pour mémoriser le mot de données en tant que double et une unité de comparaison constituée pour émettre un signal d'alerte lorsque l'original et le au moins un double ne coïncident pas. 2. Circuit intégré suivant la revendication 1, caractérisé en ce que la zone (ZS) de mémoire intermédiaire est couplée entre une mémoire (XM) principale et une unité (ALU) de calcul. 3. Circuit intégré suivant la revendication 1, caractérisé en ce que le mot de données se présente de façon chiffrée dans la mémoire (XM) principale et la mémoire (XM) principale comprend une unité (MED) de cryptographie qui est constituée de façon à déchiffrer le mot de données après le chargement hors de la mémoire (XM) principale et à le chiffrer avant la mémorisation dans la mémoire (XM) principale. 4. Circuit intégré suivant l'une des revendications 2 ou 3, caractérisé en ce que l'unité (ALU) de calcul et/ou l'unité (MED) de cryptographie sont constituées en unités de comparaison. 5. Circuit intégré suivant la revendication 1, caractérisé en ce que la zone (ZS) de mémoire intermédiaire comprend un banc (RF) de registre. 6. Circuit intégré suivant l'une des revendications 1 à 5, caractérisé en ce que la zone (ZS) de mémoire intermédiaire comprend une mémoire (DC) tampon qui est couplée à l'unité (ALU) de calcul par le banc (RF) de registre. 7. Circuit intégré suivant l'une des revendications 1 à 6, caractérisé en ce qu'il est prévu un premier tampon (FB), constitué de façon à mémoriser intermédiairement le mot de données lors du chargement de la mémoire (XM) principale à la zone (ZS) de mémoire intermédiaire et un deuxième tampon (WBB), constitué de manière à mémoriser intermédiairement le mot de données lors du chargement de la zone (ZS) de mémoire intermédiaire à la mémoire (XM) principale, qui sont couplés respectivement entre la zone (ZS) de mémoire intermédiaire et la mémoire (XM) principale. 8. Circuit intégré suivant l'une des revendications 1 à 7, caractérisé en ce qu'il est constitué une première voie et une deuxième voie entre la mémoire (XM) principale et la zone (ZS) de mémoire intermédiaire de façon à pouvoir transférer le mot de données. 9. Circuit intégré suivant la revendication 8, caractérisé en ce que la première voie est constituée de façon à coupler la mémoire principale au banc de registres par l'intermédiaire de la mémoire tampon et la deuxième voie est constituée de façon à contourner la mémoire d'essai tampon (DC) ou la mémoire d'essai tampon (DC) et le premier et le deuxième tampon (WBB, FB). 10. Circuit intégré suivant l'une des revendications 1 à 9, caractérisé en ce que son jeu d'instructions prévoit une instruction de chargement d'un mode de fonctionnement sécurisé dans lequel il est chargé outre l'original également au moins un double dans la zone de mémoire intermédiaire. 11. Circuit intégré suivant l'une des revendications 1 à 10, caractérisé en ce que son jeu d'instructions prévoit une instruction de mémorisation intermédiaire dans un mode de fonctionnement sécurisé de façon à mémoriser outre l'original également au moins un double dans la zone de mémoire intermédiaire. 12. Circuit intégré suivant l'une des revendications 1 à 11, caractérisé en ce que son jeu d'instructions prévoit une instruction de mémorisation dans la mémoire (XM) principale dans un mode de fonctionnement sécurisé de façon à effectuer avant la mémorisation du mot de données une comparaison de l'original et du au moins un double. 13. Procédé pour faire fonctionner un circuit intégré, caractérisé en ce que dans un mode de fonctionnement sécurisé on met à disposition un mot de données tant une fois comme original en un emplacement d'une zone (ZS) de mémoire intermédiaire - qu'aussi au moins une fois en tant que double en un autre emplacement de la zone (ZS) de mémoire intermédiaire on compare l'original et le au moins un double et l'on modifie le déroulement du fonctionnement du circuit si l'original et le au moins un double ne coïncident pas. 14. Procédé suivant la revendication 13, caractérisé en ce que l'original mis à disposition et le double mis à disposition sont identiques. 15. Procédé suivant la revendication 13 ou 14, caractérisé en ce que, pour le traitement du mot de données, on peut commuter entre le mode de fonctionnement sécurisé et un mode de fonctionnement régulier dans lequel le mot de données est mis en disposition en un emplacement de la zone (ZS) de mémoire intermédiaire. 16. Procédé suivant l'une des revendications 13 à 15, caractérisé en ce que l'on charge hors de la mémoire (XM) principale l'original et le au moins un double avant la mise à disposition. 17. Procédé suivant la revendication 16, caractérisé en ce que l'on charge le mot de données dans une partie du circuit intégré constituée en mémorisation intermédiaire et couplée entre le banc (RF) de registre et la mémoire (XM) principale et de là on charge l'original et le au moins un double pour la mise à disposition. 18. Procédé suivant la revendication 16 ou 17, caractérisé en ce que l'on effectue la charge de l'original et la au moins une charge du double l'une après l'autre. 19. Procédé suivant l'une des revendications 16 à 18, caractérisé en ce que l'on effectue la charge de l'original par une première voie et la charge du au moins un double par une deuxième voie. 20. Procédé suivant l'une des revendications 13 à 19, caractérisé en ce que l'on charge l'original et le au moins un double pour la comparaison dans un banc (RF) de registre. 21. Procédé suivant l'une des revendications 13 à 20, caractérisé en ce que dans le mode de fonctionnement sécurisé, on contrôle juste avant et/ou après l'utilisation du mot de données dans l'unité (ALU) de calcul si l'original et le au moins un double coïncident. 22. Procédé suivant la revendication 14, caractérisé en ce que l'on effectue la comparaison de l'original et du au moins un double par une opération ou- exclusif.