L'hashing è un concetto fondamentale nella crittografia e nella sicurezza delle informazioni. La nostra guida esplora i principi dell'hashing, spiegando come funzionano le funzioni di hash crittografiche e la loro importanza nella protezione dei dati sensibili.
Scopri i diversi tipi di funzioni di hash, le loro proprietà e le applicazioni comuni come l'archiviazione delle password, la verifica dell'integrità dei dati e le firme digitali. Scopri come scegliere la funzione di hash giusta per il tuo caso d'uso specifico e implementare pratiche di hashing sicure nella tua organizzazione.
 Che cos'è un algoritmo di hashing?
Gli hash sono il risultato di un algoritmo di hashing come MD5 (Message Digest 5) o SHA (Secure Hash Algorithm). Questi algoritmi mirano essenzialmente a produrre una stringa unica e di lunghezza fissa, il valore hash o "message digest" – per qualsiasi dato o "messaggio" dato. Poiché ogni file su un computer è, in definitiva, solo un dato che può essere rappresentato in forma binaria, un algoritmo di hashing può prendere quel dato ed eseguire un calcolo complesso su di esso e produrre una stringa di lunghezza fissa come risultato del calcolo. Il risultato è il valore hash del file o il message digest.
 Per calcolare l'hash di un file in Windows 10, utilizzare il cmdlet Get-FileHash integrato in PowerShell e inserire il percorso del file di cui si desidera produrre il valore hash. Per impostazione predefinita, verrà utilizzato l'algoritmo SHA-2 256:
  È possibile passare a un altro algoritmo specificandolo dopo il percorso del file con l'opzione -Algorithm. Passando il risultato a Format-List si ottiene anche un output più leggibile:
  Per gli utenti Mac e Linux, gli strumenti della riga di comando shasum e md5 hanno lo stesso scopo. Come vedremo tra poco, indipendentemente dal fatto che si utilizzi Windows, Mac o Linux, il valore hash sarà identico per qualsiasi file e algoritmo di hashing.
Come gli hash stabiliscono l'identità
Gli hash non possono essere invertiti, quindi conoscere semplicemente il risultato dell'hash di un file da un algoritmo di hash non consente di ricostruire il contenuto del file. Ciò che consente di fare, tuttavia, è determinare se due file sono identici o meno senza conoscere nulla del loro contenuto.
Per questo motivo, l'idea che il risultato sia unico è fondamentale per l'intero concetto di hash. Se due file diversi potessero produrre lo stesso digest, avremmo una "collisione" e non potremmo utilizzare l'hash come identificatore affidabile per quel file.
La possibilità di produrre una collisione è minima, ma non impossibile, ed è il motivo per cui algoritmi più sicuri come SHA-2 hanno sostituito SHA-1 e MD5. Ad esempio, il contenuto dei seguenti due file, ship.jpg e plane.jpg sono chiaramente diversi, come dimostra una semplice ispezione visiva, quindi dovrebbero produrre digest di messaggi diversi.
  Tuttavia, quando calcoliamo il valore con MD5 otteniamo una collisione, indicando erroneamente che i file sono identici. Qui l'output proviene dalla riga di comando su macOS utilizzando Terminal.app, ma è possibile vedere che il valore hash ship.jpg è lo stesso che abbiamo ottenuto in precedenza da PowerShell:
 Calcoliamo il valore hash con SHA-2 256. Ora otteniamo un risultato più accurato che indica che i file sono effettivamente diversi come previsto:
 A cosa serve l'hashing?
Dato un identificatore univoco per un file, possiamo utilizzare queste informazioni in diversi modi. Alcune soluzioni AV legacy si basano interamente sui valori hash per determinare se un file è dannoso o meno, senza esaminarne il contenuto o il comportamento. Lo fanno mantenendo un database interno database dei valori hash appartenenti a malware noti. Durante la scansione di un sistema, il motore antivirus calcola un valore hash per ogni file eseguibile presente sul computer dell'utente e verifica se esiste una corrispondenza nel proprio database.
Questa deve essere sembrata una soluzione elegante agli primi tempi della sicurezza informatica, ma con il senno di poi non è difficile individuare i difetti di affidarsi ai valori hash.
In primo luogo, con l'esplosione del numero di campioni di malware, mantenere un database di firme è diventato un compito semplicemente impossibile da svolgere. Si stima che ogni giorno compaiano oltre 500.000 campioni di malware unici. Ciò è molto probabilmente dovuto in gran parte al fatto che gli autori di malware si sono resi conto di poter ingannare facilmente i motori antivirus che si basano sugli hash, impedendo loro di riconoscere un campione. Tutto ciò che l'autore dell'attacco deve fare è aggiungere un byte in più alla fine di un file e questo produrrà un hash diverso.
 Si tratta di un processo talmente semplice che gli autori di malware possono automatizzare il processo in modo tale che lo stesso URL invii lo stesso malware alle vittime con un hash diverso ogni pochi secondi.
