Monero Blockchain: come funziona il protocollo CryptoNote?
Blockchain

Monero Blockchain: come funziona il protocollo CryptoNote?

By Emanuele Pagliari - 25 Ago 2019

Chevron down

Il protocollo CryptoNote, cuore originario della criptovaluta Monero e di tante altre altcoin, è un protocollo open source incentrato sull’anonimato delle transazioni registrate sulla blockchain.

E’ stato utilizzato da decine di criptovalute, fra cui Electroneum, Aeon, ByteCoin, Turtlecoin e tante altre. In particolare, è stato spesso apprezzato per il proprio Proof of Work, immune gli ASIC fino allo scorso anno.

Il protocollo CryptoNote implementa diversi meccanismi per garantire la privacy e dunque l’anonimato delle transazioni e dei wallet.

La filosofia di CryptoNote

Il protocollo CryptoNote nasce nel 2013 dopo anni di sviluppo da parte di un team di matematici e programmatori. E’ una tecnologia completamente open source che consente di creare criptovalute egalitarie con blockchain completamente anonime.

L’obiettivo del team di sviluppo originario era di offrire al mondo uno strumento decentralizzato, completamente anonimo, sicuro ed egualitario, dunque senza discriminazioni degli enti che eseguono il Proof of Work.

A differenza dell’implementazione della blockchain di bitcoin ed altre criptovalute, CryptoNote adotta strumenti aggiuntivi per raggiungere gli obbiettivi appena designati.

Ring signature: pagamenti non rintracciabili

Gli attuali sistemi di verifica delle firme digitali prevedono l’utilizzo della chiave pubblica del mittente della transazione. Questa condizione è necessaria per verificare che l’autore è in possesso anche della relativa chiave privata univoca.

protocollo Cryptonote Blockchain Monero

Il meccanismo di verifica della Ring signature, invece, prevede che tutte le transazioni siano firmate a nome del gruppo di appartenenza degli individui. In questo modo durante il processo di verifica risulta praticamente impossibile risalire al creatore originale, in quanto tutte le firme degli appartenenti al gruppo sono fra loro indistinguibili.

Il destinatario della transazione sarà l’unico in grado di riscuotere il trasferimento, sfruttando la chiave privata ed il concetto matematico di immagine – quest’ultima pubblica – associata ad essa.

protocollo Cryptonote Blockchain Monero

Perciò, nel caso in cui si abbia a che fare con una ring signature in cui siano presenti le chiavi pubbliche di Alice, Bob e Carol, il meccanismo di verifica può solamente decretare che uno di loro è un firmatario del messaggio, ma non è in grado di indicare chi di loro nello specifico.

Questo concetto può essere utilizzato per rendere le transazioni digitali su di una rete non tracciabili. Verranno poi utilizzate le chiavi pubbliche degli altri membri per la verifica, in quanto una e solamente una di esse andrà a confermare la transazione, ovvero quella del destinatario.

Questo approccio fa sì che il creatore della transazione sia idoneo a inviare l’importo specificato nella transazione mantenendo l’identità indistinguibile dagli altri utenti, le cui chiavi pubbliche sono state utilizzate nella fase di verifica della ring signature.

protocollo Cryptonote Blockchain Monero

Va segnalato che le transazioni estranee non vanno a restringere la capacità dell’utente di spendere il proprio denaro.

La chiave pubblica, infatti, può apparire in decine di ring signature differenti per aggiungere ridondanza, anche se l’utente ha già utilizzato la chiave privata per confermare una transazione.

Inoltre, se due utenti dovessero creare una ring signature con lo stesso set di chiavi pubbliche, le firme sarebbero differenti, a meno che non abbiano la stessa chiave privata, ma sarebbe un paradosso in quanto vorrebbe dire che l’utente in realtà è uno solo.

Verifica del Double-Spending

Un sistema di firme completamente anonimo consentirebbe agli utenti di spendere gli stessi fondi più volte. Questa complicazione è incompatibile con i principi dei sistemi di pagamento digitali. Il problema, noto come double-spending, può essere risolto in questo modo.

