Brevet FR2875318A1 — publié le 20060317

PROTECTION D'UN ALGORITHME DES Domaine de l'invention La présente invention concerne le domaine des algorithmes de chiffrement, en particulier de type DES (Data Encryption Standard), exécutés par des circuits intégrés. L'invention concerne plus particulièrement =La protection de l'exécution d'un algorithme DES contre une attaque par analyse statistique de la consommation (Differential Power Analysis DPA) du circuit qui exécute l'algorithme. Exposé de l'art antérieur Les algorithmes DES ou tripleDES sont des algorithmes de chiffrement symétriques (à clé secrète) utilisés en cryptographie, par exemple, pour chiffrer des données avant de les faire transiter sur des supports non protégés (Internet, liaison entre une carte à puce et un lecteur de carte, entre un processeur et une mémoire externe, etc.). Ces algorithmes sont décrits, par exemple, dans des normes FIPS PUB 46-2 (DES) et FIPS PUB 46-1, et des modes de fonctionnement (connus sous les dénominations Electronic Codebook - ECB, Cipher Block Chaining - CBC, Cipher Feedback - CFB, Output Feedback - OFB) sont décrits dans FIPS PUB 81. Ces algorithmes effectuent un chiffrement par blocs (de 64 bits) en utilisant des clés (de 64 bits pour le DES et de 128 bits pour le triple DES) desquelles sont dérivées des sous-clés de 48 bits. Le déchiffrement est effectué à partir de la même clé (algorithme symétrique). Dans la description qui suit on prendra pour exemple l'algorithme DES. Un bloc à chiffrer noté M est soumis à une permutation initiale, notée IP, puis à seize itérations d'un calcul dépendant d'une clé, notée KEY, et enfin à une permutation inverse de la permutation initiale, notée IP. Le calcul dépendant de la clé KEY peut s'exprimer avec 10 les notations suivantes: i le rang de l'itération compris entre 1 et 16; L.R. un bloc de données de 64 bits, résultant de l'application de la fonction f à un bloc Ri 1 avec la sous-clé Ki, constitué d'un mot ou sous-bloc Li des 32 bits de gauche bl à b32 et d'un mot ou sous-bloc Ri des 32 bits de droite b33 à b64; Kun bloc de 48 bits extrait de la clé KEY de 64 bits et utilisé dans la fonction de chiffrement de rang i; et f une fonction du chiffrement. Avec les notations ci-dessus, le résultat de la 20 permutation initiale IP est un bloc LoRo et chaque itération applique: Li = Ri-1; et Ri = Li_1 (+) f (Ri_1, Ki) , où (+) désigne une addition bità-bit modulo 2 (OU- Exclusif bit-à-bit). Le résultat de la dernière itération est un bloc R L 1616 -1 qui est soumis à la permutation inverse IP pour fournir un bloc chiffré noté M'. La fonction f comporte trois étapes successives. Une première étape est une expansion, notée E, des 32 bits du sous-bloc Ri_1 en 48 bits pour les combiner, par une fonction OU-Exclusif bit-à-bit (+), avec les 48 bits de la sous-clé K1 de l'itération concernée. Le résultat de cette expansion et combinaison fournit huit groupes de six bits, notés Bn à B8i, tels que: B1.B2.2.B4.B5.B6.2 7iB 1 = K. (+) E (Ri 1) . 3 8- Une deuxième étape applique aux 48 bits issus de l'étape précédente une table de substitution, notée S ou SBOX. Dans cette étape, chaque groupe de six bits issu de l'expansion précédente est transformé, par une de huit fonctions de substitution (fonctions primitives), notées Si à s8, substituant chaque groupe Bii à B81 par un groupe S1(Bii) à S8 (B8i) , chacun sur 4 bits, de sorte à obtenir huit groupes de quatre bits, soit de nouveau 32 bits. Le résultat peut être noté : S1 (Bli) S2 (B2i) S3 (B3i) ...S8 (B8i) , les fonctions de substitution Si à S8 étant indépendantes du rang de l'itération. Une troisième étape est une permutation, notée P, des 32 bits issus de l'étape précédente. Cette permutation fournit un sous-bloc résultat de 32 bits correspondant au résultat de la fonction f et qui peut s'exprimer sous la forme: f (Ri-1' Ki) = P (S1 (Bii) S2 (B2i) S3 (B3i) ... S8 (B8i) ) Chaque sous-clé Ki est obtenue en appliquant une fonction de clé KS qui est une fonction particulière à la clé KEY, la fonction KS dépendant du rang i de l'itération, soit: Ki = KS (i, KEY) . Les détails des fonctions primitives KS, Si à S8 et P, ainsi que des fonctions E sont décrits dans les normes citées. Le déchiffrement s'effectue en soumettant un bloc à déchiffrer M' à la permutation initiale IP, puis à 16 itérations de calcul identiques à celles du chiffrement à la seule différence que les sous-clés sont utilisées dans un ordre inverse (on part de la sous-clé KL6 pour terminer par la sous-clé K1) . Le premier bloc issu de la permutation inverse est le bloc R L et le bloc issu de la dernière itération à soumettre 16 16 à la permutation initiale inverse IP est le bloc LoRo. La permutation IP donne le bloc déchiffré M. Une faiblesse des algorithmes de type DES apparaît lors d'attaques par analyse statistique de la consommation d'un circuit exécutant l'algorithme. De telles attaques consistent à faire des hypothèses sur la clé pour corréler un résultat intermédiaire durant les itérations à la consommation du circuit intégré. Ces attaques permettent de percer le secret constitué par la clé. En effet, la fonction f est connue (norme du DES) ainsi que la donnée d'entrée appliquée à l'algorithme. En supposant une partie de la sous-clé K par hypothèse, on obtient un résultat intermédiaire L.R.. Si on obtient une corrélation entre le résultat intermédiaire et la consonuita.tion du circuit à un instant t, l'hypothèse sur la clé est vérifiée. Les moyens de calcul informatiques permettent aux pirates d'effectuer des hypothèses en nombres suffisants, et ainsi de pirater le secret du circuit (la clé). Une première solution ccnnue pour tenter de protéger un secret manipulé par un algorithme DES est de masquer l'exécution par introduction de nombres aléatoires dans les itérations. Cette solution présente l'inconvénient de nécessiter une modification de l'algorithme lui-même et n'est donc pas applicable à des circuits dans lesquels la cellule d'exécution du DES existe déjà en logique câblée non reconfigurable. En effet, pour des questions de rapidité, l'algorithme est généralement exécuté, au moins partiellement, par une cellule en logique câblée intégrée au circuit utilisant les données. La clé est généralement stockée dans une zone sécurisée du circuit, par exemple, dans une phase de personnalisation des circuits intégrés. Son chargement dans la cellule d'exécution de l'algorithme s'effectue de façon protégée, par exemple en appliquant les méthodes décrites dans les brevets FR-A-2 802 668 et FR-A2 802 669. Une deuxième solution connue consiste à masquer l'exécution de l'algorithme avec la clé secrète en la faisant s'exécuter parmi plusieurs exécutions (de l'ordre d'une dizaine) utilisant de fausses clés. Ces clés sont stockées à demeure dans une mémoire non volatile associée au processeur d'exécution de l'algorithme ou directement câblées en dur dans le circuit. La vraie clé est généralement écrite lors de la personnalisation du circuit (par exemple, de la carte à puce) par une personne différente que le fabricant du circuit, dans une zone généralement inaccessible (zone sécurisée du circuit). Ainsi, un pirate ne peut pas savoir, lorsqu'une hypothèse sur une clé se vérifie, si c'est la bonne clé ou non qui a été utilisée. Un inconvénient de cette solution est que, pour préserver le masquage, il est nécessaire de protéger toutes les clés (les fausses comme la vraie) lors de leur chargement dans la cellule d'exécution de l'algorithme. Cela prend du temps et allonge, de façon incompatible avec la manipulation rapide souhaitée des données, l'exécution de l'algorithme. Un autre inconvénient de cette solution est qu'elle n'apporte que du bruit blanc donc aisément filtrable par le pirate. Résumé de l'invention La présente invention vise à améliorer la sécurité des algorithmes de chiffrement, en particulier de type DES, contre des attaques par analyses statistiques de la consommation d'un circuit intégré qui exécute cet algorithme. L'invention vise notamment à proposer une solution compatible avec la rapidité recherchée pour les chiffrements et déchiffrements des données. L'invention vise également à proposer une solution ne nécessitant pas de modifier l'algorithme lui-même et qui soit ainsi compatible avec des cellules d'exécution classique de l'algorithme DES. Pour atteindre ces objets ainsi que d'autres, la présente invention prévoit un procédé de protection de l'exécution d'un calcul algorithmique prenant en compte au moins une donnée valide et au moins une clé secrète par un circuit intégré, et effectuant plusieurs itérations d'un calcul de chiffrement, consistant à exécuter l'algorithme avec la donnée valide entre plusieurs exécutions du même algorithme avec des données invalides correspondant à une combinaison de la donnée valide avec des masques prédéterminés. Selon un mode de mise en oeuvre de la présente invention, la position de l'exécution avec la donnée valide 35 parmi l'ensemble d'exécution est sélectionnée aléatoirement. Selon un mode de mise en oeuvre de la présente invention, ladite combinaison est, pour chaque exécution masquée, une addition bit à bit des bits d'un bloc de la donnée valide avec les bits des masques. Selon un mode de mise en oeuvre de la présente invention, l'exécution avec la donnée valide correspond à une combinaison avec un masque neutre pour l'opération de combinaison. Selon un mode de mise en oeuvre de la présente invention, lesdits masques prédéterminés sont choisis de sorte que le résultat de l'application de l'algorithme avec la même clé soit différent pour au moins un bit du résultat de l'application de l'algorithme à la donnée valide. Selon un mode de mise en oeuvre de la présente 15 invention, l'algorithme est le DES, la combinaison intervenant avant l'exécution de la première itération. Selon un mode de mise en oeuvre de la présente invention, les masques sont des blocs de 64 bits à combiner avec des blocs de 64 bits de la donnée valide avant application d'une itération de chiffrement, le bloc de 64 bits de chaque masque comprenant parmi les bits de positions b7, b5_,, b49, b41, b33 et b25, entre 1 et 6 bits à l'état 1, les bits de toutes les autres positions étant à l'état O. L'invention prévoit également un processeur 25 d'exécution d'un algorithme de chiffrement de type DES ou analogue. Description détaillée Ces objets, caractéristiques et avantages, ainsi que d'autres de la présente invention seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif. Pour des raisons de clarté, seuls les étapes et éléments qui sont nécessaires à la compréhension de l'invention seront décrits par la suite. En particulier, la réalisation d'un processeur de calcul pour la mise en oeuvre de l'invention n'a pas été détaillée, celle-ci pouvant être mise en oeuvre avec tout processeur classique, en lui fournissant les données adaptées. Une caractéristique de:a présente invention est de masquer l'exécution de l'algorithme de chiffrement en exécutant cet algorithme plusieurs fois avec de fausses données, masquant ainsi le chiffrement de la "vraie" donnée. La vraie donnée à chiffrer introduite dans la cellule de traitement de l'algorithme est combinée avec des masques, de préférence prédéterminés, de façon à créer de fausses données sur lesquelles est appliqué l'algorithme de chiffrement. L'exécution de l'algorithme avec la donnée introduite non masquée est intercalée, de préférence à une position aléatoire, dans la série d'exécutions masquées. De préférence, tous les chiffrements s'effectuent avec la même clé qui n'est donc transférée qu'une seule fois dans la cellule de traitement de l'algorithme. Les masques sont en fait des blocs de donnés de même taille que les blocs de données traités par l'algorithme à l'étape choisie pour la combinaison qui sont combinés, de préférence, par une fonction de type OU-Exclusif (addition bit à bit) avec le bloc de données à chiffrer. De préférence, les masques sont choisis en fonction de l'algorithme pour que le résultat de l'application de l'algorithme avec la même clé soit différent pour au moins un bit du résultat de l'application de l'algorithme à la donnée valide. Par conséquent, un pirate introduisant une donnée qu'il connaît et effectuant des hypothèses sur la clé est incapable d'obtenir une corrélation correcte avec la consommation du circuit intégré dans la mesure où cette consommation est fonction d'une donnée différente. L'invention sera décrite par la suite en relation avec une mise en oeuvre préférée à l'algorithme DES. Elle s'applique toutefois plus généralement à tout algorithme de chiffrement, à la condition que la création des masques pour créer de fausses données par modification d'un message à chiffrer puisse être adaptée. De préférence, les masques manipulés par l'algorithme qui servent à introduire de fausses corrélations sur le canal (masquer l'exécution) sont préenregistrés dans le circuit intégré contenant la cellule. Un avantage qu'il y a à exécuter l'algorithme avec plusieurs données plutôt qu'avec plusieurs clés est que les données n'ont pas à être masquées pour leur introduction dans la cellule. La protection ne ralentit alors le chiffrement ou déchiffrement de la donnée introduite que de façon négligeable par rapport à la solution classique utilisant plusieurs clés. La présente invention tire profit du fait que, dans tout algorithme de chiffrement et notamment dans l'algorithme DES, le déroulement du calcul fait: que des valeurs successives peuvent être prédites en faisant des hypothèses sur la clé. Les faux messages (données masquées) intervenant dès le début font que ces hypothèses sont vues comme: relatives à une fausse clé. Dans l'algorithme DES, à chaque moment du calcul où la clé intervient sous la forme d'une sous-clé avec le message, la donnée et la sous-clé sont alors liées par une fonction notée arbitrairement g pour fournir un résultat intermédiaire noté arbitrairement I qui est tel que I = g(KEY, D). Une attaque par analyse de la consommation consiste à chercher à corréler les résultats I à la consommation en effectuant des hypothèses sur la clé KEY. Connaissant la donnée D qu'il introduit, et connaissant la fonction g (l'algorithme DES est connu), le pirate calcule un résultat I à partir d'une hypothèse sur la clé KEY. Si la corrélation entre la valeur I et la consommation du circuit se vérifie, c'est que l'hypothèse sur la clé était la bonne. Le fait d'exécuter l'algorithme sur une fausse donnée entraîne que le pirate obtient une corrélation sur une donnée modifiée D'. Il en découle, que la corrélation apparaît sur une hypothèse de clé qui n'est pas la bonne. En d'autres termes, le pirate croît que l'algorithme exécute la fonction I = g(KEY,D) alors qu'il exécute en fin de compte I' = g(KEY,D'), avec D' = D(+)A, où A désigne le masque fournissant le résultat I'. Le pirate croit connaître la donnée (qu'il a introduite) et fait donc des hypothèses sur la clé à partir d'analyses de la consommation. Mais, cette consommation est faussée sans qu'il le sache. En fait, en combinant la donnée d'entrée avec un masque, l'invention masque indirectement la clé en tenant compte du fait que l'attaquant potentiel effectue des hypothèses sur cette clé. Comme le résultat fournit par le circuit est faussé, il faut intercaler, de façon aléatoire, la "bonne" exécution parmi quelques exécutions masquées (le nombre d'exécutions masquées est choisi en fonction_ du temps disponible pour l'exécution de l'algorithme). Cela est notamment nécessaire pour faire fonctionner le circuit correctement en l'absence de piratage (il faut être en mesure de fournir le bon chiffrement lors d'une exécution normale). Ce résultat correct est fourni dans une zone de résultat différente de celle dans laquelle se retrouvent les fausses exécutions. De préférence, l'exécution avec la donnée valide correspond en fait à une combinaison avec un masque neutre du point de vue de la combinaison. Ainsi, aucune différence n'est détectable entre les exécutions. La seule référence qui doit être mémorisée temporairement pour être capable d'identifier l'exécution avec la donnée valide est sa position dans l'ensemble des exécutions qui correspond, de préférence, au résultat d'un tirage aléatoire. Dans le cadre de l'algorithme DES et selon ce mode de mise en oeuvre préféré, des masques ou données de masquage sont stockés, par exemple dans une zone de mémoire non volatile, dans le circuit intégré. La fonction de construction des masques est fonction 35 de l'algorithme et doit être telle que pour tout message D susceptible d'être choisi par l'attaquant et pour toute clé K (vraie) ou K' (fausse résultant d'une hypothèse), l'opération g (addition bit à bit dans le cas du DES) de combinaison de la première sous-clé K1 ou K1' avec un résultat intermédiaire noté I (I = E(Ro) dans le cas du DES) fonction de la donnée d'entrée avant application de la première sous-clé, est telle que: g(I, K1') = g(I', K1), où I' désigne le résultat intermédiaire obtenu avec la donnée masquée. Les masques sont toutefois construits indépendamment 10 des données D avec lesquelles ils sont susceptibles d'être combinés, ces données étant par contre inconnues. Pour l'algorithme DES, lorsque l'on considère les bits du message initial, on voit que certaines positions de bits (déterminées par IP et E) sont combinées avec les bits de clés, par exemple, les bits 1, 2, 3, 4, 5 et 6 de la sous-clé K1 sont combinés par un OU-Exclusif (+) avec les bits b7, b57, b49, b41, b33 et b25 du bloc de données D introduit. Ainsi, un masquage par combinaison de six bits m1, m2, m3, m4, m5 et m6 avec les bits b7, b57, b49, b41, b33 et b25 du message de donnée fournit un nouveau message qui, une fois appliqué en entrée de la cellule de chiffrement atteint le même résultat à l'issue de l'étape de la combinaison avec la sous-clé. Ainsi, l'attaquant qui calcule la corrélation entre les données traitées par l'algorithme lors du premier tour sous l'hypothèse correspondant à la bonne clé, n'obtient pas de corrélation, alors que sous l'hypothèse d'une fausse clé, il va voir apparaître une corrélation entre la clé prédite (son hypothèse) et les données effectivement calculées. Pour que la manipulation des fausses données ne soit pas repérable, le masque (qui peut être considéré comme un bloc de donnée prédéterminé - les six bits de masquage aux positions b7, b57, b49, b41, b33 et b25) doit être introduit en entrée de la cellule. Selon un mode de réalisation préféré, on choisit une combinaison quelconque d'états 0 et. 1 pour les six bits b7, b57, 35 b49, b41, b33 et b25 du bloc de données de masquage (une combinaison parmi les 64 possibles) et on fixe tous ses autres bits à l'état 0 (élément neutre de l'addition), de sorte que les bits du vrai message de donnée, autres que les bits b7, b57, b49, b41, b33 et b25, ne soient pas modifiés par le masque. En variante, les autres bits du bloc seront fixés aléatoirement. Cette variante n'est toutefois pas préférée car elle risque d'introduire un bruit blanc. Le mode de réalisation préféré ci-dessus tient compte du fait que, dans l'algorithme DES, l'application de la première substitution S (SBOX) n'affecte que les bits b7, b57, b49, b41, b33 et b25, du bloc de données. En effet, en représentant les blocs de 64 bits sous la forme de matrices de huit mots de huit bits et en reprenant les notations précédentes, le bloc de données d'entrée peut s'écrire: 1 5 b1, b2, b3, b4, b5, b6, b7, b8 b16 b9, blo, b11, b12, b13, b14, b15, b24 b23, b32 b31, b40 b39, b48 b47, b17, b18, b19, b20, b21, b22, b25, b26, b27, b28, b29, b30; b33, b34, b35, b36, b37, b38; b41, b42, b43, b44, b45, b46; b49, b50, b51, b52, bS3, b54; b55, b56 b57, b58, b59, b60, b61, b62, b63, b64. Après application de la permutation initiale IP, cette matrice devient: b58, b50, b42, b34, b26, b18, b10, b2 b60, b52, b44, b36, b28, b20, b12, b4 b62, b54, b46, b38, b30, b22' b14, b6 b64, b56, b48, b40, b32, b24, b16, b8 b57, b49, b41, b33, b25, b17, b9, b1; b59, b51, b43, b35, b27, b19, b11, b3 b61, b53, b45, b37, b29, b21, b13, b5 b63, b55, b47, b39, b31, b23, b15, b7. sont soumises au les et droite Lorsque parties gauche premier tour, seule la partie droite: b57, b49, b41, b33, b25, b17, b9, b1; b59, b51, b43, b35, b27, b19, b11, b3; bol, b53, b45, b37, b29, b21, b13, b5; b63, b55, b47, b39, b31, b23, b15, b7, est modifiée et devient: b7' b57' b49' b41' b33' b25' b17 b b b 25, 17, 9, . ; b15, b7' b57 En sortie de l'étape d'expansion E, on obtient huit 10 mots de six bits chacun qui ont l'expression suivante: b32, bl, b2, b3, b4, b5; b4, b5, b6, b7, b8, b9; b8, b9, b10, bll, b12, b13; b12, b13, b14, b15, b16, b17 1 5 b16, b17, b18, b19, b20, b21 b20, b21, b22, b23, b24, b25 b24, b25, b26, b27, b28, b29 b28, b29, b30, b31, b32, bl. Ainsi, on peut masquer une donnée D en la combinant par un OU-Exclusif avec un bloc dont au moins un des bits b7, b57, b49, b41, b33 et b25 est à 1 et tous les autres bits sont à 0. Toute combinaison de bits des bits b7, b57, b49, b41, b33 et b25 est valable pourvu qu'au moins un d'entre eux vaille un. On masque successivement: toutes les parties de la donnée D en appliquant le même masque à chaque bloc de 64 bits introduit dans la cellule. Bien entendu, la présente invention est susceptible de diverses variantes et modifications qui apparaîtront à l'homme de l'art. En particulier, bien que l'invention ait été décrite en relation avec un mode de mise en. oeuvre préféré de génération des fausses données, sa transposition à une autre fonction de génération est à la portée de l'homme du métier en respectant la condition que chaque portion sur laquelle s'applique la fonction de sélection de l'attaque DPA, c'est-à-dire chaque portion de six bits en entrée des étapes de substitution, diffère d'au moins un bit lorsqu'elle est masquée. De plus, la réalisation pratique d'une cellule d'exécution algorithmique pour la mise en oeuvre de l'invention est à la portée de l'homme du métier à partir des indications fonctionnelles données ci-dessus en utilisant des outils de programmation classiques. En outre, d'autres fonctions de combinaison des masques avec la donnée d'entrée sont envisageables pourvu de respecter les fonctionnalités décrites ci-dessus. L'addition bit à bit est toutefois préférée en raison de sa simplicité. REVENDICATIONS 1. Procédé de protection de l'exécution d'un calcul algorithmique prenant en compte au moins une donnée valide et au moins une clé secrète par un circuit intégré, et effectuant plusieurs itérations d'un calcul de chiffrement, caractérisé en ce qu'il consiste à exécuter l'algorithme avec la donnée valide entre plusieurs exécutions du même algorithme avec des données invalides correspondant à une combinaison de la donnée valide avec des masques prédéterminés. 2. Procédé selon la revendication 1, dans lequel la 10 position de l'exécution avec la donnée valide parmi l'ensemble d'exécution est sélectionné aléatoirement. 3. Procédé selon la revendication 1, dans lequel ladite combinaison est, pour chaque exécution masquée, une addition bit à bit des bits d'un bloc de la donnée valide avec les bits des masques. 4. Procédé selon la revendication 1, dans lequel l'exécution avec la donnée valide correspond à une combinaison avec un masque neutre pour l'opération de combinaison. 5. Procédé selon la revendication 1, dans lequel lesdits masques prédéterminés sont choisis de sorte que le résultat de l'application de l'algorithme avec la même clé soit différent pour au moins un bit du résultat de l'application de l'algorithme à la donnée valide. 6. Procédé selon la revendication 1, dans lequel 25 l'algorithme est le DES, la combinaison intervenant avant l'exécution de la première itération. 7. Procédé selon la revendication 6, dans lequel les masques sont des blocs de 64 bits à combiner avec des blocs de 64 bits de la donnée valide avant application d'une itération de chiffrement, le bloc de 64 bits de chaque masque comprenant parmi les bits de positions b7, b57, b49, b41, b33 et b25, entre 1 et 6 bits à l'état 1, les bits de toutes les autres positions étant à l'état O. 8. Processeur d'exécution d'un algorithme de chiffrement, comprenant des moyens pour mettre en oeuvre le procédé selon l'une quelconque des revendications 1 à 7.