Funzioni hash: il meccanismo silenzioso sotto tutto nelle cripto

·4 min di lettura·Di SSP Editorial Team
Copertina SSP Academy: come funzionano le funzioni hash nelle cripto

Funzioni hash: il meccanismo silenzioso sotto tutto nelle cripto

Se si smonta una blockchain fino ai suoi pezzi essenziali, si trovano due tipi di crittografia che fanno quasi tutto il lavoro. Le firme digitali decidono chi può spendere. Le funzioni hash tengono insieme tutto il resto: blocchi, indirizzi, mining, identificativi di transazione, perfino il modo in cui un portafoglio decodifica ciò che stai per firmare.

Le funzioni hash si spiegano di rado, perché di rado si notano. Meritano dieci minuti, perché una volta capite una sorprendente parte delle cripto smette di sembrare magia.

Che cosa fa una funzione hash

Una funzione hash prende un input qualsiasi — una parola, un file, un intero blocco di transazioni — e produce un’impronta di dimensione fissa. SHA-256, quella usata da Bitcoin, produce sempre 256 bit, di solito scritti come 64 caratteri esadecimali, che tu le dia una lettera o un gigabyte.

Tre proprietà la rendono utile:

Deterministica. Lo stesso input dà sempre lo stesso output. Chiunque, ovunque, può ricalcolarlo e verificarlo.

Unidirezionale. Data un’impronta, non esiste un modo pratico per risalire all’input. L’unica strada è indovinare input finché uno coincide, e con un buon hash è senza speranza.

Resistente alle collisioni. È impraticabile trovare due input diversi con la stessa impronta. Cambia un solo carattere e l’output cambia completamente e in modo imprevedibile.

Un hash è tutto qui: un’impronta breve, verificabile e non falsificabile di qualcosa di più grande.

Dove incontri gli hash senza accorgertene

Identificativi di transazione. Un txid è semplicemente l’hash di una transazione. Per questo è unico, ed è ciò che incolli in un esploratore di blocchi: identifica esattamente una transazione, e nessuno può produrne un’altra con lo stesso identificativo.

La catena stessa. Ogni blocco contiene l’hash del blocco precedente. Cambia qualsiasi cosa in un blocco vecchio e il suo hash cambia, spezzando il legame con tutti i blocchi successivi. Questa catena di impronte rende evidente ogni manomissione della storia.

Il mining. La proof of work è una lotteria di hash: i miner calcolano l’hash delle intestazioni dei blocchi ancora e ancora, variando ogni volta un numero, finché trovano un risultato sotto un obiettivo. Poiché gli hash sono imprevedibili, non ci sono scorciatoie, solo più tentativi, ed è per questo che la proof of work costa energia reale e quel costo compra sicurezza.

Gli indirizzi. La maggior parte degli indirizzi è l’hash di qualcosa. Un classico indirizzo Bitcoin è l’hash di una chiave pubblica. Gli indirizzi Bitcoin di SSP sono P2WSH: un hash SHA-256 dello script testimone che descrive la regola di spesa 2-di-2. Ciò che sta sulla catena prima che tu spenda è quell’impronta, non le chiavi.

Hash dentro il portafoglio

L’hashing non è solo un concetto a livello di catena. Compare nel software con cui firmi.

Quando SSP Key decodifica una transazione Ethereum prima che tu la approvi, riconosce che cosa fa la chiamata tramite i selettori di funzione: i primi quattro byte dell’hash Keccak-256 della firma della funzione. transfer(address,uint256) dà un valore che inizia con a9059cbb; approve(address,uint256) uno che inizia con 095ea7b3. Quando il decodificatore vede quei quattro byte all’inizio di una transazione, sa quale funzione viene chiamata e può mostrarti in linguaggio semplice che stai inviando token o concedendo un’approvazione.

È una bella illustrazione di ciò a cui servono gli hash: un’impronta compatta e univoca di qualcosa di più lungo. È anche un promemoria dei loro limiti, perché quattro byte sono così pochi che due funzioni diverse possono condividere un selettore. È uno dei motivi per cui il decodificatore fallisce apposta in chiusura: tutto ciò che è inatteso ricade sui dati grezzi invece che su un’ipotesi sicura di sé.

Ciò che gli hash non possono fare

Non nascondono input piccoli. Un hash è unidirezionale, ma se l’input proviene da un piccolo insieme di possibilità, un attaccante può calcolare l’hash di ciascuna e confrontare. Per questo un PIN o una password breve sottoposti a hash proteggono pochissimo, e per questo le frasi seed sono lunghe parole casuali anziché qualcosa di facile da ricordare.

Non dimostrano nulla sul significato. Un hash dimostra che due cose sono identiche. Non dice nulla sull’onestà di nessuna delle due. L’hash perfettamente verificato di una transazione malevola resta una transazione malevola.

Non sono cifratura. Non si può «decifrare» un hash per riavere l’originale. Qualunque cosa dica di invertire un hash sta tirando a indovinare.

Perché ti riguarda

Raramente calcolerai un hash a mano. Ma capirli spiega diverse cose che altrimenti sembrano regole da imparare a memoria:

Perché un txid prova che un pagamento esiste. Perché non puoi modificare una transazione confermata. Perché il mining consuma energia. Perché un indirizzo non speso rivela un’impronta anziché le tue chiavi. Perché un seed lungo e casuale è sicuro e uno corto e ingegnoso no.

Le funzioni hash sono la parte delle cripto che semplicemente funziona, in silenzio, miliardi di volte al giorno. Sapere che cosa garantiscono — e che cosa no — è uno dei modi più economici per capire il sistema a cui affidi il tuo denaro.

Condividi questo articolo

Articoli correlati