Introduzione
Blockchain che in Italiano vuol dire “catena di blocchi” è una tecnologia digitale per il trasferimento sicuro di beni come il denaro. Spesso si fa confusione riferendosi al sistema del Blockchain con la moneta virtuale più famosa il Bitcoin (BTC), ma chiariamo subito che trattasi di due cose diverse:
- Bitcoin è una cripto valuta basata sulla tecnologia Blockchain sulla quale si basano anche altre monete virtuali;
- Blockchain è in realtà una meta-tecnologia che utilizza vari componenti come: strumenti crittografici di hash (sha512), crittografia a chiave pubblica (RSA), protocolli condivisi, distributed ledger technology (DLT), rete P2P.
Blockchain risolve fondamentalmente il problema di trasferire denaro fra due entità diversamente da come avviene di solito, ma ultimamente si sente anche parlare di Metaverso in tema di cripto valute e di blockchain, dalla quale si deduce che questa tecnologia sia in questo momento storico in forte espansione.
La struttura Blockchain è caratterizzata, come dice il termine stesso da una catena di blocchi, ciascuno dei quali contiene informazioni differenti e dipendenti dal tipo di applicazione che lo utilizza. L’aspetto importante è che tali informazioni sono vincolate tra loro e ogni blocco è collegato con il precedente e in parte anche con il successivo. Nella figura sottostante è visualizzato questo concetto:

il blocco iniziale della catena è denominato “blocco genesi”, secondo l’applicazione utilizzata che in questo caso è in riferimento alla Cripto valuta utilizzata, il blocco può contenere varie informazioni; Nel caso dei Bitcoin un blocco contiene informazioni sulle varie transazioni, in particolare su chi ha trasferito il denaro e sul ricevente e sulla somma trasferita. Ovviamente le identità dei soggetti coinvolti nelle transazioni non sono in chiaro e decifrabili ad occhio nudo, ma sono rappresentate dalla rispettiva chiave pubblica utilizzata dalla crittografia asimmetrica RSA. Una chiave crittografica non è altro che un codice alfanumerico di byte utilizzata in input all’algoritmo di crittografia per cifrare le transazioni in valute virtuali. Per comprendere le potenziali vulnerabilità nel sistema Blockchain è doveroso analizzare a fondo la sua struttura e come avviene il suo funzionamento a blocchi.
Blocchi
Ogni blocco visto nella figura precedente fondamentalmente contiene:
- I dati riguardanti le transazioni
- L’hash del blocco precedente
- L’hash del blocco attuale
- hash del blocco successivo (inserito in un secondo tempo ma solo come riferimento e non dovrebbe entrare nel calcolo dell’hash del blocco attuale).
Questi parametri rappresentano una sorta di Fingerprint del blocco stesso, mentre per generare il “Digest” ovvero l’output generato della funzione di hash, Blockchain utilizza l’algoritmo SHA-256 che ne garantisce l’integrità, evitando in teoria eventuali manipolazioni dei dati all’interno del blocco stesso, se questo accadesse genererebbe difatti un diverso hash che allerterebbe il sistema.
Importante rilevare fin da subito ma riprenderemo il discorso in seguito che l’algoritmo SHA-1 fu sostituito in maniera massiccia con SHA-2 e SHA-3, dopo che Google nel 2014 annunciò la sua violazione attraverso tecniche matematiche di alterazione binaria, una categoria di attacco di natura prettamente matematica e calcolo probatorio il cui termine corretto sarebbe “Attacco a compleanno” “Birthday paradox”. In realtà una violazione a SHA-1 avvenne alcuni anni prima, nel 2005 un team cinese di crittografi riuscì a generare collisioni efficaci nell’algoritmo.
Riprendendo il discorso dell’hash del blocco attualedel Blockchain e con “attuale” intendo quello attivo per distinguerlo dagli altri, si genera fornendo come input all’algoritmo SHA-256 i seguenti parametri:
- dati riguardanti le transazioni appartenenti al blocco attuale
- Hash del blocco precedente
- Un valore chiamato nonce(numero casuale da ricercare e testare tramite la Proof-of-Work)
Come ho detto poc’anzi se un attaccante modificasse il contenuto di un blocco, l’hash di tale blocco varierebbe, invalidando conseguentemente tutti gli hash dei blocchi successivi, l’attaccante comunque potrebbe ricalcolare anche tutti gli altri blocchi, in effetti non è così complesso rielaborare una serie di hash al fine di rigenerare una catena valida, tuttavia tale rielaborazione è resa più complessa dalla cosiddetta Proof-of-Work (PoW) che appunto complica tale calcolo.
Proof-of Work (PoW)
Proof-of-Work (PoW) è un meccanismo che rallenta la creazione di nuovi blocchi e insieme all’utilizzo massiccio di hash e alla crittografia asimmetrica permette di garantire un ottimo livello di sicurezza al Blockchain. Sostanzialmente la PoW è un problema crittografico computazionalmente complesso ma la cui verifica del risultato ottenuto è molto semplice.
Detta in termini pratici consiste nel trovare con tentativi consecutivi un valore casuale chiamato “nonce” tale che l’hash (utilizzando SHA-256 o successivi), dei dati, delle transazioni, dell’hash del blocco precedente e del nonce stesso sia generato in modo da avere come cifre iniziali un numero di zeri definito (ad esempio 4 zeri iniziali: 0000HGD636…).
Che cosa vuol dire questa frase?
Nulla di complesso vuol dire solo risolvere un puzzle crittografico attraverso l’uso delle potenze di calcolo messe a disposizione dalle CPU e GPU degli elaboratori, quindi aumentare il numero di zeri necessari all’hash per andare in convalida significa anche aumentare iil grado di difficoltà per i Miner con la pow, a questa data in cui scrivo l’articolo questo valore dovrebbe essere impostato a 19 zeri iniziali.
Chi risolve questo Puzzle crittografico?
I Miner della rete Blockchain.

