Tornado Cash: transazioni anonime su EthereumTempo di lettura: 12 min.

Ti sei mai chiesto come si possono inviare transazioni anonime su Ethereum? Se ad esempio voglio fare un regalo a un amico senza farlo sapere a nessuno? Tornado Cash è al momento la migliore risposta a questi interrogativi...

Tornado Cash è uno strumento innovativo ed efficace per inviare transazioni anonime su Ethereum.

Uno dei più ricorrenti luoghi comuni in ambito di criptovalute riguarda proprio l’anonimato. Le transazioni sono davvero anonime?

Testate editoriali lontane dal settore, che di tanto in tanto si avventurano a discutere di un argomento piuttosto complesso, sono solite parlare di anonimato delle criptovalute.

Al concetto di anonimato intendono ricondurre un’accezione negativa. Ricollegano con leggerezza gli strumenti blockchain ai temi dell’evasione, delle attività illecite e del finanziamento al terrorismo.

(Pseudo)anonimato

La verità è che le criptovalute, come bitcoin e ether, non sono anonime. È più corretto parlare di pseudoanonimato.

Da un lato è vero che i cosiddetti “address” non sono nominativi. Costituiscono solo una stringa alfanumerica alla quale non è intestata l’identità del suo utilizzatore.

D’altro canto, però, la blockchain è pubblica. È un registro consultabile da chiunque, e in qualunque momento, attraverso un semplice “block explorer” come Etherscan.

Se quindi la blockchain è totalmente trasparente, vuol dire che si possono “spiare” tutti i movimenti effettuati da (e verso) un indirizzo al quale si è riusciti a collegare un’identità a monte.

Oggi la stragrande maggioranza degli utenti compra criptovalute attraverso i cosiddetti “exchange”. Oramai quasi tutti questi intermediari sono tenuti per legge a identificare i propri clienti (c.d. KYC).

Quando un utente compra delle criptovalute attraverso un broker al quale ha fornito la propria identità, di fatto sta sacrificando la sua privacy. Le successive operazioni sulla blockchain potranno essere ricondotte in qualche modo ad egli.

Il prelievo dei fondi verso un proprio indirizzo esterno all’exchange serve a poco o nulla. Chi gestisce l’exchange sa che quell’indirizzo è posseduto da un tizio con un nome e un cognome.

Mancanza di privacy sulla blockchain vuol dire rendere conoscibili a tutti le proprie abitudini di spesa, oppure le somme che si ricevono se si gestisce un’azienda.

L’assenza di privacy compromette anche altri aspetti, come il perseguimento di obiettivi aziendali.

Pensa a un fondo di investimento che vuole compiere operazioni attraverso la blockchain. La trasparenza nelle transazioni vanificherebbe l’esigenza di non rivelare le strategie che sta intraprendendo.

Le criptovalute, in definitiva, non sono realmente anonime come si potrebbe credere. La totale trasparenza della blockchain può costituire un limite per tutte quelle attività che presuppongono un livello più o meno elevato di privacy.

Gli espedienti tradizionali

Nel corso degli anni si sono adottati diversi stratagemmi per rimediare a questa lacuna. È stato più facile trovare qualche espediente su Bitcoin, che usa il modello UTXO.

Nel modello UTXO ogni transazione spende output di transazioni precedenti, generando nuovi output che potranno essere spesi da altre transazioni in futuro.

Poiché nel modello UTXO un utente può generare e utilizzare un nuovo indirizzo per ogni transazione, è più difficile collegare gli account.

Diverso è il discorso per Ethereum, il quale utilizza il modello “Account Based”.

La gestione del saldo nel modello Account Based, è molto più familiare rispetto allo schema UTXO di Bitcoin. Funziona in maniera simile a un conto bancario tradizionale.

Il modello Account Based di Ethereum implica che le transazioni possano essere anonimizzate solo per il mezzo di exchange oppure attraverso i cosiddetti “mixer”.

Un mixer mescola i fondi provenienti da diversi utenti e transazioni, prima che ogni transazione raggiunga la destinazione prevista. Dopo aver mixato, diventa difficile stabilire quali fondi siano andati dove e in quale importo.

Per migliorare l’anonimato, molti mixer semplicemente spammano un gran numero di transazioni – apparentemente casuali – attraverso più indirizzi.

Sebbene sia un miglioramento, queste transazioni sono ancora tracciabili sulla blockchain pubblica. L’identità dell’utente potrebbe essere “scovata” attraverso dell’analisi forense.

Molti di questi servizi sono peraltro gestiti da una terza parte centralizzata. Chi li controlla potrebbe fuggire con i fondi degli utenti o semplicemente tenerne traccia.

Il grado di privacy che si ottiene è davvero limitato.

Tornado Cash e zkSnark

Tornado Cash compie un passo in avanti rispetto ai tradizionali servizi di mixing.

