AccueilđŸ‡«đŸ‡·Chercher

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.

Illustration de la construction de l’éponge
Schéma de fonctions éponge pour la construction de fonctions de hachage. les sont des blocs de la chaßne d'entrée, et les sont les blocs du hachage en sortie.

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

  1. (en) [PDF] Guido Bertoni, Joan Daemen, Michaël Peeters et Gilles Van Assche, « Cryptographic sponge functions », sur http://sponge.noekeon.org/
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.