Vediamo un esempio di un attacco a questo sistema.
Esempio di un attacco a Blockchain

Possiamo notare nel Blocco #5 i tre parametri principali, contiene:
- Dati transazione (per esempio 100.000€),
- l’hash del blocco#4
- nonce=p##@1
Come detto prima il nonce è quel valore randomico ricercato attraverso l’operazione di mining con tentativi consecutivi tale da produrre un hash valido (SHA-256) del blocco, ovvero un hash che cominci in questo esempio con sette zeri consecutivi 0000000P3X22A.. Il nonce e l’hash trovato costituiscono la soluzione della PoW per il Blocco #5.
Analogamente il Blocco #6 contiene dati similari:
- una transazione esempio da 350.000€
- l’hash del Blocco #5,
- si ripete il nonce=p##@1 che produce anche in questo blocco un hash valido.
Lo stesso nonce e l’hash trovato costituiscono anche in questo caso la soluzione della PoW per il Blocco #6.
Per il blocco#7?
Trovare soluzioni di questo tipo con questi requisiti di zeri imposti non è un operazione complessa ma è richiesto un ingente dispendio energetico per la potenza di calcolo necessaria alla computazione.
Questo appena descritto è solo un esempio ma PoW potrebbe essere complicato ulteriormente con altre applicazioni in base al livello di sicurezza che si vuole ottenere.
Fare una modifica fraudolenta ai dati in input all’algoritmo di hash, per esempio: aumentare il valore della transazione nel Blocco #5 da 100€ a 100.000.000€, graverà sulla correttezza dell’hash del blocco che potrebbe non essere più strutturato con sette zeri iniziali 0000000P3X22A e quindi essere invalidato dal sistema blockchain.
Per riuscire nel suo intento l’attaccante che ha modificato opportunamente la cifra di una transazione attraverso un’operazione di «mining», dovrebbe riuscire a trovare un nuovo nonce per il blocco in cui ha eseguito la modifica, tale che la PoW sia nuovamente verificata con il sistema di zeri.
In seguito l’attaccante dovrebbe compiere una nuova operazione di mining per trovare un nuovo nonce anche per il blocco successivo tale da verificare anche per questo la relativa PoW; dovrebbe anche eseguire quest’operazione per ogni blocco della Blockchain, dalla posizione in cui è intervenuto in avanti.
Questo dimostra chiaramente il concetto del Blockchain e della sua capacità di gestire la non modificabilità dei dati. Se l’attaccante riuscisse a ricalcolare tutte le PoW di ogni blocco Blockchain, allora la sua modifica (falsa transazione) potrebbe andare a buon fine. Generalmente, con le potenze di calcolo in gioco, per il caso Bitcoin calcolare una PoW richiede circa 15-30 minuti a blocco, ma la sicurezza Blockchain è garantita dalla difficoltà computazionale del Proof-of-Work e tale livello è ulteriormente elevato dal fatto di utilizzare una rete Peer-to-Peer (P2P) e un Ledger distribuito (libro mastro).
Ledger
Ogni nodo della rete che partecipa a Blockchain possiede una copia sincronizzata e completa della Blockchain stessa (Distribuited Ledger). Il Ledger è appunto decentralizzato e visibile a tutti i nodi, non è detenuto da nessuna entità in particolare, né tantomeno da un’unità centrale (Trusted-Third-Party), ciò garantisce al contempo sia la sicurezza sia l’immutabilità del registro stesso. I vari nodi possono entrare e uscire dalla rete P2P, ogni volta che un nodo rientra, riceve una copia del Ledger aggiornata.
Un attaccante che sia riuscito a ricalcolare i blocchi del Blockchain (come nell’esempio precedente) dovrebbe quindi guadagnare anche il consenso di almeno più del 50% dei nodi della rete P2P al fine di far accettare come valida la modifica fraudolenta a Blockchain. Se questo non accadesse, i nodi che si trovano in possesso della copia Blockchain falsa saranno quindi in numero ridotto e la copia Blockchain anomala verrebbe immediatamente scartata. Il sistema basandosi sulla rete P2P e sul concetto di Ledger pubblico e distribuito riesce in autonomia a garantire una propria sicurezza senza affidarsi a terze parti.
Quantum Collision Attack SHA256 e SHA512
Ricercatori universitari, Centri di calcolo e altri enti come IACR, stanno studiando questa tipologia di attacchi basati sulle collisioni degli hash sfruttando il calcolo probatorio e utilizzando per lo scopo i Computer quantistici.
Questi elaboratori innovativi sono in grado di migliorare notevolmente il tempo di esecuzione dei calcoli e delle prestazioni sfruttando le leggi della fisica e della meccanica quantistica, elaborando nel contempo i dati sottoforma di un unità fondamentale chiamata Qbit al posto del tradizionale Bit utilizzato nel calcolo elettronico.
All’Eurocrypt 2020 Hosoyamada e Sasaki hanno proposto il primo attacco quantistico dedicato alle funzioni di hash, precisamente a SHA-2 e SHA-3, in realtà hanno riprodotto una versione migliorata del classico “Attacco a compleanno” che genera collisioni sugli output degli algoritmi di hash sfruttando il calcolo probatorio come tecnica di violazione. Questo lavoro prettamente rivolto all’ambito dell’analisi matematica e della crittoanalisi apre una nuova prospettiva verso la sicurezza degli algoritmi utilizzati dalle funzioni di hash. Per il momento rimane uno studio di ricerca universitaria anche perchè non tutti dispongono in casa di questi prestanti e costosi elaboratori. Possiamo concludere che Blockchain è un sistema apparentemente sicuro, dico “apparentemente” perché anche se come abbiamo visto gode di sicurezza multilivello, come ogni tecnologia potrebbe avere potenziali vulnerabilità intrinseche che con l’avvento di nuove tecnologie integrate come il Metaverso per esempio, ne potrebbero ampliare la superficie di attacco facendo crollare tutta la fortezza che il sistema blockchain ha intorno a se.
Dr.ing Curzi Fernando L. (CyberSecurity analyst, Ethical hacker, pentester certificato, Laureato in ingegneria informatica)
autore dell’ebook Hackerpunk in vendita su Amazon










