Reading Time: 2 minutes

MD5

L’algoritmo MD5, ideato da Ron Rivest, rappresenta lo stadio finale della naturale evoluzione della famiglia di algoritmi denominati Message Digest algorithm (MD).

Predecessori dell’algoritmo MD5 sono stati algoritmi come MD2 e MD4, che in seguito ad accurata crittoanalisi si sono rivelati vulnerabili a particolari tipi di attacco.

L’algoritmo di hashing MD5 rappresenta, al momento, lo stato dell’arte e risulta idoneo per processare messaggi di lunghezza variabile, producendo un digest di 128 bit.

I messaggi in ingresso vengono processati a blocchi di 512 bit. Se il messaggio di ingresso non risulta scomponibile in un numero intero di blocchi, viene aggiunto un opportuno numero di bit non significativi (pad data) in modo da rispettare questa proprietà.

L’algoritmo MD5 prevede alcune fasi preliminari:

  1. si controlla la lunghezza del messaggio M, e se non risulta pari esattamente a 448(mod 512) bit, si aggiunge un opportuno numero di bit (pad data);
  2. si appende al messaggio la rappresentazione a 64 bit della lunghezza complessiva dei dati in ingresso;
  3. si inizializzano 4 registri a 32 bit denominati (A, B, C, D) a valori prestabiliti.

Gli eventuali bit che vengono aggiunti al messaggio M valgono sempre 0, tranne il primo bit che vale 1.

Dopo l’aggiunta della rappresentazione a 64 bit della lunghezza dei dati, il blocco in ingresso risulta esattamente una sequenza di bit multipla del modulo 512.

A questo punto l’ingresso viene spezzato in blocchi che vengono processati in cascata, uno dopo l’altro, applicando ripetutamente le funzioni interne all’algoritmo MD5.

Il primo blocco viene processato utilizzando i valori iniziali dei registri A, B, C, D. I blocchi successivi vengono invece processati utilizzando i valori corrrenti dei registri al passo i-esimo.

Entrando nel dettaglio del funzionamento, lo schema MD5 prevede 64 operazioni, suddivise in quattro distinte fasi (round), per la produzione del digest di ciascun blocco.

MD5 utilizza una funzione non lineare diversa per ciascun round.

L’output del processo è rappresentato dal valore finale dei 4 registri.

L’algoritmo MD5 ha rappresentato per molti anni uno standard di fatto per la creazione di message digest in numerose applicazioni e servizi Internet, fino alla emissione di una specifica RFC (RFC 1321) che ne definisce la corretta modalità di impiego.

error: Content is protected !!