Un'Introduzione alle Transazioni Confidenziali
Home
Articoli
Un'Introduzione alle Transazioni Confidenziali

Un'Introduzione alle Transazioni Confidenziali

Avanzato
Pubblicato Feb 10, 2020Aggiornato Dec 28, 2022
6m

Contenuti


Introduzione

Spesso la trasparenza del sistema è considerata un aspetto critico per il funzionamento di una blockchain. Questo significa che ogni nodo sul network può possedere una copia e verificare che nessuna regola venga infranta. Per molti registri distribuiti, chiunque può visitare un block explorer online che permette di cercare attraverso blocchi, transazioni e indirizzi.

Per quanto concerne la privacy, questo non è ideale. In un sistema come Bitcoin, ogni transazione può essere ricollegata alla precedente. Le monete non sono tecnicamente fungibili, ovvero ciascuna può essere collegata a specifiche transazioni. Nessuno può impedirti di inviare bitcoin, ma possono rifiutare di accettare la tua transazione se quelle monete non passate in precedenza da un indirizzo in una lista nera.

Nella peggiore delle ipotesi, una mancanza di fungibilità potrebbe incidere profondamente sulle fondamenta stesse del sistema. Monete pulite potrebbero valere di più, mentre quelle più vecchie diventerebbero meno preziose in base alla loro storia.

La privacy in Bitcoin è spesso sopravvalutata. Non solo è possibile rintracciare le monete, ma anche gli utenti. Essi sfruttano la pseudonimità (indirizzi pubblici visibili invece di nomi), ma questo sistema non privo di difetti. Tecniche di analisi sofisticate possono, con precisione sempre maggiore, raggruppare indirizzi nel tentativo di deanonimizzare entità nel network.

Un aggiornamento proposto per rendere le transazioni davvero private sono le Transazioni Confidenziali.


Cosa sono le Transazioni Confidenziali?

Le Transazioni Confidenziali (CT) sono state proposte per la prima volta dal CEO di Blockstream Adam Back nel 2013, per poi essere approfondite dallo sviluppatore Bitcoin Gregory Maxwell. Mawell ha definito i problemi menzionati nella sezione precedente (fungibilità e pseudonimità debole) e ha proposto una soluzione. Gli importi trasferiti potrebbero essere nascosti al network generale per fare in modo che solo le parti coinvolte nella transazione conoscano quanto è stato trasferito.

In circostanze normali (con transazioni visibili al pubblico), è facile per un nodo verificare che l'importo ricevuto non superi l'importo inviato. Se Alice vuole inviare 0,3 BTC a Bob, prende un output non speso (supponiamo 1 BTC) e lo rombe in due parti: 0,3 da inviare a Bob, e 0,69 che sarà rispedito a lei (con il resto speso come commissione di mining).

Questa è semplice algebra per gli altri nodi: 1 è maggiore di 0,3 + 0,69, le firme sono tutte corrette, e gli input di Alice non sono già stati spesi da qualche altra parte, quindi la transazione deve essere valida. Quando gli importi sono nascosti, però, le cose non sono così semplici. Come possiamo valutare se un importo sconosciuto è pari o supera la somma di altri due importi sconosciuti?


Una panoramica sulla crittografia coinvolta

Per nascondere i dati, è necessaria la crittografia. Tuttavia, i metodi tradizionali sono simili a mettere documenti in una cassaforte: una volta chiusi dentro, diventano inutilizzabili fino a quando non vengono rimossi. Quello di cui abbiamo bisogno per far funzionare le Transazioni Confidenziali è una cassaforte digitale i cui contenuti non vengano rivelati, ma le cui proprietà possano essere verificate da un estraneo.

La risposta sta precisamente nella crittografia omomorfica, in uno schema chiamato Pedersen commitment. Questo tipo di cifratura permette a un estraneo di eseguire operazioni su dati cifrati (che non possono vedere) per una serie di scopi. 

Una hash regolare può essere utilizzata per cifrare i dati che vuoi rivelare in seguito. Supponiamo di voler annunciare una competizione sui social media, in cui chiunque indovini il tuo exchange preferito vincerà un premio di 0,01 BTC. I partecipanti potrebbero essere scettici in quanto potresti semplicemente leggere le risposte al termine della competizione e scegliere un exchange che non è stato menzionato.

