Block withholding: l'attacco invisibile in una sola share
Un miner invia share vere e nasconde quella che sarebbe stata un blocco. Scopra quanto costa, chi paga, perché qualcuno lo fa e come viene scoperto.
Che cos'è un attacco di block withholding?
È un miner che invia tutte le share ordinarie ma nasconde quella che sarebbe stata un blocco. La pool paga le share. Il blocco non arriva mai.
Ogni share che invia a una pool è una soluzione vera che non ha raggiunto il target del blocco. Il target del blocco è l'asticella più difficile che un hash deve superare per formare un blocco. Ogni tanto una soluzione supera anche quella, e quella share è un blocco intero.
Una share del genere sembra uguale a tutte le altre finché la pool non la controlla.
Un attaccante fa il lavoro onestamente e invia tutte le share ordinarie. In silenzio scarta quella che sarebbe stata un blocco. La pool conta le share e le paga. Il blocco che avrebbe dovuto ricevere non arriva mai.
Perché una sola share non lo tradisce?
Nulla dell'attaccante sembra sbagliato su una singola share. L'hardware è vero, e lo è anche l'hashrate. Le share sono valide e arrivano al ritmo giusto. La pool può esaminare una share e non vedere assolutamente nulla.
Ciò che manca è un'assenza, e un'assenza si vede solo col tempo. Un miner con una certa quota dell'hashrate della pool dovrebbe trovare più o meno quella stessa quota dei suoi blocchi.
In un'ora, questo non dice nulla. Trovare blocchi è casuale, e i periodi senza blocchi sono normali. Su una finestra abbastanza lunga, dice moltissimo.
Quanto costa e chi paga?
La pool perde la ricompensa del blocco che avrebbe dovuto ricevere. Ma la perdita non ricade davvero sulla pool. È la parte che vale la pena capire, su qualsiasi pool.
- Con uno schema proporzionale, il round continua finché qualcun altro trova un blocco. Tutti nel round hanno lavorato su un round durato più del dovuto. Quindi tutti guadagnano un po' meno per unità di lavoro. Il costo si distribuisce tra i miner onesti.
- Con uno schema a pagamento per share, è peggio per l'operatore. La pool ha già pagato ogni share di tasca propria e conta sull'arrivo dei blocchi. Un attacco prolungato è un salasso diretto per l'operatore. Storicamente, è il caso che ha preoccupato di più.
Perché qualcuno dovrebbe farlo?
Anche l'attaccante butta via la ricompensa del blocco. A prima vista è puro autolesionismo. Ha senso solo se l'attaccante guadagna da qualche parte che la pool non può vedere.
Il motivo tipico è la concorrenza. Chi gestisce una propria pool può noleggiare o puntare hashrate su una rivale e sopprimerne i risultati. La sua pool sembra allora più fortunata al confronto. Le share che l'attaccante continua a incassare pagano il sabotaggio.
In una variante più sottile, l'attaccante trattiene il blocco invece di scartarlo. Continua a minare sopra di esso in privato, poi lo invia più tardi nel momento che gli conviene. È più difficile da realizzare. Serve una grossa quota dell'hashrate perché valga la pena tentarlo.
Come si scopre?
La rilevazione è statistica, perché non c'è nessun altro segnale. Si confrontano i blocchi trovati da un partecipante con i blocchi che, in base al numero di share, avrebbe dovuto trovare. Lo si fa su una finestra abbastanza lunga perché la fortuna si compensi.
La finestra è la parte difficile.
- Se è breve, la normale sfortuna sembra un attacco. I miner onesti verrebbero accusati di continuo.
- Se è lunga, un vero attaccante opera per un po' prima che i numeri parlino.
Non c'è un modo furbo per evitare questo compromesso. Viene dal caso, non dal software.
Per questo un sistema di rilevazione serio pone la questione a una persona invece di agire da solo. Un ban automatico guidato da una statistica un giorno bannerà qualcuno che è stato solo sfortunato. Mettere fuori gioco un miner legittimo è peggio dell'attacco stesso.
Cosa significa per un miner onesto?
Quasi nulla, e vale la pena dirlo chiaramente.
Le Sue share vengono contate e pagate allo stesso modo in ogni caso. Essere sfortunati non è una colpa e non può esserlo. Su qualsiasi finestra breve, la maggior parte dei miner è sfortunata.
Una serie di round in cui ha contribuito molto e la pool non ha trovato nulla è varianza normale. Il valore della fortuna nelle statistiche della pool Le mostra quanto sia normale.
Questo attacco è uno dei motivi per cui alle pool importa chi punta hashrate su di loro. È anche il motivo per cui ci si fida più facilmente di una pool che pubblica onestamente i suoi blocchi e la sua fortuna. Tutto ciò che Le serve per controllare la pool è nella pagina dei blocchi.