Fonction Ă©ponge
En cryptographie, une fonction Ă©ponge, ou construction de lâĂ©ponge est une classe de fonctions permettant de construire entre autres des fonctions de hachage cryptographique. Elle a notamment Ă©tĂ© utilisĂ©e pour la fonction SHA-3. D'un point de vue thĂ©orique, elles permettent aussi de construire des preuves de sĂ©curitĂ© de ce type de fonction[1]. Leur originalitĂ© est dâaccepter en entrĂ©e Ă la fois des chaĂźnes de taille arbitraire et de permettre en sortie des chaĂźnes de la taille que lâon souhaite. Elles gĂ©nĂ©ralisent Ă la fois les fonctions de hachage et le chiffrement de flux.
DĂ©finition
La construction de lâĂ©ponge est une maniĂšre gĂ©nĂ©rique de construire une fonction F qui prend en paramĂštre une chaĂźne de nâimporte quelle taille (un flux ou un fichier par exemple) et qui retourne une chaĂźne de la longueur quâon souhaite. Ses paramĂštres sont une permutation, ou plus gĂ©nĂ©ralement une transformation f opĂ©rant sur un nombre fixe b de bits, quâon appellera largeur, et une fonction de bourrage p.
Son fonctionnement est le suivant : la chaĂźne dâentrĂ©e est complĂ©mentĂ©e par la fonction de complĂ©ment pour aligner la taille de la chaĂźne dâentrĂ©e sur un nombre entier de blocs, puis dĂ©coupĂ©e en blocs de r bits. Les b bits de lâĂ©tat interne sont initialisĂ©s Ă zĂ©ros, puis le calcul se dĂ©roule en deux phases :
- lâabsorption
- Dans cette phase, les blocs de r bits sont XorĂ©s avec les r premiers bits de lâĂ©tat, en alternance avec des applications de la fonction f sur lâĂ©tat. Cette phase se dĂ©roule jusquâĂ ce que tous les blocs aient Ă©tĂ© traitĂ©s.
- lâessorage
- Cette phase est la construction pas Ă pas de la sortie. Elle consiste en la rĂ©pĂ©tition des deux Ă©tapes suivantes : 1. les r premiers bits de lâĂ©tat sont retournĂ©s comme blocs de sortie et 2. la fonction f est appliquĂ©e sur lâĂ©tat. Le nombre dâitĂ©ration est au choix de lâutilisateur et la taille de la chaĂźne de sortie en dĂ©pend.
Les derniers c bits de lâĂ©tat ne sont jamais directement modifiĂ©s par les blocs dâentrĂ©e et ne sont jamais retournĂ©s pendant lâessorage.
Lâalgorithme pourrait sâĂ©crire en pseudo code :
F(flux) : ParamĂštres de la construction : f: une transformation de b bits â b bits p: une fonction de bourrage : le nombre de blocs de sortie Variables : Ă©tat: un tableau de b bits, initialisĂ©s Ă 0
divisĂ© en Ă©tat[1..r] et Ă©tat[r+1..b] blocs : un tableau de blocs de r bits chaque sortie : une chaine, initialisĂ©e vide Algorithme : dĂ©but (* phase dâabsorption *) blocs â dĂ©coupe p(flux) en blocs de taille r pour chaque bloc de blocs : Ă©tat[1..r] â Ă©tat[1..r] â bloc Ă©tat â f(Ă©tat) (* phase dâessorage *) rĂ©pĂ©ter fois : sortie â concatĂšne(sortie, Ă©tat[1..r]) Ă©tat â f(Ă©tat) retourne sortie fin
Notes et références
- (en) [PDF] Guido Bertoni, Joan Daemen, Michaël Peeters et Gilles Van Assche, « Cryptographic sponge functions », sur http://sponge.noekeon.org/
- (en) Guido Bertoni, Joan Daemen, Michaël Peeters et Gilles Van Assche, « The Sponge Functions Corner » Site web consacré à la présentation des fonctions éponges
- (en) Cet article est partiellement ou en totalitĂ© issu de lâarticle de WikipĂ©dia en anglais intitulĂ© « sponge function » (voir la liste des auteurs).