Un checksum è una cifra che serve come somma di cifre corrette nei dati, che può essere usata in seguito per rilevare errori nei dati durante la memorizzazione o la trasmissione. Le somme MD5 (Message Digest 5) possono essere usate come checksum per verificare file o stringhe in un file system Linux.
Le somme MD5 sono stringhe di caratteri a 128 bit (numeri e lettere) risultanti dall’esecuzione dell’algoritmo MD5 contro un file specifico. L’algoritmo MD5 è una popolare funzione di hash che genera un message digest a 128-bit chiamato valore di hash, e quando se ne genera uno per un particolare file, esso è precisamente invariato su qualsiasi macchina, non importa il numero di volte che viene generato.
E’ normalmente molto difficile trovare due file distinti che risultano nelle stesse stringhe. Pertanto, è possibile utilizzare md5sum per controllare l’integrità dei dati digitali, determinando che un file o una ISO scaricati siano una copia bit per bit del file o della ISO remota.
Suggerimento di lettura: Progress – Monitorare il progresso dei comandi (cp, mv, dd, tar, ecc.) in Linux
In Linux, il programma md5sum calcola e controlla i valori MD5 di un file. È un componente del pacchetto GNU Core Utilities, quindi è preinstallato nella maggior parte, se non in tutte le distribuzioni Linux.
Guardate il contenuto di /etc/group
salvato come groups.cvs qui sotto.
Il comando md5sums sottostante genererà un valore di hash per il file come segue:
$ md5sum groups.csvbc527343c7ffc103111f3a694b004e2f groups.csv
Quando si tenta di alterare il contenuto del file rimuovendo la prima linea, root:x:0:
e poi si esegue il comando per una seconda volta, si prova ad osservare il valore dell’hash:
$ md5sum groups.csv46798b5cfca45c46a84b7419f8b74735 groups.csv
Si noterà che il valore dell’hash è cambiato, indicando che il contenuto del file è stato alterato.
Ora, rimettete la prima linea del file, root:x:0:
e rinominatelo in group_file.txt ed esegui il comando sottostante per generare nuovamente il suo valore di hash:
$ md5sum groups_list.txtbc527343c7ffc103111f3a694b004e2f groups_list.txt
Dall’output di cui sopra, il valore di hash è ancora lo stesso anche quando il file è stato rinominato, con il suo contenuto originale.
Importante: le somme md5 verificano/lavorano solo con il contenuto del file piuttosto che con il nome del file.
Il file groups_list.txt è un duplicato di groups.csv, quindi, prova a generare il valore hash dei file allo stesso tempo come segue.
Vedrai che entrambi hanno gli stessi valori di hash, questo perché hanno esattamente lo stesso contenuto.
$ md5sum groups_list.txt groups.csv bc527343c7ffc103111f3a694b004e2f groups_list.txtbc527343c7ffc103111f3a694b004e2f groups.csv
Puoi reindirizzare i valori di hash di uno o più file in un file di testo e conservarli, condividerli con altri. Per i due file di cui sopra, è possibile emettere il comando seguente per reindirizzare i valori di hash generati in un file di testo per un uso successivo:
$ md5sum groups_list.txt groups.csv > myfiles.md5
Per controllare che i file non siano stati modificati da quando avete creato il checksum, eseguite il prossimo comando. Dovreste essere in grado di visualizzare il nome di ogni file insieme a “OK”.
Lettura consigliata: Trova i primi 15 processi per utilizzo della memoria in Linux
L’opzione -c
o --check
dice al comando md5sums di leggere le somme MD5 dai file e controllarle.
$ md5sum -c myfiles.md5groups_list.txt: OKgroups.csv: OK
Ricorda che dopo aver creato il checksum, non puoi rinominare i file, altrimenti ottieni un errore “No such file or directory”, quando cerchi di verificare i file con nuovi nomi.
Per esempio:
$ mv groups_list.txt new.txt$ mv groups.csv file.txt$ md5sum -c myfiles.md5
md5sum: groups_list.txt: No such file or directorygroups_list.txt: FAILED open or readmd5sum: groups.csv: No such file or directorygroups.csv: FAILED open or readmd5sum: WARNING: 2 listed files could not be read
Il concetto funziona anche per le stringhe, nei comandi sottostanti, -n
significa non emettere la newline finale:
$ echo -n "Tecmint How-Tos" | md5sum - afc7cb02baab440a6e64de1a5b0d0f1b -
$ echo -n "Tecmint How-To" | md5sum - 65136cb527bff5ed8615bd1959b0a248 -
In questa guida, vi ho mostrato come generare valori hash per i file, creare un checksum per una successiva verifica dell’integrità dei file in Linux. Anche se sono state rilevate vulnerabilità di sicurezza nell’algoritmo MD5, gli hash MD5 rimangono ancora utili soprattutto se ci si fida della parte che li crea.