RFC 1321 - L'algorithme de hachage MD5
- Statut: Informational
- Publié: April 1992
- Stream: IETF
- Errata: Pas d'errata
Statut de ce mémorandum
Ce mémorandum fournit des informations à la communauté Internet. Il ne spécifie pas une norme Internet. La distribution de ce mémorandum est illimitée.
Remerciements
Nous tenons à remercier Don Coppersmith, Burt Kaliski, Ralph Merkle, David Chaum et Noam Nisan pour leurs nombreux commentaires et suggestions utiles.
Table des matières
- 1. Executive Summary (Résumé exécutif)
- 2. Terminology and Notation (Terminologie et notation)
- 3. MD5 Algorithm Description (Description de l'algorithme MD5)
- 3.1 Step 1. Append Padding Bits (Étape 1. Ajout de bits de remplissage)
- 3.2 Step 2. Append Length (Étape 2. Ajout de la longueur)
- 3.3 Step 3. Initialize MD Buffer (Étape 3. Initialisation du tampon MD)
- 3.4 Step 4. Process Message in 16-Word Blocks (Étape 4. Traitement du message par blocs de 16 mots)
- 3.5 Step 5. Output (Étape 5. Sortie)
- 4. Summary (Résumé)
- 5. Differences Between MD4 and MD5 (Différences entre MD4 et MD5)
- References (Références)
Annexes
Sections supplémentaires
Ressources associées
- Texte officiel : RFC 1321
- Page officielle : RFC 1321 DataTracker
- Errata : RFC Editor Errata
2. Terminology and Notation (Terminologie et notation)
Dans ce document, un « mot (Word) » est une quantité de 32 bits et un « octet (Byte) » est une quantité de huit bits. Une séquence de bits peut être interprétée de manière naturelle comme une séquence d'octets, où chaque groupe consécutif de huit bits est interprété comme un octet avec le bit de poids fort (Most Significant Bit) de chaque octet listé en premier. De même, une séquence d'octets peut être interprétée comme une séquence de mots de 32 bits, où chaque groupe consécutif de quatre octets est interprété comme un mot avec l'octet de poids faible (Least Significant Byte) donné en premier.
Soit x_i désigne « x indice i ». Si l'indice est une expression, nous l'entourons d'accolades, comme dans x_{i+1}. De même, nous utilisons ^ pour les exposants (exponentiation), de sorte que x^i désigne x à la puissance i.
Le symbole « + » désigne l'addition de mots (c'est-à-dire l'addition modulo 2^32). X <<< s désigne la valeur 32 bits obtenue en décalant circulairement (rotation) X vers la gauche de s positions de bits. not(X) désigne le complément bit à bit de X, et X v Y désigne le OU bit à bit de X et Y. X xor Y désigne le XOR bit à bit de X et Y, et XY désigne le ET bit à bit de X et Y.
4. Summary (Résumé)
L'algorithme de hachage MD5 est simple à implémenter et fournit une « empreinte numérique » ou un hachage de message d'un message de longueur arbitraire. Il est supposé que la difficulté de trouver deux messages ayant le même hachage est de l'ordre de 2^64 opérations, et que la difficulté de trouver un message ayant un hachage donné est de l'ordre de 2^128 opérations. L'algorithme MD5 a été soigneusement examiné pour détecter les faiblesses. Il s'agit cependant d'un algorithme relativement nouveau et une analyse de sécurité supplémentaire est bien sûr justifiée, comme c'est le cas pour toute nouvelle proposition de ce type.
5. Differences Between MD4 and MD5 (Différences entre MD4 et MD5)
Les différences entre MD4 et MD5 sont les suivantes :
-
Un quatrième round a été ajouté.
-
Chaque étape a maintenant une constante additive unique.
-
La fonction g dans le round 2 a été modifiée de (XY v XZ v YZ) à (XZ v Y not(Z)) pour rendre g moins symétrique.
-
Chaque étape ajoute maintenant le résultat de l'étape précédente. Cela favorise un « effet d'avalanche » plus rapide.
-
L'ordre dans lequel les mots d'entrée sont accessibles dans les rounds 2 et 3 a été modifié, pour rendre ces motifs moins semblables les uns aux autres.
-
Les montants de décalage dans chaque round ont été approximativement optimisés, pour obtenir un « effet d'avalanche » plus rapide. Les décalages dans différents rounds sont distincts.
Security Considerations (Considérations de sécurité)
Le niveau de sécurité discuté dans ce mémorandum est considéré comme suffisant pour implémenter des schémas de signature numérique hybride de très haute sécurité basés sur MD5 et un système de cryptographie à clé publique.