Monero Stealth address

Monero Stealth Address

Oltre a Ring Signatures e Ring Confidential Transaction, una delle tante tecnologie implementate su Monero per proteggere i dati di due persone che scambiano denaro è stealth address, già introdotta nell’universo cryptocurrency con il protocollo CryptoNote. Questo articolo si focalizzerà sul come funzionano e sul perché sono stati introdotti.

Per proteggere la privacy del mittente, le Firme ad anello sono state implementate per evitare che gli input delle transazioni siano distinguibili l’uno dall’altro. Ring Confidential Transactions (RingCT), che nasconde gli importi delle transazioni, è stata implementata nel blocco #1220516 durante il gennaio 2017 e da settembre 2017, questa funzione è diventata obbligatoria per tutte le transazioni sulla rete Monero. Oltre a queste due tecniche crittografiche chiave che Monero utilizza per garantire la privacy di ogni utente Monero durante il processo di transazione, Stealth Addresses garantisce la privacy del destinatario. Questo articolo si concentrerà su come funzionano gli Indirizzi Stealth, sul perché sono stati introdotti, e discuterà alcuni dettagli non comunemente noti di questa caratteristica essenziale di Monero.

Immaginiamo di dover mandare qualche soldo per comprare un prodotto su un e-commerce. Il sistema di pagamento restituirà un indirizzo pubblico a cui mandare il pagamento al commerciante. Nel caso in cui si utilizzino blockchain trasparenti (quali per esempio Bitcoin o Ethereum), appare evidente il collegamento tra il mio indirizzo e quella del commerciante, quindi qualcuno dall’esterno potrebbe cercare di tracciare dove vengono utilizzati i miei fondi.

La blockchain trasparente

La blockchain trasparente: Bitcoin

Grazie a Ring Signatures e RingCT, la vostra privacy come mittente è protetta e l’importo della transazione è sconosciuto. Per prevenire ulteriormente qualsiasi potenziale analisi della transazione e, soprattutto, per garantire la privacy del destinatario (o, in parole povere, come e dove si spendono i fondi), Monero utilizza gli Stealth Address.

Connessione nascosta tra gli Stealth Address e i wallet

Connessione nascosta tra gli Stealth Address e i wallet

La soluzione utilizzata su Monero è quella di utilizzare la tecnica degli “Stealth address”, cioè invece di mandare la transazione all’indirizzo pubblico del commerciante, il client genera casualmente dalle chiavi pubbliche del receiver un indirizzo univoco “utilizzabile” solo una volta per un’unica transazione (da qui il nome alternativo, “one-time address”). Nella blockchain di Monero, è possibile vedere in modo chiaro e trasparente l’indirizzo univoco ma solo il ricevente e ricevitore sanno che l’indirizzo univoco appartiene alla transazione effettuata tra loro due. Un utente dall’esterno, governi e agenzie di tracking non potranno associare diversi stealth address.

Per spiegare meglio il concetto di stealth address, pensiamo di dover inviare un pacco ad un amico e ogni movimento nel sistema postale venisse tracciato. Per ricevere il pacco il mio amico mi manda il suo indirizzo. All’interno del servizio postale, è visibile lo spostamento del pacco tra me e il mio amico con i rispettivi indirizzi di casa. Questo è quello che succede su Bitcoin. Se però dicessi al mio amico di utilizzare una cassetta temporanea, nessuno associerebbe il movimento del pacco al mio amico dato che trovare il proprietario di una cassetta temporanea è difficile (a meno che non hai le chiavi).

Come vengono generati questi indirizzi one-time? Introduciamo due persone che vogliono scambiare una transazione: Maria vuole inviare un pagamento a Giorgio. Sappiamo che ogni wallet ha 4 chiavi diverse: una coppia di chiavi private (rispettivamente private spend key e private view key) e una copia di chiavi pubbliche ricavabili dall’indirizzo pubblico del commerciante. Uno stealth address viene generato attraverso le due chiavi pubbliche di Giorgio (il ricevitore) insieme a una serie totalmente casuali di dati. Ricordate la private view key menzionata precedentemente? Quella chiave viene utilizzata dal ricevitore per associare lo stealth address al suo portafoglio, ma dato che è una chiave privata solo lui può sapere effettivamente il collegamento tra lo stealth address e il suo portafoglio.

Un stealth address per un pagamento

Un stealth address per un pagamento

Ma se sono generati casualmente, è possibile che avvenghi una collisione? Luigi1111, collaboratore e parte di Monero core, ci da una stima. Utilizzando il paradosso del compleanno per il calcolo, servirebbero circa 2^126 stealth address generati per avere un 50% di avverarsi una collisione. Per darvi un paragone, servirebbero 85,070,591,730,234,615,865,843,651,857,942,052,864 transazioni, quando – al momento della scrittura – le transazioni all’interno della blockchain sono circa poco più di 8 milioni. Per fare un paragone, ci sono molti meno granelli di sabbia al mondo rispetto al numero delle transazioni che servirebbero per la collisione. Un numero impressionante che conferma la sicurezza di questa tecnologia, utilizzate da altre cryptocoin.

Più stealth address sono connessi ad un wallet

Più stealth address sono connessi ad un wallet

Una delle altre caratteristiche peculiari di questa tecnologia risiede nel fatto che i due utenti che volessero scambiarsi un pagamento non devono impostare alcunché. Gli stealth address sono implementati di default da Monero e non richiedono particolari conoscenze tecniche.

Come fa il software a “sapere” che quel dato stealth address è indirizzato verso il nostro indirizzo? Semplice, è come se ogni stealth address fosse un lucchetto e il wallet cercasse di aprire un lucchetto alla volta. Se il lucchetto “si apre”, allora la transazione del tale stealth address appartiene a te. Il wallet reperisce le transazioni dalla sincronizzazione e, senza interrogare il nodo a cui è collegato, effettua la verifica su ogni transazione. Questo causa la lentezza dell’operazione della sincronizzazione che si effettua in tempi non molto rapidi (pur elaborandone molte al minuto).

Infine, un punto importante da sottolineare è cosa non sono gli Indirizzi Stealth. Con sistemi di pagamento che accettano Bitcoin o Ethereum, potreste trovare un indirizzo di pagamento diverso che viene generato in modo casuale. Questo non è un indirizzo Stealth, perché a livello di blockchain, gli strumenti di analisi e tracciamento sarebbero in grado di trovare un collegamento tra i due diversi indirizzi, insieme a ciò che questi indirizzi hanno ricevuto e inviato.