Cosa sono gli hash MD5, SHA-1 e SHA-256 e come posso controllarli?
A volte vedrai gli hash MD5, SHA-1 o SHA-256 visualizzati insieme ai download durante i tuoi viaggi su Internet, ma non conosci realmente cosa siano. Queste stringhe di testo apparentemente casuali consentono di verificare che i file scaricati non siano danneggiati o manomessi. Puoi farlo con i comandi integrati in Windows, macOS e Linux.
Come funzionano gli hash e come vengono utilizzati per la verifica dei dati
Gli hash sono prodotti da algoritmi crittografici progettati per produrre una stringa di caratteri. Spesso queste stringhe hanno una lunghezza fissa, indipendentemente dalla dimensione dei dati di input. Dai un'occhiata al grafico qui sopra e vedrai che sia "Fox" che "La volpe rossa salta sopra il cane blu" producono la stessa lunghezza.
Confrontiamo ora il secondo esempio del grafico con il terzo, il quarto e il quinto. Vedrai che, nonostante un cambiamento molto piccolo nei dati di input, gli hash risultanti sono tutti molto diversi l'uno dall'altro. Anche se qualcuno modifica una parte molto piccola dei dati di input, l'hash cambierà drasticamente.
MD5, SHA-1 e SHA-256 sono tutte diverse funzioni hash. I creatori di software spesso eseguono il download di un file, come un file .iso di Linux o anche un file .exe di Windows, e lo eseguono tramite una funzione di hash. Poi offrono un elenco ufficiale degli hash sui loro siti web.
In questo modo, puoi scaricare il file e quindi eseguire la funzione di hash per confermare che hai il vero file originale e che non è stato danneggiato durante il processo di download. Come abbiamo visto sopra, anche una piccola modifica al file cambierà drasticamente l'hash.
Questi possono anche essere utili se si dispone di un file che si ottiene da una fonte non ufficiale e si desidera confermare che è legittimo. Diciamo che hai un file .ISO Linux che hai ricevuto da qualche parte e vuoi confermare che non sia stato manomesso. È possibile cercare l'hash di quel file ISO specifico online sul sito Web della distribuzione Linux. È quindi possibile eseguirlo tramite la funzione di hash sul computer e verificare che corrisponda al valore di hash che ci si aspetta che abbia. Ciò conferma che il file che hai è esattamente lo stesso file che viene offerto per il download sul sito Web della distribuzione Linux, senza alcuna modifica.
Notare che "collisioni" sono state trovate con le funzioni MD5 e SHA-1. Si tratta di più file diversi, ad esempio un file sicuro e un file dannoso, che generano lo stesso hash MD5 o SHA-1. Ecco perché dovresti preferire SHA-256 quando possibile.
Come confrontare le funzioni di hash su qualsiasi sistema operativo
Con questo in mente, vediamo come controllare l'hash di un file che hai scaricato e confrontarlo con quello che ti è stato dato. Ecco i metodi per Windows, macOS e Linux. Gli hash saranno sempre identici se stai usando la stessa funzione di hashing sullo stesso file. Non importa quale sistema operativo usi.
finestre
Questo processo è possibile senza software di terze parti su Windows grazie a PowerShell.
Per iniziare, apri una finestra di PowerShell avviando il collegamento "Windows PowerShell" nel menu Start.
Eseguire il comando seguente, sostituendo "C: \ path \ to \ file.iso" con il percorso di qualsiasi file che si desidera visualizzare l'hash di:
Get-FileHash C: \ percorso \ a \ file.iso
Ci vorrà un po 'di tempo per generare l'hash del file, a seconda della dimensione del file, dell'algoritmo che stai utilizzando e della velocità del disco in cui si trova il file.
Per impostazione predefinita, il comando mostrerà l'hash SHA-256 per un file. Tuttavia, è possibile specificare l'algoritmo di hashing che si desidera utilizzare se è necessario un MD5, SHA-1 o un altro tipo di hash.
Eseguire uno dei seguenti comandi per specificare un algoritmo di hashing diverso:
Get-FileHash C: \ path \ to \ file.iso -Algorithm MD5
Get-FileHash C: \ path \ to \ file.iso -Algorithm SHA1
Get-FileHash C: \ path \ to \ file.iso -Algorithm SHA256
Get-FileHash C: \ path \ to \ file.iso -Algorithm SHA384
Get-FileHash C: \ path \ to \ file.iso -Algorithm SHA512
Get-FileHash C: \ path \ to \ file.iso -Algorithm MACTripleDES
Get-FileHash C: \ path \ to \ file.iso -Algorithm RIPEMD160
Confronta il risultato della funzione di hash con il risultato che ti aspettavi di vedere. Se è lo stesso valore, il file non è stato danneggiato, manomesso o alterato in altro modo dall'originale.
Mac OS
macOS include i comandi per visualizzare diversi tipi di hash. Per accedervi, avvia una finestra di Terminale. Lo troverai su Finder> Applicazioni> Utility> Terminale.
Il md5
comando mostra l'hash MD5 di un file:
md5 / percorso / su / file
Il shasum
comando mostra l'hash SHA-1 di un file per impostazione predefinita. Ciò significa che i seguenti comandi sono identici:
shasum / percorso / a / file
shasum -a 1 / percorso / per / file
Per mostrare l'hash SHA-256 di un file, eseguire il seguente comando:
shasum -a 256 / percorso / su / file
Linux
Su Linux, accedi a un Terminale ed esegui uno dei seguenti comandi per visualizzare l'hash di un file, a seconda del tipo di hash che vuoi visualizzare:
md5sum / percorso / su / file
sha1sum / percorso / su / file
sha256sum / percorso / su / file
Alcuni hash sono firmati crittograficamente per una maggiore sicurezza
Mentre gli hash possono aiutarti a confermare che un file non è stato manomesso, c'è ancora una via d'attacco qui. Un utente malintenzionato può ottenere il controllo del sito Web di una distribuzione Linux e modificare gli hash che appaiono su di esso, oppure un utente malintenzionato può eseguire un attacco man-in-the-middle e modificare la pagina Web in transito se si accede al sito Web tramite HTTP anziché HTTPS crittografato.
Ecco perché le moderne distribuzioni Linux spesso forniscono più degli hash elencati nelle pagine web. Firmano crittograficamente questi hash per proteggere gli aggressori che potrebbero tentare di modificare gli hash. Dovrai verificare la firma crittografica per assicurarti che il file hash sia effettivamente firmato dalla distribuzione Linux se vuoi essere assolutamente sicuro che l'hash e il file non siano stati manomessi.
La verifica della firma crittografica è un processo più complesso. Leggi la nostra guida per verificare che le ISO di Linux non siano state manomesse per le istruzioni complete.
Immagine di credito: Jorge Stolfi / Wikimedia