Brevet FR3078463A1 — publié le 20190830

B16586 17-R0-0550 1 PROCEDE ET DISPOSITIF DE REALISATION D'OPERATIONS EN TABLE DE SUBSTITUTION DOMAINE DE L'INVENTION La présente invention concerne le domaine des circuits électroniques, et notamment un dispositif et un procédé d'accès à des tables de substitution au cours d'une opération cryptogra5 phique. EXPOSE DE L'ART ANTERIEUR Les tables de substitution, également connues sous le nom de S-box, définissent une opération de substitution de données réalisée au cours d'algorithmes cryptographiques. Cette 10 substitution de données a pour objet de dissimuler la relation entre la clé secrète et le texte crypté et de rendre donc plus difficile la découverte de la clé secrète. Une technique utilisée par les pirates souhaitant récupérer la clé secrète traitée par un dispositif cryptographique 15 consiste à surveiller les signaux sur des canaux auxiliaires pour extraire certaines informations liées, par exemple, à la consommation ou à la séquence chronologique du dispositif lors de l'exécution d'un algorithme cryptographique. La manipulation de la donnée secrète pendant les opérations de substitution est 20 souvent visée par les pirates par des procédés par canaux B16586 17-R0-0550 2 auxiliaires du fait de la visibilité relative des opérations de substitution. Certaines solutions assurant un degré de protection limité contre l'utilisation de procédés par canaux auxiliaires 5 ont été proposées. Il existe cependant un besoin dans la technique de solutions offrant une meilleure protection. RESUME Un objet de modes de réalisation de la présente description est de répondre à un ou plusieurs besoins de l'art 10 antérieur. Selon un aspect, la présente invention prévoit un procédé de mise en oeuvre, par un circuit cryptographique, d'un ensemble d'opérations de substitution d'un algorithme cryptographique impliquant plusieurs tables de substitution, ce procédé 15 comprenant : la réalisation, pour chaque ensemble d'opérations de substitution de l'algorithme cryptographique, d'une série d'ensembles d'opérations de substitution, dont : un ensemble est un ensemble réel d'opérations de substitution correspondant à l'ensemble d'opérations de substitution de l'algorithme crypto- 20 graphique ; et un ou plusieurs ensembles sont des ensembles factices d'opérations de substitution, chaque ensemble factice étant basé sur une permutation différente desdites tables de substitution. Selon un mode de réalisation, la position de l'ensemble 25 réel d'opérations de substitution dans chaque série est choisie aléatoirement à partir d'une première valeur aléatoire. Selon un mode de réalisation, la réalisation de chaque série d'ensembles d'opérations de substitution comprend : le chargement de N valeurs d'entrée, où N est un entier 30 supérieur ou égal à deux ; et la fourniture, sur des ensembles consécutifs d'opérations d'accès en table de substitution, de chacune desdites N valeurs d'entrée à une table de substitution respective parmi les N tables de substitution pendant l'ensemble réel d'opérations de substitution, chacune des N valeurs d'entrée 35 étant fournie à une table de substitution correspondante parmi les N tables de substitution à partir de l'algorithme B16586 17-R0-0550 3 cryptographique et, pendant les ensembles factices d'opérations de substitution, chacune des N valeurs d'entrée étant fournie à une table de substitution différente de sa table de substitution correspondante, et la position à laquelle l'ensemble réel d'opérations de substitution est réalisé par rapport aux ensembles factices d'opérations de substitution étant choisie à partir de la première valeur aléatoire. Selon un mode de réalisation, chaque ensemble d'opérations de substitution comprend l'adressage d'emplacements de mémoire d'une ou plusieurs mémoires à partir de valeurs de données d'entrée de table de substitution et la lecture de valeurs aux emplacements de mémoire pour fournir des valeurs de données de sortie de table de substitution. Selon un mode de réalisation, le procédé comprend en outre, pour chaque série d'ensembles d'opérations de substitution, le stockage des valeurs de sortie de table de substitution de chaque opération de substitution et la sélection des valeurs de sortie correspondant à l'ensemble réel d'opérations de substitution à partir de la première valeur aléatoire. Selon un mode de réalisation, la réalisation de chaque ensemble d'opérations de substitution de la série comprend l'exécution de l'algorithme cryptographique à partir d'un même message d'entrée et d'une même clé secrète. Selon un mode de réalisation, chaque série d'ensembles d'opérations de substitution comprend m-1 ensembles factices d'opérations de substitution, m étant un entier fixé à une valeur supérieure ou égale à 2 ou choisi aléatoirement ; et pour une clé donnée, un même groupe de m-1 permutations est appliqué pendant les m-1 opérations de substitution factices correspondantes. Selon un mode de réalisation, chaque groupe de m-1 permutations pour une clé données est sélectionné à partir d'une seconde valeur aléatoire. Selon un mode de réalisation, le nombre d'ensembles factices d'opérations de substitution réalisés dans chaque série 35 est choisi aléatoirement. B16586 17-R0-0550 4 Selon un autre aspect, la présente invention prévoit un moyen de stockage non transitoire stockant un programme informatique configuré, lorsqu'il est exécuté par un dispositif de traitement, pour mettre en oeuvre le procédé ci-dessus. 5 Selon un autre aspect, la présente invention prévoit un circuit cryptographique comprenant : un circuit de mémoire stockant plusieurs tables de substitution pour mettre en oeuvre des ensembles d'opérations de substitution d'un algorithme cryptographique ; et un ou plusieurs circuits configurés pour 10 réaliser, pour chaque ensemble d'opérations de substitution de l'algorithme cryptographique, une série d'ensembles d'opérations de substitution utilisant lesdites tables de substitution, chaque série d'ensembles d'opérations de substitution comprenant : un ensemble réel d'opérations de substitution correspondant à 15 l'ensemble d'opérations de substitution de l'algorithme cryptographique ; et un ou plusieurs ensembles factices d'opérations de substitution, les un ou plusieurs circuits étant configurés pour appliquer une permutation différente des tables de substitution pendant chacun des ensembles factices d'opérations 20 de substitution. Selon un mode de réalisation, le dispositif cryptographique comprend en outre un générateur de nombre aléatoire configuré pour générer, pour chaque série d'ensembles d'opérations de substitution, une première valeur aléatoire, les un ou 25 plusieurs circuits étant configurés pour sélectionner aléatoirement la position de l'ensemble réel d'opérations de substitution parmi les un ou plusieurs ensembles factices d'opérations de substitution à partir de la première valeur aléatoire. 30 Selon un mode de réalisation, le générateur de nombre aléatoire est par ailleurs configuré pour générer une seconde valeur aléatoire, les un ou plusieurs circuits étant configurés pour sélectionner aléatoirement les permutations des tables de substitution à partir de la seconde valeur aléatoire. Selon un mode de réalisation, le dispositif cryptogra- phique comprend en outre : un registre d'entrée configuré pour 316586 17-R0-0550 5 stocker N valeurs d'entrée ; et un ou plusieurs multiplexeurs configurés pour sélectionner, pour chaque ensemble d'opérations de substitution de chaque série, la valeur d'entrée parmi les N valeurs d'entrée à fournir à chaque table de substitution. 5 Selon un mode de réalisation, le dispositif cryptogra- phique comprend en outre un circuit de sélection configuré pour générer un signal de sélection pour commander les un ou plusieurs multiplexeurs à partir des première et seconde valeurs aléatoires. Selon un mode de réalisation, les un ou plusieurs 10 circuits comprennent un ou plusieurs dispositifs de traitement commandés par des instructions stockées dans une mémoire d'instructions pour charger N valeurs d'entrée dans une mémoire, N étant égal au nombre de tables de substitution, et pour choisir, pour chaque ensemble d'opérations de substitution de chaque série, 15 soit de mettre en oeuvre l'ensemble réel d'opérations de substitution en fournissant chaque valeur d'entrée à la table de substitution correspondante à partir de l'algorithme cryptographique, soit de mettre en oeuvre un ensemble factice d'opérations de substitution en fournissant chaque valeur d'entrée à une des 20 tables de substitution autre que la table correspondante. BREVE DESCRIPTION DES FIGURES Ces caractéristiques et leurs avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif 25 en relation avec les figures jointes parmi lesquelles : la figure 1 illustre schématiquement un circuit d'exécution d'un algorithme cryptographique faisant intervenir des opérations de substitution selon un exemple de mode de réalisation ; 30 la figure 2 illustre schématiquement une table de substitution selon un exemple de réalisation ; la figure 3A illustre schématiquement un circuit de substitution selon un exemple de réalisation de la présente invention ; B16586 17-R0-0550 6 la figure 3E illustre schématiquement un circuit de permutation du circuit de substitution de la figure 3A plus en détail selon un exemple de réalisation de la présente invention ; la figure 4 illustre schématiquement un circuit 5 d'exécution d'une série d'opérations cryptographiques selon un exemple de réalisation de la présente description ; la figure 5 est un chronogramme illustrant des exemples de signaux dans le circuit de la figure 4 selon un exemple de réalisation ; 10 la figure EA illustre schématiquement un circuit d'exécution d'une série d'opérations cryptographiques selon un autre exemple de réalisation de la présente invention ; la figure 6B illustre schématiquement un circuit de substitution de la figure 6A plus en détail selon un exemple de 15 réalisation de la présente invention ; la figure 7 est un chronogramme illustrant un exemple de signaux dans le circuit de la figure 6E ; la figure 8 illustre schématiquement un système de traitement pour effectuer un ensemble d'opérations d'accès en 20 table de substitution selon un exemple de réalisation de la présente invention ; la figure 9 est un organigramme représentant des opérations d'un procédé d'exécution d'un ensemble d'opérations d'accès en table de substitution selon un exemple de réalisation 25 de la présente invention ; et la figure 10 illustre schématiquement un dispositif cryptographique selon un exemple de réalisation de la présente invention. DESCRIPTION DETAILnre 30 Dans la présente description, le terme "connecté" est utilisé pour désigner une connexion électrique directe entre éléments de circuit, tandis que le terme "relié" ou "couplé" est utilisé pour désigner une connexion électrique entre éléments de circuit qui peut être directe ou par l'intermédiaire d'un ou 35 plusieurs éléments tels que des multiplexeurs, des tampons, etc. B16586 17-R0-0550 7 En outre, dans la présente description, on considérera que les termes suivants ont les définitions suivantes : "algorithme cryptographique" - toute série d'opérations réalisées par un dispositif, impliquant la manipulation d'une 5 valeur secrète, telle qu'une clé secrète, qui doit être cachée du monde extérieur au dispositif. Des exemples d'algorithmes cryptographiques comprennent les algorithmes de cryptage ou de décryptage de texte non-crypté/texte crypté à partir d'une clé secrète, pour générer un code d'authentification de message (MAC) 10 ou une autre forme de signature numérique à partir d'un algorithme secret et/ou clé, ou tout autre type d'opération secrète ; "opération de substitution" ou "accès en table de substitution" - une opération d'un algorithme cryptographique dans laquelle une valeur de donnée de sortie est générée à partir d'une 15 valeur de donnée d'entrée au moyen d'une table de substitution, S-box. Les valeurs d'entrée et de sortie peuvent comprendre le même nombre de bits ou un nombre de bits différent. Cette opération est par exemple réalisée au moyen d'une table de correspondance (LUT, lookup table) stockée dans une mémoire, et les valeurs 20 définies dans la table de correspondance peuvent être fixées ou pourraient être mises à jour de façon dynamique ; "ensemble d'opérations de substitution" ou "ensemble d'accès en table de substitution" - plusieurs opérations de substitution réalisées au moyen de tables de substitution définies 25 par un algorithme cryptographique. Corme on le décrira plus en détail ci-dessous, chaque ensemble peut correspondre à un accès unique à chaque table de substitution ou à des accès multiples à chaque table de substitution. Par exemple, un ensemble d'opérations de substitution peut correspondre à un accès unique 30 à chacune des huit tables de substitution S1 à S8 pendant l'exécution de chaque opération de substitution d'une itération de l'algorithme DES. A titre de variante, un ensemble d'opérations de substitution peut correspondre à toutes les opérations de substitution réalisées pendant l'exécution de l'algorithme DES, 35 ce qui implique de multiples itérations ; B16586 17-R0-0550 8 "ensemble réel d'opérations de substitution" - un ensemble d'opérations de substitution défini par l'algorithme cryptographique en cours d'exécution, qui consiste par exemple en une opération utile en ce que les résultats de l'ensemble de 5 substitutions contribueront au calcul des données de sortie utiles de l'algorithme cryptographique ; et "ensemble factice d'opérations de substitution" - un ensemble d'opérations de substitution faux ou fictif réalisé de façon semblable à un ensemble réel d'opérations de substitution, 10 mais qui est superflu dans la mesure où il est réalisé en plus de l'ensemble réel d'opérations de substitution défini par l'algorithme cryptographique. Bien que les résultats de chaque ensemble factice d'opération de substitution puissent être stockés en mémoire, ils ne sont pas utiles dans la mesure où ces résultats 15 sont sans objet en lien avec l'algorithme cryptographique et peuvent être rejetés. Comme on l'a décrit ici, les ensembles d'opérations de substitution factices sont par exemple effectués à partir de données d'entrée permutées fournies à plusieurs tables de substitution. 20 La figure 1 illustre schématiquement un circuit cryp- tographique 100 selon un mode de réalisation. Le circuit 100 reçoit par exemple en tant qu'entrées un message (MESSAGE) à traiter et une clé secrète (KEY). Par exemple, le message correspond à un texte en clair à crypter par le circuit 100 25 utilisant la clé secrète, à un texte crypté à décrypter par le circuit 100 au moyen de la clé secrète ou à la donnée à signer par le circuit 100 en générant une signature numérique, telle qu'un MAC (code d'authentification de message, message authentication code) à partir de la clé. 30 Le circuit 100 comprend une série de modules matériels mettant en oeuvre l'algorithme cryptographique impliquant diverses opérations 102, 104, 106 appliquées au message et à la clé de manière à générer un message de sortie (MESSAGE') correspondant à un texte crypté, à un texte en clair et/ou à une signature 35 numérique. Dans l'exemple de la figure 1, l'opération 104 B16586 17-R0-0550 9 correspond à une opération de substitution (SUBSTITUTION) faisant intervenir plusieurs tables de substitution. La figure 2 illustre schématiquement un exemple d'une table de substitution utilisée au cours de l'algorithme DES (data 5 encryption standard). De façon connue de l'homme de l'art, l'algorithme de cryptage DES fait intervenir 8 tables de substitution 51 à S8 dont chacune est unique. La figure 2 illustre la table de substitution DES Si. Un accès à une table de substitution selon l'algorithme 10 de cryptage DES implique l'introduction de 6 bits d'entrée (INPUT) b5 à b0 et la fourniture de 4 bits de sortie (OUTPUT) b3 à b0. La table de substitution Si se présente sous la forme d'une table de correspondance comprenant 16 colonnes et 4 lignes. Les bits b5 et b0 de la valeur d'entrée sont par exemple utilisés pour choisir 15 une rangée de la table et les bits b4 à bl de la valeur d'entrée sont par exemple utilisés pour choisir une colonne de la table. La valeur sur 4 bits stockée dans la rangée et la colonne choisies constitue la valeur de sortie de la table de substitution. Bien entendu, la figure 2 n'illustre qu'un exemple de 20 table de substitution et les principes décrits dans la présente description pourraient être appliquées à tout type de table de substitution dans laquelle des données d'entrée sont substituées pour générer des données de sortie à partir d'une table de valeurs mémorisées. 25 La figure 3A illustre schématiquement un circuit de substitution 300 pour mettre en oeuvre des ensembles d'opérations d'accès en table de substitution selon un exemple de réalisation de la présente description. Le circuit 300 fait par exemple partie du circuit 100 de la figure 1. 30 Le circuit 300 comprend par exemple N tables de subs- titution (S-BOXES) 301, qui correspondent par exemple aux huit tables de substitution de la norme de cryptage DES. A titre de variante, les N tables de substitution pourraient correspondre à celles utilisées dans une autre norme de cryptage, telle que la 35 norme de cryptage TDES (triple DES). B16586 17-R0-0550 10 Chacune des N tables de substitution reçoit une valeur de donnée d'entrée S1 IN à SN IN, et délivre une valeur de donnée de sortie respective nom' à SN_OUT. Les tables de substitution 301 sont par exemple mises en oeuvre par une ou plusieurs mémoires 5 non volatile, les valeurs de donnée d'entrée S1 IN à SN IN fournissant des entrées d'adresse respectives aux une ou plusieurs mémoires et les valeurs de donnée de sortie S1 OUT à SN OUT correspondent aux valeurs de donnée de sortie mémorisées aux emplacements de mémoire adressés. 10 Le circuit 300 comprend en outre un registre d'entrée 302 (INPUT REG) et un circuit de permutation de tables de substitution (S-BOX PERM) 304. Le registre d'entrée 302 reçoit par exemple N valeurs d'entrée INPUT correspondant aux entrées d'un ensemble d'opérations de substitution à réaliser en relation 15 avec un algorithme cryptographique par les N tables de substitution 301. Par exemple, les N valeurs d'entrée INPUTS sont le résultat d'une opération réalisée sur les données de message et les données de clé de la figure 1. Le registre 302 fournit par exemple les N valeurs d'entrée IN1 à INN au circuit de permutation 20 de tables de substitution 304. Le circuit de permutation de tables de substitution 304 choisit par exemple la valeur d'entrée à fournir à chacune des tables de substitution pendant un ensemble donné d'opérations de substitution. Par exemple, le circuit de permutation 304 reçoit 25 un signal de commande CTRL en provenance d'un générateur de nombre aléatoire (RNG) 306 commander la sélection. Le générateur 306 est par exemple un générateur de nombre pseudo-aléatoire ou un générateur de nombre réellement aléatoire. En fonctionnement, chaque ensemble réel d'opérations 30 d'accès en table de substitution défini par l'algorithme cryptographique est mis en oeuvre par une série de m ensembles d'opérations d'accès en table de substitution, m étant par exemple un entier supérieur ou égal à deux. Seul un des m ensembles d'opérations d'accès en table de substitution correspond à 35 l'ensemble réel d'opérations de substitution de l'algorithme cryptographique. Les m-1 autres ensembles d'opérations d'accès de B16586 17-R0-0550 11 chaque série correspondent à un ensemble d'opérations de substitution fictives ou factices mettant en oeuvre différentes permutations des tables de substitution par le circuit 304. Par exemple, chaque ensemble factice d'opérations de substitution pour 5 un ensemble donné d'opérations de substitution se base sur une permutation différente. La figure 3B illustre schématiquement le circuit de permutation de tables de substitution 304 de la figure 3A plus en détail selon un exemple de réalisation. Le circuit 304 comprend 10 par exemple N multiplexeurs MP1 à MPN, associés à chacune des N tables de substitution. Chacun des multiplexeurs MP1 à MPN reçoit chacune des valeurs d'entrée IN1 à INN en provenance du registre d'entrée 302. Ainsi, n'importe quelle valeur d'entrée peut être fournie à n'importe quelle table de substitution. Bien entendu, 15 dans le cas où seul un nombre limité de permutations sont sélectionnables, chaque multiplexeur MP1 à MPN n'a pas besoin de recevoir chaque signal d'entrée IN1 à INN. Le circuit de permutation 304 comprend également par exemple un circuit de sélection de permutation (PERM SEL) 310 qui 20 génère un signal de sélection SEL pour commander les multiplexeurs MP1 à MPN à partir de la valeur du signal de commande CTRL fourni par le générateur de nombre aléatoire 306. Le circuit de sélection de permutation 310 reçoit par exemple un signal d'horloge CLK indiquant la période de chaque ensemble d'opérations d'accès en 25 table de substitution de sorte que le signal de sélection SEL peut être mis à jour à l'instant approprié. Selon un mode de réalisation qui sera à présent décrit en référence aux figures 4 et 5, chaque ensemble d'opérations de substitution correspond à toutes les opérations de substitution 30 réalisées pendant l'exécution d'un algorithme cryptographique à partir d'un message et d'une clé donnés. La figure 4 illustre le circuit cryptographique 100 de la figure 1 plus en détail pour une série de m ensembles d'opérations de substitution, chacun correspondant à l'exécution 35 de l'algorithme DES à partir d'un message (MESSAGE) et d'une clé (KEY) donnés. Le circuit cryptographique 100 comprend par exemple 316586 17-R0-0550 12 un circuit 400 (F FUNCTION) d'exécution d'une fonction d'itération, chaque itération comprenant par exemple une opération d'expansion (EXP) effectuée par un circuit 402, une opération d'OU exclusif (XOR) effectuée par un circuit 404 pour introduire une 5 clé d'itération, l'opération de substitution effectuée par le circuit de substitution 300 et une opération de permutation (P-BOX) effectuée par un circuit 406. Le message M(R), M(P1)-M(P(m1)) résultant de chaque exécution de l'algorithme DES est fourni à un registre de sortie (OP REG) 408, avec le signal de commande 10 CTRL. Le circuit cryptographique 100 est illustré de multiples fois à la figure 4 pour représenter l'opération de substitution effectuée pendant chacune des séries de m exécutions de l'algorithme DES. L'une de ces exécutions représentée du côté 15 gauche de la figure 4 est basée sur l'absence de permutation des tables de substitution (S-BOXES P=ID) tandis que les autres exécutions sont respectivement basées sur les permutations Pl à P(m-1). L'ordre des exécutions réelles et fictives du DES est choisi aléatoirement pour chaque série d'exécutions à partir du 20 signal de commande généré aléatoirement CTRL. La figure 5 est un chronogramme représentant un exemple des signaux MESSAGE et KEY à l'entrée du circuit 100 de la figure 4, des opérations CRYPTO OP effectuées par le circuit 100 et du message de sortie (MESSAGE') généré pendant chaque exécution. 25 Une première série SA1 d'exécutions du DES est réalisée à partir d'un message M1 et d'une clé kl et une deuxième série 5A2 d'exécutions de DES est réalisée à partir d'un message M2 et d'une clé k2. Dans l'exemple de la figure 4, le nombre m d'exécutions de DES de chaque série est fixé à quatre, bien que, 30 dans des variantes de réalisation, m puisse être tout entier supérieur ou égal à 2. La série SA1 comprend par exemple trois exécutions fictives de DES F(P1), F(P2) et F(P3) respectivement à partir des permutations Pl, P2 et P3 des tables de substitution et une exécution réelle de DES Ri. La série SA2 comprend par 35 exemple trois exécutions fictives de DES F(P4), F(P5) et F(P6) respectivement à partir des permutations P4, P5 et P6 des tables B16586 17-R0-0550 13 de substitution et une exécution réelle de DES R2. La position de l'exécution réelle de DES parmi les exécutions fictives est choisie aléatoirement pour chaque série de m exécutions et est la troisième position de la série SA1 et la deuxième position de la 5 série SA2 dans l'exemple de la figure 5. Dans certains modes de réalisation, le groupe de permutations de chaque série d'ensemble d'accès est fixé pour une clé secrète donnée et seule la position de l'ensemble réel d'opérations d'accès varie entre les séries. Chaque fois que la 10 clé change, un nouveau groupe de permutations est par exemple sélectionné. Le message MESSAGE' résultant de chaque exécution de l'algorithme cryptographique est par exemple émis à la suite de chaque exécution de l'algorithme cryptographique et ces messages 15 sont par exemple désignés par M(P1) à M(P6) dans le cas des exécutions fictives F(P1) à F(P6) et M(R1) et M(R2) dans le cas des exécutions réelles R1 et R2. Pendant chaque série d'exécutions, tous les messages sont par exemple stockés dans le registre de sortie 408 et le signal de commande CTRL est par 20 exemple utilisé pour ne sélectionner que les messages réels en provenance du registre de sortie 408 pour fournir le résultat de l'algorithme cryptographique. La figure 6A illustre le circuit cryptographique 100 de la figure 1 plus en détail pour une série de m ensembles 25 d'opérations de substitution dont chacune correspond à une seule opération de substitution accédant à plusieurs tables de substitution. L'exemple de la figure 6A est à nouveau basé sur l'algorithme DES et implique le même circuit 400 de la figure 4. Toutefois, dans le cas de la figure 6A, chaque fois que le circuit 30 de substitution 104 est appelé pour appliquer un ensemble d'opérations de substitution au sein d'une exécution donnée de la fonction de tour, une série de m ensembles d'opérations de substitution est effectuée. Le circuit de substitution 300 est illustré de nom-35 breuses fois à la figure 6A pour représenter l'ensemble d'opérations de substitution réalisées pendant chacun de la série de m B16586 17-R0-0550 14 ensembles d'opérations de substitution. L'un de ces ensembles d'opérations de substitution, représenté du côté gauche de la figure 6A, est basé sur l'absence de permutation des tables de substitution (S-BOXES P=ID) tandis que les autres ensembles 5 d'opérations de substitution sont respectivement basés sur les permutations Pl à P(m-1). L'ordre des ensembles d'opérations de substitution réel et fictifs est choisi aléatoirement pour chaque série d'opérations de substitution à partir du signal de commande généré aléatoirement CTRL. 10 La figure 6B illustre le circuit de substitution 300 plus en détail selon un exemple de réalisation. Le circuit 300 de la figure 6B est par exemple semblable à celui de la figure 3A et de mêmes éléments sont désignés par de mêmes références et ne seront pas décrits à nouveau en détail. L'exemple de la figure 6A 15 est basé sur les huit tables de substitution Si à S8 de la norme DES. Le circuit de permutation de tables de substitution 304 génère par exemple un bit d'occupation (BB) pour indiquer à un système hôte les périodes pendant lesquelles les tables de substitution sont occupées. En outre, dans l'exemple de la figure 20 6B, les sorties des tables de substitution sont fournies à un registre de sortie (OUTPUT REG) 602, qui reçoit également par exemple le signal de commande CTRL en provenance du générateur 306. En fonctionnement, pendant chaque ensemble d'opéra- 25 tions de substitution à réaliser en utilisant les tables de substitution Si à S8, les valeurs de données d'entrée IN1 à IN8 sont chargées dans le registre d'entrée 302 et la sélection de la valeur d'entrée à fournir pour chaque table de substitution pendant chacun des m ensembles d'opérations d'accès en table de 30 substitution de la série se fait à partir du signal de commande CTRL. Par exemple, dans certains modes de réalisation, le signal de commande CTRL comprend des valeurs aléatoires PERM, RAC et NFC. 35 La valeur RAC comprend par exemple une valeur sur r bits indiquant la position des ensembles réels d'opérations de 516586 17-R0-0550 15 substitution parmi les m-1 ensembles factices d'opérations de substitution. Par exemple, 2r est égal à m. Dans un exemple, m est égal à 4, et r est égal à 2, une valeur RAC de "00" indiquant le premier des quatre ensembles d'opérations de substitution, et 5 une valeur de RAC de "11" indiquant le quatrième des quatre ensembles d'opérations de substitution. Les permutations sont par exemple choisies aléatoirement à partir de la valeur aléatoire PERM fournie par le générateur 306. Dans certains modes de réalisation, les permutations sont 10 choisies aléatoirement pour chacun des m-1 ensembles factices d'opérations d'accès de chaque série. Dans des variations de réalisation, pour une valeur de clé k donnée, les permutations particulières appliquées pendant chacun des m-1 ensembles d'opérations d'accès factices sont fixées jusqu'au changement de 15 clé. Le nombre de permutations possibles des huit tables de substitution Si à S8 dans l'exemple de la figure 6B est égal à la factorielle de 8, également exprimée sous la forme 8!, qui est égale à 40 320. En outre, chacun des m-1 ensembles d'opérations 20 de substitution factices d'un ensemble donné d'opérations de substitution utilise une permutation différente. En conséquence, pour une série donnée d'ensembles d'opérations de substitution, le circuit de permutation de tables de substitution 304 choisit par exemple à la fois les permutations à appliquer et l'ordre dans 25 lequel les permutations doivent être appliquées. Dans certains modes de réalisation, le circuit de permutation 304 est capable d'appliquer un groupe limité de permutations dans un nombre limité d'ordres différents pour les m-1 ensembles d'opérations de substitution factices et la valeur de 30 PERM est utilisée pour choisir aléatoirement à la fois les permutations et l'ordre des permutations. Un exemple de sélection de permutations à partir de la valeur sur 3 bits de PERM, sur une valeur de m égale à 4 et à partir de huit permutations disponibles Pl à P8, est fourni dans le tableau suivant pour les m-1 ensembles 35 d'opérations de substitution factices : Valeur de PERM Permutations et ordre choisis B16586 17-R0-0550 16 "000" Pl, P2, P3 "001" P4, 25, 26, "010" 27, 28, P2 "011" P4, P6, P8 "100" P3, 26, Pl "101" P5, P7, P2 "110" P8, P5, Pl "111" P7, 24, P6 En outre, la valeur du RAC est utilisée pour sélectionner la position de l'ensemble réel d'opérations de substitution par rapport aux m-1 ensembles factices d'opérations de substitution. Ainsi, si PERM est égal à "000" et RAC est égal à 5 "11", les m ensembles de substitutions sont par exemple réalisés de la façon suivante à partir des tables ci-dessus : Pl, 22, 23, RA, où RA correspond à l'ensemble réel d'opérations d'accès en table de substitution. La valeur NFC indique par exemple le nombre m-1 10 d'ensembles factices d'opérations de substitution de chaque série. Dans certains modes de réalisation, cette valeur peut être fixée pour une clé donnée, tandis que dans d'autres modes de réalisation, cette valeur est générée aléatoirement pour chaque série d'ensembles d'opérations de substitution. 15 Par exemple, dans un mode de réalisation, la valeur NFC est une valeur sur 2 bits et la valeur RAC est une valeur sur 3 bits. Le nombre m-1 d'accès factices en table de substitution dans chaque série d'accès en table de substitution est par exemple égal a: 20 Ainsi, la valeur de NFC étant égale à 0, 1, 2, ou 3, le nombre m- 1 d'accès en table de substitution peut par exemple être 0, 1, 3 ou 7. En outre, la valeur RAC est par exemple utilisée pour déterminer la position de l'accès réel en réalisant une opération 25 de ET logique entre la valeur binaire sur 3 bits RAC et une valeur binaire sur 3 bits représentant le nombre m-1. En générant la valeur de NFC pour chaque série d'accès à la table de substitution, le temps de traitement de chaque accès 516586 17-R0-0550 17 en table de substitution sera variable. Ainsi, dans la mesure où la durée de chaque accès en table de substitution n'est plus prévisible, le bit d'occupation BB indique par exemple au système de traitement hôte les périodes temporelles pendant lesquelles la 5 table de substitution 301 est occupée. Le registre de sortie 602 stocke par exemple chacune des valeurs de sortie SI OUT à S8 OUT à partir des tables de substitution Si à S8 pendant chacun des ensembles d'opérations de substitution de chaque série. De plus, le circuit 602 sélectionne 10 par exemple l'ensemble réel de valeurs de sortie pour former les valeurs de sortie OUTPUTS à partir de la valeur RAC. Le fonctionnement du circuit de la figure 6B va à présent être décrit plus en détail en référence à la figure 7. La figure 7 est un chronogramme représentant des 15 exemples de la valeur NEC, de la valeur RAC, des opérations d'accès en table de substitution OP, et des valeurs de sortie OUTPUTS, pendant une série d'ensembles d'accès SA1 et 5A2 utilisant le circuit de la figure 6B. Pendant la série d'ensembles d'accès SA1, les valeurs 20 de NFC et RAC sont générées aléatoirement à 2 et 5, respectivement. Ainsi, à partir de l'équation ci-dessus, le nombre m-1 d'ensembles factices d'opérations en table de substitution de la série SA1 est égal à 3. Le nombre total d'ensembles d'accès en table de substitution de chaque série est égal à m et le résultat de 25 l'opération NF*RAC est par exemple une valeur sur 3 bits qui peut prendre une valeur comprise entre 0 et NF, où 0 représente le premier accès de la série et NF représente le dernier accès de la série. Ainsi, dans l'exemple de la série d'accès SA1, la position de l'opération d'accès réelle est égale à un ET logique appliqué 30 bit par bit aux valeurs "011" et "101", ce qui donne "001", correspondant au second accès de la série. Ainsi, dans l'exemple de la série d'accès SA1, l'ensemble réel d'opérations d'accès est en deuxième position et la série SA1 de m ensembles d'opérations d'accès comprend, séquentiellement : un ensemble factice 35 d'opérations d'accès utilisant une permutation aléatoire Pl ; un ensemble réel d'opérations d'accès R1 ; un ensemble factice B16586 17-R0-0550 18 d'opérations d'accès utilisant une permutation aléatoire P2 ; et un ensemble factice d'opérations d'accès utilisant une permutation aléatoire P3. Après le dernier ensemble d'opérations d'accès, les valeurs de sortie OUTPUTS deviennent égales au résultat de 5 l'ensemble réel d'opérations d'accès RAl. Pendant la série d'accès SA2, les valeurs de NFC et RAC sont générées aléatoirement à 1 et 4, respectivement. Ainsi, le nombre m-1 d'ensembles factices d'opérations en table de substitution de la série SA2 est égal à 1 et la position de 10 l'opération d'accès réelle de la série SA2 est égale à un ET logique appliqué bit par bit aux valeurs "001" et "100", ce qui donne "000", correspondant au premier accès de la série. Ainsi dans l'exemple de la série d'ensembles d'accès SA2, les m ensembles d'opérations d'accès comprennent, séquentiellement : un 15 ensemble réel d'opérations d'accès R2 ; et un ensemble factice d'opérations d'accès utilisant une permutation aléatoire P4. Après le dernier ensemble d'opérations d'accès, les valeurs de sortie OUTPUTS deviennent égales au résultat de l'ensemble réel d'opérations d'accès RA2. 20 Les exemples des figures 3A, 4A et 6A correspondent à des mises en oeuvre matérielles. Dans des variantes de réalisation, le procédé de réalisation d'un ensemble d'opérations d'accès en table de substitution décrit ici peut être mis en oeuvre sous forme logicielle, comme on le décrira plus en détail en référence aux 25 figures 8 et 9. La figure 8 illustre schématiquement un système de traitement 800 selon un exemple de réalisation de la présente invention. Le système 800 comprend par exemple un dispositif de traitement (P) 802 couplé par l'intermédiaire d'un bus 804 à une 30 mémoire 806 stockant plusieurs tables de substitution (S-BOXES). La mémoire 806 est par exemple une mémoire non volatile (NVM, Non-Volatile Memory). Le système 800 comprend également par exemple, couplés au bus 804, une mémoire volatile 808, qui est par exemple une mémoire RAM (mémoire à accès aléatoire), une interface 35 d'entrée/sortie (I/O INTERFACE) 810 et un générateur de nombre aléatoire (RNG) 812. Le dispositif de traitement 802 comprend par B16586 17-R0-0550 19 exemple un ou plusieurs noyaux de traitement commandés par des instructions stockées dans une mémoire d'instructions, par exemple, la mémoire 806 et/ou 808. La figure 9 est un organigramme illustrant des opéra-5 tions dans un procédé de réalisation d'un ensemble d'opérations d'accès en table de substitution selon un exemple de réalisation de la présente description et utilisant le système de traitement de la figure 9. Comme on l'a décrit ci-dessus, chaque ensemble d'opérations d'accès en table de substitution peut correspondre à 10 l'opération de substitution elle-même seulement, ou à l'opération de substitution réalisée pendant l'ensemble d'un algorithme cryptographique. Dans une opération 901, la valeur aléatoire CTRL est générée, par exemple, à partir de valeurs aléatoires fournies par 15 le générateur 812. Ces valeurs sont par exemple stockées dans la mémoire RAM 808. Dans une opération 902, le dispositif de traitement 802 effectue m ensembles d'accès en table de substitution. Chaque ensemble d'accès en table de substitution implique par exemple le 20 chargement de N valeurs d'entrée dans la mémoire de travail du dispositif de traitement 802, qui correspond par exemple à la mémoire 808. L'un de ces ensembles correspond à un ensemble réel basé sur des accès en table de substitution tel que défini par l'algorithme cryptographique en cours d'exécution, sans 25 permutation. Les m-1 ensembles restants d'accès en table de substitution correspondent à des ensembles d'opérations d'accès factices, dans lesquels une permutation est appliquée par le dispositif de traitement 802, à partir de la valeur CTRL, de sorte que pendant ces accès en table de substitution, chacune des N 30 valeurs d'entrée n'est pas fournie à sa table de substitution correspondante, mais à une autre table de substitution à partir d'une sélection aléatoire. L'ensemble réel d'accès est positionné aléatoirement par rapport aux ensembles factices d'accès à partir de la valeur CTRL. Chaque ensemble d'accès en table de 35 substitution est par exemple effectué en adressant une ou plusieurs mémoires non volatiles, telle que la mémoire 806, qui B16586 17-R0-0550 20 stocke par exemple une table de correspondance correspondant à chaque table de substitution. Le résultat de chaque ensemble d'accès en table de substitution est stocké en mémoire, par exemple dans la mémoire RAM 808. 5 Alors que dans le mode de réalisation matériel de la figure 6B, les accès en table de substitution de chaque ensemble sont par exemple réalisées en parallèle dans chacune des tables de substitution Si à S8, dans le cas de la mise en oeuvre logicielle de la figure 8, les accès en table de substitution de chaque 10 ensemble peuvent être effectués en parallèle si les ressources de traitement le permettent, ou peuvent être effectués en série. Dans l'opération 903, les résultats de l'ensemble réel d'accès en table de substitution sont choisis pour être utilisés dans l'algorithme cryptographique, à partir du signal CTRL. Par 15 exemple, le dispositif de traitement 802 sélectionne dans la mémoire RAM 808, à partir des valeurs aléatoires BAC et NEC du signal de commande CTRL, une adresse correspondant à l'emplacement de stockage des résultats de l'ensemble réel d'opérations de substitution. La figure 10 illustre schématiquement un 20 dispositif cryptographique 1000 selon un exemple de réalisation. Le dispositif 1000 comprend par exemple un dispositif de traitement (P) 1002 correspondant au processeur hôte du dispositif cryptographique 1000. Le dispositif de traitement 1002 est par exemple en communication avec un circuit cryptographique 25 (CRYPTO) 1004 qui correspond par exemple au circuit 300 de la figure aA, 4 ou 6A ou à certains ou tous les éléments du système de traitement 800 de la figure 8. Le dispositif cryptographique 1000 comprend également par exemple une mémoire (MEM) 1006 et une interface d'entrée/sortie (I/O) 1008 en communication avec le 30 dispositif de traitement 1002. Le dispositif 1000 correspond par exemple à une carte de circuit intégré (souvent désignée sous le nom de "carte à puce"), à un dispositif électronique portable ou à tout autre type de dispositif électronique dans lequel doit être réalisée une 35 fonction cryptographique. Dans certains modes de réalisation, B16586 17-R0-0550 21 l'interface d'entrée/sortie 1008 peut correspondre à une interface NEC (Near-Field Communication). Un avantage des modes de réalisation décrits ici est que la découverte d'une clé secrète manipulée pendant les ensembles 5 d'opérations de substitution d'un algorithme cryptographique au moyen de procédés par canaux auxiliaires peut être rendue considérablement plus difficile. En effet, en réalisant des ensembles factices d'accès en table de substitution à partir de permutations des tables de substitution, ceci crée une dissymétrie 10 des fuites pendant chaque ensemble réel d'accès en table de substitution, et il devient très difficile de déterminer une corrélation significative entre les signaux de canaux auxiliaires pendant les accès en table de substitution et la valeur de la clé secrète. 15 En outre, l'utilisation d'un même groupe de permutations pour une clé secrète donnée d'informations trompeuses quant canaux auxiliaires. En effet, peut entraîner la génération à la valeur de la clé sur les une permutation donnée répétée plusieurs fois pour une même clé peut être confondue avec les 20 accès en table de substitution authentiques à partir d'une clé fantôme différente. Avec plusieurs permutations différentes, le nombre de clés fantôme différentes qui sembleront présenter de bonnes corrélations peut être relativement élevé et sensiblement plus élevé que dans le cas de l'utilisation d'une clé fictive 25 et/ou d'un message fictif. Un avantage de la mise en oeuvre matérielle des figures 3A, 3E, 4, 6A et 6E est que le passage entre les ensembles factices et réels d'accès en table de substitution peut être réalisé relativement rapidement, d'où il résulte un délai temporel 30 relativement court pour les ensembles supplémentaires d'accès en table de substitution. On a décrit au moins un mode de réalisation à titre d'illustration, mais de nombreuses variantes et modifications apparaîtront à l'homme de l'art. Par exemple, il apparaîtra à 35 l'homme de l'art que le circuit de la figure 3E mettant en oeuvre le circuit de permutation de tables de substitution n'est qu'un 316586 17-R0-0550 22 exemple et que de nombreuses variantes de mise en oeuvre sont possibles. En outre, alors que l'on a décrit des modes de réalisation dans lesquels chaque permutation est appliquée au 5 niveau d'une seule opération de substitution, ou au niveau de l'ensemble d'un algorithme cryptographique, la permutation pourrait également être appliquée à différents niveaux. Par exemple, chaque permutation pourrait être appliquée pour une itération entière de l'algorithme de cryptage DES et une série 10 d'itérations fictives pourrait être effectuée pour chaque itération réelle à exécuter. En outre, il apparaîtra à l'homme de l'art que les diverses caractéristiques décrites en relation avec les modes de réalisation pourraient être combinées, dans des variantes de 15 réalisation, selon n'importe quelle combinaison. Par exemple, il serait possible de mettre en oeuvre le procédé d'accès en table de substitution de la présente invention au moyen d'une combinaison d'éléments REVENDICATIONS1. Procédé de mise en oeuvre, par un circuit cryptographique (300, 800), d'un ensemble d'opérations de substitution d'un algorithme cryptographique impliquant plusieurs tables de substitution, ce procédé comprenant : la réalisation, pour chaque ensemble d'opérations de substitution de l'algorithme cryptographique, d'une série d'ensembles d'opérations de substitution, dont : un ensemble est un ensemble réel d'opérations de substitution correspondant à l'ensemble d'opérations de substitution de l'algorithme cryptographique ; et un ou plusieurs autres ensembles sont des ensembles factices d'opérations de substitution, chaque ensemble factice étant basé sur une permutation différente desdites tables de substitution. 2. Procédé selon la revendication 1, dans lequel la position de l'ensemble réel d'opérations de substitution dans chaque série est choisie aléatoirement à partir d'une première valeur aléatoire (RAC). 3. Procédé selon la revendication 2, dans lequel la réalisation de chaque série d'ensembles d'opérations de substitution comprend : le chargement de N valeurs d'entrée (IN1 à INB), où N est un entier supérieur ou égal à deux ; et la fourniture, sur des ensembles consécutifs opérations 25 d'accès en table de substitution, de chacune desdites N valeurs d'entrée à une table de substitution respective parmi les N tables de substitution (Si à S8), dans lequel pendant l'ensemble réel d'opérations de substitution, chacune des N valeurs d'entrée est fournie à une table de substitution correspondante parmi lesdites 30 N tables de substitution (S1 à S8) à partir dudit algorithme cryptographique et, pendant les ensembles factices d'opérations de substitution, chacune des N valeurs d'entrée est fournie à une table de substitution différente de sa table de substitution correspondante, et dans lequel la position dans laquelle B16586 17-R0-0550 24 l'ensemble réel d'opérations de substitution est réalisé par rapport aux ensembles factices d'opérations de substitution est choisie à partir de la première valeur aléatoire (RAC). 4. Procédé selon la revendication 2 ou 3, dans lequel 5 chaque ensemble d'opérations de substitution comprend l'adressage d'emplacements de mémoire d'une ou plusieurs mémoires (302, 606) à partir de valeurs de données d'entrée de table de substitution (S1 IN à SN IN) et la lecture de valeurs auxdits emplacements de mémoire pour fournir des valeurs de données de 10 sortie de table de substitution (Sl_OUT à SN_OUT). 5. Procédé selon la revendication 4, comprenant en outre, pour chaque série d'ensemble d'opérations de substitution, le stockage des valeurs de sortie de table de substitution (Sl_OUT à S8 OUT) de chaque opération de substitution et la sélection des 15 valeurs de sortie correspondant à l'ensemble réel d'opérations de substitution à partir de la première valeur aléatoire (RAC). 6. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel chaque ensemble d'opérations de substitution de ladite série comprend l'exécution de l'algorithme cryptographique 20 à partir d'un même message d'entrée et d'une même clé secrète. 7. Procédé selon la revendication 6, dans lequel : chaque série d'ensembles d'opérations de substitution comprend m-1 ensembles factices d'opérations de substitution, m étant un entier fixé à une valeur supérieure ou égale à 2 ou choisie aléatoirement ; et pour une clé donnée, un même groupe de m-1 permutations est appliqué pendant les m-1 opérations de substitution factices correspondantes. 8. Procédé selon la revendication 7, dans lequel chaque 30 groupe de m-1 permutations pour une clé données est sélectionné à partir d'une seconde valeur aléatoire (PERM). 9. Procédé selon l'une quelconque des revendications 1 à 8, dans lequel le nombre (m-1) d'ensembles factices d'opérations de substitution effectués dans chaque série est choisi 35 aléatoirement. B16586 17-R0-0550 25 10. Moyen de stockage non transitoire stockant un programme informatique configuré, lorsqu'il est exécuté par un dispositif de traitement (602), pour mettre en oeuvre un procédé selon l'une quelconque des revendications 1 à 9. 5 11. Circuit cryptographique comprenant : un circuit de mémoire (302, 606) stockant plusieurs tables de substitution (S-BOXES) pour mettre en oeuvre des ensembles d'opération de substitution d'un algorithme cryptographique ; et 10 un ou plusieurs circuits (304, 602) configurés pour réaliser, pour chaque ensemble d'opérations de substitution de l'algorithme cryptographique, une série d'ensembles d'opérations de substitution utilisant lesdites tables de substitution (S-BOXES), chaque série d'ensembles d'opérations de substitution 15 comprenant : un ensemble réel d'opérations de substitution correspondant à l'ensemble d'opérations de substitution de l'algorithme cryptographique ; et un ou plusieurs ensembles factices d'opérations de 20 substitution, dans lequel les un ou plusieurs circuits (302, 602) sont configurés pour appliquer une permutation différente des tables de substitution pendant chacun des ensembles factices d'opérations de substitution. 12. Circuit cryptographique selon la revendication 11, 25 comprenant en outre un générateur de nombre aléatoire (306, 812) configuré pour générer, pour chacune desdites séries d'en-sembles d'opérations de substitution, une première valeur aléatoire (RAC), dans lequel les un ou plusieurs circuits (304, 602) sont configurés pour sélectionner aléatoirement la position de l'ensemble réel d'opérations de substitution parmi les un ou plusieurs ensembles factices d'opérations de substitution à partir de la première valeur aléatoire (RAC). 13.Circuit cryptographique selon la revendication 12, dans lequel le générateur de nombre aléatoire (306, 812) est par 35 ailleurs configuré pour générer une seconde valeur aléatoire (PERM), dans lequel les un ou plusieurs circuits sont configurés B16586 17-R0-0550 26 pour sélectionner aléatoirement les permutations desdites tables de substitution à partir de la seconde valeur aléatoire (PERM). 14.Circuit cryptographique selon la revendication 13, comprenant en outre : 5 un registre d'entrée (302) configuré pour stocker N valeurs d'entrée (IN1 à IN8) ; et un ou plusieurs multiplexeurs (ei à MPN) configurés pour sélectionner, pour chaque ensemble d'opérations de substitution de chaque série, la valeur d'entrée parmi les N valeurs 10 d'entrée à fournir à chaque table de substitution. 15.Circuit cryptographique selon la revendication 14, comprenant en outre un circuit de sélection (310) configuré pour générer un signal de sélection (SEL) pour commander les un ou plusieurs multiplexeurs (MP1 à MP8) à partir desdites première et 15 seconde valeurs aléatoires (PERM, RAC). 16. Circuit cryptographique selon l'une quelconque des revendications 11 à 13, dans lequel les un ou plusieurs circuits (304, 602) comprennent un ou plusieurs dispositifs de traitement (602) commandés par des instructions stockées dans une mémoire 20 d'instructions (606, 608) pour charger N valeurs d'entrée dans une mémoire (808), N étant égal au nombre de tables de substitution, et pour choisir, pour chaque ensemble d'opérations de substitution de chaque série, soit de mettre en oeuvre l'ensemble réel d'opérations de substitution en fournissant chaque 25 valeur d'entrée à la table de substitution correspondante à partir dudit algorithme cryptographique, soit de mettre en ouvre un ensemble factice d'opérations de substitution en fournissant chaque valeur d'entrée à l'une desdites tables de substitution autre que la table correspondante.