Perché ogni utente Bitcoin andrebbe informato sulla “Sicurezza SPV”

Jonald Fyookball
6 min readJun 8, 2017

--

(Click here for the English version of “Why Every Bitcoin User Should Understand SPV Security”)

Per guidare un’automobile non hai bisogno di sapere come funziona un motore. Allo stesso modo, per usare Bitcoin non è necessario sapere cosa succede ‘dietro le quinte’.

Se però hai in mente di partecipare al dibattito pubblico o di farti un’opinione sul futuro del Bitcoin, ci sono alcune cose che dovresti conoscere.

Il grande dibattito sulla dimensione dei blocchi

In caso non lo sapessi, c’è una sorta di guerra civile in atto fra sviluppatori, imprese, minatori e investitori Bitcoin. Il problema riguarda come “scalare” la rete.
In parole povere: una fazione vuole seguire l’idea di Bitcoin originale di moneta peer-to-peer, e prevede la creazione di blocchi più grandi; l’altra vuole mantenere piccoli i blocchi e trasformare bitcoin in una rete di settlement.

La tua opinione conta più di quanto credi

Bitcoin è un ecosistema da miliardi di dollari. Sarebbe ingenuo credere che non ci siano potenti interessi corporativi a cercare di manipolarlo in ogni modo possibile.

Allora, cosa c’entri tu?

Ce lo spiega una citazione fra le più serie del comico George Carlin. Cosa vogliono questi potenti interessi speciali?

Vogliono di più per se stessi e di meno per tutti gli altri. Ma vi dirò ciò che non vogliono. Non vogliono un popolo di cittadini capaci di pensare criticamente. Non vogliono gente ben istruita o ben informata… Non fa al caso loro. Non rende le cose più facili. Va contro i loro interessi. — George Carlin

Il castello di carte di chi vuole i blocchi piccoli

Da Wikipedia: “House of cards” (castello di carte) è un’espressione risalente al 1645, che identifica una struttura o un’ argomentazione costruita su fondamenta instabili o destinata a crollare qualora ne venga rimosso un elemento essenziale.

L’argomentazione che vede Bitcoin come una rete di settlement è basata su una serie di passaggi logici molto simile a questa:

“La maggior parte degli utenti della rete dovrebbe far girare un nodo pieno, quindi la possibilità di far girare un nodo pieno dovrebbe essere a buon mercato, quindi dovremmo limitare l’ampiezza di banda e i costi di archiviazione, quindi non abbiamo altra scelta che mantenere piccole le dimensioni dei blocchi.”

La maggior parte degli utenti NON ha bisogno di far girare un nodo pieno

Basta sfatare l’assunto di fondo e il castello di carte crolla.

Le motivazioni a favore dell’affermazione “la maggior parte degli utenti dovrebbe far girare un nodo pieno” possono essere grossomodo divise in due gruppi: a) è vantaggioso per la rete, e b) è necessario per la sicurezza dell’utente.

Tratteremo il primo gruppo di motivazioni in un articolo separato. Per ora, limitiamoci ad affrontare l’assunto dal punto di vista dell’utente.

La Verifica di Pagamento Semplificata (SPV) esiste da sempre

Prima di tutto, la SPV non è una novità. Era già descritta nella sezione 8 della documentazione tecnica originale di Satoshi Nakamoto — Bitcoin: un sistema di moneta elettronica peer-to-peer. Per anni portafogli Bitcoin come Electrum hanno usato la SPV con successo e senza alcun problema, risparmiando agli utenti l’onere di mantenere un nodo di rete pieno.

Come funziona la SPV?

In breve, la SPV ti permette di confermare le TUE transazioni senza che tu debba preoccuparti delle transazioni degli altri.

La SPV possiede i 2 ingredienti fondamentali: a) garantisce che le tue transazioni si trovino in un blocco, e b) fornisce conferma (proof-of-work) che la catena si sta arricchendo di blocchi aggiuntivi.

È praticamente tutto ciò che ti serve per sapere se una transazione sia valida o meno.¹

Quali sono i limiti alla sicurezza delle SPV? C’è qualche beneicio per l’utente che fa girare un nodo pieno?

Dato che un portafoglio SPV non controlla nessuna delle altre transazioni presenti nel blocco, teoricamente il blocco potrebbe non essere valido. Il 99.99% delle volte questo non è un problema, perché è possibile connettersi a molti nodi diversi e assicurarsi che tutti confermino la stessa catena di blocchi.

