venerdì 6 gennaio 2017

Double Spend, Sybil Attack e Modello Generalizzato (Bitcoin)

L'attacco al Blockchain quindi la contraffazione di una firma digitale di Bitcoin è un compito molto difficile da realizzare con successo in termini di potenza di elaborazione.
Di conseguenza, è quasi impossibile cambiare una transazione Bitcoin che è stata già firmata. Tuttavia, è possibile modificare lo stato di una transazione tramite una tecnica nota come "Double Spend Attack", ovviamente essa richiede enorme potenza di elaborazione.
Con queste tre parole ci si riferisce al tentativo di spendere i propri Bitcoin due volte: mandando due transazioni in conflitto fra loro in un breve lasso di tempo (Bitcoin validi con 0 conferme), minando un blocco (cioè inserendo una transazione con mittente attaccato e destinatario attaccante, il destinatario è pagato in Bitcoin, quindi rilascia il prodotto ma l'attaccante riesce a far ritornare indietro i propri BTC. Anche qui serve accettare una transazione con 0 conferme), ottenendo il >50% della potenza di calcolo totale della rete (ciò permette una riscrittura della Blockchain con possibili Double-Spend. Ovviamente una simile potenza di calcolo è impossibile, inoltre il valore dei Bitcoin sarebbe di colpo azzerato. In gergo è definito "Problema del 50+1").
Ritenere valide transazioni anche con 1 sola conferma significa accettare transazioni che potrebbero non aver valore, per questo è buona norma attendere 5 verifiche per assicurarsi di essere sulla Chain corretta, con Bitcoin validi e non doppiamente spesi.


TIPO DI ATTACCO DOUBLE SPEND CLASSICO
Sostanzialmente la persona A che usa questa tecnica cerca un prodotto o un servizio da un'altra persona B.
Creerà due transazioni in Bitcoin: una che include i pagamenti per il prodotto che cerca da B, invece con l'altra paga lo stesso importo a se stesso.
Avremo la transazione da "A a B" e poi avvierà segretamente il mining del blocco che comprende la transazione da "A ad A" (cioè verso se stesso).
La transazione verrà inserita prima in un blocco e poi in un altro.
Ogni volta che una transazione finisce in un blocco, riceve 1 conferma.
Ovviamente affinchè la transazione diventi "confermata" c'è bisogno del concatenamento di 5-6 blocchi (ogni conferma crea un blocco che si collega al precedente).
Se il mining del blocco avrà successo, ulteriori blocchi saranno aggiunti ad esso.
B darà il servizio ad A (avendo visto la transazione sul registro pubblico) e se l'operazione è stata confermata invierà il prodotto/servizio pattuito.
Tornando all'attacco, in poche parole verrà creata con la seconda transazione (che ovviamente avrà lo stesso quantitativo di Bitcoin) una catena parallela fraudolenta.
Cioè si crea un ramo alternativo (Blockchain Fork).
Se il "branch" dei blocchi fraudolenti cresce più a lungo rispetto a quello che comprende l'operazione valida, tutti gli altri nodi della rete saranno d'accordo a considerare valido il branch che comprende l'operazione fraudolenta (essendo più lunga).
L'altra transazione (quella valida) verrà invece considerata "corrotta" e quindi non sarà confermata (avendo un concatenamento minore di blocchi rispetto all'altra parallela).
Quindi gli stessi Bitcoin potranno essere spesi due volte.


SYBIL ATTACK
E' un attacco in cui un utente possessore di diversi nodi tenta di “isolare” dal network principale un nodo altrui, fingendo di rappresentare diversi utenti sparsi per la rete.
Nel caso riuscisse, sarà possibile disconnettere il nodo attaccato non inoltrandogli blocchi arrivati dal resto della rete.
Inoltrare solo i blocchi che l’attaccante crea, creando in questo modo un Fork della Blockchain principale (una catena parallela fraudolenta) e generando un Double Spend.
Il nodo attaccato può essere portato a fare affidamento su transazioni con 0 conferme, in modo che i nodi attaccanti inoltrino solo determinate transazioni permettendo anche qui un Double Spend.


MODELLO GENERALIZZATO
Questo è un modo di generalizzazione del modello di Rosenfeld, esso si crea aggiungendo un parametro in più che comprende il tempo (che serve all'attaccante per estrarre il blocco di nascosto).

Il tutto è rappresentato dalla seguente funzione:
P (q, m, n, t)

Questa funzione generalizza lo stato di avanzamento del modello di Rosenfeld.
Funzione P rappresenta la probabilità di successo di un attaccante di estrarre esattamente n blocchi (a condizione che i nodi validi abbiano estratto con successo il blocco di procedura).
Il parametro t è come detto il tempo che serve all'attaccante per produrre il blocco che contiene la transazione fraudolenta.


IL MODELLO BASATO SUL TEMPO
Nel corso di questo tipo di attacco, gli stati sono impostati tramite la determinazione delle lunghezze di entrambi i rami della Blockchain (valida e fraudolenta).

La funzione di avanzamento dell'attaccante può essere rappresentata dalla seguente:
PT (q, m, n, t)

La funzione rappresenta la probabilità di successo che il tempo necessario all'attaccante per estrarre il blocco n-esimo sia esattamente uguale al tempo necessario per estrarre il blocco dei nodi "onesti".
Questo modello è ancora in fase di studio e molto sperimentale.

Nessun commento:

Posta un commento