Cos’è l’hashing? Come funziona il processo di hash

L’hashing è un metodo crittografico che trasforma record di dati e caratteri di qualsiasi lunghezza in valori hash compatti fissi. Questo procedimento offre così più sicurezza della crittografia: senza chiave i valori hash non possono essere riconvertiti nei valori originali. L’hashing è particolarmente importante per l’amministrazione e la sicurezza di database, dati utente, gestione delle password e autenticazione degli accessi.

Cos’è l’hashing?

L’hashing è un importante strumento crittografico per convertire i dati in cosiddetti “valori hash”. A questo scopo si utilizza una speciale funzione hash, principalmente sotto forma di algoritmo. Con l’hashing, record di dati come password, dati aziendali e degli utenti o dati in altre forme vengono “tagliati” e trasformati in una nuova forma breve, il valore hash. Dopo questo processo, i valori hash hanno sempre la stessa lunghezza e rappresentano i record di dati originali. Possono essere salvati in database in forma compatta e sicura in una tabella hash, risparmiando risorse.

Il vantaggio è che senza chiave i valori hash non possono essere riconvertiti nella forma originale, neanche se dovessero cadere nelle mani sbagliate, quindi i cybercriminali non se ne fanno nulla. Spesso si confondono hashing e crittografia. Siccome i valori hash non vengono crittografati, ma convertiti in una sequenza di caratteri completamente nuova, non possono essere decifrati. Per ricomporli occorrono la chiave, l’algoritmo utilizzato e i dati originali associati ai valori hash.

Come funziona l’hashing?

Il processo di hashing prevede tre componenti:

  • Funzione hash: di norma la funzione hash è un algoritmo crittografico che scompone completamente dati di diverse lunghezze, li risolve e li converte in sequenze di caratteri di lunghezza sempre uguale. I valori hash sono considerevolmente più corti e compatti dei valori originali.
  • Valore hash: i valori hash sono il risultato della funzione hash. A differenza dei valori originali, presentano sempre una lunghezza fissa di caratteri esadecimali, che dipende dalla procedura utilizzata.
  • Tabelle hash: i valori hash possono essere salvati in database come tabelle hash. Richiedono molto meno spazio rispetto al salvataggio dei record di dati originali. Con l’hashing i record di dati ricevono valori indice specifici che mostrano dove si trova il record, riducendo considerevolmente il tempo di elaborazione e la potenza di calcolo nella ricerca delle informazioni.

Il funzionamento dell’hashing si basa su cinque proprietà caratteristiche che garantiscono sicurezza e affidabilità:

  • Determinismo: la funzione hash deve sempre generare un valore hash di lunghezza fissa a prescindere dalla sequenza di caratteri di origine.
  • Impossibilità di rilettura: l’hashing trasforma i valori originali in valori hash non “rileggibili”. Non deve essere possibile decifrare il valore hash nel senso classico del termine e rigenerare il testo di origine o la sequenza di caratteri originale.
  • Sicurezza anticollisione: non può essere assegnato lo stesso valore hash a dati diversi. Se due valori originali ricevono lo stesso valore hash, si verifica una collisione. I valori hash, che sono unici e inconfondibili, riducono i punti di attacco degli hacker, aumentando la sicurezza. Tuttavia, a seconda dell’applicazione, una collisione può anche essere voluta.
  • Continuità o non continuità: in linea di principio, i valori hash offrono una maggiore sicurezza se non sono continui, ossia se record di dati originali differenti ricevono valori hash i più diversi possibile. A loro volta, i valori hash continui sono desiderati se l’hashing è utilizzato per gestire record e dati simili.
  • Velocità: l’hashing non soltanto aumenta la sicurezza, ma permette anche un accesso più rapido ai database.

Campi di applicazione dell’hashing

I vantaggi e il funzionamento dell’hashing risultano particolarmente chiari in diversi casi applicativi e settori d’impiego. I campi di applicazione tipici sono:

  • Generazione di tabelle hash
  • Crittografia di dati importanti
  • Ricerca di duplicati
  • Checksum e firme digitali
  • Ricerca di dati simili
  • Sistemi di autenticazione
  • Caching

Gestione dei database

L’hashing offre il vantaggio di permettere di salvare grandi quantità di dati in modo più compatto ed efficiente sotto forma di tabelle hash. A questo scopo, le sequenze di caratteri vengono riunite come valori hash sotto una posizione di indirizzo nel database, creando una tabella hash. Così si risparmia spazio, si aumenta la sicurezza dei database e si accelera la ricerca di determinate voci nella tabella hash. I valori e le tabelle hash ottimizzano l’organizzazione e la gestione delle infrastrutture di indici e dati.

In pratica: i database dei clienti comprendono generalmente informazioni importanti come nomi, dati di contatto o indirizzi dei clienti. Una normale ricerca di informazioni specifiche in un database richiederebbe molto tempo, perché si dovrebbe scansionare l’intero database. Ma con l’hashing si possono creare blocchi di dati con una determinata posizione di indirizzo nel database. Quando viene eseguita una ricerca, il computer salta quindi immediatamente alla posizione del relativo valore nella tabella hash.

Firme digitali e checksum

L’hashing riveste un ruolo importante anche come metodo di autenticazione. Ad esempio, serve per generare firme digitali, le cosiddette impronte digitali, per confermare l’integrità della comunicazione tra mittente e destinatario. Anche per la creazione di un nuovo account utente è possibile collegare le password a un valore hash. Creando un nuovo account utente, una funzione hash genera un valore per la password selezionata. A ogni accesso successivo la password inserita viene confrontata con il valore hash registrato. Anche al momento del ripristino della password si genera un nuovo valore hash per la nuova password.

