Cosa sono le funzioni di hash crittografiche?

Tra le funzioni matematiche che costituiscono funzionamento del Bitcoin (e quindi della blockchain), quelle maggiormente importanti sono le cosiddette “funzioni di hash”.

Questa funzioni, in realtà, sono già in utilizzo frequentemente nella vita di tutti i giorni: basterebbe definirle “codici di controllo” invece di “funzione di hashing”, è già il concerto comincerebbe ad essere un po’ meno complesso. Ad esempio, in tutti i codici a barre di tutti i prodotti che acquistiamo al supermercato, l’ultima cifra è un codice di controllo che dipende da tutte quante le cifre precedenti; si genera cioè secondo un conteggio predefinito. Lo stesso dicasi per ciò che avviene nel codice fiscale, in cui l’ultimo carattere (che è sempre una lettera alfabetica) non è strettamente alcun dato personale,  bensì è una lettera che viene calcolata prendendo in considerazione tutti i numeri e le lettere che l’hanno preceduta. Il fatto che ci sia un codice di controllo è utile per garantire che non vi siano stati errori di calcolo delle lettere  e dei numeri, errori di copiatura o di lettura; serve proprio a garanzia dell’integrità del codice (sarebbe molto difficile sbagliare una compilazione del codice fiscale e “azzeccare” contestualmente un codice di controllo sbagliato)  .

La sicurezza dell’hashing

Per le funzioni di hash il discorso è più o meno simile. Possiamo prendere grandi blocchi di dati (oppure dei file giganteschi) per poi passarli attraverso queste funzioni matematiche, alla fine il risultato che otterremo sarà un piccolo codice alfanumerico , che sarà sempre della stessa lunghezza. Come detto, il contenuto della stringa dipenderà da tutti quanti i dati all’interno dei blocchi dei dati (o dei file) precedentemente presi in esame.

funzioni di hash

Queste funzioni poi hanno alcune caratteristiche particolari, ovvero: se io ho un codice di controllo di un file (la stringa alfanumerica appena menzionata) non c’è assolutamente modo di riuscire a risalire a capire quale fosse stato il file di partenza che l’ha generata. E’ un percorso infatti fattibile solo da un verso e non reversibile.  

Qual è l’utilità dell’hashing nelle criptovalute?

Le funzioni di hashing sono utilizzate per garantire sia che il blocco sia integro (quindi che nessuno abbia “pasticciato” con i dati o la trasmissione di questi sia stata difettosa) ma soprattutto per il mining, ovvero la funzione in cui si cerca di costruire un blocco in una certa maniera, poichè la sua “hash” finale abbia delle caratteristiche che lo rendono assolutamente unico.

L’hashing risulta poi particolarmente utile nel contesto della tecnologia blockchain. La blockchain di Bitcoin presenta diverse operazioni che coinvolgono l’hashing, la maggior parte all’interno del processo di mining. Infatti, quasi tutti i protocolli di criptovaluta si basano sull’hashing per collegare e condensare gruppi di transazioni in blocchi, oltre che per produrre collegamenti crittografici tra ciascun blocco, creando effettivamente una blockchain.

Un esempio di hashing

Bitcoin si basa sull’algoritmo di hashing denominato SHA-256 (dove SHA sta per Secure Hash Algorithms); quest’ultimo ha la caratteristica di generare degli output da 64 caratteri.

Un aspetto fondamentale, logicamente, è – esattamente come per il codice fiscale – se andiamo a cambiare anche soltanto un bit all’interno del file in ingresso il risultato della funzione di hashing sarà completamente diverso. Ovvero: non vi è neanche la possibilità di confondersi o di sbagliare qualcosa all’interno della blockchain (e conseguentemente del Bitcoin).

Per constatare questo aspetto, andiamo a elaborare le parole “comprarebitcoin.com” e “comprarebitcoin.com” con lo SHA-256.

comprarebitcoin.com = 8195887c823922e556848e47fb2a4bfdfb51ea241a30b7ffad1a3f66895e67e4

comprarebitcoin.com = 767cbcdd0beef406bf71170cde3c919578028ec7622a4d794256e6b4fbe79c2b

In questo caso, il cambiamento di un solo carattere (nel nostro caso, la “C” prima maiuscola e poi minuscola) genera un output totalmente differente.

In conclusione…

Non c’è dubbio che le funzioni di hash siano strumenti fondamentali nell’informatica,  in particolar modo nella gestione di enormi quantità di dati. Se utilizzati nell’ambiente crittografico, poi, gli algoritmi di hashing generano sicurezza e autenticazione in vari modi. Per questo, le funzioni crittografiche di hash risultano pressochè indispensabili per quasi tutti i sistemi di criptovalute, e risulta certamente utile, per gli appassionati di  tecnologia blockchain, comprenderne le proprietà e i meccanismi di funzionamento.

Articolo precedente

Articolo successivo