Brevet FR2909498A1 — publié le 20080606

L'invent;on se rapporte au domaine de la cryptographie. Plus précisément, l'invention concerne les fonctions dites de "hachage" (dites aussi de "condensation"). Les fonctions de hachage sont très utiiisées dans le contexte de la sécurité de l'information. Le calcul de fonctions de hachage intervient notamment dans la génération de signatures à clé publique et de certificats, ainsi que dans de nombreux protocoles cryptographiques tels que le protocole SSL/TLS (initiales des mots anglais "Secure Socket Layer l Transfer Layer Security' utilisé sur Internet. Une fonction de hachage H est une fonction prenant en entrée un message binaire de taille quelconque et produisant une sortie de taille fixe. Pour être sûre, cette fonction doit vérifier le mieux possible les trois propriétés suivantes : ^ "résistance aux préimages" : étant donné une valeur de sortie y de H, il est difficile de trouver une entrée x telle que H(x) = y ; • "résistance aux secondes préimages" : étant donné une paire de valeurs (x,y) telles que H(x) = y , il est difficile de trouver une valeur x' avec x' ≠x telle que H(x') = y ; "résistance aux collisions" : il est difficile de trouver deux valeurs distinctes x et x' telles que H(x)=H(x . Une fonction de hachage est dite sûre si le nombre d'opérations requises pour mettre en défaut ces propriétés est de l'ordre de, respectivement, 2", 2" , et 2n'2. On sait, depuis les travaux de Merkle-Damgard, que le problème de la conception d'une fonction de hachage sûre peut être ramené à celui de la conception d'une fonction de compression sûre. Une fonction de compression h est une fonction qui prend en entrée une valeur de taille fixe de (r+n) bits et qui renvoie une valeur de taille n bits ; une fonction de compression est considérée comme sûre si elle vérifie trois critères analogues à ceux exposés ci-dessus pour une fonction de hachage sûre. La fonction de hachage H associée à la fonction de compression h est calculée itérativement de la façon suivante. Le message à hacher M, de taille arbitraire, est concaténé avec un suffixe permettant de rendre sa longueur égale à L.r, avec L entier, et le message ainsi complété est découpé en blocs de message M") (où i =1,2,...,L) de longueur r bits (on utilise pour cela un suffixe non ambigu, dit de Merkle-Damgard, qui garantit que si h est sûre, alors H l'est aussi). A chaque itération numéro i , h comprime le bloc de message Al") de r bits, et une variable de chaînage H" de n bits initialisée à une constante H( au début du processus. Ainsi : = h(H"- ,Ml, où i =1,2,...,L . (1) 2909498 2 a. "ic '~ ~ Î j st d ini comme I~ leur H(' de la variab'P dP chaînage obtenue à l'issue de la L -ième compression (ou une quelconque troncation de H(L} ) De nombreuses constructions de fonctions de hachage ont été 5 proposées. De nos jours, les plus utilisées sont soit des constructions spécifiques, soit des schémas utilisant des algorithmes de chiffrement par blocs tels que DES (initiales des mots anglais "Data Encryption Standard" signifiant "Norme de Chiffrement de Données"). Parmi les fonctions de hachage reposant sur une construction 10 spécifique, les plus utilisées actuellement sont sans doute MD5 et SHA-1. Cependant, des avancées récentes en cryptanalyse, telles que les articles de X. Wang et H. Yu intitulés "How to Break MD5 and Other Hash Functions" (mai 2005) et "Finding Collisions in the Full SHA-1" (août 2005), ont mis à jour certaines faiblesses permettant de construire des collisions 15 (au sens défini ci-dessus) avec un nombre d'opérations inférieur à une attaque par force brute. Une deuxième famille de fonctions de hachage a été normalisée par le National Institute of Standards aux Etats-Unis, mais cette construction est peu performante, et est par ailleurs très proche de SHA-1, ce qui réduit la confiance que l'on peut lui accorder compte tenu des 20 résultats de cryptanalyse précités. La confiance qu'inspirent les fonctions de hachage reposant sur des constructions spécifiques étant à l'heure actuelle remise en question, il s'ensuit un regain d'intérêt pour les schémas utilisant des primitives de chiffrement par blocs telles que DES ou AES (initiales des mots anglais 25 "Advanced Encryption Standard" signifiant "Norme de Chiffrement Avancée"). Plusieurs de ces schémas, qui fournissent des fonctions de compression de longueur de sortie égale à un bloc et donc des fonctions de hachage de longueur de sortie égale à un bloc, ont de bonnes performances, comme par exemple la construction de Davies-Meyer (voir 30 l'article de B. Preneel, R. Govaerts et J. Vandewalle intitulé "Hash Functions Based on Block Ciphers: a Synthetic Approach", Advances in Cryptology CRYPTO'93, Springer, Lectures Notes in Computer Science, août 1993). Cependant, ces schémas utilisés isolément présentent un inconvénient majeur : la taille de sortie des algorithmes par blocs usuels, qui détermine la 35 taille de sortie d'une telle fonction de hachage, n'est pas suffisante ; en effet, DES opère sur des blocs de 64 bits, et l'AES opère sur des blocs de 128 bits, alors qu'une fonction de hachage sûre requiert au moins 160 bits, voire 256 bits, de sortie, pour éviter des attaques en recherche de collision par force brute. 40 Il existe donc un besoin de savoir comment construire des fonctions de compression sûres avec une taille de sortie de c • n bits, où c >1, en utilisant des primitives de chiffrement par blocs de n bits. L'itération de telles fonctions de compression à l'aide de la construction de Merkle-Damgârd décrite précédemment permettrait en effet d'en déduire des fonctions de hachage sûres de taille de sortie c • n bits. 2909498 On con t en fait des confi- irftons de fonctions de compression ayant une taille de sortie double (c'est à dire e = 2). Les plus connues sont MDC2 et MDC4 (voir par exemple le livre de A.J. Menezes, P.C. van Oorschot, et S.A. Vanstone intitulé "The Handbook of Applied 5 Cryptography", CRC Press, 1996), qui utilisent DES comme composant interne. Cependant, plusieurs travaux ont montré que la sécurité de ces deux schémas est plus faible que celle attendue. Par exemple, lorsque l'on utilise DES comme composant interne de MDC2, des attaques fournissant une collision nécessitant seulement 228 appels à DES, au lieu de 264 appels 10 comme souhaité, ont été trouvées. De nombreux autres travaux ont été menés pour construire des fonctions de compression avec une taille de sortie de 2n bits en utilisant des primitives de chiffrement par blocs de n bits. A ce jour, tous les schémas utilisant des chiffrements par blocs de n bits et maniant des clés de n bits 15 ont été cassés. Il a par ailleurs été proposé (voir l'article de S. Hirose intitulé "Provably Secure Double-Block-Length Hash Functions in a Black-box Modef', International Conference on Information Security and Cryptology ICISC'04, Springer, Lectures Notes in Computer Science, décembre 2004) une fonction de hachage de longueur de sortie 2n bits prouvée sûre, 20 nécessitant de disposer d'un chiffrement par blocs de n bits dont la longueur des clés est de 2n bits ; mais cela représente une limitation dans le choix des algorithmes de chiffrement par blocs utilisables, puisque cela exclut des algorithmes comme AES-128, qui est l'algorithme de chiffrement par blocs le plus répandu (en effet, AES-128 chiffre des blocs de 128 bits au moyen 25 d'une clé de 128 bits). Sans se restreindre aux primitives de chiffrement par blocs, des chercheurs ont proposé (voir l'article de M. Nandi, W. Lee, K. Sakurai et S. Lee intitulé "Security Analysis of a 2/3-rate Double Length Compression Function in a Blackbox Modef', Advances in Cryptology ASIACRYPT'05, 30 Springer, Lectures Notes in Computer Science, janvier 2005) deux fonctions de hachage de longueur double, reposant sur des primitives de longueur simple. Les constructions proposées font appel à plusieurs primitives indépendantes de taille simple, dont les sorties peuvent être combinées linéairement. Mais ces deux fonctions de hachage ont une sécurité inférieure 35 à ce que l'on attend pour une fonction de hachage de 2n bits. L'article "Combining Hash Functions and Block Cipher Based Hash Functions" de T. Peyrin, H. Gilbert, F. Muller et M. Robshaw (Advances in Cryptology ASIACRYPT'06, Springer, Lectures Notes in Computer Science, décembre 2006) étudie une famille de fonctions de compression de longueur 40 de sortie égale à un multiple entier de la longueur de sortie n bits ("longueur simple") de primitives internes constituées par des fonctions de compression (que nous appellerons simplement "fonctions internes" ci-dessous). Les constructions considérées font intervenir non seulement ces fonctions internes, mais également une transformation linéaire LE des données 45 d'entrée et une transformation linéaire Ls des données de sortie de ces fonctions internes. 2909498 4 Cet ar c`e ét t un e emhip de critères que doit vérifier une fonction de compression pour qu'elle puisse résister à toutes les attaques connues ; dans le cadre de la présente invention, on appellera ces critères "critères PGMR" (initiales des auteurs de cet article). En effet, l'analyse de 5 ces constructions permet d'établir des résultats d'impossibilité, à savoir des bornes inférieures sur le nombre t d'appels aux fonctions internes de longueur simple nécessaire pour construire une fonction de compression de longueur multiple, en fonction des paramètres précédemment définis : le nombre c de blocs de n bits en sortie de la fonction de compression de 10 longueur multiple, le nombre k de blocs de n bits pris en entrée de chaque fonction interne de longueur simple, le nombre m de blocs de n bits de message pris en entrée de la fonction de compression de longueur multiple. Ces résultats d'impossibilité peuvent être obtenus grâce à deux attaques génériques. La première exprime le fait que toute combinaison linéaire des 15 blocs de sortie doit dépendre de toutes les entrées. Si cette condition n'est pas remplie, il est possible d'attaquer certains blocs de sortie indépendamment, et la sécurité s'en trouve irrémédiablement affectée. La deuxième attaque générique exprime le fait qu'il doit être impossible de générer plusieurs préimages sur certains blocs de sortie en un nombre 20 d'opérations inférieur à ce qui serait espéré dans le cas d'une fonction de compression idéale. Pour une formulation complète de ces "critères PGMR", on se référera à cet article. En particulier, cet article montre que l'on peut en principe construire, à partir de fonctions internes de taille de sortie de n bits, des fonctions de 25 compression vérifiant les critères PGMR et présentant une taille de sortie c . n bits, avec c> 1. Toutefois, cet article ne propose qu'un nombre très limité de façons de construire, en pratique, une fonction de compression h possédant les propriétés susvisées. La présente invention concerne donc un procédé de compression de 30 données, dans lequel on traite des blocs Mu (où u =1,...,m) extraits d'un message M et des blocs de chaînage H,, (où v =1,...,c, avec c >1), pour donner c nouveaux blocs de chaînage H',, (où v =1,...,c ), tous les blocs étant de longueur n bits. Ce procédé vérifie les "critères PGMR" de sécurité cryptographique, et comprend les étapes suivantes : 35 - on applique au vecteur d'entrée E _ (MF,...,...,Hc) une transformation GF(2)-affine LE produisant t (où t 1) k -uplets de blocs (où k >_ 1), chaque bloc étant de longueur n bits, - on fournit chacun desdits k -uplets de blocs en entrée à une fonction interne respective fp (où p =1,...,0, qui produit un bloc Sa, de n bits en 40 sortie, et on obtient lesdits nouveaux blocs de chaînage ,..en appliquant une transformation GF(2)-affine Ls au vecteur F = (M1,..., Si). 2909498 5 Ladite au iJi _ _i~ä_ia _t:vu.... û~~ _+c LE est remarquable en ce qu'elle combine linéairement au moins un bloc de message Mu avec au moins un bloc de chaînage H. pour fournir les données en entrée d'au moins une desdites fonctions internes jp. En d'autres termes, le "ou-exclusif" d'au 5 moins un bit d'au moins un bloc de message M,, et d'au moins un bit d'au moins un bloc de chaînage H,, figure dans l'expression affine d'au moins un des k • n bits d'entrée d'au moins une des fonctions internes fp. Bien entendu, ledit message M traité selon l'invention peut être en fait le résultat de la concaténation d'un message à hacher d'origine, avec un 10 suffixe non ambigu, comme expliqué précédemment. Ainsi, selon l'invention, la transformation affine LE selon l'invention mélange (à l'aide d'un "ou-exclusif") au moins certains bits des blocs de chaînage avec certains bits des blocs de message afin de produire certaines des entrées des fonctions internes. Une telle approche, qui revient à traiter 15 les blocs de message et les blocs de chaînage de manière analogue, est contraire à celle que suggère la structure des fonctions de compression utilisées pour construire certaines fonctions de hachage connues, comme MD5 ou SHA-1, où les blocs de message et les blocs de chaînage sont traités d'une manière très différente les uns des autres. 20 Selon des caractéristiques particulières, le nombre c de blocs de chaînage est égal à 2 ; autrement dit, la fonction de compression présente, dans ce mode de réalisation, une taille de sortie double (c = 2) de celle des fonctions internes utilisées. Ce mode de réalisation est très utile en pratique ; il permet par exemple de disposer d'une sortie de 256 bits tout en utilisant 25 AES-128 comme primitive (pour les fonctions internes). Dans le cas où, comme précédemment, le nombre c de blocs de sortie est égal à 2, et où, par ailleurs, l'on dispose de fonctions internes prenant en entrée k = 2 blocs de n bits (obtenues par exemple en faisant appel à une fonction de chiffrement par blocs possédant une clé de longueur 30 un bloc), on peut établir, sur la base des critères PGMR, qu'il n'existe aucune construction parallèle sûre de longueur de sortie double telle que le nombre m de blocs de message traités par la fonction de compression soit égal à un bloc ou deux blocs, et utilisant strictement moins de t = 5 appels à des fonctions internes de taille simple. 35 C'est pourquoi, selon des caractéristiques encore plus particulières, on prend c=2, k=2, m=2, et t=5. Grâce à ces dispositions, lorsque l'on construit, comme expliqué ci-dessus, une fonction de hachage H par itérations successives de la fonction de compression h, on utilise à chaque itération un bloc de message M{'} 40 constitué de 2 blocs de longueur n bits M'} et MZ`~ , tout en faisant appel à une fonction interne fp aussi rarement (à savoir, 5 fois) qu'il est possible sur le plan théorique. De ce fait, le message à hacher M est traité rapidement, 2909498 6 avec une sécur'té garantie pour la fonotion de hachage H. Les blocs n bits .e) et 11,t) seront notés M1 et M2 dans la suite, dans des contextes où il n'est pas nécessaire de préciser le numéro d'itération i considéré. On peut montrer que, toujours dans le mode de réalisation où c = 2 , 5 k =2, m = 2, et t =5, les critères PGMR sont satisfaits si l'on choisit les transformations linéaires LE et Ls de la façon suivante : eu) = M1 G H2 L 1,2)[E] = M2 LE(2,1) [E] = MI 13 10 LE(2,2) [E]=112 LE(3,1) = M2 G H2 LE(3,2) [E] = HI H2 LE (4,1) = MI G H2 LE(4,2) [E] = H2 15 LE(5,1) = MI G M2 LE(5,2) [E]= H1 Ls(l) [F] = OS2 $ S3 Ls(2) = S3 S4 S5 20 où LE(p,q) (où p=l,...,t et q=l,...,k ) désigne la fonction GF(2)-affine de (m+c)-n bits vers n bits dont la sortie constitue le q-ième bloc fourni en entrée à la fonction interne fp , et L ',) (où v =1,...,c) désigne la fonction GF(2)-affine de (t+ m+c).n bits vers n bits dont la sortie constitue le bloc H',,. 25 Comme expliqué ci-dessus, savoir construire des fonctions de hachage sûres de taille multiple présente en particulier un grand intérêt lorsque l'on veut construire les fonctions internes à l'aide de schémas utilisant des algorithmes de chiffrement par blocs tels que l'AES ou DES. C'est pourquoi, selon des caractéristiques particulières, les fonctions 30 internes f sont construites à partir d'un algorithme de chiffrement par blocs de n bits et utilisant des clés de n bits. On connaît d'ailleurs plusieurs types de constructions sûres pour réaliser une fonction interne de taille de sortie un bloc à l'aide d'un algorithme par blocs. Pour ce faire, on peut par exemple utiliser la 35 construction de Davies-Meyer déjà mentionnée. L'invention concerne également un procédé de hachage mettant en oeuvre des itérations successives de l'un quelconque des procédés de compression de données succinctement exposés ci-dessus. Comme 2909498 7 sT2s, p9r ey np t'tilRer nour ce faire la construction de Merkie-Damgard. Corrélativement, l'invention concerne un dispositif de compression de données, dant-; lequel sont traités des blocs M. (où u =1,...,in) extraits 5 d'un message M et des blocs de chaînage 111, (où v =1,...,c, avec c > 1), pour donner c nouveaux blocs de chaînage (où v =1,...,c), tous les blocs étant de longueur n bits, ledit traitement vérifiant les "critères PGMR" de sécurité cryptographique, ledit dispositif comprenant : des moyens pour appliquer au vecteur d'entrée 10 E =(MI,...,11m,H1,...,Hc) une transformation GF(2)-affine LE produisant t (où t 1) k -uplets de blocs (où k 1), chaque bloc étant de longueur n bits, - des moyens pour fournir chacun desdits k -uplets de blocs en entrée à une fonction interne respective fp (où p qui produit un bloc Sp de n bits en sortie, et 15 des moyens pour obtenir lesdits nouveaux blocs de chaînage en appliquant une transformation GF(2)-affine Ls au vecteur F = Ladite transformation affine LE est remarquable en ce qu'elle combine linéairement au moins un bloc de message M,, avec au moins un bloc de 20 chaînage pour fournir les données en entrée d'au moins une desdites fonctions internes fp . Selon des caractéristiques particulières, le nombre c de blocs de chaînage est égal à 2. Selon des caractéristiques encore plus particulières, k = 2 , m = 2 , et 25 t=5. L'invention concerne également un dispositif de hachage comprenant l'un quelconque des dispositifs de compression de données succinctement exposés ci-dessus. Selon des caractéristiques particulières, on pourra réaliser l'un 30 quelconque des dispositifs de compression de données ou le dispositif de hachage succinctement exposés ci-dessus dans le contexte d'un circuit électronique. Ce circuit électronique pourra, par exemple, être constitué par une puce à logique câblée. Les avantages offerts par ces dispositifs sont essentiellement les 35 mêmes que ceux offerts par les procédés corrélatifs succinctement exposés ci-dessus. L'invention vise également 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 2909498 8 e 'ter . ~ te~r est rerr rnuah-e en ce qu'il comprend des instructions pour i exécution des étapes de l'un quelconque des procédés de compression de données ou du procédé de hachage succinctement exposés ci-dessus, lorsqu'il est exécuté sur un ordinateur. 5 Les avantages offerts par ces dispositifs et ce programme d'ordinateur sont essentiellement les mêmes que ceux offerts par lesdits procédés. 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, 10 donnés à titre d'exemples non limitatifs. La description se réfère aux dessins qui l'accompagnent, dans lesquels : - la figure 1 est un schéma synoptique illustrant le principe général d'une fonction de compression selon l'invention, et - la figure 2 est un schéma synoptique illustrant un mode de réalisation 15 d'une fonction de compression selon l'invention. L'invention construit des fonctions de compression h résistant aux attaques connues, qui peuvent notamment servir à construire des fonctions de hachage H sûres, par exemple au moyen de la construction de Merkle-Damgàrd décrite ci-dessus. L'invention propose donc à cet effet des 20 fonctions de compression h , dont la figure 1 illustre le principe général. Selon ce principe général, la fonction de compression h prend en entrée m blocs Mu (où u =1,...,m) de message de n bits chacun, et c blocs (où c >1) de variables de chaînage de n bits chacun, et renvoie en sortie c blocs de n bits chacun. 25 On note E _ (M,le vecteur des entrées. On applique au vecteur E une transformation GF(2)-linéaire (où GF(2) désigne le corps fini à deux éléments), ou plus généralement GF(2)-affine (c'est à dire "linéaire+constante additive"), appelée LE . La sortie de la transformation LE est constituée de (k • t) blocs (où k > 1 et t 1) de longueur n (remarque 30 : (m + c) n'est pas nécessairement égal à (k. t) ). On utilise ensuite t fonctions internes f ,...,f, de taille de sortie égale à n bits, prenant chacune k blocs de n bits en entrée et renvoyant un bloc Sp (où p =1,...,t ) de n bits en sortie. On notera dans la suite F le vecteur (M1,...,M, . Enfin, on applique une transformation GF(2)- 35 linéaire ou plus généralement GF(2)-affine Ls au vecteur F pour obtenir le vecteur (H", ,...,H' ) Plus précisément, la transformation d'entrée LE permet d'exprimer chacun des n bits de chacun des k blocs d'entrée de chacune des fonctions internes fp comme la somme modulo 2 d'une combinaison linéaire fixée des 40 (m + c) . n bits de l'entrée E et d'une constante binaire. Le q -ième bloc 2909498 9 d'entrée de la p-ième fcnct?cn ?r eme est donc ê n! à l'sk'e d'une fonction GF(2)-affine de (rn + c) n bits vers rï bits LE(p4) (où p = l,..., t et q =1,..., k ) appliquée à l'entrée E . En ce qui concerne la sortie, la fonction de compression h comporte une transformation GF(2)-affine L` permettant 5 d'exprimer chacun des n bits de chacun des c mots de sortie Hl, (où v =1,..., c) comme la somme modulo 2 d'une combinaison linéaire fixée des bits de F et d'une constante binaire. Chaque bloc de sortie H', de la fonction de compression h est donc défini à l'aide de la fonction GF(2)-affine de (t + m + c) • n bits vers n bits L{) appliquée au vecteur F . Cette 10 procédure peut être décrite à l'aide des équations suivantes : Sp = fp(LE(p,i)[1 j,...,LE(p,k)[El), ou p =1,...,t (2) H',,=Ls(v)[F]=Ls(v)[M1,...,Mär,H1,...,H,,S1,...,S,], où v=1,...,c (3) Conformément à l'invention, ladite transformation affine LE combine linéairement au moins un bloc de message Mä avec au moins un bloc de 15 chaînage Hi, pour fournir les données en entrée d'au moins une desdites fonctions internes fp . On va décrire à présent une construction particulière, illustrée sur la figure 2, possédant les caractéristiques précédentes et produisant une fonction de compression h de taille de sortie double (c= 2), prenant en 20 entrée m =2 blocs de message notés M1 et M1 et 2 blocs de chaînage notés H1 et H2 . La fonction de compression renvoie alors 2 blocs de n bits (H'1,H'2 ) = h(M1,M2,HI,H2) . Ainsi, dans ce mode de réalisation, E _ (M1,M2,H1,H2) et F =(M M2,H1,H2,S1,S2,S3,S4,S5). Pour compléter la description de ce mode de réalisation, il suffit alors 25 de spécifier les transformations affines LE et Ls . Elles sont données par les équations suivantes, où l'opération ou-exclusif bit à bit (également appelée "XOR") entre deux blocs de n bits est représentée par le symbole G : LE(1,1)[E]=M, GH, 30 LE(1,2) [El= M2 LE(2,1) VI = M1 C+~ H1 LE(2,2) [E] = H2 LE(3,1)[E]=M2 H2 (4) LE(3,2) [E]= H1 C7+ H2 35 LE(4,1) [E] = M1 G H2 LE(4,2) [E] =H2 LE(5,1) [E] = M LE(5.2) [E]= H, 2909498 L5 (2)[F.]= S3 e S4 e S5 10 (5) On peut montrer que ce choix particulier du couple (L` , L ) permet à 5 la fonction de compression h résultante de résister à tous les types d'attaques connus à ce jour. Plus précisément, il n'existe aucune attaque connue à ce jour contre cette fonction de compression qui serait plus efficace, en termes de temps de calcul, que les attaques génériques contre toute fonction de 4n bits vers 2n bits. 10 Cette construction permet de satisfaire la borne t = 5 , mentionnée ci-dessus, dans le cas où m = 2 ; cette valeur de m est très intéressante en pratique, par comparaison avec le cas m =1, car elle correspond à un gain d'un facteur proche de 2 en termes de vitesse d'exécution lors de la mise en oeuvre de la fonction de hachage H correspondante. 15 Par ailleurs, si l'on examine (toujours pour les paramètres c = 2, k= 2 , m= 2, t = 5) la classe la plus naturelle de transformations affines LE , à savoir celle des transformations affines pour lesquelles chacun des (k . t ) blocs d'entrée des fonctions internes fl à f résulte du "ou-exclusif" bit à bit d'un sous-ensemble des (m +c) blocs d'entrée MI, M2 , HI et H2 , on peut 20 vérifier qu'on ne peut obtenir une fonction de compression h résistant aux types d'attaques connus à ce jour, à moins, justement, d'effectuer un mélange entre les blocs MI et M2 d'une part, et HI et H, d'autre part. Comme expliqué ci-dessus, on peut construire une fonction de hachage H de taille de sortie deux blocs et résistant aux types d'attaques 25 connus à ce jour, à partir des fonctions de compression h selon l'invention au moyen du chaînage de Merkle-Damgàrd. Plus précisément, le message à hacher est divisé en blocs de message de 2n bits, au besoin en ajoutant un suffixe pour obtenir que le nombre de bits à hacher soit un multiple de 2n (ce suffixe peut spécifier la taille du message original de manière à éviter 30 toute ambiguïté sur l'interprétation du message ainsi étendu). On utilise alors la fonction de compression h qui comprime, à chaque itération i , 2 blocs de messages MI et M2 de n bits chacun et de 2 blocs de chaînage HI et H2 de n bits chacun, pour fournir 2 blocs de chaînage H'I et H'2 de n bits chacun ; autrement dit, en référence à l'équation (1) ci-dessus : 35 M(`} =(MI,M) H(I-r> =(HI, et H") =(H'I,H'2 ). (6) De nombreux autres modes de réalisation de la présente invention peuvent être envisagés. En effet, la fonction de compression décrite ci-dessus est un membre de toute une famille de fonctions de compression dans la mesure 40 où, d'une part, il existe d'autres fonctions de compression décrites à l'aide de systèmes d'équations possédant une structure analogue, mais dont le détail de l'expression diffère, et où, d'autre part, toute transformation affine bijective des entrées et/ou des sorties d'une fonction de compression produit 2909498 11 une fonction de compression équivaiente du point de vue de la résistance aux attaques, et relativement proche du point de vue de l'efficacité d'emploi.. Conformément à la présente invention, toutes les transformations affines valides pour lesquelles chaque bloc de sortie de LE est défini comme le "ou- 5 exclusif" d'un sous-ensemble des blocs d'entrée comportent nécessairement un mélange des blocs de message et des blocs de chaînage. On notera par ailleurs que, dans le mode de réalisation présenté ci-dessus, le résultat de la transformation linéaire Ls ne dépend que des blocs Sp (où p =1,..., t ) ; toutefois, l'invention n'exclut nullement de manière 10 générale que le résultat de la transformation linéaire Ls dépende des blocs Mu ou H, (comme l'exprime l'équation (3) ci-dessus). Pour construire des fonctions de compression h sûres utilisant une pluralité t >1 de fonctions internes fp , il est préférable que les différentes fonctions internes soient assez différentes les unes des autres. Cela peut 15 être obtenu par diverses méthodes. Par exemple, il est possible d'utiliser différentes variantes simples d'un même algorithme de chiffrement par blocs (utilisation de variantes d'AES faisant précéder ou suivre le calcul de l'un des tours d'AES par l'addition de constantes internes propres à chaque variante). Comme indiqué ci-dessus, la présente invention concerne 20 également un système informatique mettant en oeuvre le procédé decompression de données décrit 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. 25 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 compression de données selon l'invention. En effet, l'invention vise aussi un programme d'ordinateur téléchargeable depuis un réseau de communication comprenant des 30 instructions pour l'exécution des étapes d'un procédé de compression de données 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 35 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 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 40 que mentionné ci-dessus. Le support d'informations peut être n'importe quelle entité ou 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 2909498 12 ou une ROM de circuit miri-nétectronique ou encore un moyen d'enregistrement magnétique, par exemple une disquette ("floppy dise" en anglais) ou un disque dur. D'autre pai-t, le support d'informations peut être un support 5 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. Alternativement, le support d'informations peut être un circuit intégré 10 dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question. REVENDICATIONS 1. Procédé de compression de données, dans lequel on traite des blocs Mi, (où u =1,...,m) extraits d'un message M et des blocs de chaînage (où v =1,...,c, avec c > 1), pour donner c nouveaux blocs de chaînage H', (où v =1,...,c), tous les blocs étant de longueur n bits, ledit procédé vérifiant les "critères PGMR" de sécurité cryptographique, et comprenant les étapes suivantes : - on applique au vecteur d'entrée E =(/4_, m,H1,...,H,) une transformation GF(2)-affine LE produisant t (où t 1) k -uplets de blocs (où k 1), chaque bloc étant de longueur n bits, - on fournit chacun desdits k -uplets de blocs en entrée à une fonction interne respective fp (où p =1,...,0, qui produit un bloc Se de n bits en sortie, et - on obtient lesdits nouveaux blocs de chaînage en appliquant une transformation GF(2)-affine Ls au vecteur F = (Mo..., caractérisé en ce que ladite transformation affine LE combine linéairement au moins un bloc de message Mi, avec au moins un bloc de chaînage pour fournir les données en entrée d'au moins une desdites fonctions internes fp . 2. Procédé de compression de données selon la revendication 1, caractérisé en ce que le nombre c de blocs de chaînage est égal à 2. 3. Procédé de compression de données selon la revendication 2, caractérisé en ce que k = 2 , m = 2 , et t = 5 . 4. Procédé de compression de données selon la revendication 3, caractérisé en ce que les transformations linéaires LE et Ls sont définies de la façon suivante : LE(1,I) [E] = H2 L 1,2) = M2 LE(2,1) = eH, LE(2,2) = H2 LE(3,1) [E] = M2 H2 LE(3,2) [E]= e H2 LE(4.1) = e H2 LE(4,2 '1= H 2909498 14 S2 S3 ED S4 E) Ss où Lpq) (où p =1,...,t et q =1,...,k) désigne la fonction GF(2)-affine de (m+c).n bits vers n bits dont la sortie constitue le q-ième bloc fourni en 5 entrée à la fonction interne fp, et Ls(v) (où v =1,...,c) désigne la fonction GF(2)-affine de (t+m+c).n bits vers n bits dont la sortie constitue le bloc V. 5. Procédé de compression de données selon l'une quelconque des revendications 1 à 4, caractérisé en ce que les fonctions internes fo..., f, 10 sont construites à partir d'un algorithme de chiffrement par blocs de n bits et utilisant des clés de n bits. 6. Procédé de hachage mettant en oeuvre des itérations successives d'un procédé de compression de données selon l'une quelconque des revendications 1 à 5. 15 7. Dispositif de compression de données, dans lequel sont traités des blocs Mt, (où u =1,...,m) extraits d'un message M et des blocs de chaînage H, (où v =1,...,c, avec c >1), pour donner c nouveaux blocs de chaînage H', (où v =1,...,0, tous les blocs étant de longueur n bits, ledit traitement vérifiant les "critères PGMR" de sécurité cryptographique, ledit 20 dispositif comprenant : - des moyens pour appliquer au vecteur d'entrée E une transformation GF(2)-affine LE produisant t (où t 1) k -uplets de blocs (où k 1), chaque bloc étant de longueur n bits, - des moyens pour fournir chacun desdits k -uplets de blocs en entrée 25 à une fonction interne respective fp (où p = 1ä..,t ), qui produit un bloc Sp de n bits en sortie, et - des moyens pour obtenir lesdits nouveaux blocs de chaînage H't,...,H'e en appliquant une transformation GF(2)-affine Ls au vecteur F = (MI,..., , 30 caractérisé en ce que ladite transformation affine LE combine linéairement au moins un bloc de message Mu avec au moins un bloc de chaînage Hi, pour fournir les données en entrée d'au moins une desdites fonctions internes fp. 8. Dispositif de compression de données selon la revendication 7, 35 caractérisé en ce que le nombre e de blocs de chaînage est égal à 2. 9. Dispositif de compression de données selon la revendication 8, caractérisé en ce que k = 2 , /n = 2 , et t = 5 . 2909498 15 10. Dis 'f'f h.aoh2ge comprenant un dispositif de compression de données selon rune queiGonque des revendications 7 à 9. 11. Circuit électronique, caractérisé en ce qu'il comprend un dispcsl,, L,ompiession de données selon l'une quelconque des 5 revendications 7 à 9, ou un dispositif de hachage selon la revendication 10. 12. Circuit électronique selon la revendication 11, caractérisé en ce qu'il est constitué par une puce à logique câblée. 13. Programme d'ordinateur téléchargeable depuis un réseau de communication et/ou stocké sur un support lisible par ordinateur et/ou 10 exécutable par un microprocesseur, caractérisé en ce qu'il comprend des instructions pour l'exécution des étapes du procédé de compression de données selon l'une quelconque des revendications 1 à 5 ou du procédé de hachage selon la revendication 6, lorsqu'il est exécuté sur un ordinateur.