Capire la privacy di Bitcoin con OXT – Parte 3 di 4

Difese contro la chain analysisi | Samourai Wallet

Capire la privacy di Bitcoin con OXT – Parte 3 di 4

‌                  

Autore: Samourai Wallet | Pubblicazione originale: 09/08/21 | Translated by: 31 febbraio | Milano Trustless | Link: Understanding Bitcoin Privacy with OXT — Part 3/4

Introduzione

Dopo aver introdotto i concetti fondamentali della chain analysis nella Parte 1 e nella Parte 2, la Parte 3 tratterà i metodi per indebolirla.

In questa sezione presenteremo quanto segue:

  1. sconfiggere l'euristica per l'individuazione dei resti nelle transazioni semplici
  2. creazione di un grafo di transazioni ambiguo nei coinjoin di pari importo
  3. indebolire la CIOH con le coinjoin.

Il modello delle assegnazioni di un UTXO e l'ambiguità delle transazioni semplici

In precedenza, abbiamo introdotto le euristiche di rilevamento dei resti per le transazioni semplici (simple spends) con 1 input e 2 output. Abbiamo ipotizzato che la transazione includesse un pagamento e un output di resto.
In realtà, una simple spend ha molte interpretazioni aggiuntive basate sul ‘modello di assegnazione’ degli  UTXO. Il modello di assegnazione cerca di attribuire la proprietà agli input e agli output di una transazione. Le interpretazioni complete per una transazione con 1 input e 2 output sono mostrate in Fig. 3.1.

Fig. 3.1 - Modello di attribuzione degli UTXO in una transazione semplice

Ciascuna di queste interpretazioni deve essere presa in considerazione da un analista, soprattutto quando si applicano solo i dati interni alle transazioni. Le interpretazioni possono essere eliminate quando si tiene conto di ulteriori impronte digitali del wallet, del comportamento normale del wallet e del comportamento tipico dell'utente.

Il comportamento tipico dell'utente rende le interpretazioni 1 e 2 molto probabili. Le interpretazioni 3 e 4 sono possibili, anche se non molti wallet bitcoin dispongono della funzionalità di batch spend. L'interpretazione 5 è rara a causa delle fee extra pagate e del set bloat degli UTXO.
L'applicazione di dati esterni alle transazione, come gli output inviati a servizi centralizzati o gli indirizzi riutilizzati, può essere adoperato per eliminare le interpretazioni. A causa della concentrazione del grafico delle transazioni bitcoin intorno ai servizi centralizzati e ai modelli di comportamento normale degli utenti, queste interpretazioni complete sono raramente considerate nella pratica.

Sconfiggere l'euristica di rilevamento del resto

Le transazioni possono essere rese più ambigue dal wallet software che mira a sconfiggere l'euristica per il rilevamento dei resti presentata nella Parte 1. Se considerata isolatamente, la transazione che segue è un esempio di simple spend 'estremamente' ambigua.

Fig. 3.2 - Transazione semplice ambigua (TxID)

Difese dell'euristica del pagamento con numero tondo

L'importo del pagamento è determinato dall'utente. Se l'utente sceglie un importo 'rotondo' di pagamento, è difficile per un wallet proteggersi da questa euristica in una transazione semplice. Per la maggior parte dei pagamenti veri (con prezzo in fiat), è meno probabile che questa euristica si applichi. L'esempio della Fig. 3.2 non prevede un importo di pagamento arrotondato e mantiene la protezione contro questo euristico.

Identico tipo di script di output per il resto

La transazione di esempio ha tipi di script di output identici per entrambe le uscite, quindi l'euristica dello script unico non si applica. Ciò contribuisce a mantenere l'ambiguità e rende più difficile il rilevamento del resto.

Posizione di uscita del resto randomizzata

Per aumentare ulteriormente l'ambiguità del comportamento di questo wallet nel corso di una serie di transazioni, il wallet software deve randomizzare la posizione dell'output di resto. L'alternanza della posizione di resto tra l'uscita 0 e 1 renderebbe più difficile il tracciamento automatico dell'attività di un wallet come mostrato nella Fig. 2.8.

Valutare la transazione includendo dati esterni alla transazione

