Home
Come funziona Bitcoin e quali sono le sue debolezze

02 Giugno 2020

Come funziona Bitcoin e quali sono le sue debolezze

di

Le basi della controversa moneta elettronica e anche qualche rischio per la sua stabilità nel tempo.

Dato che la valuta elettronica si basa su una prova crittografica, senza richiedere una terza figura intermedia, il denaro è al sicuro e le transazioni assolutamente semplici.
– Satoshi Nakamoto, inventore di Bitcoin

Il database su cui si basano le transazioni Bitcoin si chiama blockchain. La sua struttura, una sorta di libro mastro condiviso, gli consente di funzionare senza contare su alcuna autorità centrale fidata. Comprendere come funziona è fondamentale per poter integrare Bitcoin con qualsiasi sistema informativo.

La genesi

15 settembre 2008 – un momento topico per il mondo finanziario: Lehman Brothers, all’epoca la quarta più grande banca di investimenti, è andata in bancarotta dopo un tracollo nel valore delle sue azioni e dei suoi beni. Il suo collasso ha segnato l’inizio della Grande crisi finanziaria del 2008.

All’inizio del 2009 uno sviluppatore anonimo, o forse un gruppo di sviluppatori, di nome Satoshi Nakamoto, lancia una nuova valuta virtuale basato su un libro mastro delle transazioni ad accesso pubblico, distribuito e convalidato da una rete di nodi indipendenti. Questo misterioso sviluppatore ha lanciato Bitcoin all’inizio del 2009. Il primo blocco di transazioni è stato appunto chiamato blocco genesi (genesis block).

Che cos’è la blockchain

Il libro mastro pubblico che registra ogni transazione Bitcoin si basa su una struttura dati chiamata blockchain. Le transazioni vengono raggruppate in blocchi e poi condivise e convalidate da una rete di nodi. È il consenso sulla rete a determinare quali blocchi vengono accettati.

Chiavi, transazioni e blocchi

Con il classico esempio dell’invio di denaro fra Alice e Bob, illustreremo il meccanismo in base al quale la rete Bitcoin conferma una transazione.

Creazione di una transazione

Alice vuole inviare 4,0 BTC a Bob. Alice ha un portafoglio Bitcoin con due indirizzi e le corrispondenti chiavi private che controllano i due saldi: 1,2 BTC e 2,8 BTC. Per ricevere il denaro, Bob genererà una chiave privata con un indirizzo Bitcoin.

Alice vuole inviare 4,0 BTC a Bob

Alice ha un portafoglio con due indirizzi. Bob ha un portafoglio con un indirizzo. Alice vuole inviare 4,0 BTC a Bob.

Per trasferire i bitcoin dobbiamo creare una transazione valida e trasmetterla in broadcast alla rete Bitcoin, che ne fornirà conferma. Se la transazione viene confermata dalla rete, attraverso operazioni di input e output l’importo trasferito sarà disponibile al destinatario, che potrà spenderlo.

Ogni input deve far riferimento esattamente a un output di una transazione precedente. Pertanto, nella blockchain, i bitcoin vengono inviati tramite script che scambiano il denaro fra gli indirizzi. Dato che ciascun indirizzo è controllato da una chiave privata, il denaro viene scambiato fra i possessori delle chiavi private. I trasferimenti di bitcoin, in realtà, avvengono facendo corrispondere gli input e gli output delle transazioni precedenti. Pertanto, per convalidare un trasferimento, è necessario conservare l’intera cronologia di tutte le transazioni che finanziano la transazione.

La prossima figura illustra il modo in cui le transazioni vengono utilizzate per connettere gli input e gli output per il trasferimento di importi in bitcoin. Alice invierà 4,0 BTC a Bob, combinando come input due indirizzi in suo possesso. Scritti nella transazione, gli importi di 1,2 BTC e 2,8 BTC vengono elencati come input da Alice e inviati come output a Bob, per un importo totale di 4,0 BTC.

Una transazione Bitcoin che impiega due input e un output

Una transazione Bitcoin che impiega due input e un output.

Ma prima di poter trasmettere in broadcasting la transazione, dobbiamo dimostrare alla rete che Alice sia il mittente originale della transazione. Dimostrando alla rete che abbiamo le chiavi private, i nodi che convalidano questa transazione possono concordare sul fatto che essa, in effetti, ha avuto origine da Alice.

A ogni indirizzo pubblico elencato nel portafoglio di Alice, corrisponde una chiave privata. Con le proprie chiavi private, Alice può firmare la transazione utilizzando una firma digitale. Una verifica sulla firma dimostra che Alice ha firmato la transazione e che da allora la sua firma non è stata alterata.

