La tecnologia blockchain ha rivoluzionato il nostro modo di pensare alla sicurezza e alla decentralizzazione, ma cosa tiene insieme il tutto? La risposta risiede nell'hashing, una componente fondamentale della crittografia che garantisce l'integrità, l'immutabilità e l'affidabilità delle reti blockchain. Senza l'hashing, la blockchain come la conosciamo non sarebbe possibile.
Nonostante la sua importanza, l'hashing è spesso frainteso o relegato a una semplice menzione nelle introduzioni alla blockchain. In realtà, l'hashing influenza quasi ogni aspetto del funzionamento di una blockchain: dal modo in cui i singoli blocchi vengono collegati tra loro, alla competizione tra i miner per aggiungere nuovi blocchi, fino alla generazione degli indirizzi dei portafogli e all'autenticazione delle transazioni.
In questa guida completa, esploriamo cos'è l'hashing, come funziona a livello tecnico, come protegge la blockchain da manomissioni e attacchi, come si relaziona ad altri concetti crittografici come la crittografia e le firme digitali, e quale sarà il futuro dell'hashing con l'avvento del calcolo quantistico come sfida a lungo termine.
Leggi anche: Soluzioni di identità blockchain: una guida completa
Punti chiave
- L'hashing svolge un ruolo fondamentale nel mantenimento dell'integrità dei dati, nell'abilitazione dei meccanismi di consenso, nella verifica delle transazioni e nella protezione da vari tipi di attacchi.
- L'hashing crea un'impronta digitale univoca per ogni blocco di dati, rendendo computazionalmente impossibile alterare i dati senza modificare il valore hash e invalidare l'intera catena.
- L'hashing viene utilizzato nel meccanismo di consenso Proof of Work per creare un valore hash target che i miner devono trovare modificando ripetutamente un nonce e ricalcolando l'hash del blocco finché non trovano un risultato valido.
- L'hashing contribuisce a proteggere dagli attacchi del 51%, dagli attacchi Sybil e dagli attacchi di doppia spesa, rendendo economicamente impossibile alterare la blockchain o creare transazioni fraudolente.
- Nell'agosto del 2024, il NIST ha finalizzato tre standard di crittografia post-quantistica (FIPS 203, 204, 205), raccomandando alle organizzazioni di iniziare la migrazione dei propri sistemi prima della scadenza del 2035 per la dismissione degli algoritmi vulnerabili ai computer quantistici.
- L'hashing si differenzia fondamentalmente dalla crittografia: l'hashing è un processo unidirezionale e irreversibile utilizzato per verificare l'integrità, mentre la crittografia è reversibile e viene utilizzata per proteggere la riservatezza.
Cos'è l'hashing? Una spiegazione in linguaggio semplice
L'hashing è un processo che prende in input qualsiasi cosa, di qualsiasi lunghezza, che si tratti di un singolo carattere, di un paragrafo di testo o di un intero file, e produce una stringa di caratteri di lunghezza fissa chiamata hash, valore hash o digest. L'output ha sempre la stessa lunghezza, indipendentemente dalla dimensione dell'input. Lo stesso input produrrà sempre lo stesso identico hash. Ma, cosa fondamentale, anche una minima modifica all'input produce un output hash completamente diverso.
Ottieni la carta UPay Crypto
Scopri il meglio dei pagamenti online e delle transazioni crittografiche senza interruzioni.
RegistratiPensate a un hash come a un'impronta digitale univoca per qualsiasi dato. Proprio come non esistono due persone con la stessa impronta digitale, non esistono due dati distinti che producano lo stesso hash. E così come non è possibile ricostruire una persona dalla sua impronta digitale, non è possibile ricostruire i dati originali dal loro hash. Questa natura unidirezionale e irreversibile è ciò che rende l'hashing così prezioso per la sicurezza.
Un esempio concreto chiarisce meglio il concetto. Prendiamo la frase "Ciao" e applichiamole l'algoritmo SHA-256: otterremo il seguente risultato:
Input: Ciao
SHA-256 Hash: 185f8db32921bd46d35cc2e586c20eea06c8f3eff0d8b4a7a5a1e0ef7cbfd88
Ora cambia un solo carattere, mettendo la “h” maiuscola per far diventare “hello” minuscolo:
Input: ciao
SHA-256 Hash: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Due output completamente diversi da una modifica di una sola lettera. Questo comportamento è chiamato effetto valangaEd è una delle proprietà di sicurezza più importanti che una funzione hash possa avere. Poiché anche la minima modifica all'input produce un output drasticamente diverso, qualsiasi tentativo di manomettere i dati della blockchain è immediatamente rilevabile.
Le cinque proprietà fondamentali delle funzioni hash crittografiche
Non tutte le funzioni matematiche si qualificano come funzioni hash crittografiche. Per essere idonea alla sicurezza della blockchain, una funzione hash deve soddisfare cinque proprietà fondamentali:
- Deterministico. Lo stesso input produrrà sempre lo stesso output, ogni singola volta, su qualsiasi macchina. Questo è essenziale per la verifica: se due parti calcolano l'hash degli stessi dati del blocco, devono ottenere lo stesso hash per confermare la concordanza.
- Resistenza preimmagine (unidirezionale). Dato un valore hash, deve essere computazionalmente impossibile risalire all'input originale. Questo è ciò che rende l'hashing fondamentalmente diverso dalla crittografia.
- Effetto valanga (sensibilità alle variazioni di input). Anche la più piccola modifica all'input, come ad esempio l'inversione di un singolo bit in un file di un milione di caratteri, deve produrre un hash completamente diverso. Questo rende il rilevamento delle manomissioni affidabile e istantaneo.
- Resistenza alle collisioni. Deve essere computazionalmente impossibile trovare due input diversi che producano lo stesso output hash. Sebbene le collisioni siano teoricamente possibili (un numero infinito di input mappati su uno spazio di output finito), gli algoritmi moderni rendono praticamente impossibile trovarne una.
- Calcolo rapido. L'hash deve essere veloce da calcolare, in modo che i nodi della rete blockchain possano verificare blocchi e transazioni in modo efficiente. Allo stesso tempo, alcuni utilizzi, come il mining Proof of Work, sfruttano intenzionalmente l'intensità computazionale per creare barriere economiche agli attacchi.
Leggi anche: Ruolo delle funzioni hash nella sicurezza della blockchain
Hashing, crittografia e salting: comprendere le differenze
Una delle principali fonti di confusione nelle discussioni sulla sicurezza della blockchain è la tendenza a considerare l'hashing e la crittografia come sinonimi. Non lo sono. Ognuno di essi ha uno scopo fondamentalmente diverso, e comprendere questa distinzione è essenziale per chiunque lavori con la tecnologia blockchain o ne stia apprendendo i principi.
| Proprietà | hashing | crittografia | salatura |
| Missione | Verificare l'integrità dei dati | Proteggere la riservatezza dei dati | Rafforzare le password crittografate contro gli attacchi precalcolati |
| Reversibile? | No (funzione unidirezionale) | Sì (con chiave di decrittazione) | No (applicato prima dell'hashing) |
| Chiave necessaria? | Non | Si | Non |
| lunghezza di uscita | Dimensione fissa indipendentemente dall'input | Variabile (dipende dall'input e dall'algoritmo) | Uguale all'output dell'hash dopo l'hash salato |
| Utilizzo principale nella blockchain | Collegamento a blocchi, alberi di Merkle, generazione di indirizzi, PoW | Protezione delle chiavi private e dei dati del portafoglio a riposo | Protezione delle password del portafoglio memorizzate dai provider |
| Esempio di algoritmo | SHA-256, SHA-3, BLAKE3 | AES-256, RSA | bcrypt, Argon2 (include salting integrato) |
L'hashing protegge l'integrità: Questo metodo dimostra che i dati non sono stati modificati. Si calcola l'hash di un blocco, lo si memorizza e in seguito si calcola nuovamente l'hash dello stesso blocco per confermare la corrispondenza. Se non corrisponde, i dati sono stati alterati.
La crittografia protegge la riservatezza: La crittografia codifica i dati in una forma illeggibile che può essere decifrata solo con una chiave specifica. Nella blockchain, la crittografia viene utilizzata per proteggere le chiavi private e i dati sensibili degli utenti, sia a riposo che in transito.
L'aggiunta di un sale migliora la sicurezza delle password crittografate: Il salt è una stringa casuale univoca aggiunta a una password prima che venga sottoposta ad hashing. Questo garantisce che due utenti con password identiche producano valori hash diversi, rendendo inutili gli attacchi basati su tabelle arcobaleno precalcolate. Anche se un malintenzionato rubasse un database di password sottoposte ad hashing, ogni hash con salt dovrebbe essere attaccato individualmente, il che risulta computazionalmente proibitivo su larga scala. Gli algoritmi moderni come bcrypt e Argon2 includono automaticamente la funzione di salting.
Differenza fondamentale da ricordare: La crittografia è come una scatola chiusa a chiave che può essere aperta con la chiave giusta. L'hashing è come un frullatore unidirezionale. Puoi frullare un frullato, ma non puoi annullarne la frullatura per recuperare gli ingredienti originali. La blockchain si basa sul frullatore.
Funzioni hash comuni utilizzate nella blockchain
Le diverse reti blockchain utilizzano diverse funzioni hash, ciascuna scelta per specifiche proprietà che si adattano agli obiettivi di progettazione della rete. Ecco una spiegazione dettagliata:
| Algoritmo | Dimensione dell'output | Usato in | Caratteristiche chiave |
| SHA-256 | 256 bit (32 byte) | Bitcoin e molte altre criptovalute | Sviluppato dalla NSA come parte della famiglia SHA-2. Estremamente resistente alle collisioni. Si stima che occorrerebbero miliardi di anni per decifrarlo con la forza bruta utilizzando i computer classici. Utilizzato sia per l'hashing a blocchi che per il problema del mining Proof of Work. |
| SHA-3 / Keccak | Variabile (224, 256, 384, 512 bit) | Ethereum (hashing degli indirizzi) | Rilasciato dal NIST nel 2015. Utilizza una struttura interna fondamentalmente diversa (costruzione a spugna) rispetto a SHA-2, fornendo un backup conservativo nel caso in cui vengano riscontrate vulnerabilità in SHA-2. Ethereum utilizza Keccak-256 per la generazione degli indirizzi. |
| Ethash | 256 bit, | Ethereum (il vecchio sistema Proof of Work) | Progettato per essere resistente alla memoria, il che lo rende immune al dominio del mining tramite ASIC. È stato successivamente superato dal passaggio di Ethereum al Proof of Stake. |
| Scrypt | Variabile | Litecoin, Dogecoin | Progettato per essere ad alta intensità di memoria, il sistema aumenta i costi di gestione delle grandi aziende minerarie e promuove una maggiore partecipazione al settore. |
| X11 | 512 bit, | Dash | Collega in sequenza 11 diverse funzioni hash. Più efficiente dal punto di vista energetico rispetto a SHA-256 e resistente al mining tramite ASIC al momento del lancio. |
| BLAKE3 | 256 bit (impostazione predefinita) | Progetti blockchain emergenti | Estremamente veloce, compatibile con l'elaborazione parallela e considerato altamente sicuro. Sempre più studiato come potenziale candidato per applicazioni resistenti all'era post-quantistica grazie ai suoi elevati margini di sicurezza. |
Algoritmi obsoleti da evitare:
MD5 e SHA-1 non sono più considerati sicuri per scopi crittografici. SHA-1 produce valori a 160 bit e ha mostrato vulnerabilità di collisione già nel 2005. MD5 è completamente obsoleto. Nessuno dei due dovrebbe essere utilizzato in blockchain o in applicazioni critiche per la sicurezza. Utilizzare sempre SHA-256, SHA-3 o alternative più recenti.
Come l'hashing protegge la tecnologia blockchain
Una volta definiti i concetti fondamentali, possiamo esplorare nel dettaglio come l'hashing svolge la sua funzione di sicurezza all'interno di una blockchain. Ciascuna applicazione descritta di seguito è distinta e, insieme, formano un sistema interconnesso in cui la compromissione di un singolo elemento comprometterebbe l'intera struttura.
1. Garantire l'integrità dei dati tramite il collegamento a blocchi
Il ruolo fondamentale dell'hashing nella blockchain è quello di creare il collegamento crittografico tra i blocchi che dà il nome alla struttura dati. Ogni blocco nella catena contiene non solo i propri dati di transazione e metadati, ma anche l'hash del blocco precedente. Questo crea una catena di hash che si estende fino al primissimo blocco, noto come blocco genesi.
La conseguenza pratica è profonda: se un dato in un blocco storico viene modificato, anche di un solo carattere, l'hash di quel blocco cambia. Poiché il blocco successivo contiene il vecchio hash di quel blocco come parte dei suoi dati, anche l'hash del blocco successivo cambia. E così via, fino al blocco più recente. Qualsiasi alterazione dei dati storici invalida simultaneamente tutti i blocchi successivi della catena.
Una semplice illustrazione di come funziona il collegamento a blocchi:
Blocco 1 | Dati: [Transazione A, Transazione B] | Hash precedente: 0000000 | Hash proprio: abc123
Blocco 2 | Dati: [Tx C, Tx D] | Hash precedente: abc123 | Hash proprio: def456
Blocco 3 | Dati: [Tx E, Tx F] | Hash precedente: def456 | Hash proprio: ghi789
Se i dati del Blocco 1 vengono modificati:
Blocco 1 | Dati: [Tx A*, Tx B] | Hash precedente: 0000000 | Hash attuale: XYZ999 (modificato!)
Blocco 2 | Dati: [Tx C, Tx D] | Hash precedente: abc123 | MANCATA CORRISPONDENZA — catena interrotta
Ecco perché i dati blockchain vengono definiti immutabili. Non perché sia fisicamente impossibile alterare un blocco, ma perché la modifica di un singolo blocco richiede il ricalcolo degli hash di ogni blocco successivo e, in una rete Proof of Work, anche il rifacimento della prova di lavoro computazionale per ciascuno di questi blocchi. Con milioni di blocchi già confermati e l'intera rete che ne aggiunge continuamente di nuovi, un attaccante dovrebbe superare in potenza di calcolo l'intera rete onesta indefinitamente, il che è economicamente impossibile su scala significativa.
2. Consenso Proof of Work e processo di mining
Nelle blockchain Proof of Work come Bitcoin, l'hashing è anche il motore del meccanismo di consenso stesso. I miner non si limitano ad assemblare le transazioni in un blocco e a trasmetterlo. Devono dimostrare di aver svolto una determinata quantità di lavoro computazionale, e tale prova assume la forma di un hash.
Ogni intestazione di blocco contiene un campo chiamato nonce, un numero che i miner possono modificare liberamente. Il compito del miner è trovare un valore nonce tale che, quando l'intera intestazione del blocco viene sottoposta ad hashing, l'hash risultante sia inferiore a una soglia target, il che in pratica significa che l'hash deve iniziare con un numero specificato di zeri iniziali. Poiché l'output dell'hash è imprevedibile, l'unico modo per trovare un nonce valido è provare miliardi di valori diversi, sottoponendo ciascuno di essi ad hashing e verificandone il risultato.
Intestazione del blocco = Hash del blocco precedente + Radice Merkle + Timestamp + Target + Nonce
Obiettivo: trovare un Nonce tale che SHA-256(SHA-256(Block Header)) < Target
Esempio di hash di un blocco Bitcoin valido:
0000000000000000000a4e8bb6fc6c64d8e6f1ce… (many leading zeros)
Ogni tentativo richiede microsecondi, ma trovare il Nonce giusto può richiedere
trilioni di tentativi sull'intera rete di mining.
La rete regola automaticamente il livello di difficoltà target all'incirca ogni due settimane per mantenere un tempo medio di blocco costante di dieci minuti, indipendentemente dalla potenza di calcolo totale impiegata per il mining. Questo meccanismo di autoregolazione garantisce che, a prescindere dalla potenza di calcolo utilizzata, i blocchi vengano prodotti a un ritmo costante e che il costo economico di un attacco alla blockchain aumenti proporzionalmente all'investimento in attività di mining oneste.
Ottieni la carta UPay Crypto
Scopri il meglio dei pagamenti online e delle transazioni crittografiche senza interruzioni.
Registrati3. Alberi di Merkle e verifica efficiente delle transazioni
All'interno di ciascun blocco, le singole transazioni non vengono semplicemente elencate e sottoposte a hashing come gruppo. Sono organizzate in una struttura dati chiamata albero di Merkle, dal nome del crittografo Ralph Merkle, che utilizza l'hashing in modo gerarchico per consentire una verifica estremamente efficiente.
Il processo funziona nel seguente modo. Ogni singola transazione viene sottoposta a hashing. Gli hash di queste transazioni vengono quindi accoppiati e sottoposti a hashing insieme. Gli hash risultanti vengono nuovamente accoppiati e sottoposti a hashing. Questo processo continua risalendo l'albero fino a quando non rimane un singolo hash in cima, chiamato radice di Merkle. La radice di Merkle è ciò che viene incluso nell'intestazione del blocco e viene a sua volta incorporata nell'hash del blocco.
Merkle Root
/ \
Hash(AB) Hash(CD)
/ \ / \
Hash(A) Hash(B) Hash(C) Hash(D)
| | | |
Tx A Tx B Tx C Tx D
La forza di questa struttura risiede nelle sue potenzialità in termini di verifica. Per dimostrare che una specifica transazione è inclusa in un blocco, non è necessario scaricare o controllare l'intero blocco. Sono sufficienti la transazione stessa, l'intestazione del blocco (che contiene la radice di Merkle) e il piccolo insieme di hash delle transazioni correlate lungo il percorso che va da tale transazione alla radice. Questo insieme di hash è chiamato prova di Merkle o percorso di Merkle.
Questo aspetto è di fondamentale importanza per i client leggeri come i portafogli digitali e i nodi SPV (Simplified Payment Verification), che non possono memorizzare l'intera blockchain. Essi possono verificare l'esistenza di una transazione in un blocco confermato utilizzando solo una minima parte dei dati, affidandosi alle garanzie crittografiche dell'albero di Merkle per farlo in modo sicuro. Qualsiasi manomissione di una transazione ne modificherebbe l'hash e si propagherebbe immediatamente verso l'alto nell'albero, producendo una radice di Merkle diversa da quella presente nell'intestazione del blocco confermato.
4. Generazione dell'indirizzo del portafoglio
Nella maggior parte delle reti blockchain, gli indirizzi pubblici che gli utenti condividono per ricevere fondi non corrispondono alle loro chiavi pubbliche originali. Sono il risultato dell'hashing della chiave pubblica, in genere attraverso più cicli e con una codifica aggiuntiva per il rilevamento degli errori.
In Bitcoin, ad esempio, un indirizzo pubblico viene derivato prendendo la chiave pubblica, applicando l'algoritmo SHA-256, quindi applicando l'algoritmo RIPEMD-160 al risultato, aggiungendo un byte di versione e un checksum, e infine codificando il risultato in Base58Check. In Ethereum, viene calcolato l'hash Keccak-256 della chiave pubblica e gli ultimi 20 byte vengono utilizzati come indirizzo.
Questo approccio assolve a molteplici funzioni importanti. In primo luogo, fornisce un ulteriore livello di privacy: la chiave pubblica stessa non viene esposta sulla blockchain finché una transazione non viene firmata da quell'indirizzo. In secondo luogo, l'hashing della chiave pubblica offre un vantaggio di sicurezza multilivello: anche se la crittografia a curve ellittiche venisse in qualche modo indebolita in futuro, un attaccante dovrebbe comunque violare la funzione hash per collegare un indirizzo alla sua chiave pubblica. In terzo luogo, gli output hash a lunghezza fissa implicano lunghezze di indirizzo standardizzate, il che semplifica l'implementazione e riduce gli errori.
5. Firme digitali e autenticazione delle transazioni
Ogni volta che un utente invia una transazione in criptovaluta, deve dimostrare di essere il legittimo proprietario dei fondi spesi. Questa autenticazione si basa sulle firme digitali, e l'hashing è il fondamento del modo in cui tali firme vengono create e verificate.
Il processo si articola in tre fasi. Innanzitutto, i dati della transazione vengono sottoposti a hashing per produrre un digest di lunghezza fissa, indipendentemente dalle dimensioni o dalla complessità della transazione stessa. In secondo luogo, il mittente crittografa tale hash con la propria chiave privata. Questo hash crittografato costituisce la firma digitale. Infine, la firma viene allegata alla transazione e trasmessa in rete.
Qualsiasi nodo che riceve la transazione può verificarla decifrando la firma utilizzando la chiave pubblica del mittente, nota pubblicamente, ricalcolando l'hash dei dati della transazione in modo indipendente e confrontando i due risultati. Se corrispondono, la transazione è autentica e non è stata modificata. Se non corrispondono, è stata utilizzata la chiave privata sbagliata oppure i dati della transazione sono stati alterati durante la trasmissione.
Questa combinazione di hashing e crittografia a chiave pubblica raggiunge simultaneamente tre obiettivi: autenticazione (dimostrando che il mittente controlla la chiave privata), integrità (dimostrando che i dati della transazione non sono stati alterati) e non ripudio (il mittente non può successivamente affermare di non aver autorizzato la transazione).
6. Protezione contro la doppia spesa
La doppia spesa consiste nel tentativo di spendere lo stesso saldo di criptovaluta più di una volta, creando di fatto denaro dal nulla. Si tratta di un problema fondamentale che qualsiasi valuta digitale deve risolvere in assenza di un'autorità centrale che possa dirimerla. hashingLa combinazione con il meccanismo di consenso blockchain è il modo in cui Bitcoin e reti simili hanno risolto il problema.
Quando una transazione viene trasmessa, i nodi controllano il registro blockchain per confermare che i fondi a cui si fa riferimento non siano già stati spesi. Una volta che una transazione è inclusa in un blocco confermato con un numero sufficiente di blocchi successivi costruiti su di esso, modificare la cronologia per rimuoverla richiederebbe il ricalcolo degli hash e della prova di lavoro per ogni blocco successivo, a una velocità superiore a quella con cui la rete onesta estende la catena. In pratica, dopo sei conferme in Bitcoin, il costo per annullare una transazione è considerato proibitivo per qualsiasi attaccante realistico.
Il ruolo dell'hashing nella sicurezza della blockchain: un'analisi più approfondita
Immutabilità attraverso collegamenti crittografici
Il concetto di immutabilità della blockchain viene spesso presentato come se il registro fosse fisicamente immodificabile. Una descrizione più accurata è che la modifica dei dati storici è computazionalmente ed economicamente irrealizzabile a causa del lavoro crittografico cumulativo rappresentato dalla catena di hash.
Per alterare un blocco che si trova, ad esempio, a 10,000 blocchi di profondità nella blockchain di Bitcoin, un attaccante dovrebbe:
- Modifica i dati nel blocco di destinazione.
- Ricalcola un hash Proof of Work valido per quel blocco trovando un nuovo nonce valido.
- Ripeti questa operazione per ognuno dei 10,000 blocchi successivi, ognuno dei quali ora ha un hash del blocco precedente non valido.
- Fai tutto questo più velocemente di quanto la rete onesta stia estendendo la catena con nuovi blocchi.
- Diffondi la catena fraudolenta nella rete e convinci un numero sufficiente di nodi ad accettarla come catena canonica.
Considerato che l'hash rate totale di Bitcoin supera gli 800 exahash al secondo nel 2025, con hardware ASIC altamente specializzato distribuito su migliaia di operazioni di mining in tutto il mondo, l'energia e l'investimento di capitale necessari per superare la potenza di calcolo della rete onesta sono di molti ordini di grandezza superiori a qualsiasi potenziale attaccante.
Messa in sicurezza del processo minerario e adeguamento della difficoltà
La relazione tra difficoltà di hashing e sicurezza di rete è un sistema che si autoalimenta. Man mano che un numero maggiore di miner si unisce alla rete e l'hash rate totale aumenta, la soglia target per gli hash di blocco validi viene automaticamente abbassata (rendendo più difficile trovare hash validi), mantenendo costante il tempo medio di produzione dei blocchi. Se i miner abbandonano la rete e l'hash rate totale diminuisce, la soglia target viene alzata (rendendo più facile trovare hash validi), mantenendo nuovamente stabili i tempi di blocco.
Ciò significa che la sicurezza della rete è sempre approssimativamente proporzionale al suo valore economico totale: una rete che elabora più valore attrae maggiori investimenti nel mining, il che aumenta l'hash rate, che a sua volta aumenta il costo di un attacco. L'attaccante deve sempre spendere più della maggioranza onesta.
Protezione contro attacchi specifici
L'hashing fornisce una protezione a più livelli contro diverse categorie specifiche di attacchi:
Attacchi del 51%: Un attacco del 51% richiede che un singolo soggetto controlli più della metà dell'hash rate totale della rete. Sebbene non sia letteralmente impossibile, controllare il 51% dell'hash rate di Bitcoin richiederebbe miliardi di dollari in hardware specializzato e costi energetici continui, con l'attacco stesso che distruggerebbe il valore della criptovaluta che l'attaccante stava cercando di sfruttare. L'attacco è controproducente su larga scala. Le reti blockchain più piccole con hash rate totali inferiori sono effettivamente più vulnerabili agli attacchi del 51%, e diverse blockchain minori sono state attaccate con successo in questo modo.
Sybil attacca: Un attacco Sybil consiste nel creare un gran numero di identità false per ottenere un'influenza sproporzionata in una rete. Nei sistemi Proof of Work, l'identità non ha importanza: l'influenza è determinata dalla potenza di calcolo (hash rate). Creare un milione di identità di miner false non offre alcun vantaggio se, nel loro insieme, queste identità non hanno una potenza di calcolo superiore a quella di un singolo miner onesto. La potenza di calcolo è la risorsa scarsa che determina l'influenza sulla rete, non il numero di identità.
Doppia spesa: Come descritto in precedenza, la combinazione del collegamento crittografico tramite hash e del requisito Proof of Work rende l'annullamento delle transazioni confermate un'operazione proibitivamente costosa. Più una transazione si trova in profondità nella catena, maggiore è la quantità di prove di lavoro accumulate che un attaccante deve superare.
Attacchi di preimmagine: Un malintenzionato che tentasse di falsificare una transazione o creare un blocco fraudolento il cui hash corrisponda a un valore target noto, dovrebbe invertire la funzione hash, trovando un input che produca un output specifico. Per SHA-256, ciò richiederebbe circa 2^256 operazioni con il calcolo classico, un numero talmente grande da superare il numero di atomi nell'universo osservabile.
Perché l'integrità dei dati dei blocchi è importante per gli utenti di criptovalute
Ogni volta che controlli il saldo del tuo portafoglio o confermi un pagamento ricevuto, il tuo software si affida alla blockchain con hash per garantire che la cronologia delle transazioni che sta leggendo non sia stata manomessa. L'immutabilità dei record della blockchain non è uno slogan pubblicitario; è una proprietà matematica garantita dalla potenza di calcolo cumulativa dell'intera rete.
L'hashing oltre la blockchain: altre applicazioni nel mondo reale
Comprendere in quali altri contesti viene utilizzato l'hashing aiuta a chiarire perché le sue proprietà siano importanti e perché gli sviluppatori di blockchain e i ricercatori nel campo della sicurezza prendano così seriamente la sua integrità.
Archiviazione password
Le applicazioni responsabili non memorizzano mai la password effettiva nel loro database. Al contrario, quando si crea una password, l'applicazione la sottopone a hashing (con l'aggiunta di un salt) e memorizza solo l'hash. Al momento dell'accesso, l'applicazione esegue l'hashing della password inserita con il salt memorizzato e confronta il risultato con l'hash memorizzato. Se corrispondono, l'autenticazione ha successo. La password originale non deve mai essere memorizzata o recuperata.
Questo significa che, anche se un malintenzionato riesce a violare un database e a rubare tutte le password crittografate, non può recuperare direttamente le password originali. Deve tentare di decifrare ogni hash singolarmente, un'operazione computazionalmente onerosa, soprattutto con algoritmi robusti come bcrypt o Argon2, che sono volutamente lenti e richiedono un elevato consumo di memoria.
Meta, tramite Facebook, esegue l'hashing e il salting delle password degli utenti utilizzando una funzione chiamata scrypt. Persino gli ingegneri di Facebook non possono visualizzare la tua password in chiaro. Questo è l'approccio corretto, ed è la stessa filosofia che la blockchain applica ai dati delle transazioni e dei blocchi.
Verifica dell'integrità dei file
Quando si scarica un software da Internet, gli editori responsabili forniscono un checksum, ovvero l'hash del file legittimo. Dopo il download, è possibile calcolare l'hash del file e confrontarlo con il checksum pubblicato. Se i valori corrispondono, il file non è stato danneggiato durante il trasferimento e non è stato manomesso da malintenzionati che potrebbero averlo sostituito con una versione contenente malware. Questo principio è identico a quello utilizzato dai nodi blockchain per verificare che i dati del blocco corrispondano all'hash fornito.
Certificati digitali e HTTPS
L'icona del lucchetto nella barra degli indirizzi del browser si basa sull'hashing. Quando un'autorità di certificazione firma un certificato digitale, esegue l'hashing dei dati del certificato e crittografa tale hash con la propria chiave privata per formare una firma digitale. Il browser verifica l'autenticità del certificato decrittografando la firma con la chiave pubblica dell'autorità e confrontando il risultato con il proprio hash dei dati del certificato. Lo stesso meccanismo che autentica le transazioni blockchain autentica anche i siti web che visiti ogni giorno.
Git Controllo versione
Ogni commit in Git è identificato da un hash SHA-1 del suo contenuto. Questo rende immediatamente rilevabile qualsiasi tentativo di alterare i commit di codice precedenti, la stessa proprietà che rende la blockchain immutabile. Sebbene SHA-1 non sia più raccomandato per le applicazioni critiche per la sicurezza, Git sta lavorando alla migrazione a SHA-256 proprio per questo motivo.
Sfide e limiti dell'hashing nella blockchain
L'hashing non è una soluzione perfetta né illimitata. Diverse sfide significative meritano una discussione onesta.
La minaccia dell’informatica quantistica
La sfida a lungo termine più significativa per le funzioni hash crittografiche è lo sviluppo dei computer quantistici. Due algoritmi quantistici sono rilevanti in questo contesto, e le loro implicazioni sono diverse.
Algoritmo di Grover Fornisce un'accelerazione quadratica per i problemi di ricerca a forza bruta. Per una funzione hash con sicurezza a n bit, l'algoritmo di Grover riduce la sicurezza effettiva a circa n/2 bit. Ciò significa che SHA-256 offrirebbe circa 128 bit di sicurezza quantistica anziché 256 bit. Sebbene questa sia una significativa riduzione teorica, la sicurezza a 128 bit è ancora considerata computazionalmente intrattabile: il consenso attuale degli esperti è che SHA-256 e SHA-3 rimangono sicuri contro le tecniche quantistiche note, mentre SHA-384 o SHA-512 sono raccomandati per i sistemi che richiedono la massima garanzia a lungo termine.
Algoritmo di Shor È molto più pericoloso, ma prende di mira la crittografia a chiave pubblica (RSA, crittografia a curve ellittiche) piuttosto che le funzioni hash direttamente. La crittografia asimmetrica utilizzata per le firme digitali nella blockchain è la vulnerabilità quantistica più urgente. Un computer quantistico sufficientemente potente che esegue l'algoritmo di Shor potrebbe teoricamente derivare una chiave privata da una chiave pubblica, il che consentirebbe a un aggressore di falsificare le firme e rubare fondi dagli indirizzi esposti.
A metà del 2025, i processori quantistici più potenti possedevano centinaia di qubit fisici. Decifrare la crittografia a curva ellittica a 256 bit di Bitcoin richiederebbe milioni di qubit logici di alta qualità, al netto dei costi di correzione degli errori. La maggior parte dei ricercatori indipendenti stima che una minaccia quantistica credibile per i sistemi crittografici attualmente in uso sia ancora lontana diversi anni, con stime che in genere si estendono fino al 2030. Tuttavia, la tempistica è non lineare e incerta.
Standard post-quantistici del NIST (2024)
Nell'agosto del 2024, il NIST ha finalizzato i suoi primi tre standard di crittografia post-quantistica: FIPS 203 (ML-KEM, per l'incapsulamento delle chiavi), FIPS 204 (ML-DSA, per le firme digitali) e FIPS 205 (SLH-DSA, uno schema di firma digitale senza stato basato su hash). Secondo la tempistica di transizione pubblicata dal NIST (NIST IR 8547), gli algoritmi vulnerabili ai computer quantistici dovrebbero essere deprecati dagli standard NIST entro il 2035, mentre i sistemi ad alto rischio dovrebbero migrare molto prima. SLH-DSA è degno di nota perché la sua sicurezza si basa interamente sulla resistenza alle collisioni delle funzioni hash sottostanti, il che lo rende una scelta particolarmente conservativa e incentrata sugli hash per le firme post-quantistiche.
Vitalik Buterin ha delineato pubblicamente un piano di emergenza per Ethereum in caso di un'improvvisa svolta nel campo della tecnologia quantistica: un hard fork che congelerebbe gli indirizzi compromessi e consentirebbe agli utenti legittimi di migrare verso wallet sicuri per i computer quantistici. Anche la comunità di Bitcoin ha discusso di possibili percorsi di migrazione. Questi piani confermano che il settore è consapevole della sfida e si sta preparando ad affrontarla.
Vulnerabilità della funzione hash
La storia dimostra che le funzioni hash ritenute sicure a volte si sono rivelate vulnerabili. SHA-1 godeva di fiducia fino al 2005, quando furono identificate vulnerabilità teoriche di collisione, e nel 2017 il Project Zero di Google pubblicò la prima collisione SHA-1 reale. MD5 era considerato vulnerabile da ancora più tempo.
La reazione del settore a queste scoperte dimostra come le blockchain siano progettate per gestire situazioni simili: la maggior parte delle blockchain moderne include percorsi di aggiornamento che consentono alla rete di migrare verso funzioni hash più robuste qualora quella attuale venga compromessa. Ciò richiede il consenso della comunità e un aggiornamento coordinato, ma il meccanismo esiste. L'importanza di utilizzare algoritmi standardizzati e collaudati, anziché funzioni hash personalizzate, non può essere sottovalutata: le implementazioni personalizzate introducono vulnerabilità sconosciute senza il beneficio di anni di crittanalisi da parte della comunità.
Consumo energetico e prova di lavoro
Il mining Proof of Work richiede enormi quantità di elettricità proprio perché la sua sicurezza dipende dal rendere il lavoro computazionale effettivamente costoso. Il consumo energetico annuale di Bitcoin è paragonabile a quello di nazioni di medie dimensioni, un fatto che suscita notevoli critiche per motivi ambientali.
Ciò ha spinto lo sviluppo di meccanismi di consenso alternativi. Ethereum ha completato la sua transizione da Prova di lavoro a prova di partecipazione Nel 2022, riducendo il suo consumo energetico di circa il 99.95%. Il Proof of Stake sostituisce il lavoro computazionale del mining di hash con una garanzia economica: i validatori bloccano criptovaluta come deposito cauzionale e vengono selezionati per produrre blocchi in base alla loro quota. L'hashing svolge ancora un ruolo essenziale nei sistemi Proof of Stake (integrità dei blocchi e delle transazioni, alberi di Merkle, generazione degli indirizzi), ma la competizione per il mining di hash, che richiede un elevato consumo energetico, viene eliminata.
Vincoli di scalabilità
Con la crescita delle reti blockchain e l'aumento dei volumi di transazione, l'hashing necessario per la verifica può diventare un collo di bottiglia. Ogni nodo completo deve eseguire l'hashing e verificare ogni blocco, e il puzzle della Proof of Work nelle reti di mining deve rimanere sufficientemente oneroso dal punto di vista computazionale da scoraggiare gli attacchi. Diverse soluzioni di scalabilità affrontano questo problema attraverso canali di transazione off-chain, sharding e protocolli di verifica ottimizzati, che preservano le garanzie di sicurezza fondamentali basate sull'hashing riducendo al contempo il sovraccarico computazionale per transazione.
Ottieni la carta UPay Crypto
Scopri il meglio dei pagamenti online e delle transazioni crittografiche senza interruzioni.
RegistratiIl futuro dell'hashing nella blockchain
Con l'evolversi delle minacce e delle capacità nel panorama crittografico, anche il ruolo dell'hashing nella tecnologia blockchain si trasforma. Diverse direzioni importanti stanno plasmando la prossima generazione di sicurezza blockchain.
Funzioni hash post-quantistiche
I ricercatori stanno sviluppando e standardizzando attivamente funzioni hash e schemi di firma progettati per resistere sia agli attacchi classici che a quelli quantistici. Lo standard SLH-DSA del NIST, finalizzato nel 2024, è uno schema di firma digitale senza stato basato su hash, la cui sicurezza si fonda interamente sulla difficoltà dei problemi relativi alle funzioni hash, senza richiedere alcuna crittografia a chiave pubblica che i computer quantistici potrebbero attaccare con l'algoritmo di Shor. Durante il periodo di transizione, si raccomanda l'utilizzo di schemi ibridi che eseguono in parallelo sia un algoritmo classico che un algoritmo post-quantistico, in modo da garantire la sicurezza anche qualora uno degli algoritmi venisse inaspettatamente compromesso.
Nello specifico, per quanto riguarda le funzioni hash, la principale strategia di mitigazione contro l'algoritmo di Grover consiste semplicemente nell'utilizzare hash più lunghi: SHA-384 e SHA-512 offrono margini di sicurezza quantistica sufficienti, anche tenendo conto dell'accelerazione quadratica. BLAKE3 è inoltre oggetto di studio come alternativa ad alte prestazioni con solidi margini di sicurezza per ambienti post-quantistici.
Prove a conoscenza zero e hashing che preserva la privacy
Le prove a conoscenza zero (ZKP) rappresentano uno degli sviluppi più interessanti della crittografia applicata alla blockchain. Una prova a conoscenza zero consente a una parte di dimostrare a un'altra di conoscere un segreto o che un calcolo è stato eseguito correttamente, senza rivelare alcuna informazione sui dati sottostanti.
Le funzioni hash sono parte integrante della costruzione di molti sistemi ZKP. Gli zk-SNARK (Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge) utilizzano internamente impegni basati su hash per abilitare applicazioni come le transazioni private, in cui un utente può dimostrare di avere fondi sufficienti per coprire un pagamento senza rivelare il proprio saldo effettivo o la cronologia delle transazioni. Zcash è stata tra le prime criptovalute ad implementare questa tecnologia. Sistemi più recenti come StarkNet utilizzano gli STARK, che si basano esclusivamente su funzioni hash resistenti alle collisioni ed evitano i requisiti di configurazione affidabile dei precedenti sistemi ZKP, risultando particolarmente interessanti per la sicurezza post-quantistica.
Interoperabilità e hashing cross-chain
Con la maturazione dell'ecosistema blockchain e la necessità per diverse blockchain di comunicare tra loro, l'hashing gioca un ruolo chiave nei protocolli cross-chain. Gli Hash Time Locked Contracts (HTLC) utilizzano impegni crittografici basati su hash per consentire scambi atomici tra diverse blockchain: una transazione su una blockchain viene bloccata con un hash e può essere sbloccata solo rivelando la preimmagine di tale hash, il che rilascia simultaneamente una transazione corrispondente sull'altra blockchain. Nessuna delle due parti può imbrogliare, perché le funzioni di hash garantiscono che la rivelazione della preimmagine su una blockchain fornisca automaticamente la prova necessaria sull'altra.
Le prove Merkle vengono utilizzate anche nei protocolli bridge cross-chain per consentire a una blockchain di verificare che un evento specifico si sia verificato su un'altra blockchain senza dover eseguire un nodo completo per quest'ultima. La natura verificabile e a prova di manomissione degli hash dell'albero Merkle rende questa verifica cross-chain sia pratica che affidabile.
Funzioni hash specializzate per casi d'uso specifici
Le funzioni hash generiche come SHA-256 non sono state ottimizzate per i vincoli specifici di ogni possibile applicazione blockchain. Con la maturazione del settore, stiamo assistendo a un maggiore sviluppo di funzioni hash su misura per contesti particolari: funzioni ottimizzate per l'efficienza dei circuiti di prova a conoscenza zero, funzioni "memory-hard" che impediscono la centralizzazione del mining tramite ASIC e funzioni progettate per dispositivi embedded in applicazioni IoT basate su blockchain. L'obiettivo in ogni caso è preservare le proprietà di sicurezza fondamentali di una funzione hash crittografica, ottimizzando al contempo le caratteristiche prestazionali per l'ambiente di implementazione.
Le migliori pratiche per gli sviluppatori blockchain
Per gli sviluppatori che lavorano su infrastrutture blockchain o che implementano sistemi crittografici che interagiscono con esse, i seguenti principi rappresentano le migliori prassi attuali:
- Utilizzare funzioni hash standardizzate e ben collaudate. SHA-256, SHA-3/Keccak-256 e BLAKE3 sono le scelte più appropriate per la maggior parte delle applicazioni blockchain. Non create mai una funzione hash personalizzata per un sistema di produzione a meno che non siate crittografi professionisti che abbiano sottoposto il progetto a un'approfondita revisione da parte di colleghi.
- Non utilizzare mai MD5 o SHA-1 per qualsiasi scopo che richieda particolare attenzione alla sicurezza. Entrambe sono considerate inadeguate per le applicazioni crittografiche e dovrebbero essere trattate solo come funzioni obsolete.
- Implementare la salatura per tutte le funzioni di hashing delle password. Utilizza funzioni di hashing delle password specifiche, come bcrypt o Argon2, che includono l'aggiunta di un salt e sono volutamente lente e richiedono molta memoria per resistere agli attacchi di forza bruta e a quelli basati su GPU.
- Progettazione per l'agilità crittografica. Progetta i sistemi in modo tale da consentire l'aggiornamento della funzione hash qualora venga scoperta una vulnerabilità. Codificare in modo rigido una singola funzione hash senza possibilità di aggiornamento crea un debito tecnico che potrebbe rivelarsi critico in futuro.
- Iniziate a pianificare la migrazione post-quantistica. Il NIST ha pubblicato una chiara tempistica: gli algoritmi vulnerabili ai computer quantistici saranno deprecati entro il 2035. I sistemi che gestiscono dati sensibili o di lunga durata dovrebbero iniziare a valutare la propria esposizione ai computer quantistici fin da ora, in particolare per quanto riguarda gli schemi di firma digitale e i meccanismi di scambio delle chiavi.
- Utilizzare una corretta gestione delle chiavi. Le funzioni hash proteggono l'integrità dei dati sulla blockchain, ma la sicurezza di un portafoglio si basa in ultima analisi sulla chiave privata. Le procedure sicure di generazione, archiviazione e backup delle chiavi sono importanti quanto gli algoritmi crittografici che le utilizzano.
- Comprendi i limiti delle funzioni hash che utilizzi. Algoritmi diversi presentano profili di prestazioni, proprietà di sicurezza e resistenza a specifici tipi di attacco differenti. La scelta più appropriata dipende dal caso d'uso specifico, dal modello di minaccia e dai requisiti di prestazioni.
Leggi anche: Distribuzione dell'hashrate nel 2024: come si posizionano i paesi
Parere di esperti su hashing e sicurezza blockchain
Il contributo dell'hashing alla sicurezza della blockchain è significativamente influenzato dalla sua capacità di autenticare i dati e rilevare manomissioni. Secondo Bill Mann, esperto di privacy presso Cyber Insider, "L'hashing è parte integrante della tecnologia blockchain perché consente di garantire che i dati non vengano alterati".
"L'hashing garantisce che i dati delle transazioni non siano stati manomessi. Se un valore hash in una blockchain viene alterato, i valori hash cambiano e la transazione diventa nulla. Si sta lavorando su algoritmi di hashing molto più complessi per garantire la sicurezza della blockchain in futuro. Grazie alla crittografia, all'hashing e alla blockchain, i nostri dati sono al sicuro quanto lo si possa essere oggi."
Mann riconosce inoltre la continua sfida tra ricercatori nel campo della sicurezza e avversari: "La sicurezza informatica è un processo in continua evoluzione, sia proattivo che reattivo, da entrambe le parti, e noi continuiamo ad andare avanti". Ciò riflette la realtà più ampia che la sicurezza crittografica non è un problema risolto, ma un campo in costante evoluzione. Lo sviluppo di standard post-quantistici da parte del NIST, la continua ricerca sulle prove a conoscenza zero e il lavoro attivo della comunità sui percorsi di aggiornamento della blockchain rappresentano tutti esempi concreti di questo approccio proattivo e lungimirante.
La risposta della comunità crittografica alle potenziali minacce quantistiche è un buon esempio di questo approccio proattivo. Invece di aspettare che i computer quantistici diventassero in grado di violare gli standard attuali, il NIST ha avviato il suo processo di standardizzazione post-quantistica nel 2016 e ha pubblicato gli standard definitivi nel 2024. Il settore blockchain si sta preparando per un futuro che potrebbe non arrivare per anni o decenni, perché il costo dell'impreparazione è troppo elevato.
Ottieni la carta UPay Crypto
Scopri il meglio dei pagamenti online e delle transazioni crittografiche senza interruzioni.
RegistratiConclusione
L'hashing è la spina dorsale invisibile della sicurezza della blockchain. Non è una caratteristica tra le tante, ma il meccanismo fondamentale su cui si basa ogni altra proprietà di sicurezza della blockchain. L'immutabilità del registro, l'equità della competizione di mining, l'efficienza della verifica delle transazioni tramite alberi di Merkle, la privacy e il rilevamento degli errori degli indirizzi dei portafogli, l'autenticità delle firme digitali e la resistenza alla doppia spesa e ad altri attacchi derivano direttamente dalle proprietà delle funzioni di hash crittografiche.
Comprendere l'hashing significa capire perché i dati della blockchain sono affidabili senza richiedere fiducia in alcuna autorità centrale. La certezza matematica di una funzione unidirezionale, la notevole sensibilità all'effetto valanga e la resistenza alle collisioni degli algoritmi moderni si combinano per rendere la modifica non autorizzata dei dati non solo rilevabile, ma anche computazionalmente impossibile su larga scala.
Le sfide future sono concrete. L'informatica quantistica rappresenta una pressione a lungo termine sui presupposti crittografici alla base degli attuali sistemi di sicurezza basati su hash. La transizione verso gli standard post-quantistici è già in corso a livello di standard, e l'industria blockchain deve continuare a sviluppare i meccanismi di aggiornamento e i processi di consenso della comunità necessari per migrare man mano che tali standard diventeranno indispensabili nella pratica.
Per sviluppatori, investitori e utenti della tecnologia blockchain, il messaggio fondamentale è sempre lo stesso: l'hashing non è un dettaglio tecnico da lasciare agli esperti. È il fondamento matematico su cui si basa la promessa di un registro globale decentralizzato, trasparente e a prova di manomissione. Quanto più lo si comprende, tanto meglio si è preparati a valutare la sicurezza, l'affidabilità e la sostenibilità a lungo termine di qualsiasi sistema blockchain con cui si interagisce.
Nessun argomento correlato.