Il grafico delle transazioni di OXT mostra gli importi relativi a UTXO e transazioni variando i pesi. In questo modo, l'espansione del grafico delle transazioni include automaticamente alcuni dati esterni alle transazioni.

In base al grafico della transazione e alla spesa UTXO futura, quale output potrebbe essere il pagamento? Gli indirizzi di questa transazione hanno una storia precedente di riutilizzo?

Questo è un esempio perfetto di come i dati esterni alle transazioni possano essere utilizzati per aiutare a determinare i pagamenti e a stabilire un output di resto. Espandete il grafico delle transazioni o seguite la spesa UTXO futura per verificare la vostra ipotesi di pagamento/resto.

Flussi UTXO e spese deterministiche

I wallet possono applicare identici script per gli output di resto e posizioni randomizzate dei resti per mantenere l'ambiguità delle transazioni semplici, ma non affrontano il legame fondamentale tra gli input e gli output usati in una transazione.

Esiste sempre un legame tra gli input e gli output di una transazione. Queste relazioni tra gli UTXO di una transazione possono essere considerate come ‘flussi’. Dove i BTC consumati dagli UTXO di input vengono trasferiti agli UTXO di output.

Fig. 3.3 - Visualizzazione del 'flusso' di UTXO tramite il grafico della transazione via OTX (TxID)

Nel caso di una transazione semplice (1 input e 2 output), il singolo input deve essere stato utilizzato per pagare entrambi gli output. I flussi dentro le transazioni di una simple spend hanno una sola interpretazione. Di conseguenza, il legame tra il singolo input e ogni output è matematicamente deterministico (certo).
Il collegamento tra input e output può essere visualizzato sul grafico delle transazioni OXT selezionando un input o un output. Anche il visualizzatore di TX su kycp.org mostra i collegamenti all'interno della transazione.

Fig. 3.4 - Visualizzazione del 'flusso' di UTXO tramite KYCP (TxID)

Spezzare collegamenti - Transazioni non deterministiche

Sebbene l'ambiguità dell'assegnazione della proprietà degli UTXO esista sempre, non si può fare affidamento sul modello di assegnazione UTXO per offuscare i flussi di Bitcoin onchain. Senza spezzare i collegamenti deterministici e introdurre ambiguità nel grafico delle transazioni, i bitcoin rimangono 'tracciabili'.

Spezzare i legami deterministici e la creare ambiguità sulle transazioni onchain richiede una struttura di transazione specifica. Il determinismo dipende dal numero di input e output delle transazioni e dalle quantità di bitcoin di ciascun UTXO.

Di per sé, le transazioni con più input e output possono creare un grafico di transazioni rumoroso. Questi tipi di transazioni non sono facilmente interpretabili senza strumenti o considerazioni speciali.

Fig. 3.5 - Esempio di transazione con molti input ed output (TxID)

Nonostante il grafico delle transazioni sia rumoroso, è possibile valutare i collegamenti deterministici tra gli UTXO delle transazioni con più input e output. Kristov Atlas è stato il primo a introdurre questo concetto con un concetto e il suo algoritmo 'CoinJoin Sudoku'.

In una coinjoin, gli utenti mettono in comune i loro fondi e collaborano per costruire una transazione. In genere creando una transazione con uguali importi per gli output. L'algoritmo CoinJoin Sudoku utilizza una branca della matematica chiamata analisi della somma dei sottoinsiemi per valutare le transazioni in base alla 'proprietà comune' degli input e degli output.
La discussione di questa matematica esula dagli scopi di questa guida, ma l'aspetto importante è che un coinjoin costruito in modo ingenuo può essere valutato per stabilire collegamenti deterministici.

Oggi, il concetto di coinjoin sudoku è stato aggiornato con l'algoritmo Boltzmann, creato dallo sviluppatore principale di OXT, LaurentMT. Boltzmann utilizza il concetto di CoinJoin Sudoku per valutare le transazioni e stabilire diversi parametri relativi alla privacy.

Nei coinjoin realizzati correttamente, esiste ancora un legame tra input e identici output, ma questi legami sono di tipo probabilistico e non deterministico. L'algoritmo di Boltzmann calcola una matrice (Link Probability Matrix o LPM) per stabilire una relazione tra gli input e gli output di una transazione.

