FR 2789535 A1 20000811 FR 9901289 A 19990204 PROCEDE DE SECURISATION D'UN ENSEMBLE ELECTRONIQUE DE CRYPTOGRAPHIE A CLE SECRETE CONTRE LES ATTAQUES PAR ANALYSE PHYSIQUE La présente invention concerne un procédé de sécurisation d'un ensemble électronique mettant en #uvre un algorithme cryptographique qui utilise une clé secrète. Plus précisément, le procédé vise à réaliser une version de l'algorithme qui ne soit pas vulnérable face à un certain type d'attaques physiques - dites Differential Power Analysis ou High-Order Differential Power Analysis qui cherchent à obtenir des informations sur la clé secrète à partir de l'étude de la consommation électrique de l'ensemble électronique au cours de l'exécution du calcul. Les algorithmes cryptographiques considérés ici utilisent une clé secrète pour calculer une information de sortie en fonction d'une information d'entrée ; il peut s'agir d'une opération de chiffrement, de déchiffrement ou de signature ou de vérification de signature, ou d'authentification ou de non-répudiation. Ils sont construits de manière à ce qu'un attaquant, connaissant les entrées et les sorties, ne puisse en pratique déduire aucune information sur la clé secrète elle-même. On s'intéresse donc à une classe plus large que celle traditionnellement désignée par l'expression algorithmes à clé secrète ou algorithmes symétriques. En particulier, tout ce qui est décrit dans la présente demande de brevet s'applique également aux algorithmes dits à clé publique ou algorithmes asymétriques, qui comportent en fait deux clés : l'une publique, et l'autre, privée, non divulguée, cette dernière étant celle visée par les attaques décrites ci-dessous. Les attaques de type Analyse de Puissance Electrique, Power Analysis en langage anglo-saxon, développées par Paul Kocher et Cryptographie Research (Confer document Introduction to Differential Power Analysis and related Attacks by Paul Kocher, Joshua Jaffe, and Benjamin Jun, Cryptography Research, 870 Market St., Suite 1008, San Francisco, CA 94102, édition du document HTML à l'adresse URL : http://www.cryptography.com/dpa/technical/index.html, introduit dans la présente demande à titre de référence) partent de la constatation qu'en réalité l'attaquant peut acquérir des informations, autres que la simple donnée des entrées et des sorties, lors de l'exécution du calcul, comme par exemple la consommation électrique du microcontrôleur ou le rayonnement électromagnétique émis par le circuit. L'analyse d'énergie électrique différentielle, Differential Power Analysis en langage anglo-saxon, en abrégé DPA, est une attaque permettant d'obtenir des informations sur la clé secrète contenue dans l'ensemble électronique, en effectuant une analyse statistique des enregistrements de consommation électrique effectués sur un grand nombre de calculs avec cette même clé. On considère, à titre d'exemple non limitatif, le cas de l'algorithme DES (Data Encryption Standard), dont on peut trouver une description dans l'un des documents suivants : # FIPS PUB 46-2, Data Encryption Standard, 1994 ; # FIPS PUB 74, Guidelines for Implementing and Using the NBS Data Encryption Standard, 1981 ; # ANSI X3.92, American National Standard, Data Encryption Algori thm, 1981 ; # ISO/IEC 8731:1987, Banking - Approved Algorithms for Message Authentication - Part 1: Data Encryption Algorithm (DEA) . ou encore dans l'ouvrage suivant : # Bruce Schneier, Applied Cryptography, 2ème édition, John Wiley & Sons, 1996, page 270. Les documents précités sont introduits dans la présente demande à titre de référence. L'algorithme DES se déroule en 16 étapes appelées tours, confer figure la. Dans chacun des 16 tours, une transformation F est effectuée sur 32 bits. Cette transformation F utilise huit transformations non linéaires de 6 bits sur 4 bits, qui sont codées chacune dans une table appelée boîte-S, confer figure 1b, où les boîtes S sont notées Si, S2, Se. L'attaque DPA sur le DES peut être mise en #uvre de la manière suivante : # 1ère étape : On fait des mesures de consommation sur le premier tour, ceci pour 1000 calculs de DES. On note E[1], ..., E[1000] les valeurs d'entrée de ces 1000 calculs. On note C[1], ..., C[1000] les 1000 courbes correspondantes de consommation électrique mesurées lors de ces calculs. On calcule également la courbe moyenne CM des 1000 courbes de consommation. # 2ème étape : On s'intéresse, par exemple, au premier bit de sortie de la première boîte-S lors du premier tour. Notons b la valeur de ce bit. Il est facile de voir que b ne dépend que de 6 bits de la clé secrète. L'attaquant fait une hypothèse sur les 6 bits concernés. Il calcule - à partir de ces 6 bits et des E[i] - les valeurs théoriques attendues pour b. Cela permet de séparer les 1000 entrées E[l], ..., E[1000] en deux catégories : celles qui donnent b=0, et celles qui donnent b=l. # 3ème étape : On calcule maintenant la moyenne CM' des courbes correspondant à des entrées de la première catégorie, c'est-à-dire pour lesquelles b=0. Si CM et CM' présentent une différence notable, on considère que les valeurs retenues pour les 6 bits de clé étaient les bonnes. Si CM et CM' ne présentent pas de différence sensible, au sens statistique, c'est-à-dire pas de différence nettement supérieure à l'écart type du bruit mesuré, on recommence la 2ème étape avec un autre choix pour les 6 bits. # 4ème étape : On répète les étapes 2 et 3 avec un bit cible b issu de la deuxième boite-S, puis de la troisième boîte-S, ..., jusqu'à la huitième boîte-S. On obtient donc finalement 48 bits de la clé secrète. # 5ème étape : Les 8 bits restants peuvent être trouvés par recherche exhaustive. Cette attaque ne nécessite aucune connaissance sur la consommation électrique individuelle de chaque instruction, ni sur la position dans le temps de chacune de ces instructions. Elle s'applique de la même manière si on suppose que l'attaquant connaît des sorties de l'algorithme et les courbes de consommation correspondantes. Elle repose uniquement sur l'hypothèse fondamentale selon laquelle : Hypothèse fondamentale Il existe une variable intermédiaire, apparaissant dans le cours du calcul de l'algorithme, telle que la connaissance de quel ques bits de clé, en pratique moins de 32 bits, permet de décider si deux entrées, respectivement deux sorties, donnent ou non la même valeur pour cette variable. Tous les algorithmes utilisant des boîtes-S, tels le DES, sont potentiellement vulnérables à la DPA, car les modes de réalisation usuels restent en général dans le cadre de l'hypothèse mentionnée ci-dessus. Les attaques dites par analyse d'énergie électrique de haut niveau, High-Order Differential Power Analysis en langage anglo-saxon, en abrégé HO-DPA, sont une généralisation de l'attaque DPA décrite précédemment. Elles peuvent utiliser plusieurs sources d'information différentes, outre la consommation elles peuvent mettre en jeu les mesures de rayonnement électromagnétique, de température, etc. et mettre en #uvre des traitements statistiques plus sophistiqués que la simple notion de moyenne, des variables intermédiaires (généralisant le bit b défini ci-dessus) moins élémentaires. Néanmoins, elles reposent exactement sur la même hypothèse fondamentale que la DPA. Le procédé, objet de la présente invention, a pour objet la suppression des risques d'attaques DPA ou HO-DPA d'ensembles ou systèmes électroniques de cryptographie à clé secrète ou privée. Un autre objet de la présente invention est en conséquence une modification du processus de calcul cryptographique mis en #uvre par les systèmes électroniques de cryptographie protégés de manière que l'hypothèse fondamentale précitée ne soit plus vérifiée, à savoir qu'aucune variable intermédiaire ne dépend de la consommation d'un sous-ensemble aisément accessible de la clé secrète ou privée, les attaques de type DPA ou HO-DPA étant ainsi rendues inopérantes. Le procédé de sécurisation d'un ensemble électronique mettant en #uvre un processus de calcul cryptographique classique qui utilise une clé secrète, objet de la présente invention, est remarquable en ce que l'on sépare le processus de calcul cryptographique en plusieurs parties de calcul distinctes conduites parallèlement et mettant en #uvre des résultats partiels intermédiaires distincts de ceux du calcul cryptographique classique et que l'on reconstitue la valeur finale, obtenue par le calcul classique en l'absence de séparation, à partir des résultats partiels intermédiaires distincts. Par processus de calcul cryptographique classique, on entend tout processus de calcul séquentiel ou successif permettant d'obtenir des valeurs chiffrées, déchiffrées, des valeurs de signature, de vérification de signature, d'authentification et de non-répudiation. Un tel procédé permet d'inhiber les attaques de type DPA ou HO-DPA contre les ensembles ou systèmes embarqués munis de fonctions de calcul cryptographique tels que les cartes à microcalculateurs dédiées à des fonctions de monétique électronique, carte bancaire, carte de contrôle d'accès ou analogues. Il sera mieux compris à la lecture de la description et à l'observation des dessins ci-après dans lesquels, outre les figures la et lb relatives à l'art antérieur en référence au processus de chiffrement/ déchiffrement DES pour "Data Encryption System" en langage anglo-saxon : - la figure 2 représente un organigramme général illustratif du procédé objet de l'invention ; - la figure 3a représente, de manière illustrative, un mode de mise en #uvre non limitatif du procédé objet de la présente invention ; - la figure 3b représente, à titre d'exemple illustratif, un organigramme d'une mise en #uvre particulière du procédé objet de l'invention appliqué à une transformation non linéaire utilisée dans un processus de calcul cryptographique classique tel que le DES ; - la figure 3c représente une variante de mise en #uvre du procédé objet de l'invention tel qu'illustré en figure 2 ; - la figure 3d représente, à titre d'exemple illustratif, un organigramme d'une autre mise en #uvre particulière du procédé objet de l'invention, à partir d'une transformation bijective secrète, appliqué à une transformation non linéaire utilisée dans un processus de calcul cryptographique classique tel que le DES ; - la figure 3e représente, à titre d'exemple illustratif, un organigramme d'une autre mise en #uvre particulière du procédé objet de l'invention, à partir de fonctions polynomiales, appliqué à une transformation non linéaire utilisée dans un processus de calcul cryptographique classique tel que le DES. Une description plus détaillée du procédé de sécurisation d'un ensemble électronique mettant en #uvre un processus de calcul cryptographique classique qui utilise une clé secrète, objet de la présente invention, sera maintenant donnée en liaison avec les figures précitées. D'une manière générale, le procédé objet de la présente invention consiste, pour un processus de calcul cryptographique classique qui utilise une clé secrète Ks, ou privée, à modifier le processus de calcul cryptographique de manière que l'hypothèse fondamentale précitée ne soit plus vérifiée, aucune variable intermédiaire calculée ne dépendant plus, conformément au procédé objet de la présente invention, de la connaissance d'un sous-ensemble aisément accessible de la clé secrète. Dans ce but, et conformément au procédé objet de la présente invention tel que représenté en figure 2, a) on sépare le processus de calcul cryptographique classique en plusieurs parties de processus de calcul PPC1 à PPCk distinctes conduites parallèlement, puis b) on reconstitue la valeur finale V correspondant à celle obtenue par le calcul cryptographique classique, en l'absence de séparation, à partir des résultats partiels intermédiaires distincts v1 à Vk obtenus par la mise en #uvre des parties de processus de calcul distinctes PPC à PPCk précitées. Ainsi, les parties de processus de calcul sont indépendantes mais les variables ou résultats intermédiaires partiels sont liés. On réalise cette séparation en remplaçant chaque variable v intermédiaire, intervenant dans le cours du calcul et dépendant des données d'entrée (ou de sortie), par k variables Vu vi, ..., vk, telles que vl, v2, et vk permettent, au besoin, de reconstituer v. Plus précisément, cela signifie qu'il existe une fonction f telle que v=f (vl, v2, vk). On indique en outre que f satisfait, de préférence, la condition suivante : Condition n 1 : Soit i un indice compris, au sens large, entre 1 et k. La connaissance d'une valeur v ne permet jamais en pratique de déduire des informations sur l'ensemble des valeurs v1 telles qu'il existe un (k-1) -uplet (vl, vj~1, V+1' ... , vk) satisfaisant l'équation f(v1, ..., vk)=v ; Exemple n 1 : Si on prend comme fonction f (vlf vk)= VI (j) V2 (j) ... # vk, où # désigne la fonction "OU-exclusif" bit à bit, la condition n 1 est réalisée de manière manifeste, car, pour tout indice i compris entre 1 et k, l'ensemble considéré des valeurs vx contient toutes les valeurs possibles, et ne dépend donc pas de v. Exemple n 2 . Si on considère une variable v à valeurs dans le groupe multiplicatif de Z/nZ, c'est-à-dire l'ensemble des entiers modulo n qui possèdent un inverse, également modulo n, on peut prendre comme fonction f(v1, vk) = v1. v2 vk mod n, où les nouvelles variables v1, v2, vk sont également à valeurs dans le groupe multiplicatif de Z/nZ. La condition n 1 est aussi réalisée de manière manifeste, car, pour tout indice i compris entre 1 et k, l'ensemble considéré des valeurs vx contient toutes les valeurs possibles, et ne dépend donc pas de v. Conformément à un aspect remarquable du procédé objet de l'invention, on effectue alors une "traduction" de l'algorithme en remplaçant chaque variable intermédiaire v dépendant des données d'entrée (ou de sortie) par les k variables vl, v2, ... , vk. Pour garantir la sécurité maximale de l'algorithme modifié sous sa nouvelle forme, on impose la condition supplémentaire suivante sur la fonction f : Condition n 2 : La fonction f est telle que les transformations à effectuer sur v1, v2, ... , ou vk au cours du calcul, à la place des transformations effectuées habituellement sur v, peuvent être exécutées sans avoir à recalculer v. Premier exemple le DES Un premier exemple concernant la sécurisation du DES sera décrit en liaison avec la figure 3a. Dans cet exemple, on considère le cas particulier du DES. On choisit ici une séparation de chaque variable v intermédiaire, intervenant dans le cours du calcul et dépendant des données d'entrée, ou de sortie, en deux variables Vj et v2, c'est-à-dire que l'on prend k=2. On considère la fonction f (VI, v2) = v = vi (j) v2 de l'exemple n 1 ci-dessus, qui satisfait par construction la condition n 1. Par construction de l'algorithme, on constate facilement que les transformations qu'il effectue sur v peuvent toujours entrer dans l'une des cinq catégories suivantes : # permutation des bits de v ; # expansion des bits de v ; # OU-exclusif de v avec une autre variable v' du même type ; # OU-exclusif de v avec une variable c dépendant uniquement de la clé ou d'une sous-clé ; # transformation non linéaire de v par une boîte-S. Les deux premières catégories correspondent à des transformations linéaires sur les bits de la variable v. Pour celles-ci, la condition n 2 est donc très facile à vérifier : il suffit, à la place de la transformation effectuée habituellement sur v, d'effectuer la permutation ou l' expansion sur v1, puis sur v2, et la relation f(v1, v2)= v qui était vraie avant la transformation reste vraie également après. De même, dans le troisième cas, il suffit de remplacer le calcul de v" - v 69 v' par celui de v" 1 = v, En ce qui concerne le OU-exclusif de v avec une variable c dépendant uniquement de la clé ou d'une sous-clé, la condition n 2 est aussi très facile à satisfaire : il suffit de remplacer le calcul de v 69 c par Vj (j) c, ou V2 (j) c, ce qui assure la condition n 2. Enfin, à la place de la transformation non-linéaire v'=S (v) , donnée sous la forme d' une boîte-S, qui dans cet exemple admet des entrées de 6 bits et donne des sorties de 4 bits, on réalise la transformation (v'I,v'2)=S' (Vl,V2) au moyen de deux nouvelles boites S, chacune étant cette fois de 12 bits sur 4 bits. Pour garantir l'égalité f(v'1, v'2)= v', il suffit de choisir : (V'1 v' 2) = Sr (vlf / v2/ - ( A (vu / V2) I S (Vl V2/ A (VI V2) ) c'est-à-dire V'l = A(v1, v2) et v'2 = s(vl V2) 0 A(vu v2) où A désigne une transformation aléatoire et secrète de 12 bits vers 4 bits. La première (nouvelle) boîte-S correspond à la table de la transformation (v1, v2) # A (v1, v2) qui à (vi, v2) associe A (v1, v2) et la seconde (nouvelle) boîte-S correspond à la table de la transformation (vlf v2) S (v1 v2) (j) A(vl, v2) qui à (vI, v2) associe S (v:0 v2) 69 A (VI, v2) . La présence de la fonction aléatoire A permet de garantir la condition n 1. L'utilisation de tables permet par ailleurs d'éviter d'avoir à calculer v1# v2 et, par là, permet de satisfaire la condition n 2. Les tables de transformation ou de conversion peuvent être mémorisées dans une mémoire ROM de la carte à microcalculateur lorsque l'ensemble électronique est constitué par une carte à microcalculateur. Ainsi, pour une étape de calcul du type transformation non linéaire mise en #uvre par un processus de calcul cryptographique classique tel que le DES, la séparation, ainsi que représenté en figure 3b, peut être effectuée en k parties. Pour un processus de calcul cryptographique classique utilisant des transformations non linéaires de m bits sur n bits, décrites par des tables de conversion dans lesquelles les n bits de sortie de la transformation sont lus à une adresse fonction des m bits d'entrée, on remplace chaque transformation non linéaire appliquée à une variable intermédiaire jouant le rôle de variable d'entrée E du processus de calcul cryptographique classique, en l'absence de séparation, par une transformation non linéaire partielle de km bits sur kn bits appliquée à l'ensemble des variables intermédiaires partielles v1 à v2. Selon un aspect particulièrement remarquable du procédé objet de l'invention, cette transformation non linéaire partielle est décrite et réalisée par k tables de conversion partielle dans lesquelles les n bits de sortie v'1 ou v'2 ... ou v'kde la transformation sont lus à une adresse fonction des km bits d'entrée. Dans le premier exemple précité et en relation avec la figure 3b, on indique que k=2, n=4 et m=6. Variante n 1 : Pour des raisons d'encombrement de la ROM, on peut tout à fait utiliser la même fonction aléatoire A pour chacune des huit boîtes S de la description classique du DES, ce qui permet de n'avoir que neuf nouvelles boites-S à stocker au lieu de seize. Une variante, variante n 2, sera décrite en liaison avec la figure 3c. Variante n 2 : Afin de réduire la taille de la ROM nécessaire pour stocker les boîtes S, on peut également utiliser la méthode suivante : à la place de chaque transformation non-linéaire v'=S(v) de l'implémentation initiale, donnée sous la forme d'une boîte-S (qui dans l'exemple du DES admet des entrées de 6 bits et donne des sorties de 4 bits), on réalise la transformation (v'I,v'2)=S' (vl,v2) au moyen de deux boîtes S, chacune étant cette fois de 6 bits sur 4 bits. La mise en #uvre initiale du calcul de v'=S(v) est remplacée par les deux calculs successifs suivants : #Vp= (V1 V2) #(V'l, V' 2) = S' (VI, v2) - A (vo) S (rp-l (va (D A (vo) ) c'est-à-dire vs = A (v0) , v'2 = S (cp'1 (v0) ) (B A (vo) où rp est une fonction bijective et secrète de 6 bits sur 6 bits, et où A désigne une transformation aléatoire et secrète de 6 bits vers 4 bits. La première (nouvelle) boîte-S correspond à la table de la transformation v0 # A(v0) qui à v0 associe A (vo) et la seconde (nouvelle) boîte-S correspond à la table de la transformation vo #> -S' d'avoir à calculer (p-'(vo)= vie v2. Sur la figure 3d, on a représenté une étape de calcul correspondante, de type transformation non linéaire mise en #uvre dans le cadre du processus de calcul cryptographique classique tel que le DES, tel que modifié conformément au procédé objet de l'invention selon la Variante n 2. Outre la séparation en k parties appliquée à la variable d'entrée E, pour les transformations non linéaires de m bits sur n bits, décrites par des tables de conversion dans lesquelles les n bits de sortie sont lus à une adresse fonction des m bits d'entrée, on remplace chaque transformation non linéaire appliquée à une variable intermédiaire, jouant le rôle de variable d'entrée E, du processus de calcul classique par une transformation non linéaire partielle de km bits sur kn bits appliquée sur l'ensemble des variables intermédiaires partielles v1 à Vk. Cette transformation non linéaire partielle est décrite et réalisée par k tables de conversion, chacune des entrées des tables de conversion recevant une valeur obtenue par application d'une fonction bijective secrète #3 à la fonction f(vi, ...,vk) des variables intermédiaires partielles suivant la relation cp j o f (VI ..., vk), avec j # [l,k]. Selon un aspect particulièrement remarquable du procédé, objet de la présente invention, l'application précitée #3 o f (vl, vk) est effectuée par évaluation directe d'une valeur résultante, laquelle, appliquée à l'entrée de la table de conversion correspondante 1 à k, permet de lire n bits de sortie de la transformation v'1 ou v'22 ou ...v'à une adresse qui est fonction de ces m bits d'entrée. De même que dans le premier exemple précité, et en relation avec la figure 3d, on indique que pour la Variante n 2, k=2, m=6 et n=4. En outre, et dans une version simplifiée, les fonctions bijectives #1 à #k sont identiques. Pour que la condition n 2 soit satisfaite, il reste à choisir la transformation bijective (p ou des fonctions bijectives (pi à cpk de telle sorte que le calcul de Va=rp (VI(/) v2) puisse se faire sans avoir à recalculer v1# v2. Deux exemples de choix pour la fonction # sont donnés ciaprès : Exemple 1 : Une bijection # linéaire On choisit pour une fonction linéaire secrète et bijective de 6 bits sur 6 bits. Dans le cadre d'un tel choix, on considère l'ensemble des valeurs sur 6 bits comme un espace vectoriel de dimension 6 sur le corps fini F2 à deux éléments. En pratique, choisir revient à choisir une matrice aléatoire et inversible de taille 6x6 dont les coefficients valent 0 ou 1. Avec ce choix de #, il est facile de voir que la condition n 2 est satisfaite. En effet - pour calculer (p(vle v2) - il suffit de calculer p(vi), puis (v2) , et enfin de calculer le "OU-exclusif" des deux résultats obtenus. 1 1 0 1 0 0 1 1 0 1 0 1 0 1 1 0 1 0 Par exemple, la matrice 1 1 1 0 1 p est inversible. Il 0 1 1 1 1 0 0 0 1 1 0 1 lui correspond la bijection linéaire Exemple 2 : Une bijection # quadratique On choisit pour rp une fonction quadratique secrète et bijective de 6 bits sur 6 bits. Le terme "quadratique" signifie ici que chaque bit de valeur de sortie de la fonction est donné par une fonction polynomiale de degré deux des 6 bits d'entrée, qui sont identifiés à 6 éléments du corps fini F2. En pratique, on peut choisir la fonction rp définie par la formule p (x) =t (s (x) 5) , où s est une application linéaire secrète et bijective de (F2)6 sur L, t est une application linéaire secrète et bijective de L sur (F2) 6, et où L désigne une extension algébrique de degré 6 du corps fini F2. Le caractère bijectif de cette fonction # résulte du fait que a # a5 est une bijection sur l' extension L (dont l' inverse est b --> b3g) . Pour établir que la condition n 2 est encore satisfaite, il suffit de remarquer que l'on peut écrire : !P (VI V2) = lfI(vu Vl ) 6? y/ (vu V2) (j) 1/ (V2, VI ) 69 w (V2i V2) où la fonction y/ est définie par : :V(X@ y)=t (s (x) 4. s (y) ) . Par exemple, si on identifie L à F2(X]l(X6+X+I), et si on prend s et t de matrices respectives 1 1 0 1 0 0 (0 1 0 0 1 il 110101 110100 011010 101011 et 1 1 1 0 1 0 0 1 1 1 0 0 011110 1 0 1 0 1 0 001101 il/ 0 0 I 0 1 1 par rapport à la base (1, X, X2, X3, X4, X5) de L sur F2 et à la base canonique de (F2)6 6 sur F2, on obtient la bijection quadratique p de 6 bits sur 6 bits suivante . 9 (Ul U2 U3 , ua . U5 , U6) = (U2U5 (D UI U4 (D U4 (j) U6 (j) U6U2 (j) U4U6 (D U2 (f) U5 (f) U3 (f) u4u3 . U2U5 (j) U5UI (f) UIU4 (f) U4 (j) U6 (9 U4U5 (D U2 (j) U3 (D U3Ul , u2u5 (f) U5Ul u6u5 69 UiU4 u3us 69 Uj 69 U4U6 69 u6u3 69 U4U3 69 U3U1 , Ul U4 u2u3 u6ul 69 U4U6 (j) U5 (f) U6U3 (9 U4U3 , U5UI (f) UIU4 u6 69 U3U5 69 U4U5 69 Ul 69 U6Ul 69 U4U6 69 U3 69 U6U3 69 Uyl72 , U4 69 U6 (f) U3U5 (9 Ul 69 U4U6 (9 U6U3) Pour calculer !fi (Xl' x2 . x3 . X4 , X5 x6 . YI . Y2 , Y3 . Y9 . y 5 , Y6) ~ (x3Ys x6Y2 69 X6Y3 69 X6Y4 0 X3YI 69 XtiY1 69 XIY3 69 XlY5 69 X5Y2 (f) X5Y5 69 X5Yl 69 X6Y6 69 XIY6 69 XlY2 0 xIY9 69 X2YI 69 X2Y2 69 X4Y4 X3y3 69 X3Y6 69 X'Y3 69 xsY3 . X9Ys m x3Y1 X6YI (j) XZY5 (j) X5YI (j) xgye 69 XIY6 69 XlY2 0 X2Yl 69 X2Y2 m X9Y1 x4V4 69 x3Y3 , X6Yz (f) X6Y3 (f) X6Y4 (j) X6Y,5 (D X3Yl 69 xtiY1 69 XZY5 (f) X5YI (f) XIY6 69 XlYl 0 XlY2 69 XIY4 69 X2Y1 69 X2Y4 69 X4Y2 69 x2y6 69 X3Y4 69 X5Y3 , X3YI (f) x6Y2 x2y6 69 X5Y3 (j) XsY9 X5Y6 xyz 69 x2Y3 X4Y6 69 X6Y5 m XIY3 69 X5Y5 69 X2YI 69 X4YZ (f) X4Y5 69 X3Y5 69 X4Y3 69 X6Yl 69 x4yi , x3Y1 69 X6Y6 69 X5Y3 69 sys 69 xyz 69 XIY5 69 XIYI 69 XlY2 69 X2Yl 69 x2Y3 xjy6 69 X6Y5 (f) Xiy3 69 x2y4 0 X3Y3 0 X4Y5 (f) XZY5 (f) X6Yl 69 X4YI xsY9 69 x3y2 , X6Y6 (f) X9Y9 X5Y4 69 X5Y6 69 x6Y3 69 xjye 69 XlYl 69 XlY2 69 X2YI 69 X6Y5 (j) XZY4 (f) x4y2 69 X4Y5 (f) X3Y5 (f) X6YI 69 X6Y4) - En utilisant ces formules, on calcule successivement : (V1 va ; # # (v1, v2) ; # # (v2, v1) ; #V/ (V2, vz ) . Puis on calcule le "OU-exclusif" des quatre résultats obtenus. Variante n 3 : Toujours pour réduire la taille ROM nécessaire pour stocker les boîtes S, on peut enfin appliquer simultanément les idées des deux variantes précédentes, Variante n 1 et Variante n 2 . on utilise la Variante 2, avec la même bijection secrète rp (de 6 bits vers 6 bits) et la même fonction aléatoire secrète A (de 6 bits vers 6 bits) dans la nouvelle implémentation de chaque transformation non-linéaire donnée sous la forme d'une boîte-S. Variante n 4 Dans cette dernière variante, au lieu de mettre en #uvre la transformation (V'I,V'Z)=S' (vi,v2), au moyen de deux boîtes S, qui remplace la transformation non-linéaire v'=S(v) de la mise en #uvre initiale, qui était donnée sous la forme d'une boîte-S, on effectue le calcul de v'1 respectivement v'2 au moyen d'une fonction algébrique simple, pour laquelle les bits de v'1 respectivement v'2 sont donnés par une fonction polynomiale de degré total 1 ou 2 des bits de v1 et v2, puis on calcule v'2 respectivement v'1 au moyen d'une table. Cela permet encore de réduire la taille de la mémoire ROM nécessaire pour l'exécution matérielle. Ainsi que représenté en figure 3e, dans le cas d'une étape de calcul du type transformation non linéaire mise en #uvre par un processus de calcul cryptographique classique, tel que le DES, outre la séparation en k parties v1 à vk d'une variable intermédiaire jouant le rôle d'entrée E, les transformations non linéaires consistent pour le processus classique, de même que dans le cas des figures 3b et 3d, en une transformation non linéaire de m bits sur n bits, décrite par des tables de conversion dans lesquelles les n bits de sortie de la transformation sont lus à une adresse fonction des m bits d'entrée, selon le procédé objet de l'invention, on remplace chaque transformation non linaire appliquée à une variable intermédiaire du processus de calcul cryptographique classique, en l'absence de séparation, par une transformation non linéaire partielle de km bits sur kn bits appliquée sur l'ensemble des variables intermédiaires partielles v1 à vk. Dans ce cas, et en référence à la Variante n 4 de l'exemple 2 précité, (k-l)n bits de sortie de cette transformation sont calculés comme une fonction polynomiale des km bits d' entrée des variables v1, v2 ... vk selon les relations : V' i = P1(v1, v2, ... Vk) VI k-1 = Pk-i (vli v2, ... Vk) relations dans lesquelles P1 à Pk-1 désignent des fonctions polynomiales de m bits sur n bits. Les n bits restants v'k de la variable de sortie sont alors obtenus, par exemple, par la lecture d' une table de conversion non linéaire dans laquelle ces n bits sont lus à une adresse qui est fonction des km bits d'entrée. Dans la Variante n 4 de l'exemple précité, on rappelle que k=2, m=6 et n=4. Deuxième exemple : le Triple-DES Le Triple-DES consiste à effectuer séquentiellement des opérations de chiffrement/déchiffrement à partir de deux clés secrètes. Pour une description de l'algorithme Triple-DES, on pourra utilement se reporter à l'un des documents suivants : # ISO/IEC 8732:1987, Banking - Key Management (Wholesale); # ANSI X9.17, American National Standard, Financial Institution Key Management (Wholesale), 1985. ou encore dans l'ouvrage suivant : # Bruce Schneier, Applied Cryptography, 2ème édition, John Wiley & Sons, 1996, page 358, lesquels sont introduits dans la présente demande à titre de référence. Le principe consiste à utiliser le DES trois fois de suite pour chiffrer un message : on commence par effectuer un DES en mode chiffrement avec la clé n 1, puis un DES en mode déchiffrement avec la clé n 2, et enfin un DES en mode chiffrement à nouveau avec la clé n 1. L'attaque de type DPA est possible de la même manière que pour le DES : grâce aux mesures de consommation effectuées sur le premier tour du premier DES, on trouve 48 bits de la clé n 1, puis en considérant le deuxième tour, on trouve les 8 bits restants de la clé n l. Connaissant la clé n 1, on connaît alors les entrées du deuxième DES, et on peut appliquer la même attaque pour trouver la clé n 2. La sécurisation de l'algorithme peut s'opérer exactement comme dans le cas du simple DES décrit dans le premier exemple ci-dessus : on utilise la même fonction f pour effectuer la "séparation" des variables intermédiaires, et les mêmes transformations de l'algorithme. Troisième exemple : le RSA Le RSA est le plus célèbre des algorithmes cryptographiques asymétriques. Il a été développé par Rivest, Shamir et Adleman en 1978. Pour une description plus détaillée de cet algorithme, on pourra utilement se reporter aux documents ci-après : # R. L. Rivest, A. Shamir, L.M. Adleman, A Method for Obtaining Digital Signatures and Public-Key Cryptosystems, Communications of the ACM, 21, n 2, 1978, pp. 120-126, ou dans les documents suivants : # ISO/IEC 9594-8/ITU-T X. 509, Information Technology - Open Systems Interconnection - The Directory: Authentication Framework ; # ANSI X9.31-1, American National Standard, Public-Key Cryptography Using Reversible Algorithms for the Financial Services Industry, 1993 ; # PKCS #1, RSA Encryption Standard, version 2,1998, disponible à l'adresse suivante : ftp://ftp.rsa.com/pub/pkcs/doc/pkcs-lv2.doc., ces documents ou leur édition à titre de page HTML étant introduits dans la présente description à titre de référence. L'algorithme RSA utilise un nombre entier n qui est le produit de deux grands nombres premiers p et q, et un nombre entier e, premier avec ppcm(p-1,q-1), et tel que e 1 1 mod ppcm(p-1,q-l). Les entiers n et e constituent la clé publique. Le calcul en clé publique fait appel à la fonction g de Z/nZ dans Z/nZ définie par g(x)=xe mod n. Le calcul en clé secrète fait appel à la fonction g-1(y)=yd mod n, où d est l'exposant secret (appelé aussi clé secrète, ou privée) défini par ed = 1 mod ppcm (p-l,q-i) . Les attaques de type DPA ou HO-DPA font également peser une menace sur les mises en #uvre classiques de l'algorithme RSA. En effet , celles-ci utilisent très souvent le principe dit de square and multiply en langage anglo-saxon pour effectuer le calcul de xd mod n. Ce principe consiste à écrire la décomposition d dm-1#2m-1 + dm~22"-Z + ... + di-21 + do-20 de l' exposant secret d en base 2, puis d'effectuer le calcul de la manière suivante : 1 . z # 1 ; pour i allant de m-1 jusqu'à 0 faire : 2. z # z2 mod n ; 3. si di -alors z # z # # mod n. Dans ce calcul, on constate que parmi les valeurs successives prises par la variable z, les premières ne dépendent que de quelques bits de la clé secrète d. L'hypothèse fondamentale permettant l'attaque DPA est donc réalisée. On peut ainsi deviner par exemple les 10 bits de poids fort de d en s'intéressant aux mesures de consommation sur la partie de l'algorithme correspondant à i allant de m-1 à m-10. On peut ensuite continuer l' attaque en utilisant les mesures de consommation sur la partie de l'algorithme correspondant à i allant de m-11 à m-20, ce qui permet de trouver les 10 bits suivants de d, et ainsi de suite. On trouve finalement tous les bits de l'exposant secret d. Le procédé objet de la présente invention s'applique également à la sécurisation de l'algorithme RSA. On utilise une séparation de chaque variable v intermédiaire, à valeurs dans le groupe multiplicatif de Z/nZ, c'est-à-dire dans l'ensemble des entiers modulo n qui possèdent un inverse, également modulo n, qui interviennent dans le cours du calcul et qui dépendent des données d'entrée ou de sortie, en deux variables v1 et v2. On prend k=2 et on prend la fonction f (v1, v2) = v = VI . v2 mod n. On a déjà montré précédemment dans la description, confer exemple n 2 "Sécurisation de l'algorithme", que cette fonction f permet de satisfaire la condition n 1 On remplace donc x par (XI, x2) tel que x = xi - x2 mod n et z par (z1, z2) tel que z = z1. z2 mod n . En pratique, on peut par exemple choisir x1 aléatoirement et en déduire x2. En reprenant maintenant les trois étapes de la méthode "square and multiply", on effectue les transformations suivantes : 1. z 3. z Il est facile de vérifier que la relation z=f(z1, z2) reste vraie tout au long du calcul, ce qui montre que la condition n 2 est satisfaite. On remarquera que les calculs effectués respectivement sur la variable z1 et sur la variable z2 sont complètement indépendants. On peut donc prévoir d'exécuter les deux calculs : # soit séquentiellement ; # soit de façon imbriquée ; # soit de façon simultanée dans le cas de la multiprogrammation ; # soit encore simultanément dans des processeurs différents travaillant en parallèle. REVENDICATIONS 1. Procédé de sécurisation d'un ensemble électronique mettant en #uvre un processus de calcul cryptographique classique qui utilise une clé secrète, caractérisé en ce que : a) l'on sépare le processus de calcul cryptographique classique en plusieurs parties de processus de calcul distinctes conduites parallèlement et mettant en #uvre des résultats partiels intermédiaires distincts de ceux du calcul cryptographique classique ; b) on reconstitue la valeur finale obtenue par le calcul cryptographique classique en l'absence de séparation, à partir desdits résultats partiels intermédiaires distincts. 2. Procédé selon la revendication 1, caractérisé en ce que chaque variable ou résultat (v) intermédiaire dépendant des données d'entrée ou de sortie mises en #uvre par le processus de calcul cryptographique classique est remplacé par un nombre déterminé k de variables intermédiaires partielles (v1, ..., vk) , les variables intermédiaire (v) et intermédiaires partielles (v1 à vk) étant liées par une fonction f, v=f(v1, v2, ..., vk) permettant la reconstitution de ladite variable intermédiaire (v). 3. Procédé selon la revendication 2, caractérisé en ce que ladite fonction f, liant les variables intermédiaires partielles et ladite variable intermédiaire (v), est telle que la connaissance d'une valeur de cette variable intermédiaire ne permet jamais de déduire l'ensemble des valeurs particulières partielles v1 telles qu'il existe un (k-1) -uplet (VI, v.,-,, v1+1, vk) satisfaisant à l'équation f(v1, ..., v1, vk) - v. 4. Procédé selon la revendication 3, caractérisé en ce que ladite fonction est la fonction "OU-exclusif" bit à bit, lesdites variable intermédiaire (v) et variables intermédiaires partielles (VI, ..., v1, vk) vérifiant la relation : f (VI, ..., Vj, ..., Vk) = V1 V2 e, ... (f) vx (f) Vk. 5. Procédé selon la revendication 3, caractérisé en ce que pour une variable intermédiaire (v) à valeurs dans le groupe multiplicatif Z/nZ défini par l'ensemble des entiers modulo n, ladite fonction est la fonction produit modulo n, f (VI,..., Vk) =v2 . V2 ... Vk modulo n, dans laquelle lesdites variables intermédiaires partielles sont des variables à valeurs dans ledit groupe multiplicatif de Z/nZ. 6. Procédé selon l'une des revendications 3 à 5, caractérisé en ce que, ladite fonction f liant les variables intermédiaires partielles et ladite variable intermédiaire (v), les parties de processus de calcul distinctes conduites parallèlement sont indépendantes, lesdites parties de processus de calcul distinctes conduites parallèlement étant conduites en l'absence de reconstitution de ladite variable intermédiaire (v) dépendant des données d'entrée ou de sortie mise en #uvre par ledit processus de calcul cryptographique classique. 7. Procédé selon l'une des revendications 1 à 6, caractérisé en ce que ladite séparation est effectuée en deux parties distinctes conduites parallèlement. 8. Procédé selon l'une des revendications 1 à 6, caractérisé en ce que ladite séparation est effectuée en k parties, et en ce que, pour un processus de calcul cryptographique classique utilisant des transformations non linéaires de m bits sur n bits décrites par des tables de conversion dans lesquelles les n bits de sortie de la transformation sont lus à une adresse fonction des m bits d'entrée, on remplace chaque transformation non linéaire appliquée à une variable intermédiaire du processus de calcul cryptographique classique, en l'absence de séparation, par une transformation non linéaire partielle de km bits sur kn bits appliquée à l'ensemble des variables intermédiaires partielles, cette transformation non linéaire partielle étant décrite par k tables de conversion partielle dans lesquelles les n bits de sortie de la transformation sont lus à une adresse fonction des km bits d'entrée. 9. Procédé selon la revendication 8, caractérisé en ce que parmi les k tables de conversion partielle k-1 tables de conversion partielle contiennent des variables aléatoires secrètes. 10. Procédé selon les revendications 8 et 9, caractérisé en ce que parmi les k tables de conversion partielle, utilisées pour remplacer chaque table de conversion non linéaire, on utilise à chaque fois les mêmes k-1 tables aléatoires secrètes. 11. Procédé selon l'une des revendications 1 à 6, caractérisé en ce que ladite séparation est effectuée en k parties, et en ce que, pour un processus de calcul cryptographique classique utilisant des transformations non linéaires de m bits sur n bits décrites par des tables de conversion dans lesquelles les n bits de sortie de la transformation sont lus à une adresse fonction des m bits d'entrée, on remplace chaque transformation non linéaire appliquée à une variable intermédiaire du processus de calcul cryptographique classique, en l'absence de séparation, par une transformation non linéaire partielle de km bits sur kn bits appliquée sur l'ensemble des variables intermédiaires partielles, (k-l)n desdits bits de sortie de cette transformation étant calculés comme fonction polynomiale des km bits d'entrée et les n bits restants desdits bits de sortie étant obtenus par lecture d'une table de conversion dans laquelle les n bits restants sont lus à une adresse qui est fonction des km bits d'entrée. 12. Procédé selon l'une des revendications 2 à 6, caractérisé en ce que ladite séparation est effectuée en k parties, et en ce que, pour un processus de calcul cryptographique classique utilisant des transformations non linéaires de m bits sur n bits décrites par des tables de conversion dans lesquelles les n bits de sortie de la transformation sont lus à une adresse fonction des m bits d'entrée, on remplace chaque transformation non linéaire appliquée à une variable intermédiaire du processus de calcul cryptographique classique, en l'absence de séparation, par une transformation non linéaire partielle de km bits sur kn bits appliquée sur l'ensemble des variables intermédiaires partielles, cette transformation non linéaire partielle étant décrite par k tables de conversion, chacune de ces tables de conversion recevant comme entrée une valeur obtenue par application d'une fonction bijective secrète (pi à ladite fonction f (vl, ..., vk) des variables intermédiaires partielles selon la relation Çj o f (vl, ..., vk) , j e [l,k], cette application (pj o f (vl,..., Vk) étant effectuée par évaluation directe d'une valeur résultante, cette valeur résultante, appliquée à l'entrée de la table de conversion, permettant de lire n bits de sortie de la transformation à une adresse qui est fonction de ces m bits d'entrée. 13. Procédé selon la revendication 12, caractérisé en ce que, parmi les k tables de conversion partielle, k-1 tables de conversion partielle contiennent des valeurs aléatoires secrètes. 14. Procédé selon les revendications 12 et 13, caractérisé en ce que, parmi les k tables de conversion partielle utilisées pour remplacer chaque table de transformation non linéaire, on utilise à chaque fois les mêmes k-1 tables de conversion aléatoires secrètes. 15. Procédé selon l'une des revendications précédentes caractérisé en ce que les opérations effectuées dans les différentes parties issues de la séparation du processus de calcul cryptographique en plusieurs parties de processus de calcul distinctes sont exécutées séquentiellement. 16. Procédé selon l'une des revendications précédentes caractérisé en ce que les opérations effectuées dans les différentes parties issues de la séparation du processus de calcul cryptographique en plusieurs parties de processus de calcul distinctes sont exécutées de façon imbriquée. 17. Procédé selon l'une des revendications précédentes caractérisé en ce que les opérations effectuées dans les différentes parties issues de la séparation du processus de calcul cryptographique en plusieurs parties de processus de calcul distinctes sont exécutées de façon simultanée dans le cas de la multiprogrammation. 18. Procédé selon l'une des revendications précédentes caractérisé en ce que les opérations effectuées dans les différentes parties issues de la séparation du processus de calcul cryptographique en plusieurs parties de processus de calcul distinctes sont exécutées simultanément dans des processeurs différents travaillant en parallèle. 19. Utilisation du procédé selon l'une des revendications 1 à 16 dans une carte à microcalculateur. 20. Utilisation du procédé selon l'une des revendications 1 à 18 pour la sécurisation de processus de calcul cryptographique supporté par les algorithmes DES, Triple DES, RSA.