1. Executive Summary (Sommario esecutivo)
Questo documento descrive l'algoritmo di message-digest MD5 (MD5 Message-Digest Algorithm). L'algoritmo prende come input un messaggio di lunghezza arbitraria e produce come output un'« impronta digitale (Fingerprint) » o « message digest (Message Digest) » a 128 bit dell'input. Si ritiene che sia computazionalmente impossibile produrre due messaggi con lo stesso message digest, o produrre un messaggio con un message digest target prespecificato. L'algoritmo MD5 è destinato alle applicazioni di firma digitale (Digital Signature), dove un file di grandi dimensioni deve essere « compresso » in modo sicuro prima di essere crittografato con una chiave privata (Private Key) in un sistema crittografico a chiave pubblica come RSA.
L'algoritmo MD5 è progettato per essere piuttosto veloce su macchine a 32 bit. Inoltre, l'algoritmo MD5 non richiede grandi tabelle di sostituzione (Substitution Tables); l'algoritmo può essere codificato in modo molto compatto.
L'algoritmo MD5 è un'estensione dell'algoritmo di message-digest MD4 [1,2]. MD5 è leggermente più lento di MD4, ma più « conservativo » nel design. MD5 è stato progettato perché si riteneva che MD4 fosse forse adottato per l'uso più rapidamente di quanto giustificato dalla revisione critica esistente; poiché MD4 è stato progettato per essere eccezionalmente veloce, si trova « al limite » in termini di rischio di attacco criptoanalitico riuscito. MD5 fa un passo indietro, rinunciando a un po' di velocità per una probabilità molto maggiore di sicurezza finale. Incorpora alcuni suggerimenti fatti da vari revisori e contiene ottimizzazioni aggiuntive. L'algoritmo MD5 viene posto nel dominio pubblico per la revisione e la possibile adozione come standard.
Per le applicazioni basate su OSI, l'identificatore di oggetto (Object Identifier) di MD5 è:
md5 OBJECT IDENTIFIER ::=
iso(1) member-body(2) US(840) rsadsi(113549) digestAlgorithm(2) 5}
Nel tipo X.509 AlgorithmIdentifier [3], i parametri per MD5 dovrebbero avere tipo NULL.