Introducció

  • Monero és un tipus de criptomoneda, similar a Bitcoin. Es va llançar a l’abril de 2014 i, com moltes criptomonedes, està construït sobre la tecnologia blockchain. Això permet que Monero sigui descentralitzat, és a dir, que cap persona o organització en tingui el control exclusiu.
  • Tant a Monero com a Bitcoin, tots els registres de transaccions s’emmagatzemen públicament a les seves respectives cadenes de blocs, fent-los visibles per a tothom. Aquesta transparència pot generar problemes de privadesa, ja que tercers poden utilitzar l’anàlisi de cadenes de blocs per rastrejar i vincular transaccions. Monero va ser dissenyat específicament per abordar aquests problemes de privadesa oferint un anonimat complet als seus usuaris.
  • Monero està basat en el protocol CryptoNote, que va introduir funcions com ara adreces ocultes i signatures en anell per mantenir anònimes les identitats tant de l’emissor com del receptor. Avui ens centrarem en les signatures en anell i com funcionen a Monero.

Signatures d’Anell

Visió general

La idea principal darrere de les signatures en anell és que un usuari u, que forma part d’un grup d’usuaris

    \[R = {\,u_1,\,u_2,\,\dots,\,u_i},\]

pot signar un missatge m de manera que qualsevol que verifiqui la signatura estigui segur que un dels membres de R va signar el missatge però no pugui saber de quin membre específic es tractava.

Aquest protocol funciona sense la necessitat d’un tercer de confiança ni de la cooperació de tots els usuaris del grup. Cada participant només necessita un parell de claus privades i públiques. Per tant, qualsevol usuari pot triar els signants i generar la signatura de manera independent. Aquesta capacitat és especialment útil quan es difon informació de manera anònima, garantint alhora la integritat i l’origen del missatge.

Parelles de claus

Cada membre del grup té un parell de claus:

    \[{(P_1, S_1),\,(P_2, S_2),\,\dots,\,(P_i, S_i)}.\]

Quan un membre j vol signar un missatge m, el procés de generació de signatures utilitza la clau privada S_j i les claus públiques dels altres membres {P_1,\,\dots,\,P_{j-1},\,P_{j+1},\,\dots,\,P_i}. La signatura resultant es pot verificar sense revelar la identitat real del signant.

L’exemple següent exposa amb més detall com es crea i verifica la signatura de l’anell:

Exemple: Bob Crea una Signatura d’Anell

Suposem que en Bob vol crear una signatura d’anell. Els seus passos són els següents:

  1. Calcula la clau del sistema
    Calcula la clau del criptosistema aplicant el hash al missatge:

        \[k = h(m).\]

  2. Determina el paràmetre b
    Trieu b de manera que per a cada mòdul de clau pública n_i (amb 1 \le i \le r) es compleixi que:

        \[2^b > n_i.\]

    (En RSA, una clau pública és P_i=(n_i,e_i) i una clau privada és S_i=(n_i,d_i).)

  3. Genera valors aleatoris
  • Genera un valor aleatori v de b bits.
  • Per a cada clau pública del grup excepte la de Bob, genereu valors aleatoris de b bits x_i.
  1. Calcula els valors de y_i
    Per a cada x_i, calcula:

        \[y_i = f_i(x_i).\]

  2. Determina y_j per a Bob
    En Bob calcula el valor corresponent y_j (on el seu parell de claus és (P_j,S_j)) de manera que:

        \[C_{k,v}(y_1, y_2, \dots, y_r) = v.\]

C és una funció de combinació que aplica una XOR als valors i xifra els resultats amb la clau k, repetint-se fins que:

    \[C_{k,v}(y_1,\dots,y_i)= E_k\bigl(y_i \oplus E_k(y_{i-1} \oplus \dots \oplus E_k(y_1 \oplus v))\bigr).\]

  1. Calcula x_j
    Per evitar exposar la seva clau privada, en Bob calcula:

        \[x_j = f_j^{-1}(y_j),\]

    utilitzant la seva clau privada S_j.

Signatura Final d’Anell

    \[\omega = {P_1,\,P_2,\,\dots,\,P_i,\;v,\;x_1,\,x_2,\,\dots,\,x_i}.\]

Procés de Verificació

  1. Per cada x_i, calcula:

        \[y_i = f_i(x_i).\]

  2. Recalcula la clau del criptosistema:

        \[k = h(m).\]

  3. Comprova que

        \[C_{k,v}(y_1, y_2, \dots, y_r) = v.\]

Signatures d’Anell en Transaccions Monero

Però, com ajuden exactament les signatures en anell a Monero a millorar la privadesa a l’hora de fer una transacció?

A Monero, quan un usuari envia una transacció, crea una signatura en anell utilitzant la seva clau privada i un conjunt de claus públiques d’altres usuaris no relacionats (anomenats “esquers”), seleccionats a partir de sortides anteriors de la cadena de blocs. Per a un observador extern, la transacció podria haver vingut de qualsevol membre de l’anell, fent que el remitent real sigui indistingible del grup.

Per a una mida d’anell de n, hi ha n possibles remitents a la cadena de blocs; només un és el que realment gasta, la resta són esquers. Això trenca el vincle entre les transaccions i el seu veritable origen, millorant significativament la privadesa.

Reflexions finals

  • Tot i que les signatures en anell milloren molt la privadesa de Monero, no són perfectes. L’anàlisi estadística i de blockchain de vegades pot revelar l’aportació real entre els esquers, sobretot si els esquers no es trien de manera uniforme.
  • L’efectivitat depèn de la mida del conjunt d’anonimat. Una mida d’anell de 2 (1 real + 1 esquer) és molt més feble que una mida d’anell de 10 o més.
  • Monero imposa una mida mínima obligatòria d’anell (actualment 16) per garantir almenys 15 esquers per transacció.
  • Monero també utilitza Ring Confidential Transactions (RingCT) per ocultar quantitats, combinant signatures d’anell amb compromisos de Pedersen perquè els valors de les transaccions romanguin confidencials i garanteixin que no es creïn ni es destrueixin monedes.

Monero Whitepaper

Deixa un comentari