Bitcoin
Forse ne avrete sentito parlare, ma tutti ne minimizzando la fattibilità. Si tratta dell‘attacco 51%, una specie di vulnerabilità del protocollo Bitcoin che può permettere a malintenzionati di attuare un “controllo” sui coin. Una volta che se ne conosce la causa, giungeremo anche noi alla stessa conclusione di non fattibilità, ma se per i Bitcoin è una cosa ipotetica, per altri coin si verifica molto spesso…
Premesse
Per comprendere questo attacco dobbiamo capire come funziona un pò di più il protocollo Bitcoin o simili.
Ci sono alcuni paramentri da tenere in considerazione:
- Tempo di generazione dei coin (TG): 10 minuti per i Bitcoin, anche 20 secondi per alcuni coin recenti
- Numero di conferme (NC) per avere un coin minato: 120 per i Bitcoin, anche 30 oppure 5000 per altri coin
- Numero di conferme (NT) per una transazione: 6 per i Bitcoin, anche 3 per altri coin
- Difficoltà (D) di generazione dei coin: varia in base a vari fattori
- Hashrate della rete (HR): potenza di calcolo della rete
- Hashrate di un minatore (HM): potenza di calcolo di un minatore
- Retarget della difficoltà (R): 2016 nei Bitcoin, normalmente 1 sui coin attuali
Sostanzialmente quando viene annunciato dalla rete un nuovo blocco, il protocollo si aspetta che i minatori in TG minuti trovino una soluzione ad un calcolo criptografico (con algoritmo SHA256 per i Bitcoin) il cui parametro di calcolo è la difficoltà D. Il primo che trova la soluzione la passa a tutti i nodi della rete per essere confermata (ovvero avallata che si tratta di una soluzione corretta). Quando la rete avrà confermato NC volte quel valore del blocco, il minatore riceverà i coin di premio. Se la rete non dovesse confermare (ad esempio perchè nello stesso istante un altro minatore ha trovato una soluzione migliore), il blocco diventerà orfano e il minatore non otterrà i coin.
Per garantire che sia sempre TG il tempo tra un blocco e l’altro, la difficoltà D varia in base a quanti minatori ci sono e alla loro potenza di calcolo: più minatori ci sono e più alto diventa D.
L’attacco 51%
Ora che abbiamo descritto i parametri interessati, possiamo vedere questo scenario: che succede se la vostra potenza di calcolo HM è maggiore del 51% di HR? Semplice, la vostra potenza di calcolo vi permette di manipolare la catenza delle transazioni a vostro vantaggio, perchè potete generare i blocchi e confermare o non confermare quello che gli altri minatori stanno mandando in rete.
Ecco infatto quello che può fare chi controlla il 51% della rete:
- Annullare le transazioni che ha spedito quando aveva il controllo della rete. Potenzialmente potrebbe spendere due volte il suo denaro.
- Prevenire alcune o tutte le transazione di ottere conferme
- Prevenire che alcuni o tutti gli altri minatori ottengano blocchi validi con coin.
Invece, per chi ha il 51% della rete non può:
- Annullare le transazioni di altre persone
- Prevenire che le transazioni vengano spedite
- Cambiare il numero di coin generati nel blocco
- Creare coin dal nulla
- Spedire coin che non sono di sua proprietà
Lo scenario è allettante, ma è infatti possibile tutto questo?
Per i Bitcoin assolutamente no: HR e la relativa difficoltà D è così grande che un attaccante che volesse controllare la rete con almeno il 51% dovrebbe possesere pressochè tutti i computer di mezzo mondo per poterlo fare.
E per altri coin?
Per altri coin, sopratutto se sono appena nati, la cosa avviene (involontariamente) molto spesso. Nei pool che gestisco mi è capiato già 3 volte con due differenti coin.
Di solito la cosa avviene perchè esistono dei pool (Multi-pool) che minano cambiando coin a seconda di particolari schemi (ad esempio vanno sui più renumerativi o su quelli con difficoltà più bassa), perciò la situazione è più o meno questa:
Prima:
- Rete: 50GH/s
- Multi-Pool: 0GH/s
Dopo:
- rete: 50GH/s+60GH/s=110GH/s
- Multi-Pool: 60GH/s
Come si vede, quando il multi pool entra a minare, esso assume il controllo della rete avendo oltre il 51% di essa. Se durante questa fase, la sua catena non è aggiornata con tutta la rete (dato che stanno passando da un coin ad un altro, c’è un tempo tecnico di cambio trai due), essi cominceranno a minare su blocchi vecchi e vista la potenza di calcolo, essi verranno confermati prima di quelli della rete ufficiale.
Il risultato è pertanto che la rete ufficiale diventa quella della multi-pool che ha in pratica Forkato il coin rendendo il lavoro degli altri vano (ed essi devono per forza cancellare la loro catena e partire con quella nuova se vogliono continuare a minare il coin).
Questo è involontario e avviene sovente finchè il coin non viene minato da un numero di utenti che sorpassa la potenza offerta dai multi-pool.
Conclusioni
Forse adesso avete capito perchè c’è l’attacco 51% e come si manifesta. Volevo però tornare sul retarget R della difficoltà.
Cosa succede se un multi-pool arriva a minare un coin che ha un bassa diffocoltà perchè c’erano pochi minatori prima di essa? Semplice, in poco tempo con la loro potenza minano facilmente i coin in pochissimo tempo, pertanto al retarget successivo, la difficoltà schizzerà alla stelle, in modo da poter mantenere il tempo TG costante. A quel punto però il multi-pool lascerà il mining di quel coin e passerà a minarne altri. Chi c’era prima sul coin si trova ora una difficoltà eccessiva per la loro potenza di calcolo. A quel punto invece di TG potrebbero volerci TG*10000 per minare un blocco, pertanto se il retarget (R) non avviene subito (in 1 blocco), il coin è destinato a morire, perchè una transazione può impiegare settimane per essere attuata (pensate a cosa succede se spedite dei soldi e questi arrivano a destinazione settimane dopo, invece che pochi minuti dopo). Una marea di coin sono morti per questo motivo, per cui ora il retarget di 1 blocco è pressochè una prassi per ogni nuovo coin.