Coin Mixing e CoinJoin Spiegati
Home
Articoli
Coin Mixing e CoinJoin Spiegati

Coin Mixing e CoinJoin Spiegati

Avanzato
Pubblicato Mar 25, 2020Aggiornato Dec 28, 2022
6m

Contenuti


Introduzione

Bitcoin viene spesso definito come contante digitale, ma questo paragone è discutibile. Se Alice paga Bob con dieci dollari in contanti, Bob non ha idea di dove siano arrivati i soldi. Se più tardi li consegna a Carol, lei non potrà dedurre che Alice ne era prima in possesso.
Bitcoin è diverso a causa della sua intrinseca natura pubblica. La storia di una determinata moneta (più precisamente, un output di transazione non speso o UTXO) può essere esaminata facilmente da chiunque. E' un po' come scrivere l'importo della transazione e i nomi dei partecipanti su un foglio ogni volta che viene usato. 
Detto questo, la pseudonimità di un indirizzo pubblico garantisce che le identità degli utenti non possano essere rivelate facilmente. Comunque, Bitcoin non è completamente privato. L'analisi blockchain cresce sempre più sofisticata ed è in grado di collegare indirizzi a identità in modo sempre più efficiente. Utilizzando varie tecniche di sorveglianza, un'entità dedicata può deanonimizzare gli utenti di criptovalute. Per porre rimedio a questo problema, nel corso degli anni sono state introdotte tecniche per infrangere i collegamenti tra transazioni.


Che cos'è il coin mixing?

In linea generale, il coin mixing può fare riferimento a qualsiasi attività che coinvolge l'offuscamento di fondi sostituendoli con altri. Tuttavia, nel contesto delle criptovalute, il coin mixing indica comunemente un servizio fornito da terze parti. Di solito, i fornitori del servizio prendono le monete degli utenti (e una piccola commissione), e restituiscono monete che non hanno collegamenti con quelle inviate. Questi servizi sono anche conosciuti come tumbler o mixer.

La sicurezza e l'anonimità di questi servizi centralizzati è ovviamente discutibile. Gli utenti non hanno alcuna garanzia che il mixer restituisca il loro denaro o che le monete rese non siano state segnate in qualche modo. Un altro aspetto da considerare quando si usa un mixer è che l'indirizzo IP e l'indirizzo Bitcoin potrebbero essere registrati da una terza parte. In fondo, gli utenti rinunciano al controllo dei loro fondi nella speranza di ricevere indietro monete non collegate.

Esiste un approccio senza dubbio più interessante, le transazioni CoinJoin, che creano un livello significativo di negazione plausibile. Ciò significa che, dopo un CoinJoin, nessuna prova può collegare con certezza un utente alle sue transazioni precedenti. Molte soluzioni di CoinJoin offrono un'alternativa decentralizzata ai mixer. Anche se potrebbe essere coinvolto un coordinatore, gli utenti non devono rinunciare alla custodia dei propri fondi.


Che cos'è un CoinJoin?

Le transazioni CoinJoin sono state proposte inizialmente nel 2013 dallo sviluppatore Bitcoin Gregory Maxwell. Nella sua discussione, ha fornito una breve panoramica sul modo in cui queste transazioni sono strutturate e su come è possibile ottenere enormi vantaggi in termini di privacy senza nessuna modifica al protocollo.
In sostanza, un CoinJoin comporta la combinazione di input da diversi utenti in una singola transazione. Prima di spiegare il come (e il perché), diamo un'occhiata alla struttura di una transazione normale.

Le transazioni Bitcoin sono costituite da input e output. Quando un utente vuole effettuare una transazione, prende i suoi UTXO come input, specifica gli output e firma gli input. E' importante sottolineare che ciascun input viene firmato in modo indipendente, e gli utenti possono impostare output multipli (destinati a diversi indirizzi).



Se analizziamo una transazione composta da quattro input (0,2 BTC ciascuno) e due output (0,7 BTC e 0,09 BTC), possiamo fare alcune supposizioni. La prima è che stiamo guardando lo svolgimento di un pagamento – il mittente sta inviando uno degli output a qualcuno, e restituendo il resto a sé stesso. Dato che ha usato quattro input, l'output più grande è probabilmente per il ricevente. Nota che mancano 0,01 BTC negli output, corrispondenti alla commissione pagata ai miner.

