Se con Bitcoin si riesce ad aumentare il grado di privacy delle proprie transazioni attraverso alcuni accorgimenti, con Ethereum è praticamente impossibile se non usando tool come Tornado Cash.
La privacy nei pagamenti è un tema che si appresta a divenire sempre più importante alla luce dei cambiamenti in atto nelle società occidentali. I governi stanno spingendo sempre più per l’utilizzo delle carte di credito e dei pagamenti elettronici in generale. Il contante rimane il re dei pagamenti anonimi, al contrario i pagamenti elettronici sono quanto di più tracciabile si possa immaginare.
Ethereum, al contrario di Bitcoin, non utilizza il modello UTXO (Unspent Transaction Output), ma un sistema simile ai tradizionali conti bancari. In sostanza, ogni account invia e riceve trasferimenti diretti di valore e di informazioni con ogni cambiamento dello stato della blockchain di Ethereum.
Questa scelta è dovuta al fatto che Ethereum utilizza un linguaggio Turing Complete e con applicazioni decentralizzate che contengono un proprio stato e codice arbitrario. Il modello UTXO limiterebbe fortemente la capacità di esecuzione degli smart contract.
L’unico modo attualmente possibile per oscurare parzialmente le transazioni su Ethereum è quello di passare da un exchange o di utilizzare un mixer tradizionale che semplicemente mescola gli output delle transazioni.
Entrambi i metodi, oltre ad offrire un limitato grado di privacy che con strumenti appositi di analisi può essere facilmente violata, hanno un elevato rischio di controparte. Sia gli exchange che i mixer attualmente disponibili funzionano con riserve di criptovalute custodite da terze parti.
Tornado Cash e le ZK-SNARKS
Tornado Cash è una dApp che implementa le prove di zkSNARKs per offuscare le transazioni. Questa crittografia, utilizzata anche da Zcash, permette di generare una prova che dimostra che si è a conoscenza di un segreto senza rivelarlo. In questo modo Tornado Cash rende invisibili i collegamenti tra mittente e destinatario di una transazione. I fondi vengono depositati su uno smart contract e viene generata una nota che permette di ritirare i fondi su un address diverso, senza lasciare alcun link con la transazione originale.
La dApp suggerisce diversi metodi per aumentare il proprio grado di privacy, e per dare maggiore consapevolezza all’utente fornisce automaticamente l’indirizzo IP dal quale ci si collega.
Grazie alla versione 2 rilasciata lo scorso dicembre, sono ora disponibili ETH, DAI, cDAI, USDC, cUSDC e USDT (ulteriori token ERC20 verranno aggiunti in futuro) e, grazie alla EIP-1108 introdotta con il recente fork di Istanbul, è stato ridotto il GAS necessario per le transazioni da 750k a 300k.
Nella prova che abbiamo effettuato, il costo del GAS per effettuare una transazione anonima con Ethereum è stato pari a 1,3 $, un valore molto basso che rende l’anonimizzazione accessibile per qualsiasi importo.
Oltre al fatto che, come chiaramente dichiarato, si tratta di un software sperimentale, i limiti della dApp in questione sono negli importi che devono essere preselezionati: ad esempio, per ETH sono 0.1, 1, 10 e 100 ether.
Nel riquadro a fianco del campo di deposito è mostrato il livello di anonimizzazione di ciascun importo, cioè con quante altre transazioni verrà mescolato il nostro output. Il livello maggiore di privacy si ottiene con 0.1 ETH, ma anche volendo fare una transazione con 100 ETH l’anonimizzazione è supportata da un pool di 40 transazioni.
Inoltre, come evidenziato da una delle audit, la sicurezza delle zkSNARKs di Tornado Cash è legata al cosiddetto trusted setup generato dagli sviluppatori. Un utente malintenzionato in possesso dei parametri utilizzati per generare questo valore (che potrebbero non essere stati distrutti dai dev) sarebbe in grado di generare delle prove fittizie e quindi ritirare i diversi depositi custoditi nello smart contract.
Questo problema, che affligge la maggior parte dei progetti che utilizzano gli zkSNARKS è stato preso in seria considerazione dal team che ha dato la sua adesione alla cerimonia di Trusted Setup “Perpetual Powers of Tau” che coinvolge una vasta comunità di sviluppatori.
Questo forse non si potrà risolvere fino a quando HALO, la rivoluzionaria scoperta del team di Zcash, non sarà stata verificata dalla comunità scientifica e implementata per generare prove a conoscenza zero ricorsive senza bisogno di alcun Trusted Setup.