Brevet FR2893796A1 — publié le 20070525

DESCRIPTION PROCEDE DE PROTECTION PAR CHIFFREMENT DOMAINE TECHNIQUE La présente invention concerne des procédés de protection d'un moteur matériel cryptographique des attaques par cryptoanalyse ciblées au cours du fonctionnement, et en particulier concerne la protection d'une valeur d'entrée (du côté clé) des opérations de substitution (boîte S) d'algorithmes de chiffrement dans une ronde quelconque donnée contre des attaques de canaux latéraux grâce à l'utilisation de procédés de masquage (opérations fausses ou factices). ARRIERE-PLAN DE L'INVENTION Dans la publication de demande de brevet américain numéro 2004/0139340, Johnson et al. décrivent des problèmes qui se posent lorsque l'on rend les algorithmes de chiffrement sûrs par rapport auxdites attaques de la boîte blanche , comme des analyses de flux de données et statistiques, par des tentatives qui comprennent l'utilisation d'un code factice pour transformer en aveugle un code réel. Johnson et al. Proposent une solution qui prévoit une large diffusion de sites de perte, combinaison et transfert d'informations et la génération de plusieurs fonctions et transformations qui altèrent l'activité de traitement que peut voir un attaquant. Ces solutions s'appliquent dans une mise en œuvre donnée à titre d'exemple qui concerne la mise en sécurité de cartes à puce qui utilisent l'algorithme DES ou une variante de celui-ci. 2 Dans la publication de demande de brevet américain numéro 2003/0044003, Chari et al. décrivent un procédé et un système permettant de mettre en oeuvre les tables de conversion résistant aux attaques des canaux voisins. Une opération de masquage de table est utilisée, au cours de laquelle les entrées de la table masquée sont statistiquement indépendantes des entrées de la table originale. L'opération de masquage de table est effectuée avec l'un ou les deux d'éléments suivants : (1) une opération de scission de table pour les grandes tables ou les tables présentant des tailles d'index importantes ; ou (2) une opération de regroupement de table, au cours de laquelle un certain nombre de tables est regroupé dans une table. Dans la publication de demande de brevet américain numéro 2003/0093684, Kaiserwerth et al. traitent des vulnérabilités potentielles des algorithmes de chiffrement, en particulier aux attaques par analyse de puissance. Dans ce contexte, ils remarquent que la petite taille de la clé (effectivement 56 bits) du DES simple n'est plus considérée comme étant sûre face à des attaques en force à clé, ce qui nécessite une évolution vers des variantes comme le triple DES (qui enchaîne trois applications de l'algorithme DES : chiffrement-déchiffrement-chiffrement en utilisant au moins deux et de préférence trois clés indépendantes). En outre, les boîtes S du DES sont potentiellement vulnérables aux analyses différentielles des entrées et des sorties de boîte S de manière à obtenir 48 des 56 bits de clé. Kaiserwerth et al. décrivent plusieurs mesures permettant de contrecarrer ce type d'attaque, y compris l'utilisation d'opérations de masquage et de chaînes binaires neutres de Hamming. 3 Dans le brevet américain numéro 6 278 783, Kocher et al. décrivent une mise en oeuvre de DES améliorée dans laquelle des tables de boîte S sont transformées en aveugle et permutées de manière aléatoire sur une base régulière, et les blocs de message et de clé sont transformés en aveugle pour produire des valeurs en deux parties permutables liées aux valeurs originales par une opération OU exclusif de manipulation de bits (bitwise). En général, les attaques de canaux voisins impliquent des émissions électromagnétiques ou une consommation de courant contrôlée du matériel cryptographique au cours de l'exécution d'un algorithme de chiffrement ciblé, et la tentative de mettre en corrélation le profil de cadencement de la caractéristique contrôlée et l'algorithme cible afin d'obtenir des informations utilisables concernant la clé. Par exemple, une attaque de ce type peut directement prendre pour cible la partie d'une exécution d'un algorithme qui se trouve au niveau du côté d'entrée des boîtes S d'un algorithme, là où les données sont soumises à une opération OU exclusif avec les sous-clés au cours d'une ronde donnée. Une façon de protéger un algorithme de chiffrement contre des attaques de canaux latéraux consisterait à utiliser un procédé aveugle ou de masquage aléatoire, c'est-à-dire l'exécution de nombreuses opérations factices ou de falsification en même temps que l'opération réelle. Toutefois, un problème lié à ce genre de masquage aléatoire est que l'entropie utilisée lors de l'exécution des opérations factices ajoutées n'est pas commandée, de telle sorte qu'il est toujours possible de découvrir la véritable opération à l'aide de techniques statistiques. RESUME DE L'INVENTION La présente invention est un procédé aveugle déterministe destiné à des algorithmes de chiffrement qui sont susceptibles d'être soumis à des attaques ciblées, en particulier mais pas exclusivement les algorithmes de chiffrement utilisant des opérations de substitution (boîte S) ou combinant de façon logique des données avec des sous-clés de ronde, par exemple des opérations OU exclusif de manipulation de bits du côté d'entrée des boîtes S de chiffrement. Le procédé aveugle déterministe de la présente invention commande l'entropie injectée lors de l'exécution d'un ensemble d'opérations fausses ou factices afin d'obtenir une plus grande protection de la véritable opération en utilisant des techniques de masquage ou des techniques aveugles purement aléatoires. Le procédé commence généralement par élaborer au préalable une table de masquage qui contient une ligne correspondant à la véritable clé et de nombreuses lignes de protection qui ont été élaborées pour transformer en aveugle au moins certains bits de la clé dans plusieurs combinaisons. Lorsque les lignes de la table sont combinées d'une manière logique à une clé donnée, le procédé obtient un ensemble de clés, dont une seulement est vraie, tandis que toutes les autres sont des clés factices. (Par exemple, dans le cas d'une opération de combinaison OU exclusif de manipulation de bits, la ligne de la table correspondant à la véritable clé est un masque contenant exclusivement des bits zéro tandis que les lignes de protection sont des masques dans lesquels au moins certains bits sont des uns). L'algorithme de chiffrement s'applique de nombreuses fois à un bloc de messages en utilisant les clés véritables et factices dans un ordre aléatoire pour générer des sous-clés de ronde véritables et factices correspondantes. Le résultat 4 obtenu de l'application de la véritable clé à l'opération de chiffrement est stocké dans la mémoire tandis que les résultats incorrects provenant des clés factices sont stockés dans un emplacement de mémoire factice. Une fois que 5 le chiffrement a été exécuté pour chacune des clés, le véritable résultat est accessible depuis la mémoire. Selon une autre solution, les lignes de la table de masquage peuvent être combinées logiquement avec les sous-clés à l'intérieur des rondes de chiffrement pour obtenir une véritable sous-clé et un ensemble de sous-clés factices pour chacune des rondes. Ces sous-clés sont ensuite appliquées pour traiter le bloc de messages en fonction de la ronde de chiffrement, seul le véritable résultat passant à la ronde suivante. Pour les algorithmes de chiffrement utilisant des opérations de boîte S, un certain nombre n de bits va entrer du côté d'entrée d'une boîte S (mis en oeuvre couramment sous la forme d'une table de conversion). Il y a donc 2n valeurs d'entrée possibles pour la boîte S. Dans un mode de réalisation servant d'exemple de la présente invention, une table de masquage contenant 2n masques est élaborée, l'un des masques ne contenant que des zéros (correspondant à l'opération véritable) et tous les autres masques contenant certains bits qui sont des uns (correspondant à des opérations factices). Ces masques sont soumis à une opération OU exclusif de manipulation de bits avec (a) une clé pour obtenir un ensemble de clés (l'une des clés étant la véritable et les autres des clés factices) à partir desquelles sont générées des sous-clés de ronde véritables et factices correspondantes, ou (b) chaque sous-clé de ronde pour obtenir un ensemble de sous-clés pour chacune des rondes (ici encore, une sous-clé véritable pour la ronde, les autres étant des sous-clés factices pour la ronde). 6 A l'intérieur des rondes de chiffrement, chacune des sous-clés est ensuite logiquement combinée aux données de groupes de n bits pour entrer dans les boîtes S. Les masques factices de 1a table peuvent être choisis spécialement pour que les groupes de bits combinés entrant dans une boîte S prennent toutes les 2n valeurs d'entrée possibles, ce qui permet de mettre complètement à niveau l'entropie vue par un attaquant de telle sorte que la sous-clé de ronde véritable utilisée dans cette opération de boîte S ne peut être vérifiée de l'extérieur. BREVE DESCRIPTION DES DESSINS La figure 1 est un schéma fonctionnel illustrant la fonction de chiffrement DES selon la norme DES de la technique an érieure. La figure 2 est schéma fonctionnel illustrant la fonction de chiffrement DES modifiée selon un mode de réalisation servant d'exemple de la présente invention. Les figures 3 et 4 sont des schémas matériels se présentant sous la forme de schémas fonctionnels de moteurs de chiffrement servant d'exemple réalisant des mises en œ uvre de masquage intérieur et de masquage global respectifs du procédé selon la présente invention. DESCRIPTION DETAILLEE Un procédé aveugle déterministe peut s'appliquer selon la présente invention en tant que procédé de masquage global ou procédé de masquage interne . L'idée de base est d'appliquer chacune des lignes d'une table de 7 masquage à une clé ou sous-clé de ronde pour obtenir des clés ou sous-clés véritables ou factices. Dans le procédé de masquage global, le masquage par les lignes de la table de masquage s'applique à la clé de chiffrement globale à l'extérieur de l'exécution des rondes de l'algorithme de chiffrement. Ceci permet de conserver la mise en œuvre logicielle ou matérielle existante de l'algorithme de chiffrement lui-même sans aucune modification interne. Un masquage global génère une clé de chiffrement véritable et un ensemble de clés de chiffrement factices. Ces clés de chiffrement sont ensuite appliquées successivement dans un ordre aléatoire à un bloc de message dans de nombreuses boucles de l'algorithme de chiffrement. Par conséquent, une mise en œuvre du procédé de masquage global peut traiter une boucle de 64 opérations de l'algorithme de chiffrement. A l'intérieur de chaque boucle, on peut utiliser un accès aléatoire à la table pour prendre de manière aléatoire un index i qui n'a pas déjà été utilisé, de manière à prendre un Masque[i] dans la table de masquage. Une opération OU exclusif de manipulation de bits sur la clé de chiffrement avec le Masque[i] de premier ordre produit une clé masquée. Cette clé masquée est ensuite traitée avec le bloc de message dans l'algorithme de chiffrement, qui peut comporter la génération de sous-clés de ronde à partir de la clé masquée. Si l'index i est IndexMasklero, la clé masquée sera la véritable clé et le résultat de l'application de cette boucle de l'algorithme de chiffrement au bloc de message sera le véritable résultat qui est ensuite stocké dans la mémoire. Si l'index i est différent de IndexMasklero, la clé masquée sera une clé factice et les résultats factices sont stockés dans un emplacement factice de la mémoire. Une fois que toutes les boucles ont été exécutées, le résultat véritable peut être accédé depuis la mémoire. 8 Un autre procédé est le procédé de masquage interne . Cette technique modifie l'intérieur de l'algorithme de chiffrement pour appliquer des masquages à l'intérieur des sous-clés de ronde. A l'intérieur de chacune des rondes de chiffrement, tous les masques de la table de masquage sont appliqués successivement dans un ordre aléatoire à la sous-clé de ronde pour obtenir une sous-clé de ronde véritable et de nombreuses sous-clés factices pour la ronde. Ces sous- clés masquées sont utilisées pour traiter de multiples boucles d'une ronde de l'algorithme de chiffrement. En particulier, une mise en œuvre du procédé de masquage interne peut traiter une boucle de 64 opérations pour chaque ronde de chiffrement, un index i étant choisi de manière aléatoire parmi des valeurs d'index qui n'ont pas déjà été utilisées dans la ronde afin d'obtenir Mask[i] dans la table de masquage et l'appliquer à la sous-clé de ronde. Après avoir traité cette boucle de la ronde avec la sous-clé masquée, si l'index est IndexMasklero, il correspond à la véritable sous-clé, et le résultat correct de la ronde sera stocké dans la mémoire. Si l'index est différent de IndexMasklero, cela signifie que cette boucle de la ronde a été traitée avec une sous-clé factice, le résultat incorrect sera stocké dans un emplacement factice de la mémoire. Le résultat correct sera utilisé dans la ronde suivante, et les résultats factices seront écrasés. Le procédé aveugle déterministe de la présente invention peut s'appliquer à plusieurs algorithmes de chiffrement exécutés dans des moteurs cryptographiques matériels susceptibles de subir des attaques de canaux voisins et en particulier l'un quelconque des chiffrements de blocs symétriques utilisant des programmes clé, avec des opérations boîte S et un mélange de clés. A titre d'illustration, la description suivante sera donnée en référence à l'algorithme de chiffrement de données qui 9 constituait à l'origine la base de la norme de chiffrement de données DES), définie par le U.S. National Bureau of Standards (devenu aujourd'hui le National Institute of Standards and Technology), Federal Information Processing Standards (FIPS), publication 46-3, du 15 janvier 1977, et confirmée le 25 octobre 1999 (à présent retirée) et qui reste fortement répandue sous la forme de différentes variantes. En particulier, une variante connue sous le nom de triple DES (3DES) ou encore Triple Data Encryption Algorithm (TDEA) (algorithme de chiffrement de données triple) implique l'application de l'algorithme de chiffrement de données trois fois successivement avec des clés indépendantes, tel que décrit dans la publication spéciale NIST 800-67 (mai 2004). Une autre variante demandant moins de calculs est la DES-X qui, à l'aide d'une technique connue sous le nom de blanchiment de clé, augmente la taille effective de la clé en appliquant une opération OU exclusif sur un matériau de clé de 64 bits supplémentaires avant et après les rondes de DES de base (c'est-à-dire DES - XK,K1,K2(M) = DESK (K1 (D M) O+ K2). Ces variantes de DES ainsi que d'autres sont des approches qui permettent de réduire la vulnérabilité du DES à la recherche de clé exhaustive du fait de sa faible taille effective de clé. D'autres variantes encore modifient les tables de boîte S, le programme de clé, ou d'autres fonctions de base, dans un effort de mieux résister à la cryptoanalyse linéaire ou d'autres vulnérabilités potentielles contre lesquelles le DES n'était pas préparé à lutter. Le DES et ses variantes sont couramment utilisés en tant que moteur de chiffrement dans des cartes à puce qui, du fait de leur accessibilité aisée, sont particulièrement vulnérables aux attaques des canaux voisins. Le procédé aveugle déterministe de la présente invention réduit sensiblement cette vulnérabilité des cartes à puce et autres supports cryptographiques. 10 Le DES fonctionne sur des blocs de message de 64 bits avec 16 rondes identiques entre les permutations initiale et finale des blocs. Les modes de fonctionnement sont spécifiés pour l'application du DES à des messages plus longs qu'un bloc unique. Le DES utilise une clé de 64 bits (CLE), dans laquelle 8 bits sont utilisés uniquement pour le contrôle de la parité, de telle sorte que la longueur de clé effective est de 56 bits. Une fonction de programme de clé KS utilise la CLE pour générer 16 sous-clés K1 à K16, une pour chaque ronde. Pour le déchiffrement, les sous-clés sont générées et appliquées dans l'ordre inverse. La définition complète du programme clé KS implique une paire de choix permutés PC-1 et PC-2 (en général mis en oeuvre sous la forme de tables) et une série de rotations binaires de deux blocs de 28 bits de bits de clé choisis, tel que défini dans FIPS PUB 46-3. Toutefois, le dernier effet de ces opérations est que chaque sous-clé K1 à K16 peut être considérée comme une fonction séparée de la CLE exprimée sous la forme d'une liste donnant un choix spécifique permuté de 48 bits obtenus à partir de la CLE. Chacun des 56 bits de la CLE est utilisé en différents emplacements dans environ 14 des 16 sous-clés. Par exemple, la sous-clé K1 définie par la fonction de programme clé DES KS donne : 10 51 34 60 49 17 33 57 2 9 19 42 3 35 26 25 44 58 59 1 36 27 18 41 22 28 39 54 37 4 47 30 5 53 23 29 61 21 38 63 15 20 45 14 13 62 55 31 où les nombres représentent les bits choisis dans CLE et la sous-clé est organisée en 8 groupes de 6 bits chacun. Les 16 rondes DES présentent un schéma de Feistel dans lequel des blocs de message de 64 bits sont divisés en deux demi-blocs ( gauche et droit ) et sont traités en alternance dans des rondes successives d'une manière croisée (Li = Ri_1 et Ri = Li_1 Q+ f (Ri_1r Ki) pour les rondes i = 1 à 16). Le procédé de déchiffrement est semblable. Tel que représenté sur la figure 1, la fonction de chiffrement f(R,K) pour une ronde DES implique la combinaison de (1) une fonction d'extension E prenant le demi-bloc de 32 bits Ri_1 et donnant une sortie de 48 bits ; (2) une fonction de mélange de clés qui utilise une opération OU exclusif O+ de manipulation de bits pour combiner la sortie étendue de 48 bits avec: la sous-clé Ki de 48 bits pour cette ronde ; (3) une transformation de substitution non linéaire prenant la sortie mélangée de clé de 48 bits, en la divisant en huit éléments de 6 bits et en appliquant ces éléments en tant qu'entrées adressant respectivement huit tables de sélection ou boîtes S S1 à S8 de manière à obtenir un ensemble de huit sorties de 4 bits ; et (4) une fonction de permutation P qui agence de nouveau les 32 bits de sortie à partir des boîtes S. Chaque boîte S du DES S1 à s8 est une fonction qui associe une entrée de 6 bits à une sortie de 4 bits, tel que décrit dans FIPS PUB 46-3. Des groupes de 6 bits entrent dans chaque boîte S et choisissent l'une des 64 entrées de 4 bits. Le procédé de la présente invention garantit que les 64 possibilités de chaque boîte S sont accédées. Pour cela, une table de masquage contenant 64 masques est élaborée. Chaque masque de la table peut présenter une largeur de 8 octets, parmi lesquels 48 bits sont utilisés pour l'opération de masquage et les 16 bits restants (par exemple, deux bits de chaque octet) peuvent correspondre à : (a) huit bits de parité (ou autres bits de contrôle d'erreur) pouvant être calculés en appliquant la règle de la parité de la clé DES et (b) soit des bits supplémentaires pouvant être choisis d'une manière aléatoire soit calculés en les déduisant à l'aide du même mécanisme que celui utilisé pour les 48 bits, mais pour les boîtes S au cours d'une ou plusieurs rondes différentes. Les 48 bits utilisés pour le masquage forment un ensemble de huit valeurs de 6 bits comprises entre 0 et 63. Chacune des huit valeurs de 6 bits de l'ensemble correspond à une boîte S différente des huit boîtes S S1 à S8. (Remarque : afin de dissimuler l'identité du véritable masque par rapport aux masques factices et également pour dissimuler les valeurs factices utilisées, les bits du masque qui forment les huit valeurs n'ont pas besoin d'être extraits du masque dans un ordre consécutif cu croissant. Par exemple, on peut utiliser l'un des programmes clé, comme celui de la ronde un, pour obtenir les valeurs provenant de chaque masque. Par conséquent, les bits 10, 51, 34, 60, 49, et 17 peuvent être utilisés pour obtenir les valeurs de masquage correspondant à la boîte S S1.) La table de masquage la plus simple est la suivante, dans laquelle les colonnes Si à S8 présentent les équivalents décimaux des valeurs extraites de 6 bits attribuées à la boîte S pour chaque masque : Si S2 S3 S4 S5 S6 S7 S8 Masque [0] 0 0 0 0 0 0 0 0 Masque [1] 1 1 1 1 1 1 1 1 Masque [63] 63 63 63 63 63 63 63 63 Ici, chaque ligne de la table contient huit valeurs 25 identiques. Toutefois, d'autres tables de masquage peuvent être élaborées, à condition que dans une colonne donnée quelconque (correspondant à une boîte S particulière), toutes les valeurs possibles comprises entre 0 et 63 apparaissent une fois et une fois seulement. Il peut sinon y avoir un ordre aléatoire des valeurs dans chaque colonne. En général, l'un des masques, comme le Masque[O], contient toutes les valeurs 0 désignées par véritable masque. Au cours de l'opération de chiffrement utilisant le procédé de masquage global, tous les masques provenant de la table de masques reconstituée s'appliquent à la clé de chiffrement global avant le lancement de l'algorithme de chiffrement non modifié. L'algorithme de chiffrement dans son ensemble peut par conséquent se mettre en boucle plusieurs fois, en utilisant une clé masquée différente pour chaque boucle du chiffrement entier. L'une des clés masquées est la clé véritable, ce qui génère des sous-clés de ronde véritables en tant que partie de l'algorithme de chiffrement, toutes les autres clés masquées étant des clés factices qui génèrent des sous-clés factices et obtiennent des résultats factices. Les valeurs 0 sont attribuées à un masque unique, qui permet d'obtenir le résultat véritable lorsque ce masque est utilisé. Au cours du fonctionnement du chiffrement utilisant le procédé de masquage interne, tous les masques provenant de la table de masques pré-élaborée s'appliquent dans chaque ronde aux entrées de toutes les boîtes S. La figure 2 représente un exemple illustratif de l'application d'un masque représentatif des 64 masques, comme le Masque[15], à une première boîte S S1 au cours de la première ronde de chiffrement. Ceci illustre les modifications apportées à l'intérieur de l'algorithme de chiffrement lors de la mise en oeuvre du masquage interne. L'application de ce masque à d'autres boîtes S S2 à Sa est similaire, comme l'est 14 également l'application des autres masques, et également dans des rondes suivantes. Dans chaque ronde employant un masquage interne, la procédure se met en boucle 64 fois pour appliquer tous les masques, y compris le véritable masque, à la sous-clé et aux données. Les masques peuvent s'appliquer dans un ordre quelconque, par exemple dans un ordre aléatoire, qui peut être différent pour chaque ronde, à condition que chaque masque soit utilisé exactement une fois dans une ronde quelconque et à condition que le masque véritable soit connu du moteur de chiffrement. C'est-à-dire qu'un accès aléatoire à la table de masques peut être utilisé. L'identité du véritable masque peut être stockée dans un registre pour être comparée à un index lorsque la procédure se met en boucle à travers l'ensemble de masques. Les résultats véritables provenant des huit boîtes S sont retenus, par exemple, dans un registre ou une mémoire, jusqu'à ce que les 64 masques aient été appliqués, puis les véritables résultats sont transférés à l'étape suivante de l'algorithme de chiffrement. La fonction de permutation de DES P peut être appliquée simultanément au stockage des véritables résultats provenant des sorties de boîte S. Si on le souhaite, les résultats faux peuvent également être retenus dans un emplacement de mémoire factice et éventuellement permutés également, mais pas nécessairement transférés à la ronde suivante du chiffrement. Les entrées des huit boîtes S comprennent (1) un bloc de données étendu, DONNEES, obtenu à partir de la fonction d'extension DES E ; (2) la sous-clé de DES pour la ronde particulière, ici la sous-clé Kl ; et (3) le masque particulier appliqué, ici le Masque[15]. Tel que cela est courant pour le DES, les bits provenant du bloc de données étendu DONNEES sont attribués de manière consécutive aux huit boîtes S, avec les bits 1 à 6 pour Si, 7 à 12 pour S2, etc. Les bits de la sous-clé Kl sont de la même façon attribués de manière consécutive aux huit boîtes S, avec les bits 1 à 6 de K1 pour Si, les bits 7 à 12 de Kl pour S2, etc., mais iL faut se rappeler que la sous-clé K1 elle-même, comme les autres sous-clés des rondes suivantes, est une sélection et un nouvel agencement de bits provenant de la clé principale CLE. Des bits particuliers provenant du Masque[15], comme les autres masques de la table, sont choisis et classés de manière à extraire les valeurs à appliquer pour chaque boîte S, tel que cela a déjà été décrit ci-dessus. Ainsi, pour la première boîte S S1r les 10e, 51e, 34', 60e, 49e et 17e bits peuvent être extraits du Masque[15] pour obtenir la valeur, Masque[15]si, devant être appliquée pour Si. Cette valeur est ici illustrée par 101010 (ou le nombre décimal 42). Chacun de ces groupes de bits (masque, sous-clé, données) est combiné aux autres à l'aide d'une opération OU exclusif de manipulation de bits symbolisée par sur la figure 2. Le masque est ici représenté comme étant appliqué d'abord à la sous-clé puis la clé masquée obtenue est appliquée aux données. Toutefois, puisque l'opération OU exclusif de manipulation de bits est commutative et associative, elle peut réellement être appliquée aux trois groupes (masque, sous-clé et données) dans un ordre quelconque et toujours donner la même entrée de boîte S. En réalité, il serait certainement bénéfique de modifier l'ordre d'application pour les différents masques, boîtes S, et rondes, de manière à rendre plus obscures les opérations pour un observateur extérieur quelconque. Tel que mentionné ci-dessus, la procédure de masquage de la présente invention peut s'appliquer à des chiffrement autres que le DES et ses variantes. Par exemple, l'algorithme Rijndael, adopté comme Advanced Encryption Standard (AES) (norme de chiffrement avancée), et publié 16 dans NIST FIPS PUB 197, utilise une boîte S ayant des entrées et des sorties de 8 bits. Une table de masques de 256 (= 28) masques différents peut être élaborée, et appliquée en tant que partie de cette transformation AddRoundKey( ) de ce chiffrement. De nombreux autres algorithmes de chiffrement utilisent des boîtes S et des tables de substitution similaires et fournissent des opérations de mélange de clés du côté d'entrée de ces boîtes S. Un masquage déterminatif, tel que décrit dans le présent document pour le DES, s'applique à ce type de chiffrement. En référence à la figure 3, le matériel servant d'exemple permettant d'exécuter la mise en oeuvre de masquage globale de la présente invention est représenté. La mémoire 31 est une mémoire de lecture/écriture de données qui comprend des clés masquées. Un générateur de nombres aléatoires 32 génère des nombres aléatoires pouvant être utilisés par les autres unités, y compris l'index aléatoire i qui permet d'accéder à des lignes de la table de masques. Un générateur approprié quelconque connu dans la technique peut être utilisé. Une unité de génération de tables de masques 33 génère les entrées de la table de masques et les écrit dans la mémoire 31. Le séquenceur d'opérations 34 envoie des ordres aux autres unités afin de mettre leursactions en séquence. Au cours de chaque boucle de l'algorithme DES, une unité de masquage de clés 36 lit la clé de chiffrement ( véritable ) dans la mémoire 31, la masque avec une entrée provenant de la table de masques stockée dans la mémoire 31, et écrit la clé masquée dans la mémoire 31. L'unité de calcul de DES 37 lit la clé masquée et les données entrées (bloc de message texte de chiffre ou texte) à partir de la mémoire 31, exécute l'algorithme de chiffrement DES à l'aide de la clé masquée, comprenant la génération de sous-clés quelconques provenant de la clé 17 masquée, et écrit le résultat en tant que données de sortie de nouveau dans la mémoire 31. L'emplacement de mémoire utilisé pour stocker le résultat va dépendre du fait que la clé masquée est la clé véritable ou une clé factice. En référence à la figure 4, le matériel servant d'exemple quai permet d'exécuter la mise en oeuvre de masquage interne de --a présente invention est représenté. Comme la mise en oeuvre de matériel de masquage global, cette mise en oeuvre de masquage interne comporte également une mémoire 41, un générateur de nombres aléatoires 42 et une unité de génération de tables de masques 43, les fonctions de base de ces éléments étant sensiblement les mêmes que celles des unités correspondantes 31 à 33 du matériel de masquage global. Un séquenceur d'opérations 44 envoie de la même façon des ordres aux autres unités pour mettre leurs actions en séquence, mais la séquence de masquage interne diffère de la séquence de masquage global. Cette mise en oeuvre matérielle comporte en outre une unité de calcul initial de DES 45, une unité de masquage de sous-clé de ronde 46, une unité de calcul de ronde DES 47 et une unité de calcul final de DES 48. L'unité de calcul initial de DES 45 effectue des calculs de pré-ronde DES. En particulier, elle lit des données d'entrée (le bloc de messages de cryptogrammes ou texte en clair à traiter) dans la mémoire 41, exécute l'étape de traitement initiale du DES avant la première ronde (y compris un blanchiment de clé quelconque à partir du DES-X ou une variante semblable) et écrit le résultat de l'étape de nouveau dans la mémoire 41. En outre, l'unité 45 lit la clé de chiffre véritable dans la mémoire 41, génère un ensemble de sous-clés de ronde en conformité avec le programme de génération de clés DES défini et stocke les sous-clés de ronde de nouveau dans la mémoire 41. Selon une autre solution, la génération de sous-clés peut être effectuée sur une base ronde par ronde par 18 l'unité de calcul de rondes DES 47. Dans tous les cas, les sous-clés de ronde sont masquées par l'unité de masquage de sous-clé de ronde 46, qui lit la sous-clé correspondante dans la mémoire 41, la masque avec une entrée de la table de masques dans la mémoire 41 dans chaque boucle de la ronde et écrit la sols-clé masquée dans la mémoire 41. L'unité de calcul de ronde DES 47 lit la sous-clé masquée pour une boucle donnée de la ronde DES et les données d'entrée pour cette ronde provenant de la mémoire 41, effectue les calculs de ronde et écrit le résultat de nouveau dans la mémoire 41. L'emplacement de mémoire qui permet de stocker le résultat de cette boucle de la ronde va dépendre du fait que la sous-clé masquée est la sous-clé véritable pour cette ronde ou une sous-clé factice. Chaque ronde DES se met en boucle plusieurs fois jusqu'à ce que tous les masquages de la sous-clé de ronde aient été employés. Les données résultent de l'application de la sous-clé véritable dans l'entrée de données accédée depuis la mémoire 41 dans la ronde suivante. L'unité de calcul final de DES 48 lit le résultat de la ronde finale dans la mémoire 41, effectue des calculs post-ronde DES et écrit le résultat (le bloc de message complètement traité) de nouveau dans la mémoire 41. Les unités de traitement représentées dans ces exemples, à l'exception des unités de masquage 46 et 36, sont des composants classiques connus pour exécuter des DES ou autres algorithmes de chiffrement. Les mémoires 31 et 41 présentent des emplacements attribués pour stocker l'entrée de la table de masques, pour stocker à la fois des clés ou sous-clés véritables ou factices et pour stocker à la fois des résultats de traitement de données véritables et factices. Les unités de masquage 36 et 46 effectuent des opérations OU exclusif de manipulation de bits ou d'autres combinaisons logiques ou opérations arithmétiques sur des clés ou des sous-clés de ronde à l'aide des entrées de la table de masques pour générer les clés ou sous-clés véritables ou factices. Des variantes des exemples décrits ci-dessus peuvent être élaborés et adaptés facilement à différentes applications cryptographiques. Par exemple, avec un processeur assez rapide, et en prenant soin de désigner les adresses véritables et factices pour les résultats de données de ronde, les procédés de masquage global et interne conformes à la présente invention peuvent tous les deux être utilisés en combinaison avec les clés factices et véritables générées à partir de la technique globale et traitées en tant que clés de chiffrement pour appliquer le masquage interne à des ensembles correspondants de clés de ronde. REVENDICATIONS 1. Procédé de protection par chiffrement, comprenant : l'élaboration d'une table de masquage ayant une pluralité de masques, comportant un masque véritable ; l'application de tous les masques de la table de masquage à une clé de chiffrement afin de générer les clés masquées, y compris une clé véritable et une pluralité de clés factices, pour être utilisées dans de multiples boucles d'un algorithme de chiffrement ; l'exécution de multiples boucles d'un algorithme de chiffrement sur des données de message d'entrée pour obtenir des résultats de données de message traités, chaque boucle de l'algorithme de chiffrement étant exécutée en utilisant une clé masquée différente parmi des clés masquées jusqu'à ce que toutes les clés masquées aient été utilisées une fois, l'exécution d'une boucle de l'algorithme de chiffrement utilisant la clé véritable qui produit un résultat de données de message véritable, tandis que l'exécution d'une boucle de l'algorithme de chiffrement utilisant l'une des clés factices produit un résultat de données de message factice ; 25 et le stockage du résultat des données de message véritable dans un premier emplacement de mémoire et le stockage des résultats des données de message factices dans un ou plusieurs seconds emplacements 30 de mémoire. 20 2. Procédé selon la revendication 1, dans lequel les masques provenant de la table de masquage sont appliqués dans un ordre aléatoire. 3. Procédé selon la revendication 1, dans lequel l'application d'un masque de la table de masquage à la clé de chiffrement implique une opération OU exclusif de manipulation de bits, le masque générant la clé véritable étant composé de zéros exclusivement. 4. Procédé selon la revendication 1, dans lequel lors de l'exécution d'une boucle de l'algorithme de chiffrement, un ensemble de sous-clés de ronde est généré à partir de la clé masquée utilisée pour cette boucle de l'algorithme de chiffrement, la clé véritable générant un ensemble de sous-clés de ronde véritables devant être appliqué aux données de message dans des rondes d'une boucle de l'algorithme de chiffrement pour produire le résultat de données de message véritable, la pluralité de clés factices générant des ensembles correspondants de sous-clés de ronde factices devant être appliqués aux données de message dans des rondes de boucles respectives de l'algorithme de chiffrement pour produire des résultats de données de message factices. 5. Procédé selon la revendication 1, dans lequel l'algorithme de chiffrement comporte une ou plusieurs opérations de mélange de clés et une ou plusieurs opérations de substitution (boîte S). 6. Procédé selon la revendication 1, dans lequel l'algorithme de chiffrement comprend une variante du DES. 7. Procédé de protection par chiffrement, comprenant : l'élaboration d'une table de masquage ayant une pluralité de masques, comportant un masque véritable ; l'application, au cours de chaque ronde d'un chiffrement, de tous les masques de la table de masquage à une sous-clé et à un bloc de données en tant que partie d'une opération de mélange de clés pour cette ronde afin de masquer ladite opération de mélange de clés, l'application du véritable masque à la sous-clé et au bloc de données donnant des résultats identiques à ceux obtenus lors de l'application de la sous-clé et du bloc de données seuls dans l'opération de mélange de clés, et l'application de toute la pluralité de masques dans l'opération de mélange de clés donnant toutes les valeurs d'entrée de boîte S possibles pcur le chiffrement ; l'application des résultats de l'opération de mélange de clés masquées à des entrées d'une table de substitution ou boîte S du chiffrement ; et le passage à une étape suivante du chiffrement, utilisant les résultats de l'application du véritable masque, jusqu'à ce que toutes les rondes soient terminées. 8. Procédé selon la revendication 7, dans lequel la table de masquage comprend le véritable masque, et une pluralité de masques factices qui, lorsqu'ils sont appliqués à une sous-clé quelconque pour une ronde quelconque transforment25 en aveugle de manière efficace au moins certains bits de cette sous-clé, la transformation en aveugle produisant, avec le véritable masque, toutes les combinaisons possibles des valeurs d'entrée de boîte S pour le chiffrement. 9. Procédé selon la revendication 7, dans lequel les masques, sous-clé, et bloc de données dans une ronde de chiffrement quelconque sont subdivisés en une pluralité de blocs de n bits attribués séparément aux entrées de boîte S particulières, la table de masquage contenant 2n masques, chacune des 2n valeurs de n bits possibles apparaissant une fois et une fois seulement dans les blocs attribués séparément destinés aux masques. 10. Procédé selon la revendication 9, dans lequel les valeurs de n-bit attribuées à une entrée de boîte S particulière sont extraites d'un masque donné par une sélection et un classement prédéterminés des bits provenant de ce masque. 11. Procédé selon la revendication 9, dans lequel les blocs attribués séparément de masques, sous-clé, et bloc de données dans une ronde de chiffrement quelconque forment des entrées de boîte S qui permettent de distinguer les tables de boîte S du chiffrement. 12. Procédé selon la revendication 7, dans lequel l'application de la table de masquage à la sous-clé et au bloc de données en tant que partie de l'opération de mélangede clés implique une opération OU exclusif de manipulation de bits, le masque véritable comprenant un ensemble de valeurs zéro. 13. Procédé selon la revendication 7, dans lequel chaque masque de la table de masquage est accédé et appliqué au cours de l'opération de mélange de clés une fois et une fois seulement par ronde mais dans un ordre aléatoire, le véritable masque étant identifiable pour le chiffrement. 14. Procédé de protection par chiffrement pour un chiffre de chiffrement, le procédé comprenant : l'é:aboration d'une table de masquage ayant 2n masques, comportant un véritable masque, le véritable masque ayant un ensemble de valeurs zéro, les (2n - 1) autres masques étant des masques factices, chaque masque factice ayant un ensemble ordonné de valeurs de n bits attribuées à des boîtes S différentes du chiffrement, les 2n valeurs de n bit possibles des masques de la table de masquage étant chacune attribuées une fois à chacune des boîtes S ; l'application, au cours de chaque ronde d'un chiffrement, de tous les masques de la table de masquage à une sous-c=_é et les données en tant que partie d'une opération de mélange de clés pour cette ronde afin de masquer ladite opération de mélange de clés, la sous-clé et les données d'une ronde de chiffrement quelconque étant subdivisés en des blocs de n bits attribués séparément aux différentes boîtes S du chiffrement, l'opération de mélange de clés impliquant des opérations de manipulation de bits, l'application des valeurs zéro du véritable masque à lasous-clé et au bloc de données donnant des résultats identiques à ceux obtenus lors de l'application de la sous-clé et du bloc de données seuls au cours de l'opération de mélange de clés, et l'application de toute la pluralité de masques au cours de l'opération de mélange de clés donnant toutes les valeurs d'entrée de boîte S de n bits possibles pour chacune des boîtes S du chiffrement ; l'application des résultats de l'opération de mélange de clés masquées à des entrées des boîtes S du chiffrement ; et le passage à une étape suivante du chiffrement, utilisant uniquement les résultats de l'application du véritable masque, jusqu'à ce que toutes les rondes soient effectuées. 15. Procédé selon la revendication 14, dans lequel le chiffrement est une variante du DES utilisant l'algorithme de base défini dans une norme DES définie. 20 16. Procédé selon la revendication 14, dans lequel chaque masque factice présente un ensemble de valeurs identiques différentes de zéro, qui diffèrent des valeurs de tous les autres masques. 25 17. Procédé selon la revendication 14, dans lequel chaque masque factice présente des valeurs non nulles différentes à l'intérieur de l'ensemble.15 18. Procédé selon la revendication 14, dans lequel les valeurs de n bits attribuées à une entrée de boîte S particulière sont extraites d'un masque donné par une sélection et un classement prédéterminés des bits provenant de ce masque. 19. Procédé selon la revendication 14, dans lequel chaque masque de la table de masquage est accédé et appliqué au cours de l'opération de mélange de clés une fois et une fois seulement par ronde mais dans un ordre aléatoire, le masque véritable étant identifiable par le chiffrement.