RFC 1321 - L'algoritmo MD5 Message-Digest
- Stato: Informational
- Pubblicato: April 1992
- Stream: IETF
- Errata: Nessun errata
Stato di questo memorandum
Questo memorandum fornisce informazioni alla comunità Internet. Non specifica uno standard Internet. La distribuzione di questo memorandum è illimitata.
Ringraziamenti
Vorremmo ringraziare Don Coppersmith, Burt Kaliski, Ralph Merkle, David Chaum e Noam Nisan per i numerosi commenti e suggerimenti utili.
Indice
- 1. Executive Summary (Sommario esecutivo)
- 2. Terminology and Notation (Terminologia e notazione)
- 3. MD5 Algorithm Description (Descrizione dell'algoritmo MD5)
- 3.1 Step 1. Append Padding Bits (Passo 1. Aggiungere bit di riempimento)
- 3.2 Step 2. Append Length (Passo 2. Aggiungere la lunghezza)
- 3.3 Step 3. Initialize MD Buffer (Passo 3. Inizializzare il buffer MD)
- 3.4 Step 4. Process Message in 16-Word Blocks (Passo 4. Elaborare il messaggio in blocchi di 16 parole)
- 3.5 Step 5. Output (Passo 5. Output)
- 4. Summary (Sommario)
- 5. Differences Between MD4 and MD5 (Differenze tra MD4 e MD5)
- References (Riferimenti)
Appendici
Sezioni aggiuntive
Risorse correlate
- Testo ufficiale: RFC 1321
- Pagina ufficiale: RFC 1321 DataTracker
- Errata: RFC Editor Errata
2. Terminology and Notation (Terminologia e notazione)
In questo documento, una « parola (Word) » è una quantità a 32 bit e un « byte (Byte) » è una quantità a otto bit. Una sequenza di bit può essere interpretata in modo naturale come una sequenza di byte, dove ogni gruppo consecutivo di otto bit è interpretato come un byte con il bit più significativo (Most Significant Bit) di ciascun byte elencato per primo. Analogamente, una sequenza di byte può essere interpretata come una sequenza di parole a 32 bit, dove ogni gruppo consecutivo di quattro byte è interpretato come una parola con il byte meno significativo (Least Significant Byte) dato per primo.
Sia x_i «x indice i». Se l'indice è un'espressione, lo racchiudiamo tra parentesi graffe, come in x_{i+1}. Analogamente, usiamo ^ per gli esponenti (esponenziazione), in modo che x^i denoti x alla potenza i.
Il simbolo « + » denota l'addizione di parole (cioè, addizione modulo 2^32). X <<< s denota il valore a 32 bit ottenuto spostando circolarmente (rotazione) X a sinistra di s posizioni di bit. not(X) denota il complemento bit a bit di X, e X v Y denota l'OR bit a bit di X e Y. X xor Y denota lo XOR bit a bit di X e Y, e XY denota l'AND bit a bit di X e Y.
4. Summary (Sommario)
L'algoritmo di message-digest MD5 è semplice da implementare e fornisce un'« impronta digitale » o message digest di un messaggio di lunghezza arbitraria. Si ritiene che la difficoltà di trovare due messaggi con lo stesso message digest sia dell'ordine di 2^64 operazioni, e che la difficoltà di trovare un messaggio con un message digest dato sia dell'ordine di 2^128 operazioni. L'algoritmo MD5 è stato attentamente esaminato per individuare eventuali debolezze. Tuttavia, si tratta di un algoritmo relativamente nuovo e un'ulteriore analisi della sicurezza è ovviamente giustificata, come nel caso di qualsiasi nuova proposta di questo tipo.
5. Differences Between MD4 and MD5 (Differenze tra MD4 e MD5)
Le seguenti sono le differenze tra MD4 e MD5:
-
È stato aggiunto un quarto round.
-
Ogni passo ha ora una costante additiva unica.
-
La funzione g nel round 2 è stata cambiata da (XY v XZ v YZ) a (XZ v Y not(Z)) per rendere g meno simmetrica.
-
Ogni passo ora aggiunge il risultato del passo precedente. Questo promuove un « effetto valanga » più rapido.
-
L'ordine in cui le parole di input vengono accedute nei round 2 e 3 è stato cambiato, per rendere questi modelli meno simili tra loro.
-
Gli importi di spostamento in ogni round sono stati approssimativamente ottimizzati, per ottenere un « effetto valanga » più rapido. Gli spostamenti in diversi round sono distinti.
Security Considerations (Considerazioni sulla sicurezza)
Il livello di sicurezza discusso in questo memorandum è considerato sufficiente per implementare schemi di firma digitale ibrida ad altissima sicurezza basati su MD5 e un sistema di crittografia a chiave pubblica.