Di tanto in tanto potrebbe presentarsi una situazione insolita. Ad esempio, dopo l’adozione di una nuova regola di consenso, un gruppo relativamente ampio di nodi potrebbe non usarla perché non ancora aggiornati.

Anche se non passerebbe molto tempo prima che quei nodi non regolari vengano tagliati fuori dalla rete, il client SPV potrebbe intanto essere temporaneamente portato a credere che i nodi non aggiornati posseggano la catena valida più lunga. (Dopo qualche blocco la catena valida più lunga diventerebbe di nuovo evidente.)

È questa la ragione per la quale si dice che far girare un nodo pieno fornisca una sicurezza ‘più rapida’ — se puoi confermare da solo tutte le transazioni, non c’è bisogno di aspettare ulteriori conferme per venir fuori da queste rare circostanze.

Inoltre far girare un nodo pieno garantisce, in teoria, maggiore privacy; questo perché il client SPV deve dialogare con nodi pieni e richiedere informazioni su indirizzi e transazioni specifici.

Si può attaccare intenzionalmente l’utente di un portafoglio SPV?

Farlo è praticamente impossibile (non vi è alcun caso documentato).

Teoricamente un attaccante dovrebbe impostare un grande numero di nodi disonesti e impedirti di trovare un qualsiasi nodo onesto entro la rete Bitcoin ‘reale’.

Per sventare l’attacco, al tuo portafoglio SPV basterebbe trovare anche un solo nodo onesto: a quel punto esso sarebbe in grado di verificare che il nodo onesto contiene la catena di proof-of-work più lunga.
Per sorreggere il suo attacco, l’attaccante dovrebbe inoltre continuare a minare blocchi allo stesso livello di difficoltà per continuare a estendere la loro catena. L’immensa potenza di calcolo richiesta renderebbe l’operazione estremamente dispendiosa, e quindi economicamente infattibile.

Un altro paio di buone notizie

  • È importante rendersi conto che un portafoglio SPV non si limita ad affidarsi agli altri nodi della rete per trovare la catena di blocchi più lunga. Esso va alla ricerca della catena con i migliori header: la catena di header di blocco validi che possiede la proof-of-work più cumulativa. Una buona implementazione SPV assicura anche che questa proof-of-work sia del livello di difficoltà di calcolo appropriato. Chi è interessato può esaminare il codice Electrum per vedere il meccanismo in azione.
  • Naturalmente, la tipologia di portafoglio che gestisci non incide minimamente sulla sicurezza delle tue chiavi private.

Cosa sono queste “proposte anti-frode per SPV” di cui sento spesso parlare?

Le proposte anti-frode sono tentativi di aumentare la sicurezza nei casi in cui una ‘catena non regolare contenga maggiori proof of work della catena regolare’ nei termini di cui sopra.

Ma siccome casi del genere sono pochi e distanti fra loro, i miglioramenti nella sicurezza sarebbero trascurabili.

È palesemente falso affermare che per la sicurezza degli utenti siano necessari meccanismi SPV anti-frode.

Tomas van der Wansem, autore di una recente proposta anti-frode basata sugli alberi di spesa, è d’accordo:

Al contrario di quanto comunemente si crede, le SPV anti-frode e i nodi pieni non sono significativamente più sicuri dei nodi SPV… Temo che l’attuale situazione di stagnamento e abbandono dell’originale modello dimensionale di Bitcoin non sia indotta dall’assenza di meccanismi anti-frode, ma piuttosto dal fraintendimento del modello stesso e della sua sicurezza.

Conclusione

I portafogli SPV garantiscono un alto livello di sicurezza, e la maggior parte degli utenti non ha bisogno di far girare nodi pieni. Forte di queste informazioni, puoi smettere di preoccuparti del tuo portafoglio bitcoin… e puoi anche aiutare a debellare queste dannose argomentazioni, scaturite da basi infondate.

Nota di chiusura:
¹ Un portafoglio SPV deve anche rimanere “in ascolto” per captare le transazioni in arrivo al tuo indirizzo. Può farlo attraverso filtri bloom, o con l’aiuto di un server che possiede un set di UTXO.

 by the author.

--

--