Un output LPM di una transazione si trova nella pagina TRANSACTION di OXT. Nella scheda INPUTS&OUTPUTS, il sottoinsieme di collegamenti tra un input e un output può essere visualizzato facendo clic sulla "CHAIN ICON" a destra dell'UTXO desiderato.

Fig. 3.6 - Subset delle matrici LPM di OXT (TxID)

L'LPM per gli UTXO selezionati nelle transazioni valutate può essere trovato anche selezionando gli input e gli output nel grafico delle transazioni OXT (vedi Fig. 3.3). Una visualizzazione dell'intero LPM prodotto dall'algoritmo di Boltzmann è disponibile su kycp.org.

Fig. 3.7 - Flusso di UTXO e LPM via KYCP (TxID)

Entropia - CoinJoin con importo uguale di output e quando è appropriato applicare il CIOH

In una coinjoin di pari importo, più utenti collaborano per creare una transazione che mette in comune i loro fondi e spezza i legami deterministici tra l'input della transazione e l'uguale output.

Includendo più utenti, queste transazioni rompono anche il CIOH. L'ipotesi che gli input delle transazioni che potrebbero essere coinjoin siano controllati da un singolo wallet potrebbe portare a un cluster di wallet falso positivo da parte del CIOH.

Per evitare questo problema, un analista potrebbe applicare un'euristica di output uguale alle transazioni che potrebbero essere coinjoin. Tuttavia, tutte le transazioni che hanno più uscite uguali non sono necessariamente coinjoin. Se costruite in modo ingenuo, le transazioni con più uscite uguali possono ancora avere collegamenti deterministici tra gli input e gli output uguali, il che dimostra che una transazione non è una coinjoin.

Fig. 3.8 - Transazione con output di pari importo e collegamenti deterministici (TxID)

Invece di clusterizzare erroneamente una transazione o di escludere ingenuamente le transazioni con output identici, gli analisti possono valutare realmente le transazioni con parametri di coinjoin utilizzando Boltzmann.

Boltzmann utilizza efficacemente l'analisi della somma dei sottoinsiemi per porre la domanda: Esistono più modi (interpretazioni) in cui gli input di una transazione avrebbero potuto pagare gli output di questa TX?

Se una transazione ha più interpretazioni del flusso intra-UTXO, Boltzmann assegnerà alla transazione un punteggio di entropia maggiore o uguale a 0. Il concetto di entropia deriva da un modello mentale termodinamico. In questo modello, il numero di interpretazioni può essere considerato come microstati del macrostato complessivo della transazione.

L'entropia può essere vista come una metrica che misura la mancanza di conoscenza da parte dell'analista dell'esatta configurazione della transazione osservata, in questo caso transazioni con entropia presentano proprietà di coinjoin e collegamenti deterministici interrotti. I parametri di coinjoin sono la prova che una transazione ha più utenti che contribuiscono agli input della transazione. In via prudenziale, gli input delle transazioni con entropia non dovrebbero essere raggruppati dal CIOH.

Fig. 3.9 - Valutazione di un coinjoin relativo a un dark wallet, fatta con KYCP (TxID)

Interpretazione delle transazioni da parte di KYCP

KYCP include una quantità significativa di informazioni sulla transazione, tra cui il riutilizzo degli indirizzi nella transazione, i collegamenti deterministici e probabilistici e le fusioni di input e output. La transazione di esempio qui sopra è una transazione di coinjoin di un dark wallet. I collegamenti deterministici per le uscite uguali sono interrotti, ma esistono ancora collegamenti deterministici tra gli input e le gli output di resto'. Si noti inoltre che gli output 1 e 3 sono inviati (uniti) nella stessa transazione futura. Ciò indica che gli stessi utenti/wallet si stanno mixando di nuovo.

CoinJoin - Uguale importo di Output (crittografia) vs. PayJoin (steganografia)

I coinjoint con uscita uguale hanno un'impronta unica onchain che può essere identificata dalla presenza di più output uguali. Ma i flussi attraverso la transazione per gli output uguali non sono deterministici. Se un analista sa di osservare un coinjoin, deve considerare che l'utente che sta cercando di rintracciare controlla una delle tante uscite uguali. Nella maggior parte dei casi questo è sufficiente a fermare un analista.

