Brevet FR2989504A1 — publié le 20131018

B11590FR - 11-R0-1056FR01 1 REGISTRE PROTÉGÉ CONTRE DES ATTAQUES PAR INJECTION DE FAUTES Domaine de l'invention La présente invention concerne un procédé et un circuit pour détecter une attaque par injection de fautes, et en particulier un procédé et un circuit pour détecter une attaque 5 par injection de fautes concernant au moins un registre. Exposé de l'art antérieur Les circuits intégrés peuvent comprendre une circuiterie qui est considérée comme sensible au vu de la sécurité des données qu'elle manipule, comme des clés d'authentification, des 10 signatures, etc., ou dans les algorithmes qu'elle utilise, conne des algorithmes de chiffrement ou de déchiffrement. On souhaite que de telles informations restent secrètes, ce qui signifie qu'elles ne devraient pas être communiquées à des tiers ou des circuits non autorisés, ni être détectables par ceux-ci. 15 Un procédé courant pour pirater des informations manipulées par des circuits intégrés consiste à détecter les zones du circuit qui sont utilisées pendant le traitement de ces informations. Pour cela, le circuit intégré est activé ou placé dans un environnement fonctionnel et des données sont intro- 20 duites en entrée. Pendant que les données sont traitées, la surface du circuit intégré est balayée par un laser pour injecter des fautes dans le fonctionnement du circuit. En analy- B11590FR - 11-R0-1056FR01 2 sant en parallèle les sorties du circuit, ceci permet de déterminer les zones du circuit qui traitent les données. Après avoir localisé ces zones, le pirate peut concentrer ses attaques sur ces zones afin de déterminer les données secrètes qui sont traitées. Pendant le traitement de données sensibles par un circuit intégré, les données sont mémorisées temporairement dans des registres, et de tels registres sont particulièrement vulnérables à des attaques par analyse de fautes. Afin de protéger les registres contre une attaque par injection de fautes, une option peut consister à remplacer chaque registre par deux registres identiques ayant la même adresse, et à comparer en permanence les données mémorisées dans ces registres. Cependant, une telle solution n'est pas efficace dans de nombreuses situations. Par exemple, une faute injectée sur le bus d'adresse commun ou sur un chemin de réinitialisation commun ne peut pas être détectée puisqu'elle va affecter de la même façon les registres identiques. Par conséquent, on a besoin d'un procédé et d'un 20 circuit améliorés qui soient plus efficaces dans la détection d'une attaque par injection de fautes contre un registre. Résumé Un objet des modes de réalisation décrits ici est de répondre au moins partiellement à un ou plusieurs besoins de 25 l'art antérieur. Selon un aspect, on prévoit un procédé de détection d'une attaque par injection de fautes dans un circuit comprenant une pluralité de registres, chacun étant identifié par une adresse, le procédé comprenant les étapes suivantes : mémoriser 30 dans une mémoire l'adresse présente sur un bus d'adresse pendant une opération d'écriture dans l'un des registres ; en réponse à un premier signal d'alerte indiquant que les données mémorisées par un premier des registres ont été modifiées, comparer l'adresse identifiant le premier registre à l'adresse mémorisée. B11590FR - 11-R0-1056FR01 3 Selon un mode de réalisation, le procédé comprend en outre la génération d'un signal d'erreur si l'adresse identifiant le premier registre ne concorde pas avec l'adresse mémorisée. Selon un autre mode de réalisation, le procédé comprend en outre la détection du moment où les données mémorisées par le premier registre sont modifiées en comparant, par un comparateur, une valeur des données mémorisées par le premier registre à une valeur mémorisée par un registre de référence. Selon un autre mode de réalisation, le procédé comprend, avant la comparaison de la valeur des données mémorisées par le premier registre à une valeur mémorisée par le registre de référence, l'initialisation de la valeur mémorisée par le registre de référence sur la base des données mémorisées par le premier registre. Selon un autre mode de réalisation, le procédé comprend en outre la mise à jour de la valeur mémorisée par le registre de référence en réponse à une modification détectée des 20 données mémorisées par le premier registre. Selon un autre mode de réalisation, le procédé comprend en outre : en réponse à un deuxième signal d'alerte, indiquer que les données mémorisées par un deuxième des registres ont été modifiées, générer un signal d'erreur si le 25 deuxième signal d'alerte correspond à la même opération de registre que le premier signal d'alerte, et sinon, comparer l'adresse identifiant le deuxième registre à l'adresse mémorisée. Selon un autre mode de réalisation, la mémorisation de 30 l'adresse présente sur un bus d'adresse est réalisée sur la base d'un signal de commande indiquant le moment où l'adresse présente sur le bus d'adresse correspond à une opération d'écriture. B11590FR - 11-R0-1056FR01 4 Selon un autre mode de réalisation, la valeur des données mémorisées par le premier registre et la valeur mémorisée par le registre de référence sont des signatures. Selon un autre mode de réalisation, ledit au moins un 5 registre est en outre couplé à un bus de données, et le procédé comprend en outre, en réponse à une opération d'écriture dans le premier registre, la comparaison, par le circuit de détection de fautes, des données présentes sur le bus de données pendant l'opération d'écriture aux données mémorisées par le premier 10 registre en réponse à l'opération d'écriture. Selon un autre aspect, on prévoit un circuit de détection de fautes pour détecter la présence d'une faute dans au moins un registre couplé à un bus d'adresse, le circuit de détection de fautes étant adapté à recevoir un premier signal 15 d'alerte indiquant que les données mémorisées par un premier desdits au moins un registre ont été modifiées, dans lequel en réponse au premier signal d'alerte, le circuit de détection de fautes est agencé pour comparer une adresse présente sur le bus d'adresse pendant une opération d'écriture précédente à une 20 adresse du premier registre. Selon un mode de réalisation, le circuit de détection de fautes est en outre adapté à recevoir un deuxième signal d'alerte indiquant que les données mémorisées par un deuxième desdits au moins un registre ont été modifiées, le circuit de 25 détection de fautes étant agencé pour comparer une adresse présente sur le bus d'adresse pendant une opération d'écriture précédente à une adresse du deuxième registre. Selon un autre mode de réalisation, le circuit de détection de fautes comprend un premier comparateur adapté à 30 générer le premier signal d'alerte en comparant une valeur des données mémorisées par le premier registre à une valeur mémorisée par un registre de référence. Selon un autre mode de réalisation, le circuit de détection de fautes comprend en outre un circuit adapté à mettre 35 à jour la valeur mémorisée par le registre de référence sur la B11590FR - 11-R0-1056FR01 base des données mémorisées par le premier registre en réponse à la détection d'une modification des données mémorisées par le premier registre. Selon un autre aspect, on prévoit un circuit compre- 5 nant : le circuit de détection de fautes susmentionné ; un dispositif de traitement couplé au bus d'adresse et au bus de données ; et ledit au moins un registre couplé au bus d'adresse et au bus de données. Selon un autre aspect, on prévoit un dispositif 10 cryptographique comprenant le circuit susmentionné. Brève description des dessins Les objets, caractéristiques, aspects et avantages susmentionnés de l'invention, et d'autres, apparaîtront clairement à la lecture de la description détaillée suivante de modes 15 de réalisation, donnée à titre d'illustration et non de limitation, en référence aux dessins joints, dans lesquels : la figure 1 illustre schématiquement un circuit de registres comprenant un circuit de détection de fautes selon un exemple de réalisation ; 20 la figure 2A est un organigramme illustrant des étapes dans un procédé de protection d'un registre contre une attaque par injection de fautes sur la base du circuit de la figure 1 selon un exemple de réalisation ; la figure 2B est un organigramme illustrant des étapes 25 dans un procédé de protection d'un registre contre une attaque par injection de fautes sur la base du circuit de la figure 1 selon une variante de réalisation ; la figure 3 illustre schématiquement un circuit de registres comprenant un circuit de détection de fautes selon un 30 autre exemple de réalisation ; la figure 4 est un organigramme illustrant des étapes dans un procédé de protection d'un registre contre une attaque par injection de fautes sur la base du circuit de la figure 3 ; B11590FR - 11-R0-1056FR01 6 la figure 5 illustre schématiquement plus en détail un registre et un circuit détecteur des circuits des figures 1 et 3 selon un exemple de réalisation ; la figure 6 est un chronogramme illustrant des signaux 5 du circuit de la figure 3 selon un exemple de réalisation ; et la figure 7 illustre schématiquement un dispositif électronique comprenant un circuit de détection de fautes selon un exemple de réalisation. Description détaillée 10 La figure 1 illustre schématiquement un circuit 100 comprenant deux registres 102 (REG1) et 104 (REG2), chacun étant couplé à un bus d'adresse 106 (AD), et à un bus de données 108 (DATA). Le registre 102 comprend un bus de sortie de données 15 109 couplé à un circuit détecteur 110, agencé pour détecter un changement dans les données DATAI mémorisées par le registre 102. Un signal d'alerte Al est fourni à un bloc de détection de fautes 114 sur une ligne de sortie 112 du circuit détecteur 110. De façon similaire, 20 sortie de données 115 couplé pour détecter un changement le registre 104 comprend un bus de à un circuit détecteur 116, agencé dans les données DATA2 mémorisées par le registre 104. Un signal d'alerte A2 est fourni au bloc de détection de fautes 114 sur une ligne de sortie 118 du circuit détecteur 116. 25 Chacun des registres 102, 104 est un dispositif mémoire adressable qui mémorise un certain nombre de bits de données, par exemple 32, 64 ou 128 bits. Par exemple, les registres 102, 104 sont basés sur des cellules de mémoire volatile comme des cellules de SRAM (mémoire statique à accès 30 aléatoire), bien que d'autres types de cellules de mémoire puissent être utilisés, comme des bascules. Bien que deux registres 102, 104 soient illustrés en figure 1, il pourrait y avoir un nombre quelconque de registres. Chaque registre 102, 104 est associé à une adresse d'identification. Le nombre de B11590FR - 11-R0-1056FR01 7 bits de l'adresse va dépendre par exemple du nombre de registres, mais pourrait être 8 ou 16 bits par exemple. En plus des signaux d'alerte Al et A2 sur les lignes 112 et 118, le bloc de détection de fautes 114 est couplé au bus 5 d'adresse 106. En outre, le bloc de détection de fautes 114 et chacun des registres 102, 104 reçoivent par exemple un signal commun de sélection de lecture/écriture (RW-SEL) et un signal d'horloge commun (CK) sur des lignes d'entrée correspondantes. Le bloc de détection de fautes 114 reçoit en plus une version 10 inversée CK du signal d'horloge. Le bloc de détection de fautes 114 comprend par exemple une mémoire 114A mémorisant des adresses présentes sur le bus d'adresse 106, et des mémoires 114B et 114C qui mémorisent respectivement l'adresse du registre 102 et l'adresse 15 du registre 104. Le bloc de détection de fautes 114 comprend une ligne de sortie 120 fournissant un signal d'erreur dans le cas où la présence d'une faute est détedtée dans l'un des registres 102, 104, sur le bus d'adresse 106 ou sur le signal de sélection de 20 lecture/écriture, comme cela va être décrit plus en détail ci-après. Bien que cela ne soit pas illustré en figure 1, le signal d'erreur sur la ligne 120 peut être utilisé pour déclencher une ou plusieurs contre-mesures d'une attaque par injection de fautes, comme la réinitialisation de la puce de circuit intégré 25 dans laquelle est formé le circuit 100, et/ou l'incrémentation d'un compteur de telle sorte que le circuit intégré soit rendu inactif après la détection d'un certain nombre de fautes. On va maintenant décrire plus en détail le fonctionnement du bloc de détection de fautes 114, en faisant référence 30 à l'organigramme de la figure 2A. Le bloc de détection de fautes 114 mémorise par exemple en permanence dans la mémoire 114A la dernière adresse présente sur le bus d'adresse 106 correspondant à des opérations d'écriture, et optionnellement mémorise aussi une ou plusieurs 35 adresses précédentes. En particulier, le signal de sélection de B11590FR - 11-R0-1056FR01 8 lecture/écriture RW-SEL indique si une opération courante sur les bus 106, 108 est une opération de lecture ou d'écriture, et dans le cas d'une opération d'écriture, la mémoire 114A est contrôlée pour mémoriser l'adresse, par exemple sur les fronts montants du signal d'horloge inversé CF:. A l'étape 202, la détection d'un changement dans les données mémorisées de l'un ou des deux registres 102, 104, déclenche le processus de vérification de faute. Un tel changement des données mémorisées est indiqué par le fait que l'un ou les deux signaux d'alerte Al, A2 sont affirmés, par exemple à un niveau logique haut. A l'étape suivante 204, en fonction du fait que le changement de données survient dans le registre REG1, dans le registre REG2, ou dans les deux registres REG1 et REG2, le procédé passe à l'une de trois étapes suivantes. En particulier, si le changement de données a eu lieu seulement dans le registre REG1 102, comme cela est indiqué par le fait que seul le signal d'alerte Al soit affirmé, l'étape suivante est l'étape 206. Par contre, si le changement de données a eu lieu seulement dans le registre REG2 104, comme cela est indiqué par le fait que seul le signal d'alerte A2 soit affirmé, l'étape suivante est l'étape 208. Si le changement de données a eu lieu dans les deux registres 102, 104, comme cela est indiqué par le fait que les deux signaux d'alerte Al, A2 passent à l'état haut pendant une même opération de registre, l'étape suivante est l'étape 210. A l'étape 206, la dernière adresse d'écriture mémorisée dans la mémoire 114A est comparée à l'adresse du registre 102 mémorisée dans la mémoire 114B. Si le changement de données dans le registre REG1 était le résultat d'une opération d'écriture normale, les adresses devraient concorder, et dans ce cas la vérification se termine, et le procédé revient par exemple à l'étape initiale 202 lorsqu'un changement de données ultérieur est détecté. Cependant, si ces adresses ne concordent pas, l'étape suivante est l'étape 210, dans laquelle le signal B11590FR - 11-R0-1056FR01 9 d'erreur est affirmé sur la ligne 120 du bloc de détection de fautes 114. De façon similaire, à l'étape 208, la dernière adresse d'écriture mémorisée dans la mémoire 114A est comparée à 5 l'adresse du registre 104 mémorisée dans la mémoire 114C. Si le changement de données dans le registre REG2 104 était le résultat d'une opération d'écriture normale, les adresses devraient concorder, et dans ce cas, la vérification se termine, et le procédé revient par exemple à l'étape initiale 202 lors-10 qu'un changement de données ultérieur est détecté. Cependant, si les adresses ne concordent pas, l'étape suivante est l'étape 210, dans laquelle le signal d'erreur est affirmé sur la ligne 120 du bloc de détection de fautes 114. Si un changement de données est détecté dans les deux 15 registres REG1 et REG2, le procédé passe par exemple directement de l'étape 204 à l'étape 210, et le signal d'erreur est affirmé. Il sera clair pour l'homme de l'art que l'organigramme de la figure 2A, qui correspond au cas où deux registres sont présents et ces deux registres sont protégés, pourrait être 20 adapté de telle sorte qu'un seul des registres soit protégé, ou de telle sorte qu'il y ait plus de deux registres en présence, et que plus de deux de ces registres soient protégés. Dans le cas où il y a plus de deux signaux d'alerte, une erreur est par exemple générée si deux, ou plus, des signaux d'alerte sont 25 affirmés pendant la même opération de registre. La figure 2B est un organigramme illustrant un exemple d'un autre procédé mis en oeuvre par le bloc de détection de fautes 114 de la figure 1 pour protéger les registres 102, 104 contre une attaque par injection de fautes. 30 A l'étape 212, l'adresse présente sur le bus d'adresse AD 106 est par exemple mémorisée sur un front significatif du signal d'horloge inversé CK, qui pourrait être un front descendant ou un front montant. Par exemple, l'adresse est mémorisée sur le front montant du signal CK, qui correspond à un 35 front descendant du signal CK. B11590FR - 11-R0-1056FR01 10 Dans l'étape suivante 214, sur un front significatif du signal d'horloge CK, l'adresse mémorisée est comparée à l'adresse courante sur le bus d'adresse 106. Par exemple, l'étape 214 est réalisée sur un front montant du signal d'horloge CK, ce qui correspond à un front descendant du signal d'horloge CK. S'il y a une discordance, l'étape suivante est l'étape 216, dans laquelle le signal d'erreur sur la ligne 120 est affirmé. La figure 3 illustre schématiquement un circuit 300 selon une variante de réalisation de la figure 1. De nombreux éléments du circuit 300 sont les mêmes que les éléments du circuit 100, et ces éléments ont été référencés avec les mêmes références et ne vont pas être décrits de nouveau en détail. Dans l'exemple de la figure 3, un dispositif de traitement 302 fournit les signaux d'adresses et de données sur les bus 106 et 108. Le dispositif de traitement 302 est par exemple constitué d'un ou plusieurs processeurs, et est synchronisé par un signal d'horloge CK, par exemple le même signal d'horloge que celui utilisé pour synchroniser les registres 102, 104. En plus de fournir les signaux d'alerte Al et A2 sur les lignes 112 et 118 respectivement au bloc de détection de fautes 114, chacun des circuits détecteurs 110 et 116 fournit les signaux de données provenant de son registre respectif. En particulier, le signal de données DATAI sur le bus de sortie 109 du registre 102 est fourni par le circuit détecteur 110 au circuit de détection de fautes 114 sur un bus 304, et le signal de données DATA2 sur le bus de sortie 115 du registre 104 est fourni par le circuit détecteur 116 au circuit de détection de fautes 114 sur un bus 306. Le bloc de détection de fautes 114 de la figure 3 reçoit en plus le signal de données DATA du bus de données 108. En particulier, le bus de données 108 est couplé à la mémoire 114A du bloc 114. Le signal de données DATA est par exemple mémorisé par la mémoire 114A en même temps que l'adresse AD, par B11590FR - 11-R0-1056FR01 11 exemple sur chaque front descendant du signal CK lorsque l'opération du registre est une opération d'écriture. Le fonctionnement du bloc de détection de fautes 114 de la figure 3 est par exemple similaire à celui de la figure 4, et en particulier il met en oeuvre par exemple les étapes des organigrammes des figures 2A et 2B. Par exemple, la vérification de la figure 2B est réalisée à la fois pour le signal d'adresse AD sur le bus d'adresse 106 et le signal de données DATA sur le bus de données 108. En plus, le bloc de détection de fautes 114 vérifie par exemple les données écrites dans l'un des registres 102, 104 en réponse à une opération d'écriture, comme cela va être décrit maintenant plus en détail en référence à la figure 4. La figure 4 est un organigramme illustrant des étapes 15 d'un procédé de vérification des données écrites pendant une opération d'écriture. Dans une étape initiale 402, le bloc de détection de fautes 114 détecte une opération d'écriture. En particulier, le signal de sélection de lecture/écriture RW-SEL indique qu'une 20 opération courante est une opération d'écriture. En réponse, l'étape suivante est l'étape 404, dans laquelle l'adresse d'écriture et les données d'écriture présentes sur les bus 106 et 108 sont mémorisées par la mémoire 114A. Dans l'étape suivante 406, on détermine si l'adresse 25 d'écriture correspond à l'adresse du registre REG1 ou du registre REG2. Dans le premier cas, l'étape suivante est l'étape 408, et dans le deuxième cas, l'étape suivante est l'étape 410. Dans l'étape 408, le signal de données DATAI présent sur le bus 304 est comparé aux données d'écriture mémorisées. Si 30 elles concordent, le procédé revient à l'étape 402 lorsqu'une opération d'écriture ultérieure est détectée. Si elles ne concordent pas, l'étape suivante est l'étape 412, dans laquelle le signal d'erreur est généré. Dans l'étape 410, le signal de données DATA2 présent 35 sur le bus 306 est comparé aux données d'écriture mémorisées. Si 1590FR - 11-R0-1056FR01 12 elles concordent, le procédé revient à l'étape 402 lorsqu'une opération d'écriture ultérieure est détectée. Si elles ne concordent pas, l'étape suivante est l'étape 412, dans laquelle le signal d'erreur est généré. La figure 5 illustre schématiquement plus en détail le registre 102 et le circuit détecteur 110 des figures 1 et 3 selon un exemple de réalisation. Le registre 104 et le circuit détecteur 116 sont par exemple mis en oeuvre de la même manière. Comme cela est illustré en figure 5, en plus des 10 signaux d'horloge et de sélection de lecture/écriture, CK et RWSEL, le registre 102 reçoit aussi par exemple un signal de réinitialisation RST. Les données sortant du registre 102 sur le bus 109 sont fournies à une entrée d'un multiplexeur 502 du circuit 15 détecteur 110. La sortie du multiplexeur 502 est couplée à un registre de référence (REF1) 504. Le registre de référence 504 est synchronisé par le signal d'horloge CK, et fournit une sortie sur un bus 506 vers une autre entrée du multiplexeur 502. Les sorties du registre 102 et du registre de 20 référence 504 sur les bus 109 et 506 respectivement sont aussi couplées aux entrées d'un comparateur 508, qui compare ces signaux, et affirme un signal sur sa ligne de sortie 510 si ces signaux ne concordent pas. La ligne de sortie 510 est couplée à l'entrée d'une bascule de type D 512, qui synchronise la sortie 25 du comparateur 508 pour fournir le signal d'alerte sur la ligne 112. La bascule 512 est par exemple synchronisée par le signal d'horloge CK, et est contrôlée par un signal de réinitialisation R. Le signal d'alerte Al sur la ligne 112 est aussi 30 couplé à une entrée d'une porte OU à deux entrées 514, qui reçoit sur sa deuxième entrée la sortie d'un dispositif 515. Le dispositif 515 reçoit sur une entrée un signal d'activation EN, et est synchronisé par le signal CK. Le dispositif 515 génère par exemple une impulsion sur chaque front montant de signal 35 d'activation EN. La sortie de la porte OU 514 contrôle la B11590FR - 11-R0-1056FR01 13 sélection des entrées du multiplexeur 502. Le signal d'activation EN est aussi par exemple couplé à une entrée d'activation du comparateur 508. En fonctionnement, après l'activation du signal d'activation EN, les données du registre 102 sont mémorisées dans le registre de référence 504. Le comparateur 508 compare ainsi deux valeurs de données égales, et le signal d'alerte n'est pas affirmé. Dans les cycles suivants, en supposant que les données mémorisées par les registres 102 et 504 restent les mêmes, le multiplexeur 502 ramène simplement les données du registre de référence 504 vers son entrée, de sorte que sa valeur ne change pas. Cependant, tout changement dans les données mémorisées par le registre 102 ou dans les données mémorisées par le registre 504 va entraîner l'activation de la sortie du comparateur 508. En réponse, sur le cycle d'horloge suivant, le signal d'alerte Al est affirmé sur la ligne 112, et la sortie de la porte OU 514 passe à l'état haut. Ceci contrôle le multiplexeur 502 pour sélectionner de nouveau la sortie du registre 102, de sorte que le registre de référence 504 est mis à jour avec les données provenant du registre 102. Dans certains modes de réalisation, le registre de référence 504 mémorise les données du registre 102, et le comparateur 508 compare les données du registre 102 aux données copiées dans le registre 504. Dans des variantes de réalisation, le registre de référence 504 pourrait mémoriser une signature générée sur la base des données provenant du registre de données 102. Dans ce cas, un algorithme de génération de signature est par exemple mis en oeuvre sur la connexion entre la sortie du multiplexeur 502 et l'entrée du registre de référence 504, comme cela est indiqué par une ligne en trait interrompu en figure 5. En outre, le même algorithme de génération de signature est par exemple appliqué au bus de données 109 à l'entrée du comparateur 508, comme cela est indiqué par une autre ligne en trait interrompu en figure 5. Par exemple, l'algorithme de génération de signature pourrait être une fonction de hachage ou une autre B11590FR - 11-R0-1056FR01 14 fonction destinée à réduire le nombre de bits de données tout en assurant encore que chacun des bits de données d'origine affecte la valeur de la signature. On va maintenant décrire plus en détail un exemple de 5 fonctionnement du circuit de la figure 5, en combinaison avec le circuit 300 de la figure 3, et en faisant référence au chronogramme de la figure 6. La figure 6 illustre des exemples du signal d'horloge CK, du signal de lecture/écriture RW-SEL, du signal de réinitia- 10 lisation RST et du signal d'activation EN qui, pour faciliter l'illustration, sont représentés superposés sur une même ligne, du signal de données DATA et du signal d'adresse AD sur les bus 108 et 106, des données mémorisées par les registres REG1 102 (DATAI) et REF1 504 (DREF1), des signaux d'alerte Al et A2, des 15 données mémorisées par la mémoire 114A (STORED D, STORED AD), et du signal d'erreur (ERROR) généré par le circuit de détection de fautes 114. Dans l'exemple de la figure 6, cinq cycles consécutifs sont illustrés, correspondant à une opération d'écriture, un 20 cycle sans opération, deux opérations de lecture puis une opération d'écriture. Initialement, le signal de réinitialisation RST est affirmé, et ainsi les données dans les registres sont réinitialisées. En outre, aucune donnée ni aucune adresse ne sont 25 présentes sur les bus d'adresse et de données 106, 108. Le signal de réinitialisation RST passe à l'état bas avant la première opération, et le signal d'activation EN passe par l'état haut, activant par cela le mécanisme de vérification. La première opération est une opération d'écriture 30 (WRITE) adressée à une adresse AD1, qui est l'adresse du registre 102, et des données Dl sont présentes sur le bus de données 108. L'adresse AD1 est les données Dl apparaissent sur les bus 106, 108, peu après le premier front montant du signal d'horloge CK. Sur le premier front descendant du signal B11590FR - 11-R0-1056FR01 15 d'horloge CK, l'adresse AD1 et les données Dl sont mémorisées par la mémoire 114A. Peu après le deuxième front montant du signal d'horloge CK représenté en figure 6, les données mémorisées dans le registre de référence REF1 changent pour devenir DO, correspondant à la valeur d'absence de données (NO DATA) mémorisée dans le registre REG1 102. Peu après le deuxième front montant du signal d'horloge CK représenté en figure 6, les données mémorisées par le registre 102 passent de DO à Dl. Cela provoque le passage à l'état haut du signal d'alerte Al peu après le troisième front montant du signal d'horloge CK, puisque les données du registre 102 et du registre 504 ne sont plus identiques. En réponse au signal d'alerte Al, le bloc de détection 15 de fautes 114 compare la valeur de l'adresse AD1 mémorisée par la mémoire 114A sur le deuxième front d'horloge montant à l'adresse connue du registre 102, et puisque ces adresses correspondent, aucun signal d'erreur n'est généré. Au lieu de cela, le signal de réinitialisation R de la bascule 512 est par 20 exemple affirmé par le bloc de détection de fautes 114, entraînant ainsi le passage à l'état bas du signal d'alerte peu après le front descendant du troisième front descendant du signal d'alerte Al. En outre, le signal d'alerte Al provoque la mise à jour du registre de référence 504 avec le signal de 25 données provenant du registre 102. De plus, après cette étape de comparaison, la valeur d'adresse mémorisée par la mémoire 114A est par exemple réinitialisée à une adresse non valide, indiquée par "NO AD" en figure 6. De cette manière, une attaque ultérieure contre le registre REG1 peut être détectée. 30 Pendant le deuxième cycle, aucune opération (NO OP) n'est réalisée, et ainsi aucune donnée n'est fournie sur les bus d'adresse et de données 106, 108. Pendant le troisième cycle, une opération de lecture (READ) du registre REG1 est réalisée. Ainsi aucune donnée (NO 35 DATA) n'est présente sur le bus de données 108 pendant cette B11590FR - 11-R0-1056FR01 16 opération, et la mémoire 114A n'est par exemple pas configurée pour mémoriser l'adresse ou les données sur ce cycle. Cependant, pendant cette opération de lecture, le signal de sélection de lecture/écriture correspondant RW-SEL est affirmé peu après le troisième front montant du signal d'horloge CK, mais peu après le troisième front descendant du signal d'horloge CK, une faute est injectée dans ce signal de commande, changeant l'instruction de lecture en une instruction d'écriture. Au vu de cette faute, sur le quatrième front montant du signal d'horloge CK, la valeur "NO DATA" présente sur le bus de données 108 est écrite dans le premier registre 102. Cette modification de données provoque la montée du signal d'alerte Al peu après le cinquième front montant du signal d'horloge CK. En réponse, le bloc de détection de fautes 114 vérifie l'adresse mémorisée qui était présente sur le bus d'adresse 106 pendant la troisième opération, et trouve incorrect que l'adresse corresponde à un signal de non-adresse (NO AD), puisque l'opération précédente n'était pas une opération d'écriture. Ainsi le signal d'erreur est affirmé. Bien que cela ne soit pas illustré en figure 6, le signal d'erreur provoque par exemple l'incrémentation d'un compteur, ce qui va entraîner la réinitialisation du dispositif 300 une fois qu'une certaine valeur de compte a été atteinte. Une quatrième opération est une opération de lecture du deuxième registre 104, qui est supposée se dérouler norma25 lement. Une cinquième opération est une opération d'écriture dans le deuxième registre 104, mais pendant ce cycle d'écriture, une faute est injectée sur le bus d'adresse 106, après le cinquième front descendant du signal d'horloge CK. Ainsi, alors 30 que les données D2 de cette opération d'écriture devraient avoir été mémorisées dans le registre 104, elles sont mémorisées dans le registre 102. Ainsi, sur le sixième front montant du signal d'horloge CK, le signal d'alerte Al est de nouveau affirmé. En réponse, le bloc de détection de fautes 114 compare l'adresse 35 AD2, qui a été mémorisée par la mémoire 114A sur le cinquième B11590FR - 11-R0-1056FR01 17 front descendant du signal d'horloge CK, à l'adresse du registre 102. Ces adresses ne concordent pas et ainsi le signal d'erreur est affirmé. On notera que si la faute dans le signal d'adresse AD 5 pendant la cinquième opération de registre est survenue avant le cinquième front descendant du signal d'horloge CK, une telle faute sera par exemple détectée par le procédé décrit en référence à la figure 2B, puisqu'il y aurait un changement du signal d'adresse entre le cinquième front descendant et le sixième 10 front montant du signal d'horloge CK. Bien sûr, bien que cela ne soit pas illustré en figure 6, tout changement dans les données mémorisées par le registre REG1 ou REF1 pendant une opération de non-écriture va provoquer l'activation du signal d'erreur, en raison de l'adresse mémo- 15 risée non valide. La figure 7 illustre un dispositif électronique 700 comprenant un dispositif de traitement 302, les registres 102 et 104, et un bloc comprenant le circuit détecteur 110 et le bloc de détection de fautes 114 tels que décrits ici. 20 Le dispositif 700 est par exemple un dispositif cryptographique comprenant une pluralité de registres adressés. Par exemple, le dispositif 700 est une carte à circuit intégré (IC), un lecteur de cartes IC, ou un autre dispositif qui manipule des données sensibles. 25 Un avantage des modes de réalisation décrits ici est que, en générant une alerte basée sur un changement quelconque des données mémorisées par un registre, puis en vérifiant que l'adresse d'une opération d'écriture précédente concorde avec l'adresse de ce registre, on peut détecter une grande gamme 30 d'attaques par injection de fautes. En particulier, un change- ment dans les données peut être provoqué par une faute injectée sur un bus d'adresse ou sur un signal de sélection de lecture/écriture. Avantageusement, en détectant seulement un changement dans les données d'un registre correspondant, le 35 circuit détecteur peut opérer en utilisant un registre de réfé- B11590FR - 11-R0-1056FR01 18 rence qui ne partage pas un bus de données d'entrée, un bus d'adresse ou un signal de sélection de lecture/écriture communs avec le registre à protéger. Par conséquent, il n'est pas susceptible d'être soumis à des fautes survenant sur ces bus ou lignes d'entrée. En outre, en comparant en plus les données mémorisées dans le registre et les données présentes sur le bus de données pendant l'opération d'écriture, une faute injectée sur le bus de données peut aussi être détectée. En outre, en vérifiant que l'adresse et les données présentes sur les bus d'adresse et de données restent constantes entre deux fronts consécutifs d'un signal d'horloge, on peut détecter l'injection d'une faute pendant au moins une partie d'une opération. Avec la description ainsi faite d'au moins un mode de réalisation illustratif de l'invention, diverses altérations, modifications et améliorations apparaîtront facilement à l'homme de l'art. Par exemple, il sera clair pour l'homme de l'art qu'à chaque fois qu'un évènement est décrit comme ayant lieu sur un 20 front montant ou descendant, l'inverse pourrait être vrai. En outre, il sera clair pour l'homme de l'art que le chronogramme de la figure 6 est simplement un exemple, et qu'il y a de nombreuses autres possibilités pour la configuration temporelle des divers signaux qui sont représentés. 25 En outre, il sera clair pour l'homme de l'art que les diverses fonctionnalités décrites en relation avec les divers modes de réalisation pourraient être combinées d'une façon quelconque. REVENDICATIONS1. Procédé de détection d'une attaque par injection de fautes dans un circuit comprenant une pluralité de registres (102, 104), chacun étant identifié par une adresse, le procédé comprenant les étapes suivantes: mémoriser dans une mémoire (114A) l'adresse présente sur un bus d'adresse (106) pendant une opération d'écriture dans l'un des registres ; en réponse à un premier signal d'alerte (Al) indiquant que les données mémorisées par un premier des registres ont été 10 modifiées, comparer l'adresse identifiant le premier registre à l'adresse mémorisée. 2. Procédé selon la revendication 1, comprenant en outre la génération d'un signal d'erreur si l'adresse identifiant le premier registre ne concorde pas avec l'adresse 15 mémorisée. 3. Procédé selon la revendication 1 ou 2, comprenant en outre la détection du moment où les données mémorisées par le premier registre sont modifiées en comparant, par un comparateur (508), une valeur des données mémorisées par le premier registre 20 (502) à une valeur mémorisée par un registre de référence (510). 4. Procédé selon la revendication 3, comprenant, avant la comparaison de la valeur des données mémorisées par le premier registre à une valeur mémorisée par le registre de référence, l'initialisation de la valeur mémorisée par le regis25 tre de référence sur la base des données mémorisées par le premier registre. 5. Procédé selon la revendication 3 ou 4, comprenant en outre la mise à jour de la valeur mémorisée par le registre de référence (510) en réponse à une modification détectée des 30 données mémorisées par le premier registre. 6. Procédé selon l'une quelconque des revendications 1 à 5, comprenant en outre : en réponse à un deuxième signal d'alerte (A2), indiquer que les données mémorisées par un deuxième des registresB11590FR - 11-R0-1056FR01 20 ont été modifiées, générer un signal d'erreur si le deuxième signal d'alerte correspond à la même opération de registre que le premier signal d'alerte, et sinon, comparer l'adresse identifiant le deuxième registre à l'adresse mémorisée. 7. Procédé selon l'une quelconque des revendications 1 à 6, dans lequel la mémorisation de l'adresse présente sur un bus d'adresse est réalisée sur la base d'un signal de commande (RW) indiquant le moment où l'adresse présente sur le bus d'adresse (106) correspond à une opération d'écriture. 8. Procédé selon la revendication 7, dans lequel la valeur des données mémorisées par le premier registre et la valeur mémorisée par le registre de référence sont des signatures. 9. Procédé selon l'une quelconque des revendications 1 15 à 8, dans lequel ledit au moins un registre (102, 104) est en outre couplé à un bus de données (108), et le procédé comprend en outre, en réponse à une opération d'écriture dans le premier registre, la comparaison, par le circuit de détection de fautes (114), des données présentes sur le bus de données pendant 20 l'opération d'écriture aux données mémorisées par le premier registre en réponse à l'opération d'écriture. 10. Circuit de détection de fautes pour détecter la présence d'une faute dans au moins un registre (102, 104) couplé à un bus d'adresse (106), le circuit de détection de fautes 25 étant adapté à recevoir un premier signal d'alerte (Al) indi- quant que les données mémorisées par un premier desdits au moins un registre (102) ont été modifiées, dans lequel en réponse au premier signal d'alerte, le circuit de détection de fautes est agencé pour comparer une adresse présente sur le bus d'adresse 30 pendant une opération d'écriture précédente à une adresse du premier registre. 11. Circuit de détection de fautes selon la revendication 10, adapté en outre à recevoir un deuxième signal d'alerte (A2) indiquant que les données mémorisées par un 35 deuxième desdits au moins un registre (104) ont été modifiées,B11590FR - 11-R0-1056FR01 21 le circuit de détection de fautes étant agencé pour comparer une adresse présente sur le bus d'adresse pendant une opération d'écriture précédente à une adresse du deuxième registre. 12. Circuit de détection de fautes selon la revendi- cation 10 ou 11, comprenant un premier comparateur (508) adapté à générer le premier signal d'alerte en comparant une valeur des données mémorisées par le premier registre à une valeur mémorisée par un registre de référence (510). 13. Circuit de détection de fautes selon la revendi- cation 12, comprenant en outre un circuit (508, 524) adapté à mettre à jour la valeur mémorisée par le registre de référence sur la base des données mémorisées par le premier registre en réponse à la détection d'une modification des données mémorisées par le premier registre. 14. Circuit comprenant : le circuit de détection de fautes de l'une quelconque des revendications 10 à 13 ; un dispositif de traitement (302) couplé au bus d'adresse (106) et au bus de données (108) ; et ledit au moins un registre couplé au bus d'adresse et au bus de données. 15. Dispositif cryptographique comprenant le circuit de la revendication 14.