FR 2869174 A1 20051021 FR 0503775 A 20050415 Procédé et dispositif pour déterminer un résultat. Description La présente invention concerne d'une manière générale, la détermination d'un résultat et est, par exemple, avantageuse pour la détermination de résultats, à mesure qu'ils apparaissent, au cours de l'exécution d'un algorithme de chiffrement. Dans certains algorithmes de chiffrement, on utilise des tables dites S. Des exemples de ces algorithmes de chiffrement sont par exemple, les algorithmes DES (norme de chiffrement de données) et AES (norme de chiffrement évolué). La figure 4 représente de façon simplifiée le fonctionnement de l'algorithme DES. Pour chiffrer les données, il les divise tout d'abord en blocs 900 de 64 bits pour les traiter au niveau du bloc. Ensuite, les blocs 900 sont tout d'abord soumis à une permutation 902. Puis, le bloc de données de 64 bits est divisé en deux blocs 904 et 906 de données de 32 bits. Ces blocs 904 et 906 de 32 bits sont soumis par itération, aux opérations suivantes, lors de 16 rondes. Tout d'abord, le contenu du bloc 906 de données, désigné D sur la figure 4, est mis en correspondance avec le bloc 904 de données de la ronde suivante, désigné G sur la figure 4. Ce mappage est indiqué par 908. Afin d'obtenir le nouveau contenu du bloc 906 D de données pour la ronde suivante, le contenu actuel du bloc 906 de données est soumis à une opération 910 E d'expansion pour obtenir un bloc de données de 48 bits, à partir du bloc de données de 32 bits, conformément à une règle d'élargissement déterminée à l'avance, selon laquelle certains bits sont doublés. À une étape 912, le bloc de données de 48 bits est ensuite chiffré par une opération 912 OU exclusif, à l'aide d'une clé de ronde de 48 bits qui est différente pour chaque ronde, mais qui est issue d'une seule et même clé 914 de 56 bits par une opération 916 que l'on n'explique pas plus en détail ici. Le bloc de données de 48 bits chiffré et élargi est de nouveau mis en correspondance avec un bloc de données de 32 bits, dans les tables S dites S1, S8, mentionnées ci-dessus. À cet effet, chaque table S met en correspondance six bits différents parmi les 48 bits du bloc de données chiffrées avec quatre bits, respectivement, les règles de mappage des tables S individuelles étant principalement définies par des normes. À la suite de ce mappage 918 de tables S, la valeur résultante est de nouveau soumise à une permutation 920, P puis le bloc de 32 bits permuté est soumis à une opération 922 OU exclusif avec le bloc 904 G de données de 32 bits de la ronde précédente. Le bloc de données de 32 bits combiné par OU exclusif représente le nouveau bloc 906 D de données de 32 bits de la prochaine ronde. Cette ronde définie par les étapes 908, 910, 912, 918, 920 et 922 s'accomplit 16 fois. Après les 16 rondes, les blocs G et D (904, 906) résultants de données de 32 bits sont de nouveaux réunis en un bloc de données de 64 bits et soumis à une permutation 924 de sortie, inverse de la permutation 902, le résultat étant le bloc final de données de sortie 64 bits sous forme chiffrée, indiqué par 926. Lors de l'exécution d'un algorithme de chiffrement, tel que l'algorithme DES, expliqué à titre d'exemple, ci-dessus, sur une base matérielle, des informations relatives à l'opération traitée et aux données utilisées, telles qu'en particulier, les clés de rondes, sont divulguées par des voies latérales, telles qu'une alimentation en courant ou un rayonnement électromagnétique. Ces informations peuvent être utilisées ensuite, à l'aide de DPA (analyse de différentiel de puissance) ou de DMA (analyse de différentiel électromagnétique) pour percer des secrets, tels que la clé maîtresse de l'algorithme DES, sur laquelle reposent les clés de rondes. On peut illustrer cela par rapport à l'algorithme DES de la figure 4, de la manière suivante. Ainsi qu'on l'a mentionné ci-dessus, les règles de mappage des diverses tables S sont connues. De plus, chaque accès au profil de puissance ou au profil du rayonnement électromagnétique du circuit exécutant l'algorithme DES, est détectable par certains profils de caractéristiques corrélés aux adresses d'entrée dans les tables S. Avec l'algorithme DES, il existe un risque particulier que les adresses d'entrée arrivant aux tables S, soient chiffrées avec les clés de rondes secrètes qui sont dérivées de la clé 914 maîtresse secrète, d'une manière définie à l'avance par la norme. Pour cette raison, il est possible de tirer des conclusions quant à la clé 914 maîtresse, à partir d'analyses de profil de courant ou d'analyses du rayonnement électromagnétique émis, pendant les mappages 918, au moyen de la corrélation avec le profil de courant du circuit mettant en oeuvre l'algorithme. Ainsi qu'on l'a mentionné ci-dessus, les algorithmes de chiffrement DES et AES ne sont pas les seuls dans lesquels des données sont chiffrées au moyen de tables S. Dans tous ces algorithmes, une analyse par différentiel de courant ou une analyse du rayonnement électromagnétique émis permet une attaque de données secrètes, de la manière décrite ci- dessus. Si des tables S non protégées sont utilisées pour le chiffrement de mémoire dans un micro-contrôleur, même des algorithmes de chiffrement logiciels, s'exécutant sur le processeur et obtenant des données à partir des mémoires chiffrées peuvent être attaqués par attaque ADP. Pour éviter cela, il est donc nécessaire de minimiser le rayonnement utilisable ou de le cacher, de manière à ce qu'il ne devienne pas utilisable ou à ce qu'il ne devienne utilisable qu'au prix d'un gros effort. Jusqu'à présent, on n'a pas résolu ce problème de façon adéquate. Bien qu'il soit possible d'améliorer la sécurité contre les attaques ADP, à cet égard, par l'utilisation d'une technologie de circuits à double rail totalement personnalisée, l'utilisation de cette technologie de circuits implique un effort très important qui ne semble pas justifié dans toutes les applications. D'autres approches possibles seraient, par exemple, une exécution de programme aléatoire qui pourrait néanmoins, être reconnue à partir du profil de fuite, l'exécution de calculs critiques avec des données protégées par un masque jetable, la production de bruit, l'introduction d'une instabilité dans l'exécution du code et/ou l'horloge du système ou analogues. Néanmoins, ces possibilités ne sont pas très efficaces, en partie ou sont bloquées par des brevets de tiers. Par conséquent, la présente invention vise à proposer un procédé pour déterminer un résultat permettant une sécurité accrue contre des attaques cryptographiques, telles que des attaques ADP ou ADEM, moyennant un effort acceptable. Un dispositif de l'invention pour déterminer un résultat comprend un moyen destiné à déterminer un premier et un deuxième résultat intermédiaire, dans lequel le résultat est fonction du premier et du deuxième résultat intermédiaire, et un moyen destiné à déterminer de façon aléatoire une séquence, dans laquelle le moyen de détermination effectue la détermination du premier et du deuxième résultat intermédiaire. L'idée centrale de la présente invention est que l'on peut obtenir une réduction des informations de fuite moyennées, lors de l'exécution d'algorithmes de chiffrement, en déterminant les résultats ou des résultats partiels qui apparaissent au cours de l'exécution de cet algorithme et qui sont eux-mêmes fondés sur des résultats intermédiaires, de sorte que la séquence selon laquelle les résultats intermédiaires sont déterminés, est déterminée de façon aléatoire. La présente invention utilise le fait que d'une part, cela ne soit pas pertinent pour la détermination d'un résultat à partir de deux résultats intermédiaires par rapport au résultat de la détermination de l'ordre dans lequel les résultats intermédiaires sont déterminés, que d'autre part, néanmoins, les fuites d'informations détectables de l'extérieur, c'est-à-dire la corrélation de données secrètes avec la consommation d'énergie et/ou la puissance électromagnétique émise ou analogue, soient réduites, lorsque les résultats intermédiaires sont déterminés dans un ordre aléatoire, du fait que même lorsque les mêmes données d'entrée sont utilisées pour l'algorithme lors de l'exécution l'algorithme de chiffrement, les profils de fuites résultants diffèrent. Cela augmente le nombre de moyennages nécessaires du côté de l'assaillant ce qui peut être décisif quant au succès ou à l'échec d'une attaque. La présente invention est particulièrement avantageuse lorsque la détermination des résultats intermédiaires comprend la consultation d'une ou plusieurs table(s) de conversion, du fait qu'en particulier dans le cas d'accès à la mémoire, des corrélations sur l'adresse, telles qu'elles apparaissent, par exemple, lors des accès à des tables S de chiffres de blocs connus, tels que les algorithmes DES ou AES, représentent un grand risque de fuite. En particulier, une protection efficace par le matériel, par exemple, au moyen d'une technologie de circuits à double rail, est très difficile à réaliser ici, du fait des systèmes de mémoire le plus souvent très étendus. Toutefois, une ronde de chiffrement de chiffres de blocs consiste généralement en plusieurs accès à des tables S indépendantes, à savoir huit accès parallèles, indépendants les uns des autres à huit tables S différentes, dans le cas du DES et 16 accès indépendants à une table S commune, dans le cas de l'AES, de sorte que l'on peut utiliser l'invention d'une manière particulièrement efficace ici, par rapport aux accès aux tables S, du fait que le nombre de séquences d'exécution possibles à partir de laquelle on en détermine une de façon aléatoire, est grand. Un mode de réalisation de la présente invention fait usage de cette propriété et permet une réduction efficace des fuites d'information moyennées lors d'accès à la mémoire, qui sont nécessaires pour les ADP/ADEM, où la réduction ne peut pas être annulée par des procédés d'attaques externes, de sorte que ce type d'attaques est rendu considérablement plus difficile voire impossible. Conformément à ce mode de réalisation, le moyen destiné à déterminer les résultats intermédiaires sur lesquels le résultat final est fondé, comprend une ou plusieurs table(s) de conversion. On définit un résultat intermédiaire en tant que résultat de la consultation de la table de conversion et/ou de l'une des tables de conversion, à l'aide d'une donnée d'entrée associée au résultat intermédiaire. Néanmoins, les opérations de consultation et/ou de substitution s'effectuent dans une séquence aléatoire, au lieu d'une séquence constante déterminée à l'avance. Suivant un mode de réalisation spécial de la présente invention, le caractère aléatoire de l'exécution de la détermination des résultats intermédiaires s'obtient par détermination aléatoire de l'une des déterminations de résultats intermédiaires, en tant que première détermination de résultat intermédiaire de départ, à partir de laquelle les déterminations des résultats intermédiaires restantes s'effectuent selon une séquence cyclique constante déterminée à l'avance. Le nombre des séquences d'exécution possibles se limite au nombre des résultats intermédiaires de ce mode de réalisation, mais la mise en oeuvre est simple, dès lors qu'une seule valeur aléatoire doit être déterminée. La présente invention est avantageuse en outre, en ce qu'elle peut être mise en oeuvre dans des codes de programmes existants d'algorithmes de chiffrement, de telle sorte qu'il n'est pas nécessaire d'accéder par branchement à différentes parties de code de programme pour réaliser la séquence d'exécution aléatoire différente, mais que la séquence d'exécution aléatoire peut s'exécuter avec un seul et même code de programme, uniquement à l'aide de manipulations intelligentes d'adresses et/ou de manipulation de pointeurs. Par conséquent, l'assaillant ne peut pas tirer de conclusions quant à la séquence d'exécution déterminée de façon aléatoire, pas même en observant le compteur de programme et/ou le profil de traitement du programme. De préférence: - le moyen de détermination comprend un moyen pour obtenir un résultat de dérivation à partir d'un opérande d'entrée de dérivation, et le moyen de détermination est conçu pour faire en sorte que le moyen de dérivation reçoive un premier opérande d'entrée, en tant que premier opérande d'entrée de dérivation pour obtenir le premier résultat intermédiaire, en tant que résultat de dérivation, et un deuxième opérande d'entrée, en tant qu'opérande d'entrée de dérivation pour obtenir le deuxième résultat intermédiaire, en tant que résultat de dérivation, dans la séquence déterminée de façon aléatoire. - les moyens de détermination comprennent le premier moyen pour obtenir un premier résultat de dérivation à partir d'un premier opérande d'entrée de dérivation, et un deuxième moyen pour obtenir un deuxième résultat de dérivation à partir d'un deuxième opérande d'entrée de dérivation, et dans lequel le moyen de détermination est conçu pour faire en sorte que le premier moyen de dérivation reçoive un premier opérande d'entrée, en tant que premier opérande d'entrée de dérivation pour obtenir le premier résultat intermédiaire, en tant que premier résultat de dérivation, et que le deuxième moyen de dérivation reçoive un deuxième opérande d'entrée de dérivation, en tant que deuxième opérande d'entrée de dérivation pour obtenir le deuxième résultat intermédiaire, en tant que deuxième résultat de dérivation, dans la séquence déterminée de façon aléatoire. - le moyen de dérivation et/ou les différents moyens de dérivation comprend/comprennent une table de conversion et est/sont conçu(s) pour accéder à une table de conversion pour obtenir le résultat de dérivation à l'aide de l'opérande d'entrée de dérivation, en tant qu'adresse pour obtenir le résultat de dérivation. - le premier opérande d'entrée et le deuxième opérande d'entrée proviennent de différentes positions binaires d'une donnée d'entrée. Le dispositif comprend, en outre: - un moyen pour former le résultat à partir du premier résultat intermédiaire et du deuxième résultat intermédiaire. - le moyen de formation est conçu pour obtenir le résultat en réunissant ou en combinant au niveau du bit des bits du premier résultat intermédiaire et des bits du deuxième résultat intermédiaire. Une série de N résultats intermédiaires existe dans le dispositif, et le moyen de détermination comprend N tables de conversion, dont chacune est associée à une adresse de base différente d'une série de N adresses de base, dans lequel le moyen destiné à déterminer une séquence de façon aléatoire, est conçu pour déterminer une valeur de départ aléatoire 0 j Une série de N résultats intermédiaires existe dans le dispositif, et le moyen de détermination comprend une table de conversion, dans lequel le moyen destiné à déterminer une séquence est conçu pour déterminer une valeur de départ aléatoire 0 j Le moyen de consultation est conçu pour incrémenter modulo N la valeur j, après consultation pour obtenir une nouvelle valeur de j, et pour répéter la consultation pour la nouvelle valeur de j. N résultats intermédiaires existent dans le dispositif dont le résultat est fonction, et dans lequel, parmi les déterminations des N résultats intermédiaires, une séquence cyclique est définie, dans laquelle les déterminations sont exécutées, dans lequel le moyen de détermination est conçu pour déterminer une détermination de l'un des N résultats intermédiaires de façon aléatoire, à l'aide duquel l'exécution des déterminations des N résultats intermédiaires, suivant la séquence cyclique, commence. - le dispositif fait partie d'un contrôleur de chiffrement. - le résultat de calcul fait partie d'un résultat final ou d'un résultat 25 intermédiaire d'un algorithme de chiffrement. L'invention vise aussi un procédé pour calculer un résultat, comprenant les étapes consistant à : déterminer un premier résultat intermédiaire et un deuxième résultat intermédiaire; dans lequel le résultat est fonction du premier résultat intermédiaire et du deuxième résultat intermédiaire, et dans lequel le procédé comprend, en outre les étapes consistant à : déterminer de façon aléatoire une séquence, dans laquelle les étapes de détermination sont exécutées. L'invention vise aussi un programme informatique avec un code de programme pour mettre en oeuvre le procédé de l'invention lorsque le programme informatique s'exécute sur un ordinateur. On explique plus en détail dans ce qui suit, des modes de réalisation préférés de la présente invention, en référence aux dessins annexés, dans lesquels: la figure 1 est un schéma de principe sous forme de blocs d'un dispositif pour déterminer un résultat suivant un mode de réalisation de la présente invention; la figure 2 est un schéma de principe sous forme de blocs d'un dispositif pour déterminer un résultat, suivant un autre mode de réalisation de la présente invention; la figure 3a est une illustration simplifiée de la structure du bloc de données d'entrée, avant la substitution par tables S, dans un algorithme DES; la figure 3b est une illustration simplifiée de l'agencement des tables de conversion de tables S, dans un espace d'adressage linéaire, suivant un mode de réalisation de la présente invention; la figure 3c est une illustration simplifiée de la structure d'une adresse pour substituer un mot et/ou un bloc de 6 bits au bloc de données d'entrée de la figure 3a, pour accéder à l'une des tables de consultation de la figure 3b, suivant un mode de réalisation de la présente invention; la figure 3d est un pseudo-code de programme pour la mise en oeuvre d'une exécution aléatoire des opérations de tables S, dans une opération de substitution d'une ronde d'un algorithme DES, suivant un mode de réalisation de la présente invention; et La figure 4 est un schéma pour illustrer l'algorithme DES. Il convient de souligner tout d'abord, que l'on a donné à des éléments identiques les mêmes références numériques sur les figures 1 et 2 et que l'on a omis de répéter la description des éléments. La figure 1 représente un dispositif pour déterminer un résultat C, suivant un mode de réalisation de la présente invention. À titre d'exemple, on suppose dans la description suivante, que le résultat C est soit le résultat, soit un résultat intermédiaire d'un algorithme de chiffrement. Le dispositif généralement indiqué par 10 sur la figure 1, détermine le résultat C, sur la base de deux opérandes d'entrée ou ensembles d'opérandes d'entrée A et B. En conséquence, le dispositif 10 comprend une entrée 12 pour A, une entrée 14 pour B et une entrée 16 pour C. En outre, le dispositif 10 comprend des premier 18 et deuxième 20 moyens de détermination de résultats intermédiaires, respectivement, un moyen 22 destiné à former le résultat C, à partir de résultats intermédiaires des moyens 18, 20 de détermination de résultats intermédiaires et un moyen 24 destiné à déterminer une séquence d'exécution. Le moyen 18 de détermination de résultats intermédiaires est monté entre l'entrée 12 et le moyen 22. De façon correspondante, le moyen 20 de détermination de résultats intermédiaires est monté entre l'entrée 14 et le moyen 22. Le moyen 22 émet en sortie le résultat C, à la sortie 16. Le moyen 24 destiné à déterminer la séquence fonctionne à l'aide de moyens correspondants, tels que les moyens 18 et 20 eux-mêmes ou des moyens non représentés entre les entrées 12 et 14 d'une part, et les moyens 18 et 20 de détermination de résultats intermédiaires d'autre part, pour déterminer et/ou commander de façon aléatoire la séquence du traitement des opérandes A et B d'entrée, à l'aide des moyens 18 et 20 de détermination de résultats intermédiaires, ainsi qu'on le décrit dans ce qui suit. Après avoir décrit ci-dessus la structure du dispositif 10 de la figure 1, on décrit son fonctionnement, dans ce qui suit. Les moyens 18 et 20 de détermination de résultats intermédiaires déterminent un résultat intermédiaire, d'après les opérandes et/ou ensembles A et B d'opérandes d'entrée, respectivement, suivant une opération déterminée à l'avance. L'opération déterminée à l'avance peut par exemple, comprendre la consultation d'une table de conversion, sur la base de l'opérande et/ou de l'ensemble A et/ou B d'opérandes ou la combinaison logique et/ou arithmétique des opérandes d'entrée de l'ensemble d'opérandes d'entrée A et/ou B pour obtenir le résultat intermédiaire respectif. Un exemple de combinaison arithmétique serait une multiplication modulaire ou une addition modulaire de deux opérandes d'entrée. Après avoir reçu les résultats intermédiaires, en provenance des moyens 18 et 20 de détermination de résultats intermédiaires, le moyen 22 forme le résultat C, à partir des résultats intermédiaires de ces moyens. La formation du résultat C peut par exemple, consister à réunir une représentation binaire des deux résultats intermédiaires et une représentation binaire du résultat C. Dans ce cas, le moyen 22 ne se manifeste qu'en ce que le résultat C est traité par ailleurs, au cours de l'exécution ultérieure de l'algorithme de chiffrement ou en ce que le résultat C représente le résultat, tel que le chiffre ou l'algorithme de chiffrement lui-même. Toutefois, le moyen 22 pourrait former en outre, le résultat également à partir des résultats intermédiaires, à l'aide d'opérations arithmétiques ou logiques, telles qu'une combinaison arithmétique ou logique des deux résultats intermédiaires, telle qu'une opération OU exclusif au niveau du bit sur les deux résultats intermédiaires des moyens 18 et 20. Le matériel sur lequel les moyens 18 et 20 de détermination de résultats intermédiaires reposent, tels que le processeur ou la mémoire qui fait l'objet d'accès, ainsi qu'on le décrit dans ce qui suit, livre des informations sur les opérandes A et/ou B d'entrée à l'extérieur et/ou divulgue des informations sur les opérandes A et/ou B d'entrée. Cela vaut en particulier, lorsque l'opération exécutée par ces moyens 18 et 20 est une opération de substitution, à savoir la consultation d'une table de conversion par un accès par la mémoire à la table de conversion mémorisée. Afin de réduire le risque de fuite par attaque ADP/ADEM, le moyen 24 détermine de façon aléatoire à l'avance, c'est-à-dire avant l'exécution des déterminations de résultats intermédiaires par les moyens 18 et 20, une séquence dans laquelle les moyens 18 et 20 de détermination de résultats intermédiaires détermineront leur résultat intermédiaire respectif. Dans le présent cas simple de seulement deux résultats intermédiaires à déterminer, il suffit que le moyen 24 détermine de façon aléatoire l'une des deux valeurs 0 ou 1. En fonction de la valeur qui a été déterminée de façon aléatoire, le moyen 24 fait en sorte que le premier des deux moyens 18 et 20 de détermination de résultats intermédiaires détermine son résultat aléatoire à partir de la donnée A ou B d'entrée, fournie et/ou associée à celui-ci, et ce n'est qu'après cela que l'autre des deux moyens 18 et 20 de détermination de résultats intermédiaires déterminera son propre résultat intermédiaire, sur la base de l'opérande B ou A, respectivement, qui lui est associé et qu'il le transmettra au moyen 22. À cet effet, le moyen 24 commande par exemple, des registres appropriés pour transmettre A à 18, puis B à 20 ou vice versa. L'avantage est que l'assaillant nécessite un plus grand nombre de moyennages, dans le présent cas, un nombre de moyennages augmenté par le facteur 4, à partir du profil de courant et/ou du rayonnement électromagnétique émis pour obtenir des informations secrètes concernant un algorithme de chiffrement comprenant le résultat C, en tant que clé maîtresse. Toutefois, il convient de souligner, en référence à la figure 1, que l'on peut mettre en oeuvre le dispositif 10 à la fois complètement dans un matériel et également partiellement dans un matériel et un logiciel. En particulier, il serait possible que, outre l'exécution séquentielle de la détermination des résultats intermédiaires, telle que décrite ci-dessus, les moyens 18 et 20 de détermination de résultats intermédiaires soient également capables de déterminations de résultats intermédiaires simultanées. Afin de minimiser l'état inactif des deux moyens 18 et 20 dans ce cas, engendré par la présente invention et/ou le décalage dans le temps provoqué de façon aléatoire et artificielle dans l'exécution, dès lors qu'il existe des moments où un seul des moyens de détermination de résultats intermédiaires calcule son résultat intermédiaire et où l'autre ne le fait pas, on pourrait prévoir d'utiliser le moyen de détermination de résultats intermédiaires, actuellement à l'état inactif, à d'autres fins que la détermination du résultat C, c'est-à-dire par exemple, lors d'une opération s'exécutant parallèlement sur un processeur. Ainsi qu'on le décrira en référence au mode de réalisation des figures 3a à 3d, l'opération sur laquelle les moyens de détermination de résultats intermédiaires se fondent, peut également être une opération de substitution et/ou la consultation d'une table de conversion, au moyen d'un accès à la mémoire, par exemple à l'intérieur d'une carte à puce dotée d'un processeur et du mémoire associée. Dans ce cas, les moyens 18 et 20 de détermination de résultats intermédiaires sont par exemple, des commandes de mémoire qui chargent le contenu de mémoire provenant d'une mémoire, à des adresses qui sont fonction des opérandes A et/ou B d'entrée, le contenu de mémoire chargé représentant les résultats intermédiaires. Ainsi qu'on l'a indiqué en référence à la figure 3d, les moyens 18 et 20 de détermination de résultats intermédiaires peuvent même mettre être mis en oeuvre par les même lignes du code de programme. Dans ce cas, les moyens 18 et 20 de détermination de résultats intermédiaires sont fondamentalement réglés à une détermination de résultats intermédiaires séquentielle, du fait du traitement séquentiel du programme. Dans ce cas, le moyen 24 est un programme veillant à ce que la partie de programme mettant en oeuvre les moyens 18 et 20, exécute les déterminations de résultats intermédiaires, dans la séquence déterminée de façon aléatoire. Dans le cas d'un même code de programme mettant en oeuvre les moyens 18 et 20, les deux moyens 18 et 20 ne diffèrent que par les emplacements et/ou zones de mémoire différent(e) s, auxquel(Ile)s la table de conversion du moyen 18 de détermination de résultats intermédiaires d'une part, et la table de conversion du moyen 20 de détermination de résultats intermédiaires d'autre part, sont mémorisées, ainsi qu'onexpliquera ultérieurement plus en détail, en référence à la figure 3b, à titre d'exemple sur la base d'un algorithme DES. Dans le mode de réalisation de la figure 1 décrit ci-dessus, on a utilisé les moyens 18 et 20 de détermination de résultats intermédiaires pour la détermination des deux résultats intermédiaires, les moyens ayant été différents au moins par rapport à l'emplacement de mémoire de la table de conversion respective, le matériel respectif ou le code de programme respectif ou analogues. Le mode de réalisation décrit ci-dessous en référence à la figure 2 diffère du précédent en ce que l'on utilise un seul et même moyen de détermination de résultats intermédiaires pour la détermination des deux résultats intermédiaires. Outre les deux entrées 12, 14, la sortie 16 et les moyens 22 et 24, le dispositif de la figure 2 généralement indiqué par 10' ne comprend donc qu'un moyen 26 commun de détermination de résultats comprenant une sortie connectée à une entrée du moyen 22 et une entrée qui peut être connectée de façon sélective soit à l'entrée 12 soit à l'entrée 14, à l'aide du moyen 28 de commutation. En fonction de la séquence déterminée de façon aléatoire, le moyen 24 commande le moyen 28 de commutation, de sorte que tout d'abord, l'opérande d'entrée et/ou l'ensemble A d'opérandes d'entrée et après seulement, l'opérande d'entrée et/ou l'ensemble d'opérandes d'entrée B sont acheminés vers le moyen 26 de détermination de résultats intermédiaires ou vice versa. En fait, le moyen 24 détermine ainsi de façon aléatoire, la séquence d'exécution de la détermination du résultat intermédiaire obtenu à partir de A et du résultat intermédiaire obtenu à partir de B. Ainsi qu'on l'a expliqué par rapport au mode de réalisation de la figure 1, le dispositif 10' peut être mis en oeuvre dans un matériel ou via une combinaison de matériel et de logiciel. Dans le cas d'une mise en oeuvre dans un matériel, le moyen 28 de commutation est par exemple, un multiplexeur dont l'entrée de commande est commandée de façon aléatoire par le moyen 24, de sorte que le multiplexeur achemine de façon aléatoire soit l'opérande A soit l'opérande B vers le moyen 26 de détermination de résultats intermédiaires. Dans le cas d'une mise en oeuvre sur la base d'un logiciel, la partie de programme mettant en oeuvre le moyen 26 de détermination de résultats intermédiaires est par exemple, une partie de programme qui charge et traite de façon cyclique les opérandes 12 et 14 d'entrée, fournis à des registres déterminés à l'avance, selon une séquence qu'il obtient à partir d'informations aléatoires qui à leur tour lui ont été fournies par une partie de programme mettant en oeuvre le moyen 24, à une adresse mémoire déterminée à l'avance. Non seulement le code de programme mettant en oeuvre les moyens de détermination de résultats intermédiaires, mais aussi les emplacements de mémoire que ce code utilise pour déterminer le résultat intermédiaire à partir de A et le résultat intermédiaire à partir de B, c'est-à-dire par exemple, la table de conversion, sont égaux sur la figure 2, contrairement au mode de réalisation de la figure 1. Après les modes de réalisation des figures 1 et 2, décrits d'une manière générale ici, dans ce qui suit, on décrit un mode de réalisation spécifique d'une application de la présente invention, à savoir au moyen de l'exemple de l'opération de substitution dans les rondes d'un algorithme DES, indiquées par la référence numérique 918 sur la figure 4. Pour éviter des répétitions, il convient de se reporter à la partie d'introduction de la description pour la description de l'algorithme DES. L'opération 918 de substitution d'un algorithme DES comprend huit accès indépendants à huit tables S différentes et/ou tables S1 à S8 de conversion. La donnée d'entrée de l'opération 918 de substitution constitue le bloc de données de 48 bits chiffré avec la clé de ronde et étendu de 32 à 48 bits, illustré à titre d'exemple sur la figure 3 et indiqué par la référence numérique 30. la figure 3a représente le bloc de données de 48 bits, en tant que rangée de tables qui sont supposées représenter les bits du bloc 30 de données d'entrée, la numérotation des tables spécifiant la position binaire correspondante des bits individuels. Ainsi que l'indique la figure 3a, le bloc 30 de données est divisé en huit mots de 6 bits MOT1 à MOT8 qui sont composés de six bits différents du bloc 30 de données de 48 bits, respectivement, ainsi que l'illustre la figure 3a. Afin de mettre en oeuvre l'algorithme DES pour ce qui concerne son opération de substitution, on peut disposer les tables S et/ou les tables de conversion associées, de façon consécutive, dans un espace d'adressage linéaire, ainsi que l'indique à titre d'exemple, la figure 3b. Chaque table S S1 à S8 est fournie pour mettre en correspondance une valeur de 6 bits qui lui est associée, c'est-à-dire que la table S1 met en correspondance MOT1, la table S2 met en correspondance MOT2, etc., avec une valeur de sortie de 4 bits qui produit conjointement, à son tour, le bloc de données de sortie de 32 bits qui est ensuite soumis à la permutation 920. La taille de chaque table S et donc de 4. 26 bits = 32 octets. Selon le mode de réalisation de la figure 3b, les tables S S1 à S8 sont disposées directement l'une après l'autre et occupent donc 8. 32 octets = 256 octets, au total. Chaque table S commence à une adresse de base, c'est-à-dire l'adresse de base 1, l'adresse de base 2, etc. L'accès à l'une des tables S S1 à S8 en vue d'obtenir la valeur de sortie pour le mot respectif MOT1 à MOT8 peut s'effectuer ici, à l'aide d'un agencement approprié de l'adresse de base 1 dans l'espace d'adressage linéaire, au moyen d'une adresse qui, par rapport à une unité minimum adressable d'un demi-octet, possède la structure représentée à titre d'exemple sur la figure 3c et qui est généralement indiquée par 32. Ainsi qu'on peut le voir, l'adresse 32 d'accès est une adresse de 9 bits dont les trois bits de poids fort (MSB) sont une représentation binaire de 3 bits du mot numéro # moins 1 et dont les six bits de poids faible (LSB) sont une représentation binaire et/ou les 6 bits du mot mot# de 6 bits avec le numéro # correspondant du mot lui-même. Le mot de sortie de 4 bits avec lequel le MOT3 doit être mis en correspondance par la table S S3, s'obtient donc dans ce mode de réalisation par exemple, par la lecture du contenu de la mémoire et/ou du demi-octet à l'adresse 32 {0, 1, 0, premier bit de MOT3, deuxième bit de MOT3, ..., sixième bit de MOT3}. Suivant un mode de réalisation de la présente invention, un code d'algorithme mettant en oeuvre l'algorithme DES de la figure 4 contiendrait au moins une partie de code de programme correspondant à celle de la figure 3d, c'est-à-dire un code machine mettant en oeuvre les commandes contenues dans le pseudo-code de figure 3d, par exemple, ainsi que le dicte un compilateur. La partie de pseudo-code illustrée sur la figure 3d, généralement indiquée par 34, serait chargée de l'opération 918 de substitution à l'intérieur du code d'algorithme DES. Ainsi qu'on peut le voir, tout d'abord, une valeur aléatoire comprise entre 0 et 7 est attribuée à une variable j dans la partie 34 de programme. Traduite en code machine, cette valeur serait ensuite mémorisée à une position de mémoire définie fixe. Par la suite, vient le commencement d'une boucle de programme en 38, au début de laquelle une valeur i de compteur est initialisée à zéro (40) , à la fin des itérations de la boucle, la valeur i de compteur étant toujours incrémentée de 1 directement avant une itération suivante et la boucle se terminant lorsque la valeur i de compteur dépasse la valeur 7 après une itération de boucle (42). À l'intérieur de chaque itération de boucle, la valeur i de compteur et la valeur j aléatoire sont soumises à une addition modulo 8 et le résultat est donné à une variable z(44). En code machine, cela s'effectuerait de nouveau par mémorisation de la variable z à une position de mémoire fixe, déterminée à l'avance. En tant que deuxième étape de chaque boucle de programme, le contenu de la mémoire à l'adresse 32 d'accès est ensuite extrait d'une matrice mémoire commençant à l'adresse de base adresse(z) de base, à une étape 46, c'est- à-dire à l'adresse qui résulte de l'adresse de base adresse(z) de base incrémentée de la valeur de décalage et/ou de l'adresse de décalage in(z) qui doit correspondre à la valeur du mot MOT(z) provenant du bloc 30 de données et qui s'obtiendrait en code machine, par exemple, par une commande LOAD par rapport à une matrice mémoire agencée de façon fixe, commençant à une adresse fixe, au moyen de z en tant que valeur de décalage. Le résultat de l'opération 46 d'extraction est mémorisé dans un champ de matrice mémoire agencée de façon fixe, de huit positions de mémoire, en tant que variable out(z) à la zème position. Traduite en code machine la ligne 46 de commande contiendrait plusieurs lignes de commande qui toutefois, mémoriseraient toujours le résultat de l'extraction à l'un des 8 emplacements de mémoire fixes dont chacun est associé à l'un différent des mots MOT1 à MOT8. La fonction de la partie 34 de code de programme consiste à déterminer tout d'abord, de façon aléatoire par la détermination de la valeur j aléatoire, à l'étape 36, celle des opérations de tables S S1 à S8 parmi les huit opérations de tables S S1 à S8, à laquelle l'opération de substitution doit commencer. Ensuite, la totalité des huit opérations de tables S s'exécute dans la boucle 38, chaque boucle 38 étant itérée huit fois. Toutefois, au lieu d'utiliser la valeur du compteur de boucle commençant toujours à la valeur 0, pour déterminer la séquence dans laquelle les mots MOT1 à MOT8 sont mis en correspondance avec les mots de 4 bits correspondants, on utilise la valeur z. Cela signifie que ce qui est établi par la boucle 38 de programme dans le code 34 de programme, n'est qu'un cyclage à travers les opérations 2869174 16 des tables S S1 à S8, selon lequel néanmoins, on peut faire varier l'opération de la table S à laquelle la boucle 38 commence, en réglant la variable j, avant la boucle 38 qui est exécutée de façon aléatoire. En d'autres termes, le code 34 de programme est divisé en deux parties, à savoir une partie 36 de code de programme qui définit des informations aléatoires au sujet d'une séquence aléatoire, par rapport à l'exécution des opérations des tables S, à un emplacement de mémoire déterminé de façon fixe, et une autre partie de programme qui accède à cet emplacement de mémoire pour exécuter les opérations des tables S, c'est-à-dire pour accéder à l'espace d'adressage, selon une séquence indiquée par les informations aléatoires, en fonction des informations aléatoires. La deuxième partie 38 et/ou 38 à 46 de programme accède aux opérandes d'entrée, disposés à des positions fixes déterminées à l'avance et son tour écrit ce qu'elle lit à ces positions, à des positions de mémoire associées fixes. En alignant et en représentant les valeurs out(0) ... out(7) dans une représentation à 4 bits, la matrice out(0) ... out(7) forme le bloc de données de 32 bits qui, dans l'algorithme DES, est ensuite transmis au moyen 920 de permutation. Le mode de réalisation de la figure 3d a montré que la partie 36 de programme assume la fonction du moyen 24 de la figure 1 et que la partie 38 à 46 de programme assume la fonction des moyens 18 et 20 de détermination de résultats intermédiaires. En outre, il est devenu apparent que le code 34 de programme, dans son ensemble, est toujours, c'est-à-dire indépendamment de la valeur j aléatoire, exécuté dans la même séquence de déroulement de programme. On n'obtient la réduction des fuites d'informations qu'en prévoyant une valeur j aléatoire, au moyen d'une commande 36, à un emplacement et/ou un registre de mémoire fixe, l'autre partie 38 à 46 de programme accédant ensuite à la valeur pour extraire et traiter les opérandes A et/ou B et/ou MOT1 à MOT8 mémorisés à des emplacements fixes, selon une séquence correspondante. Dans le mode de réalisation des figures 3a à 3d, les tables de conversion des diverses tables S S1 à S8 étaient disposées à différents emplacements de mémoire. Les parties correspondantes dans l'espace d'adressage linéaire, telles qu'illustrées sur la figure 3b, sont soumises un cyclage, commençant de façon aléatoire par une partie. Les accès physiques s'effectuent donc, à partir de différents emplacements de l'espace d'adressage linéaire, en fonction de la valeur j aléatoire. À partir de là, des conclusions peuvent être tirées quant à la valeur j aléatoire. Par conséquent, la présente invention est encore plus efficace si on l'applique à un algorithme AES, dans lequel une opération de substitution de 16 substitutions d'octets indépendantes, s'exécute lors des dix rondes AES, à l'aide de la même table S et/ou table de conversion. La table S d'AES est une mise en correspondance d'une valeur d'entrée de 8 bits avec une valeur de sortie de 8 bits et elle a donc une taille de 28 x 8 bits = 28 octets = 256 octets. Dans l'algorithme AES, 16 mots de 8 bits dans un bloc de données de 128 bits sont mis en correspondance indépendamment les uns des autres avec 16 mots de sortie de 8 bits, par la table S, lors de l'opération de substitution, les mots de sortie produisant conjointement de nouveau, un bloc de données de sortie de 128 de l'opération de substitution. On peut aisément adapter le code 34 de programme de la figure 3d à un algorithme AES en substituant 15 à 7 , 16 à 8 et adresse de base à adresse(z) de base , c'est-à-dire celle de la table S AES unique. Les valeurs d'entrée de la partie 38 de programme seraient dès lors, 16 mots de 8 bits, in(0) à in(15), disposés dans une matrice unidimensionnelle, et la matrice de sortie serait out(0) à out(15). De même que dans le mode de réalisation relatif à l'algorithme DES de la figure 3d, la partie 38 à 46 de programme serait fixe et l'on ne réaliserait la séquence d'exécution aléatoire qu'en utilisant la valeur j aléatoire pour manipuler l'accès à la mémoire, afin de charger et de traiter les opérandes d'entrée dans la séquence cyclique commençant de façon aléatoire. Pour ce qui concerne la description ci-dessus, il convient de souligner en outre, ce qui suit. Dans les modes de réalisation ci-dessus, on obtenait toujours les résultats intermédiaires sur la base de différents opérandes A, B et/ou MOT1 à MOTS. Naturellement, il est également possible de déterminer de résultats intermédiaires dans différentes séquences qui elles-mêmes, sont à leur tour fondées sur le(s) même(s) opérande(s) d'entrée, à savoir A = B et l'entrée 12, ainsi que l'entrée 14 de la figure 1 sont formées par une seule entrée. En outre, il convient de souligner que bien que le moyen 22 destiné à former le résultat à partir des résultats intermédiaires, soit prévu sur les figures 1 et 2, il n'est pas nécessaire que ce moyen soit physiquement présent, ainsi que l'illustre le mode de réalisation de la figure 3d. Dans ce cas, la formation du résultat s'effectue uniquement par la mise en mémoire des valeurs out(0) à out(7) de sortie, à des emplacements de mémoire correspondants. Le résultat, c'est-à-dire le bloc de données de 32 bits est dès lors, simplement la rangée out(0) ... out(7) sans qu'une opération supplémentaire de lecture/écriture ou analogue soit nécessaire. On n'a illustré le moyen 22 sur les figures 1 et 2 que par souci de clarté. Les modes de réalisation précédents utilisent donc le fait que des chiffres de blocs se composent généralement de plusieurs accès indépendants à des tables S, de sorte que l'on peut obtenir lors d'accès à la mémoire, une réduction efficace des fuites d'informations moyennées qui sont nécessaires aux ADP/ADEM, laquelle réduction ne pas être annulée par des procédés externes, Par ce moyen, ce type d'attaque est rendu nettement plus difficile voire totalement impossible. Suivant le mode de réalisation des figures 3a à 3d, l'ordre d'une série d'accès à la mémoire est échangé d'un passage du programme à l'autre. Toutefois, cela ne s'effectue pas au moyen de différentes séquences de code qui font l'objet d'un accès par branchement optionnel, mais au moyen d'une gestion et/ou d'une manipulation intelligente(s) de pointeurs qui pointent vers les données à charger in(0) ... in(7). Cela s'effectue toujours au moyen d'une seule et même partie du code 34 de programme. L'accès aux tables S dans l'algorithme DES, tel que représenté sur les figures 3a à 3d, n'était qu'un simple exemple et peut s'appliquer à d'autres algorithmes, tels que l'algorithme AES, tel que décrit ci-dessus. En fonction d'une donnée d'entrée, une nouvelle donnée de sortie est chargée à partir de la table S associée, laquelle donnée se substitue à la donnée précédente. Dans l'algorithme DES, cela s'effectue 8 fois et dans l'algorithme AES 16 fois. L'opération nécessaire à cet effet consistait à charger in(z) , la donnée d'entrée in(z) d'origine qui servait ensuite au décalage d'une adresse de base adresse(z) de base en 46, de la table S associée pour charger out(z) de substitution. La séquence selon laquelle les tables S étaient traitées était rendue aléatoire, par le choix, par exemple, dans l'algorithme AES, d'une valeur aléatoire de départ comprise entre 0 et 15, puis par le chargement dans la table S, dans une boucle qui effectue respectivement des incrémentations modulo 16. Ainsi, les fuites d'informations moyennées peuvent être réduites à 1/16, le bruit restant le même. Cela augmente le nombre de moyennages nécessaires par le facteur 256 qui peut être décisif quant au succès ou à l'échec d'une attaque. Si l'on ajoute des accès fictifs à l'algorithme AES par exemple, des accès 16 à 31 supplémentaires virtuels aux tables S, lesquels sont ensuite adressés par le pointeur arithmétique de la même manière aléatoire qu'on l'a décrit ci-dessus, on augmente de nouveau de façon significative, le nombre de moyennages nécessaires, dans le cas de 16 accès virtuels supplémentaires aux tables S, du facteur 1024. Il convient de souligner en outre, que l'on pourrait également effectuer une permutation complète de la séquence d'exécution, si au lieu de la ligne 36, on prévoyait une partie de code de programme dans le code de la figure 3d qui produirait, par exemple, une permutation aléatoire du vecteur (0, 1, 2, 3, 4, 5, 6, 7) et qui la mémoriserait à un emplacement fixe de la partie 38 à 46 du programme. En outre, la présente invention ne se limite pas à des chiffres de blocs symétriques, tels qu'utilisés dans les modes de réalisation ci-dessus, mais peut également s'appliquer à des algorithmes asymétriques. Ainsi qu'on l'a expliqué ci-dessus, le procédé de détermination de résultat, suivant l'invention, peut également être mis en oeuvre par logiciel, en fonction des circonstances. La mise en oeuvre peut s'effectuer sur un support d'informations numériques, en particulier une disquette ou un CD, avec des signaux de commande pouvant être extraits par voie électronique, lequel support peut coopérer avec un système informatique programmable, de manière à réaliser le procédé correspondant. En général, l'invention consiste donc en un produit-programme informatique ayant un code de programme mémorisé sur un support pouvant être lu par un ordinateur pour mettre en oeuvre le procédé de l'invention, lorsque le produit-programme informatique s'exécute sur un ordinateur. En d'autres termes, on peut donc réaliser l'invention en tant que programme informatique avec un code de programme pour mettre en oeuvre le procédé, lorsque le programme informatique s'exécute sur un ordinateur. Liste des références numériques dispositif de détermination de résultat 12 entrée 14 entrée 16 sortie 18 moyen de détermination de résultats intermédiaires moyen de détermination de résultats intermédiaires 22 moyen de formation du résultat 24 moyen de détermination de la séquence 26 moyen de détermination de résultats intermédiaires 28 moyen de commutation bloc de données de 48 bits 32 adresse d'accès 34 partie de code de programme 900 bloc d'entrée de 64 bits 902 permutation d'entrée 904 moitié gauche du résultat de ronde de 64 bits 906 moitié droite du résultat de ronde de 64 bits 908 mappage 910 expansion 912 opération OU exclusif 914 clé maîtresse de 56 bits 916 production de clés de rondes 918 mappage de tables S 920 permutation 922 opération OU exclusif 924 permutation de sortie 926 bloc de sortie de 64 bits Figures 1 et 2 moyen de détermination de résultats intermédiaires moyen de détermination de la séquence moyen de formation du résultat - figure de l'abrégé Figures 3 mot 1 mot 8 - adresse de base 1 espace d'adressage linéaire - mot # - adresse de substitution du mot # out(z) = contenu de mémoire (adresse(z) de base + in(z))} Figure 4 entrée de 64 bits - permutation d'entrée PE permutation d'entrée PE-1 20 - clé de 56 bits permutation de clés PC-1 - G - D expansion E - sélection de clé PC-2 permutation P REVENDICATIONS 1. Dispositif pour déterminer un résultat de calcul, caractérisé en ce qu'il comprend: des moyens (18, 20; 26; 38) destinés à déterminer un premier résultat intermédiaire et un deuxième résultat intermédiaire, dans lequel le résultat est fonction du premier résultat intermédiaire et du deuxième résultat intermédiaire; et des moyens (24; 36) destinés à déterminer de façon aléatoire une séquence dans laquelle les moyens de détermination exécutent la détermination du premier résultat intermédiaire et du deuxième résultat intermédiaire. 2. Dispositif suivant la revendication 1, caractérisé en ce que le moyen (26) de détermination comprend un moyen pour obtenir un résultat de dérivation à partir d'un opérande d'entrée de dérivation, et le moyen (24) de détermination est conçu pour faire en sorte que le moyen de dérivation reçoive un premier opérande d'entrée, en tant que premier opérande d'entrée de dérivation pour obtenir le premier résultat intermédiaire, en tant que résultat de dérivation, et un deuxième opérande d'entrée, en tant qu'opérande d'entrée de dérivation pour obtenir le deuxième résultat intermédiaire, en tant que résultat de dérivation, dans la séquence déterminée de façon aléatoire. 3. Dispositif suivant la revendication 1, caractérisé en ce que les moyens (18, 20) de détermination comprennent le premier moyen (18) pour obtenir un premier résultat de dérivation à partir d'un premier opérande d'entrée de dérivation, et un deuxième moyen (20) pour obtenir un deuxième résultat de dérivation à partir d'un deuxième opérande d'entrée de dérivation, et dans lequel le moyen (24) de détermination est conçu pour faire en sorte que le premier moyen de dérivation reçoive un premier opérande d'entrée, en tant que premier opérande d'entrée de dérivation pour obtenir le premier résultat intermédiaire, en tant que premier résultat de dérivation, et que le deuxième moyen de dérivation reçoive un deuxième opérande d'entrée de dérivation, en tant que deuxième opérande d'entrée de dérivation pour obtenir le deuxième résultat intermédiaire, en tant que deuxième résultat de dérivation, dans la séquence déterminée de façon aléatoire. 4. Dispositif suivant la revendication 2 ou 3, caractérisé en ce que le moyen de dérivation et/ou les différents moyens de dérivation comprend/comprennent une table de conversion et est/sont conçu(s) pour accéder à une table de conversion pour obtenir le résultat de dérivation à l'aide de l'opérande d'entrée de dérivation, en tant qu'adresse pour obtenir le résultat de dérivation. 5. Dispositif suivant l'une des revendications 2 à 4, caractérisé en 10 ce que le premier opérande d'entrée et le deuxième opérande d'entrée proviennent de différentes positions binaires d'une donnée (30) d'entrée. 6. Dispositif selon l'une des revendications 1 à 5, caractérisé en ce qu'il comprend, en outre: un moyen (22) pour former le résultat à partir du premier résultat intermédiaire et du deuxième résultat intermédiaire. 7. Dispositif suivant la revendication 6, caractérisé en ce que le moyen (22) de formation est conçu pour obtenir le résultat en réunissant ou en combinant au niveau du bit des bits du premier résultat intermédiaire et des bits du deuxième résultat intermédiaire. 8. Dispositif suivant l'une des revendications 1, 6 ou 7, caractérisé en ce qu'il existe une série de N résultats intermédiaires, et le moyen (38) de détermination comprend N tables de conversion, dont chacune est associée à une adresse de base différente d'une série de N adresses de base, dans lequel le moyen (36) destiné à déterminer une séquence de façon aléatoire, est conçu pour déterminer une valeur de départ aléatoire 0 j 9. Dispositif suivant la revendication 1, 6 ou 7, caractérisé en ce qu'il existe une série de N résultats intermédiaires, et le moyen de détermination comprend une table de conversion, dans lequel le moyen destiné à déterminer une séquence est conçu pour déterminer une valeur de départ aléatoire 0 j 10. Dispositif suivant la revendication 8 ou 9, caractérisé en ce que le moyen de consultation est conçu pour incrémenter modulo N la valeur j, après consultation pour obtenir une nouvelle valeur de j, et pour répéter la consultation pour la nouvelle valeur de j. 11. Dispositif suivant l'une des revendications précédentes, caractérisé en ce qu'il existe N résultats intermédiaires dont le résultat est fonction, et dans lequel, parmi les déterminations des N résultats intermédiaires, une séquence cyclique est définie, dans laquelle les déterminations sont exécutées, dans lequel le moyen de détermination est conçu pour déterminer une détermination de l'un des N résultats intermédiaires de façon aléatoire, à l'aide duquel l'exécution des déterminations des N résultats intermédiaires, suivant la séquence cyclique, commence. 12. Dispositif suivant l'une des revendications précédentes, caractérisé en ce qu'il fait partie d'un contrôleur de chiffrement. 13. Dispositif suivant l'une des revendications précédentes, caractérisé en ce que le résultat de calcul fait partie d'un résultat final ou d'un résultat intermédiaire d'un algorithme de chiffrement. 14. Procédé pour calculer un résultat, caractérisé en ce qu'il comprend les étapes consistant à : déterminer un premier résultat intermédiaire et un deuxième résultat intermédiaire; dans lequel le résultat est fonction du premier résultat intermédiaire et du deuxième résultat intermédiaire, et dans lequel le procédé comprend, en outre les étapes consistant à : déterminer de façon aléatoire une séquence, dans laquelle les étapes 5 de détermination sont exécutées. 15. Programme informatique avec un code de programme pour mettre en oeuvre le procédé de la revendication 14, lorsque le programme informatique s'exécute sur un ordinateur.