Consente di inviare ether e altri token in forma anonima. Utilizza una tecnologia non custodiale e basata su una complessa crittografia: zkSnark.

Nella crittografia, le prove zero-knowledge ti permettono di convincermi che sai qualcosa, o che hai fatto qualcosa, senza rivelarmi quale è la tua cosa segreta.

L’importanza della zero-knowledge consiste nel garantire privacy in situazioni in cui altrimenti dovresti rivelare informazioni riservate.

Attraverso zkSnark Tornado Cash migliora la privacy delle transazioni. Rompe il collegamento on-chain tra l’indirizzo mittente e quello di destinazione.

Tornado Cash si basa su uno smart contract che accetta depositi in ether o altri token, i quali possono essere successivamente ritirati da un indirizzo diverso.

Quando si prelevano i fondi dal nuovo indirizzo, non c’è modo di collegarlo al deposito originario.

Questa soluzione di privacy non è custodiale. Lo smart contract è completamente trustless. Assicura all’utente di conservare il totale controllo sui fondi che ha depositato.

Quando si effettua un deposito, l’utente genera un segreto e invia il suo hash (chiamato “committment” e traducibile come impegno o obbligazione di pagamento), insieme all’importo del deposito, allo smart contract di Tornado Cash.

Lo smart contract accetta il deposito e aggiunge questo impegno di pagamento al suo elenco di depositi.

È nel momento in cui l’utente decide di prelevare i fondi che entra in gioco la tecnologia basata su zkSnark.

L’utente deve fornire la prova che possiede un segreto per un “committment” (non ancora speso) presente nell’elenco dei depositi dello smart contract.

Attraverso la tecnologia zkSnark è possibile dimostrarlo senza rivelare quale esatto deposito corrisponda a quel segreto. Le prove zero-knowledge consentono di provare la conoscenza di qualcosa senza rivelare cosa sia la cosa segreta.

Lo smart contract controlla la prova e trasferisce i fondi depositati all’indirizzo specificato per il prelievo.

Un osservatore esterno non sarà in grado di determinare da quale deposito provenga il prelievo effettuato.

Indicazioni passo passo

Inviare i fondi

La dApp Tornado Cash è estremamente semplice e intuitiva.

Accedendo alla pagina web di Tornado Cash, compare la seguente schermata:

Devi selezionare la criptovaluta che vuoi inviare (ad esempio ETH) e la quantità.

Per quanto riguarda la quantità, sono consentiti trasferimenti solo per “tagli standard”. Ad esempio per ETH sono ammessi importi di 0.1 ETH, 1.00 ETH, 10.00 ETH e 100.00 ETH.

Ad ogni importo standard corrisponde un diverso “anonimity set”:

L’anonimity set è sostanzialmente una misura del livello di anonimato. Indica quanti depositi dello stesso importo sono ancora in attesa del prelievo, ossia da quanti depositi possono provenire i tuoi ether mixati (quando deciderai di prelevarli).

Maggiore è il numero di depositi, maggiore è il livello di anonimato che otterrai!

Dopo aver cliccato su “Deposit” si apre una finestra che mostra la “nota del deposito”:

Devi salvare la nota che ti viene mostrata. Dovrai riportare la nota (vedi sotto) nel momento in cui deciderai di ritirare i tuoi fondi.

Se smarrisci la nota non potrai più recuperare i fondi che hai inviato. È comunque possibile ricostituirla accedendo a Tornado Cash dall’account dal quale hai inviato i fondi.

Prelevare i fondi

Per prelevare i fondi devi innanzitutto recarti nella sezione “Withdraw” dell’applicazione:

Nel campo “Note” devi inserire la nota salvata in precedenza. Nel campo “Recipient Address” devi digitare l’indirizzo verso cui vuoi trasferire i fondi.

Andando sulle impostazioni di prelievo (icona in alto a destra della scheda “Withdraw”), puoi notare che esistono due opzioni per prelevare:

  1. Relayer: Attraverso l’opzione “Relayer” (che è impostata di default) puoi ritirare i fondi verso un indirizzo del tutto nuovo e “vergine”. Infatti non dovrai pagare le fee della transazione dal tuo account. Vuol dire che non avrai dovuto inviare preliminarmente degli ether sul tuo indirizzo, il quale quindi resta pulito senza alcuna storia di transazioni. La transazione verrà propagata da un Relayer per tuo conto, e le fee verranno decurtate dal tuo saldo su Tornado Cash.
  2. Wallet: Con l’opzione “Wallet” gli ether per pagare il gas derivano dal tuo account. Se non vuoi compromettere l’anonimato del prelievo, devi assicurarti che gli ether utilizzati non siano riconducibili in qualche modo alla tua identità.

Suggerimenti per la sicurezza

