8 metodi con cui il vostro INDIRIZZO DI RESTO può essere IDENTIFICATO

I trasferimenti in Bitcoin sono molto simili a quelli bancari tradizionali: in entrambi i casi sono composti da input (entrate) e output (uscite).
La differenza sta nel modo in cui i fondi vengono spostati.
Nel caso dell'attività bancaria tradizionale, viene sempre inviato l'importo esatto che l'utente vuole pagare (non viene generato alcun resto o restituzione), mentre in Bitcoin è come pagare in contanti: immaginate di acquistare con una banconota da 10 dollari un articolo da 7 dollari: in quella transazione il commerciante dovrà darvi 3 dollari di resto.
In Bitcoin l'indirizzo di pagamento è quello a cui si inviano i 7 dollari e l'indirizzo di resto è quello in cui vengono depositati i 3 dollari del mio esempio. L'indirizzo di resto serve come indizio alle spie della blockchain per ottenere informazioni sulle spese, sui risparmi e forse sull'identità personale degli utenti di Bitcoin.

Cosa succede se scoprono il mio indirizzo di resto?
Il rilevamento dell'indirizzo di resto, consente all'avversario di avere un punto di partenza per tenere d'occhio le transazioni future. Da quell'indirizzo, una spia può sapere quanti risparmi avete, le somme che spendete, l'exchange che utilizzate, se avete inviato le vostre monete ai servizi Coinjoin e persino quale portafoglio utilizzate. Come potete vedere, un errore nella gestione del resto in una transazione Bitcoin può essere sufficiente a creare un problema di perdita di privacy.
Metodi per identificare la direzione del resto
1. Euristica delle ombre (riutilizzo di un indirizzo)
La sua premessa è che in ogni transazione Bitcoin in cui si osserva che un indirizzo è riutilizzato (input di diverse transazioni) quell'indirizzo è l'indirizzo di pagamento. Pertanto, l'indirizzo che viene usato per la prima volta è un output di resto.
Questa ipotesi è fondata perché il software del portafoglio crea automaticamente nuovi indirizzi per ricevere i resti. Mentre gli indirizzi di pagamento vengono scelti manualmente e inviati tra le persone, che per ignoranza o apatia possono consegnare un indirizzo già utilizzato.
Come combatterlo?
- Non riutilizzate gli indirizzi quando ricevete un pagamento.
- Quando si effettua un pagamento, verificare prima che l'indirizzo fornito dalla controparte (destinatario) non sia stato riutilizzato.
- Utilizzate un portafoglio che genera nuovi indirizzi pubblici ogni volta che ricevete un pagamento.
- Non utilizzate paper wallet o indirizzi statici per ricevere pagamenti o donazioni.
2. Impronta digitale del wallet
Una spia può tracciare l'impronta digitale che il wallet crea durante una transazione e utilizzare queste informazioni per rilevare l'output di resto. Questo perché i diversi software wallet non creano sempre le transazioni esattamente nello stesso modo.
Esempio di un indirizzo SegWit (che inizia con '3') con un pagamento multisig 2-of-3 su una transazione con due output: un output va a un indirizzo SegWit (inizia con '3') multisig 2-di-3 e l'altro va a un indirizzo SegWit multisig 2-di-2.
Gli script (diversi) dei due output sono una forte indicazione di quale sia l'indirizzo di resto.
Come combatterlo?
- Evitare di utilizzare script insoliti per effettuare pagamenti quotidiani. Usate il multisig solo per i vostri risparmi a lungo termine.
3. Numeri arrotondati
Di solito l'importo dei pagamenti è in numeri tondi, quindi il resto sarà un numero non tondo. Questo è potenzialmente utile per trovare l'output del resto.
L'importo può essere un numero tondo in un'altra valuta (fiat, altcoin).
Come combatterlo?
- Evitare di effettuare pagamenti con numeri tondi (in termini di BTC o di valuta fiat).
- Utilizzando portafogli che dispongono di strumenti PayJoin: Stonewall, StonewallX2 e Stowaway, che consentono di offuscare l'importo dei pagamenti.
4. Aumento delle commissioni di mining (RBF/CPFP)
Se si utilizzano RBF o CPFP per accelerare la conferma di un pagamento, l'avversario può osservare le transazioni non confermate, vedere la transazione iniziale a tariffa ridotta e la nuova transazione a tariffa elevata (che sarà confermata più in fretta). L'output con l'importo ridotto potrebbe essere quello del resto.
Come combatterlo?
- Controllate la mempool prima di scegliere la fee di mining da pagare per la vostra transazione.
- Utilizzate un portafoglio che vi permetta di scegliere la tariffa di mining e vi mostri approssimativamente quanti blocchi ci vorranno per la conferma.
- Evitare di utilizzare RBF e CPFP.
- Ridurre l'importo di entrambi gli output (pagamento e resto).
- Ridurre solo l'importo del pagamento (in un modello mittente paga CPFP).
5. Euristica degli ingressi non necessari (euristica del resto ottimale)
Se si utilizza più di un input per pagare un importo che è stato regolato con uno solo, l'avversario saprà che l'output di pagamento è quella con il valore più alto e l'output di resto è quella con il valore più basso.
Come combatterlo?
- Aggiungete altri input fino a quando l'output change sarà superiore a qualsiasi input. Sfortunatamente, questo costa di più in termini di commissioni per il mining e può essere fatto solo se il portafoglio possiede effettivamente altri UTXO.
- Utilizzate portafogli che vi permettano di selezionare le monete in modo da scegliere l'UTXO da spendere in base all'importo da pagare (spendete l'intero UTXO per quanto possibile).
- Utilizzare un portafoglio che, che per impostazione predefinita, genera transazioni con l'importo più elevato possibile in base alla cifra da pagare. Questo fa sì che l'output di resto sia più alto dell'output di pagamento e aumenta la negabilità plausibile delle transazioni.
6. Script diversi
L'uso di un indirizzo di resto con uno script diverso da quello dell'indirizzo pagato rende più facile sapere quale output (indirizzo) è il resto.
Come contrastarlo?
- Utilizzando un indirizzo di resto con lo stesso formato dell'indirizzo di pagamento, è possibile nascondere quale sia uno e quale sia l'altro.
- Se non potete scegliere il formato dei vostri indirizzi di resto, chiedete al pagatore (la vostra controparte) di fornirvi un indirizzo pubblico con un formato simile a quello dei vostri indirizzi di resto.
- Utilizzate portafogli che, per impostazione predefinita, generano automaticamente indirizzi di resto simili a quelli di pagamento.
7. Errori del wallet
Alcuni portafogli gestiscono le monete in modo poco chiaro:
- collocano l'indirizzo di resto all'ultimo posto della transazione.
- Non supportano i tre formati di indirizzo disponibili in Bitcoin (legacy '1', SegWit nativo 'bc1q' e SegWit '3' compatibile).
- Aggiungono input nella transazione finché non viene generato un importo prestabilito per l'output di resto.
Come combatterlo?
- Utilizzate software che supportino tutti e tre i formati di indirizzo e che vi permettano di scegliere il formato dell'indirizzo di resto.
8. CoinJoin di importi uguali
Le transazioni CoinJoin con output uguali rivelano l'output relativo al resto, perché è quello che non ha lo stesso valore.
Come combatterlo?
- Utilizzando strumenti ConJoin in cui il resto non partecipa alla transazione (Whrilpool di Samourai/Sparrow è una buona scelta).
Riferimento:

Don't trust, Verify