Fig. 3.10 - Grafico di un coinjoin Whirlpool (TxID)

Quando un analista si imbatte in una coinjoin con output uguali, sa che viene utilizzata una tecnica di privacy, ma non può interpretare in modo affidabile la transazione. In questo modo, i coinjoin di uguale importo sono simili alla crittografia. Gli osservatori di messaggi criptati sanno che esiste un messaggio (possono osservare il coinjoin) ma non possono decifrare il messaggio (interpretare in modo affidabile i flussi della transazione).

L'altro tipo di coinjoin è chiamato payjoin o pay-to-end-point o Stowaway in Samourai Wallet. Le payjoin consistono in una transazione collaborativa tra l'utente che effettua un pagamento e quello che lo riceve. Sulla blockchain, molte payjoin non hanno schemi distinguibili o euristiche applicabili.

In effetti, le payjoin sono indistinguibili da una normale transazione in cui un utente spende più UTXO. Senza un'impronta di transazione distinguibile onchain, un analista può applicare erroneamente il CIOH a questo tipo di transazioni e ritenere erroneamente che tutti gli input siano controllati dallo stesso utente.

In questo modo le transazioni payjoin sono una tecnica steganografica. La steganografia è il processo di occultamento di un messaggio segreto (il fatto che si sia realizzato un coinjoin) all'interno di dati che appaiono altrimenti normali (una normale transazione che spende più input). Poiché le payjoin non hanno un'impronta affidabile onchain, spesso risultano in falsi cluster da parte del CIOH.

Altre tecniche - "Rompere" il grafico delle transazioni

I custodial tumblers, spesso chiamati genericamente mixers, sono una delle più antiche tecniche di privacy utilizzate a livello applicativo. Lo scopo dei tumbler è quello di fare una specie di swap. Gli utenti depositano i fondi nel tumbler e (si spera) ricevono in cambio UTXO diversi con una nuova cronologia delle transazioni. Idealmente, il processo di swap si traduce in un grafico 'spezzato' delle transazioni che interrompe il legame tra i depositi e i prelievi di un utente.

Queste tecniche hanno anche reso popolare il concetto di 'taint'. Gli utenti di tumbler possono ricevere inconsapevolmente UTXO con una 'storia problematica' come parte del loro swap. I lettori interessati possono vedere le nostre valutazioni di due dei più grandi custodial tumbler (ChipMixer e Blender) dalla nostra indagine sul Kucoin Hack.

Ulteriori miglioramenti della privacy, come i coinswap, mirano a rompere il grafico delle transazioni in modo noncustodial. Queste tecniche sono ancora agli inizi. Senza ulteriori misure di protezione, questi scambi teorici soffriranno degli stessi problemi di scambio di 'taint' dei tumblers. Questa sezione verrà aggiornata man mano che verranno implementate altre tecniche.

Considerazioni sulla Parte 3

Nella Parte 3 abbiamo introdotto i numerosi strumenti in grado di sconfiggere le principali euristiche impiegate nella chain analysis.

L'euristica di individuazione del resto può essere sconfitta evitando gli importi arrotondati di pagamento, creando transazioni con tipi di script di uscita delle modifiche identici e randomizzando le posizioni di uscita di resto e pagamento vero e proprio.

I coinjoin a con output di pari importo sono transazioni collaborative che coinvolgono più utenti. Rompendo i collegamenti deterministici, queste transazioni creano grafi di transazioni ambigui. Coinvolgendo più utenti, sconfiggono il CIOH.

Anche le transazioni payjoin sono transazioni collaborative. Coinvolgono l'ordinante e il beneficiario nella creazione di una transazione e hanno la stessa impronta digitale di una normale spesa a più input. Senza un'impronta digitale identificabile, queste transazioni vanificano il CIOH.

La parte 4 tratta di:

  1. Le analisi che necessitano di un "punto di partenza"
  2. Le implicazioni per la privacy dell'invio e della ricezione di pagamenti
  3. Come le tecniche di privacy esistenti possono mitigare molti dei problemi discussi nella guida

31 febbraio | Milano Trustless

Se non diversamente specificato, il contenuto di questo articolo è concesso in licenza ai sensi del CC BY-SA 4.0