FR 3078464 A1 20190830 FR 1851645 A 20180226 B16877 17-R0-0644 1 PROCEDE ET CIRCUIT DE MISE EN OEUVRE D'UNE 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 utilisant des procédés par canaux auxiliaires du fait de la visibilité relative des opérations de substitution. B16877 17-R0-0644 2 Certaines solutions assurant un degré de protection limité contre l'utilisation de procédés par canaux auxiliaires 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 antérieur. Selon un aspect, la présente invention prévoit un pro- cédé de mise en oeuvre, par un circuit cryptographique, d'une opération de substitution d'un algorithme cryptographique à partir d'une table de substitution brouillée, ce procédé comprenant: la réalisation, pour chaque ensemble d'une ou plusieurs opérations de substitution de l'algorithme cryptographique, d'une série d'ensembles d'une ou plusieurs opérations de substitution, dont : l'un est un ensemble réel d'une ou plusieurs opérations de substitution défini par l'algorithme cryptographique, l'ensemble réel d'une ou plusieurs opérations de substitution étant basé sur des données d'entrée modifiées par une clé de brouillage réelle ; et un ou plusieurs autres sont des ensembles factices d'une ou plusieurs opérations de substitution, chaque ensemble factice d'une ou plusieurs opérations de substitution étant basé sur une donnée d'entrée modifiée par une fausse clé de brouillage différente. Selon un mode de réalisation, la position de l'ensemble réel d'une ou plusieurs 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, le procédé comprend en outre, pour chaque série d'ensembles d'une ou plusieurs opérations de substitution, le stockage d'une valeur de sortie et la sélection de la valeur de sortie correspondant à l'ensemble réel d'une ou plusieurs opérations de substitution à partir de la valeur aléatoire. Selon un mode de réalisation, chaque ensemble d'une ou plusieurs opérations de substitution comprend l'adressage d'un B16877 17-R0-0644 3 emplacement de mémoire d'une mémoire à partir de ladite donnée d'entrée modifiée et la lecture d'une valeur de donnée audit emplacement de mémoire pour fournir une valeur de donnée de sortie. 5 Selon un mode de réalisation, l'algorithme cryptogra- phique est basé sur une clé secrète ; chaque série d'ensembles d'une ou plusieurs opérations de substitution comprend m-1 ensembles factices d'une ou plusieurs opérations de substitution, m étant un entier fixé à une valeur supérieure ou égale à 2 ou 10 choisi aléatoirement ; et pour une clé donnée, un même groupe de fausses clés de brouillage est appliqué au cours des m-1 ensembles factices d'une ou plusieurs opérations de substitution. Selon un mode de réalisation, la réalisation de chaque ensemble d'une ou plusieurs opérations de substitution de la série 15 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, les différentes clés de brouillage appliquées au cours de chacun des ensembles factices d'une ou plusieurs opérations de substitution sont choisies 20 aléatoirement. Selon un mode de réalisation, les différentes clés de brouillage appliquées au cours de chacun des ensembles factices d'une ou plusieurs opérations de substitution sont produites par un registre à décalage recevant en entrée la clé de brouillage 25 réelle. Selon un mode de réalisation, le nombre d'ensembles factices d'une ou plusieurs opérations de substitution réalisés dans chaque série est choisi aléatoirement. Selon un autre aspect, la présente invention prévoit un 30 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. Selon un autre aspect, la présente invention prévoit un circuit cryptographique comprenant : un circuit de mémoire 35 stockant une table de substitution brouillée pour mettre en oeuvre des ensembles d'opérations de substitution d'un algorithme B16877 17-R0-0644 4 cryptographique ; et un ou plusieurs circuits configurés pour réaliser, pour chaque ensemble d'une ou plusieurs opérations de substitution de l'algorithme cryptographique, une série d'ensembles d'une ou plusieurs opérations de substitution 5 utilisant la table de substitution brouillée, chaque série d'ensembles d'une ou plusieurs opérations de substitution comprenant : un ensemble réel d'une ou plusieurs opérations de substitution défini par l'algorithme cryptographique, l'ensemble réel d'une ou plusieurs opérations de substitution étant basé sur 10 une donnée d'entrée modifiée par une clé de brouillage réelle ; et un ou plusieurs ensembles factices d'une ou plusieurs opérations de substitution, chaque ensemble factice d'une ou plusieurs opérations de substitution étant basé sur une donnée d'entrée modifiée par une fausse clé de brouillage différente. 15 Selon un mode de réalisation, le dispositif cryptogra- phique comprend en outre un générateur de nombre aléatoire configuré pour produire, pour chacune desdites série d'ensembles d'une ou plusieurs opérations de substitution, une valeur aléatoire, les un ou plusieurs circuits étant configurés pour 20 sélectionner aléatoirement la position de l'opération de substitution réelle parmi les une ou plusieurs opérations de substitution factices à partir de la valeur aléatoire. Selon un mode de réalisation, le dispositif cryptographique comprend en outre : un registre d'entrée configuré pour 25 stocker une valeur d'entrée ; un brouilleur configuré pour modifier la valeur d'entrée à partir d'une clé de brouillage ; et un générateur de clé configuré pour produire la clé de brouillage pour chaque opération de substitution de la série à partir de la valeur aléatoire et de la clé de brouillage réelle. 30 Selon un mode de réalisation, le générateur de clé comprend un registre à décalage configuré pour produire la clé de brouillage en décalant la clé de brouillage réelle. Selon un mode de réalisation, les un ou plusieurs circuits comprennent un ou plusieurs dispositifs de traitement 35 commandés par des instructions stockées dans une mémoire d'instructions pour choisir, pour chaque ensemble d'une ou plusieurs B16877 17-R0-0644 5 opération de substitution de chaque série, soit de mettre en oeuvre l'ensemble réel d'une ou plusieurs opérations de substitution en modifiant la valeur d'entrée en utilisant la clé de brouillage réelle, soit de mettre en oeuvre un ensemble factice d'une ou 5 plusieurs opérations de substitution en modifiant la valeur d'entrée en utilisant l'une des différentes fausses clés de brouillage. BREVE DESCRIPTION DES FIGURES Ces caractéristiques et leurs avantages, ainsi que 10 d'autres, 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 schématiquement un circuit d'exécution d'un algorithme cryptographique faisant intervenir 15 des opérations de substitution selon un exemple de mode de réalisation ; la figure 2 illustre schématiquement une table de substitution selon un exemple de mode de réalisation ; la figure 3A illustre schématiquement un circuit de 20 substitution selon un exemple de mode de réalisation de la présente invention ; la figure 3B illustre schématiquement un générateur de clé de brouillage du circuit de substitution de la figure 3A plus en détail selon un exemple de mode de réalisation de la présente 25 invention ; la figure 4 illustre schématiquement un circuit d'exécution d'une série d'opérations cryptographiques selon un exemple de mode réalisation de la présente invention ; la figure 5 est un chronogramme illustrant un exemple 30 de signaux dans le circuit de la figure 4 ; la figure 6A illustre schématiquement un circuit d'exécution d'une série d'opérations de substitution selon un autre exemple de mode de réalisation de la présente invention ; la figure 6B illustre schématiquement un circuit de 35 substitution de la figure 6A plus en détail selon un example de mode de réalisation de la présente invention ; B16877 17-R0-0644 6 la figure 7 est un chronogramme illustrant un exemple de signaux dans le circuit de la figure 63 ; la figure 8 illustre schématiquement un système de traitement pour accéder à une table de substitution selon un 5 exemple de mode de réalisation de la présente description ; la figure 9 est un organigramme représentant des opérations d'un procédé d'accès à une table de substitution selon un exemple de mode de réalisation de la présente invention ; et La figure 10 illustre schématiquement un dispositif 10 cryptographique selon un exemple de mode de réalisation de la présente invention. DESCRIPTION DETAILLEE Dans la présente description, on utilise le terme "connecté" pour désigner une connexion électrique directe entre 15 éléments de circuit, tandis que l'on utilise le terme "relié" ou "couplé" pour désigner une connexion électrique entre éléments de circuit qui peut être directe ou par l'intermédiaire d'un ou plusieurs éléments tels que des multiplexeurs, des tampons, etc. En outre, dans la présente description, on considérera 20 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 valeur secrète, telle qu'une clé secrète, qui doit être cachée du monde extérieur au dispositif. Des exemples d'algorithmes 25 cryptographiques comprennent les algorithmes de cryptage ou de décryptage de texte non-crypté/texte crypté à partir d'une clé secrète, pour produire un code d'authentification de message (MAC) 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 ; 30 "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 produite à partir d'une 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 35 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 B16877 17-R0-0644 7 correspondance (LUT, lookup table) stockée dans une mémoire, et les valeurs définies dans la table de correspondance peuvent être fixées ou peuvent être mises à jour de façon dynamique ; "ensemble d'une ou plusieurs opérations de substitution" 5 - ceci peut correspondre à un seul accès en table de substitution ou à plusieurs opérations de substitution réalisées au moyen d'une ou plusieurs tables de substitution telles que les opérations de substitution réalisées pendant une, quelques ou toutes les itérations d'un algorithme cryptographique. Par exemple, un 10 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, ce qui implique de multiples itérations; "ensemble réel d'une ou plusieurs opérations de substitution" - une ou plusieurs opérations de substitution définies 15 par l'algorithme cryptographique en cours d'exécution, qui sont par exemple des opérations utiles en ce que le résultat des substitutions contribuera au calcul des données de sortie utiles de l'algorithme cryptographique; "table de substitution brouillée" - une table de subs20 titution sous forme de table de correspondance dans laquelle les entrées ont été permutées pour rendre plus difficile de détecter quelle substitution en table de substitution est effectuée sur chaque opération d'accès en table de substitution. Par exemple, la table de substitution est brouillée de manière à ce que pour 25 pouvoir réaliser une opération de substitution donnée définie par l'algorithme cryptographique, la donnée d'entrée doit d'abord être modifiée à partir d'une clé de brouillage, et la donnée de sortie correcte ne peut être lue dans la table de substitution brouillée qu'en réalisant l'accès à partir de cette donnée d'entrée 30 modifiée. Par exemple, dans certains modes de réalisation, la clé de brouillage présente la même longueur que la donnée d'entrée et la donnée d'entrée est modifiée par une opération de OU exclusif appliquée bit par bit entre la clé de brouillage et la donnée d'entrée. A titre de variante, d'autres fonctions pourraient être 35 utilisées pour modifier la donnée d'entrée à partir de la clé de brouillage ; B16877 17-R0-0644 8 "ensemble factice d'une ou plusieurs opérations de substitution" - des opérations de substitution fictives ou fausses réalisées de la même façon que des opérations de substitution réelles, mais qui sont superflues dans la mesure où elles sont 5 réalisées en plus des opérations de substitution réelles définies par l'algorithme cryptographique. Bien que le résultat de chaque ensemble d'une ou plusieurs opérations de substitution factices puisse être stocké en mémoire, ceci n'est pas utile dans la mesure où ce résultat est sans objet en lien avec l'algorithme 10 cryptographique et peut être mis au rebut. Comme on l'a décrit ci-dessus, les opérations de substitution factices sont par exemple réalisées, lors de l'adressage d'une mémoire stockant une table de substitution brouillée, à partir d'une donnée d'entrée qui a été incorrectement modifiée au moyen d'une clé de brouillage 15 factice. La figure 1 illustre schématiquement un circuit cryptographique 100 selon un mode de réalisation. Le circuit 100 reçoit par exemple en entrée un message (MESSAGE) à traiter et une clé secrète (KEY) de l'opération cryptographique, que l'on 20 appellera également ici clé cryptographique. Par exemple, le message correspond à un texte en clair à crypter par le circuit 100 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 produisant une signature numérique, telle 25 qu'un MAC (code d'authentification de message, message authentication code) à partir de la clé. 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 30 manière à produire un message de sortie (MESSAGE') correspondant à un texte crypté, à un texte en clair et/ou à une signature numérique. Dans l'exemple de la figure 1, l'opération 104 correspond à une opération de substitution (SUBSTITUTION) faisant intervenir une ou plusieurs tables de substitution. 35 La figure 2 illustre schématiquement un exemple d'une table de substitution utilisée au cours de l'algorithme DES (Data B16877 17-R0-0644 9 Encryption Standard). De façon connue de l'homme de l'art, l'algorithme de cryptage DES fait intervenir 8 tables de substitution Si à S8 dont chacune est unique. La figure 2 illustre la table de substitution DES Si. 5 Un accès à une table de substitution selon l'algorithme 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 10 b0 de la valeur d'entrée sont par exemple utilisés pour choisir 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. 15 Bien entendu, la figure 2 n'illustre qu'un exemple de table de substitution et les principes décrits dans la présente description pourraient être appliquée à tout type de table de substitution dans laquelle des données d'entrée sont substituées pour produire des données de sortie à partir d'une table de valeurs 20 mémorisées. La figure 3A illustre schématiquement un circuit de substitution 300 destiné à mettre en oeuvre des opérations d'accès à une table de substitution selon un exemple de réalisation de la présente description. Le circuit 300 fait par exemple partie du 25 circuit 100 de la figure 1. Le circuit 300 comprend une table de substitution brouillée (SCRAMBLED S-BOX) 302 recevant des données d'entrée SB IN et délivrant des données de sortie SB OUT. La table de substitution brouillée 302 est par exemple mise en oeuvre par une 30 mémoire non volatile, dans laquelle la donnée d'entrée SB_IN fournit une entrée d'adresse à la mémoire et la donnée de sortie SB OUT correspond à la valeur de donnée mémorisée à l'emplacement adressé de la mémoire. La table de substitution brouillée 302 correspond par 35 exemple à la table de substitution Si de la figure 2, dans laquelle une permutation a été appliquée aux emplacements de mémoire à 316877 17-R0-0644 10 partir d'une clé de brouillage. A titre de variante, la table de substitution brouillée 302 pourrait correspondre à une version brouillée de toute autre table de substitution de la norme de cryptage DES ou d'une autre norme de cryptage, telle qu'une table 5 de substitution utilisée dans les normes de cryptage TDES (Triple DES), AES (Advanced Encryption Standard), or SM4 (précédemment connue sous le nom de SMS4). Le circuit 300 comprend en outre un registre d'entrée (INPUT REG) 304 recevant une valeur d'entrée INPUT correspondant 10 à une opération de substitution à réaliser en relation avec un algorithme cryptographique. Par exemple, la valeur d'entrée INPUT est le résultat d'une opération réalisée sur la donnée de message et la donnée de clé de la Figure 1. Le circuit 300 comprend en outre un brouilleur (SCRAM15 BLER) 306 qui reçoit la valeur d'entrée en provenance du registre d'entrée 304 et produit une donnée d'entrée modifiée à fournir en tant qu'entrée SB_IN à la table de substitution brouillée 302. En particuliers, le brouilleur 306 modifie la donnée d'entrée à partir d'une clé S_KEY' fournie par un générateur de clé (KEY GEN) 20 308. Le générateur de clé 308 reçoit par exemple la clé de brouillage réelle S KEY et une valeur aléatoire RAC produite par un générateur de nombre aléatoire (RNG) 310. Le générateur de nombre aléatoire 310 est par exemple un générateur de nombre pseudo-aléatoire ou un générateur de nombre réellement aléatoire. 25 Dans certains modes de réalisation, le générateur de clé 308 reçoit également des valeurs aléatoires de clé RKEY en provenance du générateur de nombre aléatoire 310. En fonctionnement, chaque ensemble d'une ou plusieurs opérations de substitution défini par l'algorithme cryptogra30 phique est mis en oeuvre, par le circuit de la figure 3A, par une série de m ensembles d'une ou plusieurs 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'une ou plusieurs opérations d'accès en table de substitution correspond à l'ensemble réel 35 d'opérations de substitution de l'algorithme cryptographique et utilisé la bonne clé de brouillage S KEY. Les autres m-1 ensembles B16877 17-R0-0644 11 d'une ou plusieurs opérations d'accès de chaque série correspondent à des ensembles factices d'opérations de substitution impliquant de fausses clés de brouillage S KEY', qui sont par exemple chacune différente les unes des autres pour une 5 série donnée d'accès en table de substitution. Par exemple, pour chaque opération de substitution à réaliser au moyen de la table de substitution 302, la valeur de donnée d'entrée INPUT est chargée dans le registre d'entrée 302 et traitée m fois par le brouilleur 306 à partir de m valeurs 10 différentes de la clé de brouillage S KEY' pour produire m valeurs d'entrée en table de substitution modifiées différentes SB IN fournies à la table de substitution 302. Le générateur de clé 308 produit les clés S KEY' à partir de la valeur aléatoire RAC produite par le générateur de nombre aléatoire 310 et dans 15 certains modes de réalisation à partir des valeurs de clé aléatoires RKEY. Par exemple, la valeur RAC comprend une valeur sur r bits indiquant la position de la clé réelle S_KEY parmi les m-1 fausses clés, et indique ainsi la position de l'ensemble réel 20 d'une ou plusieurs opérations de substitution parmi les m-1 ensembles factices d'une ou plusieurs opérations de substitution. Par example, 2r est égal à m. Dans un exemple, m est égal à 4, et r est égal à 2, une valeur RAC de "00" indiquant la première des quatre opérations de substitution, et une valeur de RAC de "11" 25 indiquant la quatrième des quatre opérations de substitution. Dans certains modes de réalisation, chacune des m-1 fausses clés produite pour une série donnée d'ensembles d'un ou plusieurs accès en table de substitution est dérivée de la clé réelle S KEY. Par exemple, chaque fausse clé résulte de 30 l'application d'une fonction F à la clé réelle S_KEY. Dans un mode de réalisation, la fonction F est une opération de décalage. Par exemple, la clé réelle et les trois fausses clés pourraient être comme suit : VALEUR DE CLE Fonction F RK [01001110] Aucune B16877 17-R0-0644 12 FK1 [10011100] Décalage la gauche de 1 vers FK2 [00111001] Décalage la gauche de 2 vers FK3 [01110010] Décalage la gauche de 3 vers où RK est la clé réelle S KEY et FK1, FK2 et FK3 sont les fausses clés dérivées de la clé réelle. A titre de variante, les fausses clés pourraient être produites à partir d'une autre fonction F appliquée à la clé 5 réelle S KEY ou à partir des valeurs de clé aléatoires RKEY fournies par le générateur de nombre aléatoire 310. Dans certains modes de réalisation, pour une valeur donnée k de la clé cryptographique utilisée pendant l'algorithme cryptographique, les fausses clés de brouillage appliquées pendant 10 chacun des m-1 ensembles d'opérations d'accès factices sont fixées jusqu'au changement de clé cryptographique. La figure 3B illustre schématiquement le générateur de clé 308 de la figure 3A plus en détail selon un exemple de réalisation dans lequel les fausses clés de brouillage sont 15 produites en décalant la clé de brouillage réelle S_KEY. Le générateur 308 comprend par exemple un registre de décalage (SHIFT REGISTER) 312 recevant la clé de brouillage réelle S KEY et un signal de sélection de décalage SHIFT indiquant un décalage à appliquer à la clé S_KEY. Par exemple, le signal SHIFT 20 indique qu'aucun décalage n'est à appliquer quand l'ensemble réel d'une ou plusieurs opérations d'accès doit avoir lieu et applique un décalage vers la gauche d'un nombre différent de positions de bit pour chacune des fausses clés de brouillage à appliquer pendant les ensembles factices d'opérations d'accès. 25 Le générateur de clé 308 comprend par exemple un circuit de commande (CTRL) 504 produisant le signal de sélection de décalage SHIFT à partir de la valeur RAC fournie par le générateur de nombre aléatoire 310. En particulier, le circuit de commande 504 choisit par exemple la position de la clé de brouillage réelle 30 pendant chaque série d'ensembles d'accès en table de substitution 316877 17-R0-0644 13 à partir de la valeur RAC. Le circuit de commande 504 reçoit par exemple un signal d'horloge CLK indiquant la période de chaque opération d'accès en table de substitution de manière à pouvoir mettre à jour le signal de sélection de décalage SHIFT à l'instant 5 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 réalisées pendant l'exécution d'un algorithme cryptographique à 10 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 de l'algorithme DES à partir d'un message (MESSAGE) et d'une clé 15 (KEY) donnés. Le circuit cryptographique 100 comprend par exemple 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 20 clé d'itération, l'opération de substitution (S-BOXES) 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ésultant de chaque exécution de l'algorithme DES est fourni à un registre de sortie (OP REG) 408, avec la valeur aléatoire BAC. 25 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 à gauche de la figure 4 est basée sur la clé de brouillage réelle (RK) tandis 30 que les autres exécutions sont respectivement basées sur différentes fausses clés de brouillage FK1 à FK(m-1). L'ordre des exécutions réelle et fictives du DES est choisi aléatoirement pour chaque série d'exécutions à partir de la valeur produite aléatoirement BAC. 35 La figure 5 est un chronogramme représentant un exemple des entrées MESSAGE et KEY du circuit 100 de la figure 4, des 516877 17-R0-0644 14 opérations (CRYPTO OP) effectuées par le circuit 100 et du message de sortie (MESSAGE') produit au cours de chaque exécution. Une première série SA1 d'exécutions du DES est réalisée à partir d'un message d'entrée M1 et d'une clé cryptographique kl 5 et une deuxième série SA2 d'exécutions de DES est réalisée à partir d'un message d'entrée M2 et d'une clé cryptographique 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, dans des variantes de réalisation, m puisse correspondre à tout entier supérieur ou égal 10 à 2. La série SA1 comprend par exemple trois fausses exécutions de DES F(FK1), F(FK2) et F(FK3) respectivement à partir de fausses clés de brouillage FK1, FK2 et FK3, et une exécution réelle de DES F(RK) à partir de la clé de brouillage réelle RK. La série SA2 comprend par exemple trois fausses exécutions de DES F(FK4), 15 F(FK5) et F(FK6) respectivement à partir de fausses clés de brouillage FK4, FK5 et FK6, et une exécution réelle de DES F(RK) à partir de la clé de brouillage réelle RK. 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 20 troisième position de la série SA1 et la deuxième position de la série SA2 dans l'exemple de la figure 5. Dans certains modes de réalisation, le groupe de fausses clés de brouillage de chaque série d'ensemble d'accès est fixé pour une clé cryptographique donnée et seule la position de 25 l'ensemble réel d'opérations d'accès varie entre les séries. Chaque fois que la clé cryptographique change, un nouveau groupe de fausses clés de brouillage 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 30 chaque exécution de l'algorithme cryptographique et ces message sont par exemple désignés par M(FK1) à M(FK6) dans le cas des exécutions fictives F(FK1) à F(FK6) et par Ml(RK) et M2(RK) dans le cas des exécutions réelles. Pendant chaque série d'exécutions, tous les messages sont par exemple stockés dans le registre de 35 sortie 408 et la valeur aléatoire RAC est par exemple utilisée pour ne sélectionner que les messages réels en provenance du 316877 17-R0-0644 15 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 opérations de 5 substitution réalisées à la place d'une seule opération de substitution. L'exemple de la figure EA 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 EA, chaque fois que le circuit de substitution 104 est appelé pour appliquer une opération de 10 substitution au sein d'une exécution donnée de la fonction d'itération, une série de m opérations de substitution est effectuée. Le circuit de substitution (S-BOXES) 300 est illustré de nombreuses fois à la figure 6A pour représenter l'opération de 15 substitution réalisées pendant chacune de la série de m opérations de substitution. L'une de ces opérations de substitution représentée à gauche de la figure aA est l'opération de substitution réelle basée sur la clé de brouillage réelle (RK) tandis que les autres opérations de substitution sont respecti- 20 vement basées sur de fausses clés de brouillage FK1 à FK(m-1). L'ordre des opérations de substitution réelle et fictives est choisi aléatoirement pour chaque série d'opérations de substitution à partir de la valeur produite aléatoirement RAC. La figure 6B illustre le circuit de substitution 300 de 25 la figure 3A plus en détail selon un example de réalisation. Le circuit 300 de la figure 6E 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. A l'exemple de la figure 6B, le nombre m-1 de fausses 30 opérations de substitution est par exemple variable et le générateur 308 produit par exemple, en plus de la valeur RAC, une valeur NFC indiquant le nombre d'opérations de substitution fausses ou factices à appliquer à la série courante d'opérations de substitution. Le générateur de clé 308 produit par exemple un 35 bit d'occupation (BB) pour indiquer à un système hôte les périodes pendant lesquelles la table de substitution est occupée. B16877 17-R0-0644 16 En outre, dans l'exemple de la figure 63, les sorties de la table de substitution brouillée 302 sont fournies à un registre de sortie (OUTPUT REG) 602, qui reçoit également par exemple les valeurs aléatoires BAC et NFC en provenance du 5 générateur de nombre aléatoire 310. Dans certains modes de réalisation, la valeur NFC peut être fixée pour une clé donnée, tandis que dans d'autres modes de réalisation, cette valeur est produite aléatoirement pour chaque série d'opérations de substitution. 10 Par exemple, dans un mode de réalisation, la valeur NFC est une valeur sur 2 bits et la valeur BAC 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: 15 1 = 2NFC _1 Ainsi, la valeur de NFC étant égale à 0, 1, 2, ou 3, le nombre m1 d'accès en table de substitution peut par exemple être 0, 1, 3 ou 7. En outre, la valeur BAC est par exemple utilisée pour déterminer la position de l'accès réel en réalisant une opération 20 de ET logique entre la valeur binaire sur 3 bits BAC et une valeur binaire sur 3 bits FN représentant le nombre m-1. En produisant de manière aléatoire la valeur de NFC pour chaque série d'accès à la table de substitution, le temps de traitement de chaque accès en table de substitution sera variable. 25 Ainsi, dans la mesure où la durée de chaque accès à la 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 table de substitution 302 est occupée. Le registre de sortie 602 stocke par exemple chacune des 30 valeurs de sortie SB OUT en provenance de la table de substitution brouillée 302 pendant chacune des opérations de substitution de chaque série. De plus, le circuit 602 sélectionne par exemple l'ensemble réel de valeurs de sortie pour former la valeur de sortie OUTPUT à partir des valeurs BAC et NFC. 35 Le fonctionnement du circuit de la figure 6E va à présent être décrit plus en détail en référence à la figure 7. B16877 17-R0-0644 17 La figure 7 est un chronogramme représentant des exemples de la clé cryptographique KEY utilisée pour produire la donnée d'entrée de chaque accès en table de substitution, la valeur RAC, les opérations d'accès en table de substitution OP et 5 la valeur de sortie OUTPUT pendant une série d'accès SA1 et SA2 utilisant le circuit de la figure 6B. Pendant la série d'opérations de substitution SA1, les valeurs de NFC et RAC sont aléatoirement fixées à 2 et 5, respectivement. Ainsi, à partir de l'équation ci-dessus, le nombre 10 m-1 d'ensembles factices d'une ou plusieurs 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 l'opération NF*RAC est par exemple une valeur sur 3 bits qui peut prendre une valeur comprise entre 0 et 15 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é bit par bit aux valeurs "011" et "101", ce qui donne "001", correspondant au second accès de la série. 20 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 opérations d'accès comprend, séquentiellement : une opération d'accès factice utilisant une fausse clé de brouillage FK1 ; une opération d'accès réel RK1 utilisant la clé de brouillage réelle ; 25 une opération d'accès factice utilisant une fausse clé de brouillage FK2 ; et une opération d'accès factice utilisant une fausse clé de brouillage FK3. Après la dernière opération d'accès, la valeur de sortie OUTPUT devient égale au résultat de l'opération d'accès réelle RAl. 30 Pendant la série d'opérations de substitution SA2, les valeurs de NFC et RAC sont aléatoirement fixées à 1 et 4, respectivement. Ainsi, le nombre m-1 d'opérations factices en table de substitution de la série SA2 est égal à 1 et la position de l'opération d'accès réelle de la série SA2 est égale à un ET 35 logique appliqué bit par bit aux valeurs "001" et "100", ce qui donne "000", correspondant au premier accès de la série. Ainsi B16877 17-R0-0644 18 dans l'exemple de la série d'accès SA2, les m opérations d'accès comprennent, séquentiellement : une opération d'accès réelle RK2 utilisant la clé de brouillage réelle ; et une opération d'accès factice utilisant une clé de brouillage aléatoire FK4. Après la 5 dernière opération d'accès, la valeur de sortie OUTPUT devient égale au résultat des opérations d'accès réelles RA2. Les exemples des figures 3A et 6A correspondent à des mises en oeuvre matérielles. Dans des variantes de réalisation, le procédé de réalisation d'une opération d'accès en table de 10 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 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 15 invention. Le système 800 comprend par exemple un dispositif de traitement (P) 802 couplé par l'intermédiaire d'un bus 804 à une mémoire 806 stockant une ou 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 20 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 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 exemple un ou plusieurs noyaux de traitement 25 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érations d'un procédé de réalisation d'opérations d'accès à une table de substitution selon un exemple de réalisation de la présente 30 invention et utilisant le système de traitement de la figure 8. A une opération 901, la valeur RAC est produite aléatoirement, par exemple, à partir d'une valeur aléatoire fournie par le générateur 812. Cette valeur est par exemple stockée dans la RAM 808. En outre, la clé de brouillage réelle 35 S KEY et une ou plusieurs valeurs d'entrée INPUT sont par exemple chargées dans la mémoire de travail du dispositif de traitement B16877 17-R0-0644 19 802, la mémoire de travail correspondant par exemple à la RAM 808. Les valeurs d'entrée sont par exemple les résultats, stockés dans la RAM 808, d'une opération précédente réalisée par le dispositif de traitement 802 mettant en oeuvre une clé secrète. En outre, une 5 variable i est stockée dans la RAM 808 et est initialisée à 0. A une opération 902, on détermine si la variable i est égale à la position de l'accès réel. La position de l'accès réel est par exemple déterminée à partir des valeurs de RAC, NFC et NF comme on l'a décrit ci-dessus. Si la variable i n'est pas égale 10 à la position réelle, à une opération 903, une ou plusieurs fausses clés de brouillage sont produites par le dispositif de traitement 802. Par exemple, chaque fausse clé est dérivée par le dispositif de traitement 802 de la clé réelle ou produite à partir d'une ou plusieurs valeurs aléatoires fournies par le générateur de nombre 15 aléatoire 812. Après l'opération 903, ou après l'opération 902 dans le cas où i est égal à la position réelle à l'opération 902, l'opération suivante est 904. A l'opération 904, le dispositif de traitement 802 effectue un ensemble d'un ou plusieurs accès en table de substi- 20 tution à partir de la clé de brouillage, qui est soit la clé de brouillage réelle S_KEY, soit une fausse clé de brouillage si une telle clé a été produite à l'opération 903. Chaque ensemble d'un ou plusieurs accès en table de substitution est par exemple réalisé en adressant une ou plusieurs mémoires non volatiles, 25 telle que la mémoire 806, qui stocke par exemple une table de correspondance correspondant à la table de substitution brouillée. Le résultat de chaque accès en table de substitution est stocké en mémoire, par exemple dans la mémoire RAM 808. A une opération 905, on détermine si i est égal à m-1. 30 Sinon, la variable i est incrémentée à une opération 906, puis l'on répète les opérations 902 à 905 à partir de la nouvelle valeur de i. Une fois que i est égal à m-1, le procédé se termine à une opération 907. Par exemple, à l'opération 907, le résultat de l'ensemble réel d'un ou plusieurs accès en table de 35 substitution est choisi pour être utilisé dans l'algorithme cryptographique, à partir des valeurs aléatoires RAC et NFC. Par B16877 17-R0-0644 20 exemple, le dispositif de traitement 802 sélectionne dans la mémoire RAM 808, à partir des valeurs des valeurs aléatoires RAC et NFC, une adresse correspondant à l'emplacement de stockage de l'opération de substitution réelle. 5 La figure 10 illustre schématiquement un dispositif cryptographique 1000 selon un exemple de réalisation. Le dispositif 1000 comprend par exemple un dispositif de traitement 1002 correspondant au processeur hôte du dispositif cryptographique 1000. Le dispositif de traitement 1002 est par 10 exemple en communication avec un circuit cryptographique 1004 qui correspond par exemple au circuit 300 de la figure 3A, 4 ou 6A ou à certains des 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 15 d'entrée/sortie (I/O) 1008 en communication avec le 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 20 de dispositif électronique dans lequel doit être réalisée une fonction cryptographique. Dans certains modes de réalisation, l'interface d'entrée/sortie 1008 peut correspondre à une interface NFC (Near-Field Communication). Un avantage des modes de réalisation décrits ici est que 25 la découverte d'une clé secrète manipulée pendant les 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 effectuant des accès factices en table de substitution à partir de fausses clés de brouillage, on 30 crée une dissymétrie des fuites pendant chaque accès réel 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 35 En outre, l'utilisation d'un même ensemble de fausses clés de brouillage pour une clé secrète donnée peut entraîner la B16877 17-R0-0644 21 génération d'informations trompeuses quant à la valeur de la clé sur les canaux auxiliaires. En effet, une fausse clé de brouillage donnée utilisée plusieurs fois pour une même clé secrète peut être confondue avec les accès en table de substitution authentiques à 5 partir d'une clé fantôme différente de la clé réelle. Avec plusieurs clés de brouillage différentes, le nombre de clés fantôme différentes qui sembleront avoir de bonnes corrélations peut être relativement élevé et sensiblement plus élevé que dans le cas de l'utilisation d'une clé secrète fictive et/ou d'un 10 message fictif. Un avantage de la mise en oeuvre matérielle des figures 3A et 6B est que le passage entre les accès factices et réels en table de substitution peut être réalisé relativement rapidement, d'où il résulte un délai temporel relativement court pour les 15 accès supplémentaires 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 à l'homme de l'art que le circuit de la figure 38 mettant en oeuvre 20 le générateur de clé n'est qu'un exemple et que de nombreuses variantes de mise en oeuvre sont possibles. Par ailleurs, alors que l'on a décrit des modes de réalisation dans lesquels chaque ensemble d'opérations de substitution consiste en une seule opération de substitution ou 25 en un algorithme cryptographique dans son intégralité, des modes de réalisation de la présente invention pourraient également être appliqués à un niveau différent. Par exemple, on pourrait appliquer des modes de réalisation pour des itérations de l'algorithme de cryptage DES, une série de fausses itérations 30 étant réalisée pour chaque itération réelle à exécuter. En outre, bien qu'on ait décrit des modes de réalisation à partir d'une table de substitution unique, certains algorithmes cryptographiques, tels qu'un DES, utilisent plusieurs tables de substitution en parallèle. Les modes de réalisation décrits ici 35 peuvent être appliqués à chacune des plusieurs tables de substitution fonctionnant en parallèle. B16877 17-R0-0644 22 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 peuvent être combinées, dans des variantes de réalisation, selon n'importe quelle combinaison. Par exemple, il 5 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'une opération de substitution d'un algorithme cryptographique à partir d'une table de substitution brouillée (302), ce procédé comprenant: la réalisation, pour chaque ensemble d'une ou plusieurs opérations de substitution de l'algorithme cryptographique, d'une série d'ensembles d'une ou plusieurs opérations de substitution, dont : l'un est un ensemble réel d'une ou plusieurs opé- rations de substitution défini par l'algorithme cryptogra- phique, l'ensemble réel d'une ou plusieurs opérations de substitution étant basé sur une donnée d'entrée modifiée par une clé de brouillage réelle (S_KEY) ; et un ou plusieurs sont des ensembles factices d'une ou plusieurs opérations de substitution, chaque ensemble factice d'une ou plusieurs opérations de substitution étant basé sur une donnée d'entrée modifiée par une fausse clé de brouillage différente (FK1 à FK6). 2. Procédé selon la revendication 1, dans lequel la 20 position de l'ensemble réel d'une ou plusieurs 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 1 ou 2, comprenant en outre, pour chaque série d'ensembles d'une ou plusieurs opérations 25 de substitution, le stockage d'une valeur de sortie (SB_OUT, M) et la sélection de la valeur de sortie correspondant à l'ensemble réel d'une ou plusieurs opérations de substitution à partir de ladite valeur aléatoire (RAC). 4. Procédé selon l'une quelconque des revendications 1 30 à 3, dans lequel chaque ensemble d'une ou plusieurs opérations de substitution comprend l'adressage d'un emplacement de mémoire d'une mémoire (302, 806) à partir de ladite donnée d'entrée modifiée (SB IN) et la lecture d'une valeur de donnée audit B16877 17-R0-0644 24 emplacement de mémoire pour fournir une valeur de donnée de sortie (SB OUT). 5. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel : 5 l'algorithme cryptographique est basé sur une clé secrète ; chaque série d'ensembles d'une ou plusieurs opérations de substitution comprend m-1 ensembles factices d'une ou plusieurs opérations de substitution, m étant un entier fixé à une valeur 10 supérieure ou égale à 2 ou choisie aléatoirement ; et pour une clé donnée, un même groupe de fausses clés de brouillage est appliqué au cours des m-1 ensembles factices d'une ou plusieurs opérations de substitution. 6. Procédé selon l'une quelconque des revendications 1 15 à 5, dans lequel la réalisation de chaque ensemble d'une ou plusieurs opérations de substitution de ladite 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. 7. Procédé selon l'une quelconque des revendications 1 à 6, dans lequel lesdites différentes clés de brouillage appliquées au cours de chacun desdits ensembles factices d'une ou plusieurs opérations de substitution sont choisies aléatoirement. 8. Procédé selon l'une quelconque des revendications 1 à 6, dans lequel lesdites différentes clés de brouillage appliquées au cours de chacun desdits ensembles factices d'une ou plusieurs opérations de substitution sont produites par un registre à décalage (312) recevant en entrée la clé de brouillage réelle. 9. Procédé selon l'une quelconque des revendications 1 à 8, dans lequel le nombre (m-1) d'ensembles factices d'une ou plusieurs opérations de substitution effectués dans chaque série est choisi aléatoirement. 10. Moyen de stockage non transitoire stockant un programme infoimatique configuré, lorsqu'il est exécuté _par un 35 dispositif de traitement (802), pour mettre en oeuvre un procédé selon l'une quelconque des revendications 1 à 9. 316877 17-R0-0644 25 11. Circuit cryptographique comprenant : un circuit de mémoire (302, 806) stockant une table de substitution brouillée pour mettre en oeuvre des opérations de substitution d'un algorithme cryptographique ; et 5 un ou plusieurs circuits (304, 802) configurés pour réaliser, pour chaque ensemble d'une ou plusieurs opérations de substitution de l'algorithme cryptographique, une série d'ensembles d'une ou plusieurs opérations de substitution utilisant ladite table de substitution brouillée, chaque série 10 d'ensembles d'une ou plusieurs opérations de substitution comprenant : un ensemble réel d'une ou plusieurs opérations de substitution défini par l'algorithme cryptographique, l'ensemble réel d'une ou plusieurs opérations de substitution 15 étant basé sur une donnée d'entrée modifiée par une clé de brouillage réelle (S_KEY) ; et un ou plusieurs ensembles factices d'une ou plusieurs opérations de substitution, chaque ensemble factice d'une ou plusieurs opérations de substitution étant basé sur 20 une donnée d'entrée modifiée par une fausse clé de brouillage différente (FK1 à FK6). 12.Circuit cryptographique selon la revendication 11, comprenant en outre un générateur de nombre aléatoire (310, 812) configuré pour produire, pour chacune desdites séries d'ensembles - 25 d'une ou plusieurs opérations de substitution, une valeur aléatoire CRAC), dans lequel les un ou plusieurs circuits (304, 802) sont configurés pour sélectionner aléatoirement la position de l'-opération de substitution réelle parmi les une ou plusieurs opérations de substitution factices à partir de la valeur 30 aléatoire (RAC). 13.Circuit cryptographique selon la revendication 11 ou 12, comprenant en outre : un registre d'entrée (304) configuré pour stocker une valeur d'entrée (INPUT) ; un brouilleur (306) configuré pour modifier ladite valeur d'entrée à partir d'une clé de brouillage (S_KEY') ; et B16877 17-R0-0644 26 un générateur de clé (308) configuré pour produire la clé de brouillage (S_KEY') pour chaque opération de substitution de ladite série à partir de la valeur aléatoire (RAC) et de la clé de brouillage réelle (S_KEY). 5 14.Circuit cryptographique selon la revendication 13, dans lequel le générateur de clé (308) comprend un registre à décalage (312) configuré pour produire la clé de brouillage (S KEY') en décalant ladite clé de brouillage réelle (S KEY). 15. Circuit cryptographique selon la revendication 11 ou 10 12, dans lequel 'les un ou plusieurs circuits (304, 802) comprennent un ou plusieurs dispositifs de traitement (802) commandés par des instructions stockées dans une mémoire d'instructions (806, 808) pour sélectionner, pour chaque ensemble d'une ou plusieurs opération de substitution de chaque série, soit de 15 mettre en oeuvre l'ensemble réel d'une ou plusieurs opérations de substitution en modifiant la valeur d'entrée en utilisant la clé de brouillage réelle (S_KEY), soit de mettre en OEuvre un ensemble factice d'une ou plusieurs opérations de substitution en modifiant la valeur d'entrée en utilisant l'une desdites différentes fausses 20 clés de brouillage.