Condividi questo articolo

Evitamento delle fusioni: tecniche di miglioramento Privacy nel protocollo Bitcoin

Mike Hearn, sviluppatore Bitcoin CORE, parla delle fughe di notizie Privacy e di una nuova tecnica da lui chiamata "merge avoidance".

Mike Hearn è uno sviluppatore di software che lavora nel team di sviluppo Bitcoin CORE e anche in Google. In questo articolo, Mike discute di alcune fughe di notizie Privacy Bitcoin e di una nuova tecnica che al momento non ha un nome, ma che lui chiamaevitare la fusione.

Introduzione alla Privacy Bitcoin

È un fatto spiacevole che, nonostante la reputazione di Bitcoin sulla stampa, i suoi utenti attualmente diffondano grandi quantità di informazioni personali.

La storia continua sotto
Non perderti un'altra storia.Iscriviti alla Newsletter Crypto Long & Short oggi. Vedi Tutte le Newsletter

È dolorosamente facile per qualcuno Imparare del tuo saldo, della cronologia delle tue negoziazioni e altro ancora. Proteggere queste informazioni è una funzione di base di qualsiasi sistema finanziario utile.

Ecco alcune delle perdite che emergono durante l'uso quotidiano.

Riutilizzo dell'indirizzo

Molti problemi Privacy in Bitcoin sono causati da un avversario che apprende quali output sono posseduti dallo stesso portafoglio. Se riesci a calcolarlo, puoi scoprire il saldo del portafoglio e, possibilmente, con chi ha fatto trading.

Il modo più comune in cui ciò avviene è quando gli indirizzi vengono riutilizzati. Ciò è facilmente comprensibile perché siti popolari come blockchain.info indicizzano output e transazioni per indirizzo, consentendo di cercare rapidamente tutte le transazioni che fanno riferimento a un dato indirizzo.

Il riutilizzo degli indirizzi ha molte cause diverse. Ecco un esempio:

1. Problemi con il portafoglio dell'utente finale

La libreria bitcoinj riutilizza sempre gli indirizzi per Politiche, facendo così trapelare molte informazioni private. Ci sono due ragioni per questo. ONE è che prima dello sviluppo dei wallet HD, l'utilizzo costante delle chiavi avrebbe comportato l'invalidazione dei vecchi backup dei wallet.

Bitcoin-Qt ha un "pool di chiavi" per cercare di risolvere il problema, ma questo non fa che rinviare il problema: il pool di chiavi può essere esaurito silenziosamente, dando lo stesso problema. L'invalidazione dei backup può causare perdite di denaro alle persone.

Una volta implementati i portafogli HD (che è in corso) questo problema scomparirà, lasciando solo il secondo problema della pressione della memoria sui telefoni di fascia bassa. Il riutilizzo degli indirizzi potrebbe essere ancora necessario su tali dispositivi, ma i telefoni di fascia alta e i desktop/laptop T dovrebbero riscontrare alcun problema.

2. Problemi con il portafoglio del server

Non ci sono implementazioni di wallet pubblici e open source che si adattino a wallet con un numero molto elevato di chiavi. Per quanto ne so, gli exchange e i principali processori di pagamento hanno dovuto implementare un sacco di codice personalizzato per aggirare la mancanza di scalabilità di Bitcoin-Qt (e bitcoinj).

Ciò spinge i destinatari a riutilizzare gli indirizzi.

3. Convenzioni sociali

Persone che inseriscono indirizzi statici nelle firme dei forum, nei codici QR, ETC.

Nel tempo, dovremo fare progressi con tutti questi problemi per ridurre il riutilizzo degli indirizzi. I portafogli HD e il protocollo di pagamento sono strumenti importanti per aiutarci a raggiungere questo obiettivo.

Cambia output

evitare-l'unione
evitare-l'unione

ONE delle violazioni Privacy più irritanti in Bitcoin è la scoperta da parte di persone dei limiti minimi del proprio saldo.

