Mettere in sicurezza Quantum Bitcoin non è poi così difficile
12 minuti di lettura
Alla luce della recente notizia di ricercatori cinesi che affermano di aver compiuto progressi significativi nella violazione di alcuni tipi di crittografia e dell’annuncio di Google di ulteriori progressi sui chip quantistici, riteniamo opportuno sottolineare ancora una volta alcuni principi di Bitcoin e il loro rapporto con la minaccia rappresentata dai computer quantistici.
Iniziamo ricordando che qualunque minaccia concreta a Bitcoin da parte della computazione quantistica è ancora molto lontana; tuttavia, riteniamo che molte persone troveranno l’argomento interessante. In questo articolo spiegheremo, in termini semplici, in che modo Bitcoin utilizza la crittografia e in che misura i computer quantistici ne minacciano i componenti.
Procederemo poi illustrando, nel modo più semplice possibile, quali contromisure possiamo adottare e quale processo sarebbe necessario per intraprenderle. Per chi non procederà nella lettura, il riassunto è che la minaccia attualmente conosciuta può essere affrontata abbastanza facilmente, e tutto ciò che servirebbe è un soft fork.
Nel resto dell’articolo cercheremo di spiegarne il motivo in termini chiari e semplici, tenendo conto della natura complessa della questione.
Bitcoin utilizza due Classi di strumenti crittografici
La maggior parte delle persone sa che Bitcoin si avvale della crittografia per scopi di sicurezza, ma poche sanno davvero in che modo. Ciò non è poi così sorprendente, dato che la crittografia sembra incomprensibilmente difficile per la maggior parte delle persone. In realtà, i principi della crittografia sono piuttosto semplici: si basa in gran parte su determinate funzioni che sono facili da calcolare in una direzione, ma non nell’altra. Queste sono definite funzioni trapdoor o funzioni botola.
Bitcoin utilizza due diversi tipi di funzioni trapdoor per svolgere compiti piuttosto diversi. In primo luogo si avvale della ben nota classe di coppie di chiavi crittografiche, composta da una chiave privata e una chiave pubblica. In secondo luogo utilizza la classe meno nota di funzioni hash.
Vediamo brevemente a che cosa servono.
Le coppie di chiavi crittografiche sono utilizzate per inviare e ricevere transazioni
Alla base del modello di sicurezza di Bitcoin si trova l’utilizzo di coppie di chiavi crittografiche per le transazioni. In breve, le transazioni possono essere viste come inviate a una chiave pubblica e inviate da una chiave privata. In maniera più completa, lo script di sblocco di un cosiddetto Unspent Transaction Output (UTXO) è bloccato da una chiave pubblica e viene sbloccato da una firma digitale prodotta dalla corrispondente chiave privata.
Bitcoin utilizza attualmente due algoritmi di firma, l’Elliptic Curve Digital Signature Algorithm (ECDSA) e l’algoritmo di Schnorr, basati entrambi sulla stessa struttura di chiave pubblica (moltiplicazione della curva ellittica sulla curva secp256k1). Questo metodo è esposto ai computer quantistici che utilizzano l’algoritmo di Shor, il che potrebbe mettere a rischio le monete inviate a entrambi questi tipi di indirizzi.
Le funzioni hash sono utilizzate per il troncamento e la convalida, il regolamento e l’offuscamento degli indirizzi
Le funzioni hash, l’altra classe principale di strumenti crittografici, hanno diverse funzioni. È bene sottolineare, però, che le funzioni hash non sono utilizzate per autorizzare le transazioni. Bitcoin utilizza due funzioni hash, SHA-256 e RIPEMD-160, e la prima viene utilizzata per diversi scopi.
I tre compiti principali delle funzioni hash sono il troncamento e la convalida, il regolamento e l’offuscamento degli indirizzi. Sorvoleremo sul troncamento e la convalida perché sono irrilevanti per questa discussione.
Regolamento
Quando l’algoritmo SHA-256 viene utilizzato per il regolamento, è impiegato da una rete di miner per ottenere un ordine temporale decentralizzato delle transazioni. La frequenza di regolamento delle transazioni è determinata dall’adeguamento della difficoltà, per cui, indipendentemente dal numero di miner che partecipano al processo di regolamento, vengono aggiunti nuovi gruppi di transazioni (blocchi) in media ogni 10 minuti.
Poiché è noto che SHA-256 non può essere calcolato al contrario, ma solo indovinato, la rete può introdurre un certo grado di difficoltà nel trovare nuovi blocchi, in modo che il processo non possa avvenire più velocemente del previsto. In questo modo, la curva di emissione di Bitcoin è fissa nel tempo e non può essere accelerata o rallentata.
Questo processo comporta inoltre un costo elevato per i partecipanti, che funge da deterrente per i malintenzionati che vorrebbero annullare le transazioni effettuate o impedire ad altri di effettuarle. È importante sottolineare che nessun miner, nemmeno se controlla il 100% della rete di mining, può reindirizzare le transazioni di altre persone una volta avvenute – solo le proprie – poiché non può produrre firme digitali a partire dalle chiavi pubbliche degli altri.
Offuscamento dell’indirizzo
Un altro importante scopo delle funzioni hash è l’offuscamento degli indirizzi Bitcoin. Di fatto, inviare Bitcoin significa inviarli a una chiave pubblica. Tuttavia, è possibile inviare Bitcoin anche all’hash di una chiave pubblica. Questo tipo di transazione si chiama p2pkh o Pay to Public Key Hash. Ci riferiamo a p2pkh come un tipo di indirizzo Bitcoin. Altri tipi sono p2pk, ovvero Pay to Public Key, e p2sh, ovvero Pay to Script Hash.
È importante sottolineare che, quando i Bitcoin sono inviati all’hash di una chiave pubblica, la chiave pubblica non viene rivelata alla rete, ma solo una sua forma offuscata è visibile all’interno della rete. Ciò significa che un operatore malintenzionato di un computer quantistico che tenta di calcolare le chiavi private a partire da quelle pubbliche non ha nulla con cui lavorare e, quindi, non riuscirà nell’intento.
I computer quantistici Riducono la sicurezza della crittografia, ma non necessariamente la Eliminano
Nell’analizzare la vulnerabilità di Bitcoin alla computazione quantistica, dobbiamo chiarire alcuni aspetti: primo, cosa sono in grado di fare esattamente i computer quantistici; e secondo, quali effetti ciò avrebbe esattamente su Bitcoin. Affrontiamo, quindi, entrambe le questioni.
In generale, la crittografia si basa sull’incapacità dei computer di eseguire certi calcoli in un tempo ragionevole. Per esempio, utilizzando un computer standard, trovare una collisione hash in SHA-256 è talmente difficile che, anche possedendo un computer grande come la Terra che utilizza tutta l’energia del Sole, ci vorrebbe un tempo mille miliardi di volte maggiore rispetto all’età dell’universo.
Il tempo necessario per “invertire” una funzione trapdoor è legato alle dimensioni delle chiavi o alla lunghezza dei digest. Più lunga è la chiave, maggiore è il tempo necessario per invertirla. Ciò significa che una chiave da 256 bit, che è solo il doppio rispetto una chiave da 128 bit, richiederà 2128 o circa 1039[1] volte in più per essere invertita.
Al contempo, un computer più grande riuscirà a ridurre il tempo di inversione solo in maniera proporzionale alla sua dimensione: un computer due volte più veloce, quindi, riuscirà solo a dimezzare il tempo.
I computer quantistici, al contrario, riducono il tempo necessario per invertire queste funzioni in base alle dimensioni del computer che utilizzi. Pertanto un computer quantistico con il doppio di qubit rispetto a un altro è in grado di ridurre il tempo di inversione di alcune funzioni trapdoor di quattro volte. Ciò significa che i principi di base su quali tipologie di crittografia sono vulnerabili ai computer quantistici vengono scardinati, ma non significa che smettano immediatamente di funzionare.
Prendiamo come esempio SHA-256. Secondo l’Università dell’Illinois un computer quantistico che utilizza l’algoritmo di Grover ridurrebbe la sicurezza di SHA-256 da 256 bit a 128 bit. In altre parole, mentre un computer normale che cerca di trovare l’input di SHA-256 a partire da un output dovrebbe provare 2256[2] volte per garantire di trovare un output, un computer quantistico avrebbe bisogno “solo” di 2128 tentativi.
Per mettere tale dato in prospettiva, anche se si disponesse di un computer quantistico mille miliardi di volte più veloce del più veloce computer quantistico attualmente esistente, ci vorrebbero comunque un milione di anni (e un’enorme quantità di energia) per trovare una collisione. Sebbene non sia un tempo realistico, è comunque molto più veloce rispetto ai 367 miliardi di trilioni di trilioni di trilioni di trilioni di anni che servirebbero a un normale computer.
In altre parole, è probabile che gli indirizzi basati su hash SHA-256 rimangano sicuri anche se questi enormi computer quantistici diventassero realtà. Per quanto riguarda il mining, l’unica cosa che un computer quantistico farebbe è velocizzare il processo, ma dato il suo costo e la sua complessità (ipotizzando che sia possibile realizzarne uno di dimensioni interessanti), non si tratterebbe necessariamente di una soluzione vantaggiosa dal punto di vista economico.
I punti deboli di Bitcoin sono limitati e per sfruttarli in maniera concreta servono enormi progressi tecnologici
Ora che abbiamo un’idea dei numeri con cui stiamo lavorando e delle capacità tuttora necessarie per invertire, ad esempio, SHA-256, analizziamo quali sono le vulnerabilità quantistiche di Bitcoin.
Iniziamo dagli indirizzi basati su ECDSA, tecnicamente violabili dai computer quantistici che utilizzano l’algoritmo di Shor[3]. Ricordiamo che è possibile inviare Bitcoin direttamente a chiavi pubbliche, pertanto le monete presenti in indirizzi che rivelano la chiave pubblica sarebbero vulnerabili a furti se qualcuno riuscisse calcolare la chiave privata a partire dalla chiave pubblica. A titolo di riferimento, stiamo parlando di circa 1,9 milioni di Bitcoin, ovvero il 9% dell’offerta.
Anche le transazioni in indirizzi Schnorr, come i Taproot UTXO, sono vulnerabili perché le loro chiavi pubbliche sono anch’esse visibili, ma questo formato di indirizzo corrisponde solamente allo 0,1% delle monete, pertanto non lo includeremo in questa analisi.
Secondo le ricerche, per invertire una chiave pubblica in un giorno, un aggressore avrebbe bisogno di un computer quantistico con prestazioni di tolleranza ai guasti e minimizzazione degli errori non ancora raggiunte, nonché di 13 milioni di qubit fisici (circa 100.000 volte di più rispetto al più grande computer quantistico esistente[4]). Per decifrarla in un’ora[5], il computer dovrebbe essere 3 milioni di volte migliore rispetto agli attuali computer quantistici.
Stimare l’attuale tasso di crescita annuale dei qubit fisici non è facile, in parte perché ci sono tante tipologie diverse di qubit, ma anche perché non disponiamo di molti dati. Secondo i dati raccolti da Quantum Zeitgeist, la crescita dei qubit fisici funzionanti è analoga a quella dei chip dei computer tradizionali, descritta nella legge di Moore, con un raddoppio del numero ogni due anni circa. A questo ritmo, ci vorrebbero più di 15 anni per raggiungere 13 milioni di qubit.
E questo supponendo che sia effettivamente possibile scalare i qubit a quel livello, ottenendo tassi di errore inferiori a quelli raggiunti, per non parlare poi dei costi.
Per risolvere il principale punto debole di Bitcoin è sufficiente un nuovo formato di indirizzo attraverso un soft fork
Supponendo che, a un certo punto, si verificherà questa superiorità quantistica, rimangono comunque molte misure da adottare per mettere al sicuro le monete. Queste vanno da semplici soluzioni basate sulla fiducia, che non richiedono modifiche a Bitcoin, alla sostituzione completa degli strumenti crittografici.
La misura più semplice consiste nell’utilizzare solamente indirizzi basati su hash e inviare le transazioni in uscita direttamente ai miner o a un pool, presumendo che non utilizzino questi tipi di computer quantistici e che non stiano cercando di derubarti (cosa per cui sarebbero perseguibili penalmente). Un’altra tecnica è inviare transazioni abbastanza piccole da far sì che l’utilizzo di un computer quantistico ultra-avanzato (e probabilmente molto grande e costoso) per un’ora costi di più del valore della transazione.
Tuttavia, è improbabile che queste misure riescano a soddisfare la comunità di Bitcoin, notoriamente apprensiva, pertanto si renderà necessario un nuovo tipo di indirizzo con crittografia post-quantistica. Di fatto è già stata proposta una bozza di Bitcoin Improvement Proposal (BIP) per un nuovo formato di indirizzo a prova di computazione quantistica, attualmente in discussione. Sebbene non si tratterebbe di un cambiamento da poco, introdurre un nuovo formato di indirizzo richiederebbe solamente un soft fork, rendendo improbabile la nascita di particolari controversie.
Il principale fattore che, al momento, riduce la volontà di agire rapidamente è il fatto che la maggior parte o tutte le alternative a prova di computer quantistici proposte hanno dimensioni di firma molto più grandi delle attuali firme di Bitcoin. Questo rappresenta un problema perché Bitcoin ha un limite rigido sulla dimensione dei blocchi; pertanto, se le transazioni richiedono più dati, il numero di transazioni che possono essere inserite in un blocco si riduce. Anche questo problema potrebbe essere risolto aumentando la porzione di testimoni dei blocchi Bitcoin, tecnicamente non soggetti alla dimensione dei blocchi, ma per trattare in modo adeguato questo aspetto sarebbe probabilmente necessario un articolo a sé stante.
Una volta implementata questa soluzione, le monete che si trovano presso indirizzi vulnerabili andrebbero trasferite ai nuovi indirizzi più sicuri. L’onere di ciò sarebbe a carico del titolare di ciascun indirizzo. Dato interessante: la maggior parte delle monete vulnerabili sono quelle che in molti ritengono appartenere a Satoshi Nakamoto. Ciò significa che dovranno essere spostate, dimostrando che Satoshi è tuttora in vita, oppure fungeranno da ricompensa honeypot per i costruttori di computer quantistici.
Riassumendo: i computer quantistici rappresentano una minaccia, ma non attuale né particolarmente problematica
I computer quantistici in grado di porre una minaccia, ammesso che sia possibile realizzarli, sono ancora molto lontani, il che significa che c’è tempo per discutere e implementare le modifiche necessarie. E se anche dovessero effettivamente arrivare, Bitcoin può essere modificato con relativa facilità per mitigare il rischio che rappresentano.
Il principale rischio per Bitcoin è il furto di monete dagli indirizzi con chiavi pubbliche visibili. Questi indirizzi corrispondono a poco meno del 10% delle monete totali. Per mantenerle al sicuro dopo l’arrivo di computer quantistici sufficientemente grandi e funzionali, le monete di tali indirizzi dovrebbero essere spostate in un nuovo formato di indirizzo resistente ai computer quantistici.
Inoltre, con un computer quantistico sufficientemente grande e potente, qualsiasi indirizzo che utilizzi ECDSA o Schnorr (anche quelli protetti da hash) sarebbe vulnerabile, poiché sarebbe teoricamente possibile invertire le loro chiavi nel breve tempo in cui le transazioni firmate sono in attesa nella mempool. A questo punto, tutte le monete andrebbero trasferite a indirizzi resistenti ai computer quantistici.
Un formato di indirizzo resistente ai computer quantistici potrebbe essere aggiunto a Bitcoin tramite soft fork, in modo da essere implementato volontariamente da chi lo desidera e ignorato da chi non lo desidera. Ciò significa che si tratterebbe di un cambiamento facile da implementare e che, probabilmente, non verrebbe considerato sufficientemente problematico da ritardarne l’introduzione.
[1] Ovvero 340.282.366.920.938.463.463.374.607.431.768.211.456 volte.
[2] Ovvero circa 1078 o 115.792.089.237.316.195.423.570.985.008.687.907.853.269.984.665.640.564.039.457.584.007.913.129.639.936 volte.
[3] Questo perché, ricapitolando, la moltiplicazione della curva ellittica che utilizzano sulla curva secp256k1 è vulnerabile.
[4] La stima dei “qubit fisici” è complessa perché esistono numerose tipologie di qubit, le quali hanno prestazioni e caratteristiche diverse. Alla luce del grado di conoscenza di chi leggerà questo articolo, al suo interno abbiamo privilegiato la leggibilità, la semplificazione e la generalizzabilità, anziché la rigorosa accuratezza.
[5] Questo è considerato un lasso di tempo importante per quanto riguarda la vulnerabilità, perché anche le chiavi pubbliche basate su SHA-256 sono visibili alla rete per un breve periodo, quando stanno per essere utilizzate ma devono ancora essere aggiunte a un blocco da un miner.