Brevet FR3040515A1 — publié le 20170303

B14603 - 15-R0-0524 1 VERIFICATION DE LA RESISTANCE D'UN CIRCUIT ELECTRONIQUE A DES ATTAQUES PAR CANAUX CACHES Domaine La présente description concerne de façon générale les circuits électroniques et, plus particulièrement, les circuits exécutant des algorithmes de chiffrement connus sous la dénomination Rijndael qui mettent en oeuvre une même transformation sur différentes parties de données à chiffrer. La présente description concerne plus particulièrement la protection d'un calcul exécuté par un tel algorithme contre des attaques par analyse différentielle de la consommation (DPA). Exposé de l'art antérieur Dans de nombreuses applications, des circuits électroniques mettent en oeuvre des algorithmes de chiffrement, de vérification, de signature, et plus généralement des algorithmes manipulant des données, dites secrètes, c'est-à-dire dont on souhaite réserver l'accès à certains utilisateurs ou circuits. Parmi les algorithmes de Rijndael, l'algorithme AES, souvent dénommé l'AES (Advanced Encryption Standard, FIPS PUB 197), traite des blocs de données de taille fixée à 128 bits et est un algorithme de chiffrement particulièrement répandu. La présente description prend cet algorithme pour exemple. 3040515 B14603 - 15-R0-0524 2 L'AES applique, à un mot ou message découpé en blocs, une même transformation plusieurs fois de suite à partir de sous-clés différentes issues d'une même clé. De nombreuses méthodes, dites attaques, existent pour 5 tenter de découvrir ou pirater les données secrètes. Parmi ces attaques, des attaques dites par canaux cachés (Side Channel Attacks) consistent à analyser l'influence du calcul exécuté par le circuit électronique sur des paramètres tels que sa consommation, son rayonnement électromagnétique, etc. Une attaque 10 par canaux cachés, particulièrement répandue et qui sera prise pour exemple dans la suite de la présente description, est l'attaque connue sous la dénomination DPA (Differential Power Analysis). Une telle attaque consiste à corréler la consommation du circuit intégré exécutant l'algorithme avec des résultats de 15 calcul faisant intervenir les clés secrètes utilisées lors du chiffrement ou du déchiffrement. En pratique, à partir d'un message à chiffrer et d'hypothèses sur la clé secrète, on établit une courbe de corrélation statistique en fonction du temps entre la consommation du circuit pour le chiffrement du message et une 20 valeur intermédiaire calculée par le circuit. De telles attaques par analyse de la consommation sont largement décrites dans la littérature (voir par exemple l'article "Differential Power Analysis" de Paul Kocher, Joshua Jaffe et Benjamin Jun, paru en 1999, conférence CRYPTO 99, pages 388 à 397, publié par Springer- Verlag LNCS 1666). Il existe un besoin d'améliorer la protection des données manipulées par des algorithmes de type Rijndael et plus particulièrement par un AES contre des attaques par canaux cachés. Il existe également un besoin de vérifier la sensibilité 30 d'un circuit électronique à des attaques par canaux cachés. Résumé Un mode de réalisation pallie tout ou partie des inconvénients des procédés et circuits usuels de protection contre des attaques par canaux cachés. 3040515 B14603 - 15-R0-0524 3 Un mode de réalisation propose une solution particulièrement adaptée à un algorithme de type AES. Un mode de réalisation propose un procédé de calcul d'un algorithme AES qui pallie tout ou partie des inconvénients des 5 procédés usuels. Un mode de réalisation propose un procédé de vérification de la sensibilité d'un circuit électronique exécutant un algorithme AES à une attaque par canaux cachés. Ainsi, un mode de réalisation prévoit un procédé de 10 vérification de la sensibilité d'un circuit électronique exécutant un algorithme de type Rijndael à des attaques pas canaux cachés, dans lequel : chaque bloc de données à chiffrer ou à déchiffrer est masqué par un premier masque avant application d'une opération 15 non linéaire de substitution par bloc à partir d'une table de substitution, puis est démasqué par un deuxième masque après substitution ; la table de substitution est recalculée, bloc par bloc, avant application de l'opération non linéaire, l'ordre de 20 traitement des blocs de la table de substitution étant soumis à une permutation aléatoire ; et une attaque par canaux cachés est effectuée sur les étapes de recalcul, bloc par bloc, de la table de substitution. Selon un mode de réalisation, l'attaque est une analyse 25 différentielle de la consommation au moins du deuxième ordre. Selon un mode de réalisation, le circuit est considéré sensible à l'attaque si cette dernière permet de déterminer directement ou indirectement la valeur d'au moins un des masques. Selon un mode de réalisation, le recalcul de la table 30 de substitution fait intervenir le deuxième masque ainsi que des troisième et quatrième masques, la somme des troisième et quatrième masques étant égale au premier masque. Selon un mode de réalisation : successivement pour chaque bloc de la première table : 3040515 B14603 - 15-R0-0524 4 le rang du bloc courant est soumis à ladite permutation et le résultat est combiné au troisième masque ; le bloc courant d'une deuxième table est remplacé par la combinaison du deuxième masque avec le bloc de la première 5 table identifié par le résultat de la permutation ; et successivement, pour chaque bloc de la deuxième table : le rang du bloc courant est soumis à ladite permutation et le résultat est combiné au quatrième masque ; le bloc courant de la première table est remplacé 10 par le bloc de la deuxième table identifié par le résultat de la permutation. Selon un mode de réalisation, le procédé comporte les étapes suivantes : successivement pour chaque bloc de la première table : 15 dans une première étape, appliquer la permutation au rang du bloc courant, combiner le résultat au premier masque et stocker le résultat dans une première variable ; dans une deuxième étape, stocker dans une deuxième variable le résultat de la combinaison du deuxième masque au bloc 20 de la première table ayant pour rang le résultat de la permutation appliquée au rang du bloc courant ; et stocker le résultat de la deuxième étape dans un bloc, identifié par le résultat de la première étape, d'une deuxième table ; 25 successivement pour chaque bloc de la deuxième table : dans une troisième étape, appliquer la permutation au rang du bloc courant, combiner le résultat au deuxième masque et stocker le résultat dans la première variable ; dans une quatrième étape, stocker dans la deuxième 30 variable le bloc de la deuxième table ayant pour rang le résultat de la permutation appliquée au rang courant ; et stocker le résultat de la quatrième étape dans un bloc, identifié par le résultat de la troisième étape, de la première table. 35 Selon un mode de réalisation : 3040515 B14603 - 15-R0-0524 5 les blocs de la première table sont recopiés dans une deuxième table ; successivement, pour chaque bloc de la deuxième table : le rang du bloc courant est soumis à ladite 5 permutation et le résultat est combiné au troisième masque ; le bloc courant de la première table est remplacé par la combinaison du deuxième masque avec le bloc de la deuxième table identifié par le résultat de la permutation ; et successivement, pour chaque bloc de la première table : 10 le rang du bloc courant est soumis à ladite permutation et le résultat est combiné au quatrième masque ; le bloc courant de la deuxième table est remplacé par le bloc de la première table identifié par le résultat de la permutation. 15 Selon un mode de réalisation, le procédé comporte les étapes suivantes : les blocs de la première table sont recopiés dans une deuxième table ; successivement pour chaque bloc de la deuxième table : 20 dans une première étape, appliquer la permutation au rang du bloc courant, combiner le résultat au premier masque et stocker le résultat dans une première variable ; dans une deuxième étape, stocker dans une deuxième variable le résultat de la combinaison du deuxième masque au bloc 25 de la deuxième table ayant pour rang le résultat de la permutation appliquée au rang du bloc courant ; et stocker le résultat de la deuxième étape dans un bloc de la première table, identifié par le résultat de la première étape ; successivement pour chaque bloc de la première table : dans une troisième étape, appliquer la permutation au rang du bloc courant, combiner le résultat au deuxième masque et stocker le résultat dans la première variable ; 3040515 B14603 - 15-R0-0524 6 dans une quatrième étape, stocker dans la deuxième variable le bloc de la première table ayant pour rang le résultat de la permutation appliquée au rang courant ; et stocker le résultat de la quatrième étape dans un 5 bloc, identifié par le résultat de la troisième étape, de la deuxième table. Selon un mode de réalisation, la permutation aléatoire est commutative avec l'opération non linéaire de substitution. Selon un mode de réalisation : 10 successivement, pour chaque bloc de la table de substitution : dans une première étape, le rang du bloc est soumis à ladite permutation et est combiné au premier masque ; dans une deuxième étape, le bloc est soumis à la 15 permutation et le résultat est combiné au deuxième masque ; et le bloc, identifié par le résultat de la première étape, est substitué par le résultat de la deuxième étape. Selon un mode de réalisation, le procédé comporte les étapes suivantes : 20 successivement pour chaque bloc de la table de substitution : dans une première étape, appliquer la permutation au rang du bloc courant, combiner le résultat au premier masque et stocker le résultat dans une première variable ; 25 dans une deuxième étape, appliquer la permutation au bloc courant, combiner le résultat au deuxième masque et stocker le résultat dans une deuxième variable ; et remplacer le bloc de la table de substitution ayant pour rang le résultat de la première étape par le résultat de la 30 deuxième étape. Selon un mode de réalisation, les masques sont des nombres aléatoires. Selon un mode de réalisation, les masques ont tous la même taille qu'un bloc. 3040515 B14603 - 15-R0-0524 7 Selon un mode de réalisation, les combinaisons sont de type OU-Exclusif. Selon un mode de réalisation, le procédé est appliqué à l'AES. 5 Un mode de réalisation prévoit un circuit électronique adapté à, configuré pour, ou programmé pour la mise en oeuvre du procédé. Brève description des dessins Ces caractéristiques et avantages, ainsi que d'autres, 10 seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 illustre, par un organigramme simplifié, les étapes principales d'un algorithme de type AES ; 15 la figure 2 représente, de façon schématique et sous forme de blocs, un exemple de masquage d'une table de substitution d'un chiffrement par blocs ; la figure 3 représente, de façon schématique et sous forme de blocs, un exemple de masquage d'une table de substitution 20 recalculée avec un ordre aléatoire ; la figure 4 représente, de façon schématique et sous forme de blocs, un mode de réalisation d'un procédé de protection de l'exécution d'un algorithme AES ; la figure 5 représente, de façon schématique et sous 25 forme de blocs, un autre mode de réalisation d'un procédé de protection de l'exécution d'un algorithme AES ; la figure 6 représente, de façon schématique et sous forme de blocs, encore un autre mode de réalisation d'un procédé de protection de l'exécution d'un algorithme AES ; et 30 la figure 7 représente un exemple de circuit électronique adapté à la mise en oeuvre des procédés décrits. Description détaillée De mêmes éléments ont été désignés par de mêmes références aux différentes figures. En particulier, les éléments 35 structurels et/ou fonctionnels communs aux différents modes de 3040515 B14603 - 15-R0-0524 8 réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques. Par souci de clarté, seuls les éléments utiles à la compréhension des modes de réalisation décrits ont 5 été représentés et seront détaillés. En particulier, les applications des chiffrements/déchiffrements exécutés ou celles des circuits électroniques les exécutant n'ont pas été détaillées, les modes de réalisation décrits étant compatibles avec les applications usuelles. 10 Les modes de réalisation seront décrits par la suite en relation avec un exemple d'application à l'AES. Toutefois, tous ce qui est décrit par la suite s'applique plus généralement à tout algorithme par blocs faisant intervenir une opération non linéaire de substitution, comme les algorithmes de type Rijndael. 15 L'AES est généralement exécuté par des circuits intégrés, soit au moyen de machines d'états en logique câblée, soit au moyen de microprocesseurs exécutant un programme en mémoire (généralement une mémoire morte). L'algorithme utilise des clés secrètes propres au circuit intégré ou à l'utilisateur, 20 qui sont exploitées pour chiffrer les données. Plus précisément, l'AES applique, à un mot ou code de données découpé en blocs, une même transformation plusieurs fois de suite à partir de sous-clés de chiffrement différentes (de parties d'un mot binaire constituant une clé). 25 L'AES est souvent utilisé dans des dispositifs électroniques de type carte à microcircuit, décodeur, téléphone mobile, etc. La figure 1 illustre, par un organigramme simplifié, les étapes principales d'un algorithme de type AES. On se contentera 30 de décrire le chiffrement, le déchiffrement reprenant les transformations inverses. Pour plus de détails, on pourra se référer à l'ouvrage "The Design of Rijndael" de Joan Daemen et Vincent Rijmen, paru aux éditions Springer-Verlag (ISBN 3-54042580-2) et à la norme AES (FIPS PUB 197). 3040515 B14603 - 15-R0-0524 9 Cet algorithme chiffre un mot ou code TO d'un nombre de bits déterminé en un autre mot ou code Tn de même taille. Les données (message) à traiter sont en fait découpées en plusieurs mots ou codes ayant tous la même taille (128 bits pour l'AES). Le 5 chiffrement et le déchiffrement reposent sur une clé secrète dont la longueur (128, 192 ou 256 bits pour l'AES) conditionne la sécurité du chiffrement. En pratique, chaque étape de l'AES traite une matrice de quatre lignes et quatre colonnes, représentant un mot, et dont 10 chaque élément est un octet ou bloc du code de 128 bits traité. Pour simplifier la description qui suit, on fera référence, pour chaque étape, à un état considéré comme étant une matrice. On prend, pour exemple, un algorithme AES appliqué à des mots de 32 bits découpés en octets, ce qui correspond au cas le plus fréquent. 15 On commence par produire, à partir de la clé secrète sur 128, 192 ou 256 bits, respectivement 11, 13 ou 15 sous-clés comprenant chacune également 128 bits. Ces sous-clés sont destinées à être utilisées par l'algorithme décrit en relation avec la figure 1. 20 On part d'un état initial TO (bloc 10, STATE INIT) du code ou mot de données à chiffrer. Une première phase de l'AES est une opération (bloc 11, ADDROUNDKEY) qui consiste à effectuer une combinaison de type Ou-Exclusif (XOR), noté + aux figures, de l'état initial TO avec 25 la première sous-clé KO. On obtient un premier état intermédiaire Tl. En pratique, les opérations sont effectuées octet par octet. Une deuxième phase consiste à effectuer plusieurs tours ou cycles d'une même transformation M faisant intervenir, à chaque tour i, l'état Ti-1 obtenu au tour précédent et une sous-clé 30 courante Ki. Le nombre de tours de transformation M correspond à n-1, c'est-à-dire au nombre n+1 de sous-clés dérivées, diminué de 2. Chaque transformation de tour M est constituée de quatre opérations appliquées successivement. Une première opération (bloc 12, SHIFTROWS) consiste à 35 opérer une rotation sur les trois dernières lignes de la matrice. 3040515 B14603 - 15-R0-0524 10 Typiquement, la première ligne de la matrice demeure inchangée, La deuxième ligne subit une rotation d'un octet, la troisième ligne subit une rotation de deux octets et la quatrième ligne subit une rotation de trois octets. 5 Une deuxième opération (bloc 13, SUBBYTES) de la transformation de tour M constitue une transformation non linéaire dans laquelle chaque octet de la matrice constituant l'état courant est remplacé par son image, prise dans une table de substitution, généralement dénommée SBOX. Cette table de 10 substitution peut être obtenue par deux transformations combinées. Une première transformation consiste à inverser l'octet considéré (l'élément de la matrice) dans le corps fini d'ordre 28 (pour correspondre à l'octet), l'octet 00 constituant sa propre image. Cette inversion est suivie d'une transformation affine. 15 Une troisième opération (bloc 14, MIXCOLUMNS) de la transformation de tour M consiste à considérer chaque colonne de la matrice issue de l'étape précédente comme un polynôme sur le corps fini d'ordre 28, et à multiplier chacun de ces polynômes par un polynôme de combinaison modulo un autre polynôme. 20 Une quatrième et dernière opération (bloc 15, ADDROUNDKEY) de la transformation de tour M de rang i consiste à appliquer la sous-clé Ki à la matrice résultante de l'état précédent pour obtenir une matrice dans laquelle chaque octet de la matrice résultante de l'état précédent a été combiné par un 25 Ou-Exclusif, bit à bit, avec un octet k, ou Ki(j, 1), de la sous clé Ki, j représentant le rang compris entre 0 et 3 de la ligne dans la matrice et 1 représentant le rang compris entre 0 et 3 de la colonne dans la matrice. Cette opération 15 est la même que l'opération 11 de la première phase du chiffrement, mais effectuée 30 avec une sous-clé différente. A l'issue de l'opération 15, on obtient pour un tour de rang i, un état Ti=M(Ki, Ti-1). Les quatre opérations de la transformation de tour sont répétées n-1 fois, c'est-à-dire qu'après l'opération 15, on revient à l'opération 12 pour ré- effectuer un tour avec une sous-clé suivante. 3040515 B14603 - 15-R0-0524 11 La troisième phase de l'AES consiste en un dernier tour comprenant les opérations 12, 13 et 15 de la transformation de tour M à l'exception de la troisième (MIXCOLUMNS) avec, comme clé pour l'opération 15, la dernière sous-clé Kn-1. 5 On obtient alors l'état Tn = M'(Kn, Tn-1). Ce résultat est le cas échéant mis en forme (bloc 16, RESULT FORM) pour utilisation ultérieure. L'ordre des opérations 12, 13, 14, et 15 dans la transformation de tour T peut varier. En particulier, 10 l'introduction de la sous-clé (étape 15) peut intervenir avant l'opération de substitution 13. On a déjà proposé différentes contremesures pour réduire la sensibilité des traitements algorithmiques de type AES à des attaques par canaux cachés et notamment à des attaques par analyse 15 de la consommation en courant du circuit exécutant l'algorithme. Généralement, ces contremesures masquent les calculs en introduisant des nombres aléatoires à certaines étapes considérées sensibles. En particulier, la table de substitution est considérée comme une étape sensible aux attaques en raison du caractère non- 20 linéaire de l'opération qu'elle réalise. Un table de substitution représente généralement une matrice de 256 octets qu'il est nécessaire de précalculer, puis de lire dans une mémoire de stockage 16 fois à chaque tour de l'algorithme AES. Dans certains cas, on mémorise une table avec les résultats de la table de 25 substitution (également dénommée SBOX) et de la transformation de colonne MIXCOLUMNS, la table mémorisée et les résultats des deux transformations étant appliqués à un octet de chaque état. Pour masquer une table de substitution, on recalcule une table de substitution masquée qui intervient dans la 30 transformation de tour. Masquer une table de substitution impose de tenir compte, pour son calcul, du masque qui servira au démasquage du résultat chiffré. La figure 2 représente, de façon schématique et sous forme de blocs, un exemple de masquage d'une table de substitution 35 d'un chiffrement par blocs. 3040515 B14603 - 15-R0-0524 12 Dans l'exemple de la figure 2, on suppose que la substitution (étape 13, figure 1) est effectuée après l'étape 15 dans laquelle intervient la clé de tour. Par ailleurs, on considère que l'étape 14 (MIXCOLUMNS) est intégrée à l'opération 5 de substitution, c'est-à-dire que la table de substitution réalise les deux opérations 13 et 14. Pour simplifier, on ne tient pas compte de l'opération 12 (SHIFTROWS). On commence (bloc 20, m=random), (bloc 21, m'=random), par définir deux masques (nombres aléatoires) m et m', 10 respectivement de masquage et de démasquage. Les nombres m et m' représentent des octets. Puis, successivement pour chaque octet S[w] de rang w de la table de substitution S, on combine (bloc 22, z=w+m) par un OU-Exclusif (que l'on note par une opération + d'addition bit 15 à bit) le rang w de l'octet au masque m en plaçant le résultat dans une variable temporaire z. On combine ensuite (bloc 23, z'=S[w]+m') l'octet S[w] au masque m' en plaçant le résultat dans une variable temporaire z'. Puis (bloc 24, S'[z]=z'), on affecte la valeur contenue dans cette variable z' à l'octet S'[z] de rang 20 z de la table de substitution masquée S'. Par exemple, un compteur w est initialisé à 0 (bloc 27, w=0) et est incrémenté de 1 (bloc 28, w=w+1) à chaque traitement d'un octet de la table S tant que tous les octets n'ont pas été traités (sortie N du bloc 29, w=n-1 ?). 25 Une fois que les n octets S[w] de la table de substitution S ont été traités (sortie Y du bloc 29), on utilise la table de substitution masquée S' pour traiter le message octet par octet (bloc par bloc). Ainsi, chaque octet t du message est combiné (bloc 31, 30 t=t+m) par un OU-Exclusif au masque m en plaçant le résultat dans la variable t (en écrasant l'octet t), puis est combiné (bloc 32, t=t+k) par un OU-Exclusif à un octet k de la sous-clé en écrasant l'octet t dans la variable t, puis est substitué (bloc 33, S'[t]) par son image S'[t] dans la table de substitution masquée S'. La 35 variable t contenant cette image S'[t] est alors démasquée (bloc 3040515 B14603 - 15-R0-0524 13 34, t=t+m') en la combinant par un OU-Exclusif au masque m'. On retourne alors le contenu de la variable t. Les étapes 31 à 35 sont reproduites pour tous les octets t du message. 5 Le calcul illustré par la figure 2 peut également s'écrire de la façon suivante : m REVENDICATIONS1. Procédé de vérification de la sensibilité d'un circuit électronique (6) exécutant un algorithme de type Rijndael à des attaques pas canaux cachés, dans lequel : chaque bloc (t) de données à chiffrer ou à déchiffrer 5 est masqué (31) par un premier masque (m) avant application (33) d'une opération non linéaire de substitution par bloc à partir d'une table de substitution (S'), puis est démasqué (34) par un deuxième masque (m') après substitution ; la table de substitution est recalculée, bloc par bloc, 10 avant application de l'opération non linéaire, l'ordre de traitement des blocs de la table de substitution étant soumis à une permutation aléatoire (y ; y) ; et une attaque par canaux cachés est effectuée sur les étapes de recalcul, bloc par bloc, de la table de substitution. 15 2. Procédé selon la revendication 1, dans lequel l'attaque est une analyse différentielle de la consommation au moins du deuxième ordre. 3. Procédé selon la revendication 1 ou 2, dans lequel le circuit est considéré sensible à l'attaque si cette dernière 20 permet de déterminer directement ou indirectement la valeur d'au moins un des masques. 4. Procédé selon l'une quelconque des revendications 1 à 3, dans lequel le recalcul de la table de substitution fait intervenir le deuxième masque (m') ainsi que des troisième (ml) 25 et quatrième (m2) masques, la somme des troisième et quatrième masques étant égale au premier masque (m). 5. Procédé selon la revendication 4, dans lequel : successivement pour chaque bloc de la première table (S) 30 le rang (oe) du bloc courant est soumis (44) à ladite permutation (q) et le résultat est combiné au troisième masque (na) ; le bloc courant d'une deuxième table (S') est remplacé (24) par la combinaison (23') du deuxième masque (m') 3040515 B14603 - 15-R0-0524 25 avec le bloc de la première table identifié par le résultat de la permutation ; et successivement, pour chaque bloc de la deuxième table (s' ) le rang (m) du bloc courant est soumis (47) à ladite pe/ tutation (y) et le résultat est combiné au quatrième masque (m2) ; le bloc courant de la première table (S) est remplacé (48', 49) par le bloc de la deuxième table identifié par le 10 résultat de la permutation. 6. Procédé selon la revendication 4 ou 5, comportant les étapes suivantes : successivement pour chaque bloc de la première table 15 dans une première étape (44), appliquer la permutation (y) au rang (m) du bloc courant, combiner le résultat au premier masque (m1) et stocker le résultat dans une première variable (z) ; dans une deuxième étape (23'), stocker dans une 20 deuxième variable (z') le résultat de la combinaison du deuxième masque .(m') au bloc de la première table ayant pour rang le résultat (y(m)) de la permutation appliquée au rang du bloc courant ; et stocker (24) le résultat de la deuxième étape dans 25 un bloc, identifié par le résultat de la première étape, d'une deuxième table (S') ; successivement pour chaque bloc de la deuxième table (S' ) : dans une troisième étape (47), appliquer la 30 permutation (y) au rang (w) du bloc courant, combiner le résultat au deuxième masque (m2) et stocker le résultat dans la première variable (z) ; dans une quatrième étape (48'), stocker dans la deuxième variable (z') le bloc de la deuxième table ayant pour (S) : 3040515 B14603 - 15-R0-0524 26 rang le résultat (cp(co)) de la permutation appliquée au rang courant ; et stocker (49) le résultat de la quatrième étape dans un bloc, identifié par le résultat de la troisième étape, de la 5 première table (S). 7. Procédé selon la revendication 4, dans lequel : les blocs de la première table (S) sont recopiés (43) dans une deuxième table (S') ; successivement, pour chaque bloc de la deuxième table (S') : le rang (m) du bloc courant est soumis (44) à ladite permutation (cp) et le résultat est combiné au troisième masque (m1) ; le bloc courant de la première table (S) est remplacé (46) par la combinaison (45) du deuxième masque (m') avec le bloc de la deuxième table identifié par le résultat de la permutation ; et successivement, pour chaque bloc de la première table (S) : le rang (m) du bloc courant est soumis (47) à ladite péLmutation (m) et le. résultat est combiné au quatrième masque (m2) ; le bloc courant de la deuxième table (Sr) est remplacé (48, 24) par le bloc de la première table identifié par 25 le résultat de la permutation. 8. Procédé selon la revendication 4 ou 5, comportant les étapes suivantes : les blocs de la première table (S) sont recopiés (43) dans une deuxième table (S') ; 30 successivement pour chaque bloc de la deuxième table (S') : dans une première étape (44), appliquer la permutation (cp) au rang (m) du bloc courant, combiner le résultat au premier masque (m1) et stocker le résultat dans une première 35 variable (z) ; 3040515 B14603 - 15-R0-0524 27 dans une deuxième étape (45), stocker dans une deuxième variable (z') le résultat de la combinaison du deuxième masque (m') au bloc de la deuxième table ayant pour rang le résultat (9(w)) de la permutation appliquée au rang du bloc 5 courant ; et stocker (46) le résultat de la deuxième étape dans un bloc de la première table (S), identifié par le résultat de la première étape ; successivement pour chaque bloc de la première table 10 (S) : dans une troisième étape (47), appliquer la permutation (cp) au rang (ta) du bloc courant, combiner le résultat au deuxième masque (m2) et-stocker le résultat dans la première variable (z) ; 15 dans une quatrième étape (48), stocker dans la deuxième variable (z') le bloc de la première table ayant pour rang le résultat ((p(oe)) de la permutation appliquée au rang courant ; et stocker (24) le résultat de la quatrième étape dans 20 un bloc, identifié par le résultat de la troisième étape, de la deuxième table 9. Procédé selon l'une quelconque des revendications 1 à 3, dans lequel la permutation aléatoire (y) est commutative avec l'opération non linéaire de substitution. 10. Procédé selon la revendication 9, dans lequel : successivement, pour chaque bloc de la table de substitution : dans une première étape (51), le rang (oe) du bloc est soumis à ladite permutation (y) et est combiné au premier masque (m) ; dans une deuxième étape (52), le bloc (S[oe]) est soumis à la permutation4y) et le résultat est combiné au deuxième masque (m') ; et le bloc, identifié par le résultat de la première étape, 35 est substitué par le résultat de la deuxième étape. 3040515 B14603 - 15-R0-0524 28 11. Procédé selon la revendication 9 ou 10, comportant les étapes suivantes : successivement pour chaque bloc de la table de substitution (S) : 5 dans une première étape (51), appliquer la permutation (y) au rang (w) du bloc courant, combiner le résultat au premier masque (m) et stocker le résultat dans une première variable (z) ; dans une deuxième étape (52), appliquer la permutation (y) au bloc courant (S[w]), combiner le résultat au deuxième masque 10 (rn') et stocker le résultat dans une deuxième variable (z') ; et remplacer (24) le bloc de la table de substitution ayant pour rang le résultat de la première étape par le résultat de la deuxième étape. 12. Procédé selon l'une quelconque des revendications 1 15 à 11, dans lequel les masques (ml, m2, m, m' ; m, m') sont des nombres aléatoires. 13. Procédé selon l'une quelconque des revendications 1 à 12, dans lequel les masques (ml, m2, m, m' ; m, nt') ont tous la même taille qu'un bloc. 20 14. Procédé selon l'une quelconque des revendications 1 à.:13, dans lequel les combinaisons sont de type OU-Exclusif. 15. Procédé selon l'une quelconque des revendications 1 à 14, appliqué à l'AES. 16. Circuit électronique (6) adapté à la mise en 25 oeuvre du procédé selon l'une quelconque des revendications 1 à 15.