Il funzionamento di questo può essere compreso intuitivamente tramite l'analogia del denaro contante. Con la carta moneta, se si consegna una banconota da 500 CHF per pagare un drink che costa solo 5 CHF, il barista scopre che il saldo è di almeno 495 CHF. Potrebbe anche essere più alto, naturalmente, ma almeno non è più basso. Bitcoin ha lo stesso problema.

La causa principale di questo problema è una discrepanza tra l'importo del pagamento che desideri effettuare e le monete (output) a tua disposizione.

Se la discrepanza è in ONE direzione, si hanno molti output di piccole dimensioni ed effettuare pagamenti per importi non esigui inizia a comportare costi elevati in termini di commissioni, perché le transazioni generate sono enormi.

Se la discrepanza è nella direzione opposta, per pagare una piccola cosa è necessario utilizzare una moneta di grosso valore e il resto in uscita fa trapelare dati preziosi sulla tua ricchezza.

Traffico di rete

Le connessioni Bitcoin P2P non sono crittografate. ONE dei motivi è che la maggior parte dei dati che scorrono sulla rete P2P sono pubblici, quindi crittografarli sembra inutile.

Un altro motivo è che, per sua stessa natura, quando ci si connette a una rete P2P i propri pari potrebbero essere chiunque e fare qualsiasi cosa, ad esempio potrebbero essere nodi gestiti dalla NSA.

E non è nemmeno una cosa negativa! Perché la NSA T dovrebbe gestire i nodi? Se qualcuno glielo dicesse, implicherebbe una sorta di autorità centrale che detta chi può gestire Bitcoin e chi T. T lo vogliamo.

Quindi, crittografare i dati è utile quando hai un'idea chiara di chi dovrebbe vederli e chi T. Crittografare dati pubblici a persone a caso di cui non sai nulla, non è così utile.

Nonostante tutto ciò, ci sono ancora quattro motivi per cui sarebbe utile crittografare le connessioni.

IL prima ragioneè perFiltri Bloom.

Queste sono rappresentazioni compatte di ciò che è rilevante per il tuo portafoglio: in genere, quali indirizzi/chiavi contiene. Un filtro è ONE e può essere rumoroso, ovvero T puoi leggere gli indirizzi direttamente da un filtro, puoi solo applicarlo alla blockchain e vedere cosa corrisponde.

I filtri possono avere falsi positivi, quindi un nodo non può mai essere sicuro se un indirizzo è davvero tuo o meno. È abbastanza buono, ma anche con un alto tasso di falsi positivi, restringe comunque notevolmente le monete che potresti possedere.

I filtri Bloom non sono informazioni pubbliche, sono solo condivisi tra un client e il nodo a cui si connette. Quindi sarebbe bene nasconderli agli intercettatori passivi, come le persone che condividono il tuo hotspot wifi.

IL seconda ragioneè che anche se le transazioni sono pubbliche, il loro indirizzo IP di origine non lo è (o non dovrebbe esserlo).

Ma un avversario in grado di osservare numerosi collegamenti Internet potrebbe decidere in modo abbastanza affidabile dove è iniziata una transazione registrando con precisione gli orari in cui una transazione è stata vista per la prima volta ed esaminando il primo momento in cui ha attraversato un LINK in fibra.

Sembra che alcune agenzie di intelligence potrebbero fare questo tipo di analisi. La crittografia dei link T garantisce una soluzione a questo problema perché l'analisi temporale potrebbe essere ancora possibile, ma certamente la rende più difficile.

IL terza ragioneè che se la crittografia fosse combinata con l'autenticazione "trust on first use" (TOFU), sarebbe più difficile anche per i MITM attivi eseguire attacchi Sybil sui portafogli e fornire loro dati errati.

Questo è più importante per i client SPV rispetto ai nodi completi, ma entrambi potrebbero trarne vantaggio.

IL motivo finaleSe implementato correttamente, l'utilizzo di SSL per le connessioni P2P renderebbe più difficile identificarle e bloccarle utilizzando dispositivi di ispezione approfondita dei pacchetti.

