Informazione
Approfondimenti
Cultura Bitcoin
Gruppo ufficiale

Privacy on-chain in pratica

La blockchain non pubblica nomi, ma chi la analizza può collegare fra loro le transazioni. Etichette, indirizzi nuovi, coin control, consolidamento per fonte, coinjoin e payjoin riducono i collegamenti che rendi pubblici.

Il capitolo in breve

Capitolo
3 di 4
Livello
Avanzato
Lettura
9 min
Domande
5

Nel capitolo precedente abbiamo collegato il wallet al nostro nodo, e le domande su saldo e cronologia non passano più da un server esterno. Resta ciò che il nodo non può nascondere: le transazioni. Per impedire la doppia spesa ogni transazione Bitcoin viene trasmessa a tutta la rete e registrata in chiaro sulla blockchain, e la privacy di chi usa Bitcoin si regge sulla separazione fra la sua identità e le transazioni che compie.

Che cosa può ricostruire chi legge la catena

Chiunque abbia un nodo può leggere la blockchain: input e output di ogni transazione, importi, momento in cui è stata registrata, indirizzi e script usati. La chain analysis parte da questi dati per seguire il percorso dei bitcoin da una transazione all’altra, cercando nelle transazioni le caratteristiche già osservate in passato.

Per farlo usa delle euristiche, cioè regole ricavate dall’osservazione o dal ragionamento. Le principali riguardano la struttura della transazione:

  • se una transazione ha più input, si presume che appartengano tutti alla stessa persona: è la regola della proprietà comune degli input, che Satoshi Nakamoto indicava già nel white paper;
  • un indirizzo che riceve più pagamenti rivela che quei fondi appartengono alla stessa persona, con pochi margini di dubbio;
  • fra gli output, un importo tondo indica il pagamento, e per esclusione l’altro output è il resto;
  • l’output che usa lo stesso tipo di script degli input è probabilmente il resto;
  • l’output più grande viene a volte letto come resto, ma da solo è l’indizio più debole;
  • ogni wallet lascia un’impronta, per esempio nel tipo di script, nell’ordine degli UTXO o nella segnalazione RBF.

Nessuna di queste regole dà una certezza. Le conclusioni dell’analisi contengono sempre una componente di probabilità, e mettere insieme più euristiche riduce l’incertezza senza eliminarla. A queste si aggiungono dati esterni alla catena, come gli indirizzi noti degli exchange o gli orari in cui un utente è attivo, che possono indicarne il fuso orario.

Il punto di aggancio più comune è il KYC. Se prelevi bitcoin da una piattaforma che ti ha identificato verso un tuo indirizzo, chi ha accesso a quei dati può collegare la tua identità a quell’indirizzo e, da lì, potenzialmente a tutta la tua attività su Bitcoin. Chiudere l’account non garantisce che i dati vengano cancellati, e verificare la cancellazione è impossibile. La blockchain resta pubblica e immutabile, quindi le transazioni di oggi possono essere analizzate anche fra anni.

Il nodo personale protegge un altro aspetto: le richieste del wallet e la trasmissione delle transazioni passano dalla tua macchina invece che da un servizio esterno. Ciò che la transazione scrive sulla blockchain resta invece visibile a tutti, ed è di questo che si occupa il resto del capitolo.

Etichettare al momento della ricezione

Un’etichetta è un’annotazione associata a un singolo UTXO che ne ricorda l’origine o la destinazione. Serve a non unire in futuro UTXO di provenienza diversa, perché spenderli insieme rivelerebbe che hanno lo stesso proprietario. Il momento per scriverla è quando il pagamento arriva.

Non esiste un metodo unico, ma l’informazione essenziale è la fonte: un prelievo da un exchange, il pagamento di un cliente, un acquisto P2P, il resto di un acquisto. Chi vuole tenere separati i fondi può aggiungere un’indicazione come “KYC” o “NO KYC”, così da distinguere i due gruppi a colpo d’occhio. L’etichetta va poi portata avanti nelle transazioni successive: un consolidamento di fondi non KYC, per esempio, si etichetta come tale.

Le etichette restano sul dispositivo: il wallet le conserva localmente e non le trasmette mai sulla rete Bitcoin.

Un indirizzo nuovo per ogni pagamento

Riusare un indirizzo permette di stabilire collegamenti certi fra transazioni diverse e di attribuire allo stesso proprietario gli UTXO che quell’indirizzo ha ricevuto. Satoshi Nakamoto lo scriveva già nel white paper: una nuova coppia di chiavi per ogni transazione serve a non collegarle a un proprietario comune. Le conseguenze sono concrete. Se ricevi sempre sullo stesso indirizzo e poi paghi un negoziante, quel negoziante può vedere tutti i fondi associati all’indirizzo e farsi un’idea del tuo patrimonio, con rischi anche per la tua sicurezza personale.

La regola è usare un indirizzo mai utilizzato per ogni pagamento ricevuto. Oggi la maggior parte dei wallet lo fa in automatico: premendo il pulsante per ricevere, il wallet propone un indirizzo inutilizzato, e dopo la ricezione ne propone uno nuovo.

