En el marco de este art铆culo, tratamos de responder a la pregunta de qu茅 es la confidencialidad y c贸mo se puede lograr en Bitcoin y otras monedas digitales. Adem谩s, aqu铆 aprender谩 sobre mecanismos espec铆ficos para lograr la confidencialidad, as铆 como tambi茅n c贸mo se aplican en la pr谩ctica. El tema ser谩 interesante para aquellos que trabajan directamente con las criptomonedas, as铆 como para los amantes del protocolo que aumentan el nivel de privacidad del usuario.
Definamos los t茅rminos
El tema de la confidencialidad (privacidad) y c贸mo garantizar que sea bastante voluminoso. Es mejor comenzar a estudiarlo con una comprensi贸n de las definiciones b谩sicas.
El concepto de privacidad incluye dos componentes principales: no rastreabilidad y anonimato. La imposibilidad de seguimiento, o la imposibilidad de seguimiento, implica la imposibilidad de asignar un grupo de actividades a alg煤n usuario en la red. El anonimato, o anonimato, est谩 asociado con la incapacidad de establecer de manera confiable la identidad de un usuario en esta red.
Privacidad predeterminada de Bitcoin
Bitcoin tiene la propiedad de anonimato, pero es muy f谩cil perderlo en la pr谩ctica. La propiedad de no rastreabilidad no se logra por completo. Podemos analizar el gr谩fico de transacciones y concluir que est谩n involucrados en ciertas billeteras an贸nimas. Si al menos una direcci贸n se vio comprometida en el contexto del anonimato, se puede establecer la participaci贸n en ciertos individuos. La implementaci贸n m谩s simple de una billetera bitcoin es capaz de proporcionar solo un nivel m铆nimo de privacidad.
Por ejemplo, para cada pago entrante o cambio, el usuario crea una nueva direcci贸n. El auditor que analiza el gr谩fico de transacciones, en este caso, ya no puede relacionar de manera confiable hechos espec铆ficos que se relacionan con las acciones del usuario y la distribuci贸n de moneda entre ellos. Pero incluso en esta situaci贸n, la privacidad no es tan confiable como podr铆a parecer.
Por lo general, en la red de Bitcoin, su privacidad depende de los contadores. Quien acepta el pago conoce el historial del origen de las monedas, y quien env铆a las monedas sabe a d贸nde las env铆a. Adem谩s, hay una serie de metadatos que pueden estar disponibles para personas externas: la naturaleza de la transacci贸n, datos sobre la billetera, datos sobre la ubicaci贸n del usuario, etc.
驴Qu茅 tipo de datos de transacciones deben ocultarse en primer lugar para garantizar el m谩ximo nivel de confidencialidad? Esto incluye datos sobre el origen de las monedas, que se relacionan con la propiedad de intercambiabilidad o fungibilidad. Es muy importante para cualquier dinero y objetos de valor. A nivel del protocolo de Bitcoin, se proporciona esta propiedad (todas las monedas son iguales y las reglas para procesarlas son comunes para todos), pero en la pr谩ctica la fungibilidad es f谩cil de romper. Por ejemplo, algunos comerciantes pueden analizar el historial del origen de las monedas aceptadas y rechazar pagos si les genera dudas.
Lo siguiente que tiene sentido ocultar es la suma de las transferencias, las direcciones del remitente y el receptor en el cuerpo de la transacci贸n. Tambi茅n es importante ocultar las direcciones de red de los usuarios, lo que generalmente se logra utilizando darknet, donde se utilizan protocolos como Freenet, TOR e I2P. 驴C贸mo ocultar las cantidades, el historial y las direcciones?
Moneda
El m茅todo m谩s simple para ofuscar un gr谩fico de transacci贸n se llama CoinJoin. Comenzaremos con 茅l. Su esencia es crear una transacci贸n conjunta, como resultado de lo cual el origen de las monedas enviadas se vuelve ambiguo. Un grupo est谩 formado por usuarios que crean una transacci贸n com煤n, dentro de la cual se realizan varios pagos simult谩neamente. Es decir, los usuarios no necesitan crear transacciones separadas.
Gregory Maxwell propuso por primera vez esta idea en 2013 en el popular foro BitcoinTalk. Desde entonces, se han propuesto y desarrollado muchas modificaciones de este m茅todo. Cada uno de ellos mejor贸 ciertas propiedades de los pagos. Hablemos sobre c贸mo funciona CoinJoin en su forma pura, y luego veremos algunas de sus modificaciones m谩s interesantes.
C贸mo funciona CoinJoin
Imagine un grupo de tres usuarios en el que todos quieren comprar productos en una tienda en l铆nea (al mismo tiempo, cada uno tiene su propia tienda).