CoinUnisciti

Tra tutti i problemi sopra menzionati, la soluzione alla fuga di dati tramite output di modifica è ONE delle più dibattute (anche se molte persone T si rendono conto di starne discutendo).

IL Proposta CoinJoin ha ricevuto molta attenzione e alcune implementazioni iniziali. Alcune persone lo vedono principalmente come uno strumento Privacy , e altri come un modo per provare a interrompere il tracciamento delle monete.

Quando viene utilizzato per Privacy, può essere meglio descritto come un modo per provare a cancellare informazioni che sono già state trapelate.

Tuttavia, CoinJoin presenta una serie di gravi problemi che lo rendono un'alternativa desiderabile.

È molto complesso da implementare bene, è vulnerabile agli attacchi Sybil/DoS (spesso sono la stessa cosa in questo contesto), è legalmente discutibile e non è chiaro se l'offuscamento funzioni.

IL Furto al mercato delle pecore ha visto qualcuno affermare di tracciare monete tramite tumbler e mixer, e apparentemente con un minimo di successo. ONE degli strumenti del tracciante erano gli attacchi sybil/DoS sui servizi di mixing, quindi non sono una preoccupazione teorica.

Sebbene le implementazioni giocattolo non siano troppo difficili da realizzare, implementazioni solide nel mondo reale con un'adeguata gestione del timeout, controlli di sicurezza, una buona integrazione dell'interfaccia utente del portafoglio , ETC. richiedono molto più impegno.

Finora solo blockchain.info è riuscita a crearne ONE (su sharedcoin.com), e devi solo fidarti che T KEEP i log. Altrimenti chiunque abbia i log potrebbe dismixare.

Forse il tema meno discusso è l'esperienza utente.

Una transazione CoinJoin richiede la partecipazione di altre persone. Più persone partecipano, meglio è. Tuttavia, Bitcoin attualmente raggiunge il picco solo a circa ONE transazione al secondo.

Anche se tutte le transazioni fossero CoinJoined e tutte si incontrassero in un unico punto (ack, centralizzazione!), dovresti comunque attendere 10-15 secondi per trovare un buon gruppo di partecipanti con cui interagire.

Questo serve solo per avviare il protocollo. Quindi tutti quei partecipanti dovranno recuperare la transazione candidata e firmarla. Se si verifica un timeout, l'intera operazione deve ricominciare da capo.

In cattive condizioni potrebbe facilmente volerci un minuto o più per completare questo processo, specialmente se alcuni partecipanti hanno reti instabili (ad esempio telefoni) e stanno usando Tor. Dato che stiamo cercando di migliorare le prestazioni piuttosto che ridurle, questo sembra un grosso problema di per sé.

Sebbene l'aumento del traffico e dell'utilizzo contribuirebbe a ridurre questo problema, anche se il traffico raddoppiasse, la suddivisione dell'unico punto di ritrovo centrale riporterebbe immediatamente i tempi di attesa al punto ONE.

Potresti risolvere questo problema eseguendo CoinJoin in background, indipendentemente dalla spesa effettiva in corso.

In questo modo si risolve il problema della coda al bar, ma poi si devono pagare delle commissioni su quelle transazioni e potrebbe essere difficile spiegare alle persone perché il loro saldo è crollato improvvisamente durante la notte a causa di una tassa Privacy inaspettata.

Quel genere di brutta sorpresa renderebbe il Bitcoin piuttosto poco attraente per gli utenti ordinari. Solleva anche la questione di quando e quanto spesso viene fatto.

Evitamento delle fusioni

Poiché una delle cause principali delle fughe di notizie Privacy è la mancata corrispondenza tra le dimensioni delle monete disponibili e quelle richieste, sembra che potremmo affrontare il problema da un'altra angolazione: evitando in primo luogo di creare fughe di informazioni che devono essere eliminate.

Immagine
Immagine

Consideriamo il caso di ALICE, una lavoratrice di una caffetteria a cui viene pagato uno stipendio.