Per come è progettato, Tornado Cash affronta egregiamente i limiti di privacy delle transazioni sulla blockchain. Ma esistono problemi di privacy ad altro livello, che devono essere gestiti direttamente dagli utenti:

  • Il tuo indirizzo IP può essere considerato un’informazione pubblica: è noto a molte parti come, il tuo ISP. Usa una VPN o Tor per nascondere il tuo IP, specialmente durante un prelievo.
  • La “nota del deposito” contiene dati che possono essere utilizzati per collegare il tuo deposito al prelievo. È una buona idea assicurarsi che i dati della nota vengano distrutti dopo il completamento del prelievo.
  • Assicurati di cancellare i cookie per le dApp prima di utilizzare il tuo nuovo indirizzo. Se una dApp vede indirizzi vecchi e nuovi con gli stessi cookie, saprà che gli indirizzi provengono dallo stesso proprietario.
  • Se un un prelievo è immediatamente successivo a un deposito, è molto probabile che appartenga alla stessa persona. È preferibile attendere che vengano effettuati altri depositi successivi al tuo, prima di prelevare.
  • Attendi che sia trascorso un pò di tempo dopo il tuo deposito. Anche se sono stati effettuati altri depositi dopo il tuo, potrebbero provenire dalla stessa persona che sta spammando per far credere falsamente agli utenti che esiste un elevato anonimity set (Sybil attack). Il consiglio è di attendere almeno 24 ore prima di prelevare, per assicurarti che ci siano stati depositi effettuati da diverse persone durante quel periodo.
  • Se ci sono una serie di depositi da un indirizzo, e poi una serie di prelievi della stessa dimensione verso un singolo indirizzo, è molto probabile che siano collegati. Se devi effettuare prelievi multipli, è preferibile distribuirli e ritirarli verso indirizzi non collegati tra loro.
  • Effettuare depositi o prelievi solo durante le ore di veglia del fuso orario in cui ti trovi può ridurre il tuo anonimato. Potrebbe essere utile distribuire i tuoi depositi e prelievi in modo uniforme in tutte le ventiquattro ore del giorno.

Privacy?!

Lo sviluppo di strumenti di cosiddetta “chain analysis” solleva domande legittime circa le finalità per cui tali soluzioni verranno utilizzate.

La questione della privacy viene spesso derisa da coloro che affermano di non avere “nulla da nascondere”…

La privacy, invero, è riconosciuta come un diritto umano fondamentale. Rappresenta l’ultima linea di difesa contro le autorità tiranniche.

I governi possono avere ragioni legittime per condurre attività di sorveglianza. Ma anche le persone hanno molte buone ragioni per godere della propria privacy. Ogni parte è tenuta quindi a risponderne nei confronti dell’altra.

Che tu abbia qualcosa da nascondere o meno, la privacy è un valore da salvaguardare. Aiuta a mantenere un equilibrio tra noi persone e le autorità che riconosciamo.


DISCLAIMER: Il presente articolo ha finalità esclusivamente didattiche, in particolare di descrizione delle caratteristiche di un’appilcazione decentralizzata del panorama blockchain. Questa esposizione persegue soltanto uno scopo divulgativo, non costituendo alcun invito/sollecitazione all’utilizzo dell’applicazione descritta. Non ci assumiamo alcuna responsabilità in caso di danni derivanti da eventuali bug presenti nel codice dell’applicazione, o in caso di uso della stessa per finalità illecite di cui resta totalmente e esclusivamente responsabile l’utilizzatore.

Condividi su facebook
Condividi su twitter
Condividi su linkedin
Condividi su telegram
Condividi su whatsapp
Condividi su reddit
Giuseppe

Giuseppe

Giuseppe è laureato in giurisprudenza, da sempre appassionato di tecnologia e studioso di tematiche economiche. Stimolato dal potenziale impatto economico e sociale, si approccia al mondo delle DLT; matura particolari interessi nella nuova finanza decentralizzata legata alle tecnologie del ledger distribuito.

Vuoi approfondire le dinamiche di questo articolo?

Prenota una consulenza con un esperto del team di EtherEvolution che saprà rispondere a tutte le tue domande e risolvere ogni tuo problema.
Giuseppe

Giuseppe

Giuseppe è laureato in giurisprudenza, da sempre appassionato di tecnologia e studioso di tematiche economiche. Stimolato dal potenziale impatto economico e sociale, si approccia al mondo delle DLT; matura particolari interessi nella nuova finanza decentralizzata legata alle tecnologie del ledger distribuito.

Vuoi approfondire le dinamiche di questo articolo?

Prenota una consulenza con un esperto del team di EtherEvolution che saprà rispondere a tutte le tue domande e risolvere ogni tuo problema.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ricevi 4 video dall'evento EtherEvolution LIVE

e altre informazioni utili per capire la blockchain ed il mondo di Ethereum

Ricevi 4 video dall'evento EtherEvolution LIVE

e altre informazioni utili per capire la blockchain ed il mondo di Ethereum