In secondo luogo, il difetto dei tradizionali antivirus è sempre stato quello di richiedere la conoscenza preventiva della minaccia per poterla rilevare, quindi una soluzione anti-malware basata su un database di valori hash noti è sempre un passo indietro rispetto al prossimo attacco.
La risposta a questo problema è, ovviamente, una soluzione di sicurezza che sfrutta l'intelligenza artificiale comportamentale e che adotta un approccio difesa approfondita.
Tuttavia, ciò non significa che i valori hash non abbiano alcun valore! Al contrario, la possibilità di identificare un file in modo univoco presenta ancora importanti vantaggi. I valori hash sono presenti nelle firme digitali e nei certificati in molti contesti, come la firma del codice e SSL, per aiutare a stabilire che un file, un sito web o un download siano autentici.
 I valori hash sono anche di grande aiuto per i ricercatori di sicurezza, i team SOC, i cacciatori di malware e i reverse engineer. Uno degli usi più comuni degli hash che vedrete in molti relazioni tecniche qui su SentinelOne e altrove è quello di condividere Indicatori di compromissione. Utilizzando valori hash, i ricercatori possono fare riferimento a campioni di malware e condividerli con altri attraverso repository di malware come VirusTotal, VirusBay, Malpedia e MalShare.
 Vantaggi degli hash nella ricerca delle minacce
Anche la ricerca delle minacce è facilitata grazie ai valori hash. Vediamo un esempio di come un amministratore IT potrebbe cercare minacce nella propria flotta utilizzando i valori hash nella console di gestione SentinelOne.
Gli hash sono davvero utili quando si identifica una minaccia su una macchina e si desidera eseguire una query sull'intera rete per verificare l'esistenza di quel file. Fare clic sull'icona Visibilità nella console di gestione SentinelOne e avviare una nuova query. In questo caso, utilizzeremo semplicemente l'hash SHA1 del file e cercheremo la sua esistenza negli ultimi 3 mesi.
 Ottimo, possiamo vedere che ci sono stati alcuni casi, ma la magia non finisce qui. La ricerca hash ci ha portato al TrueContext ID, che possiamo utilizzare come punto di partenza per addentrarci davvero nella tana del bianconiglio e vedere esattamente cosa ha fatto questo file: quali processi ha creato, quali file ha modificato, quali URL ha contattato e così via. In breve, possiamo ricostruire l'intera trama dell'attacco con pochi clic dall'hash del file.
 Cybersicurezza alimentata dall'intelligenza artificiale
Elevate la vostra posizione di sicurezza con il rilevamento in tempo reale, la risposta automatica e la visibilità totale dell'intero ambiente digitale.
Richiedi una demoConclusione
Gli hash sono uno strumento fondamentale nella sicurezza informatica in quanto possono dirci in modo affidabile quando due file sono identici, a condizione che utilizziamo algoritmi di hashing sicuri che evitano le collisioni. Tuttavia, come abbiamo visto sopra, due file possono avere lo stesso comportamento e le stesse funzionalità senza necessariamente avere lo stesso hash, quindi affidarsi all'identità dell'hash per il rilevamento antivirus è un approccio errato.
Nonostante ciò, gli hash sono ancora utili per gli analisti della sicurezza per attività quali la condivisione di IOC e la ricerca delle minacce, e senza dubbio li incontrerete quotidianamente se lavorate in qualsiasi ambito della sicurezza informatica e di rete.
Ti è piaciuto questo articolo? Seguici su LinkedIn, Twitter, YouTube o Facebook per vedere i contenuti che pubblichiamo.
Maggiori informazioni sulla sicurezza informatica
- Il nemico interno – Le 7 violazioni dei dati più inquietanti del 2018
 - 5 modi in cui un CISO può affrontare la carenza di competenze in materia di sicurezza informatica
 - Come il malware può facilmente sconfiggere la sicurezza del macOS di Apple
 - Che cos'è Windows PowerShell (e potrebbe essere dannoso)?
 
