FR 2918525 A1 20090109 FR 0756328 A 20070706 L'invention se rapporte au domaine de la cryptographie. Plus précisément, l'invention concerne le chiffrement de messages et la signature électronique. On connaît depuis longtemps des algorithmes de chiffrement de message, notamment des algorithmes de chiffrement par blocs tels que le DES (initiales des mots anglais "Data Encryption Standard" signifiant "Norme de Chiffrement de Données"), qui utilise une clé de 56 bits (aujourd'hui obsolète), ou le "Triple DES" (publié par la société IBM en 1999) qui utilise trois telles clés, ou encore I'AES (initiales des mots anglais "Advanced Encryption Standard" signifiant "Norme de Chiffrement Avancé") choisi en octobre 2000 aux Etats-Unis par le NIST ("National lnstitute of Standards and Technolog)r'), qui utilise des clés de 128, 192 ou 256 bits. La plupart des algorithmes connus sont des algorithmes symétriques, c'est-à-dire des algorithmes tels que l'entité qui chiffre le message et l'entité qui le déchiffre partagent une même clé secrète. Ces algorithmes symétriques ont pour inconvénient que le choix de la clé, ou la communication de la clé d'une entité à l'autre, doit se faire de manière sécurisée pour empêcher un attaquant d'en prendre connaissance ; vu la longueur requise pour les clés (au moins 128 bits), les précautions que cela impose sont très contraignantes. On a donc cherché à construire des algorithmes de chiffrement asymétriques, c'est-à-dire des algorithmes tels que toute entité qui souhaite envoyer un message chiffré à un destinataire déterminé puisse utiliser une variante publique de cet algorithme -- la variante étant caractéristique du destinataire, mais tels que seul ce destinataire soit capable de déchiffrer le message chiffré ; on notera que même l'émetteur du message chiffré de manière asymétrique ne peut pas, à proprement parler, déchiffrer ce message chiffré (l'émetteur est supposé bien sûr connaître le message en clair au départ). L'algorithme de chiffrement étant accessible à tous, il n'y a aucune précaution de sécurité à prendre au niveau de l'entente entre l'émetteur d'un message et son destinataire. On notera par ailleurs que la plupart des algorithmes asymétriques peuvent servir aussi bien au chiffrement qu'à la signature de message, ces deux protocoles étant simplement l'inverse l'un de l'autre. Autrement dit, pour le chiffrement, on chiffre avec la clé publique et on déchiffre avec la clé secrète, alors que pour la signature, on signe avec la clé secrète et on vérifie la signature avec la clé publique. En particulier, dans le cas des algorithmes asymétriques où la clé secrète est une "trappe" (tel que, par exemple, l'algorithme "huile et vinaigre déséquilibré" décrit ci-dessous), la signature électronique procède de la façon suivante. Lors de la signature d'une séquence C (qui peut être un condensé d'un document original), le signataire utilise le même algorithme (secret) que si cette séquence C était un message chiffré qu'il s'agirait de déchiffrer. On obtient ainsi une "signature" M , qui est mise à la disposition du public, ou d'au moins un vérifieur, en même temps que le document original. Ensuite, pour la vérification de cette signature M , le vérifieur applique à la séquence M le même algorithme public que s'il s'agissait de chiffrer cette séquence M ; si la signature est authentique, le vérifieur obtient une séquence identique à la séquence C, c'est-à-dire au document original mis à sa disposition ou à son condensé. L'algorithme asymétrique le plus connu est sans doute le RSA (pour une description détaillée de RSA, voir l'article de R.L. Rivest, A. Shamir, et L.M. Adleman intitulé "A Method for Obtaining Digital Signatures and Publickey Cryptosystems", Communications of the ACM, volume 21 n 2, pages 120 à 126, 1978). On connaît également les algorithmes utilisant des courbes elliptiques (voir par exemple l'article de Neal Koblitz intitulé "Elliptic-Curve Cryptosystems", Mathematics of Computation, volume n 48, pages 203 à 209, 1987, ou l'article de V. Miller intitulé "Use of Elliptic Curves in Cryptography', CRYPTO 85, 1985). Ces algorithmes ont l'inconvénient de requérir des calculs très lourds. Dans le schéma dit "huile et vinaigre déséquilibré" proposé par A. Kipnis, J. Patarin, et L. Goubin (cf. leur article intitulé "Unbalanced Oil and Vinegar Signature Schemes", EUROCRYPT 1999, pages 206 à 222), la clé publique consiste en un système de h polynômes quadratiques multivariés à n variables xi à x,7 , avec n > h > 1, sur un corps fini K. Ces polynômes sont donc de la forme s at') xixj + Xi +Yk (1 > , flk) et yk appartiennent à K . En guise de "clé secrète", ce schéma utilise une "trappe". Cette trappe consiste à mélanger deux types de variables, appelées variables "d'huile" et variables de "vinaigre", ce qui permet de constituer un certain 10 système de h équations quadratiques multivariées à n = v+h variables, où l'entier v désigne le nombre de variables de vinaigre, et l'entier h désigne le nombre de variables d'huile. On requiert que v > h ; de plus, chaque polynôme du système comporte tous les monômes possibles, dont les coefficients sont tirés au hasard, hormis les monômes constitués par le 15 produit de deux variables d'huile, qui sont absents. La trappe du procédé tire parti du fait qu'un système linéaire aléatoire à h équations et h inconnues a une grande probabilité d'avoir une unique solution. En fixant aléatoirement la valeur des v variables de vinaigre, il est possible de résoudre le système linéaire en les h variables d'huile qui en résulte. Si, 20 pour un choix aléatoire donné des variables de vinaigre, le système résultant n'est pas inversible, il suffit d'effectuer un autre choix aléatoire de variables de vinaigre. Afin de masquer cette structure au public, on applique, en entrée du système, un changement de variables inversible de (v + h) variables vers 25 (v + h) variables. Le système ainsi transformé constitue la clé publique, alors que le changement de variables et le système original constituent la clé secrète. Ce schéma a pour inconvénient qu'il ne peut servir que d'algorithme de signature, et non d'algorithme de chiffrement. En outre, il est inefficace en raison de la nécessité d'ajouter aux variables d'huile (directement associées au message à signer) un grand nombre de variables supplémentaires (les variables de vinaigre) lors de la signature. D'autres algorithmes asymétriques connus, par exemple l'algorithme "C*" (voir l'article de Tsutomu Matsumoto et Hideki Imai intitulé "Public Quadratic Polynomial Tuples for Efficient Signature Verification and Message Encryption", Eurocrypt '88, pages 419 à 453) ont, quant à eux, été cassés. La présente invention concerne donc, premièrement, un procédé de déchiffrement d'un message chiffré représenté par une séquence C , ou de signature électronique d'une séquence C , ladite séquence C étant constituée de données appartenant à un corps fini K = GF(q), où q > 1, dans lequel on traite des blocs successifs comprenant chacun (n • d ) données successives de la séquence C , où n et d sont des entiers prédéterminés supérieurs à 1, le traitement d'un tel bloc comprenant les étapes suivantes : - on applique une transformation affine inversible prédéterminée t-1 audit bloc, - le bloc résultant est interprété comme étant formé de n éléments 20 successifs (y1, y,,..., yä) d'une extension E = GF(qd) du corps K , - on calcule un n -uplet xä) d'éléments du corps E en résolvant un système f de n polynômes prédéterminés de la forme Yk la(Y) yq q -1 k j lem_ Ainsi, le procédé selon l'invention utilise une trappe fondée sur : - le regroupement des données du bloc à traiter, qui sont constituées par (n • d) éléments d'un corps K , par exemple des bits (cas q = 2) ou des octets (cas q = 8 ), en n séquences de d éléments, - l'identification de chacune de ces séquences de d éléments de K à 10 un élément unique d'une extension (au sens des corps de Galois) E de degré d de K , et - une application de E" vers E" constituée par un système secret f de n polynômes. Par ailleurs, on choisit, comme il est connu, deux transformations 15 affines inversibles secrètes s et t ; ces transformations (ou leurs inverses s-I et t 1 selon qu'il s'agit du chiffrement ou du déchiffrement) sont appliquées l'une en entrée et l'autre en sortie, afin de masquer la trappe aux yeux du public (et donc d'un éventuel attaquant). On notera que, si le public doit connaître la valeur du produit (n • d) (longueur du bloc à chiffrer par 20 exemple), ii n'est pas nécessaire de lui faire connaître les valeurs de n et d séparément. L'algorithme de déchiffrement (secret) met en jeu la "trappe". Le déchiffreur doit donc être capable, selon l'invention, de résoudre un système de n équations à n inconnues sur le corps E . Or on sait de nos jours, 25 avantageusement, effectuer cette résolution en un temps raisonnable (sauf à choisir une valeur excessivement grande pour n ), notamment au moyen des méthodes de résolution utilisant les bases de Grôbner (cf. par exemple l'article de LA. Ajwa, Z. Liu, et P.S. Wang intitulé "Grôbner Bases Algorithm", ICM Technical Reports, Kent State University, Kent, Ohio, USA, février 1995). Chaque opération de déchiffrement implique alors, notamment, le calcul de la base de Grôbner associée au bloc de données à déchiffrer. Corrélativement, l'invention concerne, deuxièmement, un procédé de chiffrement d'un message représenté par une séquence M , ou de vérification d'une signature électronique représentée par une séquence M , ladite séquence M étant constituée de données appartenant à un corps fini K = GF(q) , où q > 1, dans lequel on traite des blocs successifs comprenant chacun (n • d) données successives de la séquence M , où n et d sont des entiers prédéterminés supérieurs à 1, la construction secrète de l'algorithme de traitement public d'un tel bloc comprenant les étapes suivantes : - on applique une transformation affine inversible prédéterminée s audit bloc, - le bloc résultant est interprété comme étant formé de n éléments successifs (x1, x,,..., xä) d'une extension E = GF(q`') du corps K , - on calcule un n-uplet yä) d'éléments du corps E au moyen d'un système f de n polynômes prédéterminés de la forme flJ Yi Yk ù la(0xe .x~ + k Xi + Ck (1 où les coefficients a`)), bket ck appartiennent à E, et où les exposants a; , /3j et y; sont des entiers positifs ou nuls, - ledit n-uplet (y1, y,,..., yä) est interprété comme étant un nouveau bloc formé de (n • d) éléments successifs du corps K , et - on applique une transformation affine inversible prédéterminée t audit nouveau bloc. L'algorithme public résultant de la construction selon l'invention est donc simplement constitué par un endomorphisme g de K'", c'est-à-dire par l'application (polynomiale, pour être précis) de (n • d) éléments de K vers (n • d) éléments de K résultant de la composition g = t o f o s . Avantageusement, si le produit (n .d ) est choisi assez grand (de préférence en choisissant une grande valeur pour d), il sera impossible pour un attaquant de "casser" cet algorithme, c'est-à-dire de déchiffrer en un temps raisonnable un message chiffré conformément à l'invention. De plus, un tel algorithme ne requiert, avantageusement, qu'une faible puissance de calcul de la part du chiffreur ou du vérifieur de signature. L'invention concerne également, troisièmement, un dispositif de déchiffrement d'un message chiffré représenté par une séquence C , ou de signature électronique d'une séquence C, ladite séquence C étant constituée de données appartenant à un corps fini K = GF(q) , où q >1, dans lequel on traite des blocs successifs comprenant chacun (n • d ) données successives de la séquence C, où n et d sont des entiers prédéterminés supérieurs à 1, ledit dispositif comprenant, afin de traiter un tel bloc : - des moyens pour appliquer une transformation affine inversible 20 prédéterminée t-I audit bloc, - des moyens pour interpréter le bloc résultant comme étant formé de n éléments successifs (y, , y,,..., yä) d'une extension E = GF(q`') du corps K, - des moyens pour calculer un n -uplet (xi, x,,..., xä) d'éléments du 25 corps E en résolvant un système f de n polynômes prédéterminés de la forme où les coefficients av , bhY' et ck appartiennent à E , et où les exposants a; , et y, sont des entiers positifs ou nuls, - des moyens pour interpréter ledit n -uplet (xi, x2,..., xä) comme étant un nouveau bloc formé de (n • cl ) éléments successifs du corps K , et - des moyens pour appliquer une transformation affine inversible prédéterminée s-1 audit nouveau bloc. Selon des caractéristiques particulières, on pourra réaliser l'un quelconque des dispositifs de déchiffrement ou de signature succinctement exposés ci-dessus dans le contexte d'un circuit électronique. Ce circuit 10 électronique pourra, par exemple, être constitué par un circuit programmé ou par une puce à logique câblée. L'invention vise également un moyen de stockage de données inamovible, ou partiellement ou totalement amovible, comportant des instructions de code de programme informatique pour l'exécution des étapes 15 de l'un quelconque des procédés de chiffrement ou de déchiffrement, ou de signature ou de vérification de signature succinctement exposés ci-dessus. L'invention vise également, enfin, un programme d'ordinateur téléchargeable depuis un réseau de communication et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un microprocesseur. Ce 20 programme d'ordinateur est remarquable en ce qu'il comprend des instructions pour l'exécution des étapes de l'un quelconque des procédés de chiffrement ou de déchiffrement, ou de signature ou de vérification de signature succinctement exposés ci-dessus, lorsqu'il est exécuté sur un ordinateur. 25 Les avantages offerts par ces dispositifs, ce moyen de stockage de données et ce programme d'ordinateur sont essentiellement les mêmes que ceux offerts par les procédés correspondants. D'autres aspects et avantages de l'invention apparaîtront à la lecture de la description détaillée ci-dessous de modes de réalisation particuliers, 30 donnés à titre d'exemples non limitatifs. On va illustrer à présent le concept de construction d'une "clé publique" selon l'invention. Autrement dit, on va montrer comment le détenteur de la clé secrète peut construire l'algorithme qui sera utilisé par le public pour traiter un bloc de données, aux fins de chiffrement ou de vérification de signature. On notera que le choix des fonctions ou valeurs numériques dans l'exemple ci-dessous vise essentiellement la simplicité de l'exposé, et ne prétend pas refléter des valeurs avantageuses sur le plan d'une mise en oeuvre pratique de l'invention. On prend comme paramètres : q = 2 (donc K = GF(2) = {0,1} est 10 le corps à deux éléments), d = 2, n = 2 , donc n • d = 4. L'extension de corps E = GF(4) _ {0,1, a, f} est définie à l'aide du polynôme irréductible X 2 + X + 1. On identifie alors les 2-uplets d'éléments de K avec les éléments de E (qui sont également des polynômes à coefficients dans K ) de la façon suivante: 15 (0,0)0 (0,1)H1 (1,0)Ha ï-(1,1)H/3H1+X . On procède ensuite comme suit : • tirage aléatoire d'un système f de n = 2 polynômes à n = 2 variables à coefficients dans E = GF(4) . Comme on considère le corps à 4 éléments, il est inutile de considérer les puissances 20 supérieures à 3, car dans ce corps tout élément X vérifie X4 = X . Un exemple d'un tel système est y, =X,X,+a-X; +f3•X; +X1+f Y2 =p. X, X, +X; +X +a- X,+1 • tirage aléatoire de deux transformations affines inversibles s et t sur K4 , par exemple (nous les prenons linéaires ici par simplicité) : (1 0 0 1" '1 0 1 1 1 1 1 0 1 0 0 0 25 s = et t = 1 0 1 1 0 1 1 0 1 0 1 0, ~1 0 0 1 Pour calculer la clé publique correspondante, on procède comme suit. Soit (x,, 2, r3, r4) le texte à chiffrer où la signature à vérifier. On va calculer les sorties (y,, y2,yäy4) en fonction des données (x,,x2,x,,x4). Tout d'abord : S(X1,X2,X3,x4) _ (x1 + x4,X1 + x7 + x3,xl + X3 + X4,X1 + X3) . Pour composer par f , il est plus commode d'interpréter les éléments de E comme des polynômes à coefficients dans K. Ainsi, le couple (X1 + X4, X1 + x2 + x3) est associé au polynôme : X1 = (X1 +X4)X +(X1 +X2 +X3). On peut alors calculer Y1 et Y2 en faisant des multiplications de polynômes, et en réduisant modulo X2 + X +1. Après quelques calculs, on obtient : Y1 = (x1x, + x2x3 + X2X4 + x3x4 + x1 + x2 + x4 + 1)X + (XIX2 + x2x3 + x1x3 + x3x4 + X1 + X2 + X3 + 1) Y2 = (x1X7 + x2x3 + x1 X3 + x3x4 + x1 + X3)X + (x1x3 + x2x4 + X2 + X3 + x4 + 1) . En interprétant cela comme des éléments de K , on obtient donc : f o s(xl , x2, x3, x4) = (x1x7 + X2X3 + X2X4 + X3x4 + X1 + X2 + X4 + 1, X1X2 + X2X3 + X1X3 + X3X4 + X1 + X2 + X3 + 1, XIX2 + X2X3 + X1X3 + X3X4 + X1 + X3, X1X3 + X2X4 + X2 + X3 + X4 + 1) . Il ne reste plus qu'à appliquer t à ce quadruplet pour obtenir les équations exprimant (y1, y2, y3, y4) en fonction de (X1, X2, X3, X4) . On 20 obtient finalement : y1=X1X2+X2+1 y2=X1X2+X2X3+X1X3+X3X4+X1+X2+X3+1 y3ùX2+1 Y4 = X1X2 +X1X3 +X7X3 + X3X4 +X1 +X3 . Comme indiqué ci-dessus, la présente invention concerne également un système informatique mettant en oeuvre l'un quelconque des procédés de chiffrement ou de déchiffrement, ou de signature ou de vérification de signature décrits ci-dessus. Ce système informatique comporte de manière classique une unité centrale de traitement commandant par des signaux une mémoire, ainsi qu'une unité d'entrée et une unité de sortie. De plus, ce système informatique peut être utilisé pour exécuter un programme d'ordinateur comportant des instructions pour la mise en oeuvre du procédé de chiffrement ou de déchiffrement, ou de signature ou de vérification de signature selon l'invention. En effet, l'invention vise aussi un programme d'ordinateur téléchargeable depuis un réseau de communication comprenant des instructions pour l'exécution des étapes d'un procédé de chiffrement ou de déchiffrement, ou de signature ou de vérification de signature selon l'invention, lorsqu'il est exécuté sur un ordinateur. Ce programme d'ordinateur peut être stocké sur un support lisible par ordinateur et peut être exécutable par un microprocesseur. Ce programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme 20 partiellement compilée, ou dans n'importe quelle autre forme souhaitable. L'invention vise aussi un support d'informations lisible par un ordinateur, et comportant des instructions d'un programme d'ordinateur tel que mentionné ci-dessus. Le support d'informations peut être n'importe quelle entité ou 25 dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette ("floppy disc" en anglais) ou un disque dur. D'autre part, le support d'informations peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. En variante, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution de l'un quelconque des procédés selon l'invention.10 REVENDICATIONS 1. Procédé de déchiffrement d'un message chiffré représenté par une séquence C, ou de signature électronique d'une séquence C, ladite séquence C étant constituée de données appartenant à un corps fini K = GF(q) , où q > 1, dans lequel on traite des blocs successifs comprenant chacun (n • d) données successives de la séquence C , où n et d sont des entiers prédéterminés supérieurs à 1, le traitement d'un tel bloc comprenant les étapes suivantes : - on applique une transformation affine inversible prédéterminée t-I 10 audit bloc, - le bloc résultant est interprété comme étant formé de n éléments successifs (y1, y2,..., yä) d'une extension E = GF(q') du corps K , - on calcule un n -uplet (xi, x2,..., xä) d'éléments du corps E en résolvant un système f de n polynômes prédéterminés de la forme (ij) que` yt Yk = ~ak x-x q~~ + lkik X. +Ck (1 2. Procédé de déchiffrement ou de signature électronique selon la revendication 1, caractérisé en ce que q est égal à 2. 15 3. Procédé de déchiffrement ou de signature électronique selon la revendication 1, caractérisé en ce que q est égal à 8. 4. Procédé de chiffrement d'un message représenté par une séquence ILI , ou de vérification d'une signature électronique représentée par une séquence M , ladite séquence M étant constituée de données appartenant à un corps fini K = GF(q) , où q > 1, dans lequel on traite des blocs successifs comprenant chacun (n • d) données successives de la séquence M , où n et d sont des entiers prédéterminés supérieurs à 1, la construction secrète de l'algorithme de traitement public d'un tel bloc comprenant les étapes suivantes : - on applique une transformation affine inversible prédéterminée s audit bloc, - le bloc résultant est interprété comme étant formé de n éléments successifs (x2 ,..., x,) d'une extension E = GF(q") du corps K , - on calcule un n-uplet y,) d'éléments du corps E au moyen d'un système f de n polynômes prédéterminés de la forme Yk a(o xq xe k +%1 c4 +Ck (1 k n) 1~i jSn 1 5. Procédé de chiffrement ou de vérification d'une signature 25 électronique selon la revendication 4, caractérisé en ce que q est égal à 2. 6. Procédé de chiffrement ou de vérification d'une signature électronique selon la revendication 4, caractérisé en ce que q est égal à 8. 7. Dispositif de déchiffrement d'un message chiffré représenté par une séquence C, ou de signature électronique d'une séquence C, ladite séquence C étant constituée de données appartenant à un corps fini K = GF(q) , où q > 1, dans lequel on traite des blocs successifs comprenant chacun (n .d ) données successives de la séquence C , où n et d sont des entiers prédéterminés supérieurs à 1, ledit dispositif comprenant, afin de traiter un tel bloc : - des moyens pour appliquer une transformation affine inversible prédéterminée t 1 audit bloc, - des moyens pour interpréter le bloc résultant comme étant formé de n éléments successifs (yi, y2,..., yn) d'une extension E = GF(q`') du corps K, - des moyens pour calculer un n -uplet (x1 , x2,..., xn) d'éléments du corps E en résolvant un système f de n polynômes prédéterminés de la forme l ai ~> 1 Yi Yk = Dk xi xi + ~bk x +Ck (1 8. Dispositif de déchiffrement ou de signature électronique selon la revendication 7, caractérisé en ce que q est égal à 2. 9. Dispositif de déchiffrement ou de signature électronique selon la revendication 7, caractérisé en ce que q est égal à 8. 10. Circuit électronique, caractérisé en ce qu'il comprend un dispositif de déchiffrement ou signature électronique selon l'une quelconque des revendications 7 à 9. 11. Moyen de stockage de données inamovible, ou partiellement ou totalement amovible, comportant des instructions de code de programme informatique pour l'exécution des étapes d'un procédé selon l'une quelconque des revendications 1 à 6. 12. Programme d'ordinateur téléchargeable depuis un réseau de communication et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un microprocesseur, caractérisé en ce qu'il comprend des instructions pour l'exécution des étapes du procédé de chiffrement ou de déchiffrement, ou de signature ou de vérification de signature selon l'une quelconque des revendications 1 à 6, lorsqu'il est exécuté sur un ordinateur.