Crean una transacci贸n para tres entradas, una de cada usuario, tres salidas, una para cada tienda en l铆nea. Adem谩s, hay tres salidas m谩s para el cambio. Adem谩s, todas las salidas se mezclan aleatoriamente entre s铆. Cada usuario vuelve a verificar la transacci贸n recibida y firma la entrada correspondiente. Si tiene 茅xito, la transacci贸n se considera correcta, se extiende a la red y recibe confirmaci贸n.
Diferencias entre CoinJoin y Transacci贸n regular
El siguiente diagrama muestra la diferencia entre los gr谩ficos de transacciones regulares y las transacciones de CoinJoin.

Arriba hay un gr谩fico donde cada transacci贸n tiene una o dos salidas, y debajo de la transacci贸n ya hay tres salidas. El gr谩fico inferior es m谩s complicado y m谩s dif铆cil de analizar. Cuando CoinJoin se pone en pr谩ctica en la billetera Bitcoin, se forma un gran grupo de usuarios. Entonces las transacciones pueden tener docenas de entradas y salidas (a veces m谩s). Representado en un plano, el gr谩fico de tales transacciones ser谩 muy confuso. Una moneda que ha pasado por una cadena de tales transacciones tiene miles de or铆genes posibles. Es dif铆cil encontrar el verdadero entre todas las opciones.
Moneda Chaumiana
Llegamos a la modificaci贸n CoinJoin llamada Chaumian CoinJoin. Y el mismo Gregory Maxwell lo sugiri贸. Utiliza un operador centralizado y utiliza una firma ciega. El operador es necesario para realizar la mezcla de entradas y salidas, y luego completar la transacci贸n final. Pero el operador no puede robar monedas ni violar la confidencialidad de la mezcla debido a la firma ciega.
El usuario cega previamente los datos antes de transmitirlos al operador. Cuando el operador firma estos datos, no ve el contenido real. Los datos firmados se devuelven al usuario, despu茅s de lo cual elimina el deslumbramiento y todo parece una firma electr贸nica normal.
驴C贸mo es la interacci贸n entre el usuario y el operador en la formaci贸n de la transacci贸n general? Cada usuario prepara una entrada por adelantado, donde se gastan las monedas que le pertenecen, una direcci贸n para recibir el cambio, as铆 como una direcci贸n oculta para enviar un pago, despu茅s de lo cual combina estos datos en una secuencia y los transfiere al operador.
El operador verifica la entrada y el monto del pago, firma la direcci贸n de salida y devuelve la firma al usuario. Sin embargo, el operador no ve la direcci贸n a la que el usuario desea enviar el pago, porque est谩 cegado. Adem谩s, el usuario elimina el cegamiento de la direcci贸n de salida, se vuelve a conectar de forma an贸nima al operador y le env铆a una direcci贸n de salida firmada. El operador, a su vez, comprueba que realmente firm贸 esta direcci贸n con su clave y que ya tiene la entrada correspondiente, pero no puede saber qu茅 entrada corresponde a qu茅 salida. Despu茅s de que todos los usuarios hayan completado dichas acciones, se vuelven a conectar de forma an贸nima al operador y proporcionan firmas que confirman la propiedad de las monedas a la entrada de la transacci贸n general. La transacci贸n completada se puede distribuir a la red para su confirmaci贸n.
En este caso, ni los usuarios ni el operador pueden desanonimizar monedas en las direcciones de salida. Y la formaci贸n de una transacci贸n en condiciones normales no lleva m谩s de un minuto. La interacci贸n del usuario debe llevarse a cabo a trav茅s de redes de datos an贸nimos, que pueden usarse como TOR, I2P o Bitmessage.
Entre los usuarios puede haber participantes sin escr煤pulos cuyo prop贸sito es interrumpir el proceso de crear una transacci贸n com煤n por cualquier medio. Hay una lista completa de posibles escenarios de comportamiento del usuario, incluidos los fraudulentos. Se han desarrollado varios mecanismos de protecci贸n para contrarrestar escenarios adversos, que permiten a los usuarios honestos garantizar la formaci贸n de la transacci贸n final. Los mecanismos de protecci贸n utilizan tiempos de espera, seguimiento de salidas no utilizadas, etc. Para obtener m谩s detalles sobre todos los escenarios y mecanismos de protecci贸n, puede familiarizarse por separado. Ahora considere la pr贸xima modificaci贸n de CoinJoin, que se llama CoinShuffle.
Mezcla de monedas
La modificaci贸n de CoinShuffle se propuso en 2014. Ya no hay un operador central y esto se ha convertido en una ventaja. Los usuarios forman independientemente una transacci贸n com煤n, comunic谩ndose entre s铆. Sin embargo, a煤n no pueden violar la confidencialidad de mezclar direcciones de salida. Otra ventaja de esta t茅cnica es que los usuarios no tienen que usar redes adicionales para anonimizar el tr谩fico, ya que todas las propiedades necesarias se lograr谩n utilizando un protocolo de interacci贸n P2P entre los participantes.
Aqu铆, se usa el cifrado direccional, donde se usa un par de claves (p煤blicas y privadas). El mensaje se cifra utilizando la clave p煤blica, y solo el propietario de la clave privada puede descifrarlo. Para la comunicaci贸n entre los participantes, se utiliza el protocolo DiceMix y tambi茅n se brinda oposici贸n a los infractores.
Introduciendo CoinShuffle
Veamos c贸mo funciona CoinShuffle.