ALICE fa un ottimo lavoro e il suo capo lo riconosce con uno stipendio più alto del normale.

Il suo collega Bob sospetta di T essere pagato quanto ALICE e vuole saperlo, così convince ALICE a fargli un piccolo pagamento subito dopo il giorno della paga (forse fanno una scommessa e Bob vince).

Con Bitcoin normale, il portafoglio di Alice probabilmente utilizzerà l'output del suo stipendio e il resto rivelerà quanto le verrà pagato. Anche se ha già effettuato diversi pagamenti, Bob può Seguici la catena di transazioni all'indietro finché non trova un numero ragionevolmente rotondo nella data giusta e concludere che è molto probabilmente il pagamento del suo stipendio.

Anche il semplice CoinJoin T la aiuta. Inserisce ONE input importante nel mix e ottiene ONE output importante.

Potrebbe Request molti output più piccoli, ma l'input sarà comunque di dimensioni pari allo stipendio e alla data giusta. A meno che molte persone che guadagnano stipendi pari a quelli di una caffetteria non condividano la stessa transazione CoinJoin, la perdita T è stata riparata.

Ciò di cui ha realmente bisogno è di evitare di avere un output singolo così grande in primo luogo. Chiamiamo questo evitamento della fusione.

Quando lei invia il suoRequest di pagamento BIP 70al suo datore di lavoro, chiede un buon mix di tagli, proprio come se stesse acquistando contanti in uno sportello di cambio valuta.

La Request specifica anche un indirizzo univoco per ogni output. Il protocollo di pagamento non specifica come un portafoglio dovrebbe soddisfare questa Request, ma consente la possibilità che il portafoglio del mittente invii più transazioni indipendenti per soddisfare gli output desiderati.

[post-citazione]

Se il suo datore di lavoro utilizza un vecchio portafoglio che T supporta la funzionalità merge avoidance, genererà e gli invierà un'unica transazione gigantesca con molti input (da tutti i caffè) e tutti gli output richiesti.

Sembrerà molto simile a una transazione CoinJoin, ma ha un solo partecipante. Tuttavia, non c'è modo di saperlo semplicemente guardando la blockchain.

Se il suo datore di lavoro utilizza un portafoglio più recente che supporta la funzionalità merge avoidance, allora accadrà qualcosa di meglio: riceverà un certo numero di transazioni diverse, più piccole, ONE delle quali crea ONE o due degli output richiesti.

Non c'è nulla che li LINK tra loro. Poiché si fida del fatto che il suo datore di lavoro non spenderà due volte, può distribuire la trasmissione in modo che nemmeno il tempismo li riveli.

Se la selezione degli output viene scelta in modo intelligente, non si troverà mai in una situazione in cui avrà output imbarazzantemente grandi o piccoli per un pagamento particolare. Bob vedrà semplicemente una piccola transazione che produce un output di piccolo resto e, non importa quanto a ritroso risalga, non troverà mai alcun output di dimensioni pari a uno stipendio. ALICE vince!

Gli output di modifica possono far trapelare dati in un altro modo. Bob ha fallito nel suo tentativo di Imparare lo stipendio di Alice tracciando all'indietro attraverso la blockchain, ma può ancora guardare l'output di modifica del pagamento che ha ricevuto per vedere cosa gli succede.

Se in seguito il resto viene sommato a molti altri per creare un pagamento enorme, all'improvviso capisce che ALICE deve aver posseduto almeno quella somma di denaro.

Qui CoinJoin sembra funzionare: se il cambiamento va in un mix, chi può dire chi possiede gli output? Ma è fragile. Anche se gli output hanno dimensioni casuali, in assenza di merge avoidance verranno ricombinati di nuovo per effettuare un pagamento di grandi dimensioni.

Se ALICE accenna di sfuggita che andrà in vacanza con il suo ragazzo, Bob può guardare gli output del mix in cui è confluito il suo resto e attendere che alcuni degli output vengano ricombinati.