E' anche possibile che il mittente voglia creare una UTXO grande riunendo diverse più piccole, quindi consolida gli input più piccoli per ottenere il risultato desiderato di 0,7 BTC.

Un'altra supposizione che possiamo fare si basa sul fatto che ogni input viene firmato in modo indipendente. Questa transazione potrebbe avere fino a quattro partecipanti diversi che firmano gli input, e qui troviamo il principio che rende efficaci i CoinJoin.


Come funziona un CoinJoin?

L'idea è che più parti si coordinano per creare una transazione, fornendo ciascuna gli input e gli output desiderati. Dato che tutti gli input vengono combinati, diventa impossibile dire con certezza quale output appartiene a quale utente. Considera il diagramma riportato sotto:



Qui, abbiamo quattro partecipanti che vogliono spezzare il collegamento tra transazioni. Si coordinano tra loro (o tramite un coordinatore dedicato) per annunciare gli input e gli output che vogliono includere. 

Il coordinatore prenderà tutte le informazioni, le userà per creare una transazione, e farà firmare ogni partecipante prima di trasmetterla al network. Quando gli utenti hanno firmato, la transazione non può essere modificata senza diventare invalida. Quindi, non c'è il rischio che il coordinatore scappi con i soldi. 

La transazione funziona come una sorta di scatola nera per mischiare monete. Ricorda che di fatto distruggiamo UTXO per crearne di nuove. L'unico collegamento tra le vecchie e le nuove UTXO che abbiamo è la transazione stessa, ma, ovviamente, non possiamo distinguere tra i partecipanti. Nella migliore delle ipotesi, possiamo dire che un partecipante ha fornito uno degli input e potrebbe forse essere il nuovo proprietario di un risultante output.

Ma anche questo non è affatto garantito. Chi può dire, analizzando la transazione descritta sopra, che ci sono quattro partecipanti? Si tratta di una persona che invia i propri fondi a quattro suoi indirizzi? Due persone che effettuano due acquisti separati e restituiscono 0,2 BTC ciascuno nei propri indirizzi? Quattro persone che inviano a nuovi partecipanti, o rinviano indietro a sé stessi? Non possiamo esserne sicuri.


Privacy tramite negazione

Il fatto stesso che esistano implementazioni di CoinJoin è sufficiente per mettere in dubbio i metodi usati per analizzare le transazioni. Puoi dedurre che un CoinJoin ha avuto luogo in molti casi, ma non sai comunque nulla su chi possiede gli output. Man mano che diventano più popolari, la supposizione che diversi input siano tutti posseduti dallo stesso utente viene indebolita – un enorme balzo in avanti per la privacy nell'ecosistema in generale.

Nell'esempio precedente, possiamo dire che la transazione aveva un anonymity set di 4 – il proprietario di un output potrebbe essere uno qualsiasi dei quattro partecipanti coinvolti. Più grande è l'anonymity set, minore sarà la probabilità che le transazioni possano essere collegate al loro proprietario originale. Fortunatamente, le recenti implementazioni di CoinJoin permettono agli utenti di combinare facilmente i propri input, in modo trustless, con dozzine di altri, offrendo un alto livello di negazione. Di recente, una transazione da 100 persone è stata eseguita con successo.


In chiusura

Gli strumenti per mischiare monete sono un'importante aggiunta all'arsenale di qualsiasi utente che prende sul serio la sua privacy. A differenza degli aggiornamenti sulla privacy proposti (come le Transazioni Confidenziali), sono compatibili con il protocollo così com'è oggi. 

Per chi si fida dell'integrità e della metodologia di terze parti, i servizi di mixing sono un soluzione semplice. Per chi invece preferisce un'alternativa verificabile e non custodiale, le soluzioni CoinJoin sono superiori. Queste possono essere eseguite manualmente da utenti tecnicamente esperti, oppure usando strumenti software che si occupano dei meccanismi più complessi. Esistono già diversi strumenti che continuano a crescere in popolarità grazie al numero sempre più grande di utenti che vogliono una maggiore privacy.