Imagine un peque帽o grupo de usuarios: la astuta Alice, el sabio Bob, el barbudo Charlie y el naranja Dave. Cada uno de ellos tiene una moneda no gastada en la cadena de bloques de Bitcoin en las direcciones A, B, C y D, respectivamente. Todos quieren gastar una moneda y ocultar la historia de su origen. Con este fin, cada miembro del grupo descubre la direcci贸n a la cual se deben enviar las monedas A, B, C o D, respectivamente, pero no revela esta direcci贸n a los otros miembros.
Adem谩s, cada uno genera un nuevo par de claves para el cifrado direccional, despu茅s de lo cual los miembros del grupo intercambian claves abiertas para el cifrado entre ellos, y la nueva clave p煤blica se firma con una clave privada que corresponde a una direcci贸n con una moneda no gastada. Del mismo modo, todos los mensajes de los participantes se firmar谩n durante la interacci贸n posterior. Esta fue la primera etapa.

Los participantes barajan y forman una cola. Alice ser谩 la primera porque es astuta, Bob la segunda porque es sabio, etc. Ahora Alice toma A 'y encripta a Dave usando la clave p煤blica de Dave, respectivamente. El texto cifrado resultante que Alice encripta nuevamente y apunt贸 a Charlie. Este texto cifrado se vuelve a cifrar, pero ya est谩 dirigido a Bob. Alice pasa el resultado del cifrado a Bob. Bob descifra el mensaje con su clave privada. Luego toma B 'y encripta dirigido a Dave, luego a Charlie y lo agrega a la lista. Al azar baraja esta lista y se la pasa a Charlie. Charlie, a su vez, descifra los elementos de la lista con su clave privada, agrega C ', cifrada dirigida a Dave, a la lista y mezcla aleatoriamente todos los elementos de la lista. La lista se transfiere a Dave, quien la descifra, recibe los datos de la direcci贸n abierta para enviar monedas, agrega la direcci贸n D ', la mezcla aleatoriamente y, en funci贸n de estas direcciones, las entradas y cantidades de transacciones conocidas, forma una transacci贸n general.