Per un identificatore che deve restare fisso, come quello per le donazioni, un indirizzo Bitcoin classico espone al rischio di riuso. Le alternative che mantengono un identificatore statico senza compromettere la privacy sono la Lightning Address, i codici di pagamento riutilizzabili del BIP47 e i Silent Payments.

Scegliere gli UTXO con coin control

Quando costruisce un pagamento, il wallet sceglie da solo quali UTXO spendere. Se combina UTXO di fonti diverse, un osservatore esterno può affermare che gli input appartengono tutti allo stesso utente, e unire un UTXO ottenuto con KYC a fondi più riservati compromette la riservatezza di questi ultimi. Il coin control è la funzione che permette di selezionare a mano gli UTXO da spendere e, insieme alle etichette, di pagare con fondi della stessa fonte.

Un UTXO si può anche congelare: da quel momento non può essere usato come input di una transazione, e resta separato dagli altri fondi.

Anche il resto ha un costo in privacy, perché ogni resto rivela un indirizzo tuo collegabile agli input da cui nasce. Per questo conviene tenere separati i resti e, quando raggiungono una certa somma, consolidarli oppure spostarli su Lightning con uno swap.

La scelta degli UTXO incide anche sulle commissioni. Meno input significano meno firme e una transazione più leggera, quindi selezionare gli UTXO giusti permette di pagare meno.

Alcune scelte rendono più difficile il lavoro delle euristiche. Evitare un output di importo tondo impedisce di capire subito quale sia il resto; usare lo standard di script più recente permette di confondersi con il gruppo più numeroso di utenti; trasmettere le transazioni in momenti diversi della giornata e della settimana evita di lasciare uno schema temporale riconoscibile.

Consolidare senza cancellare le separazioni

Consolidare significa unire più UTXO piccoli in uno più grande, approfittando dei periodi in cui le commissioni sono basse per risparmiare quando saliranno. Serve anche a evitare il dust, cioè UTXO di valore così basso da non coprire il costo necessario per spenderli.

Il consolidamento, però, espone proprio il collegamento descritto dalla regola della proprietà comune degli input: la transazione mostra che tutti quegli UTXO sono tuoi. Se uno di essi arriva da un exchange, chiunque abbia accesso ai dati di quella piattaforma può scoprire che possiedi anche gli altri importi. Per questo si consolidano soltanto UTXO della stessa fonte: quelli ottenuti con KYC in una transazione, quelli acquistati P2P in un’altra.

Coinjoin, payjoin e strumenti più avanzati

Un coinjoin è una transazione collaborativa costruita per interrompere il tracciamento dei bitcoin. Più utenti mettono come input importi identici nella stessa transazione e li ricevono redistribuiti in output di valore uguale, così chi osserva non può stabilire quale output corrisponda a quale input. Durante tutto il processo ogni partecipante mantiene il controllo dei propri fondi e non corre alcun rischio di furto.

Il coinjoin interrompe la storia della moneta nel punto in cui avviene, ma non conferisce un anonimato permanente: con il tempo la privacy dell’UTXO si degrada. Per questo il coinjoin va ripetuto, e ogni nuovo ciclo a cui l’UTXO partecipa ne rafforza l’anonimato.

I mixer, invece, chiedono di consegnare i propri bitcoin a un servizio che li restituisce mescolati: per tutta la durata del processo si cede la custodia dei fondi, con il rischio che vengano rubati, e nulla garantisce che il servizio non registri i dati delle operazioni.

Un payjoin lavora invece su un singolo pagamento, costruito insieme al destinatario. Chi riceve aggiunge agli input un proprio UTXO e lo riceve indietro in output insieme all’importo pagato. A prima vista la transazione sembra ordinaria, e chi applica la regola della proprietà comune degli input conclude che appartengono tutti alla stessa persona, sbagliando. Anche l’importo resta nascosto: il pagamento reale non corrisponde a nessuno degli output, ma alla differenza fra quanto il destinatario riceve e quanto ha messo in ingresso. Il limite è che serve la collaborazione di chi riceve: se il destinatario, per esempio un commerciante, non supporta il payjoin, chi paga non può usarlo.

Verificare l’effetto prima di trasmettere

Le euristiche usate da chi analizza la catena servono anche a valutare le proprie transazioni. Mettersi nei panni dell’analista significa guardare input e output, tipi di script, importi tondi e resto, e chiedersi che cosa se ne può ricavare. Alcuni wallet aiutano a farlo prima di trasmettere: Sparrow, per esempio, mostra un diagramma della transazione con gli insiemi di input, il pagamento e gli output di resto.

Con etichette, indirizzi nuovi, coin control e consolidamento per fonte riduciamo i collegamenti che le nostre transazioni rendono pubblici. Nel prossimo capitolo, Trasmettere senza chiedere permesso, passiamo da ciò che la transazione rivela a come entra nella rete: la differenza fra regole di trasmissione e regole di validità, e che cosa succede quando una pool la filtra.

Test del capitolo

5 domande su quello che hai appena letto: tocca una domanda per aprirla. Le risposte sono tutte nel capitolo: se una non torna, il riscontro ti dice dove rileggere.

  1. Una transazione spende insieme tre UTXO. Che cosa ne deduce chi applica la regola della proprietà comune degli input?