Il prezzo del Bitcoin cresce a ritmi folli ma quanto è sicuro il suo uso da un punto di vista tecnico?
SICUREZZA DEL PROPRIO PORTAFOGLIO
Il Bitcoin funziona con un sistema a crittografia asincrona, dove la chiave pubblica è condivisa nella blockchain con tutti gli altri utilizzatori ma per gestire i soldi virtuali (token) che hai nel tuo portafoglio virtuale (wallet), devi avere la chiave privata.
La chiave privata, in questo caso non è semplicemente paragonabile alla password del tuo conto corrente, ma è come se costituisse il tuo stesso “conto di criptovaluta“, in quanto tutti i dati di tutte le transazioni sono condivise pubblicamente con l’unica eccezione di questa fondamentale stringa di dati, non ci sono altri certificati di proprietà possibilità di bloccare il conto o chiedere rimborsi, e, se qualcuno riuscisse a ottenere la tua chiave privata, avrebbe i tuoi Bitcoin completamente in pugno.
Alla spontanea domanda:
È possibile che qualcuno possa mai riuscire a ottenere la mia chiave privata?
Qualsiasi Bitcoin evangelist vi risponderà che “la chiave privata del Bitcoin se ben custodita è totalmente impossibile da bucare”, ma la faccenda non è esattamente così, e merita un approfondimento.
La chiave privata del Bitcoin di base è una stringa di 256 bit che usa lo standard ECDSA (Elliptic Curve Digital Signature Algorithm), la stringa d’indirizzo del wallet 160 bit (RipeMD-160 hash), perciò in pratica dato un indirizzo, la possibilità di trovare collisione è in generale di 1/(2^96), tante quante sono le possibili chiavi private che il relativo wallet può avere. Già qua, è abbastanza ovvio capire che la parola “impossibile” va sostituita da “improbabile” visto che, per quanto siano necessari 79228162514264337593543950336 tentativi per bucare sicuramente un wallet, che numericamente è un numero molto più grande del numero necessario di tentativi per essere certi di vincere alla lotteria, qua non si pagano biglietti per “provare a giocare” e non ci sono cadenze settimanali a intervallare un tentativo e l’altro. Il progetto Large Bitcoin Collider ad aprile ha già generato un numero di chiavi nell’ordine dei 3000 trilioni in pochi mesi. Visto che il numero di tentativi non ha un limite prefissato, a differenza del numero di possibilità necessarie per arrivare ad esito certo, come il paradosso della scatola di Dirichlet insegna, possiamo perciò dire che prima o poi qualcuno si troverà a invadere il wallet di qualcun altro (e visto che le vie del caos sono infinite, non è neanche impossibile che questo possa anche avvenire per caso, con un Gastone della situazione alla cui generazione del wallet, per una fortuitissima coincidenza, capiti una chiave privata già usata da qualcun altro).
Ho fatto questa precisazione a rigor di completezza, malgrado sia d’accordo che il rischio di ritrovarsi i depositi sul wallet sottratti in questo modo è molto basso. Il rischio maggiore per quanto concerne gli attacchi ai wallet (oltre chiaramente a eventuali malware presenti nel dispositivo in cui si usa il wallet che possono rubare file e password) è rappresentato dai criteri usati dalla maggioranza degli utenti e applicazioni di gestione del wallet per generare la chiave privata.
Per facilitare l’uso del Bitcoin, garantendo al contempo una password numericamente estremamente complessa, sono stati introdotti anche i brainwallet che sono di gran lunga il più comune modo di accesso al mondo del Bitcoin. Questi usano una serie di parole facili da memorizzare da cui calcolare la stringa di hash della chiave privata. La stragrande maggioranza degli utilizzatori avrà notato che il loro wallet alla creazione presentava una serie di termini inglesi, del tipo:
witch collapse practice bear shame door despair creek road again ice least
se il numero di tentativi necessari a bucare un wallet usando il bruteforce in modo naif è tanto alto da garantire un buon grado di sicurezza, lo stesso non si può dire dei brainwallet, dato che l’hash da loro generato è sì estremamente complesso da indovinare “a caso”, ma applicano un criterio di creazione della chiave che è relegato a una manciata di parole e che quindi si presta ad attacchi basati su dizionari di termini da cui generare le possibili chiavi componendo gli hash a partire da varie sequenze di combinazioni di parole, restringendo notevolmente lo spazio di ricerca.
A questo link potete trovare il codice sorgente dei principali strumenti utilizzati negli attacchi alle chiavi private, pian piano provvederò ad aggiornare il repository linkato con nuovi strumenti.
SICUREZZA DELLE TRANSAZIONI
La gestione delle transazioni di Bitcoin è tutto sommato robusta, ma non esente da debolezze non trascurabili che la espongono possibili attacchi. L’attacco peggiore che potrebbe capitare è il cosiddetto “attacco del 51%“. La correttezza delle transazioni, viene data dalle operazioni di calcolo degli hash effettuate dai così detti miners: persone o associazioni che mettono a disposizione potenza computazionale a questo scopo, in cambio di una commissione “premio” per il contributo dato alla rete. Se per ipotesi qualcuno riuscisse con un grande dispiego di potenza di calcolo ad ottenere più della metà della potenza di calcolo totale, potrebbe falsificare le transazioni gestendole a suo piacimento, corrompendo così l’integrità dell’intera struttura. Krypton e Shift due criptovalute basate su Ethereum hanno subito un attacco di questo tipo lo scorso anno.
Un altro attacco (con risvolti comunque meno catastrofici) è quello degli attacchi “double spend” (doppia spesa). Dato che le transazioni una volta che il pagamento viene inviato non giungono immediatamente al wallet del beneficiario, ma restano come pendenti in attesa di essere verificate dai miners, fino a che la transazione non viene confermata può essere anche annullata completamente, e se chi doveva riceverla ha già erogato il servizio, non ha modo di ripristinarla. Si parlerà in questo caso di “race attack“.
Un attacco basato sullo stesso principio ma più elaborato è il “Finney Attack“(dal nome del primo a discutere pubblicamente la problematica). Chi esegue l’attacco, con il contributo di un miner complice o configurandosi un nodo per il mining, crea due transazioni, una destinata a chi dovrebbe ricevere il pagamento, e una a se stesso, senza propagarle, quando la transazione ha una sola conferma spesso viene considerata accettata, una volta che la vittima ha erogato il servizio, chi esegue l’attacco inizierà a propagare la seconda che era rimasta pre-mined, questo causerà un override della transazione che rientrerà nelle tasche di chi ha eseguito l’attacco. Talvolta può essere usata una combinazione di “Race Attack” e “Finney Attack”, si parlerà in questo caso di “Vector 76 attack“.
Gli scenari in cui questo tipo di attacchi “doppia spesa” sono più efficaci e pericolosi, è quando la vittima usa e-wallet e sistemi automatici che spesso per accelerare le tempistiche non aspettano conferme multiple per considerare la transazione regolarmente ricevuta ed erogare il servizio.
I miners possono evitare di propagare per loro interesse un gran numero di blocchi, e continuare ad acquisire nuovi blocchi per poi propagarli in una volta per cercare di avere quanto più controllo possibile sul network, l’impatto di questo attacco sarà tanto maggiore quanto più grande sarà la fetta di potenza di calcolo hash sul totale della mining pool che lo esegue. In questo caso si parlerà di “Selfish Mining Attack“. Per questo problema sono state proposte varie soluzioni, come l’utilizzo delle timestamp per vedere se una mining pool inizia a propagare in maniera sospetta un gran numero di blocchi contemporaneamente, ma per la natura distribuita e non controllata del Bitcoin, risolverlo all’atto pratico è difficoltoso senza un consenso generale ad una fork della blockchain su una versione migliorata per prevenire tale eventualità alla radice. Difficoltà ampliate anche in virtù del fatto che ai grossi miners può fare molto comodo sfruttare questa debolezza a proprio vantaggio, e non è essere troppo maliziosi pensare che da un lato i miners potrebbero non smaniare dalla voglia di avere nuovi limiti imposti, con i grossi holders che dall’altra parte hanno a loro volta interesse a non dare troppa visibilità alle debolezze del loro investimento per evitare il rischio di ripercussioni negative sul suo prezzo.
Un altro tipo di attacco alla rete Bitcoin, è rappresentato dal “Sybil Attack“, un attacco applicabile a qualsiasi rete P2P (che prende il nome da un caso di studio su una donna affetta da un disturbo dissociativo d’identità, di cui si scoprì in seguito le ben 16 personalità multiple dichiarate erano fasulle e recitate, ma che con l’attenzione dedicata al singolare caso dai media, fece scoppiare un notevole aumento di segnalazioni di gente falsamente convinta di avere una personalità multipla). Questo attacco consiste nel tracciare gli IP delle comunicazioni in entrata e in uscita da un nodo per poi circondarlo con attacchi mirati, così da confondere i suoi dati, simulando il comportamento di nodi legittimi del network, o impedirgli di comunicare correttamente con gli altri nodi.