FR 2984553 A1 20130621 FR 1161673 A 20111215 B11398FR - 11-ZV2-0966FR01 1 PROCÉDÉ ET DISPOSITIF DE DÉTECTION DE FAUTES Domaine de l'invention La présente invention concerne le domaine de la détection de fautes, et en particulier un dispositif et un procédé destinés à exécuter une fonction de calcul protégée contre des 5 attaques par injection de fautes. Arrière-plan Des circuits intégrés peuvent comprendre des circuits qui sont considérés comme sensibles au vu de la sécurité des données qu'ils traitent, COmle des clés d'authentification, des 10 signatures, etc., ou des algorithmes qu'ils utilisent, comme des algorithmes de chiffrage ou de déchiffrage. De telles informations ne doivent pas être communiquées ni être détectables par des tiers ou par des circuits non autorisés. Un procédé courant pour découvrir de façon frauduleuse 15 des informations manipulées par un circuit intégré consiste à détecter, dans le circuit, les zones qui sont utilisées pendant le traitement de ces informations. Pour cela, le circuit est activé ou placé d'une autre façon dans un environnement fonctionnel, et des données à traiter par le circuit sont intro- 20 duites en entrée. Ensuite, pendant que les données sont traitées, par exemple, la surface du circuit intégré est balayée par un laser pour injecter des fautes dans le fonctionnement du B11398FR - 11-ZV2-0966iR01 2 circuit, et en particulier pour faire basculer l'état de tension mémorisé sur un ou plusieurs noeuds du circuit. En analysant en parallèle les sorties du circuit, les zones qui sont utilisées pour traiter les données peuvent être déterminées. Après avoir localisé de telles zones, le pirate peut alors concentrer les attaques sur ces zones afin de découvrir les informations secrètes. L'injection de fautes peut aussi être utilisée pour contourner des vérifications de sécurité ou pour déduire des 10 informations secrètes par l'intermédiaire de la modification des données en cours de traitement. Une solution pour se protéger contre des attaques par injection de fautes consiste à prévoir deux dispositifs de traitement agencés pour fonctionner en parallèle sur les mêmes 15 données d'entrée. En comparant les résultats générés par ces deux dispositifs, l'injection d'une faute peut être détectée. Cependant, une telle solution a un coût matériel relativement élevé. Une solution alternative qui évite l'utilisation de 20 deux dispositifs de traitement consiste à exécuter deux fois la fonction sensible en utilisant le même dispositif de traitement et avec les mêmes données d'entrée. Cependant, un inconvénient des mises en oeuvre existantes de ce type de solution est qu'elles nécessitent des ressources de mémoire relativement élevées. 25 Résumé Un objet des modes de réalisation décrits ici est de répondre au moins partiellement à un ou plusieurs besoins de l'art antérieur. Selon un aspect de la présente invention, on prévoit 30 un procédé mis en oeuvre par un dispositif de traitement comprenant les étapes suivantes : réaliser, par le dispositif de traitement, une première exécution d'une fonction de calcul sur la base d'un ou plusieurs paramètres initiaux mémorisés dans un premier dispositif mémoire, l'exécution de la fonction de calcul 35 générant une ou plusieurs valeurs modifiées d'au moins l'un des B11398FR - 11-ZV2-0966FR01 3 paramètres initiaux, et pendant la première exécution, lesdits un ou plusieurs paramètres initiaux étant lus dans le premier dispositif mémoire et lesdites une ou plusieurs valeurs modifiées étant mémorisées dans un deuxième dispositif mémoire ; et réaliser, par le dispositif de traitement, une deuxième exécution de la fonction de calcul sur la base desdits un ou plusieurs paramètres initiaux mémorisés dans le premier dispositif mémoire. Selon un mode de réalisation, pendant la deuxième exécution, lesdits un ou plusieurs paramètres initiaux sont lus dans le premier dispositif mémoire et lesdites une ou plusieurs valeurs modifiées sont mémorisées dans le premier dispositif mémoire. Selon un autre mode de réalisation, avant la réali15 sation de la première exécution, le procédé comprend en outre la mémorisation desdits un ou plusieurs paramètres initiaux dans le premier dispositif mémoire. Selon un autre mode de réalisation, le procédé comprend en outre, pendant la première exécution de la fonction de 20 calcul, les étapes suivantes : recevoir, par le deuxième dispositif mémoire, une instruction d'écriture associée avec une première adresse dans le premier dispositif mémoire et avec une première valeur de données ; mémoriser la première valeur de données dans le deuxième dispositif mémoire et mémoriser la 25 première adresse en tant que valeur d'indexation dans le deuxième dispositif mémoire en association avec la première valeur de données ; recevoir, par le deuxième dispositif mémoire, une instruction de lecture associée avec la première adresse ; localiser la première valeur de données dans le 30 deuxième dispositif mémoire sur la base de la première adresse ; et sortir la première valeur de données du deuxième dispositif mémoire. Selon un autre mode de réalisation, le procédé comprend en outre la comparaison d'au moins une valeur générée pendant la 35 première exécution de la fonction de calcul avec au moins une B11398FR - 11-ZV2-0966FR01 4 valeur générée pendant la deuxième exécution de la fonction de calcul. Selon un autre mode de réalisation, l'opération de comparaison comprend la lecture, dans le deuxième dispositif mémoire, de ladite au moins une valeur générée pendant la première exécution et la lecture, dans le premier dispositif mémoire, de ladite au moins une valeur générée pendant la deuxième exécution. Selon un autre mode de réalisation, le procédé comprend en outre les étapes suivantes : calculer une première valeur de vérification sur la base d'une pluralité de valeurs générées par la première exécution de la fonction de calcul ; calculer une deuxième valeur de vérification sur la base d'une pluralité de valeurs générées par la deuxième exécution de la fonction de calcul ; comparer les première et deuxième valeurs de vérification. Selon un autre mode de réalisation, la première valeur de vérification comprend la somme de la pluralité de valeurs générée par la première exécution et la deuxième valeur de vérification comprend la somme de la pluralité de valeurs générée par la deuxième exécution. Selon un autre mode de réalisation, la première valeur de vérification est calculée en tant que vérification de redondance cyclique sur la base de la pluralité de valeurs générée par la première exécution, et la deuxième valeur de vérification est calculée en tant que vérification de redondance cyclique sur la base de la pluralité de valeurs générée par la deuxième exécution. Selon un autre aspect de la présente invention, on 30 prévoit un procédé pour détecter l'occurrence d'une attaque par injection de fautes pendant l'exécution d'une fonction de calcul, comprenant le procédé susmentionné. Selon un autre aspect de la présente invention, on prévoit un dispositif de calcul comprenant un dispositif de 35 traitement agencé pour réaliser des première et deuxième exécu- B11398FR - 11-ZV2-0966tu01 tions d'une fonction de calcul sur la base d'un ou plusieurs paramètres initiaux, la fonction de calcul générant une ou plusieurs valeurs modifiées d'au moins l'un des paramètres initiaux ; un premier dispositif mémoire agencé pour mémoriser 5 ledit au moins un paramètre initial ; et un deuxième dispositif mémoire couplé au dispositif de traitement et au premier dispositif mémoire ; dans lequel le dispositif de traitement est agencé pour lire, pendant la première exécution, lesdits un ou plusieurs paramètres initiaux dans le premier dispositif mémoire 10 et pour mémoriser, pendant la première exécution, lesdites une ou plusieurs valeurs modifiées dans le deuxième dispositif mémoire. Selon un autre mode de réalisation, le dispositif de traitement est agencé pour lire, pendant la deuxième exécution, lesdits un ou plusieurs paramètres initiaux dans le premier 15 dispositif mémoire et pour mémoriser, pendant la deuxième exécution, lesdites une ou plusieurs valeurs modifiées dans le premier dispositif mémoire. Selon un autre mode de réalisation, le deuxième dispositif mémoire comprend une entrée d'activation couplée au dispo- 20 sitif de traitement, et le deuxième dispositif mémoire est agencé pour transférer, lorsqu'il est désactivé, toutes les instructions d'écriture et de lecture vers le premier dispositif mémoire. Selon un autre mode de réalisation, le deuxième dispo- 25 sitif mémoire est agencé pour recevoir, pendant la deuxième exécution, des instructions de lecture à partir du dispositif de traitement et pour transférer les instructions de lecture vers le premier dispositif mémoire si elles concernent l'un des paramètres initiaux. 30 Selon un autre mode de réalisation, le dispositif de traitement comprend en outre un bloc de vérification adapté à comparer au moins une valeur générée pendant la première exécution de la fonction de calcul à au moins une valeur générée pendant la deuxième exécution de la fonction de calcul. B11398FR - 11-ZV2-0966FR01 6 Brève description des dessins Les objets, fonctionnalités, aspects et avantages susmentionnés, et d'autres, de modes de réalisation de la présente invention apparaîtront à la lecture de la description détaillée suivante de modes 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 un dispositif de calcul selon un exemple de réalisation ; la figure 2 est un organigramme représentant des opérations dans un procédé d'exécution d'une fonction de calcul selon un exemple de réalisation ; la figure 3 illustre un dispositif de calcul selon un mode de réalisation de la présente invention ; la figure 4A est un organigramme représentant des opérations dans un procédé selon un mode de réalisation de la présente invention ; la figure 4B est un organigramme représentant des opérations pour mettre en oeuvre une instruction de lecture 20 selon un mode de réalisation de la présente invention, la figure 5 illustre un dispositif de calcul selon encore un autre mode de réalisation de la présente invention ; la figure 6 est un organigramme représentant des opérations dans un procédé selon un autre mode de réalisation de 25 la présente invention ; et la figure 7 illustre une interface de mémoire selon un autre mode de réalisation de la présente invention. Description détaillée Dans la description suivante, seuls les aspects utiles 30 pour une compréhension des modes de réalisation de la présente invention seront décrits en détail. D'autres aspects, comme les fonctions de calcul particulières exécutées par le dispositif de traitement, n'ont pas été décrites en détail, puisqu'il sera clair pour l'homme de l'art que les modes de réalisation décrits 35 ici peuvent s'appliquer à une grande gamme de fonctions de B11398FR - 11-ZV2-0966FR01 7 calcul, pour des applications cryptographiques ou d'autres types d'applications. La figure 1 illustre un exemple de dispositif de calcul 100 comprenant un dispositif de traitement 102 pour exécuter une fonction de calcul, sur la base d'instructions mémorisées dans une mémoire d'instructions 104. Un dispositif mémoire 106 est couplé au dispositif de traitement, et comprend une zone mémoire 106A fournissant un espace d'exécution utilisé pendant l'exécution de la fonction de calcul, une zone mémoire 106B mémorisant une copie de l'état initial de la zone mémoire 106A, et une zone mémoire 106C mémorisant un état final de la zone mémoire 106C. Un ou plusieurs dispositifs d'entrée/sortie 108 peuvent être prévus, comme des claviers ou des pavés de touches, 15 des afficheurs, etc. La figure 2 est un organigramme représentant des opérations réalisées pendant l'exécution de la fonction de calcul, qui est exécutée deux fois en utilisant le dispositif 100 de la figure 1, conformément à une solution qui a été 20 proposée pour détecter une attaque par injection de fautes. Dans une première opération 201, la mémoire 106, et en particulier la zone mémoire 106A, est initialisée. En particulier, des paramètres initiaux à utiliser pendant l'exécution de la fonction de calcul sont chargés dans la zone mémoire 106A. 25 Ces paramètres peuvent inclure certaines valeurs de données utilisées pendant la fonction de calcul, qui pourraient être des valeurs prédéterminées, et/ou des valeurs reçues sur des entrées du dispositif de calcul 100. Elles pourraient aussi inclure une ou plusieurs clés cryptographiques. 30 Dans une opération suivante 202, l'état initial de l'espace d'exécution 106A est copié dans la zone mémoire 106B, y compris les paramètres initiaux. Dans une opération suivante 204, la fonction de calcul est appelée, ce qui implique le chargement et l'exécution 35 d'instructions à partir de la mémoire d'instructions 104, et va B11398FR - 11-ZV2-0966FR01 8 entraîner la lecture et l'écriture d'une ou plusieurs valeurs de données dans l'espace d'exécution fourni par la zone mémoire mémoire 106A. Dans une opération suivante 206, après l'exécution de 5 la fonction de calcul, l'état final présent dans la zone mémoire 106A est mémorisé dans la zone mémoire 106C. La fonction de calcul est ensuite exécutée une deuxième fois. En tant qu'opération initiale 208 de la deuxième exécution, l'état initial mémorisé dans la zone mémoire 106B est 10 restauré dans l'espace d'exécution 106A. Dans une opération suivante 210, la fonction de calcul 210 est appelée de nouveau, impliquant de nouveau un chargement et une exécution des instructions à partir de la mémoire d'instruction 104, et va de nouveau provoquer la lecture et 15 l'écriture d'une ou plusieurs valeurs de données dans l'espace d'exécution fourni par la zone mémoire 106A. Dans une opération suivante 212, le nouvel état final présent dans la zone mémoire 106A est comparé à l'état final mémorisé dans la zone mémoire 106C, et les éventuelles diffé- 20 rences entre les valeurs de données de ces états vont indiquer la présence d'une faute. Un inconvénient du procédé de la figure 2 est que, en raison de l'utilisation simultanée des trois zones mémoire 106A, 106B et 106C, la mémoire 106 devra avoir une taille relativement 25 grande. La figure 3 illustre un dispositif de calcul 300 selon un mode de réalisation de la présente invention. Le dispositif 300 comprend un dispositif de traitement 302, qui est couplé à une mémoire d'instructions 304 mémorisant 30 des instructions d'une fonction de calcul à exécuter par le dispositif de traitement 302. Un dispositif mémoire 306 comprend une zone mémoire 306A, et un dispositif mémoire intermédiaire 307 est couplé entre le dispositif de traitement 302 et le dispositif mémoire 306, et comprend une zone mémoire 307A. En 35 particulier, le dispositif mémoire 307 reçoit des valeurs B11398FR - 11-ZV2-0966.EK01 9 d'adresse (1=) sur des lignes 308 pour des opérations de lecture, et des valeurs d'adresse et de données (DATA) sur les lignes 308 et des lignes 310 pour des opérations d'écriture, à partir du dispositif de traitement 302. Les données lues sont fournies sur des lignes 312 vers le dispositif de traitement 302. En outre, le dispositif mémoire 307 transfère des valeurs d'adresse pour des opérations de lecture sur des lignes 314, et des valeurs d'adresse et de données sur les lignes 314 et des lignes 316 pour des opérations d'écriture. Les données lues sont reçues par le dispositif mémoire 307 en provenance du dispositif mémoire 306 sur des lignes 318. Le dispositif mémoire 307 comprend par exemple une entrée d'activation recevant un signal d'activation EN sur une ligne 319, en provenance du dispositif de traitement 302. Comme dans le mode de réalisation de la figure 1, le dispositif de calcul 300 peut comprendre une ou plusieurs entrées/sorties, notées 320 en figure 3. On va maintenant décrire plus en détail le fonctionnement du dispositif de calcul 300, en référence à l'orga- nigramme de la figure 4A. Les opérations de la figure 4A sont par exemple mises en oeuvre sous le contrôle du dispositif de traitement 302. Dans une première opération 401, la mémoire 306 est initialisée. En particulier, comme cela a été décrit précé- demment en référence à l'opération 201 de la figure 2, des paramètres initiaux à utiliser pendant l'exécution de la fonction de calcul sont chargés dans la zone mémoire 306A. Ces paramètres peuvent inclure certaines valeurs de données utilisées dans la fonction de calcul, certaines d'entre elles pouvant être des valeurs prédéterminées, et/ou des valeurs reçues par une ou plusieurs entrées 320 du dispositif de calcul 300. Ils pourraient aussi inclure une ou plusieurs clés cryptographiques. D'autres exemples des paramètres initiaux comprennent toutes les données faisant partie de l'espace mémoire utilisé par la B11398FR - 11-ZV2-0966FR01 10 fonction de calcul, comme des variables globales et des variables locales. Dans une opération suivante 402, la fonction de calcul est appelée avec la mémoire intermédiaire 307 activée par 5 l'intermédiaire de la ligne 319. L'exécution de la fonction de calcul implique le chargement et l'exécution d'instructions à partir de la mémoire d'instructions 104, et va provoquer la lecture des paramètres initiaux mémorisés dans la zone mémoire 306A, et la génération d'une ou plusieurs valeurs modifiées des 10 paramètres. Avec la mémoire intermédiaire 307 activée, toutes les opérations de mémoire lancées par le dispositif de traitement vont être traitées en premier par la mémoire intermédiaire 307. Certaines opérations d'écriture, au moins celles qui concernent 15 les paramètres initiaux mémorisés dans la zone mémoire 306A, ne sont pas écrites dans la zone mémoire 306A mais sont écrites dans la zone mémoire 307A. En particulier, la mémoire 307A est par exemple une mémoire associative. Une mémoire associative est une mémoire dans laquelle chacune des valeurs de données 20 mémorisées est associée à une autre valeur d'indexation, et cette valeur d'indexation est utilisée, pendant une opération de lecture, pour localiser la valeur de données mémorisées à lire. Ainsi, si une opération d'écriture d'une valeur de données D1 a pour cible une adresse mémoire ADDR1 dans la zone mémoire 306A, 25 la valeur de données D1 est écrite par exemple dans la zone mémoire 307A, et l'adresse ADDR1 est aussi mémorisée dans la zone mémoire 307A en tant que valeur d'indexation associée à la valeur de données Dl. Une opération future de lecture concernant l'adresse ADDR1 va être dirigée vers la zone mémoire 307A, et en 30 utilisant l'adresse ADDR1 en tant que valeur d'indexation, la valeur de donnée D1 peut être localisée et lue. Ainsi, toutes les opérations de lecture concernant des valeurs de données qui ont été mémorisées dans la zone mémoire 307A vont être lues dans le dispositif mémoire 307, alors que des opérations de lecture 35 dirigées vers l'un quelconque des paramètres initiaux mémorisés B11398FR - 11-ZV2-0966.bR01 11 dans la mémoire 306A ne vont pas être trouvées dans la zone mémoire 307A, et vont au lieu de cela être transférées vers la zone mémoire 306A. La figure 4B illustre un exemple d'opérations réali- Sées par le dispositif mémoire 307, pendant l'exécution de la fonction de calcul de l'opération 402 de la figure 4A, en réponse à une instruction de lecture reçue du dispositif de traitement 302 de la figure 3. Dans une première opération 402A, une instruction de 10 lecture pour une adresse ADDRA de la zone de la zone mémoire 306A est reçue par le dispositif mémoire 307. Dans une opération suivante 402B, une recherche est effectuée dans dispositif mémoire 307, en utilisant l'adresse ADDRA comme valeur d'indexation. 15 Dans une opération suivante 402C, on détermine si la valeur d'indexation ADDRA a généré ou pas une concordance dans le dispositif mémoire 307. Si oui, l'opération suivante est 402D, dans laquelle la valeur de données associée à cette valeur d'indexation dans la zone mémoire 307A est fournie en tant que 20 sortie vers le dispositif de traitement 302. Par contre, si la valeur d'indexation ADDRA n'a pas été trouvée, l'opération suivante est 402E, dans laquelle l'instruction de lecture est transférée vers le dispositif mémoire 306. Ainsi, la zone de mémoire intermédiaire 307A fournit 25 un espace de mémoire dans lequel des données peuvent être écrites et lues pendant la première exécution de la fonction de calcul, tandis que les paramètres initiaux peuvent être lus à partir de la zone de mémoire 306A mais ne sont pas écrasés. En référence de nouveau à la figure 4A, dans une 30 opération suivante 404, l'exécution de la fonction de calcul est répétée en appelant une deuxième fois la fonction de calcul, mais cette fois avec la mémoire intermédiaire désactivée, par exemple par un signal de désactivation sur la ligne 319. Lorsqu'elle est désactivée, toutes les opérations de mémoire 35 reçues par le dispositif mémoire intermédiaire 307 sont par B11398FR - 11-ZV2-0966FR01 12 exemple transférées directement au dispositif mémoire 306. Cela signifie que les paramètres initiaux utilisés pendant les première et deuxième exécutions de la fonction de calcul sont les mêmes, et en l'absence de fautes, la deuxième exécution de la fonction de calcul devrait être une répétition identique de la première exécution. Dans un exemple, l'état final mémorisé dans la zone mémoire 307A à la suite de la première exécution de la fonction de calcul n'est pas écrasé pendant la deuxième exécution. La zone mémoire 306A fournit l'espace d'exécution pendant la deuxième exécution de la fonction de calcul, et une fois que cette deuxième exécution est terminée, la zone de mémoire 306A mémorise l'état final. Dans une opération suivante 406, les résultats de deux exécutions de la fonction de calcul sont comparés. Par exemple, on vérifie que la valeur de données mémorisée à chaque adresse de la zone mémoire 307A est identique à la valeur de données de l'adresse correspondante de la zone mémoire 306A. Des divergences entre des valeurs de données correspondantes dans les zones de mémoire 306A, 307A peuvent indiquer l'injection d'une faute dans l'une de ces mémoires, dans le dispositif de traitement ou dans la mémoire d'instructions 304. Si la vérification indique la présence d'une faute, une contre-mesure doit être entreprise, comme par exemple la réinitialisation du dispositif de traitement, l'effacement des zones de mémoire 306A, 307A, et/ou l'incrémentation d'une valeur de comptage conduisant à une désactivation permanente du dispositif de traitement si un certain nombre de fautes est détecté. La figure 5 illustre un dispositif de traitement 500 selon une variante de réalisation. Le dispositif 500 comprend de nombreux éléments communs avec le dispositif de calcul 300 de la figure 3, et ces éléments ont été notés avec les mêmes références et ne vont pas être décrits de nouveau en détail. Le dispositif 500 comprend un bloc de vérification 502 couplé de façon à recevoir les valeurs d'adresse et de données 35 transmises sur les lignes 308, 310 et 312 entre le dispositif de B11398FR - 11-ZV2-0966FR01 13 traitement 302 et le dispositif de mémoire intermédiaire 307. En outre, le bloc de vérification 502 peut aussi recevoir des données d'instructions à partir de la mémoire d'instructions 304 sur une ligne 504, qui est couplée à la connexion entre la mémoire d'instructions 304 et le dispositif de traitement 302. Ainsi, le bloc de vérification 502 reçoit par exemple une copie de toutes les instructions chargées dans le dispositif de traitement 302 pendant l'exécution des fonctions de calcul. Le bloc de vérification 502 enregistre les données provenant de ces diverses sources en calculant une valeur de somme de vérification, par exemple égale à la somme de toutes les valeurs qu'il reçoit. Par exemple, en supposant que les valeurs de données soient des valeurs sur n bits, la somme pourrait être calculée en tant que somme, modulo n, des valeurs de données et des valeurs d'adresse. La valeur de n pourrait par exemple être comprise entre 8 et 64 bits. Le bloc de vérification 502 calcule par exemple une première somme de vérification pendant la première exécution de la fonction de calcul, et une deuxième somme de vérification pendant la deuxième exécution de la fonction de calcul, et compare ces sommes de vérification pour vérifier qu'elles concordent. Si elles ne concordent pas, cela peut indiquer l'injection d'une faute dans l'une des mémoires 304, 306, 307 ou dans le dispositif de traitement 302 pendant la première ou la deuxième exécution. On va maintenant décrire un flux d'opérations modifié sur la base de l'utilisation du bloc de vérification 502, en référence à l'organigramme de la figure 6. Les opérations de la figure 6 sont mises en oeuvre par exemple sous le contrôle du dispositif de traitement 302. Dans une première opération 601, la mémoire 306 est initialisée. En particulier, comme cela a été décrit précédemment en référence à l'opération 401 de la figure 4A, des paramètres initiaux à utiliser pendant l'exécution de la fonction de calcul sont chargés dans la zone mémoire 306A. B11398FR - 11-ZV2-0966FR01 14 Ensuite, dans une étape suivante 602, la somme de vérification mise en oeuvre par le bloc de vérification 502 est démarrée, de sorte qu'à partir de ce moment, tous les signaux de données et les signaux d'adresse fournis sur les lignes 308 à 312, et optionnellement les instructions provenant de la mémoire d'instructions 304, sont additionnés. Dans une opération suivante 604, d'une manière similaire à l'opération 402 de la figure 4A, la fonction de calcul est appelée avec la mémoire intermédiaire 307 activée. Ainsi, la zone mémoire 307A est utilisée comme espace d'exécution, et seules les opérations de lecture concernant les paramètres initiaux sont transférées vers le dispositif mémoire 306. Dans une opération suivante 606, le calcul de la somme de vérification par le bloc de vérification 502 est stoppé, et 15 la valeur atteinte est par exemple mémorisée pour une vérification future. Dans une opération suivante 608, la somme de vérification est de nouveau activée en préparation de la deuxième exécution de la fonction de calcul. 20 Dans une opération suivante 610, l'exécution de la fonction de calcul est répétée en l'appelant une deuxième fois. Comme avec l'opération 404 de la figure 4A, le dispositif mémoire intermédiaire 307 est désactivé pendant la deuxième exécution dans l'opération 610. Ainsi, pendant la deuxième exé- 25 cution, toutes les opérations mémoire reçues par le dispositif mémoire intermédiaire 307 sont par exemple transférées directement au dispositif mémoire 306. Le calcul par le bloc de vérification 502 de la somme de vérification pendant la deuxième exécution de la fonction de 30 calcul pourrait être mise en oeuvre selon différentes façons. Une possibilité, en supposant que la première somme de vérification calculée pendant la première exécution a été transférée vers un registre/mémoire séparé, serait de réinitialiser simplement le registre utilisé pour accumuler la somme de vérification, et de 35 calculer la deuxième somme de vérification dans ce registre. A B11398FR - 11-ZV2-0966FR01 15 titre de variante, le bloc de vérification 502 peut comprendre deux registres, dont un premier est utilisé pour accumuler et mémoriser la somme de vérification pendant la première exécution de la fonction de calcul, et dont un deuxième est utilisé pour accumuler et mémoriser la somme de vérification pendant la deuxième exécution de la fonction de calcul. Dans une autre option, on pourrait calculer la première somme de vérification en ajoutant toutes les valeurs de données/adresses/instructions reçues, et le résultat pourrait rester dans le même registre après la première exécution de la fonction de calcul. Ensuite, pendant la deuxième exécution de la fonction de calcul, les valeurs de données reçues par le bloc de vérification 502 pourrait être soustraites de la première somme de vérification de sorte que la valeur dans le registre de somme de vérification serait égale à zéro à la fin de la deuxième exécution si aucune faute n'est présente. Une opération suivante 612 de la figure 6 implique l'arrêt de la somme de vérification et la vérification de la valeur, par exemple en comparant les première et deuxième sommes 20 de vérification et en vérifiant qu'elles sont égales. Comme précédemment, si la vérification de la somme de vérification indique la présence d'une faute, une contre-mesure peut être entreprise, comme par exemple en réinitialisant le dispositif de traitement, en effaçant les dispositifs mémoire 306, 307 et/ou 25 en incrémentant une valeur de comptage conduisant à une désactivation permanente du dispositif de traitement 302 si on détecte un certain nombre de fautes. Chacun des dispositifs mémoire 306, 307 pourrait être mis en oeuvre par une RAM (Mémoire à Accès Aléatoire), comme une 30 SRAM (RAM statique) ou un autre type de dispositif de mémoire programmable volatile. A titre de variante, le dispositif mémoire 306 pourrait être mis en oeuvre par une mémoire non volatile, comme par exemple une E2PROM (mémoire à lecture seule programmable effaçable électroniquement), comme on va le décrire 35 maintenant en référence à la figure 7. B11398FR - 11-ZV2-0966FR01 16 La figure 7 illustre le dispositif mémoire 306 et le dispositif mémoire intermédiaire 307, les deux étant couplés à un bus 700, qui est aussi par exemple couplé au dispositif de traitement 302 (non représenté en figure 7). Le dispositif mémoire 306 est une mémoire non volatile comprenant un réseau de mémoire non volatile 702, qui reçoit des signaux de commande et de données pour des opérations de lecture et d'écriture à partir d'un module d'interface mémoire 704 sur des lignes de commande 706. Le module d'interface mémoire 704 est couplé au bus 700 pour recevoir les signaux d'adresse et de données correspondant aux opérations d'écriture et de lecture, qu'il convertit en un format approprié pour le réseau de mémoire non volatile 702. Un signal d'activation est par exemple fourni sur une ligne 706 provenant du dispositif mémoire intermédiaire 307 à destination de l'interface mémoire 704, permettant au dispositif mémoire intermédiaire 307 de contrôler l'activation du dispositif de mémoire non volatile 306. Pendant la première exécution de la fonction de calcul, correspondant par exemple aux opérations 402 et 604 décrites précédemment, la ligne d'activation 706 désactive par exemple la mémoire non volatile 306, et la mémoire intermédiaire 307 réalise toutes les opérations de lecture et d'écriture, à moins qu'elles ne concernent des opérations de lecture des paramètres initiaux. Par exemple, si la mémoire intermédiaire 307 reçoit une requête d'opération de lecture pour un paramètre initial non mémorisé dans sa zone mémoire 307A, elle active le module d'interface mémoire par l'intermédiaire de la ligne 706, de sorte que l'opération de lecture est traitée par la mémoire non volatile 704 et les données correspondantes sont lues dans le réseau 702. Pendant la deuxième exécution de la fonction de calcul, correspondant par exemple aux opérations 404 et 610 décrites précédemment, la ligne d'activation 706 active par exemple la mémoire non volatile 306, et la mémoire non volatile réalise toutes les opérations de lecture et d'écriture. B11398FR - 11-ZV2-0966bR01 17 Un avantage des modes de réalisation décrits ici est que l'exécution d'une fonction de calcul peut être répétée en utilisant relativement peu de ressources de mémoire. En particulier, les paramètres initiaux sont mémorisés seulement pendant la première exécution de la fonction de calcul, économisant ainsi de l'espace mémoire. En outre, l'utilisation d'une somme de vérification évite de sauvegarder l'état final entier généré pendant la première exécution de la fonction de calcul. Avec la description ainsi faite d'un certain nombre de 10 modes de réalisation, 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 que la mise en oeuvre matérielle particulière des modes de réalisation décrits ici dépendra de l'application particulière, 15 et pourrait inclure des dispositifs mémoire séparés ou un seul dispositif mémoire contenant les zones mémoire 306A, 307A et la mémoire d'instructions 304. En outre, le contrôle particulier du ou des dispositifs mémoire pendant des opérations de lecture et d'écriture dépendra des types de mémoire utilisés. 20 Il sera aussi clair pour l'homme de l'art que divers algorithmes de somme de vérification différents pourraient être utilisés pour calculer les sommes de vérification, une simple addition des valeurs n'étant qu'un exemple. En outre, la somme de vérification pourrait être mise en oeuvre par une vérifi- 25 cation de redondance cyclique. Les opérations des divers organigrammes des figures 4A, 4B et 6 peuvent être mises en oeuvre entièrement par un logiciel exécuté par le dispositif de traitement 302 de la figure 3, bien que certaines opérations, telles que l'activation 30 ou la désactivation des dispositifs mémoire 306 et/ou 307 et la comparaison des résultats et des sommes de vérification, puissent être mises en oeuvre par une machine à états, faisant par exemple partie du dispositif de traitement 302. En outre, les diverses fonctionnalités décrites en 35 relation avec les divers modes de réalisation pourraient, dans B11398FR - 11-ZV2-0966FR01 18 des variantes de réalisation, être combinées selon des combinaisons quelconques. REVENDICATIONS1. Procédé mis en oeuvre par un dispositif de traitement (302), comprenant les étapes suivantes : réaliser, par le dispositif de traitement, une première exécution d'une fonction de calcul sur la base d'un ou 5 plusieurs paramètres initiaux mémorisés dans un premier dispositif mémoire (306), l'exécution de la fonction de calcul générant une ou plusieurs valeurs modifiées d'au moins l'un des paramètres initiaux, et pendant la première exécution, lesdits un ou plusieurs paramètres initiaux étant lus dans le premier 10 dispositif mémoire et lesdites une ou plusieurs valeurs modifiées étant mémorisées dans un deuxième dispositif mémoire (307) ; et réaliser, par le dispositif de traitement, une deuxième exécution de la fonction de calcul sur la base desdits 15 un ou plusieurs paramètres initiaux mémorisés dans le premier dispositif mémoire. 2. Procédé selon la revendication 1, dans lequel pendant la deuxième exécution, lesdits un ou plusieurs paramètres initiaux sont lus dans le premier dispositif mémoire 20 (306) et lesdites une ou plusieurs valeurs modifiées sont mémorisées dans le premier dispositif mémoire. 3. Procédé selon la revendication 1 ou 2, comprenant en outre, avant la réalisation de la première exécution, la mémorisation desdits un ou plusieurs paramètres initiaux dans le 25 premier dispositif mémoire (306). 4. Procédé selon l'une quelconque des revendications 1 à 3, comprenant en outre, pendant la première exécution de la fonction de calcul, les étapes suivantes : recevoir, par le deuxième dispositif mémoire, une 30 instruction d'écriture associée avec une première adresse dans le premier dispositif mémoire et avec une première valeur de données ; mémoriser la première valeur de données dans le deuxième dispositif mémoire et mémoriser la première adresse enB11398FR - 11-ZV2-0966FR01 20 tant que valeur d'indexation dans le deuxième dispositif mémoire en association avec la première valeur de données ; recevoir, par le deuxième dispositif mémoire, une instruction de lecture associée avec la première adresse ; localiser la première valeur de données dans le deuxième dispositif mémoire sur la base de la première adresse ; et sortir la première valeur de données du deuxième dispositif mémoire. 5. Procédé selon l'une quelconque des revendications 1 à 4, comprenant en outre une comparaison d'au moins une valeur générée pendant la première exécution de la fonction de calcul avec au moins une valeur générée pendant la deuxième exécution de la fonction de calcul. 6. Procédé selon la revendication 5, dans lequel l'opération de comparaison comprend la lecture, dans le deuxième dispositif mémoire (307), de ladite au moins une valeur générée pendant la première exécution et la lecture, dans le premier dispositif mémoire (306), de ladite au moins une valeur générée pendant la deuxième exécution. 7. Procédé selon l'une quelconque des revendications 1 à 6, comprenant en outre les étapes suivantes : calculer une première valeur de vérification sur la base d'une pluralité de valeurs générées par la première 25 exécution de la fonction de calcul ; calculer une deuxième valeur de vérification sur la base d'une pluralité de valeurs générées par la deuxième exécution de la fonction de calcul ; comparer les première et deuxième valeurs de vérifi- 30 cation. 8. Procédé selon la revendication 7, dans lequel la première valeur de vérification comprend la somme de la pluralité de valeurs générée par la première exécution et la deuxième valeur de vérification comprend la somme de la pluralité de 35 valeurs générée par la deuxième exécution.B11398FR - 11-ZV2-09661x01 21 9. Procédé selon la revendication 7, dans lequel la première valeur de vérification est calculée en tant que vérification de redondance cyclique sur la base de la pluralité de valeurs générée par la première exécution, et la deuxième valeur de vérification est calculée en tant que vérification de redondance cyclique sur la base de la pluralité de valeurs générée par la deuxième exécution. 10. Procédé pour détecter l'occurrence d'une attaque par injection de fautes pendant l'exécution d'une fonction de 10 calcul, le procédé comprenant le procédé de l'une quelconque des revendications 1 à 9. 11. Dispositif de calcul comprenant : un dispositif de traitement (302) agencé pour réaliser des première et deuxième exécutions d'une fonction de calcul sur 15 la base d'un ou plusieurs paramètres initiaux, la fonction de calcul générant une ou plusieurs valeurs modifiées d'au moins l'un des paramètres initiaux ; un premier dispositif mémoire (306) agencé pour mémoriser ledit au moins un paramètre initial ; et 20 un deuxième dispositif mémoire (307) couplé au dispo- sitif de traitement et au premier dispositif mémoire ; dans lequel le dispositif de traitement est agencé pour lire, pendant la première exécution, lesdits un ou plusieurs paramètres initiaux dans le premier dispositif mémoire 25 et pour mémoriser, pendant la première exécution, lesdites une ou plusieurs valeurs modifiées dans le deuxième dispositif mémoire. 12. Dispositif de calcul selon la revendication 11, dans lequel le dispositif de traitement est agencé pour lire, 30 pendant la deuxième exécution, lesdits un ou plusieurs paramètres initiaux dans le premier dispositif mémoire (306) et pour mémoriser, pendant la deuxième exécution, lesdites une ou plusieurs valeurs modifiées dans le premier dispositif mémoire (306).B11398FR - 11-ZV2-0966FR01 22 13. Dispositif de calcul selon les revendications 11 ou 12, dans lequel le deuxième dispositif mémoire (307) comprend une entrée d'activation couplée au dispositif de traitement (302), et dans lequel le deuxième dispositif mémoire est agencé 5 pour transférer, lorsqu'il est désactivé, toutes les instructions d'écriture et de lecture vers le premier dispositif mémoire (306). 14. Dispositif de calcul selon l'une quelconque des revendications 11 à 13, dans lequel le deuxième dispositif 10 mémoire (307) est agencé pour recevoir, pendant la deuxième exécution, des instructions de lecture à partir du dispositif de traitement (302) et pour transférer les instructions de lecture vers le premier dispositif mémoire si elles concernent l'un des paramètres initiaux. 15 15. Dispositif de calcul selon l'une quelconque des revendications 11 à 14, comprenant en outre un bloc de vérification (502) adapté à comparer au moins une valeur générée pendant la première exécution de la fonction de calcul à au moins une valeur générée pendant la deuxième exécution de la 20 fonction de calcul.