Quello che puoi fare è fornire ai tuoi follower una hash: una stringa di numeri e caratteri in apparenza casuali che fa riferimento a un input specifico. Basta inserire il tuo exchange attraverso una funzione per produrre un determinato output. Illustreremo questa azione con l'algoritmo SHA256:


f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191


Guardando questa stringa, non hai alcuna idea di cosa fosse l'input. Né puoi invertire la funzione per scoprirlo. Se conosci che l'input era“Binance”, però, puoi facilmente controllare che la sua hash corrisponda a quella presentata sopra. In questo modo, i tuoi follower hanno la garanzia che non cambierai la tua risposta al termine della copmetizione – dato che farlo produrrebbe un output completamente diverso.

Realisticamente, però, questo non è molto sicuro. Anche se i tuoi follower non possono decodificare l'algoritmo, possono creare una lista di possibili exchange e inserire ciascuno nella funzione di hash fino a quando non ottengono una corrispondenza. Possiamo ridurre la probabilità di questo esito aggiungendo alcuni dati casuali chiamati fattore accecante ai dati che andremo a inserire nella funzione di hash. 

Se inseriamo “Binance is my favorite exchange I love it more than any other exchange 2#43Wr”, diventa molto più difficile per un estraneo indovinare (e per 0,01 BTC è molto improbabile che qualcuno ci provi).

Un Pedersen commitment ci permette di aggiungere gli input dietro agli impegni. Come illustra Maxwell:


C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)

Dove BF è il fattore accecante e D è il dato


Ci sono alcuni altri passi da qui che coinvolgono la crittografia a curva ellittica e prove di gamma, ma l'idea di base è che un utente ha un Pdersen commitment per il proprio indirizzo. Quando invia fondi, vengono creati due commitment aggiuntivi (uno per l'indirizzo del resto da ritornare all'untente, e uno per l'indirizzo di destinazione). 

Nessuno sa quanto viene trasferito, ma può controllare che i commitment del resto e della destinazione (la parte sinistra dell'equazione di Maxwell) equivalgano all'indirizzo di origine (il lato destro dell'equazione). Se questo corrisponde correttamente, la transazione dell'utente è valida, in quanto è possibile provare che gli input sono uguali agli output.


Cosa possono fare le Transazioni Confidenziali?

Se le Transazioni Confidenziali venissero implementate in Bitcoin, potremmo utilizzare un sistema molto più privato. Sia gli input che gli output sarebbero nascosti dal network generale, e le voci del registro sarebbero offuscate - ma i nodi potrebbero comunque verificarne l'autenticità. Con questo enorme migliroamento della privacy, i bitcoin potrebbero effettivamente diventare fungibili, in quanto l'analisi della catena non rivelerebbe più la storia di una data unità. 

Per quanto riguarda l'integrazione delle Transazioni Confidenziali nel protocollo, attualmente non sembra probabile. Con questa funzionalità aggiutna, le transazioni sono molto più grandi di quelle standard – dato lo spazio limitato sui blocchi, questo aumenterebbe solo la domanda. Richiederebbe inoltre che la maggioranza dei partecipanti accetti di modificare il codice, un compito che tradizionalmente si è rivelato difficile.


In chiusura

Le transazioni confidenziali hanno visto alcune iterazioni in altre criptovalute e in sidechain di Bitcoin. Per esempio, Monero le utilizza in combinazione con costrutti chiamati firme ad anello per raggiungere l'anonimità e la fungibilità. La sidechain Liquid le implementa per una maggiore privacy, e MimbleWimble le estende per gli stessi scopi.

Per i vantaggi che apportano, le Transazioni Confidenziali sono accompagnate dal compromesso di una più grande impronta. Le criptovalute hanno spesso difficoltà per quanto riguarda scalabilità e prestazioni al livello di base, e una più grande dimensione delle transazioni non è certo ideale. Nonostante questo, i sostenitori della privacy ritengono che sia fondamentale nascondere gli importi delle transazioni e i partecipanti per rendere davvero le criptovalute una moneta fungibile.