FR 2802741 A1 20010622 FR 9915845 A 19991215 ! DISPOSITIF METTANT EN CEUVRE UN ALGORITHME DE CHIFFRAGE PAR BLOC A REPETITION DE RONDES s La présente invention concerne les dispositifs mettant en oeuvre un algorithme de chiffrage fournissant, à partir d'une donnée d'entrée en clair de longueur déterminée, un cryptogramme ou donnée de sortie qui dépend de la donnée d'entrée et d'une clé mémorisée inaccessible en lecture depuis l'extérieur du dispositif. L'invention est applicable aux dispositifs du genre mettant en oeuvre un chiffrage par bloc à répétition de rondes comportant chacune: - des transformations linéaires et - des transformations non linéaires correspondant à des tables de substitution et utilisant une clé maître à partir de laquelle sont générées une ou des sous clés qui sont injectées dans les rondes grâce à des opérations linéaires. Elle trouve un intérêt particulier dans les dispositifs de chiffrage mettant en oeuvre l'algorithme DES (data encryption standard) dont une description pourra être trouvée dans "Cryptographie Appliquée" par Bruce Schneier, traduction française, 2me Edition, International Thomson Publishing, pages 281 et suivantes. Cet algorithme est à l'heure actuelle utilisé dans les cartes à puce pour fournir, à partir d'une donnée d'entrée en clair de 8 octets et d'une clé maître de 56 éléments binaires ou bits utiles, un cryptogramme ou donnée de sortie. Un dispositif mettant en oeuvre l'algorithme de chiffrage DES peut être regardé comme ayant 16 étages en cascade, chaque étage recevant une entrée de 2 x 32 bits. L'étage d'entrée est précédé d'un permutateur d'entrée fournissant 32 bits constituant une partie gauche et 32 bits constituant une partie droite, les 32 bits constituant des opérandes. Le dernier étage est suivi d'un permutateur effectuant l'opération duale. Chaque étage comporte: - un élément d'expansion augmentant la taille de la partie droite, et - un ensemble ou "ronde" ayant en cascade un opérateur OU EXCLUSIF ou XOR sur l'opérande droit expansé et une sous-clé de même longueur dérivée de la clé maître et des tables de substitution ou "S-boxes" affectées chacune à un groupe de bits et à lecture dans un ordre arbitraire et un opérateur XOR sur le contenu lu dans les tables et l'opérande gauche expansé pour donner naissance à une partie gauche de 32 bits constituant une des sorties de l'étage, l'autre sortie étant constituée par le résultat de la première opération XOR. L'algorithme DES, tel qu'il est mis en oeuvre dans les cartes a puce, opère de la façon suivante. La donnée d'entrée est transformée en 16 étages successifs, à chacun desquels est affectée une sous-clé de 8 x 6 bits et on découpe chaque opérande, dans l'état o il est fourni a l'étage, en 8 tables de chacune 6 octets utiles. Les algorithmes définis, et notamment l'algorithme DES sont attaquables par analyse différentielle de consommation de courant, du fait qu'ils sont en règle générale mis en oeuvre avec des circuits C-MOS qui ne consomment du courant que lors des changements d'état. Ce mode d'attaque de l'algorithme DES est décrit dans l'article de Chari et al. 'Towards Sound Approaches to Counteract Power Analysis Attacks", Acte de la Conférence Crypto '99. Il repose sur des tests systématiques sur toutes les sous-clés possibles. On calcule des bits ayant participé au calcul a partir de chaque sous-clé choisie. Les mesures de consommation sont ensuite réparties en deux ensembles qui font apparaître un biais si la sous-clé est correcte. On remonte ainsi les étages ou itérations de l'algorithme. Dans le cas du DES mis en oeuvre sur les cartes à puce, à 16 étages et avec une clé de 64 bits (dont 56 bits utiles), donnant naissance à 16 sous-clés de 48 bits affectées chacune à une table, elles- mêmes scindées en 8 sous-clés élémentaires de 6 bits, un millier d'accès à la carte permet de déterminer la clé. :0 Le procédé pour rendre l'algorithme DES plus robuste qui est proposé dans l'article mentionné plus haut utilise la constatation que l'on peut interdire ou au moins gêner l'analyse différentielle de consommation, souvent appelée DPA, en manipulant les données de façon que les bits que l'attaquant calcule à partir de sa connaissance de l'algorithme et des entrees/sorties de la carte soit sans rapport avec les opérations réalisées dans la carte. Pour cela, I'article propose d'appliquer un masque aléatoire aux sousclés K intervenant à chaque étage i ou à certains des étages. Mais cette solution présente l'inconvénient de compliquer énormément les calculs, car le masque ne se conserve pas dans les étages successifs. Un but général de l'invention est d'augmenter la résistance à l'attaque, par analyse différentielle de consommation, des algorithmes du genre défini ci-dessus. Dans ce but elle propose un dispositif dans lequel: des masques sont appliqués aux opérandes d'entrée des rondes par des opérations linéaires, - la mise en oeuvre des tables de substitution est modifiée de telle sorte qu'une modification linéaire de leur entree résulte en une modification linéaire de leur sortie. La présente invention vise surtout à fournir un dispositif mettant en oeuvre un algorithme de chiffrage fournissant les mêmes résultats que les algorithmes ci-dessus DES, mais assurant une résistance très élevée à l'attaque par analyse différentielle de consommation, sans complication excessive des calculs. Dans ce but, il est proposé, suivant un autre aspect de l'invention, un dispositif de chiffrage mettant en oeuvre un algorithme donnant la même sortie que l'algorithme DES, comportant: - un permutateur initial P partageant l'entrée en une partie gauche L et une partie droite R chacune de 32 bits, - un opérateur d'entrée XOR entre la partie gauche L et un masque aléatoire M1 de même longueur, - un opérateur d'entrée XOR entre la partie droite R et le résultat de l'opération XOR effectuée sur M1 et sur une permutation P d'un masque aléatoire M2, - 16 étages en cascade, chaque étage recevant une entrée de 2 x 32 bits de l'étage précédent et ayant: un élément d'expansion de la partie droite masquée, donnant naissance à une valeur expansée R'i - une porte XOR de compensation, effectuant l'opération XOR sur R'i et la permutation P(M2), - une ronde effectuant l'opération XOR entre la sortie de la porte de compensation XOR et la valeur Li, et ayant des tables de substitution affectées chacune à un groupe de bits, à lecture dans un ordre arbitraire, et un opérateur XOR sur le contenu lu dans les tables et la partie gauche pour donner naissance à une partie gauche de sortie de 32 bits, I'autre sortie étant constituée par la sortie de la porte de compensation, I'opération effectuée par les tables d'un étage sur des opérandes d'entrée A et B étant de la forme: S(E[A] 0f M1) = B e M2 = S(E[A]) o M2 et les parties gauche et droite L'i et R'i du ième étage étant reliées aux parties gauche et droite Li et Ri de l'algorithme DES standard par les relations: Ri' = Ri ( M1 e P(M2) Li'= Li ( M1 - des opérateurs XOR de démasquage effectuant, en aval du dernier étage, les mêmes opérations qu'en entrée, - un permutateur effectuant l'opération p-1 duale de la permutation P d'entrée. Les termes "gauche" et "droit" ne sont utilisés que par commodité et sans que cela ait un sens quant à une disposition des opérandes. Les opérations successives peuvent être faites par voie logicielle ou matérielle. La constitution ci-dessus exploite le fait que les opérations OU, les opérations OU exclusif XOR, les expansions E et les permutations P ont un caractère linéaire, c'est-à- dire que, si on appelle M un octet d'un masque et A et B ceux de deux opérandes, on a: A( (B (M)=(A ( B) (M E (A M) = E (A) ( E (M) P (A D M) = P (A) ( P (M) Seul le passage dans les tables, dites "S BOX", n'est pas linéaire, ce qui oblige à constituer les tables de façon différente de celle utilisée pour mettre en oeuvre l'algorithme DES classique. Si on désigne par S l'opération effectuée par les tables d'un étage et par A et B les opérandes, I'opération: S(E[A]) = B est à remplacer par: S(E[A] ( M1) = B e M2 = S(E[A]) ( M2 mettent en oeuvre des opérations OU EXCLUSIF. Comme on le verra plus loin, les masques se conservent après passage dans les boîtes et cette propriété permet de répéter sans calcul supplémentaire la protection sur tous les ensembles successifs et donc d'obtenir une protection maximale sans complication additionnelle. On voit donc l'intérêt de l'application d'un masque aux opérandes, comparée à l'application d'un masque aux sous-clés. L'invention n'est pas applicable seulement à l'algorithme DES, mais également à tout autre algorithme de chiffrage mettant en ceuvre surtout des opérations de nature linéaire et des opérations dans lesquelles il y a conservation du masque sur les étages successifs. Les caractéristiques ci-dessus, ainsi que d'autres, apparaîtront mieux à la lecture de la description qui suit de la mise en oeuvre de l'invention dans un dispositif de chiffrage dérivé de dispositifs couramment utilisés dans les cartes à puce, ayant 2n = 16 étages ou itérations. La description se réfère aux figures qui l'accompagnent dans lesquelles t5 - la figure 1 est un schéma du dispositif, - la figure 2 est un schéma d'un étage. Le dispositif représenté comporte 16 étages de constitution identique. Les données d'entrée en clair, qu'on supposera par la suite être constituées, soit de 8 octets, soit 64 bits sont appliquées à un permutateur d'entrée 10, qui effectue une permutation IP. Ce permutateur fournit en sortie une partie gauche L de 32 bits et une partie droite R également de 32 bits. Avant d'entrer dans les étages successifs 1,..., i.. . 16, les parties L et R, qui constituent des opérandes, sont soumises à des opérations logiques XOR au niveau du bit, dans des portes 12 et 14: L E M1 R e M1 @ P(M2) M1 et M2 sont des masques de 32 bits qui seront utilisés dans chaque étage du dispositif, mais sont aléatoires, c'est-à-dire changent à chaque accès au dispositif, on obtient ainsi en 16 et 18 des opérandes L'O et R'o pour le premier étage. Dans chaque étage, la partie droite qui résulte de l'opération XOR en 14 est soumise à expansion E portant sa longueur de 32 à 48 bits, comme indiqué en 18 pour l'étage. 1. La partie droite R'0 est soumise en 19 à une opération XOR avec P(M2) qui compense l'opération faite en 14. La partie droite ainsi modifiée, comportant 48 bits, est combinée en 20 avec une sous-clé de 48 bits par une opération XOR. Chacune des sous-clés K1,.. ., K1 6 est constituée à partir de la clé maître par décalage et sélection de 48 bits parmi les 56 bits de la clé maître. Cette opération XOR 20 constitue le premier élément d'une ronde ou "round", identique dans chaque étage et effectuée dans une table de substitution 22 par un algorithme de substitution mémorisé. La sortie de la ronde est combinée avec la moitié gauche L'0 (pour l'étage 1) par une nouvelle opération XOR 24 et les sorties sont croisées de sorte que la moitié gauche devient la moitié droite et inversement. A l'issue de la ronde du dernier étage, la partie droite est combinée au masque M1 par une opération XOR 26 tandis que la partie gauche est combinée avec le résultat de l'opération M1E) P(M2) par une opération XOR 28. Enfin le résultat est soumis en 30 à une permutation IP-1 inverse de la permutation initiale. Une comparaison entre les résultats intermédiaires obtenus par l'algorithme DES classique et par l'algorithme modifié conformément à l'invention fait apparaître les différences. Si on désigne par Li et Ri les parties gauche et droite de la ième itération (ième étage) de l'algorithme DES standard et par L'i et R'i les parties gauche et droite du DES modifié conformément à l'invention, on a: Ri'=RieM1(DP(M2) Li'=Li(M1 L'opération XOR avec P(M2) avant expansion implique: S(E[Ri'GP(M2) eK) (M1])) = S(E[RiE)K]) ff M2 et comme Li+1 = Ri et Ri+1 = P(S(E[Ri(K])) (e Li il vient: 2 Li+l'= Ri 'O P(M2)= Ri O M1 ce qui donne Li+1'= Li+1 ( M1, et Ri+1'= P(S(E[Ri(GK] OGM2) GDLi, = P(S(E[Ri(K])) ( P(M2) ( Li(M1 ce qui donne Ri+1'= Ri+1 (3 M1G(P(M2) Ces formules font apparaître que les masques M1 et M2 se conservent au passages dans les tables successives. Les opérations XOR finales en 26 et 28 écartent les masques et conduisent au même résultat que le DES standard. L'avantage de l'invention découle de l'incertitude qu'elle provoque sur les bits découlant du masquage. Il y a une possibilité de 1/2 pour que chaque bit soit transformé en son complémentaire par l'opération de masquage. Comme les masques changent à chaque nouvel appel au DES, il est impossible de déterminer quels sont les bits masqués et quels sont ceux qui ne le sont pas. Par conséquent l'attaquant ne peut plus distinguer, même lorsqu'il essaie la bonne sous-clé, les valeurs des bits. L'attaque par DPA n'est plus possible. Expérimentalement aucun biais n'est apparu sur 10.000 accès au DES. L'accroissement de complexité requis est raisonnable. Dans la mise en oeuvre sur les carte à puce (16 étages et données de 64 bits), le recalcul dans les tables des rondes et le recalcul systématique n'exigent que 256 octets en mémoire vive. Le temps d'exécution du DES passe de 12 à 25 ms. Mais l'algorithme est englobé dans un processus nécessitant la récupération de la commande de chiffrement et des paramètres, de sorte que la perte de temps n'est que de l'ordre de 18 %. On passe de 72 à 85 ms et le code assembleur passe de 1000 à 1300 octets, ce qui est très tolérable au vu du résultat obtenu. REVENDICATIONS 1. Dispositif mettant en oeuvre un algorithme de chiffrage par bloc à répétition de rondes comportant chacune des transformations linéaires, et des transformations non linéaires correspondant à des tables de substitution, utilisant une clé maître à partir de laquelle sont générées une ou des sous clés qui sont injectées dans les rondes par des opérations linéaires, caractérisé en ce qu'il applique des masques aux opérandes d'entrée par des opérations linéaires et en ce que les tables de substitution sont prévues pour qu'une modification linéaire de leur entrée provoque une modification linéaire de leur sortie. 2. Dispositif mettant en oeuvre un algorithme de chiffrage donnant la même sortie que l'algorithme DES, comportant: - un permutateur initial P partageant l'entrée en une partie gauche L et une partie droite R chacune de 32 bits, - un opérateur d'entrée XOR entre la partie gauche L et un masque aléatoire M1 de même longueur, - un opérateur d'entrée XOR entre la partie droite R et le résultat de l'opération XOR effectuée sur M1 et sur une la permutation P d'un masque aléatoire M2, - 16 étages en cascade, chaque étage recevant une entrée de 2 x 32 bits de l'étage précédent et ayant: - un élément d'expansion de la partie droite masquée, donnant naissance à une valeur expansée R'i - une porte XOR de compensation, effectuant l'opération XOR sur R'i et la permutation P(M2), - une ronde effectuant l'opération XOR entre la sortie de la porte de compensation XOR et la valeur Li, et ayant des tables de substitution affectées chacune à un groupe de bits, à lecture dans un ordre arbitraire et un opérateur XOR sur le contenu lu dans les tables et la partie gauche pour donner naissance à une partie gauche de sortie de 32 bits, I'autre sortie étant constituée par la sortie de la porte de compensation, l'opération effectuée par les tables d'un étage sur des opérandes d'entrée A et B étant de la forme: S(E[A] ( M1) = B (M2 = S(E[A]) e M2 et les parties gauche et droite L'i et R'i du ième étage étant reliées aux parties gauche et droite Li et Ri de l'algorithme DES standard par les relations: Ri'= Ri M1 (e P(M2) Li '= Li (D M1 - des opérateurs XOR de démasquage effectuant, en aval du dernier étage, les mêmes opérations qu'en entrée, - un permutateur effectuant l'opération p-1 duale de la permutation P d'entrée.