¿Las transacciones de Monero son anónimas?

Digamos que tengo una dirección de monero y quiero enviar mis monedas a otra dirección. ¿Será esa transacción privada? ¿Alguien puede averiguar que envié esas monedas? ¿Hay altcoins que pueda usar para enviar fondos de una dirección a otra sin que nadie sepa que lo hice?                                                                                                                           

Respuestas (2)

Respuesta corta: sí, será anónimo

Respuesta larga:

Lo siguiente se aplica a todas las monedas basadas en Cryptonote, a menos que se indique lo contrario:

En la cadena de bloques, todas las direcciones son direcciones únicas. En Bitcoin, se le exhorta a no reutilizar las direcciones, pero Monero lo impone. Cada nueva transacción hace que se genere una nueva dirección única, de tal manera que el destinatario puede derivar las claves privadas a esa nueva dirección única (y así gastar esos fondos).

Además, Monero usa firmas de anillo para ocultar qué salidas se están gastando. Esas firmas de anillo se hacen con 1 clave privada (la que estás gastando) y una cantidad arbitraria de claves públicas, las de las salidas que no puedes gastar. La transacción que envíe parecerá gastar uno de ese conjunto. El truco es que puede generar firmas de modo que un observador (es decir, alguien que encuentre el tx en la cadena de bloques) pueda estar seguro de que una de las salidas en ese tx se gastó con la clave privada correspondiente, pero no puede decir cuál. En la cadena de bloques, solo ven las claves públicas de su salida gastada y las otras N claves públicas que eligió de la cadena de bloques.

Entonces, para recapitular: un observador ve que se gastó una salida entre este conjunto de salidas, pero no sabe cuál. Y ve que se dirigió a esa nueva dirección única, que no tiene ningún vínculo con la dirección del destinatario (a menos que el observador tenga la clave privada de vista del destinatario, un buen truco para permitir que un tercero tenga acceso de solo lectura a sus ingresos).

Ahora, el diablo está en los detalles. Hay otras formas en que se pueden hacer inferencias, como cantidades particulares que se gastan (es decir, si se le envía una cantidad muy específica de polvo, es la única salida de esa cantidad en particular en la cadena de bloques). El protocolo Cryptonote divide las cantidades por denominaciones (es decir, al enviar 153 monero, se crean tres salidas, 100 monero, 50 monero y 3 monero, por lo que es mucho más fácil de ocultar). Monero está trabajando actualmente en una adaptación de las transacciones confidenciales de gmaxwell ( https://lab.getmonero.org/pubs/MRL-0005.pdf ), que se pueden usar con firmas de anillo, por lo que esta vía quedará completamente bloqueada (esto es Solo Monero, otras monedas Cryptonote no tienen esto).

Entonces, sí, si usa Monero, sus transacciones serán privadas. Cryptonote es lo último en privacidad de blockchain, aunque Zerocash puede superarlo una vez que se lance, aunque Zerocash también tiene sus propios problemas, por lo que será algo interesante de ver.

Por cierto, vale la pena leer todos los artículos en https://lab.getmonero.org/ si quieres saber más sobre los detalles.

La beta privada ya ha comenzado: monero.stackexchange.com

Para los amantes de las matemáticas, proporcionaré la intuición matemática detrás de las claves públicas de un solo uso.

La suposición detrás de esta técnica es la dureza del problema del logaritmo discreto para grupos como $Z_p^*$, grupo de curva elíptica.

Monero está utilizando el grupo Elliptic Curve como grupo subyacente. Para simplificar, explicaré el concepto con $Z_p^*$, pero una analogía y corrección similares se mantendrán para cualquier grupo en el que sea difícil resolver logaritmos discretos.

Considera lo siguiente

Sea $Z_p^*$ un grupo con módulo de multiplicación $p$ donde $p$ es un número primo y sea $g$ el generador del grupo.

Sea $x$ la clave secreta donde $x$ se elige uniformemente al azar ${1,2,...,p-1}$ y la clave pública correspondiente sería $y = g^x$ modulo $p$.

Ahora, usando el par de claves $(y,x)$ y cualquier cadena aleatoria, podemos generar una clave pública de pago único $(p',x')$ de la siguiente manera

        \begin{equation}
            x' = x + Hash(s)
        \end{equation}
        \begin{equation}
            y' = g^xg^{Hash(s)} \ \text{mod}\ p
        \end{equation}

Aquí la suposición es que Hash(s) nos dará una cadena de longitud igual a la longitud de $p$.

Observe que solo el usuario que tiene la clave secreta $x$ generará $x'$ para gastar de la moneda enviada a la clave pública única $y'$ bajo el supuesto de la dureza del problema del logaritmo discreto en $Z_p$. Y para un observador externo, $y$ y $y'$ no están correlacionados estadísticamente.

mientras que la explicación parece ser bastante buena, me pregunto si esta es una respuesta a la publicación a continuación. ¿El OP no pregunta sobre la privacidad, mientras que su respuesta se centra más en la "irrompibilidad estadística" del algoritmo ECDSA?
A través de la respuesta, quería mostrar que la clave pública pk' recién generada no tiene ninguna correlación con la clave pública permanente pk, por lo tanto, brinda privacidad al receptor. Las matemáticas para la privacidad del remitente son un poco más complicadas. Si alguien está interesado, consulte ( people.csail.mit.edu/rivest/pubs/RST01.pdf ) y ( eprint.iacr.org/2006/389.pdf )