Dave distribuye la transacci贸n en blanco al resto del grupo. Adem谩s, cada uno verifica cuidadosamente si el resultado de la transacci贸n tiene la direcci贸n que necesita y si la cantidad coincide. Si todo est谩 bien, entonces el participante firma la transacci贸n, confirmando la propiedad de las monedas de su entrada. Los participantes intercambian firmas y, si la transacci贸n recoge todas las firmas necesarias, se puede distribuir a la red para su confirmaci贸n.
Si uno de los participantes comienza a desviarse del escenario de interacci贸n principal, el resto puede analizar conjuntamente el historial de interacci贸n y eliminar a los infractores del grupo para repetir todo sin ellos. Esta es una caracter铆stica importante.
Tenga en cuenta que las implementaciones listas para usar de CoinShuffle ya existen. Y en la pr谩ctica, funcionan de manera efectiva incluso en grupos de varias docenas de usuarios. Actualmente, se espera la integraci贸n de este protocolo en algunas billeteras bitcoin, incluidas las m贸viles.
驴Cu谩les son las desventajas del m茅todo CoinJoin?
Obviamente, existe una gran dificultad en la interacci贸n fuera de la cadena para la formaci贸n de una transacci贸n, es decir, es necesario organizar la formaci贸n de grupos y la interacci贸n de los participantes entre ellos. Pero un inconveniente m谩s significativo es que CoinJoin en su forma pura no oculta la cantidad de transferencias. Como resultado, es vulnerable al an谩lisis CoinJoin Sudoku, que se basa en una comparaci贸n de las sumas de los resultados de la transacci贸n y le permite desentra帽ar el historial del origen de las monedas despu茅s de su repetida confusi贸n. S铆, este problema se puede combatir, por ejemplo, para usar solo ciertas cantidades para los valores de salida de la transacci贸n (0.1 VTS, 1 VTS, 10 VTS, etc.), pero esto crea dificultades y limitaciones adicionales. Por lo tanto, considere un m茅todo completamente diferente que resuelva el problema de los montos de transferencias abiertas: transacciones confidenciales.
Transacciones confidenciales
Una caracter铆stica del m茅todo de Transacciones confidenciales (CT) es que oculta completamente los montos reales en las entradas y salidas de la transacci贸n de terceros. Todos pueden verificar que la suma de todas las salidas no exceda la suma de todas las entradas, que ya es suficiente para validar esta transacci贸n.
Esto fue posible gracias al uso de la prueba de conocimiento cero: esta es una prueba criptogr谩fica del conocimiento de un secreto, pero sin revelar esto 煤ltimo. Para demostrar que la suma de las salidas no excede la suma de las entradas, se utiliza el Compromiso de Petersen, que se basa en transformaciones en un grupo de puntos en una curva el铆ptica. Para combatir la emisi贸n incontrolada de monedas en este esquema, se aplica necesariamente la prueba del uso de cantidades permitidas a la salida de la transacci贸n. Para verificar que se hayan utilizado cantidades no negativas que no excedan el orden de puntos base, se utilizan las llamadas Pruebas de rango.
Y todo estar铆a bien, pero la creaci贸n de estas mismas pruebas de rango es muy costosa en t茅rminos de recursos inform谩ticos. Adem谩s, tienen un volumen muy grande. Te贸ricamente, es posible integrar transacciones confidenciales en el protocolo de Bitcoin, pero nadie tiene prisa por hacerlo debido a su gran volumen. Sin embargo, ya existen sistemas de contabilidad en funcionamiento donde las transacciones confidenciales se aplican con 茅xito.
Anillo de transacciones confidenciales
La siguiente metodolog铆a se llama Transacciones confidenciales en anillo. Para confundir la historia del origen de las monedas, aqu铆 se utilizan firmas de anillo. El remitente en la entrada de su transacci贸n no se refiere a una salida espec铆fica (UTXO), sino a varias a la vez. Adem谩s, con la ayuda de una firma de anillo, demuestra que posee las monedas de una de varias salidas, pero no se revel贸 cu谩l. Se deduce que es imposible rastrear sin ambig眉edades la historia del origen de las monedas.
El uso de firmas de anillo de esta manera se propuso por primera vez en el protocolo CryptoNote, en base al cual funcionan varias criptomonedas. Las transacciones confidenciales en anillo utilizan CT. Le permiten crear transacciones con muchas entradas y salidas, donde es imposible rastrear sin ambig眉edades el origen de cada entrada, la cantidad de transferencias est谩 oculta y no se requiere interacci贸n con otros usuarios para crear una transacci贸n.
Direcciones furtivas
Este enfoque es una t茅cnica para calcular direcciones encubiertas a las que se enviar谩n monedas. Esta idea fue descrita por primera vez por Peter Todd. Las claves p煤blicas se utilizan como identificadores de usuario: si desea aceptar pagos, debe anunciar su clave p煤blica.
El remitente utiliza su par de claves y su clave p煤blica para calcular una nueva clave p煤blica 煤nica, que ya se indicar谩 en la transacci贸n como una direcci贸n. Resulta que solo el remitente y el destinatario pueden saber la direcci贸n a la que se env铆an las monedas. Para un observador externo, no se puede establecer la conexi贸n entre el ID de usuario y la direcci贸n en la salida de la transacci贸n.
Aplicaci贸n pr谩ctica
驴D贸nde se aplican estos m茅todos en la pr谩ctica?

