1. Executive Summary (Résumé exécutif)
Ce document décrit l'algorithme de hachage MD5 (MD5 Message-Digest Algorithm). L'algorithme prend en entrée un message de longueur arbitraire et produit en sortie une « empreinte numérique (Fingerprint) » ou « hachage de message (Message Digest) » de 128 bits. Il est supposé qu'il est computationnellement infaisable de produire deux messages ayant le même hachage, ou de produire un message ayant un hachage cible préspécifié. L'algorithme MD5 est destiné aux applications de signature numérique (Digital Signature), où un fichier volumineux doit être « compressé » de manière sécurisée avant d'être chiffré avec une clé privée (Private Key) dans un système de cryptographie à clé publique tel que RSA.
L'algorithme MD5 est conçu pour être assez rapide sur les machines 32 bits. De plus, l'algorithme MD5 ne nécessite pas de grandes tables de substitution ; l'algorithme peut être codé de manière très compacte.
L'algorithme MD5 est une extension de l'algorithme de hachage MD4 [1,2]. MD5 est légèrement plus lent que MD4, mais plus « conservateur » dans sa conception. MD5 a été conçu parce qu'il semblait que MD4 était adopté plus rapidement que ne le justifiait l'examen critique existant ; parce que MD4 a été conçu pour être exceptionnellement rapide, il se trouve « à la limite » en termes de risque d'attaque cryptanalytique réussie. MD5 recule un peu, sacrifiant un peu de vitesse pour une probabilité beaucoup plus grande de sécurité ultime. Il incorpore certaines suggestions faites par divers réviseurs et contient des optimisations supplémentaires. L'algorithme MD5 est placé dans le domaine public pour examen et adoption possible comme standard.
Pour les applications basées sur OSI, l'identifiant d'objet de MD5 est :
md5 OBJECT IDENTIFIER ::=
iso(1) member-body(2) US(840) rsadsi(113549) digestAlgorithm(2) 5}
Dans le type X.509 AlgorithmIdentifier [3], les paramètres pour MD5 devraient avoir le type NULL.