Blockchain e sicurezza

Indice dei contenuti

    Una blockchain è una struttura dati distribuita organizzata come sequenza (catena) di blocchi, in cui ogni blocco contiene un insieme di transazioni e l’hash crittografico del blocco precedente. Questa struttura, combinata con meccanismi di consenso distribuito e firme digitali, crea un registro (ledger) append-only e tamper-evident: modificare un blocco passato invalida tutti i blocchi successivi, rendendo la manomissione rilevabile e computazionalmente molto costosa in reti sufficientemente decentralizzate.

    Struttura crittografica

    Ogni blocco contiene:

    • Header: hash del blocco precedente, timestamp, nonce (per la proof-of-work), radice dell’albero di Merkle delle transazioni
    • Transazioni: insieme di operazioni firmate digitalmente
    • Hash del blocco: digest dell’intero contenuto del blocco

    Il collegamento tramite hash forma la catena: se un attaccante modifica una transazione nel blocco nn, l’hash del blocco nn cambia, invalidando il campo «hash del blocco precedente» del blocco n+1n+1, che a sua volta invalida n+2n+2, e così via fino alla testa della catena. Per alterare un blocco storico, l’attaccante deve ricalcolare tutti i blocchi successivi più velocemente del resto della rete — proibitivo su reti con sufficiente hashrate distribuito.

    Albero di Merkle

    Le transazioni all’interno di un blocco sono organizzate in un albero di Merkle (Merkle tree): le transazioni vengono hashate a coppie ripetutamente fino a ottenere un singolo hash radice (Merkle root) incluso nell’header del blocco. Questo permette di verificare l’inclusione di una singola transazione in un blocco con una Merkle proof di dimensione O(logn)O(\log n), senza scaricare l’intero blocco.

    Firma digitale delle transazioni

    Ogni transazione è firmata con la chiave privata del mittente (ECDSA su secp256k1 in Bitcoin; ECDSA o EdDSA in Ethereum). La firma prova che il mittente possiede la chiave privata associata all’indirizzo sorgente, senza rivelare la chiave stessa. Il nodo ricevente verifica la firma con la chiave pubblica derivata dall’indirizzo.

    Modelli di consenso e sicurezza

    La sicurezza della blockchain dipende dal meccanismo di consenso che decide quale catena è quella «valida»:

    Proof of Work (Bitcoin): i nodi (miner) competono per trovare un nonce tale che l’hash del blocco sia inferiore a un target. L’attacco del 51% richiede il controllo di più della metà dell’hashrate totale della rete per riscrivere la storia. Su Bitcoin, economicamente proibitivo dato l’hashrate attuale.

    Proof of Stake (Ethereum post-The Merge): i validatori bloccano (stake) criptovaluta come garanzia. Un attacco richiede il controllo del 33–51% dello stake totale; i validatori malevoli rischiano lo slashing (perdita dello stake). Energeticamente più efficiente di PoW.

    Applicazioni alla sicurezza informatica

    Al di là delle criptovalute, la blockchain trova applicazione in:

    • Certificate Transparency (CT): log pubblico append-only di tutti i certificati TLS emessi dalle CA, che permette di rilevare certificati non autorizzati o emessi fraudolentemente. Obbligatorio per i certificati TLS pubblici dal 2018.
    • Supply chain integrity: registrazione immutabile della catena di custodia di componenti software o hardware.
    • Identità decentralizzata (DID): standard W3C per identità digitale controllata dall’utente, senza dipendenza da un’autorità centrale.

    Limiti di sicurezza

    La blockchain garantisce l’integrità del registro, non la correttezza dei dati che vi sono scritti. Un oracolo che inserisce dati falsi in una blockchain li rende immutabilmente falsi. Inoltre, gli smart contract sono codice eseguito su chain: vulnerabilità nel codice (come il reentrancy attack che causò l’hack di The DAO nel 2016, con perdita di ~$60M) possono essere sfruttate anche se la blockchain sottostante è integra.

    Ultimo aggiornamento: