Vous êtes sur la page 1sur 8

ENSA de Tanger

Département de Math Info


S. LAZAAR

Fonctions de hachage
Une fonction de hachage calcule le résumé d'un texte, ce résumé est très sensible au texte initial
(une petite modification du texte provoque une grande modification du résumé).

Les 2 algorithmes de hachage les plus utilisés :

 SHA (Secure Hash Algorithm) qui calcule un résumé de 160 bits


 MD5 qui calcule un résumé de 128 bits

 MD5 (Message Digest 5) est une fonction de hachage cryptographique qui calcule, à partir
d'un fichier numérique, son empreinte numérique (en l'occurrence une séquence de
128 bits ou 32 caractères en notation hexadécimale) avec une probabilité très forte que
deux fichiers différents donnent deux empreintes différentes.

 En 1991, Ronald Rivest améliore l'architecture de MD4 pour contrer des attaques
potentielles qui seront confirmées plus tard par les travaux de Hans Dobbertin.

En 1996, une faille qualifiée de grave est découverte et indique que MD5 devrait être mis de
côté au profit de fonctions plus robustes comme SHA-1.
La fonction de hachage MD4

 Cette fonction fut proposée en 1990 par Ron Rivest.

 Elle est à l’origine d’une famille de fonctions plus sûres.

 Elle fut remplacée par « MD5 », présentée en 1991.

 Le sigle « MD : Message Digest ». Cet algorithme produit une

empreinte sur 128 bits du texte d’entrée.

 Le standard de hachage « SHS » ou « Secure Hash Standard » repose sur les

mêmes principes.

 Il fut publié dans un « Federal Register » en 1992, adopté comme standard en 1993

corrigé en 1994 suite à la mise en évidence d’une faiblesse technique maintenue secrète.
D’après Rivest, les objectifs de conception de « MD4 » étaient les suivants :

Sécurité :
il est impossible de trouver par le calcul deux textes qui aient la même
empreinte ; aucune attaque n’est plus efficace que l’attaque exhaustive

Sécurité directe :
la sécurité de « MD4 » n’est basée sur aucune hypothèse telle que la difficulté de
factorisation

Vitesse :
« MD4 » est adapté pour des réalisations logicielles rapides

Simplicité :
« MD4 » est aussi simple que possible sans grandes structures de données ni
programme compliqué

Architecture matérielle :
« MD4 » est optimisé pour les architectures à microprocesseurs (telles qu’INTEL)
Mise en place du processus

Soit une chaîne de bits t, nous définissons le tableau T:

T[0] T[1] T[2] … T[N-1] tels que chaque T[i] soit d’une longueur de 32 bits et N º 0 mod 16.

La réalisation des T[i] suit l’algorithme ci-dessous :

Pour construire T, nous ajouterons un « 1 » à la chaîne t suivi d’un nombre suffisant de « 0 »


pour obtenir une chaîne de longueur congruente à 448 modulo 512

Enfin, nous ajouterons la représentation binaire de la longueur de t, codée sur 64 bits.

La chaîne résultante aura une longueur multiple de 512, chaîne que nous pourrons découper
en un tableau T.

Algorithme

 Il permet de calculer une empreinte numérique codée sur 128 bits.

 Cette empreinte est la concaténation de 4 registres nommés A, B, C et D.

 Ces 4 registres sont initialisés par 4 valeurs hexadécimales :


« 67452301 », « EFCDAB89 », « 98BADCFE » et « 10325476 ».
Algorithme MD5
 Etape 1 : Complétion
Le message est constitué de b bits m1...mb.

 On complète le message par un 1, et suffisamment de 0 pour que le message étendu ait une
longueur congruente à 448, modulo 512

 On ajoute à ce message la valeur de b, codée en binaire sur 64 bits

(on a donc b qui peut valoir jusque 264... ce qui est énorme !)

 On obtient un message dont la longueur totale est un multiple de 512 bits.

 On travaille itérativement sur chacun des blocs de 512 bits.

 Etape 2 : Initialisation
On définit 4 buffers de 32 bits A, B, C et D, initialisés (chiffres hexadécimaux, ie a=10, b=11...) :

A=01234567
B=89abcdef
C=fedcba98
D=76543210
On définit aussi 4 fonctions F, G, H et I, qui prennent des arguments codés sur 32 bits, et renvoie une valeur
sur 32 bits, les opérations se faisant bit à bit.

F(X,Y,Z) = (X and Y) or (not(X) and Z)


G(X,Y,Z) = (X and Z) or (Y and not(Z))
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X OR not(Z))

Ce qu'il y a d'important avec ces 4 fonctions est que si les bits de leurs arguments X, Y et Z sont
indépendants, les bits du résultat le sont aussi.

 Etape 3 : Calcul itératif

Pour chaque bloc de 512 bits du texte, on fait les opérations suivantes :

1. on sauvegarde les valeurs des registres dans AA, BB, CC, DD.
2. on calcule de nouvelles valeurs pour A, B, C, D à partir de leurs anciennes valeurs, à
partir des bits du bloc qu'on étudie, et à partir des 4 fonctions F, G, H, I.
3. on fait A=AA+A, B=BB+B, C=CC+C, D=DD+D.
 Etape 4 : Ecriture du résumé

Le résumé sur 128 bits est obtenu en mettant bout à bout les 4 buffers A, B, C, D de 32
bits.
Un programme JavaScript qui permet de calculer le résumé MD5 d'un texte se trouve à l’adresse
suivante : http://www.bibmath.net/crypto/moderne/md5.php3
Exemple :

l'ensa de tanger est une ecole au nord du maroc : 2350c25ec90dd2ddc4e7357da155c767

l'ensa de tanger est une ecole au nord du pays : 6edaf3ef5bc4d059c681ed793a995dad

Vous aimerez peut-être aussi