Brevet FR2914129A1 — publié le 20080926

L'invention concerne un procédé de traitement de données au sein d'une entité électronique. Dans les entités électroniques telles que les cartes à microcircuit, on cherche souvent à sécuriser le traitement des données afin que celui-ci ne puisse pas être analysé de l'extérieur. C'est notamment le cas lorsque l'on souhaite mettre en oeuvre des algorithmes cryptographiques qui traitent des données (tels que des messages) au moyen d'une clé secrète (afin par exemple d'obtenir une signature du message que seul peut produire le détenteur de l'entité électronique). De tels procédés de traitement de données doivent être protégés des tentatives, mises en oeuvre par des personnes mal intentionnées, pour accéder aux éléments internes de l'entité électronique (en particulier la clé secrète qu'elle contient) au moyen de l'observation précise des phénomènes électriques dans l'entité électronique, ou de l'étude détaillée des erreurs générées par la création volontaire de défauts à des moments précis du fonctionnement de l'entité électronique. Dans ce cadre, il a été proposé de décorréler les signaux électriques observables du fonctionnement effectif du programme, comme décrit dans la demande de brevet FR 2 745 924. Pour ce faire, il est par exemple proposé de mettre en oeuvre, au cours du programme principal, un programme secondaire de durée aléatoire, ce qui permet de brouiller pour un observateur extérieur le fonctionnement interne de l'entité électronique. Toutefois, selon une telle solution, une analyse fine du comportement électrique de l'entité électronique, par exemple de sa consommation électrique, risquerait de mettre en évidence l'existence du programme secondaire dont les actions se distinguent de celles du programme principal et l'attaquant comprendrait alors suffisamment le fonctionnement de l'ensemble pour mettre en péril la sécurité du programme principal, par exemple par une attaque d'une opération cryptographique mise en oeuvre au sein de celui-ci. Afin d'éviter ces problèmes, l'invention propose un procédé de traitement de données au sein d'une entité électronique, caractérisé en ce qu'il comprend les étapes suivantes : - détermination d'une première donnée au moins en partie au moyen d'une opération et en fonction d'une partie au moins d'une clé cryptographique et d'une seconde donnée ; - application d'une première fonction à une troisième donnée, afin d'obtenir une donnée intermédiaire, puis d'une seconde fonction à ladite donnée intermédiaire, afin d'obtenir une quatrième donnée, la seconde fonction étant l'inverse de la première fonction et une au moins des première et seconde fonctions mettant en oeuvre ladite opération ; - la troisième donnée étant la première donnée ou la seconde donnée étant la quatrième donnée. Du fait qu'elle met en oeuvre l'opération liée à la clé cryptographique, l'application de l'une des première et seconde fonctions pourra être confondue par un attaquant extérieur avec cette étape de détermination, ce qui perturbera ses attaques. Toutefois, grâce à l'utilisation de deux fonctions inversées l'une de l'autre, l'application de ces fonctions sera sans effet sur le traitement effectué. L'invention est ainsi particulièrement intéressante pour un procédé de traitement cryptographique. On peut prévoir en outre que la (première ou seconde) fonction mettant en oeuvre ladite opération utilise une valeur aléatoire, ce qui permet de compliquer encore la compréhension du fonctionnement depuis l'extérieur. Ladite valeur aléatoire est alors de préférence représentée par un nombre de bits égal au nombre de bits représentant la clé cryptographique. Comme illustré dans les exemples décrits plus loin, ladite opération peut notamment être un algorithme DES ou une multiplication modulaire. Afin de perturber encore l'attaquant, on peut prévoir une étape de branchement aléatoire vers l'étape d'application de la première fonction et de la seconde fonction. En pratique, l'entité électronique est par exemple une carte à microcircuit. On peut remarquer que l'étape de détermination de la première donnée peut être réalisée avant l'étape d'application des première et seconde fonctions (cas où la troisième donnée est la première donnée) ou après cette étape (cas où la seconde donnée est la quatrième donnée). Autrement dit, l'invention propose d'une part un procédé de traitement de données au sein d'une entité électronique, caractérisé en ce qu'il comprend les étapes suivantes : - détermination d'une donnée au moins en partie au moyen d'une opération et en fonction d'une partie au moins d'une clé cryptographique ; - application d'une première fonction à la donnée, afin d'obtenir une donnée intermédiaire, puis d'une seconde fonction à ladite donnée intermédiaire, la seconde fonction étant l'inverse de la première fonction et une au moins des première et seconde fonctions mettant en oeuvre ladite opération. L'invention propose d'autre part un procédé de traitement de données au sein d'une entité électronique, caractérisé en ce qu'il comprend les étapes suivantes : - application d'une première fonction à une première donnée, afin d'obtenir une donnée intermédiaire, puis d'une seconde fonction à ladite donnée intermédiaire, afin d'obtenir une seconde donnée, la seconde fonction étant l'inverse de la première fonction et une au moins des première et seconde fonctions mettant en oeuvre une opération donnée ; - détermination d'une troisième donnée au moins en partie au moyen de ladite opération donnée et en fonction d'une partie au moins d'une clé cryptographique et de la seconde donnée. En termes de dispositif, l'invention propose une entité électronique, caractérisée en ce qu'elle comprend : - des moyens de détermination d'une première donnée au moins en partie au moyen d'une opération et en fonction d'une partie au moins d'une clé cryptographique et d'une seconde donnée ; et - des moyens d'application d'une première fonction à une troisième donnée, afin d'obtenir une donnée intermédiaire, et d'une seconde fonction à ladite donnée intermédiaire, afin d'obtenir une quatrième donnée, la seconde fonction étant l'inverse de la première fonction et une au moins des première et seconde fonctions mettant en oeuvre ladite opération ; dans laquelle la troisième donnée est la première donnée ou la 10 seconde donnée est la quatrième donnée. Cette entité électronique peut éventuellement comporter des caractéristiques optionnelles équivalentes à celles présentées ci-dessus pour le procédé. D'autres caractéristiques et avantages de l'invention apparaîtront 15 mieux à la lumière de la description qui suit, faite en référence aux dessins annexés, dans lesquels : - la figure 1 représente le logigramme d'un premier exemple de réalisation de l'invention ; - la figure 2 représente le logigramme d'un second exemple de 20 réalisation de l'invention ; - la figure 3 représente le logigramme d'un troisième exemple de mise en oeuvre de l'invention. On va à présent décrire en référence à la figure 1 un procédé de détermination d'un code d'authentification de messages, ou MAC (de l'anglais 25 "Message Authentication Code"), à titre de premier exemple de mise en oeuvre de l'invention. Un tel code d'authentification est obtenu à partir d'une clé secrète K et d'un message M à authentifier. Du fait que la clé K est tenue secrète, seuls les détenteurs de la clé 30 peuvent obtenir le code d'authentification en partant du message M, ce qui permet d'assurer l'authentification et l'intégrité du message. Le procédé de détermination du code d'authentification présenté à la figure 1 utilise, comme décrit plus en détail dans la suite, l'algorithme DES (pour "Data Encryption Standard") bien connu en cryptographie. Le procédé est ici mis en oeuvre au sein d'un microprocesseur, par exemple d'une carte à microcircuit, en conséquence de l'exécution par le microprocesseur des instructions d'un logiciel mémorisé dans une mémoire associée au microprocesseur. Dans ce contexte, le message M et la clé secrète K sont également mémorisés sous forme de données numériques et peuvent ainsi être traités par le microprocesseur, comme indiqué ci-après. En variante, on peut prévoir d'autres modes de mise en oeuvre du procédé, par exemple au sein d'un circuit à application spécifique, généralement dénommé ASIC (de l'anglais "Application Specific Integrated Circuit"). Le procédé de la figure 1 débute par le découpage du message M en n parties de message MI, ..., Mn (chaque partie ayant une taille prédéterminée en nombre de bits, par exemple 64 bits) sur lesquelles portera le traitement comme indiqué dans la suite (étape E100). On procède alors à l'étape E102 au tirage aléatoire d'une valeur K' de même longueur (en nombre de bits) que la clé secrète K. On entend par tirage aléatoire, l'obtention (ici à l'intérieur du microprocesseur) d'une valeur imprévisible de l'extérieur (parfois dénommée valeur pseudo-aléatoire). On procède ensuite à l'étape E104 à l'initialisation d'une variable C utilisée dans la suite pour le calcul et le stockage du code d'authentification, par exemple à la valeur nulle ; en variante, une autre valeur d'initialisation pourrait être utilisée. On initialise à l'étape E106 une variable d'indice i à la valeur nulle (i=0). On procède alors à une boucle qui débute à l'étape E108 à laquelle on incrémente la valeur d'indice i d'une unité. L'opération principale de cette boucle (étape E110) consiste à appliquer l'algorithme DES, en utilisant la clé secrète K, au résultat d'une opération de ou exclusif (XOR) entre la valeur courante de la variable C et la partie de message M; visée par l'indice courant i, et à stocker le résultat de l'algorithme DES en tant que nouvelle valeur de la variable C (avec écrasement de la valeur précédente). On remarque que les données traitées, bien que pouvant représenter autre chose que des nombres (par exemple des parties de message pour les données M;), sont utilisées dans ces étapes de calcul comme les nombres qu'elles définissent sous forme binaire. On vérifie ensuite lors d'une étape E112 si la valeur d'indice i a atteint la valeur n, auquel cas on passe à l'étape E114 décrite ci-après. Si on détermine en revanche que la valeur d'indice i n'a pas atteint la valeur n à l'étape E112, on retourne à l'étape E108, ce qui permet de réaliser la boucle mentionnée ci-dessus. L'étape E114 consiste à appliquer l'algorithme inverse de l'algorithme DES, en utilisant comme clé la valeur K' obtenue par tirage aléatoire à l'étape E102, au résultat d'une opération de ou exclusif (XOR) entre la variable C et la valeur nulle ; le résultat de ce calcul est stocké dans la valeur C (avec écrasement de la valeur précédente). On procède alors à l'étape E116 à laquelle on applique l'algorithme DES en utilisant la même valeur K' comme clé secrète, ici encore au résultat d'un ou exclusif entre la variable C et la valeur nulle. Le résultat de calcul est encore une fois stocké dans la variable C avec écrasement de la valeur précédente. Les étapes E114 et E116 mettent en oeuvre deux algorithmes inverses l'un de l'autre, et grâce aux propriétés de l'opération de ou exclusif (XOR), la valeur de la variable C en sortie de l'étape E116 est égale à celle que cette variable C avait en entrée de l'étape E114, c'est-à-dire la valeur souhaitée pour le code d'authentification (MAC) obtenue au moyen de la boucle formée par les étapes El 08, El 10, E112 précédemment décrites. On peut donc émettre en sortie à l'étape E118 la valeur C obtenue après l'étape E116 comme code d'authentification du message M au moyen de la clé secrète K. On remarque que les calculs mis en oeuvre lors de l'étape E116 sont très proches de ceux mis en oeuvre lors de l'étape E110 : utilisation du même algorithme, utilisation d'une clé de même longueur (en pratique la valeur aléatoire K' pour l'étape E116), manipulation de la variable C (qui est la donnée traitée tout au long du procédé de la figure 1). Un attaquant ne sera donc pas en mesure de déterminer par des observations extérieures que l'étape E116 n'est en fait pas une étape utilisant la clé secrète K qu'il cherche à obtenir frauduleusement et les attaques par faute qu'il mènera classiquement contre la dernière étape du procédé (car il a accès au code d'authentification MAC qui est le résultat de cette étape) ne lui donneront aucune indication sur la clé secrète K puisqu'une autre valeur (K') est utilisée dans cette dernière étape. Le fait que cette valeur K' est obtenue par tirage aléatoire complique encore la compréhension du fonctionnement du procédé. On pourrait toutefois en variable utiliser une valeur différente de K mais fixe (valeur leurre), ce qui entraînerait l'attaquant dans une fausse direction sur la valeur de la clé secrète. Un second exemple de mise en oeuvre de l'invention est représenté à la figure 2. Le procédé de la figure 2 commence par le découpage en n parties 20 du message M à authentifier de message MI, ..., Mn à l'étape E201, de manière similaire à l'étape E100 de la figure 1. On initialise ensuite à l'étape E202 une variable Co selon le même processus que celui utilisé à l'étape E104 pour l'initialisation de la variable C. Puis on initialise à 0 une valeur d'indice i à l'étape E204. 25 Le procédé entre alors dans une boucle qui débute par une étape E206 à laquelle on détermine de manière aléatoire si l'on effectue un branchement (ou saut) vers les étapes E208, E210 et E212 décrites plus bas, ou si on procède immédiatement au contraire à l'étape E214. Cette étape de branchement aléatoire E206 est par exemple réalisée 30 en comparant une valeur obtenue par tirage aléatoire à un seuil déterminé de sorte que les étapes E208, E210 et E212 ne soient statistiquement réalisées que pour un pourcentage déterminé (préférentiellement variable entre deux exécutions différentes de l'algorithme) de passages à l'étape E206. S'il est déterminé à l'étape E206 que l'on effectue le branchement aléatoire, on procède donc à l'étape E208, à laquelle on détermine par tirage aléatoire la valeur d'une variable K' (de même longueur en bits que la clé secrète K utilisée pour l'authentification comme décrit plus loin) utilisée dans les deux étapes suivantes. En effet, l'étape E208 est suivie de l'étape E210 à laquelle le résultat d'une opération de ou exclusif entre la valeur nulle et la variable C; désignée par l'indice courant i subit l'algorithme inverse de l'algorithme DES avec utilisation de la valeur aléatoire K' précédemment déterminée, le résultat de l'algorithme inverse étant mémorisé dans cette même variable C; avec écrasement de la valeur précédente. On procède alors à l'étape E212 à une nouvelle opération de ou exclusif (XOR) entre la variable C; et la valeur nulle, puis avec application cette fois de l'algorithme DES, toujours en utilisant la valeur aléatoire K'. Le résultat de l'algorithme DES est mémorisé dans la variable C; avec écrasement. On remarque que, du fait de l'utilisation successive de deux algorithmes inverses et des propriétés de l'opération de ou exclusif, la succession des étapes E210 et E212 produit en sortie une variable C; de valeur égale à la valeur de la variable C; en entrée. Chacune des étapes E210 et E212 met toutefois en oeuvre un algorithme du même type que celui décrit plus bas à l'étape E216, avec utilisation de la valeur aléatoire K' de même longueur que la clé secrète K et en manipulant la variable C; comme le fait l'étape E216 décrite plus bas. Un attaquant extérieur ne pourra donc pas discerner la mise en oeuvre de ces étapes E210, E212 de l'étape E216 décrite plus bas. L'étape E212 est suivie de l'étape E214 à laquelle on aboutit également comme mentionné ci-dessus lorsqu'il est déterminé à l'étape E206 que l'on n'effectue pas le branchement aléatoire. L'étape E214 consiste à incrémenter la valeur d'indice i. L'étape suivante E216 permet quant à elle de déterminer la variable C; (visée par l'indice courant i) sur la base de la variable C;_l (visée par l'indice précédent), de la partie de message M; et de la clé secrète K. Précisément, le résultat d'un ou exclusif (XOR) entre la partie de message M; et la variable C;_1 subit un algorithme DES utilisant la clé secrète K. Le résultat de cet algorithme DES est mémorisé en tant que variable C. A la différence du premier mode de réalisation décrit en référence à la figure 1, l'étape E216 où sont successivement calculées les variables C; n'entraîne aucun écrasement de celles-ci. Une fois l'étape E216 réalisée, on procède à l'étape E218 à laquelle on détermine si la valeur d'indice i est égale à n, auquel cas on procède à l'étape E220 à l'émission en sortie de la variable Cr, comme code d'authentification du message M. Si en revanche l'égalité i=n n'est pas vérifiée à l'étape E218, on retourne à l'étape E206 pour réaliser la boucle précédemment mentionnée. Le procédé de la figure 2 permet ainsi de réaliser, à des instants imprévisibles, des étapes (ici les étapes E210 et E212, et en particulier l'étape E212) dont la mise en oeuvre ne peut être discernée de l'extérieur des étapes visant effectivement le calcul du code d'authentification (MAC). Dans le mode de réalisation qui vient d'être décrit, le tirage aléatoire de la valeur K' à chaque passage à l'étape E208 précédant les étapes E210 et E212 permet d'utiliser une valeur K' à chaque fois différente (sauf exception). En variante, le tirage aléatoire de la valeur K' pourrait être réalisée une seule fois au cours du procédé de la figure 2, par exemple entre les étapes E200 et E202 de manière analogue à ce qui a été décrit en référence à la figure 1. Cette variante permet de rendre encore plus semblables les procédés mis en oeuvre dans chacune des alternatives du branchement aléatoire (étape E206) : il est encore plus difficile dans ce cas pour un attaquant extérieur de distinguer les étapes E212 et E216. On a représenté à la figure 3 un procédé d'exponentiation modulaire mettant en oeuvre les enseignements de l'invention et qui constitue ainsi un troisième mode de réalisation de celle-ci. Un tel procédé d'exponentiation modulaire d'une donnée M (représentée sous forme numérique, par exemple sur 1024 bits, et représentant donc également un nombre) par une clé D est par exemple utilisé dans le cadre de l'algorithme RSA, et plus particulièrement dans les cas suivants : -lorsque la donnée M représente un message chiffré et que la clé D forme (avec le module public N) une clé privée, pour le déchiffrement par l'opération M mod N ; - lorsque la donnée M représente un message à signer et la clé D forme (avec le module public N) une clé secrète, pour la signature du message 10 M par l'opération M mod N. Dans la suite, on utilise la représentation binaire de la clé D sous forme de k+1 bits : dk, ..., do, où dk est le bit de poids fort et do est le bit de poids faible. Le procédé d'exponentiation modulaire proposé ici pourrait 15 également être utilisé dans le cadre d'autres algorithmes, par exemple l'algorithme DSA ou l'algorithme de Diffie-Hellman. Le procédé d'exponentiation modulaire proposé par l'invention débute à l'étape E300 par la détermination de l'inverse modulaire de la donnée M et sa mémorisation dans une variable INV. 20 Cette détermination de l'inverse modulaire est par exemple réalisée au moyen de l'algorithme d'Euclide lorsque le nombre N est premier (ce qui est par exemple le cas lors du calcul de l'exponentiation modulaire dans le cadre de l'algorithme RSA utilisant le théorème des restes chinois ou CRT), ou par le simple calcul de MN-2 mod N. 25 On passe alors à l'étape E302 à laquelle on initialise une variable S à la valeur 1, puis à l'étape E304 à laquelle on initialise une variable d'indice i à la valeur k (qui représente comme déjà indiqué le nombre de bits de la clé secrète D moins 1). On entre alors dans une boucle qui débute à l'étape E306 par la 30 multiplication modulaire de la variable S par elle-même (à savoir le calcul S*S mod N) et la mémorisation du résultat dans la variable S avec écrasement. On passe alors à l'étape E308 à laquelle on détermine si le bit courant d; (c'est-à-dire celui visé par l'indice courant i) est égal à 1. Dans l'affirmative, on procède à l'étape E310 à la multiplication modulaire de la variable S par la donnée M (c'est-à-dire au calcul S*M mod N), puis on passe à l'étape E312. Si on détermine à l'étape 310 que le bit courant d; est nul, on passe directement à l'étape E312. Le branchement conditionnel de l'étape E308 vers l'étape E310 permet, grâce aux itérations successives avec incrémentation de i, de réaliser l'exponentiation modulaire souhaitée. L'étape E312 consiste à effectuer un branchement aléatoire vers l'étape E314 de manière identique à ce qui a été décrit pour le second mode de réalisation à l'étape E206. L'étape E314 (à laquelle on accède de manière aléatoire selon le résultat de l'étape E312) consiste à effectuer une nouvelle multiplication modulaire de la variable S par la donnée M (c'est-à-dire à calculer S*M mod N) et à mémoriser le résultat dans la variable S avec écrasement. Les opérations mises en oeuvre à l'étape E314 sont donc identiques à celles mises en oeuvre à l'étape E310. On procède alors à l'étape E315 à laquelle on effectue la multiplication modulaire de la variable S par la valeur INV (dont on rappelle qu'elle est l'inverse modulaire de la donnée M), c'est-à-dire le calcul S*INV mod N, et on mémorise le résultat de la multiplication modulaire dans la variable S avec écrasement. Ainsi, la succession des étapes E314 et E315 manipule d'une part la variable S par des opérations proches (voire identiques en ce qui concerne l'étape E314) aux opérations effectuées pour le calcul d'exponentiation modulaire à l'étape E310, tout en laissant d'autre part en sortie la variable S à une valeur identique à sa valeur en entrée de l'étape E314, et donc sans conséquence sur le calcul d'exponentiation modulaire. L'étape E315 est suivie de l'étape E316, à laquelle on aboutit également en l'absence de branchement aléatoire vers l'étape E314 (étape E312). L'étape E316 consiste à décrémenter la variable d'indice i et est suivie de l'étape E318 à laquelle on teste si la valeur de i est strictement négative, auquel cas on passe à l'étape E320 (puisque tous les indices de k à 0 ont dans ce cas été parcourus) qui constitue la fin de l'algorithme et à laquelle on renvoie donc la valeur de la variable S en tant que résultat de l'exponentiation modulaire souhaitée. La variable S vaut alors en effet M mod N. Si en revanche on détermine à l'étape E318 que la valeur d'indice i est positive ou nulle, on reboucle vers l'étape E306 pour l'itération suivante. Les exemples qui précèdent ne sont que des modes possibles de mise en oeuvre de l'invention qui ne s'y limite pas.15 REVENDICATIONS 1. Procédé de traitement de données au sein d'une entité électronique, caractérisé en ce qu'il comprend les étapes suivantes : - détermination (E110; E216; E310) d'une première donnée (C; C;; S) au moins en partie au moyen d'une opération (DES; *) et en fonction d'une partie au moins d'une clé cryptographique (K; d;) et d'une seconde donnée (C, M;; C;_1, M;; S, M) ; - application d'une première fonction (E114; E210; E314) à une troisième donnée (C; C;; S), afin d'obtenir une donnée intermédiaire (C; C;; S), puis d'une seconde fonction (E116; E212; E315) à ladite donnée intermédiaire (C; C;; S), afin d'obtenir une quatrième donnée (C; C.; S), la seconde fonction étant l'inverse de la première fonction et une au moins des première et seconde fonctions mettant en oeuvre ladite opération ; - la troisième donnée (C; S) étant la première donnée (C; S) ou la seconde donnée (Ci) étant la quatrième donnée (Ci). 2. Procédé de traitement de données selon la revendication 1, caractérisé en ce que la fonction mettant en oeuvre ladite opération utilise une valeur aléatoire (K'). 3. Procédé de traitement de données selon la revendication 2, caractérisé en ce que ladite valeur aléatoire (K') est représentée par un nombre de bits égal au nombre de bits représentant la clé cryptographique (K). 4. Procédé de traitement de données selon l'une des revendications 1 à 3, caractérisé en ce que ladite opération est un algorithme DES. 5. Procédé de traitement de données selon l'une des revendications 30 1 à 4, caractérisé en ce que ladite opération est une multiplication modulaire.25 6. Procédé selon l'une des revendications 1 à 5, caractérisé par une étape de branchement aléatoire (E206; E312) vers l'étape d'application de la première fonction et de la seconde fonction. 7. Procédé selon l'une des revendications 1 à 6, caractérisé en ce que l'entité électronique est une carte à microcircuit. 8. Procédé de traitement de données au sein d'une entité électronique, caractérisé en ce qu'il comprend les étapes suivantes : - détermination d'une donnée au moins en partie au moyen d'une opération et en fonction d'une partie au moins d'une clé cryptographique ; - application d'une première fonction à la donnée, afin d'obtenir une donnée intermédiaire, puis d'une seconde fonction à ladite donnée intermédiaire, la seconde fonction étant l'inverse de la première fonction et une au moins des première et seconde fonctions mettant en oeuvre ladite opération. 9. Procédé de traitement de données au sein d'une entité électronique, caractérisé en ce qu'il comprend les étapes suivantes : - application d'une première fonction à une première donnée, afin d'obtenir une donnée intermédiaire, puis d'une seconde fonction à ladite donnée intermédiaire, afin d'obtenir une seconde donnée, la seconde fonction étant l'inverse de la première fonction et une au moins des première et seconde fonctions mettant en oeuvre une opération donnée ; - détermination d'une troisième donnée au moins en partie au 25 moyen de ladite opération donnée et en fonction d'une partie au moins d'une clé cryptographique et de la seconde donnée. 10. Entité électronique, caractérisée en ce qu'elle comprend : - des moyens de détermination d'une première donnée au moins 30 en partie au moyen d'une opération et en fonction d'une partie au moins d'une clé cryptographique et d'une seconde donnée ; et - des moyens d'application d'une première fonction à une troisième donnée, afin d'obtenir une donnée intermédiaire, et d'une seconde fonction à ladite donnée intermédiaire, afin d'obtenir une quatrième donnée, la seconde fonction étant l'inverse de la première fonction et une au moins des première et seconde fonctions mettant en oeuvre ladite opération ; dans laquelle la troisième donnée est la première donnée ou la seconde donnée est la quatrième donnée.10