Algoritmi Blockchain Mining Wiki Monero

Protocollo CryptoNote: ecco come funziona la blockchain di Monero

Dopo avervi dato un’infarinatura generale con i nostri approfondimenti dedicati al mining ed al concetto di criptovaluta, oggi vediamo cos’é e come funziona il protocollo CryptoNote, cuore della criptovaluta Monero e di tante altre altcoins. Cercheremo di approfondire gli aspetti principali di questo protocollo Open Source incentrato sull’anonimato totale. Vedremo dunque i principali meccanismi adottati per raggiungere tale scopo. Approfondiremo inoltre il concetto di Proof of Work Egalitario, l’implementazione del protocollo di Diffie-Hellman e la soluzione al problema del Double Spending. Attualmente il CryptoNote è usato da diverse monete, quali Monero, ByteCoin, Aeon, Electroneum ed altre.

Filosofia del CryptoNote

Il protocollo CryptoNote nasce nel 2013 dopo anni di sviluppo da parte di un team di matematici e programmatori. E’ una tecnologia Open Source che consente di creare criptovalute egalitarie completamente anonime. L’obiettivo del team di sviluppo è 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. Ad esempio, CryptoNote usa un meccanismo ASIC Proof sfruttando i limiti delle pipeline di questi dispositivi.

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.

CryptoNote

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 invece – associata ad essa.

CryptoNote

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 era 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 utlizzate 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 si che il creatore della transazione sia idoneo per 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.

CryptoNote

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, ameno 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. 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, possiamo concludere che l’immagine della chiave è un indicatore della chiave privata praticamente inviolabile e non ambigua.

CryptoNote

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

CryptoNote

 

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.

CryptoNote

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.

CryptoNote

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à.

Schema di una transazione CryptoNote

CryptoNote

Proof of Work Egalitario

Il meccanismo di Proof of Work (prova di lavoro) adottato da CryptoNote non è altro che un sistema di votazione egaliatrio. 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 pesaggio del Proof of Work, perfettamente adatta ai comuni PC. Essa utilizza le istruzioni delle CPU moderne, molto 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. una memoria interna di un megabyte è una dimensione inaccettabile per la pipeline degli ASIC moderni;
  3. le GPU possono eseguire decine o centinaia di thread ma saranno limitate dalla memoria GDDR5, decisamente più lenta in accesso casuale delle cache L3 delle CPU nonostante il bandwidth elevato;
  4. 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 e per limitare drasticamente l’ASIC mining.

I sorgenti e la documentazione del protocollo CryptoNote sono disponibili sulla pagina ufficiale.
Per approfondire Monero invece, a breve uscirà un nostro articolo, nel frattempo vi rimandiamo al gruppo Telegram Italiano dedicato a Monero.

Siete pronti a sviluppare la vostra criptovaluta anonima basata sul CryptoNote?

Vi invitiamo a seguirci sul nostro canale Telegram ed anche sul gruppo ufficiale Telegram, dove sarà possibile discutere insieme delle notizie e dell’andamento del mercato, sulla nostra pagina Facebook e sul nostro account Twitter.

[ VIA ]

 

Emanuele Pagliari

Ingegnere delle telecomunicazioni appassionato di tecnologia. La mia avventura nel mondo del blogging è iniziata su GizChina.it nel 2014 per poi proseguire su LFFL.org, GizBlog.it, ed ora su CryptoMinando.it. Sono nel mondo delle criptovalute come minatore dal 2013 ed ad oggi seguo gli aspetti tecnici legati alla blockchain, crittografia e dApps, anche per applicazioni nell'ambito dell'Internet of Things, la mia branca di studio.
Follow Me:

Related Posts

Rispondi