Tienes que estar registrado para ver este contenido
Cómo funcionan las direcciones sigilosas en Monero
Publicado en
Tienes que estar registrado para ver este contenido
por
Tienes que estar registrado para ver este contenido
Supongamos que Alice dirige un restaurante confidencial. Alice no quiere que haya ningún registro de quién visitó su restaurante, pero sí quiere que le paguen por su comida. Ella acepta Monero, y en lugar de una caja registradora hay dos códigos QR en exhibición, uno correspondiente a ella
clave de vista pública A y el otro correspondiente a ella
clave del gasto público S.
Cómo Bob compra su hamburguesa
Un cliente, Bob, entra al restaurante y pide una hamburguesa con patatas fritas. Cuando Bob le paga a Alice, esto es lo que sucede debajo del capó.
Bob está usando un software que genera un número entero aleatorio
r y lo multiplica por un punto
G en una curva elíptica, específicamente ed25519, obteniendo el punto
R =
rG
en la curva. El software también multiplica la clave de vista de Alice
A, un punto en la misma curva elíptica, por
r, luego ejecuta una función hash
H sobre el producto
rA que devuelve un número entero
k.
k =
H(
rA).
Finalmente, el software de Bob calcula el punto
P =
kG +
S
y envía la caja registradora de Alice, es decir, su billetera criptográfica, el par de puntos (
P,
R). El punto
P es un
dirección sigilosa, una dirección que solo se usará esta vez y no se puede vincular a Alice o Bob [1]. El punto
R es información adicional que ayuda a Alice a recibir su dinero.
Cómo le pagan a Alice
Alice y Bob comparten un secreto: ambos lo saben
k. ¿Cómo es eso?
Clave de vista pública de Alice
A es el producto de su clave de vista privada
a y el generador de grupos
G [2]. Entonces, cuando Bob calcula
rA, él está calculando
r(
aG). El software de Alice puede multiplicar el punto
R por
a obtener
a(
rG).
rA =
r(
aG) =
a(
rG) =
aR.
Tanto Alice como Bob pueden discutir este punto —que Alice considera como
aR y Bob piensa en como
rA—obtener
k. Esto es
Tienes que estar registrado para ver este contenido
: intercambio de claves Diffie-Hellman de curva elíptica.
A continuación, el software de Alice escanea la cadena de bloques en busca de pagos a
P =
kG +
S.
Tenga en cuenta que
P está en blockchain, pero solo Alice y Bob saben factorizar
P en
kG +
S porque sólo Alice y Bob lo saben
k. Y sólo Alice puede gastar el dinero porque sólo ella conoce la clave privada
s correspondiente a la clave de gasto público
S donde
S =
sG.
Ella lo sabe
P =
kG +
sG = (
k +
s)
G
y entonces ella tiene la clave privada (
k +
s) correspondiente a
P.
[1] Bob envía dinero a la dirección
P, por lo que podría haber alguna conexión entre Bob y
P en la cadena de bloques Monero. Sin embargo, debido a otra característica de Monero, a saber, las firmas de anillo, alguien que analizó la cadena de bloques solo pudo determinar que Bob es una de las 16 personas que pueden haber enviado dinero a la dirección
P, y no hay forma de saber quién recibió el dinero. Es decir, no hay manera, utilizando únicamente información de la blockchain, de quién recibió el dinero. Un investigador privado que viera a Bob entrar al restaurante de Alice tendría información adicional fuera de la cadena de bloques.
[2] El supuesto clave de la criptografía de curva elíptica es que es fruta inviable “dividir” en una curva elíptica, es decir, recuperar
a del conocimiento de
G y
aG. Podrías recuperarte
a por fuerza bruta si el grupo fuera pequeño, pero la curva elíptica ed25519 tiene del orden de 2255 puntos, y
a es un número entero elegido aleatoriamente entre 1 y el tamaño de la curva.