FR 3080474 A1 20191025 FR 1853578 A 20180424 DOMAINE DE L'INVENTION La présente invention concerne un procédé de contrôle de commandes mis en oeuvre par un dispositif tel qu'une carte à puce, et concerne un tel dispositif. ETAT DE LA TECHNIQUE De façon connue, une carte à puce reçoit généralement des commandes émises par un équipement extérieur, traite en interne de telles commandes, et émet des réponses à ces commandes à l'équipement. Une commande particulière est une commande de vérification d'un code candidat par la carte à puce. Sur réception d'une telle commande de vérification, la carte à puce met en oeuvre un traitement de vérification comprenant typiquement une comparaison entre le code candidat et un code secret mémorisé dans une mémoire non volatile de la carte à puce. Généralement, la vérification du code candidat est protégée à l'aide d'un compteur anti-rejeu (nommé - Pin Try Counter PTC » dans les spécifications EMV). Le compteur est incrémenté ou décrémenté chaque fois qu'une commande de vérification de code candidat se solde par un échec (c'est-à-dire que le code candidat est différent du code secret). Lorsque le compteur atteint un seuil prédéterminé, la carte à puce de se bloque. Pour contourner cette protection, une attaque connue consiste à mettre la carte à puce hors tension avant la fin de l'exécution de la commande de vérification, donc avant que la valeur du compteur ne soit modifiée. De cette manière, l'attaquant dispose d'une infinité d'essais pour tenter de deviner le code secret. EXPOSE DE L'INVENTION Un but de l'invention est de détecter une attaque visant à contourner une protection telle que celle mentionnée ci-dessus. Il est dès lors proposé un procédé de contrôle de commandes mis en oeuvre par un dispositif comprenant une mémoire non volatile contenant une première zone et une deuxième zone différente de la première zone, le procédé comprenant des étapes de : - écriture dans la première zone d'une première donnée sur réception par le dispositif d'une commande à traiter, avant traitement de la commande par le dispositif, - écriture dans la deuxième zone d'une deuxième donnée une fois que le traitement de la commande est terminé, - comparaison du contenu des première et deuxième zone lors d'une mise sous tension du dispositif, 2 - mise en oeuvre d'une mesure de protection seulement si la comparaison révèle que seule une parmi les première et deuxième données est présente dans les première et deuxième zones. L'écriture de la première donnée et l'écriture de la deuxième donnée dans la mémoire 5 non volatile ont pour effet de constituer une trace de ce qui a été déjà effectué par le dispositif, et de ce qui n'a pas encore effectué par le dispositif. Le fait qu'une seule parmi la première donnée et la deuxième donnée soit présente dans la mémoire non volatile lors d'une mise sous tension du dispositif est donc révélateur d'une précédente mise hors tension anormale du dispositif. Deux situations anormales sont 10 détectées : - s'il est révélé, au cours de la comparaison du contenu des deux zones, que la première donnée a été écrite dans la première zone, mais que la deuxième donnée n'est pas présente dans la deuxième zone, cela signifie qu'une mise hors tension du dispositif est survenue au cours du traitement de la commande, ce qui est suspect. 15 - s'il est révélé, au cours de la comparaison du contenu des deux zones, que la première donnée est absente de la première zone, mais que la deuxième donnée a été écrite dans la deuxième zone, il y a de fortes chances pour la mémoire non volatile ait été corrompue avant la mise hors tension, ce qui est également suspect. Il est donc avantageux de mettre en oeuvre une mesure de protection dans ce cas. 20 A l'opposé, le fait que la première donnée et la deuxième donnée soient toutes les deux présentes ou toutes les deux absentes dans les deux zones est révélateur d'un fonctionnement normal du dispositif : - s'il est révélé, au cours de la comparaison du contenu des deux zones, que la première donnée est absente de la première zone et que la deuxième donnée est absente de 25 la deuxième zone, cela signifie qu'une mise hors tension du dispositif est survenue avant que la commande ne soit traitée, ce qui est normal. - s'il est révélé, au cours de la comparaison du contenu des deux zones, que la première donnée est présente dans la première zone et que la deuxième donnée est présente dans la deuxième zone, cela signifie qu'une mise hors tension du dispositif est 30 survenue après la fin du traitement de la commande, ce qui est également considéré comme normal. Il n'est donc alors pas nécessaire de mettre en oeuvre la mesure de protection. En définitive, le procédé proposé permet de détecter des tentatives de contournement de protections (par exemple des protections par compteur anti-rejeu) impliquant une mise 3 hors tension anormale du dispositif, et de prendre des mesures appropriées en réponse à une telle détection. Le procédé peut également comprendre les caractéristiques optionnelles suivantes, prises seules ou en combinaison. 5 - le procédé comprend en outre les étapes suivantes : - l'étape d'écriture dans la première zone est répétée pour différentes commandes reçues et à traiter par le dispositif, de sorte à écrire dans la première zone plusieurs premières données respectivement associées aux différentes commandes reçues, - l'étape d'écriture dans la deuxième zone est répétée pour les différentes 10 commandes, de sorte à écrire dans la deuxième zone plusieurs deuxièmes données respectivement associées aux différentes commandes, - la mesure de protection est mise en oeuvre seulement si la comparaison révèle que, pour au moins une commande de référence parmi les commandes reçues, une seule parmi la première donnée associée à la commande de référence et la deuxième 15 donnée associée à la commande de référence est présente dans une des première et deuxième zone ; - les première et deuxième zones sont vierges avant les écritures, et ne sont effacées de sorte à les rendre à nouveau vierges qu'une fois qu'au moins une des zones a été remplie de premières ou deuxièmes données ; 20 - au moins une parmi la première zone et la deuxième zone est une page constituant une plus petite portion effaçable de la mémoire non volatile ; - chaque donnée est écrite dans une unité mémoire qui lui est propre, chaque unité mémoire constituant une plus petite portion inscriptible de la mémoire volatile ; - la première zone mémoire et la deuxième zone mémoire sont de mêmes tailles ; 25 - une première donnée associée à une commande et une deuxième donnée associée à la même commande sont de mêmes tailles ; - la mesure de protection comprend une mise à jour d'un compteur de sorte à rapprocher la valeur du compteur d'un seuil prédéterminé, le procédé comprenant en outre un blocage du dispositif lorsque la valeur du compteur atteint le seuil prédéterminé. 30 L'invention concerne en outre un produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé proposé, lorsque ce programme est exécuté par une unité de traitement de données. Elle concerne également un dispositif, tel qu'une carte à puce, comprenant : - une interface de communication pour recevoir des commandes, 4 - une mémoire non volatile adaptée pour contenir une première zone et une deuxième zone différente de la première zone, - une unité de contrôle de commandes configurée pour : o écrire dans la première zone d'une première donnée sur réception d'une 5 commande à traiter, avant traitement de la commande par le dispositif, o écrire dans la deuxième zone d'une deuxième donnée une fois que le traitement de la commande est terminé, o comparer du contenu des première et deuxième zone lors d'une mise sous tension du dispositif, 10 o mettre en oeuvre une mesure de protection seulement si la comparaison révèle que seule une parmi les première et deuxième données est présente dans les première et deuxième zones. 15 DESCRIPTION DES FIGURES D'autres caractéristiques, buts et avantages de l'invention ressortiront de la description qui suit, qui est purement illustrative et non limitative, et qui doit être lue en regard des dessins annexés sur lesquels : - La figure 1 illustre de façon schématique un dispositif selon un premier mode de 20 réalisation de l'invention ; - La figure 2 est un organigramme d'étapes d'un procédé de traitement de données selon un mode de mise en ouvre de l'invention ; - Les figures 3a, 3b, 3c représentent de manière schématique l'état de deux zones d'une mémoire non volatile à trois instants différents, au cours de la mise en oeuvre 25 du procédé de la figure 2. - La figure 4 est un organigramme d'autres étapes du procédé de traitement de la figure 2. Sur l'ensemble des figures, les éléments similaires portent des références identiques. 30 DESCRIPTION DETAILLEE DE L'INVENTION En référence à la figure 1, un dispositif 1 comprend une interface de communication 2, une mémoire 4, et une unité de traitement 6 de données. L'interface de communication 2 est adaptée pour faire communiquer le dispositif 1 avec un autre équipement 3, tel qu'un terminal. L'interface de communication 2 est notamment 5 adaptée pour recevoir des commandes destinées à être traitées par le dispositif 1, et pour émettre des réponses à de telles commandes. L'interface de communication 2 comprend par exemple au moins un contact électrique susceptible d'être électriquement connecté à un contact électrique de l'équipement 3. Des 5 données peuvent ainsi être communiquées entre le dispositif 1 et l'équipement 3 via ces contacts. En variante ou en complément, l'interface de communication 2 est de type sans contact, par exemple en champ proche (NEC en anglais). Dans ce cas, l'interface de communication 2 comprend une antenne adaptée pour communiquer avec une antenne de l'équipement 3. 10 La mémoire 4 comprend une mémoire volatile 8, par exemple de type RAM. La mémoire volatile 8 peut comprendre une ou plusieurs composants de mémoire physique. La mémoire volatile 8 6 a pour fonction de mémoriser temporairement des données, par exemple des données calculées par le processeur 2. Le contenu de la mémoire volatile 8 6 est effacé lors d'une mise hors tension du dispositif 1 électronique 1. 15 La mémoire 4 comprend en outre une mémoire non volatile 10, par exemple de type mémoire de masse, Flash, ROM, PROM, EPROM, EEPROM, UVPROM, SSD, etc. La mémoire non volatile 10 comprendre un ou plusieurs composants de mémoire physiques de types identiques ou différents. La mémoire non volatile 10 a pour fonction de mémoriser des données de manière 20 persistante, au sens où une mise hors tension du dispositif 1 électronique 1 n'efface pas le contenu de la mémoire non volatile 10. La mémoire non volatile 10 est susceptible de recevoir des requêtes d'accès émises par l'unité de traitement 6. Ces requêtes d'accès sont de différents types : écriture, lecture, effacement notamment. 25 La mémoire non volatile 10 est paginée, c'est-à-dire comprend une pluralité de pages. Chaque page comprend elle-même une pluralité d'unités mémoires. Chaque unité mémoire est par exemple un octet. A un instant donné, une unité mémoire ne peut être que dans un état - vierge » ou dans un état - écrit ». Une unité mémoire passe de l'état vierge à l'état écrit lors d'une écriture, 30 et passe de l'état écrit à l'état vierge lors d'un effacement. Dans l'état vierge, on considère qu'une unité mémoire ne stocke aucune donnée. Dans l'état écrit, une unité mémoire stocke une donnée susceptible de prendre différentes valeurs (le nombre de valeurs possibles dépendant de la longueur en bits de l'unité mémoire). Par exemple, lorsqu'une unité mémoire est un octet, jusqu'à 256 valeurs alternatives sont inscriptibles dans cette unité mémoire. 6 Une unité mémoire constitue une plus petite portion inscriptible de la mémoire non volatile 10. On entend par là qu'il est possible d'écrire dans une unité mémoire sans avoir à écrire dans une quelconque autre unité mémoire, mais qu'il n'est pas possible d'écrire dans seulement une portion de l'unité mémoire sans que cela n'affecte une portion restante de 5 l'unité mémoire. De plus, une unité mémoire dans l'état écrit ne peut pas changer de valeur sans repasser par l'état vierge. Autrement dit, lorsque le contenu d'une unité mémoire doit passer d'une première valeur à une deuxième valeur, deux opérations doivent être mises en oeuvre sur l'unité mémoire : l'unité mémoire doit d'abord être entièrement effacée (l'état de 10 l'unité mémoire passe alors de l'état écrit à l'état vierge), avant d'y écrire la deuxième valeur (l'état de l'unité mémoire passe alors de l'état vierge à l'état écrit). Par exemple, il peut être prévu deux requêtes d'écriture transmissibles à la mémoire non volatile 10, fonctionnant à deux échelles différentes : - une requête d'écriture par page : cette requête ne peut être effectuée que sur une 15 page dont tous les unités mémoires sont à l'état vierge, et lorsque cette condition est vérifiée, toutes les unité mémoire de la page passent de l'état vierge à l'état écrit. - une requête d'écriture par unité mémoire, faisant sélectivement passer une seule unité mémoire de l'état vierge à l'état écrit. 20 Par ailleurs, une page constitue une plus petite portion effaçable de la mémoire non volatile 10. On entend par là, qu'il n'est pas possible, par une requête d'effacement, de faire passer seulement une partie des unités mémoire d'une page de l'état écrit à l'état vierge, et de conserver d'autres unités mémoire de la même page à l'état écrit. Autrement dit, une requête d'effacement fournie à la mémoire non volatile 10 implique forcément le 25 passage de chaque unité mémoire d'une page de l'état écrit à l'état vierge. Dit encore d'une autre manière, il est prévu dans le dispositif 1 une requête d'effacement par page, mais pas de requête d'effacement par unité mémoire. Par ailleurs, l'unité de traitement 6 de données est configurée pour traiter des commandes reçues par l'interface de communication 2 et de générer des réponses à ces 30 commandes susceptibles d'être envoyées par l'interface de communication 2. Une fonction remplie par l'unité de traitement de commande est également de contrôler de telles commandes, en sus de leur traitement. L'unité de traitement 6 est apte à requérir des accès à la mémoire via des requêtes appropriées. 35 L'unité de traitement 6 de données comprend au moins un processeur. 7 Est par exemple mémorisé dans la mémoire non volatile 10 un programme comprenant des instructions de code de programme pour traiter et contrôler des commandes, lorsque ce programme est exécuté par un processeur de l'unité de traitement 6 de données. En référence à l'organigramme illustré sur la figure 2, un procédé mis en oeuvre par le 5 dispositif 1 comprend les étapes suivantes. Dans ce qui suit, on considéra que toute étape mise en oeuvre par l'unité de traitement 6 résulte implicitement de l'exécution d'instructions de code appropriées du programme précité. Dans une étape préliminaire 100, l'unité de traitement 6 alloue dans la mémoire non 10 volatile 10 une première zone Z1 et une deuxième zone Z2 différente de la première zone Z1, dont des exemples sont représentés sur les figure 3a à 3c. Cette allocation est mise en oeuvre lors d'une première mise sous tension du dispositif 1. La première zone Z1, ou zone d'entrée, est une première page comprenant N premières unités mémoire (N=8 dans l'exemple représenté sur les figures 3a à 3c). 15 La première zone Z1 a une adresse de début AD1 et d'une adresse de fin AF1 dans la mémoire non volatile 10. Les premières unités mémoire de la première zone Z1 sont contiguës. L'adresse de l'unité mémoire AU1(i) d'indice i de la première zone Z1 est la suivante, i allant de 0 à N-1 : AU1(0= AD1 + i 20 La deuxième zone Z2, ou zone de sortie, est une deuxième page comprenant N deuxièmes unités mémoire. On a donc, pour tout i allant de 0 à N-1 : AU2(i) - AD2 + i où AU2(i) est l'adresse de l'unité mémoire d'indice i de la deuxième zone Z2, AD2 est l'adresse de début de la deuxième zone Z2. 25 A l'issue de l'allocation 100, les N premières unités mémoire de la première zone Z1 et les N deuxièmes unités mémoires de la deuxième zone Z2 sont toutes à l'état vierge, conformément à la figure 3a. Sur les figures annexées, l'état vierge d'une unité mémoire est représenté par le symbole FF. L'unité de traitement 6 alloue par ailleurs dans la mémoire volatile 8 une variable 30 représentative d'un pointeur d'écriture, notée - offset » sur les figures annexées. L'offset peut contenir un écart entre deux adresses, par exemple compté en nombre d'unités mémoire. L'offset est initialisé à zéro (étape 102). On suppose par la suite qu'un canal de communication est établi entre l'interface de communication 2 du dispositif 1 et l'équipement 3. 8 L'interface de communication 2 reçoit une commande CO émise par l'équipement 3 et la transmet à l'unité de traitement 6 de données (étape 104). Sur réception de cette commande CO, l'unité de traitement 6 transmet à la mémoire non volatile 10 une première requête d'écriture d'une première donnée dans la première 5 zone Z1 (étape 106). Cette première donnée est indicative de la réception de cette commande CO. L'écriture 106 est mise en oeuvre avant que la commande CO ne soit traitée par l'unité de traitement 6 de données. La première requête en écriture est une requête en écriture par unité mémoire à 10 l'adresse AD1 + offset. A ce stade, l'offset est nul si bien que l'unité mémoire visée par la première requête est celle ayant AD1+ 0 - AU1(0) pour adresse. Ainsi, l'effet de cette première requête est de faire passer sélectivement la première unité mémoire d'indice 0 de l'état vierge à l'état écrit. La valeur de la première donnée écrite à l'adresse AU1(0) est quelconque. 15 Sur les figures annexées, l'état - écrit » d'une unité mémoire est représenté par le symbole 00 (ce qui ne veut pas forcément dire que la donnée écrite dans cette unité mémoire est la valeur zéro, même s'il est envisageable d'écrire cette valeur zéro au cours de cette étape). On a représenté en figure 4 le contenu des zones une fois effectuée l'écriture 106. La commande CO est ensuite traitée par l'unité de traitement 6 (étape 108). Ce 20 traitement 108 peut typiquement comprendre la mise en oeuvre d'une fonction cryptographique du dispositif 1. Le traitement 108 peut toutefois se terminer prématurément s'il est détecté que la commande CO est incorrecte. Une fois que le traitement de la commande est terminé, l'unité de traitement 6 transmet à la mémoire non volatile 10 une deuxième requête d'écriture d'une deuxième 25 donnée dans la deuxième zone Z2 (étape 110). Cette écriture 110 est mise en oeuvre, par exemple avant que la réponse ne soit émise (étape 114), pendant l'émission 114 de la réponse, ou juste après cette émission 114. La deuxième requête en écriture est une requête en écriture par unité mémoire à l'adresse AD2 + offset. L'unité mémoire visée par la deuxième requête est celle ayant pour 30 l'adresse AU2(0) à ce stade. Ainsi, l'effet de cette première requête est de faire passer sélectivement la première unité mémoire d'indice 0 de l'état vierge à l'état écrit. Pour la même raison que la première zone. On passe d'un etat à 1 de tous le bits de l'octet (état vierge) a un état à zéro sans coupure de courant. La deuxième donnée est de préférence égale à la première donnée. 9 Une fois la deuxième requête en écriture traitée par la mémoire non volatile 10, l'offset est incrémenté de 1 (à supposer que l'offset est un nombre d'unités mémoire) (étape 112). On a représenté en figure 5 le contenu des zones Z1 et Z2 une fois effectuée les étapes 110 et 112 terminées. 5 Après les deux écritures 106 et 110, l'unité de traitement 6 vérifie s'il reste dans la première zone Z1 ou dans la deuxième zone Z2 au moins une unité mémoire à l'état libre (étape 116). Cette vérification 116 comprend typiquement une comparaison entre la première variable d'adresse et l'adresse de fin AF1 de la première zone Z1 ou une comparaison entre 10 la deuxième variable d'adresse et l'adresse de fin AF2 de la deuxième zone Z2. Par exemple, si la première variable d'adresse est strictement supérieure à AF1- Si, cela signifie qu'il ne reste plus d'unité mémoire à l'état libre dans la première zone Z1 ; la première zone Z1 est donc remplie. Similairement, si la deuxième variable d'adresse est strictement supérieure à AF2- 52, cela signifie qu'il ne reste plus d'unité mémoire à l'état libre dans 15 la deuxième zone Z2; la deuxième zone Z2 est donc remplie. Si au moins une des deux zones Z1 et Z2 est totalement remplie, alors un effacement des zones Z1 et Z2 est mis en oeuvre (étape 118). Aucun effacement 118 n'est mis en oeuvre sur les deux zones si chacune de ces zones contient au moins une unité mémoire encore à l'état libre. 20 En l'occurrence, les deux zones Z1 et Z2 telles que représentées sur la figure 3c ne sont pas encore remplies : aucun effacement 118 n'est donc mis en oeuvre à ce stade. A chaque fois qu'une nouvelle commande Ci à traiter est reçue 104 par le dispositif 1, les étapes 106 et suivantes décrites précédemment sont à nouveau mises en oeuvre par l'unité de traitement 6. 25 Ainsi, chaque fois qu'une nouvelle commande Ci est reçue 104, deux nouvelles données associées à cette commande Ci sont écrites : une nouvelle première donnée associée à la commande Ci est écrite dans la première zone Z1 à l'adresse AU1(0, et une nouvelle deuxième donnée associée à la même commande Ci est écrite dans la deuxième zone Z2 à l'adresse AU2(0. 30 Les zones Z1 et Z2 ne sont en définitive remplies qu'une fois que les étapes qui précèdent ont été mises en oeuvre N fois, pour N commandes CO, ..., CN-1, à compter d'un instant où ces zones étaient entièrement vierges. Lors de la Nième vérification 116 mise en oeuvre par l'unité de traitement 6, il est détecté par cette unité de traitement 6 que les deux zones sont toutes les deux remplies de 10 données. Conformément à l'organigramme de la figure 2, l'étape d'effacement 118 des deux zones est alors mise en oeuvre pour la première fois depuis leur allocation 100. L'unité de traitement 6 transmet à la mémoire non volatile 10 une requête en effacement de la première page formant la première zone Z1. Une fois cette requête en 5 effacement traitée par la mémoire non volatile 10, toutes les unités mémoires de la première page sont à nouveau dans l'état libre. L'unité de traitement 6 transmet également à la mémoire non volatile 10 une requête en effacement de la deuxième page formant la deuxième zone Z2. Une fois cette requête en effacement traitée par la mémoire non volatile 10, toutes les unités mémoires de la deuxième page sont à nouveau dans l'état libre. 10 Lorsqu'un effacement 118 est mis en oeuvre, l'étape 102 est mise en oeuvre pour réinitialiser l'offset est à zéro. De nouvelles données peuvent ainsi être écrites dans les deux zones, suite à la réception de nouvelles commandes à traiter. Par ailleurs, en référence à la figure 4, les étapes suivantes sont mises en oeuvre lors 15 d'une mise sous tension du dispositif 1. Dans le cas particulier où la mise sous tension est la première mise sous tension du dispositif 1, ces étapes sont mises en oeuvre après l'allocation 100 des zones Z1 et Z2. L'unité de traitement 6 analyse le contenu de la première zone Z1 et de la deuxième zone Z2 (étape 202). Ce contenu est révélateur de la mise en oeuvre d'étapes d'écritures 106 20 et/ou 110 avant la précédente mise hors tension du dispositif 1 (cette mise hors tension pouvant être normale ou anormale). Si l'analyse 202 révèle que seule une parmi la première donnée associée à une commande Ci et la deuxième donnée associée à la même commande Ci est présente dans une des première et deuxième zone Z2, alors l'unité de traitement 6 met en oeuvre une 25 mesure de protection prédéterminée (étape 206). Ce cas de figure est rencontré si, par exemple, une mise hors tension du dispositif était survenue alors que le contenu des zones Z1 et Z2 était celui représenté sur la figure 3b. Dans le cas contraire, l'unité de traitement 6 ne met pas en oeuvre la mesure de protection prédéterminée. Ce cas de figure est rencontré si, par exemple, une mise hors 30 tension du dispositif était survenue alors que le contenu des zones Z1 et Z2 était celui représenté sur la figure 3a ou la figure 3c. Au cours de l'analyse 202, l'unité de traitement 6 compare les états respectifs de l'unité mémoire d'adresse AU1(0 et de l'unité mémoire d'adresse AU2(0. Si ces états sont différents (autrement dit si l'un d'entre eux est l'état vierge et l'autre 35 est l'état écrit), cela signifie que seule une de ces deux unités mémoires contient une donnée 11 écrite, l'analyse se termine et la mesure de protection est mise en oeuvre. Typiquement, si l'unité mémoire d'adresse AU1(0) est dans l'état écrite et si l'unité mémoire d'adresse AU2(0) est à l'état vierge, cela signifie qu'une mise hors tension du dispositif 1 est survenu après la mise en oeuvre de l'étape d'écriture 106 à l'adresse AU1(i) dans la première zone 5 Z1 (déclenchée lorsque la commande Ci a été reçue par le dispositif 1) et avant la mise en oeuvre de l'étape d'écriture 110 subséquente à l'adresse AU2(i) dans la deuxième zone Z2 (écriture qui aurait dû survenir lors de l'émission d'une réponse à la commande Ci). La mise hors tension étant très probablement survenue au cours du traitement de la commande Ci, elle est considérée comme anormale, et donc suspecte. C'est pourquoi la mesure de 10 protection 206 est mise en oeuvre dans ce cas. Si les états comparés sont tous les deux l'état écrit et si i REVENDICATIONS1. Procédé de contrôle de commandes mis en oeuvre par un dispositif (1) comprenant une mémoire non volatile (10) contenant une première zone (Z1) et une deuxième zone (Z2) différente de la première zone (Z1), le procédé comprenant des étapes de : - écriture (106) dans la première zone (Z1) d'une première donnée sur réception par le dispositif d'une commande à traiter, avant traitement de la commande par le dispositif, - écriture (110) dans la deuxième zone (Z2) d'une deuxième donnée une fois que le traitement de la commande est terminé, - comparaison (202) du contenu des première et deuxième zone (Z1, Z2) lors d'une mise sous tension du dispositif, - mise en oeuvre d'une mesure de protection (206) seulement si la comparaison révèle que seule une parmi les première et deuxième données est présente dans les première et deuxième zones (Z1, Z2). 2. Procédé selon la revendication précédente, dans lequel : - l'étape d'écriture (106) dans la première zone (Z1) est répétée pour différentes commandes reçues et à traiter par le dispositif, de sorte à écrire dans la première zone (Z1) plusieurs premières données respectivement associées aux différentes commandes reçues, - l'étape d'écriture (110) dans la deuxième zone (Z2) est répétée pour les différentes commandes, de sorte à écrire dans la deuxième zone (Z2) plusieurs deuxièmes données respectivement associées aux différentes commandes, - la mesure de protection (206) est mise en oeuvre seulement si la comparaison révèle que, pour au moins une commande de référence parmi les commandes reçues, une seule parmi la première donnée associée à la commande de référence et la deuxième donnée associée à la commande de référence est présente dans une des première et deuxième zone (Z1, Z2). 3. Procédé selon la revendication précédente, dans lequel les première et deuxième zones (Z1, Z2) sont vierges avant les écritures (106, 110), et ne sont effacées (118) de sorte à les rendre à nouveau vierges qu'une fois qu'au moins une des zones (Z1, Z2) a été remplie de premières ou deuxièmes données. 14 4. Procédé selon l'une des revendications précédentes, dans lequel au moins une parmi la première zone (Z1) et la deuxième zone (Z2) est une page constituant une plus petite portion effaçable de la mémoire non volatile (10). 5 5. Procédé selon l'une des revendications précédentes, dans lequel chaque donnée est écrite dans une unité mémoire qui lui est propre, chaque unité mémoire constituant une plus petite portion inscriptible de la mémoire volatile (10). 6. Procédé selon l'une des revendications précédentes, dans lequel la première zone (Z1) 10 mémoire et la deuxième zone (Z2) mémoire sont de mêmes tailles. 7. Procédé selon l'une des revendications précédentes, dans lequel une première donnée associée à une commande et une deuxième donnée associée à la même commande sont de mêmes tailles. 15 8. Procédé selon l'une des revendications précédentes, dans lequel la mesure de protection (206) comprend une mise à jour d'un compteur de sorte à rapprocher la valeur du compteur d'un seuil prédéterminé, le procédé comprenant en outre un blocage du dispositif lorsque la valeur du compteur atteint le seuil prédéterminé. 20 9. Produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon l'une des revendications précédentes, lorsque ce programme est exécuté par une unité de traitement de données. 25 10. Dispositif (1), tel qu'une carte à puce, comprenant : - une interface de communication (2) pour recevoir des commandes, - une mémoire non volatile (10) adaptée pour contenir une première zone (Z1) et une deuxième zone (Z2) différente de la première zone (Z1), - une unité de contrôle (6) de commandes configurée pour : 30 o écrire dans la première zone (Z1) d'une première donnée sur réception d'une commande à traiter, avant traitement de la commande par le dispositif, o écrire dans la deuxième zone (Z2) d'une deuxième donnée une fois que le traitement de la commande est terminé, o comparer du contenu des première et deuxième zone (Z1, Z2) lors d'une mise 35 sous tension du dispositif, 15 o mettre en oeuvre une mesure de protection seulement si la comparaison révèle que seule une parmi les première et deuxième données est présente dans les première et deuxième zones (Z1, Z2). 5