Domande frequenti sull'hashing
L'hashing è una tecnica di crittografia unidirezionale che converte i dati in una stringa di caratteri di lunghezza fissa. Non è possibile invertire questo processo per recuperare i dati originali. Funziona come un'impronta digitale: lo stesso input produce sempre lo stesso hash, ma input diversi creano output completamente diversi. L'hashing protegge le password, verifica l'integrità dei file e garantisce che i dati non siano stati manomessi. È essenziale per la tecnologia blockchain e le firme digitali.
Un esempio comune è l'hashing SHA-256 della parola "hello" per produrre "2cf24dba4f21d4288094c30e2ede82c380cac19544bb5c4ab02f5b2db38500d3”". Se si cambia anche solo un carattere in "Hello", si ottiene un hash completamente diverso. I sistemi di password utilizzano l'hashing: quando si crea una password, questa viene sottoposta a hashing e memorizzata. Quando si effettua il login, la password inserita viene sottoposta a hashing e confrontata con l'hash memorizzato. Anche il controllo dell'integrità dei file utilizza l'hashing per rilevare eventuali modifiche.
L'hashing garantisce l'integrità dei dati rilevando eventuali modifiche non autorizzate. Protegge le password rendendole illeggibili anche in caso di violazione dei database. È possibile verificare che i file scaricati non siano stati danneggiati o infettati da malware. L'hashing consente le firme digitali e i protocolli di comunicazione sicuri. È fondamentale per la tecnologia blockchain e la sicurezza delle criptovalute. Senza l'hashing, non sarebbe possibile garantire che i dati rimangano invariati durante la trasmissione o l'archiviazione.
Le principali famiglie di hashing sono MD (Message Digest), SHA (Secure Hash Algorithm) e RIPEMD. MD5 produce hash a 128 bit, ma ora è considerato non sicuro. SHA-256 è attualmente il più utilizzato e produce hash a 256 bit. SHA-3 è lo standard più recente, progettato per sostituire gli algoritmi precedenti. Ogni tipo varia in termini di livello di sicurezza, lunghezza dell'hash e requisiti di calcolo. I sistemi moderni preferiscono SHA-256 o SHA-3 per le applicazioni critiche dal punto di vista della sicurezza.
L'hashing è unidirezionale e irreversibile, mentre la crittografia è bidirezionale e reversibile. L'hashing produce sempre un output di lunghezza fissa indipendentemente dalla dimensione dell'input. La lunghezza dell'output della crittografia varia in base ai dati di input. L'hashing verifica l'integrità dei dati, mentre la crittografia protegge la riservatezza dei dati. È possibile decrittografare i dati crittografati con la chiave corretta, ma non è possibile de-hashare i dati. Entrambi servono a scopi di sicurezza diversi e spesso funzionano insieme.
L'hashing garantisce la sicurezza dei dati rendendo impossibile il reverse engineering delle informazioni originali. Anche se gli aggressori rubano le password sottoposte a hashing, non possono determinare facilmente le password effettive. Qualsiasi modifica ai dati originali produce un hash completamente diverso, rendendo rilevabile qualsiasi manomissione. L'hashing non richiede chiavi di crittografia, quindi non c'è alcuna chiave da compromettere. Fornisce la verifica dell'integrità dei dati senza esporre il contenuto effettivo. Questo lo rende ideale per l'archiviazione delle password e la verifica dei file.
L'hashing consente un rapido recupero e una rapida verifica dei dati. Garantisce l'integrità dei dati senza esporne il contenuto originale. La sicurezza delle password migliora significativamente quando si utilizzano tecniche di hashing adeguate. Il controllo dell'integrità dei file diventa semplice e affidabile. L'hashing consente la tecnologia blockchain e transazioni sicure. È efficiente dal punto di vista computazionale e non richiede la gestione delle chiavi. Le firme digitali e i sistemi di autenticazione dipendono dall'hashing per la sicurezza. Anche la deduplicazione dei dati e la gestione efficiente dello storage traggono vantaggio dall'hashing.

