FR 2985624 A1 20130712 FR 1250272 A 20120111 PROCEDE DE CHIFFREMENT PROTEGE CONTRE DES ATTAQUES PAR CANAUX AUXILIAIRES La présente invention concerne un procédé de chiffrement par bloc exécuté par un 5 microcircuit et protégé contre des attaques par canaux auxiliaires, pour la transformation d'un message en un message chiffré, à partir d'une clé secrète. La présente invention concerne notamment les circuits intégrés de carte à puce ou les composants cryptographiques matériels intégrés sur les cartes mères des ordinateurs io et autres équipements électroniques et informatiques grand public nécessitant des moyens de sécurité (clés USB, décodeurs de chaînes télévisées, consoles de jeu, etc.), dits "TPM" (Trusted Platform Module). De tels microcircuits sont équipés d'un CPU (unité centrale de traitement) qui 15 comprend généralement un coeur CISC 8 bits ou un coeur RISC 8, 16 ou 32 bits. Certains sont équipés d'un coprocesseur dédié au calcul cryptographique, par exemple un coprocesseur DES (Data Encryption Standard) ou AES (Advanced Encryption Standard). Ils comportent des milliers de portes logiques qui commutent différemment en fonction des opérations exécutées. Ces commutations créent des variations de 20 consommation de courant de courte durée, par exemple de quelques nanosecondes, qui sont mesurables. Notamment, les circuits intégrés de technologie CMOS comprennent des portes logiques qui ne consomment du courant que lors de leur commutation, correspondant au passage à 1 ou à 0 d'un noeud logique. Ainsi, la consommation de courant dépend des données manipulées par le CPU et de ses 25 différents périphériques : mémoire, données circulant sur le bus de données ou d'adresse, coprocesseur cryptographique, etc. De tels microcircuits sont soumis à des attaques dites par canaux auxiliaires, basées sur l'observation de leur consommation de courant, leur rayonnement magnétique ou électromagnétique. De telles attaques visent à découvrir les données secrètes qu'ils utilisent, notamment leurs clés de cryptographie. Les attaques par canaux auxiliaires les plus répandues mettent en oeuvre des méthodes d'analyse statistique telle que l'analyse DPA ("Differential Power Analysis") ou CPA ("Correlation Power Analysis"). L'analyse DPA permet de retrouver la clé d'un algorithme de cryptographie grâce à l'acquisition de nombreuses courbes de consommation du circuit. L'analyse CPA se base sur un modèle linéaire de consommation de courant et consiste à calculer un coefficient de corrélation entre, d'une part, les points de consommation mesurée qui forment les courbes de consommation capturées et, d'autre part, une valeur estimée io de consommation, calculée à partir du modèle de consommation linéaire et d'une hypothèse sur l'opération qu'exécute le microcircuit et sur la valeur de la clé de cryptographie. Afin de protéger de tels microcircuits et les procédés de chiffrement qu'ils exécutent 15 contre de telles attaques par canaux auxiliaires, des contre-mesures sont généralement prévues. Les contre-mesures les plus généralement mises en oeuvre sont le masquage ou l'exécution multiple. Une contre-mesure par masquage utilise un masque aléatoire (nombre binaire) qui est combiné à la clé et/ou au message pendant l'exécution du procédé de chiffrement. Ce type de contre-mesure est efficace mais 20 nécessite un coprocesseur spécialement prévu pour sa mise en oeuvre, dans le cas d'une exécution par un coprocesseur, ou un programme d'une plus grande complexité, dans le cas d'une exécution par le CPU du microcircuit. Une contre-mesure par exécution multiple peut au contraire être mise en oeuvre avec 25 un coprocesseur conventionnel ne comportant pas de moyens de contre-mesure. Elle consiste simplement à exécuter le procédé de chiffrement plusieurs fois au moyen de fausses clés. A cet effet, on prévoit par exemple un programme de contre-mesure qui contrôle le programme de chiffrement ou le coprocesseur, et lui fait exécuter le procédé de chiffrement plusieurs fois avec les fausses clés, de sorte que l'exécution du procédé de chiffrement avec la bonne clé (i.e. la clé authentique) est "noyée" dans un ensemble d'exécutions factices. La présente invention concerne plus particulièrement les contre-mesures par exécution multiple appliquées aux procédés de chiffrement par bloc de type symétrique comme les procédés DES, TDES et AES. Ces contre-mesures classiques seront mieux comprises après avoir rappelé la structure de ces procédés de chiffrement. Io La figure 1A montre schématiquement l'architecture d'un procédé de chiffrement par bloc CP1. Le procédé est symétrique, ce qui signifie qu'il utilise la même clé secrète pour le chiffrement ou le déchiffrement. Le procédé reçoit en entrée un message M et une clé secrète K, et fournit un message chiffré C. Il comporte Nr rondes RD,, RD2,...RD'... RDN,i, RDNr exécutées successivement. Entre la première ronde RD, et la 15 dernière ronde RDNr, le procédé comprend des rondes intermédiaires RD2,... RD'... RDNr_i. Le procédé peut aussi comprendre une opération initiale 10 visant à préparer le message avant l'exécution des rondes, au moyen d'une première fonction de transformation, et une opération finale FO visant à transformer le résultat de la dernière ronde au moyen d'une seconde fonction de transformation, pour obtenir le 20 message chiffré C. Chaque ronde RD, (i étant considéré ici comme un indice allant de 1 à Nr) utilise généralement une sous-clé SK, dérivée de la clé K ou dérivée de la sous-clé utilisée par la ronde précédente. Chaque ronde fournit à la ronde suivante un résultat 25 intermédiaire secret qui n'est pas accessible à un attaquant, ce résultat étant par exemple stocké temporairement dans une mémoire protégée. Ainsi, la première ronde RD, reçoit comme donnée d'entrée le message M ou une donnée issue de la transformation message par l'opération initiale 10, et fournit un premier résultat intermédiaire secret à la ronde suivante RD2. Chaque ronde intermédiaire RD, reçoit comme donnée d'entrée le résultat intermédiaire secret fournit par la ronde précédente, et fournit un résultat intermédiaire secret à la ronde suivante. La dernière ronde reçoit comme donnée d'entrée le résultat intermédiaire secret fournit par l'avant-dernière ronde RDNr_i et fournit un résultat final formant le message chiffré C ou formant le message chiffré après transformation par l'opération finale FO. Le nombre de rondes est prédéterminé par des normes, et est par exemple égal à 16 dans le cas du procédé DES, 48 dans le cas du procédé TDES, 10 dans le cas du procédé AES 128, 12 dans le cas du procédé AES 192 et 14 dans le cas du procédé AES 256. De même, les normes définissent la structure des rondes, c'est-à-dire les opérations de chiffrement qu'elles comportent. Comme illustré schématiquement sur la figure 1B, chaque ronde RD, comporte généralement des sous-rondes SRD1, SRD2,.... SRDn. Par exemple, chaque ronde RD, du procédé DES comprend quatre sous-rondes PermutationExpansive, OU Exclusif, Substitution, et PermutationSimple. Comme autre exemple, la figure 2 représente sous la forme d'un organigramme "AES1" la structure classique d'un procédé de chiffrement AES. Le procédé comprend une opération initiale 10 comprenant l'opération "AddRoundKey" (addition de clé) utilisant une première sous-clé SK0, neuf rondes RD, (RD1 à RD9) utilisant neuf autres sous-clés SK, et comprenant chacune quatre sous-rondes "SubBytes", "ShiftRows", "MixColumns" et "AddRoundKey", et une dernière ronde RD10 comprenant trois sous-rondes "SubBytes", "ShiftRow" et "AddRoundKey" utilisant une dixième sous-clé SK10. La figure 3 représente schématiquement un exemple de procédé CP2 protégé contre les attaques par canaux auxiliaires par la technique d'exécution multiple. Le procédé comporte une étape initiale de génération de N1-1 fausses clés K1, K2, ..., KNi_i, la bonne clé K étant par exemple la clé Ko. Le procédé CP2 comprend N1 exécutions du procédé CP1 de la figure 1. Le procédé CP1 est exécuté une première fois avec la clé Ko, puis avec la première fausse clé K1, puis la seconde fausse clé K2, etc. jusqu'à la N1ème exécution avec la fausse clé Chaque exécution fournit un résultat Co, C,,...CN,_, à partir de la clé correspondante et du message M. Un seul de ces résultats est valable et les autres sont factices. L'ordre dans lequel les clés sont utilisées est aléatoire (l'ordre régulier montré sur la Fig. 3 n'étant qu'un exemple) de sorte qu'un s attaquant ne sait pas quelle est l'exécution qui utilise la bonne clé. Cette solution présente toutefois l'inconvénient d'être pénalisante en termes de temps d'exécution du procédé de chiffrement. Les multiples exécutions du procédé de chiffrement CP1 ralentissent fortement le temps de fourniture du résultat même lorsque io l'on dispose d'un processeur ou un coprocesseur rapide. Ainsi, par exemple, lorsque N1=8, la contre-mesure nécessite l'exécution de 128 rondes pour un procédé DES et de 384 rondes pour un procédé TDES. Si N1=32, la contre-mesure nécessite l'exécution de 512 rondes pour un procédé DES et de 1536 rondes pour un procédé TDES. 15 Il pourrait donc être souhaité de prévoir un procédé de chiffrement incluant une contre-mesure par exécution multiple qui nécessite un moindre temps de calcul tout en offrant une bonne protection contre des attaques par canaux auxiliaires. 20 Des modes de réalisation de l'invention concernent un procédé de chiffrement symétrique exécuté par un microcircuit, pour la transformation d'un message en un message chiffré, à partir d'une clé secrète, comprenant une première ronde, des rondes intermédiaires et une dernière ronde, comprenant plusieurs exécutions de la première et de la dernière ronde, respectivement à partir de la clé secrète et d'un 25 premier ensemble de fausses clés, et un nombre d'exécutions d'au moins une ronde intermédiaire inférieur au nombre d'exécutions de la première et dernière rondes, respectivement à partir de la clé secrète et d'un ensemble de fausses clés inclus dans le premier ensemble de fausses clés. Selon un mode de réalisation, le procédé comprend une deuxième ronde, une avant-dernière ronde et plusieurs rondes intermédiaires, les deux première rondes sont exécutées un plus grand nombre de fois que les rondes intermédiaires, et les deux dernières rondes sont exécutées un plus grand nombre de fois que les rondes intermédiaires. Selon un mode de réalisation, le procédé ne comprend qu'une seule exécution d'au moins une ronde intermédiaire. io Selon un mode de réalisation, le procédé comprend, pour un nombre déterminé de rondes successives à partir de la première, un nombre d'exécutions des rondes décroissant selon une règle de décroissance qui est fonction du rang des rondes considérées relativement à la première ronde, puis, pour un nombre déterminé de rondes successives jusqu'à la dernière, un nombre d'exécutions des rondes croissant 15 selon une règle de croissance qui est fonction du rang des rondes considérées relativement à la dernière ronde. Selon un mode de réalisation, la règle de décroissance est une règle en 1/(2n), n étant un paramètre fonction du rang des rondes considérées relativement à la première ou à 20 la dernière ronde. Selon un mode de réalisation, chaque ronde comprend des sous-rondes, et l'exécution multiple de chaque ronde comprend l'exécution multiple de chaque sous-ronde de la ronde. 25 Selon un mode de réalisation, chaque ronde comprend des sous-rondes, et l'exécution multiple d'une ronde comprend l'exécution multiple d'au moins une sous-ronde, et une seule exécution d'au moins une autre sous-ronde. Selon un mode de réalisation, l'exécution unique de la sous-ronde est une exécution masquée en ordre simple ou multiple. Selon un mode de réalisation, l'exécution multiple de la sous-ronde est une exécution masquée en ordre simple. Selon un mode de réalisation, le procédé est conforme aux spécifications DES, triple DES, ou AES. Io Des modes de réalisation de l'invention concernent également un microcircuit configuré pour exécuter un procédé de chiffrement symétrique, permettant de transformer un message en un message chiffré, à partir d'une clé secrète, le procédé comprenant une première ronde, des rondes intermédiaires, et une dernière ronde, le microcircuit étant configuré pour exécuter plusieurs fois la première et la dernière 15 ronde, respectivement à partir de la clé secrète et d'un premier ensemble de fausses clés, et pour exécuter au moins une ronde intermédiaire un nombre de fois inférieur au nombre d'exécutions de la première et dernière rondes, respectivement à partir de la clé secrète et d'un ensemble de fausses clés inclus dans le premier ensemble de fausses clés. 20 Selon un mode de réalisation, le microcircuit est configuré pour n'exécuter qu'une fois au moins une ronde intermédiaire. Selon un mode de réalisation, le microcircuit est configuré pour exécuter des rondes 25 comprenant des sous-rondes, et pour exécuter le même nombre de fois toutes les sous-rondes d'une ronde, lors d'une exécution multiple d'une ronde. Selon un mode de réalisation, le microcircuit est configuré pour exécuter des rondes comprenant des sous-rondes, et pour n'exécuter qu'une fois au moins une sous-ronde et exécuter plusieurs fois une autre sous-ronde, lors d'une exécution multiple d'une ronde. Selon un mode de réalisation, le microcircuit comprend un coprocesseur modulaire configuré pour exécuter individuellement des opérations de chiffrement comprises dans des sous-rondes. Des modes de réalisation de procédés de chiffrement et d'un microcircuit selon l'invention seront décrits dans ce qui suit en se référant à titre non limitatif aux figures jointes, parmi lesquelles : - la figure 1A précédemment décrite représente la structure d'un procédé de chiffrement par rondes classiques, - la figure 1B précédemment décrite représente la structure d'une ronde du procédé de la figure 1, - la figure 2 précédemment décrite représente la structure d'un procédé de chiffrement AES classique, - la figure 3 précédemment décrite représente la structure d'un procédé de chiffrement classique protégé contre des attaques par canaux auxiliaires, - la figure 4 représente la structure d'un mode de réalisation d'un procédé de chiffrement selon l'invention, - la figure 5 illustre un avantage du procédé de la figure 4, - la figure 6 représente la structure d'un procédé de chiffrement AES selon l'invention, - la figure 7 représente la structure d'un autre mode de réalisation d'un procédé de chiffrement selon l'invention, et - la figure 8 représente un mode de réalisation d'un microcircuit sécurisé selon l'invention. Des modes de réalisation de l'invention incluent la constatation que toutes les rondes d'un procédé de chiffrement symétrique ne nécessitent pas le même niveau de protection contre des attaques par canaux auxiliaires. Les rondes plus exposées à ce type d'attaque et notamment à une attaque par analyse DPA ou CPA sont tout d'abord la première ronde et la dernière ronde. En effet, une analyse DPA ou CPA ne peut être conduite contre une ronde que si une donnée d'entrée ou de sortie de la ronde est connue de l'attaquant, la clé étant l'objet de l'attaque. Or, en référence à la figure 1A précédemment décrite, la première ronde RD, reçoit une donnée d'entrée qui est connue d'un attaquant. Il s'agit du message M ou une donnée issue de la transformation du message par l'opération initiale 10. L'opération io initiale étant également connue de l'attaquant car décrite par des normes applicables, la donnée d'entrée peut être calculée à partir du message si elle n'est pas le message lui-même. De même, la dernière ronde RDNr fournit un résultat connu de l'attaquant. Il s'agit du message chiffré C ou d'une donnée dont le message chiffré C est issu, après transformation de la donnée par l'opération finale FO. Comme l'opération finale est 15 également connue de l'attaquant, cette donnée peut être retrouvée à partir du message chiffré C, au moyen de la fonction inverse de la fonction utilisée par l'opération finale FO. Ainsi, une attaque sur les rondes intermédiaires, en particulier à partir de la troisième ronde ou l'avant-avant-dernière ronde, est d'une trop grande complexité pour être envisageable aujourd'hui sans une attaque préalable sur les deux 20 premières ou deux dernières rondes. Des modes de réalisation de l'invention se rapportent ainsi à un procédé de chiffrement dans lequel le nombre d'exécutions des rondes intermédiaires RD, (RD2, RD3, RD' RDNr_i) est inférieur au nombre d'exécutions de la première et la dernière 25 ronde, afin de réduire le nombre total d'exécutions de rondes et réduire le temps total d'exécution du procédé de chiffrement. Dans des modes de réalisation, la seconde et l'avant-dernière rondes RD2, RDNr_i sont considérées comme plus exposées à des d'attaques que d'autres rondes intermédiaires, et sont exécutées un plus grand nombre de fois que les autres rondes intermédiaires. Dans encore d'autres modes de réalisation, des rondes intermédiaires "centrales" (i.e. les plus éloignées de la première et la dernière ronde) ne sont exécutées qu'une fois. A titre d'exemple, la figure 4 montre schématiquement la structure d'un procédé de chiffrement par bloc CP3 selon l'invention, de type symétrique, protégé contre des attaques par canaux auxiliaires. De façon en soi classique, le procédé fournit un message chiffré C, à partir d'un message M et d'une clé secrète K, et comporte Nr rondes RD1, RD2,... RD,... RDNo, RDNr. Le procédé peut comprendre une opération initiale 10 visant à préparer le message M avant l'exécution des rondes, et une lo opération finale FO visant à transformer le résultat de la dernière ronde au moyen d'une fonction de transformation connue, pour obtenir le message chiffré C. Il comprend également une étape initiale de génération de N1-1 fausses clés K1, K2,..., KNi_i en sus de la clé secrète K. La clé K est par exemple considérée comme la clé de rang 0 (Ko=K). Le procédé utilise ainsi un ensemble initial de N1 clés Kj (Ko, K1, K2,..., 15 KNi_i) dans lequel seule la clé Ko est authentique. Selon l'invention, le procédé CP3 comprend les étapes suivantes : - la ronde RD1 est exécutée N1 fois au moyen de N1 sous-clés SKi,, (SKto, SK1,1, SKi,Ni_i) générées à partir de l'ensemble initial de N1 clés Kj (Ko, K1, K2,..., 20 KNi-i), - la ronde RD2 est exécutée N2 fois, avec N2 N1, au moyen de N2 sous-clés SK2,, (SK2,0, SK2,1, SK2,N2-1) générées à partir d'un sous-ensemble de N2 clés K, (Ko, K1, K2,..., KN2_1) qui est inclus dans l'ensemble initial de N1 clés, - etc., 25 - la ronde RD, est exécutée N, fois, avec N, No, No étant le nombre d'exécutions de la ronde précédente, au moyen de N, sous-clés SK,,, (SK,,o, SK,No) générées à partir d'un ensemble de Ni clés K., (Ko, K1, K2,..., KNo) qui est inclus dans l'ensemble initial de N1 clés, - etc., - la ronde RDN,-_i est exécutée NNr_i fois, avec NNr-1 NNr-2, NNr-2 étant le nombre d'exécutions de la ronde précédente, au moyen de NNr_i sous-clés SKN,-_1,, SKN, 1,1, SKNr-1,2,- - - , SK(Nr-1,NN'1-1) générées à partir d'un ensemble de NNr_i clés Kj (Ko, K1, K2,..., K(NN,-_1-1)) qui est inclus dans l'ensemble initial de N1 clés, et - la dernière ronde RDNr est exécutée NNr fois, avec NNr NNr_i, au moyen de NNr sous- clés SKN,-,, (SKNr,o, SKNo, SK(Nr,NN,--1)) générées à partir d'un ensemble de NNr clés K, (Ko, K1, K2,..., K(NN,i)) qui est inclus dans l'ensemble initial de N1 clés. La relation entre le nombre d'exécutions de chaque ronde RD, est régie par une Io première règle de contre-mesure, qui peut être formalisée de la manière indiquée ci- après, référence étant faite à des rondes RD1, RD2, RD3, RD'... RDN,3, RDNr-2, RDNr dont certaines ne sont pas représentées sur la figure 4 : Règle 1 : 15 - N1 N2 N3 N4... Ni avec au moins N1 > N2 ou N2 > N3, - NNr > NNr-1 > NNr-2- > NNr-3 Ni avec au moins NNr > NNr-1 ou NNr-1 > NNr-2- Exemples : 20 -N1 > N2 N3 N4 ... Ni et NNr > NNr-1 NNr-2 NNr-3 --- Ni -N1 = N2 > N3 N4 ... Ni et NNr = NNr-1 > NNr-2. NNr-3 --- Ni -N1 > N2 = N3 N4 ... Ni et NNr > NNr-1 = NNr-2. NNr-3 --- Ni - N1 > N2 > N3 = N4 = Ni et NNr NNr-1 NNr-2.= NNr-3 --- = Ni 25 Dans certains modes de réalisation, la répartition du nombre d'exécutions pourrait être différente sur les premières et dernières rondes, par exemple : -N1 > N2 N3 N4 ... N, et NNr = NNr-1 NNr-2 NNr-3 --- Selon une seconde règle de contre-mesure, optionnelle, définissant une sorte de "symétrie" du procédé relativement à des rondes centrales, le nombre d'exécutions de la dernière ronde est égal au nombre d'exécutions de la première ronde, le nombre d'exécutions de la deuxième ronde est égal au nombre d'exécutions de l'avant-dernière ronde, et ainsi de suite jusqu'à une certaine "distance" des première et dernière rondes. Cette règle peut être formalisée de la manière indiquée ci-après. Règle 2 : Si i Le seuil Is peut être choisi supérieur au nombre de rondes pour obtenir une symétrie totale du procédé en ce qui concerne le nombre d'exécution des rondes, relativement aux rondes centrales. Selon une troisième règle de contre-mesure, également optionnelle, désignée "règle 3", l'exécution de certaines rondes intermédiaires n'est pas répétée, notamment celle des rondes centrales. Pour la mise en oeuvre de cette règle, on définit un nombre de rondes à protéger relativement à la première et à la dernière ronde, désigné "NRtoP". Le nombre de rondes à protéger représente le nombre de rondes devant être exécutées plusieurs fois. Les rondes qui n'appartiennent pas au groupe des rondes à protéger sont considérées comme des rondes "centrales" et ne sont exécutées qu'une fois, avec la bonne clé K0 (i.e. la clé authentique). La règle 3 peut être formalisée comme indiqué ci-après. Règle 3 : NRtoP = nombre de rondes à protéger Si i > NRtoP et i Nr-NRtoP, alors N,=1 Exemple numérique dans le cas d'un procédé de chiffrement comprenant 16 rondes RD1 à RD16 (Nr=16) : NRtoP = 3 (i.e. 3 rondes à protéger), Si i > 3 et i 16-3 (soit i 13), alors Ni=1 Dans ce cas, les rondes RD4, RD6, RD6, RD7, RD8, RD9, RD10, RD11, RD12, RD13 ne sont exécutées qu'une fois. Dans certains modes de réalisation, le nombre d'exécutions N, de chaque ronde RD, (pour i allant de 1 à Nr) peut être déterminé au moyen d'une relation qui est fonction du rang i de la ronde considérée. La règle 4 ci-après est un exemple de relation en 1/(2n), n étant une variable fonction de i. La règle 4 inclut la règle 2 en ce qui concerne les rondes à protéger et inclut la règle 3 en ce qui concerne les rondes qui ne sont pas à protéger. Règle 4 : NRtoP = nombre de rondes à protéger Pour i de 1 à Nr faire : Si i NRtoP alors n = i-1 et Ni= N1/(2n) Sinon : Si i > Nr-NRtoP alors n = Nr-i et Ni= N1/(2n) Sinon : Ni=1 (Règle 3) La règle 4 peut être formulée plus simplement au moyen de l'opérateur "min" (i.e. "minimum de") : NRtoP = nombre de rondes à protéger: Pour i de 1 à Nr faire: Si i NRtoP ou i > Nr-NRtoP, faire : n = min(i-1, Nr-i) Ni= N1/(2n) Sinon : Ni=1 (Règle 3) On se référera maintenant à l'Annexe 1, faisant partie intégrante de la description. Le tableau 1 de l'Annexe 1 décrit un exemple numérique d'application de la règle 4, avec Nr=16 et NRtoP=3. Si N1= 8, il vient que : N2=4, N3=2, N4 à N13 = 1, N14=2, N15=4 et N16=8. Si N1=16, il vient que N2=8, N3=4, N4 à N13 = 1, N14=4, N15=8 et N16=16. Le tableau 2 de l'Annexe 1 décrit des modes de réalisation CP31, CP32, CP33, CP34, CP35, CP36 du procédé de chiffrement CP3 mettant en oeuvre les règles 1 et 2. Ces modes de réalisation concernent un procédé de chiffrement à 16 rondes (Nr=16), par exemple le procédé DES. Le nombre maximal d'exécution N1 est égal à 8 pour les modes de réalisation CP31 à CP34, CP36, et est égal à 12 pour le mode de réalisation CP35. Le mode de réalisation désigné par la référence CP30 ne met pas en oeuvre la règle 1 et n'est pas considéré comme compris dans l'invention car il n'apporte aucun avantage en termes de temps de calcul. Il représente le nombre d'exécutions de rondes que nécessiterait une contre-mesure classique consistant dans 8 exécutions successives du procédé de chiffrement, ce qui nécessiterait 8*16 soit 128 exécutions de rondes. Dans le tableau 2, la colonne T donne le nombre total d'exécution de rondes, la colonne CT donne le temps de calcul de chaque mode de réalisation CP31 à CP36 relativement au temps de calcul du mode de réalisation CP30, en pourcentage, ou temps de calcul relatif. Ce temps de calcul relatif CT est égal au nombre total d'exécution de rondes divisé par le nombre total d'exécution de rondes dans le cas du mode de réalisation CP30, soit (T/128)*100. La colonne G ou "Gain de temps" est le Io complément à 100 du temps de calcul relatif CT, soit G = 100 - CT. Les modes de réalisation CP34, CP35, CP36 mettent également en oeuvre la règle 3 (pas d'exécution multiple de certaines rondes centrales) et le mode de réalisation CP36 met également en oeuvre la règle 4 avec NRtoP=3 et Nr=8. Ces exemples 15 montrent que le gain de temps dépend à la fois de la distribution du nombre d'exécutions des rondes intermédiaires et du nombre maximal d'exécutions de la première et de la dernière ronde. Par exemple, le mode de réalisation CP35 dans lequel N1=12 offre un gain de temps de 55% supérieur au gain de temps de 44% offert par le mode de réalisation CP33 dans lequel N1=8, car les rondes 6 à 11 ne sont 20 exécutées qu'une fois. Dans une variante de réalisation, la règle 3 est modifiée de manière que le nombre d'exécutions des rondes "centrales" soit fixe mais supérieur à 1, ce qui correspond par exemple aux modes de réalisation CP31 et CP32 où les rondes centrales sont 25 exécutées deux fois. Comme autre exemple, le tableau 3 en page 1 de l'Annexe 1 décrit le nombre total T d'exécutions de rondes en fonction du nombre de rondes Nr ainsi que le temps de calcul relatif CT (relativement au mode de réalisation CP30) lorsque la règle 4 est utilisée pour déterminer le nombre d'exécutions, et lorsque le nombre de rondes à protéger NRtoP est égal à 4. Toujours pour illustrer les avantages qu'apportent un procédé de contre-mesure selon l'invention, la figure 5 représente la courbe CRI du nombre total T d'exécutions de rondes en fonction du nombre de rondes Nr lorsque la règle 4 est utilisée, et lorsque le nombre de rondes à protéger NRtoP est égal à 4. La courbe prend la forme d'une droite et sa pente est déterminée par le paramètre NRtoP. A titre de comparaison, est également représentée la courbe CR2 du nombre total T d'exécutions de rondes en lo fonction du nombre de rondes Nr dans le cas d'une mise en oeuvre classique. On se référera maintenant à l'Annexe 2, faisant partie intégrante de la description, qui décrit sous forme d'algorithmes exécutables des exemples de réalisation de procédés de chiffrement protégés selon l'invention. Les opérations de sous-ronde que chaque 15 procédé de chiffrement exécute sont rappelées dans les tableaux 4 et 5 de l'Annexe 1. Application au chiffrement DES Le procédé de chiffrement est exécuté au moyen d'un algorithme PDES1 ("DES 20 Protégé") et d'un algorithme PRDESI ("Ronde DES Protégée") ou algorithme de ronde. L'algorithme de ronde PRDESI est une sous-fonction de l'algorithme PDES1 qui est appelée par ce dernier à chaque nouvelle itération de la variable i, qui forme un numéro de ronde. 25 Dans l'algorithme PDES1, les opérations de permutation IP, de permutation inverse IPinverse, de partage du message en deux blocs de 32 bits exécutées aux étapes 3, 4, 8 sont connues de l'homme de l'art et ne seront pas décrites en détail ici. Un premier couple de valeurs (Lo, Ro) est calculé à l'étape 4 à partir du message M, après permutation de celui-ci à l'étape 3, pour l'exécution de la première ronde par l'algorithme PRDESI. Ensuite, les étapes 5, 6, 6.1, 6.2, 7, et 7.1 mettent en oeuvre la règle 4 décrite plus haut, et déterminent ainsi le nombre d'exécutions d'une ronde en fonction de son rang et du paramètre NRtoP. Les étapes 6.3 et 7.2 sont des appels à la fonction ronde exécutée par l'algorithme PRDESI . Dans l'algorithme PRDESI , les tableaux de cryptographie C, D, E, F (en pratique des chaînes binaires), les opérations de permutation aléatoire, de génération de sous-clés, l'opérateur de concaténation "i" ainsi que les opérations de sous-ronde décrites dans le tableau 4 de l'Annexe 1 (permutation expansive, substitution, XOR, permutation lo simple) sont également connus de l'homme de l'art. Les sous-rondes 1 à 4 sont incluses dans la boucle 13 et sont donc répétées chacune autant de fois que le nombre d'itérations de la variable j. La variable j présente N, valeurs déterminées par l'algorithme PDES1. Lorsque l'algorithme PRDESI est appelé par l'algorithme PDES1 avec N,=1 (étapes 7.1 et 7.2), la boucle 13 ne comprend qu'une valeur de j et les sous- 15 rondes ne sont donc exécutées qu'une fois avec la sous-clé correspondant à la bonne clé Ko. La permutation aléatoire exécutée à l'étape 12 permet à la fois de sélectionner les N, premières sous-clés de l'ensemble des sous-clés SK,,o à SK,,N1-1 pour former un 20 ensemble de sous-clés SK,,po à SK,,p, pour j allant de 0 à N,-1, pj étant un élément de rang j dans la permutation aléatoire P. Lorsque N,=N1, toutes les sous-clés sont utilisées. Lorsque N,=1; seule la bonne sous-clé SK,,o est utilisée (i.e. la sous-clé correspondant à la bonne clé Ko). Cette permutation aléatoire permet également de classer les sous-clés dans un ordre aléatoire pour l'exécution de la boucle 13. Ainsi, la 25 première sous-clé utilisée pour la première itération (j=0) de la boucle 13 n'est pas nécessairement la sous-clé SK,,o. A chaque nouvelle exécution de l'algorithme PRDESI, l'ordre d'utilisation des sous-clés est donc aléatoire. Une fois la ronde répétée N, fois, l'algorithme PRDESI renvoie le couple de valeurs (L' (L' R,) qui est donc fonction du couple de valeurs initial reçu en entrée (Lo, Ro), du numéro i de la ronde (qui détermine les valeurs des sous-clés) et du nombre N, d'exécution de la ronde. Dans l'algorithme PRDESI, la génération de sous-clés nécessaires à l'exécution de chaque ronde, à partir des clés K0 à KNo ou à partir des sous-clés d'une ronde précédente, peut être faite de plusieurs manières : - pour chaque clé K0 à KNi_i les sous-clés nécessaires à l'exécution des rondes sont générées à l'avance et sont stockées dans une mémoire protégée. Cette méthode lo nécessite un certain espace mémoire, ce qui peut ne pas convenir à certaines applications, - lors de chaque exécution d'une ronde, les sous-clés nécessaires à la ronde sont générées à la volée en fonction des clés ou des sous-clés de la ronde immédiatement précédente associées à la clé en cours d'utilisation. Toutes les sous-clés sont 15 générées à chaque ronde, y compris celles dont l'algorithme PRDESI n'a pas besoin lorsque la ronde est exécutée un nombre de fois inférieur au nombre de clés, afin que l'algorithme PRDESI dispose, pour l'exécution de la ronde suivante, de toutes les sous-clés précédentes nécessaires à la génération des sous-clés de la ronde considérée. 20 La seconde solution précitée a été retenue ici et apparaît à l'étape 11, où N1 sous-clés sont générées à chaque ronde à partir des N1 clés ou des N1 sous-clés générées lors de l'exécution de la ronde précédente, indépendamment du nombre d'exécutions de la ronde considérée et donc du nombre de sous-clés dont l'algorithme PRDESI a 25 réellement besoin pour l'exécution de la ronde. Il sera noté que dans le cas du procédé DES, des méthodes connues de génération des fausses clés permettent de générer toutes les sous-clés de toutes les fausses clés à partir des sous-clés de la clé authentique. Ainsi, au lieu de générer les sous-clés d'une fausse clé à partir des sous-clés précédentes de la même fausse clé, les sous-clés de la fausse clé pourraient aussi être générées à partir des sous-clés de la clé authentique. Dans le cas du procédé AES, les sous-clés d'une fausse clé doivent par contre être générées à partir des sous-clés précédentes de la fausse clé. Il apparaîtra clairement à l'homme de l'art que divers autres algorithmes mettant en oeuvre les principes de l'invention peuvent être prévus pour exécuter le procédé DES, les algorithmes PDES1 et PRDESI n'étant que des exemples. Io Application au chiffrement TDES (Triple DES) Le procédé de chiffrement selon l'invention est ici exécuté au moyen d'un algorithme PTDES ("TDES Protégé") figurant en Annexe 2 et des algorithmes PDES1 et PRDESI décrits plus haut. 15 Le chiffrement TDES comporte classiquement une première étape de chiffrement DES du message avec une première clé K, soit DES(M,K), puis une étape de chiffrement inverse DES-1, avec une seconde clé K', du résultat de la première étape, soit DES-1(DES(M,K),K), et enfin une étape de chiffrement DES, avec la première clé K, du 20 résultat de la deuxième étape, soit : DES(DES-1(DES(M,K),K),K) Dans l'algorithme PTDES, la première étape de chiffrement DES (étape 20) est 25 exécutée en faisant appel à l'algorithme PDES1 qui lui-même fait appel à l'algorithme PRDESI, après avoir défini le nombre maximal N1 d'exécution de rondes et le nombre de rondes à protéger NRtoP. La seconde étape de chiffrement DES-1 peut être exécutée au moyen d'un procédé DES-1 classique non protégé contre les attaques par canaux auxiliaires (étape 21a), ou au moyen de l'algorithme PDES1-1, soit l'algorithme inverse de l'algorithme PDES1 décrit en Annexe 2 (étape 21b). L'algorithme PDES1-1 n'est pas décrit en Annexe 2 mais peut être dérivé de l'algorithme PDES1 en remplaçant l'opération IP de l'étape 3 par l'opération IPinverse, et en remplaçant l'opération IPinverse de l'étape 8 par l'opération IP, et en inversant l'ordre d'utilisation des sous-clés (soit de SK16 à SK1). Comme l'étape 21b prévoit que N1=1 et NRtoP=0, l'algorithme PDES1-1 n'est pas protégé et est équivalent à un procédé DES-1 classique. Enfin, la dernière étape de chiffrement DES (étape 22) est protégée et est exécutée en faisant appel à l'algorithme PDES1 qui lui-même fait appel à l'algorithme PRDESI, en définissant le nombre maximal N1 d'exécution de rondes et le nombre de rondes à protéger NRtoP. Application au chiffrement AES 128 L'exemple décrit en Annexe 2 concerne l'AES 128 à 10 rondes mais l'invention peut aussi être appliquée à l'AES 192 à 12 rondes et à l'AES 256 à 14 rondes. Le procédé est exécuté au moyen d'un algorithme PAESI ("AES Protégé") et d'un algorithme PRAESI ("Ronde AES Protégée") ou algorithme de ronde. L'algorithme PRAESI est une sous-fonction de l'algorithme PAESI qui est appelée par ce dernier à chaque nouvelle itération du numéro de ronde i. Dans l'algorithme PAESI, les étapes 33, 34, 34.1, 34.2, 35, 35.1 mettent en oeuvre la règle 4 décrite plus haut, et déterminent ainsi le nombre d'exécutions d'une ronde en fonction de son rang et du paramètre NRtoP. Les étapes 34.3 et 35.2 sont des appels à la fonction ronde exécutée par l'algorithme PRAESI. 20 25 L'algorithme PRAESI exécute les opérations de sous-ronde décrites dans le tableau 5 en Annexe 1 (AddRoundKey, SubByte, ShiftRow et MixColumn), en soi connues de l'homme de l'art. La structure des rondes exécutées par l'algorithme PRAESI est représentée sur la figure 6 sous la forme d'un organigramme "AES2". L'organigramme AES2 diffère de l'organigramme AES1 de la figure 2 en ce que les sous-rondes ont été réorganisées par commodité de manière à faire disparaître l'opération initiale 10 comprenant l'opération AddRoundKey. L'opération AddRoundKey est intégrée dans la première ronde RD1, et au début de chaque ronde suivante, de sorte qu'elle fait intervenir, dans chaque ronde suivante de rang i,j une sous-clé SK0,, de rang i-1,j. L'opération AddRoundKey est suivie des opérations SubByte, ShiftRow et MixColumn dans les rondes RD1 à RD9. La dernière ronde RD10 comporte deux exécutions de l'opération AddRoundKey faisant intervenir les deux dernières sous-clés SK9 et SK10 de la clé courante de rang j. Entre ces deux opérations sont exécutées les opérations SubByte et ShiftRow. L'homme de l'art pourra bien entendu prévoir toute autre structure de rondes respectant les spécifications de I'AES. Dans l'algorithme PRAESI, les sous-rondes AddRoundKey, SubByte, ShiftRow sont incluses dans la boucle itérative 43 et sont donc répétées chacune autant de fois que le nombre d'itérations de la variable j. L'opération MixColumn est également incluse dans la boucle 43 pour toute valeur du numéro de ronde i différente de 10. La boucle 43.6 est exécutée lorsque i est égal à 10 et est incluse dans la boucle 43 uniquement pour la ronde 10. Elle comprend une nouvelle génération de sous-clés (étape 43.6.1) et la seconde exécution de l'opération AddRoundKey (étape 43.6.2). Comme précédemment, l'opération de permutation aléatoire exécutée à l'étape 42 permet à la fois de sélectionner les N, premières sous-clés de l'ensemble des sous-clés SK,,o à SK,,Nti pour former un ensemble de sous-clés SK,,po à SK,,p, pour j allant de 0 à N,-1. Lorsque N,=N1, toutes les sous-clés sont utilisées. Lorsque N,=1; seule la bonne sous-clé SK,,o est utilisée (i.e. la sous-clé correspondant à la bonne clé Ko). Cette opération de permutation aléatoire permet également de classer les sous-clés dans un ordre aléatoire pour l'exécution de la boucle 43. Il apparaîtra clairement à l'homme de l'art que divers autres algorithmes mettant en oeuvre les principes de l'invention peuvent également être prévus pour exécuter le procédé AES. Modes de réalisation de l'invention basés sur la notion de modularité Dans des modes de réalisation de l'invention fondés sur la notion de modularité, l'exécution multiple d'une ronde comprend : - l'exécution multiple d'une ou plusieurs sous-rondes de la ronde considérée, - une seule exécution d'une ou plusieurs autres sous-rondes de la ronde considérée. Les règles précédemment décrites, relatives à la détermination du nombre d'exécutions de chaque ronde, sont conservées, mais la façon selon laquelle chaque ronde est exécutée plusieurs fois est modifiée. En d'autres termes, chaque sous-ronde, et plus particulièrement chaque opération de chiffrement que comporte chaque sous- ronde, est considérée comme un "module" susceptible d'un nombre d'exécutions qui lui est propre. A titre d'exemple, la figure 7 représente un procédé de chiffrement CP4 selon l'invention, par exemple le procédé DES. Le procédé CP4 est construit sur le même modèle d'exécution multiple des rondes que le procédé CP3, et se distingue de celui-ci par le fait que seule la sous-ronde SRD3 de chaque ronde RD,, RD2,..., RDNr est exécutée plusieurs fois. Le procédé CP4 comprend donc les étapes suivantes : - la sous-ronde SRD3 de la ronde RD, est exécutée N1 fois tandis que les autres sous-rondes ne sont exécutées qu'une fois avec la clé Ko, - la sous-ronde SRD3 de la ronde RD2 est exécutée N2 fois, avec N2 Par précaution, une contre-mesure peut être prévue pour protéger contre des attaques par canaux auxiliaires les sous-rondes qui ne sont exécutées qu'une fois. Cette contre-mesure peut notamment être une contre-mesure par masquage. Ainsi, sur la figure 7, les sous-rondes SRD1, SRD2, SRD4 de la ronde RD, sont protégées par un masque aléatoire U1, les sous-rondes SRD1, SRD2, SRD4 de la ronde RD2 sont protégées par un masque aléatoire U2, etc., et les sous-rondes SRD1, SRD2, SRD4 de la ronde RDNr sont protégées par un masque aléatoire UNr. Le choix du mode de protection d'une sous-ronde, par masquage ou exécution multiple, peut être fait en fonction de la nature de l'opération que comporte la sous- ronde. On distingue à cet effet les sous-rondes qui comportent une opération linéaire et celles qui comportent une opération non linéaire au sens mathématique du terme. Est notamment non linéaire une opération dont l'exécution repose sur une table déterminée, stockée en mémoire. Exemple de masquage d'une opération linéaire : - M est un message, - K est une clé secrète. - Opération normale : C = M XOR K (combinaison du message avec la clé) - Opération protégée (masquée) : Tirer aléatoirement à chaque itération un masque U ayant le même nombre de bits que le message M, Calculer C = M XOR U (masquage du message M avec le masque U), Calculer C = C XOR K (combinaison du message masqué avec la clé), Calculer C = C XOR U (démasquage) L'opération protégée produit le même résultat que l'opération non protégée. Exemple de masquage d'une opération non linéaire "S" : - M est un message, - K est une clé secrète, - S est une table, - X = K XOR M. - Opération normale : - Pour i = 0 à 7 faire : S(X,) = Y, Une attaque par analyse DPA ou CPA connaissant M peut permettre de retrouver la clé K en prédisant la valeur S(X,). - Opération protégée (masquée) : - Tirer aléatoirement un masque U, - Recalculer la table S pour obtenir une nouvelle table S' : - Pour I = 0 à 256 faire - S'(i XOR U) = S(i) XOR U - Pour i = 0 à 7 faire : X', = X, XOR U Y', = S'(X',) Y,= Y', XOR U Comme précédemment, l'opération protégée produit le même résultat que l'opération non protégée. Une contre-mesure par masquage présente l'inconvénient de consommer un espace mémoire important dans le cas d'une opération non linéaire, car le fait de masquer une table avec une pluralité de masques nécessite un espace mémoire important. Ainsi, pour réduire l'espace mémoire utilisée, on utilise généralement le même masque pour toutes les sous-rondes de la ronde ou pour toutes les valeurs de la table, par exemple un masque de 8 bits. Le masquage est alors dit "d'ordre simple" par opposition à un masquage d'ordre supérieur, qui utilise une pluralité de masques aléatoires. Toutefois, le masquage d'ordre simple introduit une faiblesse face aux attaques par analyse DPA d'ordre(s) supérieur(s). En revanche, si l'opération non linéaire masquée en ordre simple est exécutée plusieurs fois avec de fausses clés, l'opération "vraie" sera noyée dans de fausses opérations et le résultat d'une attaque sera assimilable à du bruit. Certains modes de réalisation de l'invention prévoient donc des exécutions multiples d'opérations non linéaires qui sont masquées en ordre simple. Dans ce cas, et avantageusement, il n'est pas nécessaire de prévoir un masque d'ordre supérieur car il est quasiment impossible, en l'état des connaissances actuelles, de réaliser une attaque d'ordre supérieur sur une opération exécutée plusieurs fois avec un masquage io d'ordre simple. En résumé, dans certains modes de réalisation, les opérations linéaires sont protégées par des exécutions multiples, ou par un masquage d'ordre multiple, ou encore par un masquage d'ordre simple et des exécutions multiples, tandis que les opérations non 15 linéaires sont de préférence protégées par un masquage d'ordre simple et des exécutions multiples. Ainsi, dans le procédé CP4 représenté sur la figure 7, de nombreuses combinaisons de contre-mesures peuvent être prévues. En supposant que les sous-rondes SRD1, 20 SRD2 et SRD4 sont linéaires et que la sous-ronde RD3 est non linéaire, les contre- mesures suivantes peuvent par exemple être prévues : - Contre-mesure 1 : - les sous-rondes SRD1, SRD2 et SRD4 ne sont exécutées qu'une seule fois par ronde et sont protégées par un masquage d'ordre simple ou multiple, 25 - la sous-ronde SRD3 est exécutée plusieurs fois par ronde, sans masquage - Contre-mesure 2 : - les sous-rondes SRD1, SRD2 et SRD4 ne sont exécutées qu'une seule fois par ronde et sont protégées par un masquage d'ordre simple ou multiple, - la sous-ronde SRD3 est exécutée plusieurs fois par ronde, avec un masquage d'ordre simple, - Contre-mesure 3 : - les sous-rondes SRD1, SRD2 et SRD4 sont exécutées plusieurs fois par ronde, sans masquage, - la sous-ronde SRD3 est exécutée plusieurs fois par ronde, avec un masquage d'ordre simple, - Contre-mesure 4 : - les sous-rondes SRD1, SRD2 et SRD4 sont exécutées plusieurs fois par ronde, io avec un masquage d'ordre simple ou multiple, - la sous-ronde SRD3 est exécutée plusieurs fois par ronde, avec un masquage d'ordre simple. La contre-mesure 4 offre un niveau de sécurité supérieur aux contre-mesures 2 et 3 15 qui offrent elles-mêmes un niveau de sécurité supérieur à la contre-mesure 1. Toutefois, en relation avec la recherche du meilleur rapport entre temps d'exécution et protection contre des attaques, les contre-mesures 2 et 3 offrent déjà une excellente protection. On peut, de plus, ajouter des exécutions aléatoires au sein de ces opérations. 20 On se référera maintenant à l'Annexe 3, faisant partie intégrante de la description, qui décrit sous forme d'algorithmes exécutables des exemples de réalisation de procédés de chiffrement protégés selon l'invention mettant en oeuvre la notion de modularité. 25 Application au chiffrement DES Le procédé est exécuté au moyen d'un l'algorithme PDES2 et d'un algorithme de ronde PRDES2 figurant en Annexe 3. L'algorithme PDES2 se distingue de l'algorithme PDES1 en ce qu'il comprend des étapes initiales 54, 55 de génération d'un premier masque U0 et de génération de parties gauche et droite 1_10,L et Uo,R du masque, suivie d'une étape 56 de masquage des parties gauche et droite Lo, Ro du message M. Également, l'étape 6.3 d'appel à l'algorithme PRDESI est remplacée par une étape 58.3 d'appel à l'algorithme PRDES2, et l'étape 7.2 d'appel à l'algorithme PRDESI est remplacée par une étape 59.2 d'appel à l'algorithme PRDES2. Enfin, lorsque toutes les rondes ont exécutées au moyen de l'algorithme PRDES2, une étape 60 de démasquage du résultat est prévue, avant l'opération IPinverse permettant d'obtenir le message chiffré C. io L'algorithme de ronde PRDES2 utilise les mêmes opérations de chiffrement et comporte les mêmes sous-rondes que l'algorithme PRDESI, mais met en oeuvre la notion de modularité. Il reçoit comme données d'entrée, comme précédemment : - les clés Ko à KNi_i ou des sous-clés de la ronde précédente, - le couple de valeurs (L,_1, R,_1) fourni par l'exécution précédente de l'algorithme de 15 ronde PRDES2 ou par l'étape 56 de l'algorithme PDES2 en ce qui concerne le couple de valeurs initial (L,_1, Ro), - le numéro de ronde i (pour le calcul des sous-clés), et - le nombre d'exécutions N, de la ronde considérée, 20 L'algorithme de ronde PRDES2 reçoit en sus, comme donnée d'entrée, un masque aléatoire Uo. Il s'agit du masque U0 généré par l'algorithme PDES2 à l'étape 54, ou du masque U,_1 renvoyé par l'exécution précédente de l'algorithme PRDES2, calculé à l'étape 78. 25 La sous-ronde 1 comprend l'opération linéaire Permutation Expansive et n'est exécutée qu'une fois à l'étape 75 avec un masquage d'ordre multiple. La sous-ronde 2 agencée dans la boucle itérative 76 comprend l'opération linéaire XOR et est exécutée plusieurs fois à l'étape 76.1 avec un masquage d'ordre multiple. La sous-ronde 3 comprend l'opération non linéaire Substitution est également présente dans la boucle 76 et est exécutée plusieurs fois à l'étape 76.3 sous forme non masquée, étant précédée d'une étape de démasquage 76.2. Le résultat de cette opération est ensuite masqué de nouveau à l'étape 76.4. Enfin, la sous-ronde 4 qui comprend l'opération linéaire XOR n'est exécutée qu'une fois avec un masquage d'ordre multiple à l'étape 77. Un masque U, de rang i pour la prochaine ronde est ensuite calculé à l'étape 78 et une mise à jour du masque U,_1 est effectuée à l'étape 79. L'algorithme retourne ensuite le résultat L' R, et le masque U. Il apparaîtra clairement à l'homme de l'art que divers autres algorithmes mettant en io oeuvre les principes de l'invention peuvent être prévus pour exécuter le procédé DES. Application au chiffrement AES Le procédé est exécuté au moyen d'un algorithme PAES2 et d'un algorithme de ronde 15 PRAES2 figurant en Annexe 3. L'algorithme PAES2 se distingue de l'algorithme PAESI en ce qu'il comprend une étape 92 de génération d'un masque aléatoire initial U0 et une étape 93 de masquage du message M. L'étape 34.3 d'appel à l'algorithme PRAESI est remplacée par une étape 95.3 d'appel à l'algorithme PRAES2 et l'étape 35.2 d'appel à l'algorithme PRAESI est remplacée par une étape 96.2 d'appel à 20 l'algorithme PRAES2. Lorsque toutes les rondes ont été exécutées, le résultat final C est démasqué à l'étape 97 pour obtenir le message chiffré C. L'algorithme de ronde PRAES2 utilise les mêmes opérations de chiffrage et comporte les mêmes sous-rondes que l'algorithme PRAESI, mais met en oeuvre la notion de 25 modularité. Ainsi, dans l'algorithme PRAES2, la sous-ronde 1 comprenant l'opération linéaire AddRoundKey (étape 104.1) est incluse dans la boucle itérative 104 et est exécutée plusieurs fois avec un masquage d'ordre multiple. La sous-ronde 2 comprenant l'opération non linéaire SubByte (étape 104.3) est exécutée plusieurs fois sous forme non masquée, après une étape de démasquage 104.2. Le résultat de cette sous-ronde est ensuite masqué de nouveau à l'étape 104.4. La sous-ronde 3 qui comprend l'opération linéaire ShiftRow est en dehors de la boucle 104 est n'est exécutée qu'une fois à l'étape 105, avec un masquage d'ordre multiple. La sous-ronde 4 des rondes 1 à 9, qui comprend l'opération linéaire MixColumn (étape 106.1) est également en dehors de la boucle 104 et n'est exécutée qu'une fois, avec un masquage d'ordre multiple. La sous-ronde 4 de la ronde 10 (étape 107.3.1) comprenant l'opération linéaire AddRoundKey est exécutée plusieurs fois avec un masquage d'ordre multiple au sein io de la boucle 107, après une nouvelle génération de sous-clés (étape 107.1) et une étape de mise à jour du masque (étape 107.2) . Il apparaîtra clairement à l'homme de l'art que divers autres algorithmes mettant en oeuvre les principes de l'invention peuvent être prévus pour exécuter le procédé AES. 15 L'invention s'applique de manière générale à tout procédé de chiffrement symétrique par bloc comprenant des rondes. Les modes de réalisation de l'invention reposant sur la notion de modularité s'appliquent à tout procédé de ce type dans lequel chaque ronde comporte une pluralité de sous-rondes. 20 Des modes de réalisation d'un procédé de chiffrement selon l'invention peuvent ne mettre en oeuvre que le second aspect de l'invention relatif à la modularité des sous-rondes, sans le premier aspect de l'invention prévoyant un nombre d'exécutions variable des rondes en fonction de leur rang. De tels modes de réalisation peuvent 25 donc comprendre un nombre identique d'exécutions de chaque ronde, mais un nombre différent d'exécutions de chaque sous-ronde au sein d'une ronde exécutée plusieurs fois, certaines sous-rondes étant exécutées une seule fois, de préférence sous forme masquée, d'autres étant exécutées plusieurs fois, sous forme masquée ou non. Un microcircuit configuré pour exécuter un procédé selon l'invention est lui-même susceptible de divers modes de réalisation. Par exemple, les algorithmes figurant en Annexe 2 et Annexe 3 peuvent être exécutés par le CPU du processeur principal ou en partie par le CPU et par un coprocesseur. Notamment les algorithmes PDES1, PDES2, PTDES, PAESI, PAES2 peuvent être exécutés par le CPU et les algorithmes de rondes PRDESI, PRDES2, PRAESI, PRAES2 être exécutés par un coprocesseur ou des accélérateurs hardwares. Les algorithmes PRDES2 et PRAES2 basés sur le principe de modularité peuvent avantageusement être exécutés par un coprocesseur modulaire ou plusieurs accélérateurs hardwares en parallèle formant l'équivalent d'un coprocesseur modulaire, permettant au CPU d'appeler les fonctions de sous-ronde chacune indépendamment de l'autre, avec ou sans masquage, pour une exécution simple ou multiple de ces fonctions. La figure 8 représente schématiquement un exemple de dispositif sécurisé SDV 15 comprenant un microcircuit MCT selon l'invention, monté sur un support CD, par exemple une carte plastique. Le microcircuit MCT comprend un processeur PROC incluant une unité centrale de traitement (CPU), un coprocesseur CPROC couplé au processeur, une interface de communication ICCT couplée au processeur, une mémoire MEM1 couplée au processeur principal, un générateur aléatoire ou pseudo- 20 aléatoire RGEN couplé au processeur principal et/ou au coprocesseur. Ces éléments PROC, CPROC, ICCT MEM1, RGEN peuvent être intégrés sur une même puce de semi-conducteur ou, pour certains, être intégrés dans des puces de semi-conducteur différentes qui sont interconnectées par un circuit imprimé ou autre support d'interconnexion. 25 Le circuit ICCT peut être du type à contact (port de communication filaire) ou sans contact (interface NFC, Wifi, Bluetooth®, etc.) ou les deux. Dans certaines applications, notamment dans le cadre d'une procédure d'authentification du dispositif SDV, le message à chiffrer M est reçu par l'intermédiaire du circuit d'interface de communication ICCT et le message chiffré C est également communiqué à l'extérieur par l'intermédiaire de ce circuit d'interface. La mémoire MEM1 peut comprendre une zone mémoire volatile et une zone mémoire non volatile programmable électriquement. La mémoire programme non volatile peut comprendre une zone sécurisée comportant une clé secrète K. Le générateur aléatoire ou pseudo-aléatoire RGEN est utilisé par le processeur ou le coprocesseur pour générer les fausses clés et/ou des masques aléatoires du type décrit plus haut. Le coprocesseur peut-être dédié à l'exécution des rondes d'un procédé de chiffrement lo déterminé, ou être de type modulaire comme décrit plus haut, pour l'exécution de fonctions hardwares permettant au processeur d'exécuter les sous-rondes chacune indépendamment de l'autre. ANNEXE 1 (faisant partie intégrante de la description) Tableau 1 i i 5 3 i > 13 min(i-1,16-i) Ni 1 oui non min(0,16)=0 N1= N1 2 oui non min(1,15)=1 N2= N1/2 3 oui non min(2,14)=2 N3= N1/4 4 non non Non applicable 1 non non Non applicable 1 6 non non Non applicable 1 7 non non Non applicable 1 8 non non Non applicable 1 9 non non Non applicable 1 non non Non applicable 1 11 non non Non applicable 1 12 non non Non applicable 1 13 non non Non applicable 1 14 non oui min(13,2)=2 N14= N1/4 non oui min(14,1)=1 N15= N1/2 16 non oui min(15,0)=0 N16= N1 5 Tableau 2 i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Ni N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13 N14 N15 N16 T CT G CP30 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 128100% 0% CP31 8 4 4 2 2 2 2 2 2 2 2 2 2 4 4 8 52 41% 59% CP32 8 2 2 2 2 2 2 2 2 2 2 2 2 2 2 8 44 34% 66% CP33 8 4 4 4 4 4 4 4 4 4 4 4 4 4 4 8 72 56% 44% CP34 8 4 4 2 2 1 1 1 1 1 1 2 2 4 4 8 46 36% 64% CP35 12 6 4 2 2 1 1 1 1 1 1 2 2 4 6 12 58 45% 55% CP36 8 4 2 1 1 1 1 1 1 1 1 1 1 2 4 8 38 30% 70% Tableau 3 N1 CP30 Règle 4 avec NRtoP = 4 T T CT 4 64 8 128 38 29,6% 16 256 68 26,5% 32 512 128 25% 64 1024 248 24,2% Tableau 4 - Procédé DES (Cf. FIPS PUB 46-3 du NIST) Sous-ronde Abréviation(*) Désignation (français) Désignation (anglais) Sous-ronde 1 E PermutationExpansive ExpansivePermutation Sous-ronde 2 XOR XOR (OU Exclusif) XOR (Exclusive OR) Sous-ronde 3 S Substitution Substitution Sous-ronde 4 P PermutationSimple Permutation (*) Abréviation formant la désignation officielle des sous-rondes dans la norme FIPS PUB 46-3 (Federal Information Processing Standard) du NIST (National Institute of Standards and Technology). Tableau 5 - Procédé AES (Cf. FIPS PUB 197 du NIST) Sous-ronde Abréviation Désignation Désignation (**) (français) (anglais) Sous-ronde 1 - - AddRoundKey Sous-ronde 2 - - SubBytes Sous-ronde 3 - - ShiftRows Sous-ronde 4 - - MixColumns (**) Désignation officielle utilisée dans la norme FIPS PUB 197 du NIST. ANNEXE 2 (faisant partie intégrante de la description) Algorithme PDES1 (DES protégé) Données d'entrée : - clé K - M message à chiffrer lo - N1 nombre d'exécutions maximum d'une ronde - NRtoP nombre de rondes à protéger Donnée de sortie : - Message chiffré C=DES(M, K)=PDES1(M, K, N1, NRtoP) 15 Début : (1) Ko=K (2) Générer N1-1 fausses clés (K1, K2, ..., KN1-1) (3) M=IP(M) 20 (4) Partager M en deux blocs de 32 bits Lo et Ro L0=32 bits les plus forts de M (partie haute) R0=32 bits les plus faibles de M (partie basse) (5) Pour i de 1 à 16 faire: (6) Si (i NRtoP) ou (i > 16-NRtoP) alors 25 (6.1) n=min(i-1, 16-i) (6.2) N,= N1/(2n) (6.3) (L' R,)=PRDES1(Lo, Ro, i, N,) [Ronde protégée] (7) Sinon (7.1) N,=1 30 (7.2) (L' R,)=PRDES1(Lo, Ro, i, N,) [Ronde non protégée] (8) C=lPinverse (R16 I L16) (9) Retourner C Fin Algorithme PRDESI (ronde DES protégée) Notation : - i : rang de la ronde traitée - Ni : nombre d'exécutions d'une ronde de rang i - N1 (Ni avec i=1) : nombre maximal d'exécutions d'une ronde (première et dernière) Données d'entrée : io - clés (Ko, K1, K2, ..., KNi-1) ou sous-clés d'une ronde précédente - couple (L,_1, Ri-1) - i numéro de ronde - N, nombre d'exécutions 15 Donnée de sortie : - (Li, Ri)=PRDES1(14_1, Ri_1, i, Ni) Début : (10) Soient C, D, E, F quatre tableaux de 4 octets 20 (11) Générer N1 sous-clés (SK,,o, SK,,/, SK,,2, SK,,N1-1) 1 pour la ronde i à partir des clés Ko, Ki, K2, ..., KNi_i ou des sous-clés d'une ronde précédente (12) Générer une permutation aléatoire P={po, pN,_/} dans l'intervalle j=[0, N,-1] (13) Pour j de 0 à (N,-1) faire: (13.1) TR=Ro, TL=L-1 25 (13.2) W =Ro (13.3) TR= PermutationExpansive(TR) [Sous-ronde 1] (13.4) TR=TR XOR SK,,p, [Sous-ronde 2] (13.5) TR=Substitution(TR) [Sous-ronde 3] (13.6) TR=PermutationSimple(TR) XOR TL [Sous-ronde 4] 30 (13.7) Si pj=0 alors C=W D =TR (13.8) Si pj # 0 alors E=W 35 F=TR (14) Li=C, Ri=D (15) Retourner (Li,Ri) Fin Algorithme PTDES (triple DES protégé) Données d'entrée : - K et K' clés de cryptographie - M message à chiffrer - N1 (N, avec i=1) : nombre maximal d'exécutions d'une ronde (première et dernière) - NRtoP : nombre de rondes à protéger Sortie : Message chiffré C = TDES(M,K, K)=DES(DES-1(DES(M,K),K),K) = PTDES(M,K,K',N1,NRtoP) Début : (20) C=PDES1(M,K,N1,NRtoP) [DES protégé selon l'invention : algorithme PDES1] (21a) C=DES-1(C,K') [DES-1 classique sans protection] Ou, alternativement : (21b) C=PDES1-1((C,K',1,0) [PDES1-1 sans protection] (22) C=PDES1(C, K, N1, NRtoP) (23) Retourner C 30 Fin Algorithme PAESI (AES protégé) Données d'entrée : - K clé de cryptographie 5 - M message à chiffrer - N1 nombre maximal d'exécutions d'une ronde - NRtoP nombre de rondes à protéger Données de sortie : 10 - Message chiffré C=AES(M,K)=PAES1(M, K, N1, NRtoP) Début : (30) Ko=K (31) Générer N1-1 fausses clés (Ki, K2, ..., KN1-1) 15 (32) Ro=M (33) Pour i de 1 à 10 faire : (34) Si (i NRtoP) ou (i > 10-NRtoP) alors (34.1) n=min(i-1, 10-i); (34.2) N,=N1/2n 20 (34.3) RFPRAES1(Ro, i, N,) [Ronde protégée] (35) Sinon (35.1) N,=1 (35.2) RFPRAES1(Ro, i, N,) [Ronde non protégée] (36) C=Rip 25 (37) Retourner C Fin Algorithme PRAESI (ronde AES protégée) Données d'entrée : - clés (Ko, K1, K2, ..., KN/_/) ou sous-clés d'une ronde précédente - message Ro, 16 octets - i numéro de ronde - N, : nombre d'exécutions d'une ronde de rang i - N1 (N, avec i=1) : nombre maximal d'exécutions d'une ronde (première et dernière) Donnée de sortie : - RFPRAES1(Ri_i, i, Ni) Début : (40) Soient C, D deux tableaux de 16 octets (41) Générer N1 sous-clés (SK0,0, SK0,/, SK,_1,N1-1,) à partir des clés Ko, K1, K2, ..., KNi_i ou des sous-clés d'une ronde précédente (42) Générer une permutation aléatoire P={po, pN,_/} dans l'intervalle j=[0, N,-1] (43) Pour j de 0 à (N,-1) faire: (43.1) W=Ri-i (43.2) W=AddRoundKey(W, SKo,p,) [Sous-ronde 1] (43.3) W=SubByte(W) [Sous-ronde 2] (43.4) W=ShiftRow(W) [Sous-ronde 3] (43.5) Si (i # 10) alors [Sous-ronde 4 des rondes 1 à 9] W=MixColumn(W) (43.6) Si (i=10) alors [Sous-ronde 4 de la ronde 10] (43.6.1) Générer N1 sous-clés (SK/o,o, SK10,1, SK10,2, SK/o,NI-1) à partir des clés Ko, K1, K2, ..., KNi_i ou des sous-clés d'une ronde précédente (43.6.2) W=AddRoundKey(W, SKio,r,J); (43.7) Si p1=0 alors C=W (43.8) Si pj # 0 alors D=W (44) Ri=C (45) Retourner (Ri) Fin 2 9 8562 4 ANNEXE 3 (faisant partie intégrante de la description) Modes de réalisation mettant en oeuvre la notion de modularité 5 Algorithme PDES2 (DES protégé) Données d'entrée : - clé K 10 - M message à chiffrer - N1 nombre d'exécutions maximum d'une ronde - NRtoP nombre de rondes à protéger Donnée de sortie : 15 - Message chiffré C=DES(M, K)=PDES2(M, K, N1, NRtoP) Début : (50) Ko=K (51) Générer N1-1 fausses clés (Ki, K2, ..., KN1-1) 20 (52) M=IP(M) (53) Partager M en deux blocs de 32 bits Lo et Ro Lo=32 bits les plus forts de M (partie haute) R0=32 bits les plus faibles de M (partie basse) (54) Générer un masque aléatoire U0 de 8 octets 25 (55) Partager U0 en deux blocs de 32 bits 1_10,L et Uo,R (56) Lo=Lo XOR Uo,L, Ro=R0 XOR Uo,R [Masquage] (57) Pour i de 1 à 16 faire: (58) Si (i NRtoP) ou (i > 16-NRtoP) alors (58.1) n=min(i-1, 16-i) 30 (58.2) N,= N1/(2n) (58.3) (L' R' U,)=PRDES2(Lo, Ro, Uo, i, N,) [Ronde protégée] (59) Sinon (59.1) N,=1 (59.2) (L' R' U,)=PRDES2(Lo, Ro, Uo, i, N,) [Ronde non protégée] 35 (60) L16=L16 XOR U16,L, R16=R16 XOR U16,R [Démasquage] (61) C=lPinverse (R16 I L16) (62) Retourner C Fin Algorithme PRDES2 (ronde DES protégée) Notation : - i : rang de la ronde traitée - Ni : nombre d'exécutions d'une ronde de rang i - N1 (Ni avec i=1) : nombre maximal d'exécutions d'une ronde (première et dernière) Données d'entrée : - clés (Ko, KI, K2, ..., KNi_i) ou sous-clés d'une ronde précédente - couple (L,_1, R,-1) - masque aléatoire U,_1=(U,_1,1_, - i numéro de ronde - N, nombre d'exécutions Donnée de sortie : - (Li, Ri, Ui)=PRDES2(Lm, i, Ni) Début (70) Soient C, D, E, F quatre tableaux de 4 octets (71) Générer N1 sous-clés (SK,,o, SK,,/, SK,,2, SK,,N1-1,) à partir des clés Ko, K1, K2, KNi_i ou des sous-clés d'une ronde précédente (72) Générer une permutation aléatoire P={po, ...pNo} dans l'intervalle j=[0, N,-1] (73) TR=Ro, TL=Lo (74) W =R,-1 (75) TR= PermutationExpansive(TR) [Sous-ronde 1 masquée] (76) Pour j de 0 à (N,-1) faire: (76.1) TR=TR XOR SK,,p, [Sous-ronde 2 masquée] (76.2) TR=TR XOR PermutationExpansive(UnR) [Démasquage] (76.3) TR=Substitution(TR) [Sous-ronde 3 non masquée] (76.4) TR=TR XOR Uki,R [Masquage] (76.5) Si pj=0 alors C=W D=TR (76.6) Si # 0 alors E=W F=TR (77) D=PermutationSimple(D) XOR TL [Sous-ronde 4 masquée] (78) Générer un masque aléatoire U,=(U,,L, U,,R) [Changement du masque pour la ronde suivante] (79) C=C XOR XOR D=D XOR PermutationSimple(UnR) XOR XOR U1-1,L [Correction du masque] (80) LFC, RFD, (81) Retourner (L' R' U,) Fin Algorithme PAES2 (AES protégé) Données d'entrée : - K clé de cryptographie 5 - M message à chiffrer - N1 nombre maximal d'exécutions d'une ronde - NRtoP nombre de rondes à protéger Données de sortie : 10 - Message chiffré C=AES(M,K)=PAES2(M, K, N1, NRtoP) Début : (90) Ko=K (91) Générer N1-1 fausses clés (K1, K2, ..., KN1-1) 15 (92) Générer un masque aléatoire U0 de 16 octets (93) R0=M XOR U0 [Masquage] (94) Pour i de 1 à 10 faire : (95) Si (i NRtoP) ou (i > 10-NRtoP) alors (95.1) n=min(i-1, 10-i); 20 (95.2) N,=N1/(2n) (95.3) (R' U,)=PRAES2(Ro, U,_1, i, N,) [Ronde protégée] (96) Sinon (96.1) N,=1 (96.2) (R' U,)=PRAES2(Ro, U,_1, i, N,) [Ronde non protégée] 25 (97) C=R10 XOR U10 [Démasquage] (98) Retourner C Fin Algorithme PRAES2 (ronde AES protégée) Données d'entrée : - clés (Ko, K1, K2, ..., KNi_i) ou sous-clés d'une ronde précédente - message Ro, 16 octets - Masque aléatoire Ui-1 - i numéro de ronde - N, : nombre d'exécutions d'une ronde de rang i - N1 (N, avec i=1) : nombre maximal d'exécutions d'une ronde (première et dernière) Io Donnée de sortie : - UpPRAES2(Ro, Ui_1, i, Ni) Début : (100) Soient C, D deux tableaux de 16 octets 15 (101) Générer N1 sous-clés (SK,,o, SK,,/, SK,,2, SK,,N1-1) 1 pour la ronde i, à partir des clés Ko, K1, K2, ..., KN1_1 ou des sous-clés d'une ronde précédente (102) Générer une permutation aléatoire P={po, ...pm_1} dans l'intervalle j=[0, N,-1] (103) W=Ri-i (104) Pour j de 0 à (N,-1) faire: 20 (104.1) W=AddRoundKey(W, [Sous-ronde 1 masquée] (104.2) W=W XOR [Démasquage] (104.3) W=SubByte(W) [Sous-ronde 2 non masquée] (104.4) W=W XOR [Masquage] (104.5) Si p1=0 alors C=W 25 (104.6) Si pj # 0 alors D=W (105) C=ShiftRow(C) [Sous-ronde 3 masquée] (106) Générer un masque aléatoire U, de 16 octets [Changement du masque pour la ronde suivante] (106) Si (i # 10) alors 30 (106.1) C=MixColumn(C) [Sous-ronde 4 masquée des rondes 1 à 9] (106.2) C=C XOR XOR MixColumn(ShiftRow(Uo) [Correction du masque] (107) Si (i=10) alors [Sous-ronde 4 de la ronde 10] (107.1) Générer N1 sous-clés (SK,,o, SK,,/, SK,,2, SK,,N1-1) 1 pour la ronde 10, à partir des clés Ko, K1, K2, ..., KNi_i ou sous-clés d'une ronde précédente 35 (107.2) W=C XOR XOR ShiftRow(Uo) [Correction du masque] (107.3) Pour j de 0 à (N,-1) faire: (107.3.1) W=AddRoundKey(W, SKio,p,) [Opération sur valeur masquée] (107.3.2) Si p1=0 alors C=W 40 (107.3.3) Si p, # 0 alors D=W (107.4) W=C (108) RFC (109) Retourner (R' U,) Fin REVENDICATIONS1. Procédé de chiffrement symétrique (CP3, CP4) exécuté par un microcircuit (MCT), pour la transformation d'un message (M) en un message chiffré (C), à partir d'une clé secrète (K, Ko), comprenant une première ronde (RD1), des rondes intermédiaires (RD2, RD,, RDN,i) et une dernière ronde (RDNr), caractérisé en ce qu'il comprend plusieurs exécutions (N1, NNr) de la première et de la dernière ronde, respectivement à partir de la clé secrète (K, Ko) et d'un premier ensemble de fausses clés (K1 - KNi_i), et un nombre d'exécutions (N,) d'au moins une io ronde intermédiaire (RD,) inférieur au nombre d'exécutions (N1, NNr) de la première et dernière rondes, respectivement à partir de la clé secrète et d'un ensemble de fausses clés (K1 - KNo) inclus dans le premier ensemble de fausses clés. 2. Procédé selon la revendication 1, comprenant une deuxième ronde (RD2), 15 une avant-dernière ronde (RDNr_i) et plusieurs rondes intermédiaires (RD,), dans lequel les deux première rondes sont exécutées un plus grand nombre de fois que les rondes intermédiaires, et les deux dernières rondes sont exécutées un plus grand nombre de fois que les rondes intermédiaires. 20 3. Procédé selon l'une des revendications 1 et 2, ne comprenant qu'une seule exécution d'au moins une ronde intermédiaire (RD,). 4. Procédé selon l'une des revendications 1 à 3, comprenant : - pour un nombre déterminé (NRtoP) de rondes successives à partir de la première, un 25 nombre d'exécutions des rondes décroissant selon une règle de décroissance qui est fonction du rang (i) des rondes considérées relativement à la première ronde, puis - pour un nombre déterminé (NRtoP) de rondes successives jusqu'à la dernière, un nombre d'exécutions des rondes croissant selon une règle de croissance qui est fonction du rang des rondes considérées relativement à la dernière ronde. 5. Procédé selon la revendication 4, dans lequel la règle de décroissance est une règle en 1/(2n), n étant un paramètre fonction du rang des rondes considérées relativement à la première ou à la dernière ronde. 6. Procédé selon l'une des revendications 1 à 5, dans lequel chaque ronde comprend des sous-rondes (SRD1-SRD4), et dans lequel l'exécution multiple de chaque ronde comprend l'exécution multiple de chaque sous-ronde de la ronde. 7. Procédé selon l'une des revendications 1 à 5, dans lequel chaque ronde comprend des sous-rondes (SRD1-SRD4), et dans lequel l'exécution multiple d'une ronde comprend l'exécution multiple d'au moins une sous-ronde, et une seule exécution d'au moins une autre sous-ronde. 8. Procédé selon la revendication 7, dans lequel l'exécution unique de la sous- ronde est une exécution masquée en ordre simple ou multiple. 9. Procédé selon la revendication 7, dans lequel l'exécution multiple de la sous-ronde est une exécution masquée en ordre simple. 10. Procédé selon l'une des revendications 1 à 9, conforme aux spécifications DES, triple DES, ou AES. 11. Microcircuit (MCT) configuré pour exécuter un procédé de chiffrement symétrique (CP3, CP4), permettant de transformer un message (M) en un message chiffré (C), à partir d'une clé secrète (K, Ko), le procédé comprenant une première ronde (RD1), des rondes intermédiaires (RD2, RD' RDNr_i), et une dernière ronde (RDNr),microcircuit caractérisé en ce qu'il est configuré pour exécuter plusieurs fois (N1, NNr) la première et la dernière ronde, respectivement à partir de la clé secrète et d'un premier ensemble de fausses clés (K1 - KNi_i), et pour exécuter au moins une ronde intermédiaire (RD,) un nombre de fois (N,) inférieur au nombre d'exécutions (N1, NNr) de la première et dernière rondes, respectivement à partir de la clé secrète et d'un ensemble de fausses clés (K1 - KNo) inclus dans le premier ensemble de fausses clés. 12. Microcircuit selon la revendication 11, configuré pour n'exécuter qu'une fois au moins une ronde intermédiaire (RD,). 13. Microcircuit selon l'une des revendications 11 et 12, configuré pour exécuter des rondes comprenant des sous-rondes (SRD1-SRD4), et pour exécuter le même nombre de fois toutes les sous-rondes d'une ronde, lors d'une exécution multiple d'une ronde. 14. Microcircuit selon l'une des revendications 11 et 12, configuré pour exécuter des rondes comprenant des sous-rondes (SRD1-SRD4), et pour n'exécuter qu'une fois au moins une sous-ronde et exécuter plusieurs fois une autre sous-ronde, lors d'une exécution multiple d'une ronde. 20 15. Microcircuit selon l'une des revendications 13 ou 14, comprenant un coprocesseur modulaire (CPROC) configure pour exécuter individuellement des opérations de chiffrement comprises dans des sous-rondes. 15