Come funzionano la crittografia e la funzione di hash
25 giugno, 2020
8 min
A livello strutturale, la Blockchain è un elenco crescente di transazioni, registrate in blocchi, che sono concatenati tramite crittografia. Infatti ogni blocco contiene un hash crittografico del blocco precedente. Approfondiamo questi concetti uno alla volta, senza fretta.
L’origine della blockchain
Spesso Satoshi Nakamoto viene frainteso come inventore della blockchain, ma non è così.
Nakamoto infatti migliorò solamente le formulazioni di Stuart Haber e W. Scott Stornetta del 1991 a proposito di un sistema a “catena di blocchi” crittograficamente protetto per archiviare documenti. A questo unì le scoperte dell’informatico e crittografo Hal Finney (2004), il quale introdusse un sistema chiamato RPoW, Reusable Proof Of Work, come vedremo decisivo per la storia delle criptovalute. Il grande merito di Satoshi rispetto ai suoi predecessori fu quello di riuscire a dare una concreta applicabilità alla tecnologia blockchain grazie a Bitcoin.
La blockchain: una catena di blocchi
Letteralmente blockchain significa “catena di blocchi”. I blocchi costituiscono il mattone della blockchain. Questi blocchi sono disposti in una sequenza lineare che forma una catena potenzialmente infinita. Possiamo immaginare i blocchi come una sorta di casellario digitale dove sono conservate migliaia di fatture e ricevute.
I dati registrati nel blocco
Ogni casellario, cioè ogni blocco, registra i dati di una transazione come, ad esempio, l’ora, la data, l’importo e chi ha partecipato allo scambio. I blocchi sono concatenati l’uno all’altro in ordine cronologico sequenziale e hanno un identificativo specifico che li distingue da tutti gli altri, chiamato hash.
Ogni blocco può contabilizzare un certo numero di transazioni. Una volta terminato il suo spazio di archiviazione, viene creato un nuovo blocco concatenato al precedente. Andando a ritroso, troviamo il primo blocco creato di una blockchain: il blocco di genesi.
Collegamento tra i blocchi: A cosa serve la funzione di hash
La funzione di hash serve per collegare e condensare gruppi di transazioni in blocchi, oltre che per produrre collegamenti crittografici tra ciascun blocco (tramite la crittografia), creando effettivamente una blockchain.
L’hash è la colla che tiene insieme i blocchi. L’hashing serve infatti per collegare e condensare gruppi di transazioni in blocchi, oltre che per produrre collegamenti crittografici tra ciascun blocco, creando effettivamente una blockchain.
Quando sono combinati con la crittografia, gli algoritmi di hashing possono essere molto versatili, offrendo sicurezza e autenticazione in diversi modi. In un certo senso, l’hash è ciò che conferisce un’identità unica a ogni blocco. Se immaginiamo un blocco come un pezzo di un puzzle, l’hash è ciò che ne definisce la forma, in modo che si possa agganciare solo al blocco cronologicamente precedente e successivo.
Sicurezza e immutabilità della blockchain: la funzione di hash
Tutti i blocchi all’interno della blockchain sono collegati tra loro, la manomissione di un singolo blocco richiede la manomissione di tutti i suoi blocchi collegati. Non solo questo è difficile, ma ci sono altre protezioni che la blockchain offre. Le chiavi private sono un’altra misura di sicurezza per garantire che i beni digitali non vengano rubati indebitamente. Per attaccare con successo una blockchain, almeno il 51% della rete dovrebbe essere controllato da un malintenzionato allo stesso tempo. Poiché questo è quasi impossibile, la blockchain è molto più sicura dei sistemi di pagamento esistenti.
Per capirne la meccanica, proviamo a disegnare su un foglio due colonne. Ogni casella della prima colonna rappresenta un blocco e i dati delle transazioni in esso salvati. La seconda colonna contiene l’hash corrispondente di ogni blocco.
Quando il blocco 0 ha esaurito il suo spazio di archiviazione delle transazioni, i dati salvati vengono convertiti in un identificatore di due lettere – AA – che verrà utilizzato come parte dell’input successivo. Allo stesso modo con il blocco 1, che convertirà i dati nell’hash YQ.
Se ad esempio qualcuno tentasse di cancellare una transazione registrata nel blocco 1, la modifica cambierebbe la combinazione delle lettere del blocco, quindi l’hash e infine a catena tutti i blocchi successivi e precedenti. Anche se volessimo modificare l’ultimo blocco, si incorrerebbe in un’operazione pressoché impossibile. Secondo la meccanica che abbiamo appena visto, l’hash OL è il prodotto di tutte le combinazioni precedenti. Cambiarlo significherebbe alterare visibilmente tutta la blockchain.
L’identificatore a due lettere della seconda colonna è una semplificazione per mostrare come funziona un hash. Vediamo ora che cos’è in modo più specifico.
La funzione di hash: che cos’è
L’hashing consiste propriamente nel prendere i dati del blocco (input), passarli attraverso una funzione matematica e trasformarli in un hash (output) che abbia sempre la stessa lunghezza. Al variare di un minimo dettaglio nell’input, varia immediatamente l’output. Il fatto che non si possa ottenere mai lo stesso output da due input diversi (non c’è quindi collisione) è un forte elemento di sicurezza, il motivo per cui se si tenta di manomettere un blocco, si genera inavvertitamente una modifica in tutta la blockchain.
Nella blockchain, la funzione di hash viene applicata anche a ciascuna transazione registrata. All’interno di un blocco ogni transazione genera un hash che contiene anche l’hash della transazione precedente.
Inoltre, la funzione di hash è progettata per essere unidirezionale (one-way), ovvero una funzione difficile da invertire: l’unico modo per ricreare i dati di input dall’output di una funzione di hash è andare per tentativi, cercando di associare tutte le possibili combinazioni. Si parla di miliardi e miliardi di tentativi, praticamente irrisolvibili anche dal computer con la più avanzata e potente capacità di calcolo.
Ecco perché si dice che una volta registrata, una transazione su blockchain non può essere modificata o cancellata. Le transazioni sono quindi irreversibili, ciò significa che, anche nell’improbabile eventualità che un network venga hackerato con successo, le transazioni esistenti non possono mai essere annullate.
Questa abilità della blockchain di prevenire l’alterazione delle transazioni già confermate fa sì che venga definita immutabile. Come vedremo, l’immutabilità, combinata con gli algoritmi di consenso, fornisce la struttura per la sicurezza dei dati del network blockchain. Semplificando, mentre gli algoritmi di consenso fanno in modo che le regole del sistema vengano rispettate, l’immutabilità garantisce l’integrità dei dati.
Ricapitolando: l’innovazione della blockchain
Quelle che abbiamo visto sono solo le prime caratteristiche per comprendere cosa sono la crittografia e la funzione di hash. Queste rendono la blockchain sicura e diversa rispetto ai tradizionali metodi di archiviazione. Possiamo immaginare quale rivoluzione abbia portato Satoshi Nakamoto quando l’ha impiegata per realizzare un sistema di pagamento con Bitcoin.
A differenza dei pagamenti che effettuiamo quotidianamente, i pagamenti su blockchain non sono gestiti da un’autorità centrale come una banca o un governo. Per effettuare un pagamento su blockchain, infatti, non è necessario avere un conto bancario, né vivere in un paese libero e democratico o fornire alcun tipo di garanzia. Chiunque abbia una connessione a internet può utilizzare la blockchain per effettuare dei pagamenti in criptovaluta.