El equipo de Bitshares fue uno de los primeros en implementar CT junto con Stealth Addresses, no solo para la moneda base, sino tambi茅n para los tokens que se pueden emitir en la plataforma. La criptomoneda Monero admite firmas de anillo y direcciones ocultas para garantizar un alto nivel de privacidad. En enero de 2017, el equipo implement贸 RingCT, y con la actualizaci贸n en septiembre de 2017, el uso de RingCT se hizo estrictamente obligatorio. Cabe se帽alar el protocolo Mimblewimble, que utiliza una versi贸n modificada de CT, que actualmente se encuentra en desarrollo activo, pero hablaremos de ello m谩s adelante.
Existe tal proyecto ZeroLink, que es un marco para crear billeteras confidenciales basadas en la t茅cnica Chaumian CoinJoin. Es de destacar que puede funcionar en Bitcoin, sin requerir ning煤n cambio en el protocolo en s铆.
Pasemos a las preguntas frecuentes.
- 驴Es posible usar Direcciones Stealth en bitcoin?S铆, puede usarlos ahora, no se requieren actualizaciones de protocolo para esto. Pero para una adaptaci贸n m谩s amplia de esta funcionalidad, es necesario especificar estrictamente el orden de c谩lculo y los formatos de datos para que todas las billeteras puedan funcionar entre s铆 y, en consecuencia, agregar esta funci贸n a las billeteras mismas. Peter Todd ya ha creado un BIP por separado para presentar esta especificaci贸n, pero a煤n est谩 bajo consideraci贸n.
- 驴Es efectivo usar CoinJoin en su forma m谩s pura para bitcoins?No, en su forma pura es ineficaz, porque tales transacciones se prestan a un an谩lisis simple por la cantidad de transferencias.
Alternativamente, puede usar las mismas cantidades para todos los participantes, evitando mezcladores confiables que pueden robar monedas o violar la confidencialidad.- 驴Se pueden aplicar los m茅todos discutidos anteriormente para garantizar la confidencialidad en monedas digitales como Ethereum, Ripple y Stellar?No lo es. Ethereum, Ripple y Stellar utilizan un modelo de transacci贸n completamente diferente y una forma diferente de contabilizar las monedas, que no se pueden aplicar a tales m茅todos para lograr la confidencialidad. Por supuesto, puede intentar integrar artificialmente Direcciones Stealth o Transacciones Confidenciales, pero esto ser谩 extremadamente ineficaz en t茅rminos de rendimiento monetario. La raz贸n es que en Bitcoin, la contabilidad se basa en resultados no gastados (es decir, UTXO), y estas monedas usan saldos y cuentas.Este tema est谩 cubierto en una de las conferencias del curso de privacidad de criptomonedas en l铆nea Blockchain .