Oggi ci occupiamo di chiarire il significato del termine hashing in informatica deriva dall’inglese “sminuzzare”.
L’hashing è un concetto legato all’informatica fondamentale da conoscere poiché che funge da base per molti algoritmi crittografici.
La funzione hash permette di memorizzare, cercare e recuperare rapidamente i dati in modo efficiente. L’hashing consiste nel convertire qualsiasi dato in un codice unico di lunghezza fissa, noto come valore di hash o hash digest, che può essere utilizzato per confrontare e verificare le informazioni. Un algoritmo di hashing prende un input di lunghezza arbitraria e produce un output di dimensione fissa (cioè il valore di hash) che identifica l’input originale.

- Hashing, una definizione
- Come funziona l’hashing
- Applicazioni pratiche dell’hashing
- Un esempio di hashing
Hashing, una definizione
L’hashing in informatica è un processo che trasforma una stringa di dimensione qualsiasi in un’altra stringa di dimensione definita.
Possiamo paragonare semplicisticamente questa operazione come una specie di riassunto informatico.
Gli algoritmi hash vengono generalmente utilizzati per offrire un’impronta digitale al contenuto di un file e spesso sono utilizzati per garantire che il file di partenza non sia stato modificato da un intruso o da un malware.
La storia della nascita dell’hashing in informatica
L’hashing esiste sin dalla fine degli anni ’50, anche se la sua applicazione è cambiata nel tempo.
Inizialmente, questo processo veniva utilizzato per supportare la gestione della memoria nei computer, mappando in modo efficiente grandi insiemi di dati in altri più piccoli. Ciò consentiva di effettuare ricerche e confronti rapidi tra gli elementi dei dati. Con lo sviluppo della potenza di calcolo e delle capacità di memorizzazione digitale, l’hashing ha cominciato a essere utilizzato come metodo per verificare l’integrità e l’autenticazione dei dati e per la crittografia.
A che cosa serve l’hashing oggi?
Oggi, l’hashing è uno strumento fondamentale per l’informatica moderna.
Viene utilizzato in molte aree, tra cui la sicurezza dei dati, le firme digitali e i protocolli di autenticazione. L’hashing consente inoltre di velocizzare i tempi di ricerca nei database e di memorizzare in modo efficiente grandi insiemi di dati. È quindi uno strumento utile per verificare l’integrità dei dati e per garantire una comunicazione sicura tra due parti.
Come funziona l’hashing
L’hashing funziona prendendo alcuni dati di input, come una password, una stringa di testo o un file e facendoli passare attraverso un algoritmo che genera un numero univoco chiamato valore di hash. Questo valore è solitamente molto più corto dell’input originale e di solito è rappresentato in esadecimale, un sistema di numerazione in base 16.
Questo valore può essere utilizzato come identificatore dei dati originali, consentendo di confrontarli con l’input originale: premettiamo che i valori hash sono molto difficili da decodificare. Alcune delle funzioni di Hashing vengono utilizzate in combinazione con tecniche di crittografia, in questi casi si parla di funzioni crittografiche di hashing.
Caratteristiche indispensabili per le funzioni di hashing
Una funzione di hashing in generale deve possedere i seguenti requisiti:
Invertibilità computazionalmente intrattabile
E’ fondamentale che non sia facile, ovvero non sia possibile in tempi ragionevolmente brevi risalire alla stringa che ha generato un particolare hash. Ovviamente questo è indispensabile per gli impieghi sopra descritti, in quanto spesso l’hashing è utilizzato per rendere incomprensibili dati sensibili.
Resistenza alle collisioni
Le collisioni sono un problema che esiste per tutte queste funzioni. Per cui in generale una funzione di hash è ritenuta sicura finché non si trova un caso in cui due diversi input creano uno stesso output. Questo potrebbe essere un grosso problema per le autenticazioni, perché implicherebbe che sarebbe possibile modificare la password, il documento o la firma in un modo specifico ed ottenere comunque la validazione.
Velocità
Infine gli algoritmi che estraggono i digest devono essere rapidi per poter essere efficaci in tutte queste applicazioni. Immaginate che guaio sarebbe se fosse necessario aspettare un minuto per ottenere un ID di sessione ogni volta che entriamo in una pagina web.
Per velocizzare i processi gli addetti ai lavori spesso si fanno aiutare da delle tabelle di hash.
Applicazioni dell’hashing
Il mondo informatico ha saputo servirsi di questo processo per le più svariate applicazioni.
Andiamo a presentare singolarmente i casi:
- Ricerca di elementi nei database
- Verifica dell’integrità di file di grandi dimensioni o di messaggi
- Autenticazione dei messaggi
- Autenticazione firme e impronte digitali
- Creazione ID di sessione
- Protezione dati sensibili
- Verifica delle password
Autenticazione firme digitali tramite hashing
Nel caso delle firme digitali è possibile verificare l’identità del firmatario e che effettivamente il documento corrisponda a quello che si è ricevuto.
Innanzitutto si estrae il digest del documento da firmare, questo viene poi cifrato utilizzando la chiave privata del firmante.
Il ricevente può decifrare il digest con la chiave pubblica assicurandosi dell’identità del firmatario. Dopo di che può applicare a sua volta il procedimento e confrontare la stringa ottenuta con quella che è gli è stata mandata dal mittente. Se le due coincidono, vuol dire che i file sono esattamente identici.
Sicurezza nei siti web con l’hashing
Quando un utente fa clic sul link che rimanda ad un sito web, viene inviata una richiesta al server web che trasmette il certificato SSL al browser dell’utente. Dopo di questo viene creata una chiave di sessione tramite una funzione di hash e viene inviata al server. Questo la decifra, la verifica e conferma la ricezione avviando il traffico cifrato, ovvero il protocollo sicuro HTTPS.
La chiave di sessione viene generata a partire dall’indirizzo IP e dai dati di validazione temporale.
Autenticazione messaggi via hashing
Questa tecnica è spesso usata in abbinamento alla crittografia asimmetrica RSA per validare i messaggi ricevuti. Se i digest ottenuti prima e dopo la trasmissione sono identici si ha la certezza che non ci siano state manomissioni.
Verifica password mediante hashing
Supponete di dover conservare migliaia di password in un archivio.
I dati dovranno essere disponibili in modo che, quando un utente tenta l’accesso al vostro sito, possiate riconoscere se il nome utente e la password inseriti corrispondono a quelli forniti all’iscrizione. Potreste fare un file e chiedere ad un programma di confrontare di volta in volta le informazioni e decidere di lasciar entrare l’utente solo se si trova una corrispondenza. In questo caso, un hacker in grado ad accedere al file avrebbe tutti i vostri utenti in pugno. Una soluzione più semplice è quella di conservare solo l’hash, in modo che l’hacker se anche riuscisse a rubare il file dovrebbe perdere tempo a cercare di riottenere l’hash a partire da una combinazione di caratteri ignota.
Dati nella cache
Anche l’archiviazione temporanea utilizza le funzioni di hash. In questo modo se un utente diverso dal legittimo proprietario tentasse di accedere alle informazioni non potrebbe risalire alla cronologia o ai dati di pagamento.
Dati di accesso
Spesso gli hacker tentano di estorcere le credenziali di accesso agli account online o mirano solitamente ad interrompere il funzionamento della pagina per sgraffignare informazioni relative a metodi di pagamento. In alcuni casi per fare ciò impostano gli attacchi di brute force.
Funzioni di ricerca
Per effettuare una ricerca in una grande quantità di dati, le funzioni di Hash possono essere utili a risparmiare tempo e potenza di calcolo. Ogni valore nella tabella viene convertita in un valore di hash e lo stesso accade per il termine che si intende cercare. In questo diminuisce il numero di simboli da confrontare.
Criptovalute e sicurezza delle relative reti
L’hashing è anche alla base del processo di estrazione delle criptovalute da parte dei miners. Questi “minatori” utilizzano grandi risorse in termini di potenza di calcolo per creare un hash che soddisfi determinati requisiti. Poiché è molto difficile trovare una correlazione tra l’hash di output e il messaggio in input, possono essere necessari anche milioni di tentativi per azzeccare la giusta combinazione ed ottenere quindi monete virtuali.
L’hash rate è l’unità di misura relativa alla potenza di elaborazione della rete dei Bitcoin ma sere anche per misurare la sicurezza del network. Un valore alto indica che molte risorse sono dedicate all’elaborazione delle transazioni il che implica una notevole resistenza agli attacchi hacker. I malintenzionati dovrebbero riuscire a trovare un hash sufficiente a controllare almeno il 51% della rete.
Un esempio di hashing
Per fare un esempio di hashing, supponiamo di applicare questo processo ad un messaggio. Possiamo immaginare che ogni carattere sia un elemento della stringa che inseriremo come input nel nostro algoritmo di Hashing. Supponiamo inoltre che il nostro algoritmo sia tarato su una lunghezza di output di 12 caratteri.
Se consideriamo la classica situazione in cui una persona scrive un messaggio complesso, lungo magari dieci righe e un’altra poco interessata risponde semplicemente “ok”. Avremo due stringhe: una lunghissima e una costituita solo da due elementi. Ebbene il processo di hashing trasformerà tanto la prima quanto la seconda in una stringa lunga esattamente 12 caratteri, detta Digest. Ovviamente le due stringhe saranno differenti tra loro, infatti i caratteri di una o dell’altra corrisponderanno attraverso delle complesse funzioni matematiche, dette funzioni di hash, al contenuto iniziale. Insomma se utilizziamo lo stesso algoritmo, più volte per trasformare lo stesso testo, otterremo invariabilmente lo stesso risultato, ma se dovesse cambiare anche solo un carattere la stringa in uscita sarebbe totalmente diversa dalla precedente.
Alcune considerazioni finali
Insomma l’hashing serve a ridurre un set di informazioni in un formato ottimale per essere conservata in uno spazio di memoria. Ma ha anche molti altri vantaggi, collabora alla sicurezza delle informazioni scambiate sul web, all’autenticazione delle firme digitali e favorisce dei sistemi sicuri e pratici in molte applicazioni che utilizziamo continuamente.
E’ un operatore silenzioso che permette molte azioni che diamo per scontate, come l’accesso ad un account o la ricerca di una parola in un file molto grande, senza dare nell’occhio
- Autore articolo
- Ultimi articoli

Laureata in Fisica, sta proseguendo gli studi in “Fisica dell’atmosfera, climatologia e meteorologia” presso l’università di Roma Tor Vergata. Nel frattempo, unisce la sua passione per la scrittura a quella per la cybersecurity per promuovere la consapevolezza digitale attraverso il blog di Onorato Informatica.