Brevet FR3061384A1 — publié le 20180629

DOMAINE TECHNIQUE AUQUEL SE RAPPORTE L'INVENTION La présente invention concerne la protection de données secrètes contre les attaques par injection de faute. Elle concerne plus particulièrement un procédé de traitement de données. L'invention s'applique particulièrement avantageusement dans le cas où l'on souhaite protéger un tel procédé de traitement de données contre les attaques par injection de faute, avec un coût limité en termes d'opérations additionnelles et d'utilisation de la mémoire. ARRIERE-PLAN TECHNOLOGIQUE On connaît les procédés de chiffrement de données par blocs avec chaînage dans lesquels, après une étape d'initialisation appliquée au premier bloc 15 de données, une pluralité d'étapes chaînées sont appliquées chacune à un bloc de données suivant. Chaque étape met en oeuvre un processus de transformation d'une donnée d'entrée en une donnée de sortie qui utilise un algorithme cryptographique, tel qu'un algorithme de type DES ou AES. 20 De tels procédés de traitement de données peuvent faire l'objet d'attaques par injection de faute qui permettent dans certains cas à l'attaquant de compromettre la sécurité des protocoles utilisés ou de déduire des informations secrètes (par exemple une clé cryptographique) sur la base des données erronées produites. 25 OBJET DE L'INVENTION Dans ce contexte, la présente invention propose un procédé de traitement (cryptographique) de données comprenant successivement une étape d'initialisation et une pluralité d'étapes chaînées appliquées chacune à un bloc correspondant desdites données, chaque étape mettant en oeuvre un processus 30 de transformation d'une donnée d'entrée en une donnée de sortie, le processus de transformation utilisant un algorithme cryptographique, la donnée d'entrée d'une étape chaînée correspondant à la donnée de sortie de l'étape précédente à une somme booléenne près, caractérisé en ce qu'une partie au moins desdites étapes (voire toutes lesdites étapes) comprend la mise à jour d'un registre au 3061384 2 moyen de combinaisons du contenu dudit registre, par sommes booléennes, avec deux valeurs parmi la donnée d'entrée de l'étape concernée, la donnée de sortie de l'étape concernée et le bloc associé à l'étape concernée, et en ce que le procédé comprend une étape de comparaison du contenu du registre à une valeur 5 prédéfinie. On met ainsi à jour un registre qui tient compte des données manipulées à chaque étape et qui gardera la trace d'une erreur (provoquée par exemple par une attaque) au cours de l'une de ces étapes. Grâce au chaînage des étapes, les différentes mises à jour peuvent se 10 compenser et la vérification sera donc simplifiée. En particulier, ni les mises à jour du registre ni la vérification ne nécessite une réitération de l'algorithme cryptographique mis en oeuvre à chaque étape. Les deux valeurs susmentionnées sont par exemple la donnée d'entrée de l'étape concernée et le bloc associé à l'étape concernée, comme dans le cadre des premier et troisième modes de réalisation décrits plus loin respectivement en référence aux figures 2 et 4. Selon une autre possibilité envisageable (qui correspond au second mode de réalisation décrit plus loin en référence à la figure 3), les deux valeurs susmentionnées sont la donnée d'entrée de l'étape concernée et la donnée de sortie de l'étape concernée. Le procédé peut comprendre en outre une étape de détermination d'un mot par tirage aléatoire et une étape d'initialisation du registre au moyen dudit mot. Ainsi, les valeurs prises par le registre sont différentes d'une mise en oeuvre à l'autre du procédé de traitement de données, ce qui améliore encore la protection contre les attaques. La valeur prédéfinie est par exemple dans ce cas le mot susmentionné. Dans certains cas, la donnée d'entrée d'une étape chaînée est égale à la donnée de sortie de l'étape précédente, comme dans le cas du troisième exemple de réalisation décrit plus loin en référence à la figure 4. La donnée d'entrée d'une étape chaînée peut toutefois dans d'autres cas être égale à la somme booléenne de la donnée de sortie de l'étape précédente et du bloc associé à ladite étape chaînée, comme dans le cas du premier exemple de réalisation décrit plus loin en référence à la figure 2. Selon une autre possibilité encore, la donnée d'entrée d'une étape 3061384 3 chaînée peut être égale à la somme booléenne de la donnée de sortie de l'étape précédente et du bloc associé à l'étape précédente, comme c'est le cas pour le second mode de réalisation décrit plus loin en référence à la figure 3. On peut prévoir par ailleurs, en cas d'égalité du registre et de la valeur 5 prédéfinie à l'étape de comparaison, une étape d'émission de données obtenues au moyen desdites étapes appliquées auxdits blocs. On peut également prévoir, en cas d'inégalité entre le registre et la valeur prédéfinie à l'étape de comparaison, une étape de traitement d'erreur, dont des exemples sont donnés dans la description qui suit. 10 DESCRIPTION DETAILLEE D'UN EXEMPLE DE REALISATION La description qui va suivre en regard des dessins annexés, donnés à titre d'exemples non limitatifs, fera bien comprendre en quoi consiste l'invention et comment elle peut être réalisée. Sur les dessins annexés : 15 - la figure 1 représente schématiquement les éléments principaux d'une entité électronique 1 au sein de laquelle est mise en oeuvre l'invention ; - la figure 2 représente, sous forme de logigramme, un premier exemple de procédé conforme à l'invention ; - la figure 3 représente, sous forme de logigramme, un second exemple 20 de procédé conforme à l'invention ; et - la figure 4 représente, sous forme de logigramme, un troisième exemple de procédé conforme à l'invention. La figure 1 représente schématiquement les éléments principaux d'une entité électronique 1 au sein de laquelle est mise en oeuvre l'invention. Cette entité 25 électronique est par exemple une carte à microcircuit, par exemple une carte à circuit intégré universelle (ou UICC pour "Universel Integrated Circuit Card"). En variante, il pourrait s'agir d'un élément sécurisé (ou SE pour "Secure Element") - par exemple un microcontrôleur sécurisé, d'un dispositif électronique portatif (ou "hand-held electronic device" selon l'appellation anglo-saxonne) - par exemple un 30 terminal de communication ou un passeport électronique, ou d'un ordinateur. L'entité électronique 1 comprend un processeur 2 (ici un microprocesseur), une mémoire vive 4 et une mémoire non-volatile réinscriptible 6 (par exemple de type EEPROM pour "Electrically Erasable and Programmable Read-Only Memory"). L'entité électronique 1 pourrait éventuellement comprendre 3061384 4 en outre une mémoire morte. La mémoire vive 4 et la mémoire non-volatile réinscriptible 6 (ainsi que le cas échéant la mémoire morte) sont chacune liées au processeur 2 de sorte que le processeur 2 peut lire ou écrire des données dans chacune de ces mémoires. 5 Une de ces mémoires, par exemple la mémoire non-volatile réinscriptible 6, mémorise des instructions de programme d'ordinateur qui permettent la mise en oeuvre de l'un au moins des procédés décrits ci-dessous en référence aux figures 2 à 4 lorsque ces instructions sont exécutées par le processeur 2. Les mémoires 4, 6 stockent également des données représentatives de 10 valeurs utilisées lors de la mise en oeuvre des procédés décrits ci-dessous. Par exemple, la mémoire non-volatile réinscriptible 6 mémorise une clé cryptographique K. La mémoire vive 4 mémorise par ailleurs, par exemple au sein de variables, des données traitées au cours des procédés décrits ci-dessous. 15 L'entité électronique 1 comprend en outre une interface de communication 8 avec des dispositifs électroniques externes. Dans le cas décrit ici où l'entité électronique 1 est une carte à microcircuit, l'interface de communication 8 comprend par exemple des contacts affleurant sur une face de la carte à microcircuit. En variante, l'interface de communication 8 pourrait être réalisée par 20 un module de communication sans contact. De manière générale, l'interface de communication 8 peut être un module de communication (filaire ou sans fil) avec une autre entité électronique. Le processeur 2 peut ainsi recevoir des données, ici sous forme de blocs de données P1 (chaque bloc P1 ayant une longueur en bits prédéterminée, par 25 exemple 32, 64 ou 128), en provenance de l'autre entité électronique via l'interface de communication 8 et émettre d'autres données, par exemple un résultat d'application d'un algorithme cryptographique (tel que l'un de ceux décrits ci-dessous en référence aux figures 2 à 4) aux blocs de données P1, à l'autre entité électronique via l'interface de communication 8. 30 Dans les exemples qui suivent, les algorithmes cryptographiques appliqués sont de type chiffrement par blocs avec chaînage. De tels algorithmes cryptographiques transforment un nombre donné N de blocs de données P1 en un nombre identique (N) de blocs de données chiffrées C. La figure 2 représente, sous forme de logigramme, un premier exemple 3061384 5 de procédé conforme à l'invention. Ce premier exemple permet un chiffrement par blocs en mode CBC (pour "Cipher Block Chaining"). Le procédé de la figure 2 débute à l'étape E2 par la réception de N blocs de données P1 par l'entité électronique 1 (précisément par le processeur 2), via 5 l'interface de communication 8, par exemple en provenance de l'autre entité électronique précitée. Le processeur 2 détermine alors par tirage aléatoire un mot Ro de même longueur que les blocs de données P1 reçus en entrée (étape E4). En variante, on pourrait prévoir qu'un crypto-processeur (embarqué dans l'entité électronique 1 10 mais distinct du processeur 2) détermine le mot aléatoire Ro et transmette le mot aléatoire Ro au processeur 2. Le processeur 2 initialise alors un registre R avec ce mot aléatoire Ro (étape E6). Le mot aléatoire Ro est toutefois conservé en mémoire (par exemple dans la mémoire vive 4) pour utilisation à l'étape E30 décrite ci-dessous. 15 Le processeur 2 initialise par ailleurs un bloc de données Co avec le vecteur d'initialisation IV propre à l'algorithme de chiffrement concerné (étape E8). Ce vecteur d'initialisation IV est l'une des caractéristiques définissant l'algorithme de chiffrement (de même que la clé cryptographique K utilisée à l'étape E16). Aussi, le bloc de données Co pourrait être mémorisé en mémoire non-volatile 20 réinscriptible 6 (et l'étape d'initialisation E8 serait alors omise). On remarque que le bloc de données Co est utilisé ici pour faciliter l'exposé du fonctionnement sous forme d'une boucle (décrite ci-dessous), mais que ce bloc de données Co n'a pas un rôle propre distinct du vecteur d'initialisation IV. Il ne s'agit pas en particulier d'un bloc de données chiffrées émis 25 en sortie (étape E34). Le processeur 2 initialise en outre un indice i à la valeur 1 à l'étape E10. Le fonctionnement entre alors dans la boucle déjà évoquée. Lors d'une étape E12, comme prévu par l'algorithme de chiffrement par blocs en mode CBC déjà mentionné, le processeur 2 combine par somme 30 booléenne le bloc de données P1 (associé à l'indice courant i) et la donnée Cm (qui est soit le vecteur d'initialisation IV lorsque l'indice courant i vaut 1, soit le bloc de données chiffrées Cm obtenu à l'itération précédente de l'étape E16 dans les autre cas), mémorise le résultat de la combinaison (i.e. de la somme booléenne) dans une variable I : I = P; Ilk Cm (avec écrasement de la valeur 3061384 6 précédemment stockée dans ce registre). On rappelle que la somme booléenne, notée ici par le symbole 0, correspond à une opération logique de "ou exclusif' (ou XOR) entre les mots à combiner. On note par ailleurs "X4-Y" dans la suite l'écriture d'une valeur Y (ou du contenu d'une variable Y) dans une variable 5 X avec écrasement. Le processeur 2 ajoute par ailleurs à l'étape E14 (ici encore au moyen d'une somme booléenne) les valeurs I et Cm au contenu du registre R. (Autrement dit, le contenu du registre R est remplacé, avec écrasement, par R in^ C11, soit 11/ R R C11.) 411 10 Le processeur 2 détermine alors à l'étape E16 le bloc de données chiffrées Ci d'indice courant i par application, au contenu de la variable I, d'un algorithme cryptographique f utilisant la clé cryptographique K: C; L'algorithme cryptographique est par exemple de type DES, Triple DES ou AES. Le processeur 2 détermine alors à l'étape E20 si l'indice courant i 15 correspond au nombre N de blocs de données Pi à traiter. Dans la négative (flèche N), le procédé se poursuit à l'étape E22 à laquelle le processeur 2 incrémente l'indice i et boucle ensuite à l'étape E12 pour traitement du bloc de données Pi ayant le nouvel indice i (incrémenté). Dans l'affirmative (flèche P), l'ensemble des blocs de données Pi ont été 20 traités et le procédé se poursuit alors à l'étape E23 pour initier une nouvelle boucle. Dans ce but, l'indice i est initialisé à 1 à l'étape E23. Le processeur 2 ajoute ensuite à l'étape E24 (au moyen d'une somme booléenne) le bloc de données Pi associé à l'indice courant i au contenu du 25 registre R avec écrasement : la valeur R Pi est écrite dans le registre R, soit 1111/ R R 0 Pi. Le processeur 2 détermine alors à l'étape E26 si l'indice courant i correspond au nombre N de blocs de données Pi à traiter. Dans la négative (flèche N), le procédé se poursuit à l'étape E28 à 30 laquelle le processeur 2 incrémente l'indice i et boucle ensuite à l'étape E24 pour ajouter (par somme booléenne) le bloc de données Pi ayant le nouvel indice i (incrémenté) au registre R. On remarque que la sommation (booléenne) des blocs de données Pi dans une boucle distincte de celle permettant les autres sommations afin de 3061384 7 contrer certaine attaques par faute. Dans l'affirmative (flèche P) à l'étape E26, l'ensemble des blocs de données P1 ont été ajoutés au registre R et le procédé se poursuit alors à l'étape E30 pour vérification de l'égalité R = Ro. 5 En effet, les inventeurs ont remarqués que l'on pouvait écrire (notamment grâce au chaînage du chiffrement des différents blocs), les symboles E représentant des sommations booléennes : = IV j=i J= soit : /N-1 \j=1 IV Par conséquent, en fonctionnement normal (c'est-à-dire notamment en 10 l'absence de faute générée par exemple par une attaque), les modifications du registre R au cours des passages successifs aux étapes E14 et E24 laissent au final le registre R inchangé et on vérifie donc R = Ro en fonctionnement normal à l'étape E30. Si l'égalité R = Ro est vérifiée à l'étape E30 (flèche P), le processeur 2 15 peut commander l'émission via l'interface de communication 8 des N blocs de données chiffrées C; (étape E34). On remarque que la vérification du bon fonctionnement proposée ici ne nécessite que l'utilisation des registres R et Ro, et la mise en oeuvre d'opérations de "ou exclusif' (somme booléenne) au cours du processus de traitement. Il n'est 20 en revanche pas nécessaire de doubler la mise en oeuvre de l'opération cryptographique f effectuée à chaque itération (étape E16). Si l'égalité R = Ro n'est pas vérifiée à l'étape E30 (flèche N), le processeur 2 met en oeuvre une étape de traitement d'erreur (étape E32). Une telle étape de traitement d'erreur E32 comprend par exemple 25 l'écriture d'une donnée de blocage (ou verrou) dans la mémoire non-volatile réinscriptible 6. La présence d'une donnée de blocage dans la mémoire non-volatile réinscriptible 6 empêchera tout fonctionnement ultérieur de l'entité électronique 1. Pour ce faire, le processeur 2 consulte par exemple la zone de mémorisation potentielle de la donnée de blocage lors du démarrage de son 3061384 8 fonctionnement et arrête son fonctionnement en cas de détection de la donnée de blocage. En variante, l'étape de traitement d'erreur E32 peut inclure l'écriture dans la mémoire non-volatile réinscriptible 6 de données indicatives d'un compteur 5 d'erreurs. Lorsque ce compteur d'erreurs atteint un seuil prédéterminé, le processeur 2 commande par exemple l'écriture en mémoire non-volatile réinscriptible 6 d'une donnée de blocage comme décrite ci-dessus. L'étape de traitement d'erreur E32 peut éventuellement comprendre en outre l'émission d'un message d'erreur via l'interface de communication 8. 10 La figure 3 représente, sous forme de logigramme, un second exemple de procédé conforme à l'invention. Ce second exemple permet un chiffrement par blocs en mode CFB (pour "Cipher FeedBack"). Le procédé de la figure 3 débute à l'étape E42 par la réception de N blocs de données P1 par l'entité électronique 1 (précisément par le processeur 2), 15 via l'interface de communication 8, par exemple en provenance de l'autre entité électronique précitée. Le processeur 2 détermine alors par tirage aléatoire un mot Ro de même longueur que les blocs de données P1 reçus en entrée (étape E44). Comme déjà indiqué dans le cadre du premier exemple décrit en référence à la figure 2, on 20 pourrait prévoir en variante qu'un crypto-processeur (embarqué dans l'entité électronique 1 mais distinct du processeur 2) détermine le mot aléatoire Ro et transmette le mot aléatoire Ro au processeur 2. Le processeur 2 initialise alors un registre R avec ce mot aléatoire Ro (étape E46). Le mot aléatoire Ro est toutefois conservé en mémoire (par exemple 25 dans la mémoire vive 4) pour utilisation à l'étape E74 décrite ci-dessous. Le processeur 2 initialise par ailleurs à l'étape E48 une variable X (ayant une longueur en bits identique à celle des blocs de données P1 reçus en entrée) avec le vecteur d'initialisation IV. La variable X est par exemple mémorisée dans la mémoire vive 4. 30 Le processeur 2 initialise en outre un indice i à la valeur 1 à l'étape E50. Le fonctionnement entre alors dans une boucle qui sera répétée N fois pour traiter successivement les N blocs de données Pi. Le processeur 2 combine tout d'abord le contenu de la variable X et le contenu du registre R, en mémorisant le résultat dans le registre R avec 306 13 84 9 écrasement (étape E52) ; autrement dit R R ilk X Le processeur 2 applique ensuite au contenu de la variable X un algorithme cryptographique f utilisant la clé cryptographique K, puis mémorise le résultat fK(X) dans la variable X avec écrasement : X REVENDICATIONS1. Procédé de traitement de données comprenant successivement une étape d'initialisation et une pluralité d'étapes chaînées appliquées chacune à un bloc (Pi) correspondant desdites données, chaque étape mettant en oeuvre un processus de transformation d'une donnée d'entrée (I ; X) en une donnée de sortie (Ci ; X), le processus de transformation utilisant un algorithme cryptographique (fK), la donnée d'entrée d'une étape chaînée correspondant à la donnée de sortie de l'étape précédente à une somme booléenne près, caractérisé en ce qu'une partie au moins desdites étapes comprend la mise à jour (E14, E24; E52, E56; E92, E98) d'un registre (R) au moyen de combinaisons du contenu dudit registre (R), par sommes booléennes, avec deux valeurs parmi la donnée d'entrée (I ; X) de l'étape concernée, la donnée de sortie (X) de l'étape concernée et le bloc (Pi) associé à l'étape concernée, et en ce que le procédé comprend une étape de comparaison (E30; E74; E106) du contenu du registre (R) à une valeur prédéfinie (Ro). 2. Procédé selon la revendication 1, dans lequel lesdites deux valeurs sont la donnée d'entrée (I ; X) de l'étape concernée et le bloc (Pi) associé à l'étape concernée. 3. Procédé selon la revendication 1, dans lequel lesdites deux valeurs sont la donnée d'entrée (X) de l'étape concernée et la donnée de sortie (X) de l'étape concernée. 4. Procédé selon l'une des revendications 1 à 3, comprenant une étape de détermination (E4 ; E44; E84) d'un mot (Ro) par tirage aléatoire et une étape d'initialisation (E6 ; E46 ; E86) du registre (R) au moyen dudit mot (Ro). 5. Procédé selon la revendication 4, dans lequel ladite valeur prédéfinie est ledit mot (Ro). 6. Procédé selon l'une des revendications 1 à 5, dans lequel la donnée 306 13 84 15 d'entrée (X) d'une étape chaînée est égale à la donnée de sortie (X) de l'étape précédente. 7. Procédé selon l'une des revendications 1 à 5, dans lequel la donnée 5 d'entrée (I) d'une étape chaînée est égale à la somme booléenne de la donnée de sortie (C1_1) de l'étape précédente et du bloc (Pi) associé à ladite étape chaînée. 8. Procédé selon l'une des revendications 1 à 5, dans lequel la donnée d'entrée (X) d'une étape chaînée est égale à la somme booléenne de la donnée 10 de sortie (X) de l'étape précédente et du bloc associé à l'étape précédente. 9. Procédé selon l'une des revendications 1 à 8, comprenant, en cas d'égalité du registre (R) et de la valeur prédéfinie (Ro) à l'étape de comparaison (E30; E74; E106), une étape d'émission (E34; E78; E110) de données (Ci) 15 obtenues au moyen desdites étapes appliquées auxdits blocs (Pi). 10. Procédé selon l'une des revendications 1 à 9, comprenant, en cas d'inégalité entre le registre (R) et la valeur prédéfinie (Ro) à l'étape de comparaison (E30; E74; E106), une étape de traitement d'erreur (E32; E76; 20 E108).