FR 3078419 A1 20190830 FR 1851644 A 20180226 B16474 1]-R0 -0459 1 PROCEDE ET CIRCUIT DE REALISATION D'UNE OPERATION 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 ANTER1EUR 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 par conséquent 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 exploitée par un dispositif crypto- 15 graphique 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 20 substitution est souvent visée par les pirates par des procédés 1316474 1-R0-0459 2 par canaux 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'une opération de substitution d'un algorithme cryptographique, ce procédé comprenant : la réalisation, pour chaque opération de 15 substitution de l'algorithme cryptographique, d'une série d'opérations de substitution, dont : l'une est une opération de substitution réelle correspondant à l'opération de substitution de l'algorithme cryptographique ; et une ou plusieurs sont des opérations de substitution factices, dans lequel la position de 20 l'opération de substitution réelle parmi les une ou plusieurs opérations de substitution factices dans chacune desdites séries est choisie aléatoirement. Selon un mode de réalisation, chaque opération de substitution comprend l'adressage d'un emplacement de mémoire 25 d'une mémoire à partir d'une donnée d'entrée et la lecture d'une valeur de donnée audit emplacement de mémoire pour fournir une donnée de sortie. Selon un mode de réalisation, chaque série d'opérations de substitution comprend un nombre m d'opérations de substitution, 30 m étant un entier choisi aléatoirement pour chaque série. Selon un mode de réalisation, le procédé comprend en outre la génération d'une première valeur aléatoire pour une première série d'opérations de substitution et l'utilisation de la première valeur aléatoire pour choisir le nombre m d'opéra- 35 tions de substitution dans ladite première série. B1:6474 1-R0-0459 3 Selon un mode de réalisation, le procédé comprend en outre la génération d'une seconde valeur aléatoire pour une première série d'opérations de substitution et l'utilisation de la seconde valeur aléatoire pour choisir la position de l'opéra- tion de substitution réelle parmi les une ou plusieurs opérations de substitution dans ladite première série. Selon un mode de réalisation, la réalisation de chaque série d'opérations de substitution comprend : le chargement d'une valeur d'entrée réelle et de N valeurs d'entrée aléatoires ; et la fourniture, sur des opérations consécutives d'accès en table de substitution, de ladite valeur d'entrée réelle et de m-1 desdites valeurs d'entrée aléatoires à une table de substitution, l'ordre de fourniture de la valeur d'entrée réelle par rapport aux m-1 valeurs d'entrée aléatoires étant choisi à partir de la seconde valeur aléatoire. Selon un mode de réalisation, le procédé comprend en outre, pour chaque série d'opérations de substitution, le stockage d'une valeur de sortie de chaque opération de substitution et la sélection de la valeur de sortie correspondant à ladite opération de substitution réelle à partir de ladite seconde valeur aléatoire. 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 25 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 stockant une table de substitution pour mettre en oeuvre une opération de substitution d'un algorithme cryptographique ; et un 30 ou plusieurs circuits configurés pour réaliser, à chaque opération de substitution de l'algorithme cryptographique, une série d'opérations de substitution utilisant ladite table de substitution, chaque série d'opérations de substitution comprenant : une opération de substitution réelle correspondant à 35 l'opération de substitution de l'algorithme cryptographique ; et une ou plusieurs opérations de substitution factices, les un ou B16474 12/-R0-0459 4 plusieurs circuits étant configurés de manière à sélectionner aléatoirement la position de l'opération de substitution réelle parmi les une ou plusieurs opérations de substitution factices dans chacune desdites séries. 5 Selon un mode de réalisation, le circuit cryptographique comprend en outre un générateur de nombre aléatoire configuré pour générer, pour chacune desdites séries, une première valeur aléatoire pour choisir aléatoirement le nombre d'opérations de substitution factices à réaliser dans la série. 10 Selon un mode de réalisation, le générateur de nombre aléatoire est en outre configuré pour générer, pour chacune desdites séries, une seconde valeur aléatoire pour choisir aléatoirement la position de l'opération de substitution réelle parmi les opérations de substitution factices. 15 Selon un mode de réalisation, le circuit cryptographique comprend en outre une mémoire pour stocker un résultat des opérations de substitution de chacune desdites séries. Selon un mode de réalisation, les un ou plusieurs circuits consiste(nt) en un circuit d'entrée de table de substitution 20 comprenant : un ou plusieurs registres configurés pour stocker une valeur d'entrée réelle correspondant à ladite opération de substitution réelle et N valeurs d'entrée aléatoires ; et un ou plusieurs multiplexeurs configurés pour choisir, pour chaque opération de substitution de chaque série, une valeur parmi ladite valeur d'entrée réelle et lesdites N valeurs d'entrée aléatoires pour former une entrée du circuit mémoire stockant ladite table de substitution. Selon un mode de réalisation, le circuit cryptographique 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 afin d'effectuer la sélection de ladite valeur pour chaque opération de substitution. 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 opération de substitution de B16474 17-R0-0459 5 chaque série, soit ladite valeur d'entrée réelle, soit une valeur d'entrée aléatoire pour former une entrée du circuit de mémoire stockant ladite table de substitution. BREVE DESCRIPTION DES FIGURES 5 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 en relation avec les figures jointes parmi lesquelles : la figure 1 illustre schématiquement un circuit 10 d'exécution d'un algorithme cryptographique faisant intervenir des opérations de substitution selon un exemple de réalisation ; la figure 2 illustre schématiquement une table de substitution selon un exemple de réalisation ; la figure 3 illustre schématiquement un circuit cryp15 tographique pour accéder à une table de substitution selon un exemple de réalisation de la présente invention ; la figure 4 est un chronogramme illustrant un exemple de signaux dans le circuit de la figure 3 ; la figure 5 illustre schématiquement une partie d'un 20 circuit d'entrée de table de substitution selon la figure 3 plus en détail selon un exemple de réalisation de la présente invention ; la figure 6 illustre schématiquement un système de traitement pour accéder à une table de substitution selon un 25 exemple de réalisation de la présente invention ; la figure 7 est un organigramme représentant des opérations d'un procédé d'accès à une table de substitution selon un exemple de réalisation de la présente invention ; et la figure 8 illustre schématiquement un dispositif 30 cryptographique selon un exemple de réalisation de la présente invention. DESCRIPTION DETAILTer, Dans la présente description, le terme "connecté" est utilisé pour désigner une connexion électrique directe entre 35 éléments de circuit, tandis que le terme "couplé" est utilisé pour désigner une connexion électrique entre éléments de circuit qui BI6474 17-R0-0459 6 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 que les termes suivants ont les définitions suivantes : 5 "algorithme cryptographique" - toute série d'opéra- tions 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 cryptographiques comprennent les algorithmes de 10 cryptage ou de décryptage de texte non-crypté/texte crypte à partir d'une clé secrète, pour générer 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 ; 15 "opération de substitution" ou "accès à une 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 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 présenter le même 20 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 définies dans la table de correspondance peuvent être fixées ou pourraient être mises à jour de façon dynamique ; 25 "opération de substitution réelle" - une opération de substitution définie par l'algorithme cryptographique en cours d'exécution, constituant par exemple une opération utile en ce que le résultat de la substitution contribuera au calcul de la donnée de sortie de l'algorithme cryptographique ; et 30 "opération de substitution factice" - une opération fictive ou fausse réalisée de la même façon qu'une opération de substitution réelle, mais qui est superflue dans la mesure où elle est réalisée en plus des opérations de substitution réelles définies par l'algorithme cryptographique. Bien que le résultat de chaque opération de substitution factice puisse être stocké en mémoire, ceci n'est pas utile dans la mesure où ce résultat est Bi6474 17'-RO-0459 7 sans objet en lien avec l'algorithme cryptographique et peut être rejeté. Comme on l'a décrit ici, les opérations de substitution factices sont par exemple effectuées à partir de données d'entrée aléatoires. 5 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 10 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é. 15 Le circuit 100 comprend une série de modules matériels mettant en oeuvre diverses opérations 102, 104, 106 sur le 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 numérique. Dans l'exemple de la figure 1, l'opération 20 104 correspond à une opération de substitution faisant intervenir une ou plusieurs tables de substitution (S-BOXES). La figure 2 illustre schématiquement un exemple d'une table de substitution utilisée au cours de l'algorithme DES (data encryption standard). De façon connue de l'homme de l'art, 25 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 Sl. Un accès à la table de substitution selon l'algorithme de cryptage DES implique l'introduction de 6 bits d'entrée (INPUT) 30 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 une rangée de la table et les bits b4 à bl de la valeur d'entrée 35 sont par exemple utilisés pour choisir une colonne de la table. B16474 11-R0-0459 8 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 table de substitution et les principes décrits dans la présente 5 description pourraient être appliqués à 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. La figure 3 illustre schématiquement un circuit cryp- 10 tographique 300 pour 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 circuit 100 de la figure 1. Le circuit 300 comprend une table de substitution 302 15 recevant une donnée d'entrée SB IN et délivrant une donnée de sortie SB OUT. La table de substitution 302 est par exemple mise en oeuvre par une 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 20 à l'emplacement adressé de la mémoire. La table de substitution 302 correspond par exemple à la table de substitution Si de la figure 2 ou à toute autre table de substitution de la norme DES de cryptage. A titre de variante, la table de substitution 302 pourrait correspondre à une table de 25 substitution utilisée dans les normes de cryptage TDES (Triple DES), AES (advanced encryption standard) ou 5M4 (anciennement connu sous le nom de 5M54), ou dans toute autre norme de cryptage. Le circuit 300 comprend en outre un circuit d'entrée de table de substitution (S-BOX INPUT CIRCUIT) 304 recevant une 30 valeur d'entrée INPUT correspondant à une opération de substitution réelle à 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. 35 Le circuit d'entrée de table de substitution 304 reçoit également N valeurs d'entrée aléatoires (N x RANDOM) et un signal BI6474 171RO-0459 9 de commande CTRL, en provenance d'un générateur de nombre aléatoire (RNG) 306. 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. 5 Le circuit 300 comprend en outre un circuit de sortie de table de substitution (S-BOX OUTPUT CIRCUIT) 308 qui reçoit la donnée de sortie SB OUT en provenance de la table de substitution 302 ainsi que le signal de commande CTRL en provenance du générateur de nombre aléatoire 306. Le circuit de sortie de table 10 de substitution 308 est par exemple couplé à un registre de sortie (OUTPUT REGISTER) 310, qui fournit une donnée de sortie OUTPUT représentant le résultat de l'opération d'accès à la table de substitution. Dans certains modes de réalisation, le circuit d'entrée 304 et le circuit de sortie 308 présentent un bit 15 d'occupation (BB, busy bit) pour indiquer à un système hôte les périodes d'occupation de la table de substitution 302. En fonctionnement, pour chaque opération d'accès à la table de substitution qui doit être effectuée en vue d'une opération de substitution correspondante d'un algorithme crypto- 20 graphique, une série d'accès à la table de substitution est effectuée par le circuit d'entrée de table de substitution 304. Un seul de ces accès correspond à l'accès réel à la table de substitution associé à l'opération de substitution de l'algorithme cryptographique. L'autre des un ou plusieurs accès en table de 25 substitution correspond à des accès factices à partir des valeurs aléatoires fournies par le générateur 306, dont les résultats sont rejetés. Par exemple, chaque fois qu'un accès à la table de substitution doit être effectué, la valeur de donnée d'entrée 30 réelle et N valeurs d'entrée aléatoires sont chargées dans le circuit d'entrée de table de substitution 304, N étant un entier positif par exemple égal à au moins 7 dans certains modes de réalisation. Le signal de commande CTRL généré par le générateur de nombre aléatoire 306 comprend par exemple une valeur NFC 35 indiquant le nombre d'accès factices à réaliser, et une valeur B16474 171RO-0459 10 RAC indiquant la position de l'accès réel par rapport aux accès factices. 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 5 bits. Le nombre NFC d'accès factices à la table de substitution dans chaque série d'accès à la table de substitution est par exemple égal à : F=2ev'ec--1, Ainsi, la valeur de NFC étant égale à 0, 1, 2, ou 3, le nombre NF 10 d'accès à la 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 de ET logique entre la valeur binaire sur 3 bits RAC et une valeur binaire sur 3 bits représentant le nombre NF. 15 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 à la table de substitution sera variable. 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 20 de traitement hôte les périodes temporelles pendant lesquelles la table de substitution 302 est occupée. Selon certains modes de réalisation, le circuit de sortie de table de substitution 308 stocke chacune des valeurs de sortie SB OUT de la table de substitution 302 pendant chaque 25 opération d'accès au registre de sortie 310. En outre, le circuit 308 sélectionne par exemple la valeur de sortie réelle pour former la valeur de sortie OUTPUT du registre 310 à partir du signal de commande CTRL. En particulier, la valeur NFC indique le nombre de valeurs de sortie factices fournies par la table de substitution 30 302 et la valeur RAC indique la position de la valeur de sortie réelle par rapport aux valeurs de sorties factices. Le fonctionnement du circuit de la figure 3 va à présent être décrit plus en détail en référence à la figure 4. La figure 4 est un chronogramme représentant des 35 exemples des signaux NFC, RAC, BB, des opérations d'accès à la B16474 RO-0459 11 table de substitution OP, et de la valeur de sortie OUTPUT, pendant une série d'accès SA1 et SA2 utilisant le circuit de la figure 3. Dans l'exemple de la figure 4, pendant la série d'accès SA1, la valeur de NFC générée aléatoirement est de 2 et la valeur 5 de RAC générée aléatoirement est de 5. Ainsi, le nombre NF d'opérations factices en table de substitution dans la série SA1 est égal à 3. Le nombre total d'accès à la table de substitution dans une série quelconque est égal à NF+1 et le résultat de l'opération NF*RAC est par exemple une valeur sur 3 bits qui peut 10 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é bit par bit aux valeurs "011" et "101", ce qui donne "001", 15 correspondant au second accès de la série. Le bit d'occupation BB prend une valeur haute à l'instant tO au début de la série d'opérations d'accès SA1, qui comprend quatre accès à la table de substitution correspondant, séquentiellement, à : un accès factice FA ; un accès réel RA1 ; 20 un accès factice FA ; et un accès factice FA. Le bit d'occupation BB passe ensuite par exemple à une valeur basse à l'instant tl suivant le dernier accès et la valeur de sortie OUTPUT devient égale au résultat de l'accès réel RA1 peu de temps après. Pendant la série d'accès à la table de substitution SA2, 25 la valeur de NFC générée aléatoirement est de 1 et la valeur de RAC générée aléatoirement est de 4. Ainsi, le nombre NF d'opérations factices à la table de substitution dans 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 logique appliqué bit par bit aux 30 valeurs "001" et "100", ce qui donne "000", correspondant au premier accès de la série. Le bit d'occupation BB prend une valeur haute à un instant t2 au début de la série d'opérations d'accès SA2, qui comprend deux accès à la table de substitution correspondant, 35 séquentiellement, à : un accès réel RA2 ; et un accès factice FA. Le bit d'occupation BB passe ensuite par exemple à une valeur B16474 17-R0-0459 12 basse à l'instant t3 suivant le dernier accès et la valeur de sortie OUTPUT devient égale au résultat de l'accès réel RA2 peu de temps après. La figure 5 illustre schématiquement une partie du 5 circuit d'entrée de table de substitution 304 de la figure 3 plus en détail selon un exemple de réalisation. Le circuit 304 comprend par exemple un multiplexeur 502 présentant N+1 entrées de réception des N valeurs aléatoires à partir du générateur de nombre aléatoire 306 et la valeur d'entrée réelle INPUT. Dans 10 l'exemple de la figure 5, N est égal à 7 et les 7 valeurs aléatoires sont désignées par R1 à R7. Le circuit 304 comprend également par exemple un circuit de sélection (SEL) 504 qui génère un signal de sélection pour commander le multiplexeur 502 à partir du signal de commande CTRL 15 en provenance du générateur de nombre aléatoire 306. Le circuit de sélection 504 reçoit par exemple un signal d'horloge CLK indiquant la période de chaque opération d'accès de sorte que le signal de sélection peut être mis à jour à l'instant approprié. Comme on l'a indiqué ci-dessus, en fonction du nombre d'opérations 20 d'accès factices dans une série donnée d'accès à la table de substitution, le nombre de ces valeurs d'entrée aléatoires utilisées pendant cette série d'accès variera entre zéro et N. Les valeurs aléatoires R1 à R7 sont par exemple rafraichies après chaque série d'accès à la table de substitution, en d'autres 25 termes, chaque fois que les données d'entrée INPUT sont mises à jour. L'exemple des figures 3 et 5 correspond à une mise en oeuvre matérielle. Dans des variantes de réalisation, le procédé d'accès en table de substitution décrit ici peut être mis en oeuvre 30 sous forme logicielle, comme on le décrira plus en détail en référence aux figures 6 et 7. La figure 6 illustre schématiquement un système de traitement 600 selon un exemple de réalisation de la présente invention. Le système 600 comprend par exemple un dispositif de 35 traitement (P) 602 couplé par l'intermédiaire d'un bus 604 à une mémoire 606 stockant une ou plusieurs tables de substitution (S- 1316474 17-RO-0459 13 BOXES). La mémoire 606 est par exemple une mémoire non volatile (NVM, Non-Volatile Memory). Le système 600 comprend également par exemple, couplés au bus 604, une mémoire volatile 608, qui est par exemple une mémoire RAM (mémoire à accès aléatoire), une 5 interface d'entrée/sortie (I/O INTERFACE) 610 et un générateur de nombre aléatoire (RNG) 612. Le dispositif de traitement 602 comprend par exemple un ou plusieurs noyaux de traitement comluandés par instructions stockées dans une mémoire d'instructions, par exemple, la mémoire 606 et/ou 608. 10 La figure 7 est un organigramme illustrant des opéra- tions d'un procédé d'accès à une table de substitution selon un exemple de réalisation de la présente invention et utilisant le système de traitement de la figure 6. A une opération 701, N valeurs d'entrée aléatoires et 15 une valeur d'entrée réelle sont par exemple chargées dans la mémoire de travail du dispositif de traitement 602, la mémoire de travail correspondant par exemple à la mémoire RAM 608. Les valeurs aléatoires sont par exemple générées par le générateur de nombre aléatoire 612, tandis que la valeur d'entrée réelle est 20 par exemple un résultat, stocké dans la RAM 608, d'une opération précédente réalisée par le dispositif de traitement 602 mettant en oeuvre une clé secrète. A une opération 702, les valeurs aléatoires NFC et RAC sont générées, par exemple, à partir de valeurs aléatoires 25 fournies par le générateur 612. Ces valeurs sont par exemple stockées dans la mémoire RAM 608. A une opération 703, le dispositif de traitement 602 réalise eec accès à la table de substitution, l'un de ces accès correspondant à un accès réel à partir de la valeur d'entrée 30 réelle et 2NFc--1 de ces accès correspondant à des accès factices, l'accès réel étant positionné par rapport aux accès factices à partir de la valeur RAC. Chaque accès est par exemple réalisé en adressant la mémoire non volatile 606 et en particulier une table de correspondance stockée dans la mémoire non volatile 606. Le 35 résultat de chaque accès est stocké en mémoire, par exemple dans la mémoire RAM 608. Bi6474 17-R0-0459 14 A l'opération 704, le résultat correspondant à l'accès réel est choisi pour être utilisé dans l'algorithme cryptographique à partir des valeurs aléatoires NFC et BAC. Pr exemple, le dispositif de traitement 602 sélectionne dans la mémoire RAM 5 608, à partir des valeurs aléatoires NFC et RAC, une adresse correspondant à l'emplacement de stockage de l'opération de substitution réelle. La figure 8 illustre schématiquement un dispositif cryptographique 800 selon un exemple de réalisation. 10 Le dispositif 800 comprend par exemple un dispositif de traitement (P) 802 correspondant au processeur hôte du dispositif cryptographique 800. Le dispositif de traitement 802 est par exemple en communication avec un circuit cryptographique 804 (CRYPTO) qui correspond par exemple au circuit 300 de la figure 3 15 ou à certains des ou tous les éléments du système de traitement 600. Le dispositif cryptographique 800 comprend également par exemple une mémoire (MEN) 806 et une interface d'entrée/sortie (I/O) 808 en communication avec le dispositif de traitement 802. Le dispositif 800 correspond par exemple à une carte de 20 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 fonction cryptographique. Dans certains modes de réalisation, l'interface d'entrée/sortie 808 peut correspondre à une interface 25 NFC (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 opérations de substitution d'un algorithme cryptographique au moyen de procédés par canaux auxiliaires peut être rendue considérablement 30 plus difficile. En effet, en effectuant des accès factices et en positionnant l'accès réel à la table de substitution à une position aléatoire par rapport aux accès factices à la table de substitution, on crée une dissymétrie des fuites pendant chaque accès réel à la table de substitution, et il devient très difficile 35 de déterminer une corrélation significative entre les signaux de canaux auxiliaires pendant les accès à la table de substitution B1.6474 171R0-0459 15 et la valeur de la clé secrète. En outre, la découverte de la clé secrète peut être rendue encore plus difficile en randomisant encore le nombre d'opérations de substitution factices réalisées pour chaque opération de substitution réelle. 5 Un avantage de la mise en oeuvre matérielle des figures 3 et 5 est que le passage des accès factices et aux accès réels à une table de substitution peut être réalisé relativement rapidement, d'où il résulte une dépense temps système relativement faible pour les accès supplémentaires à la table de substitution. 10 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 5 mettant en oeuvre le circuit d'entrée de table de substitution n'est qu'un exemple 15 et que de nombreuses variantes de mise en oeuvre sont possibles. En outre, bien qu'un exemple dans lequel les valeurs NFC et RAC présentent respectivement 2 et 3 bits ait été prévu, il apparaîtra à l'homme de l'art que ces valeurs peuvent compter un nombre de bits différent selon la valeur de N. 20 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 peuvent être appliqués à chacune des plusieurs tables de 25 substitution fonctionnant en parallèle. 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 des figures 3 et 6 pourraient être combinées, dans des variantes de réalisation, selon tout type de combinaison. Par 30 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, 600), d'une opération de substitution d'un algorithme cryptographique, ce procédé comprenant : la réalisation, pour chaque opération de substitution de l'algorithme cryptographique, d'une série d'opérations de substitution, dont : l'une est une opération de substitution réelle correspondant à l'opération de substitution de l'algorithme 10 cryptographique ; et une ou plusieurs autres sont des opérations de substitution factices, dans lequel la position de l'opération de substitution réelle parmi les une ou plusieurs opérations de substitution factices dans chacune desdites séries est choisie 15 aléatoirement. 2. Procédé selon la revendication 1, dans lequel chaque opération de substitution comprend l'adressage d'un emplacement de mémoire d'une mémoire (302, 606) à partir d'une donnée d'entrée (SB_IN) et la lecture d'une valeur de donnée audit emplacement de 20 mémoire pour fournir une donnée de sortie (SB OUT). 3. Procédé selon la revendication 1 ou 2, dans lequel chaque série d'opérations de substitution comprend un nombre m d'opérations de substitution, où m est un entier choisi aléatoirement pour chaque série. 25 4. Procédé selon la révendication 3, comprenant en outre la génération d'une première valeur aléatoire (NFC) pour une première série d'opérations de substitution et l'utilisation de la première valeur aléatoire (NFC) pour choisir le nombre m d'opérations de substitution dans ladite première série. 30 5. Procédé selon l'une quelconque des revendications 1 à 4, comprenant en outre la génération d'une seconde valeur aléatoire (RAC) pour une première série d'opérations de substitution et l'utilisation de la seconde valeur aléatoire pour choisir la position de l'opération de substitution réelle parmi B16474 1-R0-0459 17 les une ou plusieurs opérations de substitution dans ladite première série. 6. Procédé selon la revendication 5, dans lequel la réalisation de chaque série d'opérations de substitution com5 prend : le chargement d'une valeur d'entrée réelle et de N valeurs d'entrée aléatoires ; et la fourniture, sur des opérations consécutives d'accès en table de substitution, de ladite valeur d'entrée réelle et de m-1 desdites valeurs d'entrée aléatoires à une table de substitution (302, 606), dans lequel l'ordre de fourniture de la valeur d'entrée réelle par rapport aux m-1 valeurs d'entrée aléatoires est choisi à partir de la seconde valeur aléatoire (RAC). 7. Procédé selon la revendication 5 ou 6, comprenant en 15 outre, pour chaque série d'opérations de substitution, le stockage d'une valeur de sortie (SB_OUT) de chaque opération de substitution et la sélection de la valeur de sortie correspondant à l'opération de substitution réelle à partir de ladite seconde valeur aléatoire (RAC). 20 8. Moyen de stockage non transitoire stockant un programme informatique configure, 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 à 7. 9. Circuit cryptographique comprenant : 25 un circuit de mémoire (302, 606) stockant une table de substitution (S-BOXES) pour mettre en oeuvre une opération de substitution d'un algorithme cryptographique ; et un ou plusieurs circuits (304, 602) configurés pour réaliser, à chaque opération de substitution de l'algorithme 30 cryptographique, une série d'opérations de substitution utilisant ladite table de substitution (S-BOX), chaque série d'opérations de substitution comprenant : une opération de substitution réelle correspondant à l'opération de substitution de l'algorithme cryptographique ; et 35 une ou plusieurs opérations de substitution factices, les un ou plusieurs circuits étant configurés de manière à Bl6474 17-R0-0459 18 sélectionner aléatoirement la position de l'opération de substitution réelle parmi les une ou plusieurs opérations de substitution factices dans chacune desdites séries. 10. Circuit cryptographique selon la revendication 9, 5 comprenant en outre un générateur de nombre aléatoire (306, 612) configuré pour générer, pour chacune desdites séries, une première valeur aléatoire (NFC) pour choisir aléatoirement le nombre d'opérations de substitution factices à réaliser dans la série. 11. Circuit cryptographique selon la revendication 10, 10 dans lequel le générateur de nombre aléatoire (306, 612) est en outre configuré pour générer, pour chacune desdites séries, une seconde valeur aléatoire (RAC) pour choisir aléatoirement la position de l'opération de substitution réelle parmi les opérations de substitution factices. 12. Circuit cryptographique selon l'une quelconque de revendications 9 à 11, comprenant en outre une mémoire (310, 608) pour stocker un résultat des opérations de substitution de chacune desdites séries. 13. Circuit cryptographique selon l'une quelconque des 20 revendications 9 à 12, dans lequel le un ou plusieurs circuits constitue(nt) un circuit d'entrée de table de substitution (304) comprenant : un ou plusieurs registres configurés pour stocker une valeur d'entrée réelle correspondant à ladite opération de 25 substitution réelle et N valeurs d'entrée aléatoires ; et un ou plusieurs multiplexeurs (502) configurés pour choisir, pour chaque opération de substitution de chaque série, une valeur parmi ladite valeur d'entrée réelle et lesdites N valeurs d'entrée aléatoires pour former une entrée du circuit de 30 mémoire (302) stockant ladite table de substitution (S-BOXES). 14. Circuit cryptographique selon la revendication 13, comprenant en outre un circuit de sélection (504) configuré pour générer un signal de sélection pour commander les un ou plusieurs multiplexeurs (502) afin d'effectuer la sélection de ladite valeur 35 pour chaque opération de substitution. B16474 17-R0-0459 19 15. Circuit cryptographique selon l'une quelconque des revendications 9 à 12, dans lequel les un ou plusieurs circuits comprennent un ou plusieurs dispositifs de traitement (602) commandés par des instructions stockées dans une mémoire 5 d'instructions (606, 608) pour choisir, pour chaque opération de substitution de chaque série, soit ladite valeur d'entrée réelle, soit une valeur d'entrée aléatoire pour former une entrée du circuit de mémoire (606) stockant ladite table de substitution (S-BOXES).