Dopo che la transazione è stata confermata dalla rete, Bob avrà a disposizione 4,0 BTC, da spendere come input per una nuova transazione. La catena continua.

Firme digitali

Un classico problema risolto dalla crittografia è il modo in cui una parte può inviare un documento a un’altra parte dimostrando che tale documento non sia stato alterato in alcun modo o addirittura sostituito. Supponiamo che Alice abbia un messaggio da inviare a Bob. Il quale vuole assicurarsi che non sia stato modificato.

Bob richiede una prova che il documento abbia avuto origine da Alice

Bob richiede una prova che il documento abbia avuto origine da Alice.

Alice ha quindi bisogno di un modo per firmare in modo digitale il documento, così da dimostrare che quella ricevuta da Bob sia una copia esatta del documento originale.

Le firme digitali contano su un insieme di chiavi pubbliche e private. L’apposizione della firma digitale su un documento impiegando una chiave privata può essere verificata impiegando la relativa chiave pubblica. Ogni documento firmato, se è verificato dalla chiave pubblica si ritiene che sia originale.

La crittografia a chiave pubblica

La crittografia a chiave pubblica è un algoritmo crittografico che impiega due chiavi, generate matematicamente, per crittografare e decrittografare un messaggio o per firmare in modo digitale un documento. La chiave privata serve per crittografare o firmare il documento, mentre la chiave pubblica serve per decrittografare il messaggio o per verificare la firma.

Gli algoritmi a chiave asimmetrica generano una chiave pubblica e una chiave privata basandosi su un grosso numero casuale

Gli algoritmi a chiave asimmetrica generano una chiave pubblica e una chiave privata basandosi su un grosso numero casuale.

Le chiavi pubblica e privata sono costituite semplicemente da lunghi numeri. Ecco un esempio di chiave privata:

3082011302010104209ea335d666d9e097c5a5e92ef32228a18c3615aa38e13fb593712a11f039c148a081a53081a2020101302c06072a8648ce3d0101022100fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f300604010004010704410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8022100fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141020101a14403420004a6b634eb85a8d9d6fe34bc6666760b3343c40f7709392541bc2d3b7666eda4d7c7c8dd578af2790870a591c0f17e285ce99cb2dd950b37b00f1031675bb678d6

La chiave pubblica corrispondente ha il seguente aspetto:

04a6b634eb85a8d9d6fe34bc6666760b3343c40f7709392541bc2d3b7666eda4d7c7c8dd578af2790870a591c0f17e285ce99cb2dd950b37b00f1031675bb678d6

Queste due chiavi sono legate fra loro in modo matematico e non possono essere confuse con un’altra chiave.

Firma di un documento

Nell’esempio con Alice e Bob, utilizzando il software di crittografia, Alice crea una coppia di chiavi, pubblica e privata. Quindi invia a Bob una copia di questa chiave pubblica. Prima di inviare il documento a Bob, Alice lo firma con la propria chiave privata e include la firma nel documento.

Quando Bob riceve il documento, potrà verificare la firma apposta alla copia del documento. Se la firma è valida, Bob ha la garanzia che il firmatario sia stato proprio Alice.

Bob utilizza la chiave pubblica di Alice per verificare che il documento abbia effettivamente avuto origine da lei

Bob utilizza la chiave pubblica di Alice per verificare che il documento abbia effettivamente avuto origine da lei e non sia stato alterato nel frattempo.

Indirizzi Bitcoin

Gli indirizzi Bitcoin vengono generati a partire dalla chiave pubblica tramite alcuni passi che comprendono degli hash crittografici.

Hash crittografici

Gli hash sono funzioni che possono produrre un digest di un documento. Normalmente il digest è costituito da una breve stringa di caratteri, a seconda dell’algoritmo hash impiegato. Per esempio, un noto algoritmo hash, chiamato SHA256, produce un codice digest di 40 caratteri a partire da un documento di qualsiasi lunghezza.

Gli hash crittografici generano un digest a partire da un documento

Gli hash crittografici generano un digest a partire da un documento, il quale rappresenta il documento nel suo stato originario.

Ogni pur minimo intervento sul documento produrrà un digest completamente differente. Esiste una precisa relazione matematica fra il documento e il suo digest, ma è impossibile generare il documento a partire dal digest. Se il digest di una copia è uguale a quello dell’originale, la copia è autentica.

Confrontando i digest possiamo rilevare se il documento è stato alterato

Confrontando i digest possiamo rilevare se il documento è stato alterato.

In Bitcoin, a ogni transazione viene applicata una firma digitale, che viene poi impiegata per verificare che essa sia stata creata dal possessore della chiave privata. L’indirizzo Bitcoin utilizzato per inviare il denaro viene creato utilizzando algoritmi hash completamente differenti. La firma e l’indirizzo Bitcoin vengono entrambi inclusi nella transazione. Se la firma si rivela valida, il trasferimento di denaro viene confermato dalla rete.

Generazione di un indirizzo Bitcoin

Gli indirizzi Bitcoin vengono generati a partire dall’hash della chiave pubblica di una coppia di chiavi crittografiche. Il risultato è un indirizzo pubblico che possiamo utilizzare per ricevere i bitcoin e la chiave privata necessaria per spenderli.

Il processo di generazione di un indirizzo Bitcoin a partire da una chiave pubblica

Il processo di generazione di un indirizzo Bitcoin a partire da una chiave pubblica.

La rete decentralizzata

Bitcoin è un protocollo per valute che si basa su una rete decentralizzata. Ogni nodo è indipendente e può unirsi alla rete o lasciarla in qualsiasi momento. Una rete decentralizzata è estremamente resistente, in quanto non offre alcun punto di fallimento. Se uno o più nodi dovessero disattivarsi, i nodi superstiti potrebbero reindirizzare la connessione attraverso la rete, impiegando altri nodi online.

Le reti decentralizzate non hanno alcun punto di fallimento privilegiato

Le reti decentralizzate non hanno alcun punto di fallimento privilegiato.

Bitcoin è sostanzialmente denaro programmabile.

Attacchi alla rete

La rete Bitcoin è protetta dal suo stesso consenso, ma esistono comunque rischi per la sua stabilità, connessi alla sua struttura.

L’attacco del 51 percento

È teoricamente possibile che una grossa potenza di calcolo assuma il controllo della rete e accetti doppie spese o blocchi spese legittime. Questo è l’attacco del 51 percento.

È successo che si verificassero le condizioni per l’attacco, che però non è stato effettuato. Alcuni lo ritengono finanziariamente svantaggioso, in quanto la rete rifiuterebbe immediatamente i blocchi contraffatti.

L’attacco race

Un acquirente fraudolento potrebbe tentare di effettuare una doppia spesa inviando contemporaneamente due transazioni alla rete. Se ciascun rivenditore dovesse accettare la transazione senza conferme, in questo modo sarebbe possibile effettuare una doppia spesa.

L’antidoto ovvio a questo attacco consiste nell’attendere, semplicemente la conferma di entrambe le transazioni.

L’attacco Finney

L’attacco Finney deriva dall’omonimo sviluppatore Bitcoin. In questo attacco, un miner deve eseguire il pre-mining di una transazione in un nuovo blocco ed effettuare la spesa prima di rilasciare il blocco. Se il pagamento viene confermato, il nuovo blocco includerà una transazione a doppia spesa. La soluzione consiste nell’attendere almeno sei conferme.

Riepilogo

La blockchain si sta rapidamente imponendo come una tecnologia molto efficace per registrare il trasferimento del denaro. Grazie alla sua struttura decentralizzata, risulta estremamente resistente e completamente trasparente. Continuerà a rappresentare una forza potente nel mondo finanziario e si svilupperà nel corso del tempo.

Questo articolo richiama contenuti dal capitolo 4 di Bitcoin.

Immagine di apertura di Harrison Kugler su Unsplash.

L'autore

  • Richard Caetano
    Richard Caetano è un imprenditore e uno sviluppatore software che ha accumulato esperienze in vari ambiti, da sistemi SCADA per l'agricoltura a servizi di sicurezza informatica di alto livello, senza dimenticare il mondo della musica digitale e il mercato dei videogame per dispositivi mobili. Nel 2011 ha scoperto la tecnologia Bitcoin e dopo averne compreso il potenziale ne è diventato un evangelista entusiasta. Nel 2015 ha fondato Stratumn, azienda mirata alla consulenza e allo sviluppo di applicazioni commerciali che utilizzano il modello Blockchain e le valute bitcoin.

Iscriviti alla newsletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.

Libri che potrebbero interessarti

Tutti i libri

Bitcoin

Guida all'uso delle criptovalute e della tecnologia Blockchain

34,00

48,99€ -31%

27,55

29,00€ -5%

19,99

di Richard Caetano

Investire in Bitcoin

Piccolo manuale per divertirsi e guadagnare in sicurezza con le criptovalute

23,15

32,89€ -30%

18,91

19,90€ -5%

12,99

di Paolo Poli

Il lato oscuro della Rete

Alla scoperta del Deep Web e del Bitcoin

14,65

19,89€ -26%

12,26

12,90€ -5%

6,99

di Riccardo Meggiato


Articoli che potrebbero interessarti

Tutti gli articoli