Checksum
Da Wikipedia, l'enciclopedia libera.
Checksum, tradotto letteralmente significa somma di controllo. È una sequenza di bit che viene utilizzata per verificare l'integrità di un dato o di un messaggio che può subire alterazioni.
Il tipo più semplice di checksum consiste nel sommare tutti i bit del messaggio e di memorizzare il valore risultante. Per controllare l'integrità del messaggio sarà sufficiente effetuare la stessa operazione di somma e confrontarla con il checksum memorizzato. Se i due valori coincidono, i dati possono essere considerati integri.
Questa semplice forma di checksum non è molto accurata in quanto non permette di rilevare certe tipologie di errore come:
- il riordinamento dei byte del messaggio
- l'inserimento di byte con valore 0
- la presenza di diversi errori che sommati tra loro danno 0
In questi casi, quando cioè ci sono due o più serie di bit che hanno lo stesso checksum, si parla di collisioni. Ovviamente, minore è la probabilità di collisioni, migliore è la qualità dell'algoritmo di controllo e quindi la sicurezza nella verifica dell'integrità.
Con il tempo sono nati diversi metodi di controllo più sofisticati, come il checksum di Fletcher, l'Adler-32 il Cyclic redundancy check (CRC), che valutano non solo la somma dei bit, ma anche la loro posizione. Il prezzo della maggiore affidabilità viene pagato nelle risorse necessarie al calcolo del checksum.
Questi metodi sono utili per la verifica di corruzioni accidentali (errori di trasferimento, o di memorizzazione, perdita di dati), ma non sono sicuri contro gli attacchi di malintenzionati, in quanto le loro strutture matematiche non sono particolarmente complesse da aggirare. Per questo tipo di attacchi vengono utilizzati algoritmi di hash crittografati, come l'MD5, lo SHA-1 (in cui però sono state trovate o sembra possibile trovare collisioni), o lo SHA-256, per il momento incorruttibile.
I checksum vengono usati spesso su interne per poter garantire che i dati scaricati siano corretti e per garantirne l'autenticità. Per esempio nel download di software, il distributore del programma pubblica il checksum (in genere MD5 o SHA-1), che nello specifico viene chiamato digest, che viene controllato dall'utente per verificare l'integrità dei dati.