Bitcoin: l’attacco 51%

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.

Infatti la potenza della rete (HR) si misura come la somma di tutta la potenza di calcolo che offrono i minatori (HM). Se ad esempio il vostro PC è in grado di generare 1GH/s e la rete sta andando a 1TH/s, questo significa che il vostro PC è 1/1000 di tutti quelli che ci sono in rete.
La diffociltà D viene ricalcolata ogni R blocchi, che per i Bitcoin sono un numero molto grande, ma attualmente ogni coin cerca di utilizzare un ricalcolo ad ogni blocco (per dei motivi tecnici di cui discuterò dopo l’attacco 51%).
Infine, quando un utente invia dei coin in rete, la sua transazione per essere valida, deve essere accettata almeno NT volte (per questo NT è molto inferiore a NC, dato che l’invio dei soldi dovrebbe essere il più rapido possibile).

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.

multi-pool.info
multi-pool.info

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.

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.