Brevet FR2867286A1 — publié le 20050909

MACHINE D'ETATS A LOGIQUE CABLEE PROTEGEE CONTRE LE DERAILLEMENT PAR INJECTION DE FAUTE La présente invention concerne la protection des circuits logiques contre les attaques par injection d'erreur, et plus particulièrement la protection des machines d'états contre le déraillement par injection de faute. Les circuits logiques présents dans les circuits intégrés sécurisés comme les circuits intégrés pour cartes à puce, font l'objet de diverses attaques de la part de fraudeurs qui cherchent à découvrir leur structure et/ou les secrets qu'ils comprennent. Il s'agit généralement de circuits de cryptographie de type DES, AES, RSA,... de microprocesseurs programmés pour exécuter des algorithmes de cryptographie, de banques de registres contenant des clefs secrètes, etc. Or, de tels circuits logiques comprennent généralement de nombreuses machines d'états, qui doivent ainsi être protégées contre de telles attaques. La figure 1 représente schématiquement la structure d'une machine d'états classique 10. La machine d'états 10 reçoit des signaux de contrôle INO,... INj,...INn et fournit un code de l'état courant CSC ("current state code") codé sur N bits. Ce code représente l'état en cours de la machine d'états et est fonction de l'état précédent et de la valeur des signaux de contrôle. Il est appliqué à un circuit de commande 20 qui fournit des signaux de commande COM1,...COMi,...COMm dont la valeur est ainsi fonction de l'état courant de la machine d'états. La machine d'états 10 comprend une bascule synchrone 11 de N bits et un circuit de transition d'état asynchrone 12. La bascule 11 est généralement une bascule Flip-Flop formée par N bascules élémentaires de 1 bit agencées en parallèle. Elle est synchronisée par un signal d'horloge CK1 et reçoit sur son entrée D un code de l'état suivant NSC ("Next State Code") fourni par le circuit de transition d'état 12. A chaque front du signal d'horloge, par exemple à chaque front montant, le code de l'état suivant NSC est recopié par la sortie Q de la bascule 11 et devient le code de l'état courant CSC. Le code CSC est renvoyé au circuit de transition d'état 12 qui fournit, en fonction de ce code et des signaux de contrôle INj, le code de l'état suivant NSC. Le circuit de transition d'état 12 comprend classiquement un décodeur de l'état courant 13 ("Curent State Decoder") et un circuit de sélection d'état 14. Le décodeur 13 reçoit le code CSC et fournit un signal ID d'identification de l'état courant. Ce signal d'identification ID est appliqué au circuit de sélection d'état 14, qui reçoit en entrée les signaux de contrôle INO,..INj,...INn et fournit à la bascule 11 le code de l'état suivant NSC. Dans une telle machine d'états, les états sont donc représentés par des codes de N bits. Généralement, le codage des états est assuré par des codes ayant un nombre de bits égal au nombre de bit minimal permettant de coder tous les états, par exemple 2 bits pour 4 états à coder. Le procédé de codage dit "one hot", plus rarement utilisé, consiste à associer à chaque état un code dans lequel un seul bit à la fois est à 1. Par exemple, les codes "one hot" d'une machine d'états à quatre états présentent les valeurs suivantes: Code(état 0) = 0001 Code(état 1) = 0010 Code(état 2) = 0100 Code(état 3) = 1000 Le codage "one hot" permet de décoder rapidement le code de l'état courant, avec un décodeur d'une structure simplifiée ne comprenant que des moyens d'identification du rang du bit unique qui est à 1. Comme indiqué plus haut, une telle machine d'états est susceptible de diverses attaques. Ces attaques peuvent intervenir pendant des phases de calculs dits sensibles, par exemple pendant les phases de calcul d'un code d'authentification ou pendant la lecture d'une clef de cryptographie dans une mémoire. Parmi les diverses attaques connues, l'attaque par injection de faute, ou injection d'erreur, est souvent utilisée par les fraudeurs. On distingue les attaques localisées, portant sur un ou plusieurs bits, et les attaques de type "tout à 1" ou "tout à 0", qui visent à forcer à une même valeur logique un ensemble de bits en un point déterminé du circuit. Ces attaques sont réalisées en introduisant des perturbations (glitches) dans la tension d'alimentation du circuit, en appliquant un faisceau laser ou un faisceau de rayon X en des points déterminés du circuit, etc. Certaines attaques sont faites sur la face arrière de la microplaquette de silicium du circuit intégré, par application de potentiels électriques déterminés. De telles attaques permettent d'observer le comportement d'un circuit logique, par exemple la modification d'un code de sortie en fonction de l'erreur injectée, et d'en déduire sa structure. Si l'on observe le mécanisme d'une telle injection d'erreur au niveau d'une machine d'états, il apparaît qu'une attaque peut porter sur un ou plusieurs bits du code de l'état courant (attaque portant sur la bascule 11) ou sur un ou plusieurs bits du code de l'état suivant (attaque portant sur le circuit de transition d'état 12). Une attaque peut concerner un bit du code, deux bits du code, etc. L'injection d'erreur dans la machine d'états conduit celle-ci à un déraillement au cours duquel elle peut se placer dans un état n'appartenant pas à la liste des états prédéterminés, ou dans un état autorisé mais dans lequel elle n'aurait pas dû basculer compte tenu de la valeur des entrées I0-INn et de la valeur de l'état courant. Pour contrer de telles attaques, on connaît les méthodes de sécurisation par redondance logicielle et de 5 sécurisation par contrôle de parité. La sécurisation par redondance logicielle nécessite un programme de vérification qui relance l'exécution d'un calcul par la machine d'états et compare le résultat fournit au résultat précédemment obtenu. Cette méthode n'est pas toujours applicable car de nombreuses machines d'états ne sont pas contrôlables par logiciel, le logiciel n'ayant pas la possibilité de relancer l'exécution d'un calcul par la machine d'états. La sécurisation par contrôle de parité consiste à ne prévoir que des codes ayant une parité déterminée, et à contrôler la parité du code de l'état courant de la machine d'états. Par exemple, les codes "one hot" ont une parité égale à 1 car chaque code comprend un nombre impair de bits à 1. Si la parité du code de l'état courant n'est pas égale à 1, le code est considéré comme erroné et la machine d'états revient dans l'un des états prédéterminés. Toutefois, le contrôle de la parité d'un code "one hot" ne permet de détecter que des attaques portant sur 1 bit. En effet, une attaque portant sur deux bits peut forcer la machine d'états dans un état correspondant à un autre code "one hot", de sorte que l'attaque n'est pas détectée par le contrôle de parité. Il s'agit dans ce cas d'un déraillement se caractérisant par une transition d'état non prévue, et non d'un déraillement conduisant à un état n'appartenant pas à la liste des états prédéterminés. Par exemple, dans l'exemple de codage "one hot" cité ci-dessus, une attaque sur les deuxième et troisième bits du code "0010" de l'état N 1 conduit au code "0100", soit le code de l'état N 3. Une telle attaque n'est donc pas détectable. Ainsi, un objectif général de la présente invention est de prévoir un moyen pour sécuriser une machine d'états contre le déraillement par injection de faute qui soit plus efficace que la méthode de contrôle de parité. A cet effet, une première idée de la présente invention est de coder les états d'une machine d'états au moyen de codes présentant les uns relativement aux autres une distance de Hamming au moins égale à 2, sinon égale à 3 voire plus selon le degré de résistance aux injections d'erreurs recherché, et de déclarer interdits les codes ne répondant pas à ce critère. Il est connu que la distance de Hamming est le nombre de bits différents que présentent deux codes déterminés. Une autre idée de la présente invention est d'assurer un décodage pleine échelle de l'état courant, c'est-à-dire un décodage qui porte sur l'ensemble des bits de code. Encore une autre idée de la présente invention est de prévoir un moyen pour produire un signal d'erreur lorsque le code de l'état courant ne correspond à aucun code autorisé, ce qui signifie que la machine d'états se trouve dans un état interdit. Ainsi, la présente invention prévoit une machine d'états à logique câblée présentant un nombre prédéterminé d'états correspondant chacun à un code prédéterminé, et comprenant une bascule synchrone recevant un code de l'état suivant et fournissant un code de l'état courant, en synchronisation avec un signal d'horloge, et un circuit de transition d'état pour fournir à la bascule le code de l'état suivant en fonction du code de l'état courant et de signaux de contrôle, dans laquelle les codes prédéterminés de la machine d'états présentent les uns relativement aux autres une distance de Hamming au moins égale à 2, et le circuit de transition d'état comprend: un décodeur de l'état courant effectuant un décodage pleine échelle du code de l'état courant, et des moyens pour fournir un signal d'erreur ayant une valeur active déterminée lorsqu'un code de l'état courant ne correspond à aucun code prédéterminé. Selon un mode de réalisation, les codes prédéterminés de la machine d'états présentent les uns relativement aux autres une distance de Hamming au moins égale à 3. Selon un mode de réalisation, les codes prédéterminés de la machine d'états présentent les uns relativement aux autres une distance de Hamming au moins égale à 4. Selon un mode de réalisation, un code ne comprenant que des bits à 0 ou que des bits à 1 est un code interdit dont l'apparition dans la machine d'états active le signal d'erreur. Selon un mode de réalisation, le décodeur de l'état courant comprend des comparateurs recevant chacun le code de l'état courant et l'un des codes prédéterminés, et fournissant un signal d'identification d'état ayant une valeur active déterminée si les deux codes sont identiques, chaque comparateur effectuant une comparaison des deux codes portant sur l'ensemble de leurs bits constitutifs. Selon un mode de réalisation, la machine d'états comprend un circuit logique recevant les signaux d'identification d'état fournis par les comparateurs, et fournissant le signal d'erreur si aucun des signaux d'identification ne présente la valeur déterminée. La présente invention concerne également un circuit intégré comprenant une pluralité de machines d'états selon l'invention, et des portes logiques pour combiner les signaux d'erreurs émis par l'ensemble des machines d'états et fournir un signal d'erreur général. La présente invention concerne également un procédé de réalisation d'une machine d'états à logique câblée présentant un nombre prédéterminé d'états correspondant chacun à un code prédéterminé, et comprenant une bascule synchrone recevant un code de l'état suivant et fournissant un code de l'état courant, en synchronisation avec un signal d'horloge, et un circuit de transition d'état pour fournir à la bascule le code de l'état suivant en fonction du code de l'état courant et de signaux de contrôle, la procédé comprenant les étapes suivantes. attribuer à la machine d'états des codes prédéterminés présentant les uns relativement aux autres une distance de Hamming au moins égale à 2, prévoir dans le circuit de transition d'état un décodeur de l'état courant effectuant un décodage pleine échelle du code de l'état courant, et prévoir dans la machine d'états des moyens pour fournir un signal d'erreur ayant une valeur active déterminée lorsque le code de l'état courant ne correspond à aucun code prédéterminé. Selon un mode de réalisation, le procédé comprend l'attribution à la machine d'états de codes prédéterminés présentant les uns relativement aux autres une distance de Hamming au moins égale à 3. Selon un mode de réalisation, le procédé comprend l'attribution à la machine d'états de codes prédéterminés présentant les uns relativement aux autres une distance de Hamming au moins égale à 4. Selon un mode de réalisation, le procédé comprend le fait de ne jamais attribuer à un état de la machine d'états un code qui ne comprend que des bits à 0 ou que des bits à 1. Selon un mode de réalisation, le procédé comprend la prévision, dans le décodeur de l'état courant, de comparateurs recevant chacun le code de l'état courant et l'un des codes prédéterminés, et fournissant un signal d'identification d'état ayant une valeur active déterminée si les deux codes sont identiques, chaque comparateur effectuant une comparaison des deux codes portant sur l'ensemble de leurs bits constitutifs. Selon un mode de réalisation, le procédé comprend la prévision d'un circuit logique recevant les signaux d'identification d'état fournis par les comparateurs, et fournissant un signal d'erreur si aucun des signaux d'identification ne présente la valeur déterminée. Selon un mode de réalisation, le procédé comprend la prévision, dans un circuit intégré comprenant une pluralité de machines d'états, de portes logiques pour combiner le signal d'erreur et d'autres signaux d'erreurs envoyés par d'autres machines d'états, et fournir un signal d'erreur général. 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 du procédé de réalisation d'une machine d'états selon l'invention et d'un exemple pratique de réalisation d'une telle machine d'états, faite à titre non limitatif en relation avec les figures jointes parmi lesquelles: - la figure 1 précédemment décrite représente la structure générale d'une machine d'états classique, - la figure 2 représente la structure d'une machine d'états réalisée selon le procédé de l'invention, - les figures 3A, 3B, 3C illustrent un exemple d'application du procédé de l'invention et représentent respectivement un signal d'horloge primaire, un signal d'horloge secondaire, et un signal de comptage, - la figure 4 est le diagramme d'états d'une machine d'états prévue pour fournir le signal d'horloge de la figure 3B, - la figure 5 représente la structure d'une machine d'états correspondant au diagramme de la figure 4, et - la figure 6 représente un circuit logique comprenant une pluralité de machines d'états selon l'invention. Le procédé de l'invention prévoit de réaliser une machine d'états présentant au moins les trois caractéristiques suivantes: - les codes caractérisant les états de la machine d'états sont choisis dans une liste de codes autorisés qui présentent les uns relativement aux autres une distance de Hamming déterminée égale à H, avec H au moins égal à 2, les autres codes étant déclarés interdits, - le décodage de l'état courant est effectué sur la pleine échelle du code de l'état courant, c'est-à-dire en tenant compte de tous les bits constitutifs du code de l'état courant, et - un signal d'erreur est émis si le code de l'état courant ne correspond à aucun des codes autorisés attribués à la machine d'états. Une quatrième caractéristique de l'invention, optionnelle mais recommandée, est de n'attribuer à une machine d'états aucun code ne comprenant que des bits à 0 ou ne comprenant que des bits à 1, afin de protéger la machine d'états contre des attaques par injection de faute du type "tout à 1" ou "tout à 0". Selon la première caractéristique de l'invention, on définit ainsi une liste de codes autorisés présentant les uns relativement aux autres une distance de Hamming au moins égale à 2. Une telle liste comporte, entre chaque code autorisé, des codes interdits. Ceci sera mieux compris à la lumière des exemples suivants. Exemple N 1: des codes de 4 bits ayant les uns relativement aux autres une distance de Hamming au moins égale à 2 sont au nombre de huit, par exemple: 0001; 0010; 0100; 0111; 1000; 1011; 1101; 1110 et permettent de construire une machine d'états ayant au maximum huit états, tous les autres codes étant des codes 30 interdits. Exemple N 2: des codes de 4 bits ayant les uns relativement aux autres une distance de Hamming au moins égale à 3 sont au nombre de deux, par exemple: 0001; 0110 et permettent de construire une machine d'états à deux états, tous les autres codes étant des codes interdits. Exemple N 3: des codes de 5 bits ayant les uns relativement aux autres une distance de Hamming au moins égale à 3 sont au nombre de quatre, par exemple: 00001; 00110; 11000; 11111 et permettent de construire une machine d'états ayant au maximum quatre états, tous les autres codes étant des codes interdits, ou une machine d'états ayant au maximum trois états si le code "11111" est déclaré interdit du fait qu'il ne comprend que des bits à 1. Exemple N 4: des codes de 6 bits ayant les uns 15 relativement aux autres une distance de Hamming au moins égale à 3 sont au nombre de huit, par exemple: 000001; 000110; 011000; 011111; 101010; 101101; 110011; 110100 et permettent de construire une machine d'états ayant au maximum huit états, tous les autres codes étant des codes interdits. De façon générale, des codes ayant une distance de Hamming au moins égale à 2 offrent une protection maximale contre l'injection d'une erreur (1 bit de code erroné) dans la machine d'états, si le décodage de l'état courant est assuré sur la totalité des bits de code. En effet, l'injection d'une seule erreur dans le code de l'état courant (ou dans le code de l'état suivant) entraîne immanquablement l'apparition d'un code interdit. De même, des codes ayant les uns relativement aux autres une distance de Hamming au moins égale à 3 se distinguent les uns des autres par trois bits différents et offrent une protection contre l'injection de une ou deux erreurs (2 bits de code erronés) dans la machine d'états, si le décodage de l'état courant est assuré sur la totalité des bits de code. En effet, l'injection de une ou deux erreurs dans le code de l'état courant (ou de l'état suivant) entraîne immanquablement l'apparition d'un code interdit. En résumé, le choix d'une distance "H" de Hamming entre les codes d'une machine d'états, qui n'est pas quelconque et est au moins égale à une valeur déterminée, permet d'offrir une résistance absolue à un nombre d'injection d'erreurs allant de 1 à H-1, à la condition que le décodage de l'état courant soit effectué sur l'ensemble des bits de code. La figure 2 représente une structure de machine d'états 30 selon l'invention qui comporte K états stables STO, ST1,...STk. Ces états sont codés, conformément à l'invention, par des codes SCO, SC1,...SCk présentant les uns relativement aux autres une distance de Hamming au moins égale à 2. La machine d'états 30 comprend une bascule synchrone 31 de N bits et un circuit de transition d'état 32. La bascule 31, par exemple une bascule Flip-Flop, est synchronisée par un signal d'horloge CK1 et comporte N bascules élémentaires en parallèle (non représentées). Le circuit de transition d'état 32 comprend un décodeur de l'état courant 33 et un circuit de sélection d'état 34 qui fournit un code de l'état suivant NSC à l'entrée D de la bascule 31, dont la sortie Q fournit le code de l'état courant CSC. Selon l'invention, le décodeur de l'état courant 33 comprend des comparateurs COMPO, COMP1,...COMPk en nombre égal au nombre d'états autorisés attribués à la machine d'états. Chaque comparateur reçoit en entrée le code de l'état courant CSC ainsi que l'un des codes autorisés SCO, SC1,...SCk, et fournit un signal d'identification de 1 bit, respectivement IDO, IDl,...IDk. Ainsi, le comparateur COMPO reçoit les codes SCO, CSC et fournit le signal IDO, le comparateur COMP1 reçoit les codes SC1, CSC et fournit le signal IDl, etc. , le comparateur COMPk recevant les codes SCk, CSC et fournissant le signal IDk. Lorsque le code de l'état courant CSC est égal à l'un des codes SCO, SC1,...SCk, le comparateur correspondant met à 1 le signal d'identification correspondant. Par exemple, le code IDl passe à 1 à la sortie du comparateur COMP1 si le code CSC est égal au code SC1. Les codes SCO, SC1,...SCk appliqués aux comparateurs sont générés de façon hardware à l'intérieur de la machine d'états, par des connexions de pistes conductrices à une tension d'alimentation Vcc (bit à 1) ou par des connexions à la masse (bit à 0). Dans chaque comparateur, la comparaison est effectuée sur la pleine échelle de chaque code. A cet effet, chaque comparateur comprend une pluralité de portes logiques (non représentées sur la figure), par exemple des portes OU EXCLUSIF (XOR) dont les sorties sont combinées dans une porte NON OU dont la sortie fournit le signal d'identification. Chaque porte OU EXCLUSIF reçoit un bit du code de l'état courant et un bit du code de l'état autorisé auquel le code de l'état courant est comparé. Si tous les bits sont identiques deux à deux, les sorties des portes OU EXCLUSIF sont toutes à 0 et la sortie de la porte NON OU est à 1 (valeur active du signal d'identification). Si au moins un bit du code de l'état courant est différent du code de l'état auquel l'état courant est comparé, la sortie de la porte XOR correspondante passe à 1 et la sortie de la porte NON OU passe à O. Le circuit de sélection d'état 34 comprend un circuit de décision DCT1 à logique câblée et un multiplexeur MUX1. Le circuit de décision DCT1 reçoit des signaux de contrôle INO, IN1, .INn et les signaux d'identification IDO, ID1...IDk fournis par le décodeur de l'état courant 33. Le circuit 34 fournit au multiplexeur MUX1 un signal NSSEL de sélection de l'état suivant. Le multiplexeur MUX1 reçoit en entrée les codes SCO, SC1...SCk attribués à la machine d'états (générés de façon hardware), sélectionne le code de l'état suivant NSC parmi l'un de ces codes en fonction de la valeur du signal NSSEL, et applique le code à l'entrée D de la bascule synchrone 31...DTD: Selon l'invention, la machine d'états 30 comprend en outre une porte NON OU 35 à K entrées qui reçoit les signaux d'identification IDO, ID1...IDk fournis par le décodeur 33. Cette porte logique 35 fournit un signal d'erreur ERS qui passe à 1 si aucun des signaux d'identification n'est à 1, ce qui signifie que l'état courant ne correspond à aucun des états autorisés attribués à la machine d'états. Le signal ERS est valide sur front montant de l'horloge CK1 et doit être verrouillé à cet instant là par tout moyen de verrouillage connu, par exemple une bascule D (non représentée). Une telle machine d'états est résistante à l'injection d'une erreur dans le code de l'état courant CSC (injection d'erreur en sortie de la bascule 31) ou dans le code de l'état suivant NSC (injection d'erreur en sortie du multiplexeur) si la distance de Hamming entre les codes est au moins égale à 2. Elle est résistante à l'injection de une et deux erreurs si la distance de Hamming entre les codes est au moins égale à 3, etc. Par "résistance à l'erreur", on désigne le fait qu'une erreur est immanquablement détectée. Si la distance de Hamming entre les codes est au moins égale à 2, une injection d'erreur sur un bit est immanquablement détectée tandis qu'une injection d'erreur sur deux bits peut être détectée mais ne l'est pas immanquablement, car le code obtenu après injection de l'erreur peut appartenir à la liste des codes autorisés. De même, si la distance de Hamming est au moins égale à 3, une injection d'erreur sur un ou deux bits est immanquablement détectée tandis qu'une injection d'erreur sur trois bits n'est détectée que si le code obtenu après l'injection d'erreur est un code interdit. Ainsi, une injection d'erreur est immanquablement détectée si elle conduit immanquablement la machine d'états à basculer dans un état interdit, de sorte que le signal d'erreur passe immanquablement à 1. Le signal d'erreur émis par une machine d'états selon l'invention peut être exploité de diverses manières à la portée de l'homme de l'art afin de prendre des mesures préventives: blocage ou remise à zéro de la machine d'états, blocage général du circuit logique comprenant la machine d'états (microprocesseur, séquenceur, circuit de calcul cryptographique), envoi d'une alerte externe, effacement préventif de données sensibles, etc.. Un compteur d'erreur peut être prévu pour déclencher de telles actions préventives à partir d'un nombre déterminé d'erreurs cumulées, afin de ne pas tenir compte d'une erreur isolée sans rapport avec une injection d'erreur frauduleuse. On décrira maintenant un exemple d'application du procédé de l'invention. On suppose ici que l'on dispose d'un signal d'horloge primaire CK1 tel que représenté sur la figure 3A, et que l'on souhaite réaliser un générateur d'horloge fournissant un signal d'horloge secondaire CK2 représenté en figure 3B, ayant un rapport cyclique ("duty cycle") programmable égal à R, avec R au moins égal à 1. La figure 3B représente l'allure du signal d'horloge CK2 lorsque R est égal à 2. Dans ce cas, le signal d'horloge CK2 est à 1 pendant une période Tl du signal d'horloge CK1 et est à 0 pendant deux périodes du signal d'horloge CK1, soit pendant une durée 2T1, ce qui correspond bien à un rapport cyclique égal à 2 (2T1/Tl). Pour réaliser un tel générateur d'horloge, on définit une machine d'états cadencée par le signal d'horloge primaire CK1 dont le diagramme d'états est représenté sur la figure 4. La machine d'états présente trois états stables: - un état IDLE dans lequel la machine d'états est désactivée, - un état SETCK2 dans lequel le signal d'horloge CK2 est mis à 1 - un état RSTCK2 dans lequel le signal d'horloge CK2 est mis à O. En sus de ces états, des signaux de contrôle de la machine d'états sont définis afin de contrôler les transitions d'états. Ces signaux de contrôle comprennent un signal de mise en service ON/OFF et une consigne RS codée binaire qui est égale en codage binaire au rapport cyclique souhaité R. Une variable COUNT est également définie afin de contrôler le nombre de cycles du signal d'horloge primaire CK1 (soit le nombre de périodes Tl) pendant lequel la machine d'états reste dans l'état RSTCK2, ce nombre de cycles devant être égal à la consigne RS. La variable COUNT est portée à la valeur de la consigne RS lorsque la machine d'états bascule dans l'état SETCK2, et est décrémentée d'une unité lorsque la machine d'états bascule dans l'état RSTCK2 et/ou lorsqu'elle reste dans l'état RSTCK2 pour un cycle d'horloge CK1 supplémentaire. La machine d'états présente ainsi les transitions d'états suivantes: - i) passage de l'état IDLE à l'état SETCK2 lorsque le signal ON/OFF est mis à 1 et si RS est différent de 0 25 (RS > 0), - ii) passage de l'état SETCK2 à l'état RSTCK2 après un cycle du signal d'horloge primaire CK1 (sauf dans le cas visé au point iv), - iii) passage de l'état RSTCK2 à l'état SETCK2 lorsque 30 COUNT=O, - iv) retour à l'état IDLE lorsque RS est porté à 0 et/ou lorsque le signal ON/OFF est porté O. Des signaux internes de contrôle SETCOUNT, DECCOUNT sont également définis afin d'assurer la gestion de la variable COUNT. Par définition, la variable COUNT est portée à la valeur de la consigne RS lorsque SETCOUNT est à 1, et est décrémentée d'une unité lorsque DECCOUNT est égal à 1. Ainsi, le signal SETCOUNT est mis à 1 et le signal DECCOUNT mis à 0 lors du basculement de la machine d'états dans l'état SETCK2, tandis que le signal DECCOUNT est mis à 1 etle signal SETCOUNT mis à 0 lors du basculement de la machine d'états dans l'état RSTCK2 ou lorsque la machine d'états reste dans l'état RSTCK2 pour un cycle d'horloge CK1 supplémentaire. Les étapes de conception qui viennent d'être décrites sont en soi classiques. Une fois ces étapes réalisées, des codes selon l'invention sont attribués à chacun des trois états définis ci-dessus. On suppose ici que le cahier des charges de la machine d'états exige une résistance totale à l'injection de une ou deux erreurs dans la machine d'états, ainsi que l'interdiction de prévoir des codes n'ayant que des bits à 0 ou que des bits à 1, afin de prémunir la machine d'états contre des attaques de type "tout à 0" ou "tout à 1". Dans ces conditions, la distance de Hamming entre les codes doit être au moins égale à 3. Parmi les exemples de codes selon l'invention décrits ci-dessus, l'exemple N 3 montre que des codes de 5 bits ayant une distance de Hamming au moins égale à 3 sont au nombre de quatre. On choisit par exemple les codes suivants: 00001; 00110; 11000; 11111 Après suppression du code "11111" qui ne contient que des bits à 1, et doit donc être déclaré interdit, il reste trois codes disponibles pour coder les trois états IDLE, SETCK2, RSTCK2. Le codage des trois états de la machine d'états est ainsi réalisé de la manière décrite par le tableau 1 ci-après. Ce tableau représente également la valeur des signaux SETCOUNT et DECCOUNT. Les bits de code sont désignés c0, cl, c2, c3, c4. Tableau 1 Etat Code Valeur du code SETCOUNT DECCOUN c4 c3 c2 et cO T IDLE SCO 0 0 0 0 1 0 0 SETCK2 SC1 0 0 1 1 0 1 0 RSTCK2 SC2 1 1 0 0 0 0 1 (interdit) - 1 1 1 1 1 - - La figure 5 représente un exemple de réalisation 40 d'une telle machine d'états, destinée à être implémentée sur une microplaquette de silicium. La machine d'états 40 comprend, comme celle décrite plus haut, une bascule synchrone 41 et un circuit de transition d'état 42 qui comprend un décodeur de l'état courant 43 et un circuit de sélection d'état 44. La bascule synchrone 41, synchronisée par le signal d'horloge primaire CK1, reçoit le code de l'état suivant NSC sur son entrée D et sa sortie Q fournit le code de l'état courant CSC. Le décodeur de l'état courant 43 comprend des comparateurs COMPO, COMP1, COMP2. Le comparateur COMPO reçoit le code CSC et le code SCO et fournit un signal d'identification IDO. Le comparateur COMP1 reçoit le code CSC et le code SC1 et fournit un signal d'identification ID1. Le comparateur COMP2 reçoit le code CSC et le code SC2 et fournit un signal d'identification ID2. Lorsque le code CSC est égal à l'un des codes SCO, SC1, SC2, le comparateur correspondant met à 1 le signal d'identification correspondant. Dans chaque comparateur, la comparaison est effectuée en pleine échelle, en tenant compte des N bits de chaque code. Les codes SCO, SC1, SC2 sont, comme précédemment, générés de façon hardware. Le circuit de sélection d'état 44 comprend un circuit de décision DCT2 et un multiplexeur MUX2. Le circuit de décision DCT2 reçoit la consigne RS et le signal ON/OFF, ainsi qu'un signal interne de contrôle COUNTNIL qui est égal à 1 quand la variable COUNT est égale à 0. Le circuit DCT2 fournit un signal NSSEL de sélection de l'état suivant, appliqué au multiplexeur MUX2. Le multiplexeur MUX2 reçoit en entrée les codes SCO, SC1, SC2, sélectionne le code de l'état suivant NSC parmi l'un de ces codes et applique le code sélectionné à l'entrée D de la bascule 41. La machine d'états 40 comprend également une porte NON OU 45 qui reçoit les trois signaux d'identification IDO, ID1, ID2 et fournit un signal d'erreur ERS. Ce signal d'erreur passe à 1 si aucun des signaux d'identification n'est à 1, ce qui signifie comme précédemment que l'état courant ne correspond à aucun des trois états autorisés attribués à la machine d'états. Comme indiqué plus haut, le signal ERS est valide sur front montant de l'horloge CK1 et doit être verrouillé à cet instant là. La machine d'états comprend également un compteur 46 piloté par le signal d'horloge primaire CK1, un comparateur 47 et un décodeur auxiliaire 48. Le compteur 46 présente une entrée IN de chargement de données qui reçoit la consigne RS, une sortie OUT qui fournit la variable COUNT, une entrée LOAD qui reçoit le signal SETCOUNT et déclenche le chargement de la consigne RS dans le compteur, et une entrée DEC de décrémentation de la variable COUNT, qui reçoit le signal DECCOUNT. Le comparateur 47 a une première entrée reliée à la sortie OUT du compteur 46 et reçoit sur une autre entrée une donnée égale à 0. Sa sortie fournit le signal COUNTNIL qui reste à 0 tant que COUNT est différent de O. Le décodeur auxiliaire 48 reçoit le code de l'état suivant NSC et fournit les signaux internes de contrôle SETCOUNT, DECCOUNT, qui sont ainsi mis à jour avant que la machine d'états passe de l'état courant à l'état suivant. Ainsi, lorsque l'état suivant devient l'état courant, c'est-à- dire lorsque la bascule 41 et le compteur 46 reçoivent un front montant du signal d'horloge primaire CK1, les valeurs des signaux SETCOUNT, DECCOUNT sont à jour sur les entrées LOAD et DEC du compteur 46, de sorte que celui-ci charge la consigne RS si SETCOUNT=1 ou décrémente la variable COUNT si DECCOUNT=1 au début du cycle d'horloge. La machine d'états fonctionne ainsi conformément au diagramme de la figure 4. La production du signal d'horloge secondaire CK2 est assuré par un circuit de commande 50 auquel le code de l'état courant CSC est appliqué. Ce circuit de commande 50 est ici un simple décodeur comprenant une porte 51 de type NON ET à 5 entrées et deux portes inverseuses 52, 53. Les portes inverseuses 52, 53 reçoivent respectivement les bits cl, c2 du code CSC. La porte 51 reçoit sur une première entrée le bit cO du code CSC, sur une deuxième entrée la sortie de la porte 52, sur une troisième entrée la sortie de la porte 53, et sur ses deux autres entrées les bits c3, c4 du code CSC. Ainsi, le signal CK2 passe à 1 quand la machine d'états est dans l'état SETCK2 (code 00110) et passe à 0 dans les autres cas. Le rapport cyclique du signal CK2 est ici égal au nombre de cycles du signal d'horloge primaire CKi pendant lequel la machine d'états est maintenue dans l'état RSTCK2, ce nombre étant fonction de la consigne RS. Il apparaîtra clairement à l'homme de l'art que la présente invention est susceptible de divers autres modes de réalisation, notamment en ce qui concerne la structure du décodeur de l'état courant, la structure du circuit de sélection d'état, et la structure du. circuit logique fournissant le signal d'erreur, ces éléments étant susceptibles de diverses variantes à la portée de l'homme de l'art. D'autre part, la présente invention est bien évidemment susceptible de diverses autres applications que celle décrite ci-dessus à titre d'exemple non limitatif, notamment des applications bien connues de l'homme de l'art comme la réalisation de circuits de cryptographie, d'unités centrales de microprocesseurs, etc. Dans certaines applications, un circuit intégré selon l'invention peut comprendre des dizaines voire des centaines de machines d'états selon l'invention, chacune fournissant un signal d'erreur. De multiples signaux d'erreur devront donc être gérés collectivement. La figure 6 représente schématiquement un circuit intégré 60 comprenant une pluralité de machines d'états selon l'invention, et montre comment les signaux d'erreur individuels émis par les machines d'états peuvent être gérés collectivement. Les machines d'états sont arrangées en groupes GO..Gn, chaque groupe comprenant des sous-groupes SGO...SGn, chaque sous-groupe comprenant une pluralité de machines d'états SMO...SMn. Dans chaque sous-groupe SGO...SGn les signaux d'erreur ERSO...ERSn fournis par les machines d'états sont collectés par une porte OU 61 pour former un signal d'erreur de sous-groupe ERSO,O...ERSO,n. Dans chaque groupe, les signaux d'erreur de sous-groupes sont collectés par une porte OU 62 pour former un signal d'erreur de groupe GERSO...GESRn. Les signaux d'erreur de groupes sont ensuite collectés par une porte OU 63 qui fournit un signal d'erreur général GERS. Le signal GERS est mémorisé par une bascule synchrone 64pour obtenir un signal d'erreur général synchrone SGERS, qui est renvoyé sur l'entrée D de la bascule 64 par l'intermédiaire d'une porte OU 65 afin d'être rafraîchi à chaque cycle d'horloge. La bascule synchrone 64 est synchronisée par le signal d'horloge CK1 car, comme indiqué plus haut, c'est sur le front montant du signal CK1 que les signaux d'erreur individuels sont valides. Le signal d'erreur général SGERS peut être utilisé de diverses manières à la portée de l'homme de l'art pour bloquer ou remettre à zéro le circuit intégré 60, ou des parties du circuit intégré, notamment pendant l'exécution d'un calcul ou d'une opération sensible. REVENDICATIONS 1. Machine d'états à logique câblée (30, 40) présentant un nombre prédéterminé d'états correspondant chacun à un code prédéterminé (SCO, SC1, SC2, SCk) et comprenant: - une bascule synchrone (31, 41) recevant un code de l'état suivant (NSC) et fournissant un code de l'état courant (CSC), en synchronisation avec un signal d'horloge (CK1), et - un circuit de transition d'état (32, 42) pour fournir à la bascule le code de l'état suivant (NSC) en fonction du code de l'état courant (CSC) et de signaux de contrôle (INO-INn, ON/OFF, RS), caractérisée en ce que les codes prédéterminés (SCO, SC1, SC2, SCk) de la machine d'états présentent les uns relativement aux autres une distance de Hamming au moins égale à 2, et en ce que le circuit de transition d'état comprend: - un décodeur de l'état courant (33, 43) effectuant un décodage pleine échelle du code de l'état courant (CSC), 20 et - des moyens (35, 45) pour fournir un signal d'erreur (ERS) ayant une valeur active déterminée lorsqu'un code de l'état courant ne correspond à aucun code prédéterminé. 2. Machine d'états selon la revendication 1, dans laquelle les codes prédéterminés (SCO, SC1, SC2, SCk) de la machine d'états présentent les uns relativement aux autres une distance de Hamming au moins égale à 3. 3. Machine d'états selon la revendication 1, dans laquelle les codes prédéterminés (SCO, SC1, SC2, SCk) de la machine d'états présentent les uns relativement aux autres une distance de Hamming au moins égale à 4. 4. Machine d'états selon l'une des revendications 1 à 3, dans laquelle un code ne comprenant que des bits à 0 ou que des bits à 1 est un code interdit dont l'apparition dans la machine d'états active le signal d'erreur (ERS). 5. Machine d'états selon l'une des revendications 1 à 4, dans laquelle le décodeur de l'état courant (33, 43) comprend des comparateurs (COMPO, COMP1, COMP2, COMPk) recevant chacun le code de l'état courant (CSC) et l'un des codes prédéterminés (SCO, SC1, SC2, SCk), et fournissant un signal d'identification d'état (IDO, ID1, ID2, IDk) ayant une valeur active déterminée si les deux codes sont identiques, chaque comparateur effectuant une comparaison des deux codes portant sur l'ensemble de leurs bits constitutifs. 6. Machine d'états selon la revendication 5, comprenant un circuit logique (35, 45) recevant les signaux d'identification d'état (IDO, ID1, ID2, IDk) fournis par les comparateurs (COMPO, COMP1, COMP2, COMPk), et fournissant le signal d'erreur (ERS) si aucun des signaux d'identification ne présente la valeur déterminée. 7. Circuit intégré (60) comprenant une pluralité de machines d'états (SMOSMn) selon l'une des revendications 1 à 6, et des portes logiques (61, 62, 63, 65) pour combiner les signaux d'erreurs émis par l'ensemble des machines d'états et fournir un signal d'erreur général (GERS, SGERS). 8. Procédé de réalisation d'une machine d'états à logique câblée présentant un nombre prédéterminé d'états correspondant chacun à un code prédéterminé (SCO, SC1, SC2, SCk), et comprenant une bascule synchrone (31, 41) recevant un code de l'état suivant (NSC) et fournissant un code de l'état courant (CSC), en synchronisation avec un signal d'horloge (CK1) , et un circuit de transition d'état (32, 42) pour fournir à la bascule le code de l'état suivant (NSC) en fonction du code de l'état courant (CSC) et de signaux de contrôle (INO-INn, ON/OFF, RS), procédé caractérisé en ce qu'il comprend les étapes suivantes: - attribuer à la machine d'états des codes prédéterminés (SCO, SC1, SC2, SCk) présentant les uns relativement aux autres une distance de Hamming au moins égale à 2, - prévoir dans le circuit de transition d'état un décodeur de l'état courant (33, 43) effectuant un décodage pleine échelle du code de l'état courant (CSC), et - prévoir dans la machine d'états des moyens {35, 45) pour fournir un signal d'erreur ayant une valeur active déterminée lorsque le code de l'état courant ne correspond à aucun code prédéterminé (SCO, SC1, SC2, SCk). 9. Procédé selon la revendication 8, comprenant l'attribution à la machine d'états de codes prédéterminés (SCO, SC1, SC2, SCk) présentant les uns relativement aux autres une distance de Hamming au moins égale à 3. 10. Procédé selon la revendication 8, comprenant l'attribution à la machine d'états de codes prédéterminés (SCO, SC1, SC2, SCk) présentant les uns relativement aux autres une distance de Hamming au moins égale à 4. 11. Procédé selon l'une des revendications 8 à 10, comprenant le fait de ne jamais attribuer à un état de la machine d'états un code qui ne comprend que des bits à 0 ou que des bits à 1. 12. Procédé selon l'une des revendications 8 à 11, comprenant la prévision, dans le décodeur de l'état courant, de comparateurs (COMPO, COMP1, COMP2, COMPk) recevant chacun le code de l'état courant et l'un des codes prédéterminés (SCO, SC1, SC2, SCk), et fournissant un signal d'identification d'état (IDO, ID1, ID2, IDk) ayant une valeur active déterminée si les deux codes sont identiques, chaque comparateur effectuant une comparaison des deux codes portant sur l'ensemble de leurs bits constitutifs. 13. Procédé selon la revendication 12, comprenant la prévision d'un circuit logique (35, 45) recevant les signaux d'identification d'état (IDO, IDl, ID2, IDk) fournis par les comparateurs (COMPO, COMP1, COMP2, COMPk), et fournissant un signal d'erreur (ERS) si aucun des signaux d'identification ne présente la valeur déterminée. 14. Procédé selon l'une des revendications 8 à 13, comprenant la prévision, dans un circuit intégré (60) comprenant une pluralité de machines d'états (SMO-SMn), de portes logiques (61, 62, 63, 65) pour combiner le signal d'erreur (ERS) et d'autres signaux d'erreurs envoyés par d'autres machines d'états, et fournir un signal d'erreur général (GERS, SGERS).