Fonction de Hachage - N
Fonction de Hachage - N
Fonction de Hachage - N
Fonction de hachage
Pr. M. A. Elomary
18 octobre 2022
1 Fonction de hachage
Construction de fonctions de hachage
Fonctions de hachage classiques
SHA-1
Ripemd-160
Fonction de hachage & logarithme discret
Fonction de hachage
Fonction de hachage
En informatique traditionnelle, une fonction de hachage (traduction
discutable de hash function) et un algorithme simple aidant à gérer
certaines bases de données. La place où est inséré un article dans
une telle base est déterminée par la valeur calculée par cette
fonction. Cette valeur dépend en général de la totalité de l’article afin
que le remplissage de la base de données se répartisse de façon
équilibrée même si de nombreux articles se ressemblent.
La notion de fonction de hachage en cryptographie est plus
restrictive. C’est une faction d’un ensemble infini M (I’espace des
messages) dans un ensemble fini E (l’espace des empreintes),
facilement calculable, et possédant une ou plusieurs des propriétés
décrites ci-après. En général, l’espace des messages est l’ensemble
{0, 1}∗ des mots binaires et l’espace des empreintes celui des trains
de longueur fixée, comme {0, 1}128 ou {0, 1}160 .
Fonction de hachage
Définition
• Une fonction de hachage h est dite à sens unique si, pour
essentiellement toutes les valeurs y de l’espace des empreintes, il est
difficile de trouver un message x tel que h(z) = y.
• Une fonction de hachage h est dite faiblement résistante aux
collisions si, pour essentiellement chaque message x, il est difficile de
trouver un message x0 6= x ayant même empreinte h(x) = h (x0 ).
• Une fonction de hachage h est dite (fortement) résistante aux
collisions s’il est difficile de trouver deux messages x et x0 ayant
même empreinte h(x) = h (x0 )
Fonction de hachage
De nombreuses fonctions de hachage sont construites à partir d’une
fonction de compression f (une fonction de {0, 1}n dans {0, 1}m avec
m < n) selon le schéma suivant. Le message x est complété par un
procédé réversible afin que sa longueur soit un multiple de n − m (par
exemple en ajoutant un 1 puis un nombre adéquat de 0), puis il est
découpé en blocs xi (1 6 i 6 t) de longueur n − m. L’empreinte h(x) est
alors calculée selon les formules
Fonction de hachage
On peut imaginer d’utiliser une fonction de chiffrement par blocs pour
construire une fonction de compression utilisable dans le schéma
ci-dessus. Sont adaptées les fonctions de chiffrement pour lesquelles
la longueur des blocs est égale à celle des clés et assez grande (par
exemple 160) pour que la recherche de collisions soit difficile. Un
certain nombre de telles constructions se sont révélées non sûres,
mais les quatre suivantes semblent être sûres.
f (xkk) = ek (x) ⊕ x
f (xkk) = ek (x) ⊕ x ⊕ k
f (xkk) = ek (x ⊕ k) ⊕ x
f (xkk) = ek (x ⊕ k) ⊕ x ⊕ k
Théorème : Damgárd-Merkle
Soit f une fonction de compression de (0, 1)n dans (0, 1)m avec
n > m + 1 résistante aux collisions. Si les messages sont complétés
en un nombre entiers de blocs de longueur n − m − 1 par un procédé
révisible alors on obtient une fonction de hachage résistante aux
collisions en posant
SHA-1
Elle attribue une empreinte de 160 bits, A chaque message binaire
de longueur inférieure à 264 bits (ce qui est énorme, environ 1 milliard
de gigaoctets). En voici une description succincte. Le document
official la décrivant est le FIPS 180 − 1 du NIST.
Le message m à traiter est d’abord complété pour obtenir un
message M :
M = mk10 . . . 0k`
où ` est la longueur de m exprimé en binaire sur 64 bits, et où le
nombre de 0 est choisi dans l’intervalle [0, 511] de telle façon que la
longueur de M soit un multiple de 512 bits. Ensuite, M est divisé en
blocs de 512 bits (soit 16 mots de 32 bits) :
M = M1 k · · · kMn .
f0 (B, C, D) = (B ∧ C) ∨ (B̄ ∧ D)
f1 (B, C, D) = f0 (B, C, D) = B ⊕ C ⊕ D
f2 (B, C, D) = (B ∧ C) ∨ (C ∧ D) ∨ (D ∧ B)
Ripemd-160
Ripemd-160
Elle calcule elle aussi des empreintes de 160 bits et est dans sa
construction assez similaire à SHA-1.
Théorème
Toute collision dans la fonction de Chaum/ van Heijst/Pfitzmann
permet de calculer logα β.