🔑 Crittografia

Blockchain spiegata dal punto di vista crittografico

Hash concatenati, alberi di Merkle, firme digitali e proof of work: gli ingredienti crittografici di una blockchain e perché i dati non sono cifrati.

Le blockchain vengono spesso descritte come "registri crittografati". È un'espressione fuorviante: in una blockchain pubblica come quella di Bitcoin quasi nulla è cifrato, e chiunque può leggere ogni transazione. La crittografia c'è, ed è essenziale, ma svolge un ruolo diverso: non nasconde i dati, li rende verificabili e difficili da alterare. Vediamo gli ingredienti uno per uno.

Ingrediente 1: la catena di hash

Una blockchain è una sequenza di blocchi. Ogni blocco contiene un insieme di transazioni e, nella sua intestazione, l'hash del blocco precedente.

Questo semplice accorgimento ha una conseguenza potente. Se qualcuno modificasse una transazione in un blocco vecchio:

  1. cambierebbe l'hash di quel blocco;
  2. il blocco successivo, che conteneva il vecchio hash, non sarebbe più coerente;
  3. per rimediare bisognerebbe ricalcolare quel blocco, e poi tutti quelli venuti dopo.

La catena di hash rende quindi qualsiasi modifica evidente. Da sola, però, non la rende impossibile: ricalcolare tutti i blocchi successivi richiede solo potenza di calcolo. Qui interviene il meccanismo di consenso.

Ingrediente 2: l'albero di Merkle

Un blocco può contenere migliaia di transazioni. Invece di calcolarne un unico hash complessivo, le transazioni vengono organizzate in un albero di Merkle:

  • si calcola l'hash di ogni transazione;
  • si combinano gli hash a coppie e si calcola l'hash di ogni coppia;
  • si ripete fino a ottenere un unico valore, la radice di Merkle, che finisce nell'intestazione del blocco.

Il vantaggio è che per dimostrare che una certa transazione fa parte del blocco basta fornire una manciata di hash lungo il percorso verso la radice, non l'intero blocco. È ciò che permette ai portafogli leggeri, per esempio sugli smartphone, di verificare i pagamenti senza scaricare tutta la blockchain.

Ingrediente 3: la proof of work

Nella blockchain di Bitcoin, per aggiungere un blocco bisogna trovare un valore, chiamato nonce, tale che l'hash dell'intestazione del blocco sia inferiore a una soglia molto bassa. Poiché le funzioni hash sono imprevedibili, l'unico modo è provare miliardi di valori finché uno non funziona. Questo lavoro è la proof of work.

La verifica, al contrario, è immediata: basta calcolare un solo hash. Questa asimmetria tra fatica di produzione e facilità di verifica è il cuore del sistema. Riscrivere la storia significherebbe rifare il lavoro di tutti i blocchi successivi più velocemente del resto della rete, il che richiederebbe una potenza di calcolo superiore a quella di tutti gli altri partecipanti messi insieme.

Altre blockchain usano meccanismi diversi, come la proof of stake, in cui la scelta di chi aggiunge i blocchi dipende dalle quantità di valuta vincolate e il comportamento scorretto viene punito. Anche lì, firme digitali e hash restano i mattoni fondamentali.

Ingrediente 4: chiavi e firme digitali

Nelle criptovalute non esistono conti intestati a nomi. La proprietà si basa sulla crittografia a chiave pubblica:

  • la chiave privata è un numero segreto generato dal portafoglio;
  • da essa si ricava la chiave pubblica, e da questa, tramite funzioni hash, l'indirizzo che si comunica per ricevere pagamenti;
  • per spendere, si firma la transazione con la chiave privata; tutti i nodi della rete verificano la firma con la chiave pubblica.

Bitcoin usa firme a curve ellittiche sulla curva secp256k1, con ECDSA e, dopo un aggiornamento del protocollo, anche firme Schnorr.

Ne consegue una regola che non ammette eccezioni: chi possiede la chiave privata controlla i fondi. Non c'è un servizio clienti che possa annullare una transazione o recuperare una chiave persa.

La frase di recupero

Molti portafogli rappresentano il segreto da cui derivano tutte le chiavi con una frase di recupero di 12 o 24 parole. Chi la conosce può ricostruire l'intero portafoglio su qualsiasi dispositivo. Va quindi custodita offline, mai fotografata, mai inserita in un sito web che la richiede: nessun servizio legittimo ha bisogno di conoscerla.

Cosa la blockchain non fa

  • Non cifra i dati: in una blockchain pubblica le transazioni, gli importi e gli indirizzi sono visibili a tutti.
  • Non garantisce l'anonimato: gli indirizzi sono pseudonimi, ma l'analisi dei flussi di transazioni e il collegamento con piattaforme di scambio che identificano i clienti possono ricondurli a persone reali.
  • Non rende vera un'informazione: garantisce che un dato non sia stato modificato dopo l'inserimento, non che fosse corretto in partenza.

Esistono blockchain e tecniche orientate alla riservatezza, come le prove a conoscenza zero, che permettono di dimostrare la validità di una transazione senza rivelarne i dettagli. Sono però un'aggiunta specifica, non una caratteristica di base.

In sintesi

  • Una blockchain usa la crittografia per rendere i dati verificabili e difficili da alterare, non per nasconderli.
  • Ogni blocco contiene l'hash del precedente; gli alberi di Merkle riassumono le transazioni in un solo valore.
  • La proof of work rende costoso aggiungere blocchi e facile verificarli.
  • La proprietà dei fondi coincide con il possesso della chiave privata, che firma le transazioni.
  • Le transazioni nelle blockchain pubbliche sono visibili e solo pseudonime.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche