Blockchain e fiducia
Articolo originale: Blockchain and Trust
Nel suo libro bianco del 2008 che propose per la prima volta il bitcoin, l'anonimo Satoshi Nakamoto concludeva con: "Abbiamo proposto un sistema per transazioni elettroniche che non si appoggia sulla fiducia". Si riferiva alla blockchain, il sistema che sta dietro alla criptovaluta bitcoin. Eludere la fiducia è una grande promessa, ma non è vera. D'accordo, il bitcoin elimina alcuni intermediari fidati che sono insiti in altri sistemi di pagamento come le carte di credito. Ma bisogna comunque fidarsi del bitcoin e di tutto ciò che lo riguarda.
Si è scritto molto sulle blockchain e su come esse sostituiscano, rimodellino o eliminino la fiducia. Ma quando si analizzano sia la blockchain che la fiducia, ci si rende subito conto che c'è molto fumo e niente arrosto. Le soluzioni blockchain sono spesso molto peggiori di quelle che sostituiscono.
Prima di tutto, un'avvertenza. Con "blockchain" intendo qualcosa di molto specifico: le strutture dati e i protocolli che compongono una blockchain pubblica. Questi hanno tre elementi essenziali. Il primo è un ledger o libro mastro distribuito (ovvero, di cui esistono più copie) ma centralizzato (ovvero, ce ne è uno solo), che è un modo per registrare ciò che è accaduto e in quale ordine. Questo ledger è pubblico (il che significa che chiunque può leggerlo) e immutabile (il che significa che nessuno può cambiare ciò che è accaduto in passato).
Il secondo elemento è l'algoritmo di consenso, che è un modo per garantire che tutte le copie del ledger siano uguali. Questo è generalmente chiamato mining; una parte fondamentale del sistema è che chiunque può partecipare. È anche distribuito, il che significa che non è necessario fidarsi di un particolare nodo della rete di consenso. Può anche essere estremamente costoso, sia per l'archiviazione dei dati che per l'energia necessaria a mantenerlo. Il bitcoin ha l'algoritmo di consenso di gran lunga più costoso mai visto al mondo.
Infine, il terzo elemento è la valuta. Questa è una sorta di gettone digitale che ha un valore e viene scambiato pubblicamente. La valuta è un elemento necessario di una blockchain per allineare gli incentivi di tutte le persone coinvolte. Le transazioni che riguardano questi gettoni sono memorizzate sul ledger.
Le blockchain private non sono per niente interessanti. (Con questo intendo i sistemi che utilizzano la struttura dati della blockchain ma non posseggono i tre elementi di cui sopra.) In generale, hanno qualche limitazione esterna su chi può interagire con la blockchain e le sue funzionalità. Non sono nulla di nuovo; sono strutture dati append-only distribuite, con una lista di individui autorizzati ad aggiungervi record. I protocolli di consenso sono stati studiati nei sistemi distribuiti per oltre 60 anni. In modo simile, le strutture dati append-only sono state ben approfondite. Sono blockchain solo di nome e, per quanto ne so, l'unica ragione per usarne una è quella di cavalcare l'onda della blockchain.
Tutti e tre gli elementi di una blockchain pubblica si integrano in un'unica rete che offre nuove proprietà di sicurezza. La domanda è: serve davvero a qualcosa? È tutta una questione di fiducia.
La fiducia è essenziale per la società. Come specie, gli umani sono predisposti a fidarsi gli uni degli altri. La società non può funzionare senza fiducia, e il fatto che per lo più non ci pensiamo nemmeno è una misura di come la fiducia funzioni bene.
La parola "fiducia" è carica di molti significati. C'è la fiducia personale e intima. Quando diciamo che ci fidiamo di un amico, vogliamo dire che ci fidiamo delle sue intenzioni e sappiamo che le sue azioni seguiranno da quelle intenzioni. C'è anche la fiducia meno intima e personale: possiamo non conoscere personalmente qualcuno, né le sue motivazioni, ma possiamo fidarci delle sue azioni future. La blockchain permette questo tipo di fiducia: non conosciamo nessun minatore di bitcoin, per esempio, ma ci fidiamo del fatto che seguirà il protocollo di mining e farà funzionare l'intero sistema.
La maggior parte degli appassionati di blockchain ha una definizione innaturalmente ristretta di fiducia. Amano frasi a effetto come "abbiamo fiducia nel codice", "abbiamo fiducia nella matematica" e "abbiamo fiducia nella crittografia". Questa è fiducia come verifica. Ma la verifica non è la stessa cosa della fiducia.
Nel 2012 ho scritto un libro sulla fiducia e sulla sicurezza, Liars and Outliers. In esso ho elencato quattro sistemi molto generali che la nostra specie usa per incentivare il comportamento degno di fiducia. I primi due sono morale e reputazione. Il problema è che sono scalabili solo fino a una certa dimensione della popolazione. I sistemi primitivi andavano bene per piccole comunità, ma comunità più grandi richiesero deleghe e più formalismo.
Il terzo sono le istituzioni. Le istituzioni hanno regole e leggi che inducono le persone a comportarsi secondo la norma del gruppo, imponendo sanzioni a coloro che non lo fanno. In un certo senso, le leggi formalizzano la reputazione. Infine, il quarto sono i sistemi di sicurezza. Si tratta dell'ampia varietà di tecnologie di sicurezza che impieghiamo: serrature delle porte e recinzioni alte, sistemi di allarme e guardiani, sistemi forensi e di audit, e così via.
Questi quattro elementi lavorano insieme per creare fiducia. Prendiamo ad esempio il settore bancario. Le istituzioni finanziarie, i commercianti e gli individui sono tutti preoccupati della loro reputazione, il che impedisce furti e frodi. Le leggi e i regolamenti che circondano ogni aspetto del settore bancario tengono tutti in riga, compresi i dispositivi di sicurezza che limitano i rischi in caso di frode. E ci sono un sacco di sistemi di sicurezza, dalle tecnologie anticontraffazione a quelle per la sicurezza su Internet.
Nel suo libro del 2018, Blockchain and the New Architecture of Trust, Kevin Werbach delinea quattro differenti "architetture di fiducia". La prima è la fiducia peer-to-peer. Questa corrisponde fondamentalmente ai miei sistemi morali e di reputazione: coppie di persone che arrivano a fidarsi l'una dell'altra. La seconda è la fiducia nel leviatano, che corrisponde alla fiducia istituzionale. Lo si può vedere in funzione nel nostro sistema di contratti, che permette a parti che non si fidano a vicenda di stipulare un accordo perché entrambe confidano che un sistema governativo aiuterà a risolvere le controversie. La terza è la fiducia negli intermediari. Un buon esempio è il sistema delle carte di credito, che permette ad acquirenti e venditori non fiduciosi di effettuare commerci. La quarta architettura di fiducia è la fiducia distribuita. Questa è la fiducia emergente nel particolare sistema di sicurezza che è la blockchain.
Ciò che fa la blockchain è di spostare parte della fiducia nelle persone e nelle istituzioni verso la fiducia nella tecnologia. Bisogna fidarsi della crittografia, dei protocolli, del software, dei computer e della rete. E bisogna fidarsi assolutamente di loro, perché sono spesso singoli punti di vulnerabilità.
Quando questa fiducia si rivela mal riposta, non c'è ricorso. Se la vostra piattaforma di exchange bitcoin viene piratata, perdete tutti i vostri soldi. Se il vostro portafoglio bitcoin viene piratato, perdete tutti i vostri soldi. Se dimenticate le vostre credenziali di accesso, perdete tutti i vostri soldi. Se c'è un bug nel codice del vostro smart contract, perdete tutti i vostri soldi. Se qualcuno riesce a violare la sicurezza della blockchain, perdete tutti i vostri soldi. Per molti versi, fidarsi della tecnologia è più difficile che fidarsi delle persone. Preferireste fidarvi di un sistema legale umano o dei dettagli di un pezzo di codice informatico che non avete le competenze per verificare?
Gli appassionati della blockchain indicano come costose delle forme di fiducia più tradizionali, per esempio le commissioni bancarie. Ma anche la fiducia nella blockchain è costosa; il costo è solo nascosto. Per il bitcoin, è il costo dei bitcoin aggiuntivi estratti, delle commissioni di transazione e dell'enorme danno ambientale causato dallo spreco di energia.
La blockchain non elimina la necessità di fidarsi delle istituzioni umane. Ci sarà sempre un grande divario che non può essere affrontato dalla sola tecnologia. Le persone devono ancora essere in posti di responsabilità, e c'è sempre bisogno di una governance esterna al sistema. Questo è evidente nel dibattito in corso riguardo alla modifica delle dimensioni dei blocchi di bitcoin, o alle contromisure all'attacco a The DAO contro Ethereum. C'è sempre bisogno di scavalcare le regole, e c'è sempre bisogno della capacità di apportare modifiche permanenti alle regole. Finché ci sarà la possibilità di effettuare hard fork - cioè quando le persone responsabili di una blockchain escono dal sistema per modificarlo - ci sarà bisogno di persone in posti di responsabilità.
Qualsiasi sistema blockchain dovrà coesistere con altri sistemi più convenzionali. Il sistema bancario moderno, ad esempio, è progettato per essere reversibile. Il bitcoin non lo è. Questo rende difficile la compatibilità tra i due, e il risultato è spesso un'insicurezza. Steve Wozniak è stato truffato di 70'000 dollari in bitcoin perché ha dimenticato questo.
La tecnologia blockchain è spesso centralizzata. Il bitcoin potrebbe teoricamente basarsi su una fiducia distribuita, ma in pratica non è così. Praticamente chiunque utilizzi bitcoin deve fidarsi di uno dei pochi portafogli disponibili e usare uno dei pochi exchange disponibili. La gente deve fidarsi del software e dei sistemi operativi e dei computer sui quali tutto viene eseguito. E abbiamo visto attacchi contro i portafogli e gli exchange. Abbiamo visto trojan e phishing e password indovinate. Dei criminali hanno perfino sfruttato le falle nel sistema che le persone usano per riparare i loro telefoni cellulari per rubare bitcoin.
Inoltre, in qualsiasi sistema di fiducia distribuito, ci sono metodi di backdoor che permettono alla centralizzazione di insinuarsi nuovamente. Nel caso del bitcoin, ci sono solo pochi minatori importanti. C'è un'azienda che fornisce la maggior parte dell'hardware per il mining. Ci sono solo pochi exchange dominanti. Nella misura in cui la maggior parte delle persone interagisce con il bitcoin, è attraverso questi sistemi centralizzati. Ciò permette anche attacchi contro i sistemi basati sulla blockchain.
Questi problemi non sono bug delle attuali applicazioni blockchain, ma sono insiti nel funzionamento della blockchain. Qualsiasi valutazione della sicurezza del sistema deve tenere conto dell'intero sistema sociale-tecnico. Troppi appassionati di blockchain si concentrano sulla tecnologia e ignorano il resto.
Nella misura in cui le persone non usano il bitcoin, è perché non si fidano del bitcoin. Questo non ha nulla a che fare con la crittografia o i protocolli. In effetti, un sistema in cui potete perdere i risparmi di una vita se dimenticate la vostra chiave o se scaricate un malware non è particolarmente degno di fiducia. E questo non cambierà, per quanto a lungo si possa spiegare il funzionamento di SHA-256 che evita la doppia spesa.
Allo stesso modo, nella misura in cui le persone utilizzano le blockchain, è perché si fidano di loro. Le persone possiedono o non possiedono bitcoin in base alla reputazione; questo è vero anche per speculatori che possiedono bitcoin semplicemente perché pensano che li renderà ricchi rapidamente. Le persone scelgono un portafoglio per le loro criptovalute, e un exchange per le loro transazioni, in base alla reputazione. Addirittura, valutiamo e ci fidiamo della crittografia che sta alla base delle blockchain in base alla reputazione degli algoritmi.
Per capire come questo possa fallire, guardate i vari sistemi di sicurezza delle catene di approvvigionamento che usano la blockchain. La blockchain non è una caratteristica necessaria per nessuno di essi. Il motivo del loro successo è che tutti hanno un'unica piattaforma software in cui inserire i propri dati. Anche se i sistemi blockchain sono costruiti sulla fiducia distribuita, le persone non accettano necessariamente questo. Ad esempio, alcune aziende non si fidano del sistema IBM/Maersk perché non è la loro blockchain.
Irrazionale? Forse, ma è così che funziona la fiducia. Non può essere sostituita da algoritmi e protocolli. È molto più sociale di così.
Tuttavia, l'idea che le blockchain possano in qualche modo eliminare la necessità della fiducia persiste. Di recente ho ricevuto una email da un'azienda che ha implementato un sistema di messaggistica sicuro utilizzando la blockchain. Diceva, in parte: "L'utilizzo della blockchain, come abbiamo fatto noi, ha eliminato la necessità della Fiducia". Questo sentimento fa pensare che l'autore fraintenda sia cosa faccia la blockchain che come funzioni la fiducia.
Avete bisogno di una blockchain pubblica? La risposta è quasi certamente no. Una blockchain probabilmente non risolve i problemi di sicurezza che voi pensate risolva. I problemi di sicurezza che risolve non sono probabilmente quelli che avete voi. (Probabilmente, il vostro maggior rischio per la sicurezza non è che qualcuno manipoli i dati di audit.) Una falsa fiducia nella blockchain può essere essa stessa un rischio per la sicurezza. Le inefficienze, soprattutto nella scalabilità, probabilmente non valgono la pena. Ho esaminato molte applicazioni blockchain, e tutte quante potrebbero ottenere le stesse proprietà di sicurezza senza utilizzare una blockchain; poi però, ovviamente, non avrebbero quel bel nome figo.
Francamente, le criptovalute sono inutili. Sono utilizzate solo da speculatori che cercano di diventare ricchi in fretta, da persone che non amano le valute gestite dai governi, e da criminali che vogliono un mercato nero per scambiare denaro.
Per rispondere alla domanda se la blockchain sia necessaria, chiedetevi: la blockchain cambia il sistema della fiducia in modo significativo, o si limita a spostarlo? Cerca solo di sostituire la fiducia con la verifica? Rafforza le relazioni di fiducia esistenti, o va loro contro? In che modo si può abusare della fiducia nel nuovo sistema, ed è questo meglio o peggio dei potenziali abusi nel vecchio sistema? E infine: come sarebbe il vostro sistema se non utilizzaste affatto la blockchain?
Se vi ponete queste domande, è probabile che sceglierete soluzioni che non utilizzano la blockchain pubblica. E questo sarà un bene, soprattutto quando il clamore si dissiperà.
Questo saggio è stato pubblicato in precedenza su Wired.com.
Aggiunta (11/2/2019): Due commenti al mio saggio.
È oltre un anno che desideravo scrivere questo saggio. L'impulso a farlo è finalmente venuto da un invito a parlare all'Hyperledger Global Forum di dicembre. Questo saggio è una versione del discorso che ho scritto per quell'evento, reso più accessibile a un pubblico generale.
Sembra che questa sia la stagione delle demolizioni di blockchain. James Waldo ha un eccellente saggio su Queue. E Nicholas Weaver ha tenuto un discorso alla Enigma Conference, riassunto qui. Si tratta di una versione ridotta di questo discorso.
Aggiunta (17/2/2019): Discussione su Reddit.