Un sistema di ring signature è una tipologia di crittografia con differenti funzionalità. Quello utilizzato in CryptoNote prevede l’uso di una versione modificata della Ring signature tracciabile.

Infatti, viene trasformata la tracciabilità nella linkabilità (collegabilità). Questa proprietà restringe l’anonimato dell’utente in questa maniera: se l’identità crea più di una ring signature utilizzando la medesima chiave privata (le chiavi pubbliche estranee sono irrilevanti), esse verrebbero collegate, fermando perciò un tentativo di double-spending.

Per introdurre il concetto di collegabilità, CryptoNote ha introdotto un particolare indicatore creato dall’utente al primo accesso. Tale indicatore è, in termini matematici, l’immagine della chiave privata, ottenuta mediante una funzione crittografica ad una via (una classica funzione di hashing).

La terminologia ad una via indica che usando solamente l’immagine è praticamente impossibile recuperare la chiave privata originaria (funzione non invertibile).

Un altro vantaggio è che risulta praticamente impossibile avere una collisione fra due chiavi che condividono la stessa immagine. Utilizzando qualsiasi funzione matematica, ad eccezione di quella specificata, si otterrà dunque come risultato una firma non verificabile.

Considerando tutti i concetti appena esposti è possibile concludere che l’immagine della chiave è un indicatore della chiave privata praticamente inviolabile e non ambiguo.

protocollo Cryptonote Blockchain Monero

Tutti gli utenti sono in possesso della lista delle immagine delle chiavi utilizzate e possono immediatamente respingere qualsiasi nuova ring signature con un’immagine duplicata. Ciò non permetterà di individuare l’utente dal comportamento anomalo ma eviterà qualsiasi tentativo di double-spending. A differenza della lista di tutte le transazioni, questo meccanismo richiede molto meno spazio di archiviazione

protocollo Cryptonote Blockchain Monero

Chiavi usa e getta e transazioni non tracciabili

Di solito quando viene pubblicata la chiave pubblica chiunque può controllare le transazioni in arrivo, anche se nascoste da una ring signature. Per evitare questo problema è possibile creare centinaia di chiavi da inviare privatamente agli utenti, ma ciò priva l’utente della possibilità di avere un unico indirizzo pubblico.

protocollo Cryptonote Blockchain Monero

CryptoNote risolve questo problema creando automaticamente differenti chiavi usa e getta, utilizzabili solamente una volta. Esse vengono generate per ogni pagamento sulla rete peer-to-peer utilizzando le chiavi pubbliche. Tale soluzione non è altro che una rivisitazione del protocollo di Diffie-Hellman.

La versione originale del protocollo permetteva a due parti di produrre una chiave segreta comune ricavata dalle rispettive chiavi pubbliche. Nel CryptoNote, il mittente utilizza la chiave pubblica del ricevente ed alcuni dati casuali per generare una chiave usa e getta da utilizzare per il pagamento.

Il mittente può generare solamente la parte pubblica della chiave, mentre la computazione della parte private viene effettuata dal ricevente. Dunque, il ricevente è l’unico che può riscuotere i fondi dopo che la transazione è stata effettivamente emessa. Il ricevente deve solamente effettuare un breve check sulle transazioni per verificare se esse sono destinate a lui o meno. Questo processo però coinvolge la chiave privata, così che nessun utente esterno possa effettuare la verifica e scoprire il collegamento fra la chiave usa e getta e l’indirizzo pubblico del ricevente.

protocollo Cryptonote Blockchain Monero

L’uso di dati casuali per la generazione dell’indirizzo fa si che essi siano tutti differenti pur avendo lo stesso mittente e ricevente. Per questo vengono definiti come usa e getta.

Resistenza al tracking degli utenti sulla blockchain

Essendo la blockchain un registro distribuito, esistono strumenti per l’analisi delle transazioni che permettono di risalire alle identità degli autori. Tale debolezza della blockchain del bitcoin e di altre criptovalute è dovuta al fatto che non tutti gli utenti generano nuovi indirizzi per ogni transazione.

