Brevet FR2818472A1 — publié le 20020621

PROCEDE DE CONTRE-MESURE DANS UN COMPOSANT ELECTRONIQUE METTANT EN UVRE UN ALGORITHME DE CRYPTOGRAPHIE A CLE SECRETE La présente invention concerne un procédé de contremesure pour un algorithme de chiffrement à clé secrète. Il est apparu que l'implémentation sur carte à puce d'un algorithme de chiffrement à clé secrète était vulnérable à des attaques consistant en une analyse différentielle de consommation de courant permettant de retrouver la clé secrète. Ces attaques sont appelées attaques DPA, acronyme pour Differential Power Analysis. Le principe de ces attaques DPA repose sur le fait que la consommation en courant du microprocesseur exécutant des instructions varie selon la donnée manipulée. Il existe de nombreux algorithmes à clé secrète dans lesquels l'algorithme effectue des manipulations bits par bits d'une donnée qui dépend du message à chiffrer. Par exemple, lorsque l'algorithme de chiffrement comprend une permutation de données, l'implémentation sur carte à puce de cette permutation fait intervenir des manipulations bits par bits de la donnée à permuter. En analysant la consommation de courant lors de l'exécution par le microprocesseur de ces manipulations bits par bits, il est possible de retrouver une partie ou la totalité de la donnée manipulée. La connaissance de cette donnée fournit des informations sur les résultats intermédiaires de l'exécution de l'algorithme de chiffrement, qui permettent de retrouver la clef secrète de chiffrement. Dans l'algorithme de chiffrement DES (pour Data Encryption Standard), l'algorithme chiffre un message clair de 64 bits en un message chiffré de 64 bits avec une clé de 64 bits comprenant 8 bits de parité. L'algorithme DES comprend 16 tours. A chaque tour, l'algorithme DES effectue les manipulations suivantes : 1) Expansion-permutation avec la partie droite de la donnée en entrée. Cette opération fait intervenir des manipulations bits par bits de la donnée. 2) Opération de type OU-EXCLUSIF avec une sous-clé de la clé secrète. 3) Lecture dans la table de type SBOX. 4) Permutation de la donnée. Cette opération fait intervenir des manipulations bits par bits de la donnée. 5) Opération de type OU-EXCLUSIF avec la partie gauche de la donnée en entrée. L'exécution des opérations 1) et 4) fait intervenir des manipulations de données bits par bits. En enregistrant au préalable la consommation de courant correspondant à une exécution de l'algorithme lorsque ce bit est à 1 et la consommation de courant lorsque ce bit est à 0, il est possible de retrouver la valeur de ce bit en comparant la consommation de courant avec ce qui a été enregistré au préalable. Il est possible de protéger l'exécution des opérations 1) et 4) faisant intervenir des manipulations de données bits par bits contre des attaques de type DPA. Pour cela, avant l'exécution d'une opération de type permutation, notée par la suite P, sur une donnée, notée par la suite D, on effectue le tirage d'un nombre aléatoire, noté par la suite U, ayant la même taille que D. On combine D et U par une opération de type OU-EXCLUSIF, pour obtenir une donnée notée H. On effectue l'opération P successivement sur U et sur H, pour obtenir les résultats notés PU et PH respectivement. Le résultat de l'opération P sur D s'obtient en combinant PU et PH par une opération de type OU-EXCLUSIF. Ce procédé s'applique aux opérations 1) et 4) décrites précédemment. Par l'application de ce procédé à une opération de type permutation, les données sur lesquelles on effectue une manipulation bit par bit sont aléatoires. Il n'est alors plus possible de réaliser l'attaque de type DPA décrite précédemment. En effet l'attaque de type DPA décrite précédemment nécessite l'enregistrement préalable de la consommation de courant lorsqu'un bit déterminé de la donnée manipulée est à 1 et de la consommation de courant lorsque ce bit est à 0. Avec le procédé décrit précédemment, cet enregistrement n'est plus possible car les données manipulées U et H sont aléatoires, et sont donc susceptibles de changer lors de chaque nouvelle exécution. De plus les données manipulées U et H ne sont pas connues à l'extérieur de la carte. Cependant, il arrive dans certains cas qu'un procédé de chiffrement à clef secrète utilise également des opérations arithmétiques de type addition modulo une puissance de deux. Il convient dans ce cas de protéger également ces opérations. Soit D la donnée à protéger. La méthode consiste à ajouter à D un aléa R modulo une puissance de deux. Ainsi, la donnée D+R est aléatoire et l'attaquant ne peut pas obtenir d'information sur D. Ainsi, il arrive dans certains cas qu'un procédé de chiffrement à clef secrète manipule à la fois des données de la forme D xor R, où xor dénote l'opération de type OUEXCLUSIF, et des données de la forme D+R, où + dénote l'addition de deux entiers modulo une puissance de deux. Le procédé de l'invention consiste en une méthode permettant de passer rapidement et de façon sécurisée d'une représentation à l'autre. La représentation D xor R sera appelée par la suite représentation booléenne et la représentation D+R sera appelée représentation arithmétique. Le premier procédé de l'invention décrit une méthode permettant de passer efficacement d'une représentation booléenne à une représentation arithmétique. On note x la donnée initiale à protéger, et on note x'la donnée protégée. On a ainsi x=x'xor r, où r est un entier aléatoire ; soit r'un autre entier aléatoire. Le procédé comporte les étapes suivantes : 1) Pour toutes les valeurs de l'entier y possibles, générer une table T contenant les valeurs : T (y) = (y xor r)-r' 2) Mettre dans un entier A la valeur de T (x') Le procédé décrit précédemment permet d'obtenir une valeur A telle que x=A+r'. On obtient ainsi une représentation arithmétique de l'entier x. Il est impossible pour l'attaquant de déduire du procédé précédent une quelconque information sur l'entier x, car la variable x n'a jamais été manipulée. Le second procédé de l'invention décrit une méthode permettant de passer efficacement d'une représentation arithmétique à une représentation booléenne. On note x la donnée initiale à protéger, et on note A la donnée protégée. On a ainsi x=A+r, où r est un entier aléatoire ; soit r'un autre entier aléatoire. Le procédé comporte les étapes suivantes : 1) Pour toutes les valeurs de l'entier y possible, générer une table T contenant les valeurs : T (y) = (y+r) xor r'. 2) Mettre dans la variable x'la valeur de T (A). Le procédé décrit précédemment permet donc d'obtenir une valeur x'telle que x=x'xor r. On obtient ainsi une représentation booléenne de la variable x. Il est impossible pour l'attaquant de déduire du procédé précédent une quelconque information sur l'entier x, car la variable x n'a jamais été manipulée. Ainsi, ces deux procédés permettent de passer efficacement et de manière sécurisée d'une représentation booléenne vers une représentation arithmétique et réciproquement. Ces deux procédés sont particulièrement destinés à être utilisés dans un objet portable électronique de type carte à puce. REVENDICATIONS 1. Procédé de contre-mesure utilisant contre des attaques de type DPA une représentation arithmétique et une représentation booléenne consistant à empêcher l'enregistrement préalable de la consommation du courant générée par des manipulations de bits par bits en permettant de passer efficacement de ladite représentation booléenne des données, ladite représentation étant notée D xor R, xor désignant l'opération de OU-EXCLUSIF, vers ladite représentation arithmétique des données, ladite représentation étant notée D+R, ledit procédé utilisant une donnée x à protéger, la donnée protégée étant notée x'avec x=x' xor r, l'entier r étant un entier aléatoire, l'entier r' étant un autre entier aléatoire, ledit procédé permettant d'obtenir une valeur A telle que x=A+r', ledit procédé étant caractérisé en ce qu'il comporte les 2 étapes suivantes : 1) 1 Pour toutes les valeurs de l'entier y possibles, générer une table T contenant les valeurs : T (y) = (y xor r)-r' 1) 2 Mettre dans l'entier A la valeur de T (x') 2. Procédé de contre-mesure contre des attaques de type DPA, utilisant une représentation arithmétique et une représentation booléenne consistant à empêcher l'enregistrement préalable de la consommation de courant générée par des manipulations bits par bits, en permettant de passer efficacement de ladite représentation arithmétique des données, ladite représentation étant notée D+R, vers ladite représentation booléenne des données, ladite représentation étant notée D xor R, xor désignant l'opération de OU-EXCLUSIF, ledit procédé utilisant une donnée x à protéger, la donnée protégée étant notée A avec x=A+r, l'entier r étant un entier aléatoire, l'entier r'étant un autre entier aléatoire, ledit procédé permettant d'obtenir une valeur x'telle que x=x'xor r', ledit procédé étant caractérisé en ce qu'il comporte les 2 étapes suivantes : 2) 1 Pour toutes les valeurs de l'entier y possibles, générer une table T contenant les valeurs : T (y) = (y+r) xor r' 2) 2 Mettre dans la variable x'la valeur de T (A). 3. Procédé de chiffrement à clef secrète, caractérisé en ce qu'il utilise l'une quelconque des revendications 1 ou 2. 4. Procédé suivant l'une quelconque des revendications précédentes, caractérisé en ce qu'il s'applique à un objet portable de type carte à puce.