Blockchains: cosa sono e perché sono sicure

È ormai una decina di anni che si sente parlare di blockchains, ma in pochi hanno chiaro che cosa sono e soprattutto come funzionano.

Il termine significa letteralmente “catena di blocchi” e si può proprio immaginare come tale. Ora, la prima domanda che sorge è: “Blocchi di cosa?”
Si tratta di informazioni immagazzinate in blocchi dalle dimensioni di 830.000 bytes. I dati così raccolti possono riguardare qualsiasi ambito, dalla sicurezza alla filiera alimentare, dalla medicina alle opere d’arte, ma il settore in cui le blockchains sono più sviluppate, nonché quello con cui sono nate, è quello delle cryptovalute.   

La seconda domanda che sorge riguarda invece la parola chains: “Come sono collegati questi blocchi?”
Essi sono uniti uno all’altro attraverso una funzione particolare chiamata hash: ogni blocco è identificato da una funzione hash e contiene un pezzo della funzione del blocco precedente, salvo il primo che infatti è chiamato “genesi”.       
La chiave per comprendere il funzionamento di questa tecnologia è proprio lo studio di questa particolare funzione, che si può immaginare come una sorta di impronta digitale del blocco, che lo identifica in maniera univoca.     
Esistono diverse hash function, tutte accomunate da quattro caratteristiche, che le rendono particolarmente sicure e stabili:

  • la lunghezza dell’output è costante, per cui, dati input di diversa lunghezza, il risultato alfanumerico della funzione ha la stessa dimensione. Nella Figura 1 si nota come “The Password” e “Blockchains2020”, input di lunghezza differente, abbiano un output della stessa lunghezza costante;
Figura 1: MD5 in Python
  • input diversi generano sempre output diversi: nella Figura 2 si nota come, semplicemente eliminando lo spazio tra “The” e “Password”, i risultati della prima e della seconda versione sono completamente diversi, proprietà chiamata “resistenza alla collisione” (sebbene nella pratica sia provato che per alcune hash functions, come nell’esempio MD5, questa proprietà non sia garantita sempre, ma con alta probabilità);
Figura 2: MD5 in Python
  • al contrario, lo stesso input inserito n volte genera n volte lo stesso output, come si nota nella Figura 3;
Figura 3: MD5 in Python
  • non esiste la funzione inversa, vale a dire che dall’input si può sempre risalire all’output, ma non si può mai fare il contrario, quindi trovare una funzione che dall’output ricalcola l’input iniziale.

Infine, una terza domanda che è lecito porsi è: “Come è garantita la sicurezza?”       
Le quattro caratteristiche della funzione hash garantiscono la sicurezza delle blockchains: se anche solo un’informazione all’interno di un blocco varia, allora varia il risultato della funzione e non sarà più compatibile con il blocco successivo, che quindi si “staccherà” determinando la rottura della catena.
Tuttavia, questo non è ancora sufficiente: al giorno d’oggi i risultati si ottengono rapidamente ed è quindi possibile il ricalcolo dell’intera catena. Per questo motivo si utilizza una cosiddetta “proof-of-work”, un meccanismo che rallenta la creazione di nuovi blocchi (nel caso di Bitcoins di 10 minuti) e che quindi renderebbe troppo lungo il ricalcolo.          
Infine, possiamo vedere la decentralizzazione come garante della sicurezza (risoluzione del problema dei generali bizantini): il sistema blockchains è un sistema peer to peer, in cui nessuno è superiore e tutti possono accedere all’intera copia delle catene. Si può vedere ogni individuo come un nodo di una rete senza centro, che collega tutto il mondo: ogni volta che un nuovo blocco è creato, questo è inviato a tutti i partecipanti, i quali devono verificarne la compatibilità con la catena, che procede solo se tutti i blocchi sono stati verificati con successo. Questo significa che per manomettere la catena è necessario manomettere tutte le copie del blocco, altrimenti la copia diversa è rifiutata e il blocco non viene aggiunto.

Simona Ferrero

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...