CryptoNote, sfruttando i meccanismi spiegati in precedenza, è praticamente immune a tale problema essendo tutti gli indirizzi utilizzabili solamente una volta.

CryptoNote

Di conseguenza, uno strumento di analisi non è in grado di risalire a mittente e destinatario ma a centinaia di possibili vie. Tali percorsi possono essere raggruppati in un grafico ad albero costituito da una moltitudine di rami e nodi che rendono impossibile risalire alle entità.

Va specificato che negli anni Monero ha implementato continue migliorie al proprio protocollo, migliorando la scalabilità, la privacy e le prestazioni della rete.

Schema di una transazione CryptoNote

protocollo Cryptonote Blockchain Monero

Proof of Work Egalitario

Il meccanismo di Proof of Work (prova di lavoro) adottato da CryptoNote non è altro che un sistema di votazione egalitario. Gli utenti votano per il corretto ordine delle transazioni, per abilitare nuove features del protocollo o per ottenere una corretta ed onesta retribuzione.

Perciò è importante che durante tale processo tutti i partecipanti abbiano lo stesso diritto e capacità di voto. Il meccanismo di CryptoNote consente di ottenere l’uguaglianza tramite una funzione di passaggio del Proof of Work, perfettamente adatta ai comuni PC. Essa utilizza le istruzioni delle CPU moderne, in genere difficili e costose da implementare in ASIC o prodotti specifici con memorie veloci o a basse latenze.

L’algoritmo di gestione della memoria per la funzione egualitaria sfrutta l’accesso casuale ad una memoria ed enfatizza la dipendenza dalla latenza. In contrapposizione allo Scrypt, dunque, ogni nuovo blocco (64 bytes di lunghezza) dipende da tutti i precedenti blocchi. Ciò fa si che eventuali meccanismi per ridurre l’uso della memoria debbano incrementare esponenzialmente la loro velocità di calcolo.

Tale algoritmo richiede circa 2 MB di memoria per ogni istanza a causa delle seguenti ragioni:

  1. Può essere contenuto nelle cache L3 dei processori moderni;
  2. Le GPU possono eseguire decine o centinaia di thread ma saranno limitate dalla memoria GDDR5/6, decisamente più lenta in accesso casuale delle cache L3 delle CPU nonostante il bandwidth elevato;
  3. Una significativa espansione dello scratchpad richiederebbe un aumento delle interazioni. Ciò implicherebbe un aumento del tempo richiesto. Delle chiamate continue e prolungate alla rete p2p potrebbero dunque compromettere la rete e portare ad alcune vulnerabilità, in quanto i nodi sono obbligati ad effettuare una verifica della PoW di ogni blocco. Se un nodo spendesse un considerevole intervallo di tempo sull’hash di un blocco, potrebbe essere facilmente inondato con un meccanismo di flooding di falsi blocchi causando un DDoS.

Uno degli algoritmi di Proof of Work usati per il mining su CryptoNote è il CryptoNight, creato dagli sviluppatori di Bytecoin in collaborazione con il team di CryptoNote.

E’ realizzato per garantire un’efficienza simile sia nel CPU che nel GPU mining. Era stato progettato per essere immune agli ASIC, ma lo scorso anno colossi come Bitmain e Baikal hanno annunciato i primi dispositivi in grado di minare monete basate sul CryptoNight.

I sorgenti e la documentazione del protocollo CryptoNote sono disponibili sulla pagina ufficiale.

Emanuele Pagliari
Emanuele Pagliari

Ingegnere delle telecomunicazioni appassionato di tecnologia. La sua avventura nel mondo del blogging è iniziata su GizChina.it nel 2014 per poi proseguire su LFFL.org e GizBlog.it. Emanuele è nel mondo delle criptovalute come miner dal 2013 ed ad oggi segue gli aspetti tecnici legati alla blockchain, crittografia e dApp, anche per applicazioni nell'ambito dell'Internet of Things

Utilizziamo i cookie per essere sicuri che tu possa avere la migliore esperienza sul nostro sito. Se continui ad utilizzare questo sito noi assumiamo che tu ne sia felice.