In pratica: le firme digitali permettono di verificare se messaggi, download o anche siti web sono sicuri. A questo scopo, i mittenti generano valori hash dai messaggi o ne forniscono uno nel momento in cui viene scaricato un programma. A loro volta, utilizzando la stessa funzione, anche i destinatari generano un valore hash, che viene confrontato con il valore fornito, solitamente crittografato. Un esempio perfetto è la crittografia SSL/TLS nel web, con cui il server web invia al browser un certificato del server. Da questo l’hashing genera una chiave di sessione che viene ricevuta, decifrata e confermata dal server. Dopo l’autenticazione inizia il traffico di dati HTTPS. Anche l’SFTP funziona in modo analogo.

Password e altri dati sensibili

Per il salvataggio di dati sensibili come password o dati di accesso o utente, l’hashing offre una sicurezza considerevolmente superiore. I dati non vengono registrati nel database nella loro forma originale o semplicemente crittografati. I record di dati vengono scomposti in valori hash che, in caso di furto, da soli non producono nulla senza la chiave o i mezzi necessari. Durante l’inserimento della password il valore hash calcolato viene infatti confrontato con il valore hash salvato. Talvolta l’hashing è utilizzato anche nel caching allo scopo di rendere illeggibili alle persone non autorizzate le informazioni salvate temporaneamente, come siti web visitati o dati di accesso e numeri.

In pratica: con l’hashing si aumenta la sicurezza anche del salvataggio di svariati contenuti come testi o file audio e video. Le strutture binarie dei file vengono tradotte in valori hash compatti a cui fa riferimento il relativo blocco di dati. Siccome i valori hash sono collegati alla posizione nel database, non solo la ricerca è più veloce, ma senza le relative chiavi i dati risultano illeggibili agli assalitori e non sono riconvertibili nella forma originale.

Quali vantaggi offre l’hashing?

I vantaggi dell’hashing in breve:

  • I dati sensibili sono salvati e gestiti in modo sicuro e compatto.
  • I record di dati convertiti in valori hash non possono essere decodificati o riportati nella forma originale facilmente.
  • L’accesso ai database è più veloce, in quanto i valori hash sono associati a posizioni nel database.
  • Senza le relative tecnologie o le informazioni sulla funzione hash, i valori hash rubati sono inutilizzabili per gli hacker.
  • L’hashing permette di autenticare o firmare in modo affidabile lo scambio sicuro di dati, messaggi o software.

Hashing e blockchain

L’hashing e le relative funzioni sono una componente essenziale della blockchain. Per l’autenticazione di transazioni con criptovalute, come i bitcoin, vengono generati hash durante il mining. Il bitcoin lavora ad esempio con l’algoritmo hash SHA-256, che converte sequenze di caratteri di qualsiasi lunghezza in una sequenza fissa (hash) di 64 caratteri. L’hashing legittima, autentica e documenta le transazioni in criptovaluta ufficiali e le registra nella blockchain, assicurando così un elevato grado di sicurezza.

Nella blockchain l’hashing svolge tre funzioni principali:

  • Mining: la potenza di mining di una rete di criptovalute è chiamata anche “hash rate”. Indica quanti minatori sono attivi. I minatori generano hash risolvendo problemi matematici. Se un hash è valido, viene convalidato un blocco di transazioni. Più l’hash rate è alto, maggiore è il numero di monete o token che viene generato. Il mining di criptovalute si basa quindi su algoritmi hash riferiti alle transazioni.
  • Blockchain: le transazioni registrate convalidate vengono documentate in modo sequenziale sotto forma di blocchi. Sono aggiunte alla blockchain nel corso del mining. Ciascun blocco viene collegato con quello precedente e ne riceve il valore hash. Si esclude così che si presenti un blocco non valido o dannoso.
  • Generazione delle chiavi: l’hashing è utilizzato anche per la trasmissione delle criptovalute. Viene eseguita un’autenticazione tramite chiavi pubbliche o private.

L’hashing è sicuro?

In linea di principio, le esperte e gli esperti di sicurezza dei dati consigliano di ricorrere all’hashing per salvare database e dati sensibili con la maggiore sicurezza possibile. L’hashing è da preferire alla crittografia classica, in quanto i valori hash non contengono informazioni sui record di dati originali e non possono essere decodificati. Anche gli attacchi di forza bruta, con cui si provano combinazioni di stringhe di caratteri fino a trovare una corrispondenza, richiedono un numero astronomico di tentativi.

Tuttavia, esistono criminali che confrontano le liste dei valori hash rubati con le tabelle arcobaleno. Si tratta di liste di valori hash rubati e dei relativi dati di accesso. Se un valore hash del database corrisponde a un valore della lista arcobaleno e alla relativa password, si verifica una falla di sicurezza. Per questo motivo, anche con l’hashing si consiglia di cambiare regolarmente le password, di eseguire aggiornamenti periodici e di usare algoritmi nuovi o aggiornati. La Internet Engineering Taskforce (IETF) nel 2021 ha consigliato gli algoritmi hash seguenti:

  • Argon2
  • Bcrpt
  • Scrypt
  • PBKDF2

Un’altra possibilità per rendere l’hashing ancora più sicuro è rappresentata dai processi crittografici, come salt e pepper. Con salt, ciascuna password tradotta in valori hash riceve una sequenza di caratteri aggiuntiva generata casualmente. I salt con una lunghezza consigliata di 16 caratteri rendono gli attacchi di forza bruta pressoché impossibili, offrendo quindi una sicurezza ancora maggiore. Se si aggiunge anche un codice di 32 caratteri chiamato “pepper” a tutte le password, difficilmente i valori hash con salt rubati possono essere forzati.

Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top