Possibili attacchi alla fine della catena (Blockchain)
Il fatto che per dei minuti possa esserci ambiguità alla fine della catena ha delle implicazioni sulla sicurezza delle transazioni. Ad esempio, se una delle tue transazioni si trova a far parte di una delle branches più corte, perderà il suo posto a favore dei blocchi della chain più lunga. Pertanto la transazione tornerà nel gruppo delle transazioni non confermate e troverà il proprio posto in un blocco successivo. Sfortunatamente il fatto che una transazione possa perdere il proprio posto offre il fianco al problema del double spending.
Come potrebbe avvenire un attacco di double spending nella Blockchain
A manda i soldi a B e B aspetta la conferma della transazione sulla blockchain per spedire il proprio prodotto ad A.
A potrebbe però creare una blockchain alternativa più lunga, rimpiazzando la transazione verso B con una transazione verso qualcun altro. A questo punto la transazione verso B finirebbe nel gruppo delle transazioni non confermate, ma visto che A ha rimpiazzato tale transazione con una transazione verso altri, a questo punto la transazione verso B sarebbe giudicata non valida perché farebbe riferimento ad un input già speso!
Come ci si difende da questo attacco?
In realtà è difficile che Alice possa creare una catena ad HOC, il tutto sta nella creazione dell’HASH.
Come già spiegato, per risolvere un blocco si deve far si che l’HASH di un blocco sia sotto ad un certo valore. Questo si fa provando dei numeri casuali diversi alla fine di un blocco come possiamo vedere qui sotto:
Una volta risolto, il valore dell’HASH diviene un’impronta digitale che identifica quel blocco in maniera univoca e se un qualsiasi carattere di quel blocco cambia, anche l’HASH cambia. Tale impronta digitale viene usata come identificatore del blocco precedente nel blocco successivo. Una volta ottenuto questo, è impossibile cambiare un blocco nel mezzo della catena poiché il blocco successivo non punterà più al blocco con l’HASH giusto.
Inoltre un blocco non può essere risolto prima del blocco precedente: il dato relativo al blocco precedente è presente nel blocco stesso e pertanto anch’esso viene dato in pasto alla funzione HASH che risolve il blocco.
Questo è il motivo perché A non può crearsi una catena ad hoc: A può solamente iniziare a risolvere blocchi una volta che il blocco da cui vuol partire è già stato risolto ed il proprio valore è conosciuto.
L’unico modo che ha A di creare una catena alternativa è risolvendo effettivamente blocchi più velocemente di tutti gli altri computer nella rete. E’ come se ogni computer fosse un biglietto della lotteria: in teoria A potrebbe anche avere più computer, e quindi più biglietti, ma anche in questo caso le probabilità di vincita sono a sfavore di A.
L’attacco del 50%
Solo se controllasse il 50% del potere computativo della rete avrebbe il 50% di possibilità di risolvere un blocco prima di qualcun altro. Ed anche in questo caso le probabilità di risolvere molti blocchi di fila prima degli altri sarebbero comunque inferiori al 50%.
Le transazioni nelle blochchain sono protette da questa specie di “gara” matematica. Dato questo meccanismo, possiamo dedurre che le transazioni nei blocchi più vecchi della catena siano più sicure. Una persona che vuol frodare tramite il double spending dovrebbe essere più veloce degli altri nel risolvere i blocchi e la velocità dovrebbe incrementare in modo proporzionale alla lunghezza della catena. Pertanto si ritiene che questo sistema sia vulnerabile solamente vicino alla fine della catena e questo è il motivo per cui si consiglia di attendere la conferma di diversi blocchi prima di considerare i BTC ricevuti come definitivi.
Seguici su Telegram
Rimani aggiornato con guide e iniziative esclusive per gli iscritti!