Se 1/3 dei ricavi rimane lì senza essere speso, 1/3 viene speso senza essere combinato in modo significativo e un altro 1/3 viene combinato in un pagamento di $ 5.000 la sera prima che ALICE menzioni la sua vacanza, è abbastanza probabile che il viaggio le costi $ 5.000.

Proprietà di implementazione

Questo schema presenta diverse caratteristiche che lo rendono piacevole da implementare:

  • Può essere scritto in modo incrementale: un algoritmo semplice e non molto intelligente può comunque migliorare la Privacy di qualcuno. In seguito, può essere sviluppato e distribuito un algoritmo migliore, ma T richiede complicati aggiornamenti globali. Questo è un buon adattamento per il modello di sviluppo di portafogli concorrenti, a scatti e a scatti, guidato dai volontari, che ha Bitcoin .
  • È molto semplice e non ha parti mobili o grandi macchine a stati. T devi preoccuparti di un telefono cellulare casuale dall'altra parte del mondo che entra in un tunnel nel momento sbagliato, o di eseguire una reimplementazione buggata del software.
  • Non esiste alcuna centralizzazione, né alcun server di incontro temporaneo.
  • Non ci sono rischi legali, perché non ti affidi a nessun servizio che potrebbe essere considerato uno strumento di riciclaggio di denaro.
  • È robusto. In alto ho fornito esempi di come CoinJoin può sembrare funzionare, ma comunque perdere in presenza di pochissime informazioni aggiuntive. L'evitamento delle unioni T ha questo problema.

Ci sono anche alcuni aspetti negativi:

  • Quanto sia buona la tua Privacy dipende in larga misura da quanto abilmente le persone che ti inviano denaro elaborano le transazioni. Quindi, la tua Privacy si basa su persone che potrebbero non avere molti incentivi a fare nulla al riguardo. Speriamo che il software di portafoglio comune faccia la cosa giusta di default.
  • Aumenta il numero di transazioni, anche se l'overhead non è così alto come si potrebbe pensare: una transazione è semplicemente un elenco di input, output e un'intestazione a due campi (versione e tempo di blocco). Input e output non vengono realmente modificati in una buona implementazione di CoinJoin e versione/tempo di blocco potrebbero essere facilmente compressi/codificati in varint per risparmiare spazio. La differenza sarebbe nell'ordine dei byte piuttosto che dei kilobyte.
  • Si basa sul protocollo di pagamento. Ma molte cose si basano su quello, e il protocollo di pagamento è fondamentale per reprimere il riutilizzo degli indirizzi, che è necessario affinché tutti gli schemi Privacy proposti funzionino comunque. È importante che rendiamo BIP70 il più semplice e diffuso possibile.

L'evitamento delle unioni T interferisce con il tracciamento delle monete. Alcune persone potrebbero voler implementare i sistemi CoinJoin solo per questo motivo.

Tuttavia, T riesco a immaginare che ciò diventi diffuso. Se la Privacy delle persone viene protetta tramite altri mezzi, allora CoinJoin diventa un sistema di "aiuto ai ladri per nascondere i loro soldi rubati" che riduce l'incentivo a partecipare, aumenta ulteriormente il rischio legale e farebbe chiedere alle persone perché le loro app wallet chiedessero loro di pagare commissioni semplicemente per proteggere le persone che molto probabilmente ritengono cattive.

Inoltre, ilIncidente al mercato delle pecoredimostra che la lotta decentralizzata alla criminalità a volte è l'unica opzione: nessuno chiederà alla polizia di aiutarlo a recuperare i soldi della droga rubati, e nessun governo si prenderebbe la briga di aiutarlo se lo facesse.

Questo articolo è stato originariamente pubblicato suMedio

Immagine della tastiera Privacytramite Shutterstock

Mike Hearn

Mike Hearn è uno sviluppatore software specializzato in software di sistemi di basso livello. In precedenza ha lavorato per Google e ora si concentra sul sistema di valuta virtuale Bitcoin .

Picture of CoinDesk author Mike Hearn