Privacidad
Si bien Bitcoin puede soportar una fuerte privacidad, muchas maneras de usarlo son usualmente no muy privadas. Con el adecuado entendimiento de la tecnología, bitcoin puede de hecho ser usado en una manera bastante privada y anónima.
Desde 2019 la mayoría de los entusiastas casuales de bitcoin creen que esta es perfectamente rastreable; lo cual es completamente falso. Alrededor de 2011 la mayoría de los entusiastas casuales creían que era totalmente privada; lo cual también es falso. Existen algunos matices – en ciertas situaciones bitcoin puede ser bastante privado. Pero no es simple de entender y puede tomar algo de tiempo de lectura para hacerlo.
Este artículo fue escrito en febrero de 2019. Una buena manera de leerlo es saltarse los ejemplos y luego volver a leer los conceptos básicos.
Sumario
Para evitarle el leer el resto del artículo, he aquí un breve sumario de cómo los usuarios normales de bitcoin pueden mejorar su privacidad:
- Piense acerca de aquello de lo que se está escondiendo, cuál es su ejemplo de amenaza y su adversario. Tome en cuenta que las compañías de vigilancia de transacciones existen, vigilando el ecosistema bitcoin a gran escala.
- No reutilice las direcciones. Las direcciones deberán ser mostradas a una entidad para recibir dinero y nunca usadas de nuevo una vez que el dinero ha sido gastado.
- Intente revelar la menor información posible sobre sí mismo cuando realice transacciones, por ejemplo, evite los chequeos AML/KYC y tenga cuidado al momento de entregar su verdadera dirección postal.
- Use una billetera respaldada por su propio nodo completo o el filtrado de bloque del lado del cliente, definitivamente no una billetera web.
- Transmita transacciones en cadena a través de Tor, si su billetera no lo soporta entonces copie y pegue los datos hex de la transacción en un formulario de transmisión web sobre el buscador Tor.
- Use la Red de Relámpago (Lightning Network) lo más posible.
- Si el canal relámpago no está disponible, utilice una billetera que implemente CoinJoin correctamente.
- Intente evitar crear cambios de dirección, por ejemplo, cuando financie un canal relámpago utilice un UTXO entero en él y sin ningún cambio (asumiendo que el importe no sea demasiado grande como para ser inseguro).
- Si el análisis forense digital es una preocupación para usted, entonces use una solución como el Sistema Operativo Tails.
Introducción
Los usuarios interactúan con bitcoin a través de software que puede filtrar información sobre ellos de distintas maneras ajenas a su anonimidad.
Bitcoin graba transacciones en la block chain, las cuales son visibles para todos y por lo mismo crean los mayores daños a la privacidad. Bitcoin se mueve entre direcciones; las direcciones de envío son conocidas, las direcciones de recepción son conocidas, los importes también. Sólo la identidad de cada dirección es desconocida (vea la primera imagen).
Los enlaces entre direcciones hechos por transacciones son a menudo llamados el gráfico transaccional. Por sí misma, esta información no puede identificar a nadie puesto que las identidades de las direcciones y transacciones no son más que números aleatorios. Sin embargo, si cualquiera de las direcciones en el pasado o futuro de una transacción puede ser enlazada a una identidad real, es posible que funcione desde ese punto y se pueda deducir quién es el dueño de todas las demás direcciones. Esta identificación de una dirección puede venir de un análisis de red, vigilancia, búsqueda en la web o una variedad de otros métodos. La práctica alentada de utilizar una nueva dirección por cada transacción busca dificultar este ataque.
Ejemplo – Fuentes de control adversario y destinación de monedas
La segunda imagen muestra un ejemplo simple. Un adversario ejecuta tanto un intercambiador de moneda como un sitio web “honeypot” hecho para atrapar personas. Si alguien usa su intercambiador para comprar bitcoins y entonces realiza las transacciones con monedas a través del sitio web trampa, la blockchain mostraría:
- La transacción de monedas en dirección A a la dirección B. Autorizada por .
- La transacción de monedas en dirección B a dirección C. Autorizada por .
Digamos que el adversario sabe que la cuenta bancaria del Sr. Anónimo envió la divisa gubernamental usada para comprar las monedas, las cuales luego fueron transferidas a la dirección B. El adversario además sabe que el sitio web de trampa recibió monedas en la dirección C que fueron gastadas de la dirección B. Juntos, este es un muy fuerte indicio de que la dirección B es propiedad del Sr. Anónimo y que este envió dinero al sitio web trampa. Esta suposición no es siempre correcta porque la dirección B bien podría haber sido una dirección ocupada en nombre del Sr. Anónimo por un tercer sujeto y la transacción C puede no haber estado relacionada, o ambas transacciones podrían incluso involucrar un contrato inteligente (Vea Transacciones Off-Chain) el cual efectivamente teleporta las monedas off-chain a una dirección completamente distinta en algún punto de la blockchain.
Ejemplo – Compra no-anónima de un periódico Chino
En este ejemplo, el adversario controla el destino y encuentra la fuente a partir de metadata.
- Usted vive en China y quiere comprar un “verdadero” periódico online con Bitcoins.
- Usted se une al foro Bitcoin y utiliza su dirección como una firma. Dado que usted es muy amable, logra obtener una suma modesta de donaciones después de algunos meses.
- Desafortunadamente, escogió mal a quién comprarle el periódico: Ha escogido a un agente del gobierno.
- El agente del gobierno mira la transacción usada para comprar el periódico en la blockchain y busca en la web cada dirección relevante en ella. Encuentra su dirección en su firma del foro Bitcoin. Usted ha dejado suficiente información personal en sus posts como para ser identificado así que ahora ha sido agendado para ser “reeducado”.
- Una razón fuerte por la cual esto ocurrió es debido a su re-uso de la dirección. Su firma del foro contaba con una sola dirección bitcoin que nunca cambió, por lo cual era fácil encontrarle con una simple búsqueda online.
Usted necesita protegerse a sí mismo tanto de ataques frontales (tener algo que lo identifique como usuario de monedas que obtuvo a través de métodos que debieran permanecer secretos, como el ejemplo del estafador) y ataques reversos (tener algo que debería mantenerse secreto usando monedas que le identifican, como el ejemplo del periódico).
Ejemplo – Una donación perfectamente privada
Por otra parte, he aquí un ejemplo de alguien usando bitcoin para enviar una donación completamente anónima.
- El propósito está en donar a alguna organización que acepte bitcoins.
- Usted utiliza una billetera Bitcoin Core enteramente a través de Tor.
- Descarga algunos cientos de gigabytes de data extra a través de Tor para que el ancho de banda de descarga no sea exactamente del tamaño de la blockchain.
- Mina solitariamente un bloque y cuenta con las recién minadas monedas en su billetera.
- Envía el balance total a una dirección de donación para tal organización.
- Finalmente, destruye el hardware computacional usado.
Como su billetera de nodos completos es ejecutada enteramente a través de Tor, su dirección IP está bien escondida. Tor además esconde el hecho de que usted está usando bitcoin en absoluto. Como las monedas fueron obtenidas por minería, están totalmente desenlazadas de cualquier otra información sobre usted. Dado que la transacción es una donación, no existen bienes o servicios que sean enviados a usted, así que no necesita revelar ninguna dirección de recepción. Puesto que el balance total es enviado, no existen cambios de dirección de vuelta que puedan filtrar información más adelante. Como el hardware ha sido destruido no quedan registros en ningún disco duro descartado que puedan ser encontrados más tarde. La única manera en la que se me ocurre atacar este esquema es el ser un adversario global que pueda explotar las debilidades de Tor.
Múltiples interpretaciones de una transacción blockchain
Las transacciones Bitcoin están compuestas por entradas y salidas, de las cuales puede haber una o más. Salidas previamente creadas pueden ser usadas como entradas para transacciones posteriores. Algunas salidas son destruidas al ser gastadas y nuevas salidas son entonces creadas para reemplazarlas.
Considere esta transacción de ejemplo:
1btc —-> 1 btc
3 btc —> 3 btc
Esta transacción tiene dos entradas, con un valor de 1 btc y 3 btc respectivamente, creando dos salidas también valoradas en 1 btc y 3 btc.
Si usted fuera a ver esto en la blockchain ¿Cuál asumiría que es el significado de esta transacción? (por ejemplo, usualmente asumimos que una transacción bitcoin es un pago pero no necesariamente ha de serlo).
Existen al menos nueve posibles[1] interpretaciones:
- Alice otorga ambas entradas y paga 3 btc a Bob. Alice es dueña de la salida 1 btc (en otras palabras, se trata de una salida de cambio).
- Alice otorga ambas entradas y paga 1 btc a Bob, con 3 btc pagadas de vuelta a Alice como cambio.
- Alice otorga 1 btc de entrada y Bob otorga 3 btc de entrada, Alice obtiene 1 btc de salida y Bob obtiene 3 btc de salida. Este es un tipo de transacción CoinJoin.
- Alice paga 2 btc a Bob. Alice otorga una entrada 3 btc, obtiene la salida 1 btc; Bob otorga una entrada 1 btc y obtiene 3 btc. Esto sería un tipo de transacción PayJoin.
- Alice paga 4 btc a Bob (pero usando dos salidas por alguna razón).
- Transacción falsa – Alice es dueña de todas las entradas y salidas y simplemente mueve monedas entre sus propias direcciones.
- Alice le paga a Bob 3 btc y a Carol 1 btc. Este es un pago en lotes sin dirección de cambio.
- Alice paga 3, Bob paga 1; Carol obtiene 3 btc y David obtiene 1 btc. Este es algún tipo de pago en lote CoinJoin sin cambio de dirección.
- Alice y Bob pagan 4 btc a Carol (pero usando dos salidas).
Muchas interpretaciones son posibles en tan solo una simple transacción. Por lo tanto, es completamente falso decir que las transacciones bitcoin son siempre perfectamente traceables, la realidad es mucho más complicada que eso.
Los adversarios relacionadas con la privacidad que analizan la blockchain usualmente confían en métodos heurísticos (o idiomas de uso) en los que ciertos supuestos son hechos respecto a lo que es posible. El analista entonces ignoraría o excluiría algunas de estas posibilidades. Pero ello se trata solamente de supuestos que bien podrían estar equivocados. Alguien que quiera mejor privacidad puede intencionalmente romper dichos supuestos, cosa que burlaría por completo a un analista.
Las unidades de la moneda bitcoin no llevan marcas de agua entre transacción (en otras palabras, no cuentan con pequeños números de serie). Por ejemplo la entrada 1 btc en esa transacción bien podría resultar en la salida 1 btc o ser parte de la salida 3 btc, o una mezcla de ambas. Las transacciones son mapeos many-to-many, así que en un sentido muy importante es imposible responder a la pregunta de dónde terminó el 1 btc. Esta característica fungible de bitcoin dentro de una transacción es una razón importante para explicar las diferentes posibilidades de interpretación de la transacción indicada.
Modelo de amenaza
Al considerar la privacidad es necesario que usted piense exáctamente de qué se está escondiendo. Deberá de examinar cómo un adversario hipotético podría espiarle, qué tipo de información es más importante para usted y qué tecnología necesitará usar para proteger su privacidad. El tipo de comportamiento necesario para proteger su privacidad por lo tanto dependerá de su modelo de amenaza.
Los recién llegados a los temas de privacidad a menudo piensan que pueden simplemente descargar algún software y todas sus preocupaciones relacionadas con la privacidad se verán resueltas. Esto no es así. La privacidad requiere un cambio en su comportamiento, por más pequeño que este sea. Por ejemplo, imagine que usted cuenta con una conexión de internet perfectamente privada en la que con quién se comunica y lo que dice es completamente privado. Aún así podría utilizar esta misma red para entrar en un sitio web de redes sociales escribiendo su nombre real, subiendo una selfie y hablando sobre lo que está haciendo ahora mismo. Cualquiera en internet podría ver esa información, de forma que su privacidad se vería arruinada aún cuando estuvo usando tecnología perfectamente privada.
Para mayores detalles, lea la charla Opsec for Hackers by grugq. Esta charla está principalmente dirigida a activistas políticos que necesitan proteger su privacidad de gobiernos, pero muchos de los consejos generales aplican a cada uno de nosotros.
Gran parte del tiempo, la negación creíble no es lo suficientemente buena pues muchos métodos de espionaje sólo necesitan funcionar a nivel estadístico (por ejemplo, la publicidad dirigida).
Método de fusión de datos
Múltiples fugas de privacidad al combinarse pueden ser mucho más dañinas a la privacidad que cualquier fuga por sí sola. Imagine si el receptor de una transacción está intentando hacer perder su anonimato al emisor. Cada fuga de privacidad eliminaría varios candidatos de quién puede ser el emisor, dos distintas fugas de privacidad eliminarían diferentes candidatos dejando aún menos en la lista. Vea el diagrama para una representación gráfica de esto.
Por esta razón incluso las fugas más pequeñas de información deben ser evitadas lo más posible, dado que podrían completamente destruir la privacidad al unirse a otras fugas. Volviendo al ejemplo del comprador del periódico Chino no-anónimo, quien perdió su anonimato por una combinación de información de transacciones visible y su dirección de donación en la firma de un foro. Existen muchas transacciones en la blockchain que por sí mismas no revelan nada respecto a la identidad del operador o sus hábitos de compra. Existen montones de direcciones de donación localizadas en firmas de foros que tampoco revelan mucho sobre la identidad o hábitos de consumo de su dueño, puesto que se tratan solamente de información criptográfica al azar. Pero juntas, ambas fugas de privacidad resultan en un viaje de vuelta al campo de reeducación. Es muy importante entender este método de fusión de datos al momento de aprender sobre privacidad en bitcoin (y otras situaciones).
¿Por qué la privacidad?
La privacidad financiera es un elemento esencial en la fungibilidad de Bitcoin: Si usted puede realmente distinguir una moneda de otra, entonces su fungibilidad es débil. Si nuestra fungibilidad es demasiado débil en la práctica, entonces no podemos descentralizarnos: Si alguien importante revela una lista de monedas robadas no aceptará ninguna moneda derivada y usted deberá cuidadosamente chequear que las monedas que acepta no se encuentren en dicha lista, regresando aquellas que no pasan la prueba. Todos se atascan en el chequeo de listas negras emitidas por variadas autoridades puesto que en ese mundo a nadie le gustaría quedarse con monedas malas. Esto añade fricción y costes transaccionales, haciendo que Bitcoin pierda su valor monetario.
La privacidad financiera es un criterio esencial para la operación eficiente de un libre mercado: Si usted maneja un negocio, no puede fijar precios efectivamente si tanto sus proveedores como sus clientes pueden ver todas sus transacciones en contra de su voluntad. Usted no podrá competir efectivamente si su competencia es capaz de rastrear todas sus ventas. Individualmente, su influencia informacional se pierde dentro de sus operaciones privadas si no cuenta con privacidad por sobre sus cuentas: Si usted le paga a su arrendador en Bitcoin sin la suficiente privacidad, este podrá ver cuándo ha recibido un aumento en su sueldo y podría usarlo en su favor para aumentar el valor de su renta.
La privacidad financiera es además esencial para la seguridad personal: Si los ladrones son capaces de ver sus gastos, ingresos y ahorros, pueden utilizar esa información para apuntarlo y aprovecharse de usted. Sin privacidad, sujetos maliciosos tienen mayor capacidad de robar su identidad, compras grandes de su puerta o hacerse pasar por negociantes con los que usted realiza transacciones… Sabiendo exactamente con cuánto estafarle.
La privacidad financiera es esencial para la dignidad humana: Nadie quiere al barista engreído de su cafetería o sus vecinos averiguadores comentando respecto a sus ingresos o hábitos de consumo. Nadie quiere a sus suegros ansiosos de tener nietos preguntando por qué está comprando anticonceptivos (o juguetes sexuales). Su empleador no tiene ninguna razón para saber a qué iglesia usted entrega donativos. Solo en un mundo ideal y libre de discriminación, en el que nadie tiene ninguna autoridad excesiva sobre nadie más podríamos mantener nuestra dignidad y realizar nuestras transacciones legales libremente, sin auto-censura, en caso de no tener privacidad.
Más importante aún, la privacidad financiera no es incompatible con cosas como el cumplimiento de la ley o la transparencia. Uno siempre puede llevar registros, ser obligado (u ofrecerse) a proveerlos a quien sea. Nada de esto requiere registros públicos visibles _globalmente_.
Los registros públicos globalmente visibles en el ámbito financiero son algo nunca antes visto. Son poco deseables y defendiblemente intolerables. El documento Bitcoin hizo una promesa respecto a cómo podríamos dar la vuelta a la visibilidad del libro de contabilidad con direcciones pseudónimas, pero el ecosistema ha roto esa promesa en varios lugares y deberíamos de encontrar la manera de arreglarlo. Bitcoin podría haber codificado su nombre o dirección IP en cada transacción, pero no lo hizo. El documento cuenta con una sección referente a la privacidad. Es incorrecto decir que Bitcoin no se enfoca en la privacidad. La suficiente privacidad es un prerrequisito esencial para una divisa digital viable[2].
Ataques Blockchain a la privacidad
Bitcoin utiliza una block chain. Los usuarios pueden descargar y verificar la blockchain para chequear que todas las reglas de bitcoin fueron seguidas a través de su historia. Por ejemplo, sería posible chequear que nadie haya imprimido infinitas bitcoins y que cada moneda sólo fue gastada con una firma válida creada por su propia clave privada. Esto es lo que le otorga a bitcoin su singular proposición valórica como un tipo de dinero electrónico que requiere tan solo pequeñas cantidades de confianza. Pero esa misma estructura blockchain lleva a problemas en la privacidad puesto que cada transacción ha de estar disponible para que todos la vean, por siempre. Esta sección discute métodos conocidos que un adversario podría utilizar para analizar la blockchain pública.
Bitcoin utiliza un modelo UTXO. Las transacciones tienen entradas y salidas, pueden tener una o más de cada una. Las salidas previas pueden ser usadas como entradas para transacciones posteriores. Una salida que no ha sido gastada aún es conocida como una salida de transacción no gastada (UTXO). Las UTXO son a menudo llamadas “monedas”. Están asociadas con una dirección bitcoin y pueden ser gastadas creando una firma válida y correspondiente al scriptPubkey de la dirección.
Las direcciones son información criptográfica, esencialmente números al azar. Por sí mismas no revelan mucho respecto al verdadero dueño de cualquier bitcoin. Usualmente un adversario intentará enlazar múltiples direcciones que piensan que pertenecen a la misma billetera. Tales colecciones de direcciones son llamadas “racimos”, “clausuras” o “racimo de billeteras”, y la actividad de crearlas se conoce como “aglomeración de billetera”. Una vez que los racimos son obtenidos el adversario puede intentar enlazarlos a las identidades reales de las entidades a las que quiere espiar. Por ejemplo, quizás encuentre que el racimo de billeteras A pertenece a Alice y el otro racimo de billetera B pertenece a Bob. Si una transacción bitcoin es vista paganda del racimo A al racimo B entonces el adversario sabrá que Alice ha enviado monedas a Bob.
Puede ser muy difícil afinar la heurística para aglomerar billeteras y poder obtener información correcta[3].
Formatos comunes de propiedad heurística
Esto es una heurística o suposición que dice que si una transacción tiene más de una entrada entonces todas esas entradas son propiedad de la misma entidad.
Por ejemplo, considere esta transacción con entradas A, B y C; y salidas X y Y.
A (1 btc) –> X (4 btc)
B (2 btc) Y (2 btc)
C (3 btc)
Esta transacción sería una indicación de que las direcciones B y C son propiedad de la misma persona que es dueña de la dirección A.
Uno de los propósitos de CoinJoin es romper esta heurística. Sin embargo, ella es muy a menudo cierta y es ampliamente utilizada por compañías de vigilancia de transacciones y otros adversarios hasta este año 2019. La heurística normalmente se combina con razonamiento de re-utilización de direcciones, lo que junto a la casi-centralizada economía de bitcoin hasta 2018, justifica por qué esta heurística puede ser irracionalmente efectiva[4]. El éxito de la heurística depende también del comportamiento de la billetera: por ejemplo, si una billetera usualmente recibe pequeñas importes y envía grandes importes, entonces creará muchas transacciones de múltiples entradas.
Detección de cambio de dirección
Muchas transacciones de bitcoin cuentan con salidas de cambiohttps://en.bitcoin.it/wiki/Change. Sería una seria fuga de privacidad si la dirección de cambio puede ser hallada de alguna manera, ya que enlazaría la propiedad de las (ahora gastadas) entradas con una nueva salida. Los cambios de salida pueden ser muy efectivos cuando se combinan con otras fugas de privacidad como los formatos comunes de propiedad heurística o re-utilización de direcciones. La detección de cambios de dirección permite al adversario agrupar todas las direcciones recién creadas, lo cual los formatos comunes de propiedad heurística y re-utilización de direcciones permite que direcciones pasadas sean agrupadas.
Cambios en direcciones llevan a un patrón de uso común llamado la peeling chain. Se ve tras largas transacciones de intercambios, mercados, estanques de minería y pagos de salarios. En una peeling chain una sola dirección comienza con una relativamente grande cantidad de bitcoins. Una cantidad más pequeña es entonces “pelada” de esta gran cantidad, creando una transacción en la que una pequeña cantidad es transferida a una dirección, y el resto es transferido a una dirección de cambio de un solo uso. Este proceso se repite – potencialmente por cientos o miles de saltos – hasta que el importe mayor es emparejada, punto en el cual (en un sólo uso) el importe remanente en la dirección puede ser agregada junto a otras direcciones para de nuevo ceder una gran cantidad en una sola dirección, y el proceso de “pelado” empieza de nuevo[5].
Reutilización de dirección
Si una dirección de salida ha sido reutilizada es muy probable que sea un pago de salida, no una salida de cambio. Esto se debe a que los cambios de dirección son creados automáticamente por software de billeteras pero las direcciones de pago son enviadas manualmente entre humanos. La reutilización de direcciones ocurriría porque el usuario humano reutilizó una dirección por ignorancia o apatía. Esta heurística es probablemente la más correcta, ya que es muy difícil imaginar cómo positivos falsos podrían aparecer (excepto por diseño intencional de billeteras). Esta heurística también es conocida como “heurística de sombra”.
Algunos software muy antiguos (de 2010-2011, momento en el que no teníamos billeteras Deterministas) no utilizan un cambio de nueva dirección pero envían el cambio de vuelta a las direcciones de entrada. Esto revela el cambio exacto en direcciones.
Evitar la reutilización de direcciones es un remedio obvio. Otra idea es que las billeteras podrían automáticamente detectar cuando una dirección de pago ha sido usada antes (quizás preguntando al usuario) y luego usar una dirección reutilizada como su dirección de cambio; de forma que ambas salidas fuese direcciones re-utilizadas.
Dactiloscopía de billeteras
Un analista cuidadoso a veces deduce qué software creó una transacción específica, puesto que los distintos softwares de billetera no siempre crean transacciones exactamente de la misma manera. La dactiloscopía de billeteras puede ser usada para detectar salidas de cambio puesto que una salida de cambio es aquella gastada con la misma huella digital de billetera.
Por ejemplo, considere cinco transacciones típicas que consumen una entrada cada una para producir dos salidas, A, B, C, D, E se refieren a transacciones. A1, A2, etc se refieren a direcciones de salida de esas transacciones
–> C1
A1 –> B2 –> C2
–> B2 –> D1
–> D2 –> E1
–> E2
Si la dactiloscopía de billeteras encuentra que las transacciones A, B, D y E son creadas por el mismo software de billetera y las otras transacciones son creadas por otro software, entonces las direcciones de cambio se vuelven obvias. Las mismas transacciones con direcciones no idénticas reemplazadas por X se muestran. La peel chain es visible, está claro que B2, D2, E1 son direcciones de cambio que pertenecen a la misma billetera que A1.
–> X
A1 –> X –> X
–> B2 –> X
–> D2 –> E1
–> X
Existe una variedad de maneras de obtener evidencia usada para identificar software de billeteras:
- Formatos de direcciones. Las billeteras generalmente sólo usan un tipo de dirección. Si una transacción tiene todas las entradas y una salida del mismo tipo de dirección (ej: p2pkh), con la salida restante siendo de un tipo distinto (p2sh), entonces una suposición razonable sería que el formato de misma dirección de salida (p2pkh) es el cambio y el formato de distinta dirección de salida (p2sh) es el pago perteneciente a alguien más.
- Tipos de script. Cada billetera generalmente utiliza sólo un script. Por ejemplo, la billetera que envía podría ser una billetera multifirmas P2SH 2-de-3, lo que genera una transacción a dos salidas: una 2-de-3 dirección multifirmas y la otra 2-de-2 dirección multifirmas. El script distinto es un fuerte indicativo de que la salida es un pago y la otra salida es un cambio.
- Indexación Lexicográfica BIP69 de Salidas y Entradas de Transacción. Este BIP describe una manera estándar para que las billeteras ordenen sus entradas y salidas para privacidad. Ahora mismo el ecosistema de billeteras tiene una mezcla de billeteras que implementan y no el estándar, lo que ayuda con la dactiloscopía. Nótese que la común transacción una-entrada-dos-salidas con órdenes al azar seguirá el BIP69 sólo por casualidad 50% del tiempo.
- Número de entradas y salidas. Diferentes usuarios a menudo construyen transacciones diferentes. Por ejemplo, individuos a menudo realizan transacciones con tan sólo dos salidas; un pago y un cambio, mientras que las instituciones de alto volumen como casinos o casas de cambio utilizan la consolidación y la dosificación[6][7]. Una salida que más tarde es utilizada para crear una transacción de dosificación probablemente no se trata del cambio. Esta heurística es también llamada la “heurística del consumidor”.
- Campos de transacción. Los valores en el formato de transacción que pueden variar dependiendo del software de billetera: nLockTime es un campo de transacciones definido por algunas billeteras para hacer el fee sniping menos rentable. Una mezcla de billeteras en el ecosistema implementan y no esta característica. nLockTime también puede ser usado como ciertos protocolos de privacidad como CoinSwap. nSequence es otro ejemplo. También el número de versión.
- Firmas de valor R bajo. El formato DER usado para codificar firmas Bitcoin requiere añadir un extra byte entero a una firma sólo para indicar cuando el valor R de la firma está en la mitad superior de la curva elíptica usada por Bitcoin. El valor R es derivado al azar, de forma que la mitad de todas las firmas tienen este extra byte. Desde julio 2018[8] Bitcoin Core solo genera firmas con un valor R bajo que no requieran ese byte extra. Al hacer esto, las transacciones Bitcoin Core ahorrarán un byte por cada dos firmas (en promedio). Desde 2019 ninguna otra billetera hace esto, entonces una firma de alto valor R es evidencia de que Bitcoin Core no está siendo utilizada[9].
- Claves públicas comprimidas y no-comprimidas. Los software antiguos de billetera usan claves públicas no comprimidas[10]. Una mezcla de claves comprimidas y no-comprimidas puede ser usada para la dactiloscopía.
- tasas de minería. Varios software de billeteras pueden responder a la presión de espacios entre bloques de diferentes maneras, las cuales pueden llevar a pagos de distintos tipos de tasas de minería. Esto también puede ser una manera de utilizar la dactiloscopía de billeteras.
- Selección de Monedas. Varios softwares de billetera pueden escoger qué UTXOs gastar usando distintos algoritmos que también pueden ser usados para la dactiloscopía.
Si múltiples usuarios están usando el mismo software de billetera, entonces la dactiloscopía de billeteras no puede detectar el cambio de dirección. Es también posible que un único usuario sea dueño de dos billeteras distintas que usen distinto software (por ejemplo una hot wallet y una cold wallet) y entonces las transacciones entre diferentes softwares no indicarían un cambio de propiedad. La dactiloscopía de billeteras por sí sola no es nunca una evidencia definitiva, pero como con otras fugas de privacidad, funciona mejor con fusión de datos cuando múltiples fugas de privacidad se combinan.
Número redondos
Muchas importes de pago son números redondos, por ejemplo 1 BTC o 0.1 BTC. el importe de cambio de sobra entonces sería un número no redondo (ej. 1.78213974 BTC). Esto es potencialmente útil para encontrar la dirección de cambio. el importe puede ser un número redondo en otra divisa. el importe 2.24159873 BTC no es redonda en bitcoin pero al ser convertida a USD puede estar cerca de los $100.
Alza de tasas (fee)
BIP 0125 define un mecanismo para reemplazar una transacción sin confirmar con otra transacción que pague un fee o tasa mayor. En el contexto del mercado para block space, un usuario podría toparse con que su transacción no está siendo confirmada lo suficientemente rápido, por lo que opta por un “fee bump” (alza de tasas) o paga una tasa de minería más alto. Sin embargo generalmente la nueva tasa de minería más alta ocurrirá al reducir la tasa de cambio. Entonces, si un adversario está observando todas las transacciones sin confirmar, podría ver tanto la primera transacción de tasa más baja como la posterior transacción de tasa más alta, y la salida con la tasa reducida sería la salida de cambio.
Esto podría ser mitigado al algunas veces reducir la tasa de ambas salidas, o reducir sólo tasa de pago (en un modelo en el que el emisor paga la tasa).
Heurística de entrada innecesaria
También llamada la “heurística de cambio óptimo”. Considere esta transacción bitcoin. Tiene dos entradas por el valor de 2 BTC y dos salidas que valen 4 BTC y 1 BTC.
2 btc –> 4 btc
3 btc 1 btc
Asumiendo que una de las salidas es cambio y la otra salida es el pago. Existen dos interpretaciones: la salida de pago es o la salida 4 BTC o la salida 1 BTC. Pero si la salida 1 BTC es el importe de pago entonces la entrada 3 BTC es innecesaria, dado que la billetera puedo haber gastado sólo la entrada 2 BTC y pagado menores tasas de minería por hacerlo. Esto es un indicador de que la real salida de pago es 4 BTC y que 1 BTC es la salida de cambio.
Este es un problema para transacciones que tienen más de una entrada. Una manera de arreglar esta fuga es agregar más entradas hasta que la salida de cambio sea más alta que cualquier entrada, por ejemplo:
2 btc –> 4 btc
3 btc 6 btc
5 btc
Ahora ambas interpretaciones implican que algunas entradas son innecesarias. Desafortunadamente esto cuesta más en tasas de minería y sólo puede hacerse si la billetera en realidad posee otros UTXOs.
Algunas billeteras tienen un algoritmo de selección de monedas que viola esta heurística. Un ejemplo sería puesto que las billeteras quieren consolidar entradas en tiempos de menores tasas de minería. Por tanto esta heurística no es evidencia decisiva.
Envíos a un distinto tipo de script
Enviar fondos a un distinto tipo de script que aquel del cual usted está gastando facilita el saber cuál salida es la de cambio.
Por ejemplo, para una transacción con 1 entrada gastando una moneda p2pkh y creando 2 salidas, una de p2pkh y una de p2sh, es muy probable que la salida p2pkh sea el cambio mientras que la p2sh es el pago.
Esto también es posible si las entradas son tipo mixto (creadas por billeteras que soporten múltiples tipos de script para compatibilidad al reverso). Si uno de los tipos de script de salida es conocido por ser usado por la billetera (porque el mismo tipo de script es gastado por al menos una de las entradas) mientras que el otro no, es probable que el otro sea el pago.
Esto tiene el mayor efecto en los adoptantes anticipados de la nueva tecnología de billeteras, como p2sh o segwit. Mientras más excepcional sea pagar a personas que usan el mismo tipo de script que usted, más se filtrará la identidad de su salida de cambio. Esto mejorará a través del tiempo a medida que la nueva tecnología gane una más amplia adopción.
Bugs de billetera
Algunos software de billetera manejan los cambios de una manera muy poco privada. Por ejemplo, ciertas billeteras antiguas siempre ponían la salida de cambio en último lugar de la transacción. Una antigua versión de Bitcoin Core agregaba la entrada UTXOs a la transacción hasta que la tasa de cambio estuviese alrededor de 0.1 BTC, de forma que una cantidad un poco por encima de 0.1 BTC siempre sería cambiada.
CoinJoin de igual salida
Las transacciones CoinJoin de igual salida trivialmente revelan la dirección de cambio puesto que son las salidas las que no tienen el mismo valor. Por ejemplo, considere esta coinjoin de igual salida:
A (1btc)
X (5btc) —> B (1btc)
Y (3btc) C (4btc)
D (2btc)
Existe un muy fuerte indicio de que la salida D sea cambio perteneciente al dueño de la entrada Y, mientras que la salida C sea cambio perteneciente a la entrada X. Sin embargo, CoinJoin rompe la heurística de propiedad de entrada común y efectivamente esconde la propiedad de las salidas de pago (A y B), así que las compensaciones están aún altamente a favor de utilizar coinjoin.
Crecimiento de racimos
Los racimos de billeteras creadas al usar la heurística de propiedad de entrada común usualmente crecen (en número de direcciones) lenta e incrementalmente[11]. Dos grandes racimos fusionándose es raro y podría indicar que las heurísticas están defectuosas. Entonces, otra manera de deducir la dirección de cambio es encontrar cuál salida causa que los racimos crezcan solo lentamente. El valor exacto por “cuán lentamente” tiene permitido crecer un racimo es una pregunta abierta.
Gráfico de transacción
Como fue descrito en la introducción, las direcciones están conectadas entre sí por transacciones en la blockchain. Esta información de todas las transacciones y direcciones es a menuda llamada el gráfico de transacción.
Usualmente se asume que las transacciones corresponden a reales transacciones económicas, pero a veces las transacciones simplemente representan a alguien enviando bitcoins a sí mismo.
Análisis de mancha
El análisis de mancha (o taint analysis) es una técnica a veces utilizada para estudiar el flujo de bitcoins y extraer información relacionada con la privacidad. Si una dirección A se conecta a una información relacionada con la privacidad (como un nombre real) y hace una transacción enviando monedas a la dirección B, entonces se dice que la dirección B está manchada con monedas de la dirección A. De esta forma una mancha es propagada a través del “toque” vías transacciones[12]. No está claro cuán útil es el análisis de mancha para espiar, puesto que no toma en cuenta la transferencia de propiedad. Por ejemplo, el dueño de monedas manchadas podría donar algunas a una caridad, las monedas donadas podrían ser reconocidas como manchadas pero a la caridad no le molesta, y por tanto podría no dar ninguna información respecto a la fuente de dichas monedas. El análisis de mancha podría sólo ser útil para desarmar planes en los que alguien intenta esconder el origen de monedas enviando docenas de transacciones falsas a sí mismo múltiples veces.
Cantidad
Las transacciones Blockchain contienen información de cantidad de las entradas y salidas de transacción, así como una cantidad implícita de la tasa de minería. Esto es visible para cualquiera.
A menudo el importe de pago de una transacción es un número redondo, posiblemente al ser convertido a otra moneda. Un análisis de números redondos en transacciones bitcoin ha sido usado para medir los países o regiones en los que pagos han ocurrido[13].
Tasas de entrada que revelan las riquezas del emisor
Un desajuste en los tamaños de las entradas disponibles vs lo que se requiere puede resultar en una fuga de privacidad de las riquezas totales del emisor. Por ejemplo, al intentar enviar 1 bitcoin a alguien, un usuario podría solo contar con una entrada valorada en 10 bitcoins. Este crea una transacción con 1 bitcoin yendo hacia el receptor y 9 bitcoins yendo hacia el cambio de dirección. El receptor puede entonces ver la transacción en la blockchain y deducir que el emisor era dueño de al menos 10 bitcoins.
Usando el dinero en papel como analogía, si usted entrega un billete de 100 USD para pagar por una bebida que solo cuesta 5 USD, el barista sabrá que su balance es de al menos 96 USD. Quizás sea más alto, seguramente, pero al menos no es menor que eso[14].
Importes exactos de pago (sin cambio)
Los pagos que envían importes exactos sin llevarse cambio son un indicador probable de que las bitcoins no cambiaron de manos.
Esto usualmente significa que el usuario utilizó la opción de “enviar cantidad máxima” en su billetera para transferir fondos a su nueva billetera, una cuenta de intercambio, para financiar un canal relámpago u otros casos similares en los que las bitcoins se mantienen con el mismo propietario.
Otras razones posibles para enviar importes exactos sin cambio es que el algoritmo de selección de monedas haya sido lo suficientemente inteligente y afortunado para encontrar un set adecuado de entradas para el importe de pago prevista, sin requerir de cambio (o que requiriera una cantidad de cambio suficientemente insuficiente como para renunciar a ella), o usuarios avanzados enviando donaciones usando la selección manual de monedas para explícitamente evitar el cambio.
Agrupación en lotes
El pago en lotes es una técnica para reducir la tasa de minería de un pago. Funciona a través de la agrupación de varios pagos en una transacción de block chain. Es normalmente utilizada por intercambios, casinos y otros gastadores de alto volumen.
La implicación de privacidad viene dada en que los receptores pueden ver el importe y dirección de otros receptores[15]
Cuando usted recibe su retiro de Kraken, puede revisar su transacción en un explorador block chain y ver las direcciones de todos los demás que recibieron un pago en la misma transacción. Usted no sabe quiénes son estos receptores, pero sí sabe que han recibido bitcoins de Kraken al igual que usted.
Esto no es bueno para la privacidad, pero quizás no es esta la peor parte. Si Kraken hizo cada uno de esos pagos por separado, estos podrían aún estar conectados a través de las salidas de cambio y quizás también por ciertas otras características identificantes que compañías de análisis de block chain e individuos privados usen para tomar las huellas dactilares de gastadores particulares.
Sin embargo, es algo para tener en cuenta si está considerando hacer pagos en lote en los que la privacidad sea especialmente importante o de por sí ya un poco débil, tal como hacer nómina en una compañía pequeña en la que usted no quiere que cada empleado conozca los salarios de los demás empleados.
Scripts inusuales
La mayoría pero no todos los scripts bitcoin son de una sola firma. Otros scripts son posibles, siendo los más comunes de múltiples firmas. Un script que sea particularmente inusual puede filtrar información simplemente por ser tan único.
2-de-3 multisig es por lejos el más común script de firma-no-única en 2019.
Pago de comprador misterioso
Un pago de comprador misterioso se le llama a cuando un adversario paga bitcoin a un objetivo con el fin de obtener información relacionada a la privacidad. Esto funcionará incluso si la reutilización de direcciones es evitada. Por ejemplo, si el objetivo es un comerciante online entonces el adversario podría comprar un item pequeño. En la interfaz de pago se les mostraría una de las direcciones bitcoin del comerciante. El adversario ahora sabe que esta dirección pertenece al comerciante y al revisar la blockchain para transacciones posteriores, otra información sería revelada, lo que al combinarse con otras técnicas podría revelar bastantes datos del comerciante. La heurística de propiedad de entrada común y la detección de dirección de cambio podrían revelar otras direcciones pertenecientes al comerciante, (asumiendo que contramedidas como CoinJoin no estén siendo utilizadas) pudiendo entregar un límite inferior para el volumen de ventas. Esto funciona puesto que nadie en todo el internet puede solicitar más de una de las direcciones del comerciante.
Reutilización de direcciones forzado
La reutilización de direcciones forzada ocurre cuando un adversario paga pequeñas importes de bitcoin a direcciones que ya han sido utilizadas en la block chain. El adversario espera que los usuarios de su software de billetera utilicen los pagos como entradas para transacciones mayores, lo que revelaría otras direcciones vía la heurística de propiedad de entrada común. Estos pagos pueden entenderse como una manera de coaccionar al dueño de la dirección a una reutilización de direcciones no intencionada[16][17].
El comportamiento correcto por parte de las billeteras sería no gastar monedas que han aterrizado en una ya utilizada dirección.
Correlación de importes
La correlación de importes se refiere a buscar en toda la block chain importes de salida. Por ejemplo, digamos que estamos usando cualquier tecnología de privacidad de black box capaz de romper el gráfico transaccional.
V –> [tecnología de privacidad black box] –> V – tasa
La tecnología de privacidad es utilizada para mezclar V cantidad de bitcoins, devolviendo V bitcoins menos las tasas de vuelta al usuario. La correlación de importes podría utilizarse para deshacer la mezcla de esta tecnología, buscando en la blockchain transacciones con un importe de salida cercano a V.
Una manera de resistir la correlación de importes sería dividir el envío de bitcoins de vuelta al usuario en muchas transacciones con importe de salida (w0, w1,w2) que en conjunto suman V menos las tasas.
V –> [privacy tech] –> w0
–> w1
–> w2
Otra manera de utilizar la correlación de importes sería usarla para encontrar un punto de inicio. Por ejemplo, si Bob quiere espiar a Alice. Digamos que Alice mencionó de pasada que se va de vacaciones con su novio, las cuales costarán $5000, Bob pueden entonces buscar todas las transacciones en la blockchain en el período de tiempo justo, hasta encontrar transacciones cuyos importes de salida se acerquen a los $5000. Incluso si encuentra múltiples coincidencias, Bob aún puede tener una buena idea de cuáles direcciones bitcoin pertenecen a Alice.
Correlación de tiempo
La correlación de tiempo se refiere al uso de la información de tiempo de las transacciones en la blockchain. Similar a la correlación de importes, si un adversario de alguna manera descubre el tiempo en el que una transacción interesante ocurrió, puede revisar la blockchain en dicho período para descartar candidatos.
Esto puede ser vencido escogiendo uniformemente al azar un momento entre el ahora y un período de tiempo apropiado en el cual difundir la transacción bitcoin. Esto fuerza al adversario a buscar mucho más entre las transacciones existentes; este deberá considerar igualmente el set de anonimidad entero entre ahora y el período de tiempo establecido.
Ataques no-blockchain a la privacidad
Análisis de tráfico
Los nodos Bitcoin se comunican entre sí vía una red peer-to-peer para transmitir transacciones y bloques. Los nodos transmiten estos paquetes a todas sus conexiones, lo que tiene buenas propiedades de privacidad puesto que un nodo conectado no sabe si la data transmitida se originó de su peer o si el peer estaba simplemente transmitiéndolo.
Un adversario capaz de inmiscuirse en su conexión de internet (tal como su ISP, un proveedor de Wifi o VPN) puede ver los datos enviados y recibidos por su nodo. Esto revelaría que usted es un usuario bitcoin. Si el adversario ve una transacción o bloque saliendo de su nodo que no haya entrado previamente, entonces puede saber con casi toda certeza que la transacción fue hecha por usted o que el bloque fue minado por usted. Como las conexiones de internet están involucradas, el adversario entonces será capaz de enlazar la dirección IP con la información bitcoin descubierta.
Un cierto tipo de ataque sybill puede ser usado para descubrir la fuente de una transacción o bloque sin que el adversario controle enteramente la conexión a internet de la víctima. Funciona gracias al adversario creando muchos de sus propios nodos falsos en diferentes direcciones IP las que agresivamente se anuncian a sí mismas en un esfuerzo por atraer más nodos que se conecten a ellas, estos además intenta conectarse a cuantos nodos de escucha puedan. Esta alta conectividad ayuda al adversario a localizar la fuente de las transacciones y bloques recién transmitidos, rastreándolos a medida que se propagan a través de la red[18][19][20][21]. Algunas billeteras periódicamente re transmiten sus transacciones no confirmadas para que tengan mayores probabilidades de propagarse a través de la red y ser minadas.
Algunas billeteras no son nodos completos sino nodos ligeros, los cuales funcionan de manera distinta. Estos generalmente tienen peores propiedades de privacidad, pero qué tan malas sean dependen de los detalles de cada billetera. Algunas billeteras de peso ligero pueden conectarse sólo a su propio nodo completo, y si esto se hace entonces su privacidad con respecto al análisis de tráfico mejorará hasta llegar al nivel de un nodo completo.
Billeteras de custodia
Algunas billeteras bitcoin son sólo front-ends que se conectan a un servidor back-end ejecutado por alguna compañía. Este tipo de billetera no tiene privacidad alguna, la compañía operadora puede ver todas las direcciones de usuario y sus transacciones, la mayoría del tiempo incluso sus direcciones IP. Los usuarios no deberían de utilizar billeteras online.
Artículo principal: Billetera basada en un explorador.
Recuperación de historial de billetera por una tercera parte
Todas las billeteras bitcoin deben obtener información sobre su balance e historia de alguna manera, lo que podría filtrar información sobre qué direcciones y transacciones pertenecen a ellas.
Sitios web de exploración de blockchain
Los sitios web de exploración de blockchain son comúnmente usados. Algunos usuarios incluso buscan sus transacciones en estos sitios web y las refrescan hasta que alcanzan 3 confirmaciones. Esto es terrible para la privacidad dado que el sitio web puede fácilmente enlazar la dirección IP del usuario a su transacción bitcoin (a no ser que Tor esté siendo usado), y las solicitudes a su sitio web revelan que las transacciones o direcciones son de interés para alguien con ciertos patrones de comportamiento.
Para obtener información respecto a sus transacciones es mucho mejor utilizar su software de billetera, no un sitio web.
BIP 37
Muchas billeteras de peso ligero usan el estándar BIP37, el cual tiene serias fallas de diseño resultantes en fugas de privacidad. Cualquier billetera que use BIP37 no provee ninguna privacidad en lo absoluto y es equivalente a enviar todas las direcciones de billetera a un servidor al azar. Ese servidor puede ser fácilmente espiado en la billetera. Las lecciones del fallo de BIP37 pueden ser útiles al diseñar y entender otras soluciones de privacidad, especialmente respecto al punto sobre fusión de datos combinando las fugas de filtros bloom BIP37 con fugas de información de transacciones blockchain.
Artículo principal: Problemas de privacidad BIP37
Servidores públicos Electrum
Electrum es un software de billetera popular que trabaja conectándose a servidores de propósitos especiales. Estos servidores reciben hashes de las direcciones bitcoin en la billetera y responden con información de transacciones. La billetera Electrum es rápida y de bajos recursos pero por defecto se conecta a estos servidores que fácilmente pueden espiar al usuario. Algún otro software aparte de Electrum utiliza los servidores públicos Electrum. Hasta 2019 es una más rápida y mejor alternativa para billeteras ligeras que BIP37.
Los servidores sólo aprenden los hashes de direcciones, no las direcciones en sí mismas, en la práctica sólo conocen la actual dirección y transacciones asociadas sin estas han sido usadas en la blockchain al menos una vez.
No es muy difícil ejecutar su propio servidor Electrum e indicar a su billetera que lo utilice. Esto restaura a Electrum las mismas propiedades de seguridad y privacidad que un nodo completo en el que nadie más puede ver en cuáles direcciones o transacciones está interesada la billetera. Entonces Electrum se convierte en una billetera de nodo completo.
Intercepción de comunicaciones
Una fuga de privacidad simple pero eficiente. Alice le entrega a Bob una de sus direcciones para recibir un pago, pero la comunicación ha sido interceptada por Eve, quien vió la dirección y ahora sabe que esta pertenece a Alice. La solución sería encriptar las direcciones cuando sea apropiado o utilizar otra manera de esconderlas de un adversario de acuerdo al modelo de amenaza.
A veces la intercepción puede ser bastante trivial, por ejemplo algunos usuarios de forum publican una dirección de donación de bitcoin en su sitio web, firma de foro, perfil, página de twitter, etc, donde puede ser encontrada por motores de búsqueda. En el ejemplo del comprador no-anónimo del periódico chino en la introducción a esta página, su dirección públicamente visible en su firma de foro fue parte crucial de su pérdida de anonimato. La solución aquí es mostrar a cada potencial donador una nueva dirección, por ejemplo, configurando un servidor web a que entregue direcciones únicas a cada visitante.
Revelar datos al transaccionar bitcoin
De vez en cuando, los usuarios pueden voluntariamente revelar datos sobre sí mismos, o la entidad con la que interactúan podría requerirlo. Por ejemplo, muchos intercambios requieren que los usuarios pasen por chequeos Anti-Lavado de Dinero o Conocimiento-Del-Cliente (AML/KYC), lo que obliga a los usuarios a revelar toda clase de información personal invasiva tal como su nombre real, residencia, ocupación e ingresos. Toda esta información es entonces enlazada a las transacciones o direcciones bitcoin posteriormente utilizadas.
Al comprar bienes en línea usando bitcoin una dirección de envío es requerida. Esto enlaza la transacción bitcoin con la dirección de entrega. Lo mismo aplica para la dirección IP de los usuarios (a no ser que una tecnología como Tor esté siendo usada).
Análisis forense digital
El software de billetera usualmente almacena información que necesita para operar en el disco de la computadora en la cual es ejecutado. Sin un adversario llega a tener acceso a ese disco, podría extraer direcciones y transacciones bitcoin que se sabe están enlazadas al dueño de ese disco. El mismo disco podría contener otra información (tal como la imagen escaneada de una carta de identidad). El análisis forense digital es una razón por la cual todos los buenos software de billetera encriptan los archivos de la billetera, a pesar de que esto puede ser superado si una contraseña de encriptación débil es utilizada.
Por ejemplo, si tiene una billetera de bitcoin instalada en su PC y lleva su computador a reparar en una tienda, entonces el operador de esta podría encontrar el archivo de billetera y registros de todas sus transacciones. Otro ejemplo podría ser un disco duro viejo siendo desechado. Otro software instalado en la misma computadora (malware, por ejemplo) también puede ser leído de un disco o RAM, espiando así las transacciones bitcoin de un usuario.
Por temas de privacidad, no deje datos en su computador que puedan estar disponibles para otros. Exactamente cómo dependerá de su modelo de amenaza. La encriptación y protección física son opciones, al igual que utilizar sistemas operativos especiales como Tails OS que no lee ni escribe sobre el disco duro sino que sólo utiliza RAM, y luego borra todos los datos al momento de apagado.
Métodos para mejorar la privacidad (no-blockchain)
Obtener bitcoins anónimamente
Si el adversario no ha enlazado sus direcciones bitcoin con su identidad entonces mantener su privacidad es mucho más fácil. Los métodos de espionaje blockchain como la heurística de propiedad de entrada común, detectar cambios de dirección y correlación de importes no son muy efectivos por sí mismos si no existe un punto de inicio al cual enlazarse de vuelta.
Múltiples intercambios requieren que los usuarios pasen por controles Anti-Lavado de Dinero y Conozca-A-Su-Cliente (AML/KYC), lo que requiere que los usuarios revelen toda clase de información personal invasiva como sus nombres reales, residencia, ocupación e ingresos. Toda esta información es entonces enlazada a las direcciones y transacciones posteriormente usadas.
Evitar la invasión a la privacidad del AML/KYC es probablemente la medida más importante que puede tomar un usuario para proteger su privacidad. Funciona mucho mejor que cualquier tecnología actual como CoinJoin. Efectivamente, todos los trucos de criptografía y privacidad son irrelevantes si los usuarios sólo transaccionan a través de instituciones AML/KYC[22].
Intercambios de efectivo
El dinero en efectivo es un medio anónimo de intercambio, así que utilizarlo es una manera de obtener bitcoins anónimamente en la que nadie, excepto las partes involucradas, intercambian datos de identidad.
Esta sección no proveerá listas de sitios webs en los cuales encontrar tal tipo de encuentros puesto que la información puede desactualizarse, pero intente buscar en la web con “comprar bitcoin con dinero en efectivo ”. Nótese que algunos de estos servicios igualmente requieren identificación, así que es importante tener esto en cuenta. Algunos servicios requieren identificación sólo para la persona que coloca el anuncio. Hasta fines de 2018 existe al menos un proyecto de intercambio open source descentralizado en desarrollo, el cual espera facilitar este tipo de intercambio sin necesitar de un tercer sujeto centralizado en lo absoluto, sino más bien utilizando la red peer-to-peer.
Los intercambios de dinero en persona siguen siendo un viejo y popular método. Dos agentes agendan un encuentro en un lugar específico y el comprador entrega dinero en efectivo, mientras que el vendedor hace una transacción bitcoin al comprador. Esto es similar a otros fenómenos de internet como Craigslist, los cuales organizan encuentros por intercambio. Escrow puede ser usado para mejorar la seguridad o evitar la necesidad de esperar por confirmaciones en el encuentro.
Los intercambios de dinero por correo funcionan exigiendo que el comprador envíe dinero en efectivo a través del correo. Escrow siempre es usado para prevenir estafas. El comprador de bitcoins puede ser anónimo pero el vendedor deberá revelar una dirección de correo al comprador. El dinero por correo puede funcionar entre largas distancias pero dependerá de la infraestructura del servicio postal. Los usuarios deberán de chequear con su servicio postal local si existen algunas restricciones respecto a enviar dinero por correo. A menudo el dinero puede ser también asegurado.
Los depósitos en efectivo son un método en el que el comprador deposita dinero directamente a la cuenta bancaria del vendedor. De nuevo, Escrow es utilizado, y de nuevo el comprador de bitcoins puede ser casi-anónimo pero el vendedor deberá inscribirse a un banco o institución financiera y compartir con ellos detalles bastante invasivos sobre su identidad e historial financiero. Este método confía en la infraestructura bancaria personal así que funciona a través de largas distancias.
Las entregas secretas de dinero son un método raramente usado. Es similar a una entrega de dinero en persona pero los agentes nunca se encuentran. El comprador escoge una locación donde esconder el dinero en un lugar público, a continuación el comprador envía un mensaje al vendedor revelando la locación y este recoge el dinero. Escrow es un requerimiento para evitar estafas. Este método es anónimo para el vendedor dado que el comprador nunca conocerá su apariencia física, pero es un poco menos anónimo para el vendedor ya que el comprador puede acechar la locación para ver al vendedor recogiendo el dinero.
Sustitutos del dinero
Sustitutos del dinero como tarjetas de regalo, créditos de telefonía celular o tarjetas de débito prepagadas pueden a menudo ser compradas en tiendas regulares con efectivo y luego ser cambiadas en línea por bitcoins.
Empleo
Las bitcoins aceptadas como pagos por empleo pueden ser anónimas si el empleador no requiere demasiada información personal. Esto podría funcionar bien en un contexto de trabajo freelance o por contrato. Pero si su adversario es su propio empleador, entonces obviamente no es muy bueno este método para la privacidad.
Minería
La minería es la manera más anónima de obtener bitcoin. Esto aplica a la minería en solitario puesto que las pools de minería generalmente conocen la dirección IP del hasher. Dependiendo del tamaño de la operación la minería puede utilizar mucha electricidad, lo que puede atraer sospechas. Además, el hardware especializado para la minería puede ser difícil de obtener anónimamente (aunque no estaría enlazado a los bitcoins minados resultantes).
Robo
En teoría, otra manera de obtener bitcoin anónimamente sería robarlas.[23]
Existe al menos una situación en la que esto ha ocurrido. En mayo de 2015 un hacker conocido como Phineas Fisher[24] hackeó una compañía de spyware que vendía productos de vigilancia a dictadores[25]. El hacker utilizó bitcoins robadas de otras personas para anónimamente alquilar infraestructura para ataques posteriores.
Gastar bitcoins anónimamente
Si usted entrega su dirección de entrega (lo cual tendría que hacer si está comprando bienes físicos en línea) entonces existirá una fuga de datos. Obviamente esto es inevitable en la mayoría de los casos.
Sincronización del historial de billetera
Las billeteras bitcoin deben de alguna manera obtener información sobre su balance e historial. Hasta fines de 2018 las soluciones más prácticas y privadas existentes eran utilizar una billetera de nodos completos (que es máximamente privada) y filtrado de bloqueo del lado del cliente (el cual es muy eficiente).
Un problema con estas tecnologías, sin embargo, es que siempre cuestan más recursos (tiempo, ancho de banda, almacenamiento, etc.) que otras soluciones no privadas como las billeteras web y servidores Electrum centralizados. Existen otros medidores indicando que muy pocas personas en realidad utilizan BIP37 debido a lo lento que es, así que incluso el filtrado de bloqueo del lado del cliente puede no ser usado muy frecuentemente.
Nodo completo
Los nodos completos descargan la blockchain entera, la cual contiene cada transacción en cadena que alguna vez haya ocurrido en bitcoin. Entonces, un adversario observando la conexión de internet del usuario será incapaz de saber en cuáles transacciones o direcciones está interesado el usuario. Esta es la mejor solución de privacidad a la sincronización del historial de billetera, pero desafortunadamente, cuesta una significativa cantidad de tiempo y ancho de banda.
Recuperación de información privada
En la criptografía, un protocolo de recuperación de información (PIR) es un protocolo que permite que un usuario recupere un ítem de un servidor en posesión de una base de datos sin revelar cuál ítem fue recuperado. Esta ha sido propuesta como una manera de sincronizar historiales de billetera privadamente, pero como el PIR requiere importantes recursos, los usuarios que no tengan problema en gastar ancho de banda y tiempo podrían ejecutar simplemente un nodo completo en cambio.
Filtrado de bloqueo del lado del cliente
El filtrado de bloqueo del lado del cliente funciona creando filtros que contienen todas las direcciones de cada transacción en un bloque. Los filtros pueden testear si un elemento está en el set; los falsos positivos son posibles pero los falsos negativos no. Una billetera ligera descargaría todos los filtros por cada bloque en la blockchain y chequearía las coincidencias con sus propias direcciones. Los bloques que contienen coincidencias serían descargados por completo desde la red peer-to-peer, siendo usados para obtener el historial de la billetera y balance actual.
Consulta de direcciones vía ruteo de cebolla
El historial de una billetera puede obtenerse desde servidores centralizados (como los servidores Electrum) pero usando un circuito Tor para cada dirección. Una idea relacionada cercanamente es la de conectar juntos los servidores Electrum en una red de ruteo de cebolla[27]. Al crear tal esquema, es necesario tener cuidado de evitar sincronizar la correlación enlazando las direcciones entre sí, de lo contrario, el servidor podría utilizar el hecho de que las direcciones hayan sido solicitadas en un tiempo cercano entre sí.
Contramedidas al análisis de tráfico
Bitcoin Core y sus horquillas tienen contramedidas establecidas en caso de ataques sybil y ataques eclipse. Los ataques Eclipse son ataques sybil en los que el adversario intenta controlar todos los peers en su objetivo y bloquear o controlar el acceso al resto de la red[28]. Dichos ataques han sido extensivamente estudiados en un documento publicado en 2015 de nombre Ataques Eclipse en la Red Peer-to-Peer Bitcoin, lo que llevó a que nuevo código fuese escrito para Bitcoin Core como mitigación.[29][30][31][32][33]
Bitcoin Core y sus horquillas usan un algoritmo conocido como goteo al momento de reinstalación de transacciones sin confirmar, con el propósito de hacer lo más difícil posible a los atacantes sybil el encontrar la dirección IP fuente de una transacción. Por cada peer, el nodo mantiene una lista de transacciones que va hacia inv para ello. Envía invs para transacciones periódicamente con un retraso al azar entre cada inv. Las transacciones son entonces seleccionadas para ir en el mensaje inv de manera casi azarosa, y de acuerdo a algunas métricas relacionadas con el tipo de tasa. Este selecciona un número limitado de transacciones para inv. El algoritmo crea la posibilidad de que un nodo pareado pueda escuchar acerca de una transacción sin confirmar de parte de los vecinos del creador, en vez del nodo creador en sí mismo[34][35][36][37]. Sin embargo, los adversarios igualmente pueden obtener información relacionada con la privacidad algunas veces.
Encriptar mensajes entre peers así como en BIP 151 dificultará la posibilidad de que una atacante pasivo como un ISP o proveedor de Wifi vea los mensajes exactos enviados y recibidos por un nodo bitcoin.
Tor y transmisión tor
Si se encuentra preocupado por un adversario que controle la conexión, entonces bitcoin puede ser completamente ejecutado a través de tor. Tor está encriptado y esconde los extremos, de manera que un ISP o proveedor de Wifi ni siquiera sabría que usted está usando bitcoin. Los otros nodos bitcoin conectados no serían capaces de ver su dirección IP dado que tor las esconde. Bitcoin Core y sus horquillas tienen opciones que permiten facilitar la instalación y uso de tor. Algunas billeteras ligeras también trabajan enteramente a través de tor.
Trabajar enteramente a través de tor tiene la desventaja de que sincronizar el nodo requiere descargar la blockchain entera a través de tor, lo que sería muy lento. Descargar bloques a través de Tor solo ayuda en la situación en la que usted quiera esconder de su proveedor IP el hecho de que bitcoin está siquiera siendo usado[38]. Es posible descargar bloques y transacciones no confirmadas a través de la clearnet pero transmitir sus propias transacciones a través de tor, permitiendo así una conexión clearnet rápida que pueda ser usada al mismo tiempo que protege su privacidad a través de la transmisión.
Al ser configurado con la opción walletbroadcast=0 Bitcoin Core detendrá la transmisión y retransmisión de las transacciones pertenecientes al usuario, permitiendo que estas sean transmitidas más bien a través de tor u algún otro método de preservación de la privacidad[39].
Dandelion
Dandelion es otra tecnología para transmisión de transacciones privada. La idea principal es que la propagación de transacciones procede en dos fases: Primero, la fase “stem” y luego la fase “fluff”. Durante la fase stem, cada nodo retransmite la transacción a un único peer. Después de un número al azar de saltos a través del stem, la transacción entra en la fase fluff, que se comporta tal como cualquier transacción ordinaria de difusión/inundación. Incluso cuando un atacante pueda identificar la localización de la fase fluff, es mucho más difícil identificar la fuente del stem.[40][41][42][43]
Difusión de peer interactiva
Algunas tecnologías de privacidad como CoinJoin y CoinSwap requieren interacción entre muchas entidades bitcoin. Estas también pueden ser usadas para difundir transacciones con mayor privacidad, puesto que los peers en protocolos de privacidad pueden enviarse entre sí transacciones sin confirmar usando el ya existente protocolo que utilizan para interactuar entre sí.
Por ejemplo, en JoinMarket los beneficiarios del mercado pueden enviar transacciones a los fabricantes quienes las difundirán y a través de ello mejorar la privacidad del beneficiario. Esta puede ser una forma más conveniente para el beneficiario que instalar Tor para utilizar la difusión tor.
Recibir datos bitcoin a través de satélite
Al menos una compañía bitcoin ofrece un servicio de bitcoin por satélite[44]. Este es un servicio gratuito en el que satélites difunden la blockchain bitcoin a casi cualquier lugar en el mundo. Si los usuarios instalan una antena que apunte a un satélite en el espacio, entonces pueden recibir bloques de bitcoin necesarios para ejecutar un nodo completo. Dado que la instalación del satélite es de solo recepción nadie puede detectar que el usuario está siquiera ejecutando bitcoin y ciertamente, nadie podrá saber qué direcciones o transacciones pertenecen a él.
Hasta 2019 la compañía ofrece un API prepagado, lo que permite difundir cualquier tipo de datos a cualquier lugar en el mundo vía satélite, la cual parece ser la manera en la que generan ganancias. Pero aparentemente el servicio base de difundir toda la blockchain será siempre libre.
Artículo principal: https://blockstream.com/satellite/
Métodos para mejorar la privacidad (blockchain)
Esta sección describe diferentes técnicas para mejorar la privacidad de transacciones relacionadas al registro permanente de transacciones en la blockchain. Algunas técnicas son triviales y están incluidas en todas las billeteras bitcoin eficientes. Otras han sido implementadas en algunos proyectos o servicios open source, los cuales podrían utilizar más de una técnica a la vez. Otras técnicas aún no han sido implementadas. Muchas de estas técnicas se enfocan en romper diferentes heurísticas y suposiciones respecto a la blockchain, así que funcionan mejor cuando se combinan entre sí.
Evitar la reutilización de direcciones
Utilizar direcciones más de una vez es altamente dañino para la privacidad puesto que enlaza más transacciones en la blockchain con la prueba de que fueron creadas por la misma entidad. La manera más privada y segura de usar bitcoin es enviar una nueva dirección a cada persona que le paga. Después de que las monedas recibidas han sido gastadas la dirección no debe ser usada nunca más. Además, una nueva dirección bitcoin debería ser requerida al momento de enviar bitcoins. Todas las billeteras bitcoin eficientes tienen una interfaz de usuario que desaconseja la reutilización de direcciones.
Se ha discutido que la frase “dirección bitcoin” era un mal nombre para este objeto dado que implica que puede ser reutilizado como una dirección de email. Un nombre mejor podría ser algo así como “factura bitcoin”.
Bitcoin no es anónimo sino seudónimo, y los seudónimos en cuestión son direcciones bitcoin. Evitar la reutilización de direcciones es como botar un seudónimo después que este ha sido usado.
Bitcoin Core 0.17 incluye una actualización para mejorar la situación de la privacidad con la reutilización de direcciones[45]. Cuando una dirección recibe múltiples pagos las monedas de esos distintos pagos pueden ser gastadas por separado, lo que le hace daño a la privacidad debido al enlazamiento de direcciones que de otra forma habrían sido distintas. Una bandera -avoidpartialspends ha sido agregada (default=falso), si esta es activada, la billetera siempre gastará los UTXO existentes en la misma dirección juntos incluso si esto resulta en tasas más altas. Si alguien fuese a enviar monedas a una dirección luego que esta ha sido usada, esas monedas seguirán siendo incluidas en futuras selecciones de moneda.
Evitando la reutilización forzada de direcciones
La manera más sencilla de evitar perder su privacidad por reutilización forzada de direcciones es no gastar monedas que hayan aterrizado antes en direcciones ya usadas y vacías. Usualmente los pagos son de muy poco valor por lo que no se pierde ninguna cantidad relevante de dinero al simplemente no gastar las monedas.
Dust-b-gone es un proyecto antiguo[46] que buscaba gastar seguramente los pagos de direcciones de reutilización forzada. Señala todos los UTXOs junto con los de otras personas y los gasta en tasas de minería. Las transacciones usan banderas sighash OP_CHECKSIG raras para que puedan ser fácilmente eliminados del análisis de un adversario, pero al menos los pagos por direcciones forzadamente reutilizadas no llevan a nuevas fugas de privacidad.
Control de monedas
El control de monedas es una opción de algunas billeteras bitcoin que permite al usuario elegir cuáles monedas habrán de ser gastadas como entradas en una transacción en curso. El control de monedas aspira a evitar en lo más posible transacciones en las que las fugas de privacidad sean causadas por importes, direcciones de cambio, el gráfico transaccional y la heurística de propiedad de entrada común[47][48].
Un ejemplo para evitar una fuga de privacidad por gráficos transaccionales con el control de monedas: Un usuario recibe un pago en bitcoin por su trabajo, pero también a veces compra bitcoins con dinero en efectivo. El usuario quiere donar algo de dinero a una causa benéfica con la que se identifica, pero no quiere que su empleador lo sepa. La causa benéfica tiene además una dirección de donaciones públicamente visible, la cual puede ser encontrada a través de un motor de búsqueda. Si el usuario le pagase a la caridad sin control de monedas, su billetera podría utilizar monedas provenientes del empleador, lo que le permitiría al empleador saber a cuál organización benéfica donó el usuario. Al utilizar el control de monedas, el usuario puede asegurarse que solo monedas obtenidas anónimamente con efectivo fueron enviadas a la organización benéfica. Esto evitaría que el empleador sepa que el usuario apoya financieramente a esta caridad.
Transacciones múltiples
Pagarle a alguien con más de una transacción en-cadena puede ampliamente reducir el poder de ataques a la privacidad basados-en-importe como la correlación de importes y los números redondos. Por ejemplo, si el usuario quiere pagar 5 BTC a alguien, pero evitando que el valor 5 BTC sea fácilmente ubicable, será posible entonces enviar dos transacciones por el valor de 2 BTC y 3 BTC, que juntas suman a 5 BTC.
Los mercaderes y servicios conscientes de la privacidad deberían de proveer a los clientes más de una dirección bitcoin a través de la cual efectuar sus pagos.
Evasión de cambio
La evasión de cambio es cuando las entradas y salidas de una transacción son escogidas cuidadosamente para no requerir de una salida de cambio en lo absoluto. No tener una salida de cambio es excelente para procurar privacidad, dado que descarta las heurísticas de detección de cambio.
La evasión de cambio es práctica en el caso de servicios bitcoin de alto volumen, los cuales normalmente tienen una gran cantidad de entradas disponibles para gastar y un alto número de salidas requeridas para cada uno de los clientes a los que están enviando dinero. Este tipo de evasión de cambio también baja las tasas de minería debido a que las transacciones usan menos espacio de bloques en general.
Artículo principal: Techniques_to_reduce_transaction_fees#Change_avoidance
Otra manera de evitar crear una salida de cambio podría ser en casos en los que el importe exacto no sea relevante y un UTXO entero o grupo de UTXOs pueda ser totalmente agotado. Un ejemplo es la apertura de un canal de pago Red de Relámpago. Otro ejemplo sería el de mandar fondos a una billetera de almacenamiento frío en la que el monto exacto pudiera no ser importante.
Múltiples salidas de cambio
Si la evasión de cambio no es una opción, entonces el crear más de una salida de cambio puede mejorar la privacidad. Esto también rompe las heurísticas de detección de cambio que usualmente asumen la existencia de una sola salida de cambio. Dado que este método utiliza más espacio en bloques de lo usual, la evasión de cambio es preferible.
Mejoras en la privacidad de los script
El script de cada salida bitcoin filtra información relacionada con la privacidad. Por ejemplo, para fines de 2018 alrededor del 70% de las direcciones bitcoin eran de una sola firma y 30% de multifirmas[49]. Ha sido mucha la investigación enfocada en mejorar la privacidad de los scripts, encontrando maneras de hacer que distintos tipos de scripts se vean de la misma forma. Además de ayudar a mejorar la privacidad, estas ideas también mejoran la escalabilidad del sistema al reducir los requerimientos de almacenamiento y ancho de banda.
ECDSA-2P es un esquema criptográfico que permite la creación de un esquema multifirmas 2-de-2, pero la cual resulta en una firma ECDSA single-sig cuando es incluida en la blockchain[50]. No necesita de ningún cambio consensual puesto que bitcoin ya utiliza ECDSA.
Schnorr es un esquema de firma digital que cuenta con muchos beneficios por sobre el ECDSA establecido[51][52]. Un efecto colateral es que cualquier multifirma N-de-N[53] y M-de-N puede fácilmente ser modificado para que parezca un single-sig al ser incluido en la blockchain. Agregar Schnorr a bitcoin requiere un cambio Softfork consensuado. Para 2019 el diseño del esquema de firma ha sido propuesto[54]. El cambio softfork consensuado se encontraba aún en etapa de diseño para principios de 2019.
Los scriptless scripts son un set de protocolos criptográficos que proveen una manera de replicar la lógica del script sin en realidad tener las condiciones de script visibles, lo que aumenta la privacidad y escalabilidad al remover información de la blockchain[55][56][57][58]. Esto generalmente apunta a protocolos que involucren Contratos de Hash Time Bloqueado como la Red de Relámpago y CoinSwap.
Con los scriptless scripts, casi lo único visible son las claves y firmas públicas. Más allá de eso, en escenarios de múltiples partes, existirá una sola clave pública y una única firma para todos los actores. Todo se ve igual – los canales de pago relámpago se verían iguales que los pagos single-sig, escrows, atomic swaps o pegs de federación sidechain. Casi cualquier cosa que usted piense que las personas están haciendo en bitcoin en 2019, puede ser modificado para verse esencialmente igual[59].
MAST es una abreviatura para denominar al Merkelized Abstract Syntax Tree, un esquema para esconder ramas no-ejecutadas de un contrato script. Mejora la privacidad y la escalabilidad removiendo información de la blockchain[60][61].
Taproot es una manera de combinar firmas Schnorr con MAST[62]. La firma Schnorr puede ser usada para gastar la moneda, pero también un árbol MAST puede revelarse sólo cuando el usuario desea utilizarlo. La firma schnorr puede ser cualquier N-de-N o utilizar cualquier contrato scriptless script. La consecuencia de un taproot es un anonimato mucho mayor para contratos inteligentes de interés, dado que cualquier contrato de tipo Red de Relámpago, CoinSwap, multifirma, etc. sería indistinguible de cualquier transacción en-cadena de firma única.
El esquema taproot es útil puesto que se da casi siempre el caso en el que scripts de interés cuenten con una rama lógica de alto nivel, lo que permite satisfacer el contrato sin nada más que una firma de todas las partes. Otras ramas solo serían utilizadas cuando alguno de los participantes se rehúse a cooperar.
Graftroot es un esquema de contrato inteligente similar a taproot. Permite a los usuarios incluir otros scripts posibles para gastar la moneda, pero utilizando aún menos recursos que taproot. El compromiso es que se requiere interactividad entre los participantes[63][64][65].
nLockTime es un campo en el formato serializado de transacciones. Puede ser utilizado en ciertas situaciones para crear un timelock más privado, el cual evita utilizar opcodes de script.
Direcciones ECDH
Las direcciones ECDH pueden ser usadas para mejorar la privacidad ayudando a evitar la reutilización de direcciones. Por ejemplo, un usuario puede publicar una dirección ECDH como dirección de donación, la cual puede ser utilizada por personas que quieran donar. Un adversario podría ver la dirección ECDH de donación pero no sería capaz de encontrar fácilmente transacción de gasto alguna desde y hacia ella.
Sin embargo, las direcciones ECDH no resuelven todos los problemas de privacidad dado que siguen siendo vulnerables a pagos de comprador misterioso; un adversario podría donar algunas bitcoins y ver en la blockchain hacia dónde van posteriormente, utilizando heurísticas como la heurística de propiedad de entrada común para obtener más información tal como el volumen de donación y el destino final de los fondos.
Las direcciones ECDH vienen con algunos problemas prácticos y son un equivalente cercano a la ejecución de un sitio web http que entregue direcciones bitcoin a cualquiera que desee donar, con la excepción de no tener el paso agregado de interactividad. Por lo tanto, no está claro si las ECDH son útiles fuera del caso de utilización de donación no-interactivas o una aplicación auto-contenida que envíe dinero a un destino sin interactividad alguna.
Mezcladores centralizados
He aquí un antiguo método para romper el gráfico transaccional. También conocidos como “tambores” o “lavadoras”. Un usuario enviaría bitcoins a un servicio de mezclado y este servicio enviaría distintas bitcoins de vuelta al usuario, menos una tarifa. En teoría, un adversario observando la blockchain sería incapaz de enlazar las transacciones entrantes y salientes.
Existen varias desventajas. Al mezclador se le ha de confiar la tarea de mantener el enlazado entre las transacciones entrantes y salientes secreto. Además, deberá de confiar en que el mezclador no robará monedas. El riesgo de robo crea efectos de reputación; mezcladores antiguos y más establecidos tendrán una mejor reputación y por lo mismo cobrarán tasas mucho por encima del costo mínimo de mezclar monedas. Además, como no existe forma de vender reputación, el ecosistema de mezcladores estará lleno de estafas de salida ocasionales.
Existe una mejor alternativa a los mezcladores, la cual viene esencialmente con los mismos riesgos de privacidad y custodia. Un usuario podría depositar y luego retirar monedas de cualquier sitio web bitcoin con una hot wallet. Siempre y cuando el servicio bitcoin no requiera ninguna otra información del usuario, cuenta con los mismos aspectos de privacidad y custodia que un mezclador centralizado y es, además, mucho más barato. Ejemplos de servicios apropiados para bitcoin son casinos bitcoin, sitios web de poker bitcoin, sitios web de propinas, intercambios altcoin o mercados online[66].
El problema de que el servicio tenga conocimiento total de las transacciones podría ser remediado al nivelar varios servicios juntos. Un usuario que quiera evitar el rastreo de observadores pasivos de la blockchain podría, primeramente, enviar monedas a un casino bitcoin, de ahí retirarlas y enviarlas directamente a un intercambio altcoin, y así sucesivamente hasta que se encuentre satisfecho con la privacidad adquirida.
Artículo principal: Servicio de mezclado
CoinJoin
CoinJoin es un tipo especial de transacción bitcoin en la que múltiples personas o entidades cooperan para crear una sola transacción que involucre todas sus entradas. Esto tiene el efecto de romper la heurística de propiedad de entrada común y hace uso de la fungibilidad inherente de bitcoin entre transacciones. La técnica CoinJoin ha sido posible desde el principio de bitcoin y no puede ser bloqueada, excepto en las maneras en las que otras transacciones bitcoin pueden ser bloqueadas. Sólo al mirar una transacción es imposible saber a ciencia cierta si se trata de un coinjoin. Las CoinJoins son operaciones sin custodia ya que pueden ser hechas sin que ninguna de las partes involucradas sea capaz de robar las bitcoins de ninguna otra[67].
CoinJoin de igual salida
Digamos que esta transacción es una CoinJoin, lo que significa que las entradas 2 BTC y 3 BTC en realidad eran propiedad de distintas entidades.
2 btc –> 3 btc
3 btc 2 btc
Esta transacción rompe la heurística de propiedad de entrada común, dado que sus entradas no son todas propiedad de la misma persona, pero aún así es fácil saber dónde terminaron las bitcoins de cada entrada. Al mirar los importes (y asumiendo que ambas entidades no se pagan la una a la otra) es obvio que la entrada 2 BTC termina en la salida 2 BTC, y lo mismo por la de 3 BTC. Para realmente mejorar la privacidad, usted necesitaría de una transacción CoinJoin que cuente con más de una salida de igual tamaño:
2 btc –> 2 btc
3 btc 2 btc
1 btc
En esta transacción las dos salidas de valor 2 BTC no pueden ser enlazadas a las entradas. Sólo podrían haber venido de cualquiera de las entradas. He aquí el meollo de cómo CoinJoin puede ser utilizado para mejorar la privacidad, no tanto por el rompimiento del gráfico transaccional sino más bien por la fusión. Nótese que la salida 1 BTC no ha ganado mucha privacidad, dado que es fácil de enlazar con la entrada 3 BTC. La ganancia de privacidad de estas CoinJoins es exacerbada cuando estas operaciones son repetidas múltiples veces.
Para fines de 2018 CoinJoin seguía siendo el único método descentralizado de privacidad bitcoin implementado. Ejemplos de (posibles) IDs de transacciones CoinJoin en la blockchain bitcoin son 402d3e1df685d1fdf82f36b220079c1bf44db227df2d676625ebcbee3f6cb22a y 85378815f6ee170aa8c26694ee2df42b99cff7fa9357f073c1192fff1f540238. Nótese que estas coinjoins involucran a más de dos personas, de forma que cada usuario individual involucrado no puede conocer la verdadera conexión entre entradas y salidas (a no ser que se confabulen).
PayJoin
El tipo de CoinJoin discutido en la sección previa puede ser fácilmente identificado como tal al chequear las múltiples salidas con el mismo valor. Es importante notar que tal identificación siempre puede ser negada, dado que nadie podría hacer falsos CoinJoin con la misma estructura de una transacción coinjoin pero hechos por una sola persona.
PayJoin (también conocido como pay-to-end-point o P2EP)[68][69][70] es un tipo especial de CoinJoin entre dos partes, donde una parte paga a la otra. La transacción entonces no tiene las distintivas múltiples salidas con el mismo valor, y por tanto no es obviamente visible como un CoinJoin de igual salida. Considere esta transacción:
2 btc –> 3 btc
5 btc 4 btc
Podría ser interpretada como una simple transacción de pago a algún lugar con cambio de sobra (ignore por ahora la pregunta de cuál salida es pago y cuál es cambio). Otra manera de interpretar esta transacción es que la entrada 2 BTC es propiedad de un comerciante y 5 BTC es propiedad de su cliente, y que esta transacción involucra un pago de parte del cliente de 1 BTC al comerciante. No existe ninguna manera de saber cuál de estas interpretaciones es correcta. El resultado es una transacción coinjoin que rompe la heurística de propiedad de entrada común y mejora la privacidad, pero es también indetectable e indistinguible de cualquier transacción bitcoin regular.
Si las transacciones PayJoin se volvieran incluso moderadamente utilizadas ello ocasionaría que la heurística de propiedad de entrada común fuese completamente deficiente en la práctica. Dado que son indetectables no sabríamos ni siquiera si están siendo usadas hoy día. Puesto que las compañías de vigilancia de transacciones dependen casi en su mayoría de esta heurística, para 2019 existe un gran entusiasmo en torno a la idea de PayJoin[71].
CoinSwap
CoinSwap es una técnica de privacidad sin custodia para bitcoin basada en la idea de los atomic swaps[72]. Si Alice y Bob quieren hacer un coinswap o intercambio de monedas; entonces se puede entender que Alice está intercambiando su bitcoin por el mismo importe (menos tasas) de las bitcoins de Bob, pero hecho con los contratos inteligentes de bitcoin para eliminar la posibilidad de engaño de cada parte.
Los CoinSwaps rompen el gráfico transaccional entre las bitcoins enviadas y recibidas. En la block chain se presentan como dos sets de transacciones completamente desconectadas:
Dirección de Alice —> dirección escrow 1 —> Dirección de Bob
Dirección de Bob —> dirección escrow 2 —> Dirección de Alice
Obviamente Alice y Bob generan nuevas direcciones cada uno para evitar la pérdida de privacidad debida a una reutilización de direcciones.
Es posible hacer CoinSwaps que sean completamente indistinguibles de cualquier otra transacción en la blockchain. Se podría decir que estos permitirían que las bitcoins se teleportaran de manera indetectable a cualquier otro lugar en la blockchain. Las transacciones no-CoinSwap se beneficiarían puesto que un analista a gran escala de la blockchain, como una compañía de vigilancia de transacciones, nunca podría estar segura de que transacciones ordinarias no son en realidad CoinSwaps. Además, estas no requieren demasiado espacio de bloques, comparado con la cantidad de privacidad que otorgan.
Los CoinSwaps requieren de mucha interacción entre las partes involucradas, lo que puede hacer de este tipo de sistema algo complicado de diseñar al tiempo que se evitan ataques de denegación de servicio. Además, tienen un requerimiento de similitud y de no-censura, lo que significa que las entidades participantes deben siempre ser capaces de acceder libremente a la red bitcoin; si el Internet se cayera por días o semanas entonces podría resultar que los CoinSwaps a medio completar terminasen con una de sus partes perdiendo su dinero por robo.
Hasta 2018, ninguna implementación CoinSwap ha sido desplegada.
CoinJoinXT
CoinJoinXT es una técnica de privacidad sin custodia cercanamente relacionada a CoinJoin[73]. Esta permite que cualquier número de entidades creen entre sí una especie de gráfico transaccional propuesto (PTG por sus siglas en inglés), lo que sería una lista de transacciones conectadas. En el PTG las bitcoins pertenecientes a cada entidad son enviadas de y hacia todas las transacciones, pero al final del PTG todas han retornado a sus dueños correspondientes. El sistema es instalado para que el proceso de las PTG siendo minadas sea atómico, de manera que todo el PTG esté confirmado en la blockchain o ninguna parte de él lo esté, lo que significa que ninguna de las entidades participantes puedan robarle a otras.
El gráfico transaccional propuesto tiene la libertad de ser cualquier lista de transacciones que ofusque el gráfico transaccional. Para mejores resultados el PTG imitaría perfectamente el gráfico transaccional natural gracias a presentarse como una actividad económica normal en bitcoin, de forma que un adversario no podría saber dónde empieza o termina el PTG, lo que resulta en una ganancia masiva de privacidad.
Así como CoinJoin, es fácil hacer de CoinJoinXT resistente a DOS, sin requerir de un número prohibitivo de pasos de interacción. A diferencia de CoinSwap, no existen requerimientos de similitud o no-censura, así que los fondos están asegurados incluso si bitcoin está bajo una censura temporal. Sin embargo, CoinJoinXT usa mucho espacio de bloques comparado con su ganancia en privacidad. Además, requiere un ajuste de maleabilidad para que todas las transacciones en la PTG deban ser únicamente segwit. Hasta 2019, sólo alrededor de 40% de las transacciones eran segwit, de forma que un observador de la blockchain podría fácilmente eliminar transacciones no-PTG chequeando si son de legado o segwit.
TumbleBit
TumbleBit es una tecnología de privacidad sin custodia, en la que el servidor coordinador no puede diferenciar el verdadero enlace entre entradas y salidas. Esto se logra por un constructo criptográfico donde el servidor facilita un intercambio privado de firmas digitales. El protocolo puede ser de gran interés para cualquier entusiasta de bitcoin y su privacidad.
Desde el punto de vista de un observador de la blockchain, las transacciones TumbleBit aparecen como dos transacciones con muchas (800 en el ejemplo del autor) salidas y todas las salidas de transacción han de ser del mismo importe.
Transacciones off-chain
Las transacciones off-chain se refieren a cualquier tecnología que permita transacciones bitcoin en una capa por encima de la blockchain. Los pagos bitcoin hechos off-chain no son transmitidos a cada nodo en la red ni son minados y almacenados por siempre en una blockchain pública, esto automáticamente aumenta la privacidad de la transacción puesto que hay mucha menos información visible para la mayoría de los adversarios. Con las transacciones off-chain no existen direcciones públicas, racimos de direcciones, transacciones públicas, cantidades de transacción ni ningún otro ataque relacionado a la privacidad que ocurre en transacciones on-chain.
Artículo principal: Transacciones Off-Chain
la Red de Relámpago es un gran tema en la privacidad de bitcoin, por lo que es discutido en su propia sección.
Certificados de portador ciego
Esta es otra manera de hacer Transacciones Off-Chain basada en firmas a ciegas. Los pagos a través de este sistema serían muy, muy privados. Es conocido desde alrededor de 1983. Pero el sistem es de reclusión de manera que el servidor emisor es un punto central de falla que puede robar todo el dinero. Sin embargo, el concepto podría aún ser útil en ciertas situaciones en las que Lightning no lo es, por ejemplo, los certificados de portador ciego soportan pagos en los que el receptor se encuentra offline.
Artículo principal: Certificados de portador ciego.
Sidechains
Las Sidechains es cuando otra blockchain es creada usando bitcoin como su unidad de divisa. Las bitcoins pueden ser movidas de la blockchain bitcoin principal hacia la sidechain, lo que permite ser transaccionadas siguiendo distintas reglas de consenso. Las sidechains tienen propiedades de privacidad diferentes y mejores que la blockchain bitcoin normal.
Artículo principal: Sidechains.
Transacciones confidenciales
Las transacciones confidenciales (TC) son un protocolo criptográfico que resulta en la encriptación del importe total de una transacción. La encriptación es especial dado que aún es posible verificar que ninguna bitcoin haya sido creada o destruida dentro de una transacción, pero sin revelar el monto exacto transaccionado. Las transacciones confidenciales requieren de un cambio softfork consensuado para ser añadidas a bitcoin, aunque también podrían ser añadidas a una sidechain.
Artículo principal: Transacciones confidenciales.
Discusión
Privacidad vs escalabilidad
Muchas de las previamente mencionadas tecnologías de privacidad funcionan a través de la añadidura de extra datos a la blockchain bitcoin, lo que se utiliza para esconder información relacionada con la privacidad. Esto tiene el efecto colateral de degradar la escalabilidad de bitcoin al añadir más datos que deberán de ser manejados por el sistema. Esto daña la privacidad, debido a que los nodos completos se hacen más costosos en recursos al ejecutarse y son ellos la manera más privada para que un usuario conozca su historial y balance. Agregar datos a bloques además degrada la seguridad del sistema, y no existe mayor razón en contar con un bitcoin privado si una pobre seguridad lleva a que este sea exitosamente atacado y destruido. El coste en recursos de utilizar más espacio de bloques se muestra al usuario como una alta tasa de minería, así que la tecnología de privacidad que usa demasiado espacio de bloques puede incluso no estar siendo usada con frecuencia si los usuarios encuentran que las tarifas son demasiado caras. Durante el período de alta demanda de espacio en bloques a fines de 2017, las transacciones de bajo valor JoinMarket CoinJoin casi desaparecieron (al igual que la mayoría de las transacciones bitcoin de bajo valor).
Las transacciones Off-chain son una manera de evitar este intercambio entre privacidad y escalabilidad. Este tipo de soluciones mejoran la privacidad al remover datos enteramente de la blockchain, no al añadir más datos de despiste. La evasión de cambio y las mejoras a la privacidad de Scripts también reducen los costes del sistema al tiempo que mejoran la privacidad. CoinJoinXT, CoinJoin de igual salida, TumbleBit usan mucho espacio de bloques en relación a la privacidad otorgada. PayJoin no usa mucho espacio extra de bloques al hacer una transacción ordinaria; en relación a la ventaja de romper la heurística de propiedad de entrada común, es bastante eficiente en cuanto a espacio se trata. CoinSwap usa poco espacio en bloques en relación a la privacidad, de manera que puede ser entendido como un sistema transaccional off-chain que hace una sola transacción y luego regresa ser parte de la cadena. Las transacciones confidenciales requieren mucho espacio de bloques, además de los costes de ancho de banda y CPU asociados, pero las ganancias en privacidad son sustanciales, así que el debate en torno a este tema podría ir para cualquiera de los lados.
A largo plazo, a medida que las tarifas de minería bitcoin suben, las tecnologías de privacidad costosas en recursos tendrán un precio incosteable y serán reemplazadas por otras más eficientes en cuanto a recursos.
Esteganografía
La esteganografía es usada en la criptografía para significar el acto de esconder el hecho de que algo está siendo escondido. Por ejemplo, el contenido de un mensaje encriptado podría ser leído por un curioso, pero sólo si aún muestra que algo está siendo escondido. La encripción esteganográfica de un mensaje puede ser hecha incrustando un mensaje encriptado en un archivo de audio o imagen que esconde el mensaje entre todo el ruido.
Un CoinJoin de igual salida esconde la fuente y destino de una cierta moneda, pero la estructura de la transacción revela que algo está siendo ocultado. Así que a pesar de que coinjoin rompe la heurística de propiedad de entrada común, el hecho de que coinjoins de igual salida puedan ser detectados (incluso si la detección no es perfecta), permite que sean excluidos del análisis del adversario. Además, la distinguibilidad de las coinjoins puede atraer sospechas y generar una mayor investigación.
La idea de la esteganografía es algo positivo a lo cual aspirar[74]. Mejora significativamente la privacidad, dado que las transacciones hechas por tal tecnología no pueden ser distinguidas de transacciones regulares. Además, mejora la privacidad de usuarios que ni siquiera utilizan la tecnología, dado que sus transacciones siempre pueden ser confundidas con transacciones realmente privadas. Los scriptless scripts son un buen ejemplo de una tecnología de privacidad esteganográfica en la que la información referente a la privacidad se esconde entre los números al azar de las firmas digitales. PayJoin, CoinSwap y CoinJoinXT son buenas tecnologías de privacidad esteganográfica, puesto que pueden hacerse indistinguibles de las transacciones bitcoin regulares. Coinjoins de igual salida y TumbleBit no son esteganográficas. Además, es usualmente fácil ver cuando un servicio de mezclado centralizado está siendo utilizado con el análisis de heurística de propiedad de entrada común, pero depositar y luego retirar de un sitio web bitcoin de alto volumen como un casino o un intercambio altcoin es mejor, dado que es posible que el usuario simplemente quería apostar.
Red Relámpago (Lightning Network)
La Red de Relámpago es una tecnología de transacción off-chain basada en canales de pago. Cuenta con un modelo de seguridad cercano al de las transacciones bitcoin on-chain. No es una exageración decir que la Red de Relámpago ha sido una revolución para bitcoin. Vea la sección previa respecto a Transacciones Off-Chain.
Además de mejorar significativamente la privacidad, las transacciones de la Red de Relámpago son mucho más rápidas (usualmente instantáneas) y baratas que las transacciones on-chain. Los nodos relámpago crean canales de pago de dos vías entre sí, mientras que las transacciones relámpago son ruteadas de un nodo a otro. El nodo fuente y nodo de destino no necesitan tener un canal de pago directamente entre ellos dado que las transacciones pueden ser ruteadas a través de muchos nodos intermedios.
Puesto que las transacciones de la Red de Relámpago ocurren fuera de la cadena (off-chain), no son transmitidas a cada nodo en la red ni son almacenadas por siempre en la públicamente visible blockchain. Los adversarios no pueden ver un registro público permanente de todas las transacciones puesto que no existe ninguno. En vez de ello, los adversarios tendrían que, posiblemente, ejecutar nodos intermedios e intentar extraer información de esa manera. Los ataques a la privacidad en-cadena como la heurística de propiedad de entrada común, la reutilización de direcciones, detección de dirección de cambio, importes de entrada que revelan el capital del emisor o pagos de comprador misterioso fundamentalmente no funcionan puesto que no hay direcciones ni entradas/salidas de transacciones funcionando en la misma manera.
Sin embargo, la Red Relámpago podría presentar otros problemas de privacidad, principalmente debido a la manera en la que la red está compuesta de nodos con conexiones entre ellos[75]. Las partes de esta red que pueden ser nodos de ruteo intermedio son usualmente públicas, y esta información de red podría ser sobrepuesta con información sobre paquetes ruteados tales como su cantidad. Los nodos relámpago además revelan sus direcciones IP, a no ser que sean ejecutados a través de Tor, y los canales de pago están compuestos por transacciones en cadena las cuales podrían ser analizadas utilizando técnicas comunes de análisis blockchain. Los canales de pago se ven como multifirmas 2-de-2 en la blockchain. Las transacciones de cierre bilateral se ven como si las entradas 2-de-2 hubiesen sido agotadas, pero las transacciones de cierre unilateral tienen scripts HTLC complicados que son visibles en la blockchain.
Hasta 2019 la Red Relámpago se encuentra en beta y los desarrollos continúan; la comunidad desarrolladora se encuentra aún estudiando todas sus propiedades de privacidad. Ciertamente, su privacidad es mejor que la de las transacciones en cadena.
Ruteo Cebolla
El protocolo Relámpago utiliza el ruteo cebolla[76][77] para mejorar la privacidad de las notas de ruteo intermedias. El protocolo apunta a prevenir que los nodos intermedios dentro de una ruta de pago sepan cuáles otros nodos, aparte de su predecesor o sucesor, son parte de la ruta del paquete; además, busca esconder la longitud de la ruta y las posiciones de los nodos dentro de ella.
Ruteo cebolla sobrepuesto con topología de red
El ruteo cebolla de la Red de Relámpago usualmente es comparado con el ruteo cebolla de Tor. Sin embargo, la red de Tor está totalmente conectada; cada nodo en Tor está directamente conectado (o tiene el potencial de estarlo) con cada nodo por medio, lo que significa que un paquete con ruteo de cebolla puede ser relacionado desde y hasta potencialmente cualquier otro nodo. Esto no es tal en la Red de Relámpago donde los canales de pago no se conectan por completo a la red entera, y donde la topología de red es públicamente conocida por rutear nodos. La fusión de datos de la topología de red y la pequeña cantidad de información proveniente de paquetes con ruteo de cebolla podría aún así ser suficiente para revelar información en ciertas circunstancias[78][79]. Por ejemplo, su una billetera de nodos Relámpago tiene sólo una conexión de canal de pago único yendo a un nodo intermedio, entonces cualquier pago enviado a y desde la billetera de nodos tendrá que pasar a través del nodo intermedio, el cual sería capaz de obtener mucha información sobre los pagos de la billetera de nodos sin importar que el ruteo cebolla esté siendo usado.
Una mitigación a este problema de topología sería que la topología entera de la Red Relámpago no sea conocida. Sólo los nodos que intentan rutear transacciones necesitarían ser públicamente anunciados. Es posible para los “canales privados” existir; se trata de canales de pago ya existentes pero cuya existencia no está publicada.
Esto no quiere decir que el ruteo de cebolla usado por la Red de Relámpago sea inútil, al contrario, pero su privacidad no es tan fuerte como lo sería con Tor.
Ruteo rendez-vous
El ruteo cebolla desde el emisor aún requiere que el nodo Relámpago de destino sea conocido por el emisor (además de toda la información asociada como el canal UTXO). Esto significaría que un usuario no puede recibir pagos Relámpago sin revelar uno o más UTXOs asociados con sus canales de pago. Una solución es el ruteo rendez-vous[80][81], también conocido como Destino Oculto[82], que permite que los pagos Relámpago sean enviados de un nodo fuente a un nodo de destino sin necesidad de que la fuente o destino revelen sus nodos e información asociada.
Una buena analogía es que el ruteo cebolla de fuente es como una conexión Tor yendo vía un nodo de salida Tor hacia su destino, y el ruteo de cebolla rendez-vous es como una conexión Tor yendo hacia un servicio oculto Tor.
Pagos Atómicos Multiruta
Los Pagos Atómicos Multiruta (PAM) son un protocolo Relámpago que permite que un solo pago sea ruteado a través de múltiples transacciones de la red relámpago[83]. Por ejemplo, si un usuario tiene cinco canales cada uno con un balance de 2 btc, podrá enviar un único pago de 7 btc usando el protocolo PAM sobre múltiples rutas de la red relámpago. En cuanto a privacidad se refiere, PAM resultaría en los nodos intermedios no pudiendo observar el importe total de pago de 7 btc sino solamente los importes parciales de pago de 2 btc o 1 btc (o cualquier otra combinación). Esto es positivo para la privacidad en el sentido que los pagos ruteados dejarían de difundir el importe exacto del pago, mostrando solo una carga más baja.
Valor hashlock común
Para pagos no-PAM, el hash de pago es el mismo que para todos los nodos a lo largo de la ruta de un pago. Esto podría permitir múltiples nodos si cooperaran para saber que han ruteado el mismo pago basados en este valor hash común. Aunque esto también podría ser hecho utilizando la marca horaria de cada pago ruteado.
Los scriptless scripts usados como reemplazo de contratos explícitos de tiempo hash bloqueados pueden ser usados para resolver este problema hashlock común. Es posible agregar un valor de retoque aleatorio distinto al valor aleatorio comprometido en cada paso, como resultado puede haber una ruta de saltos múltiples a través de los canales de pago en la que los participantes individuales de la ruta sean incapaces de saber si están en la misma ruta a no ser que estén directamente conectados por causa de este re-cegamiento[84].
Un documento publicado en 2017 y llamado Concurrencia y Privacidad con Redes de Canal de Pago[85][86] relata un esquema utilizando pruebas de cero conocimiento, las cuales permitirían que cada valor hash en la ruta de pago sea diferente. Este esquema es mucho más costoso en términos de computación, pero podría seguir siendo práctico.
Billeteras de custodia
Las billeteras habilitadas para Relámpago pueden ser del tipo de custodia, en el que la billetera es tan sólo un front-end que se conecta a un servidor back-end ejecutado por alguna compañía. Esta es la misma situación para las billeteras web en el ecosistema bitcoin en cadena.
Este tipo de instalación resultaría en todas las transacciones en la Red Relámpago del usuario siendo visibles para esa compañía, por lo tanto sin privacidad, de la misma manera que usar una billetera web no tiene ninguna privacidad dentro del espacio bitcoin en cadena. Para 2019 Zap Wallet y Lightning Peach trabajaban con este modelo. La Peach wallet de hecho tiene casillas en su GUI que establecen “Estoy de acuerdo con la política de privacidad”, pero al mirar en la política de privacidad revelan que la billetera rastrea todo tipo de informaciones privadas. De más está decir que un usuario consciente de la privacidad no debería de utilizar este tipo de billeteras relámpago, sino más bien usar billeteras relámpago sin custodia[87].
Las billeteras habilitadas para Relámpago aún así necesitan interactuar con la red bitcoin subyacente, lo que puede filtrar información privada si no es hecho de manera correcta. Por ejemplo, si la billetera obtiene información de transacción blockchain de un servidor centralizado, entonces ese servidor puede espiar todas las transacciones de apertura y clausura del canal. Las billeteras ligeras conscientes de la privacidad hacen uso del filtro de bloqueado del lado del cliente, lo cual es bastante adecuado para las billeteras habilitadas para la Red Relámpago.
Tipos de script privados
Avances en la privacidad de tipos de script como Schnorr, scriptless scripts, taproot y ECDSA-2P benefician la privacidad de la Red de Relámpago al hacer que las transacciones del canal de pago blockchain aparezcan como indistinguibles de cualquier transacción blockchain de firma única.
Palpación de pagos para revelar estados de canales
El estado de balance de cada canal está oculto al público y solo es conocido por las dos entidades que componen el canal de pago. Esto otorga bastante privacidad, dado que los importes y sus cambios no son visibles para todos. Una manera posible de sobrepasar esta privacidad sería que un adversario activo envíe pagos de palpación hasta obtener el balance. Se ha probado que un ataque como este es posible, como fue descrito en un documento de principios de 2019[88], debido al nivel de detalle que las implementaciones relámpago proveen respecto a errores de ruteo. Aunque parecería que tal ataque necesitaría pagar las tarifas de ruteo por los pagos de palpación, el atacante podría entregar una factura falsa, de manera que incluso si el pago pasa por toda la ruta, el último nodo enviará un mensaje de error y no será capaz de ejecutar el pago. Por lo tanto, el costo de tal ataque se ve reducido a las tarifas necesarias para abrir y cerrar los canales utilizados para el ataque.
Este tipo de ataque puede ser usado para revelar los balances de un único o un grupo selecto de nodos de la red, e incluso a larga escala para obtener el balance de cada canal en la red. En caso de que el adversario repita este procedimiento por cada canal de pago en toda la Red Relámpago y continúe palpando frecuentemente, al mirar los cambios en los estados de canales, podrían observar los pagos siendo ruteados alrededor de la red. Una manera posible de remediar este ataque sería rutear los nodos para que aleatoriamente (por ejemplo 1-de-cada-20 veces) regresen un error de ruteo, incluso si el estado de balance del canal es realmente adecuado. Esto probablemente no degradaría demasiado la experiencia del usuario o la Red Relámpago, pero impondría un alto costo al atacante.
Soluciones de privacidad existentes
Esta sección se trata del software bitcoin que implementa opciones de privacidad como su meta principal, especialmente evitando las fugas de privacidad debidas a la blockchain.
La privacidad no puede ser separada fácilmente de cualquier otro aspecto de bitcoin. Es inusual tener soluciones enteramente distintas sólo por temas referentes a la privacidad, el sueño es que algún día todas las billeteras bitcoin incorporen tecnología de privacidad desde la base. Pero, hasta fines de 2018 la mayoría de las implementaciones de privacidad no son más que aplicaciones separadas.
Red Relámpago
Existen distintas implementaciones de la Red Relámpago hasta principios de 2019; tales como LND, c-lightning, eclair, etc.
La red en sí misma puede ser utilizada en la red principal bitcoin y varios comerciantes y otros proyectos la aceptan. Aún así no es utilizable para el público general. Se espera que algún día toda billetera bitcoin sea capaz de enviar y recibir transacciones de red relámpago, de manera que sus beneficios masivos de privacidad sean incluidos en la manera en la que los usuarios regulares usan bitcoin todo el tiempo.
Las billeteras Red Relámpago usualmente utilizan la tecnología de privacidad de las billeteras Deterministas y advierten en contra de la reutilización de direcciones.
Algunas billeteras RR como Zap Wallet y Lightning Peach son verdaderamente de custodia, están respaldadas por un servidor central que puede espiar todo lo que usuario hace, por lo que deberían ser evitadas.
CoinJoin hecho a mano
Las transacciones CoinJoin pueden ser hechas a mano sin necesidad de una billetera especial, utilizando solamente Transacciones Raw. Esto otorga bastante flexibilidad dado que las coinjoins pueden tomar una gran cantidad de formas. Podría ser algo práctico entre comerciantes bitcoin, varios de los cuales podrían decidir hacer coinjoin juntos en algunas de sus transacciones, de forma que la heurística de propiedad de entrada común implicaría que son todos el mismo racimo de billeteras.
JoinMarket
El JoinMarket es una implementación de CoinJoin en la que la liquidez requerida se paga en un mercado. En la terminología de JoinMarket existen usuarios beneficiarios de liquidez quienes pueden crear una coinjoin por cualquier cantidad que deseen en cualquier momento, pagando además una pequeña tarifa coinjoin. Los fabricantes de liquidez se encuentran en línea 24 horas al día y están listos para crear un coinjoin en cualquier momento y por cualquier cantidad que puedan, a cambio, obtienen tarifas de coinjoin de los beneficiarios de liquidez. Debido a este mercado de coinjoins, los usuarios JoinMarket pueden crear coinjoins en cualquier momento y por cualquier cantidad (hasta un límite basado en la liquidez disponible).
Otras personas están siempre disponibles para el coinjoining puesto que ganan tarifas, y los coinjoins pueden ser de cualquier cantidad y ocurrir en cualquier momento. JoinMarket también puede ser una pequeña fuente de ingresos para operadores de bots fabricantes de liquidez, quienes ganan tarifas de coinjoin al permitir a otras personas crear coinjoins con sus bitcoins.
La privacidad aumenta significativamente al repetir coinjoins muchas veces, por esta razón el proyecto JoinMarket incluye el script tumbler en el que las coinjoins se crean automáticamente en tiempos aleatorios y por cantidades aleatorias. Las bitcoins pueden ser depositadas en la billetera HD JoinMarket y el tumbler script las enviará a través de diversas coinjoins a tres o más direcciones de destino. Esta característica de utilizar más de una dirección de destino requiere superar la correlación de montos. Por ejemplo, un usuario que quiera depositar monedas en un intercambio utilizará el botón Generar Nueva Dirección de Depósito para obtener más de una dirección de destino, el intercambio entonces podría combinar estas monedas con depósitos de otros clientes, lo que debería resistir cualquier rastreo basado en importes.
JoinMarket puede interactuar con un nodo completo Bitcoin Core para de manera privada obtener el historial de su propia billetera. Existe también la opción de utilizar el servidor Electrum, pero a los usuarios no se les recomienda utilizarlo. Existen planes para reemplazar la interfaz Electrum con una que utilice filtrado de bloqueo del lado del cliente.
El software en cuestión es un proyecto open source con una comunidad basada a su alrededor. Desafortunadamente JoinMarket puede ser difícil de instalar para personas no acostumbradas a Linux o la interfaz de línea de comando. Se espera que algún día se haga el trabajo para facilitar esta tarea, pero dado que todo el desarrollo es hecho por voluntarios, no existe ninguna idea de cuándo ocurrirá tal cosa.
Artículo principal: JoinMarket.
Billetera Wasabi
La Billetera Wasabi es una billetera que implementa CoinJoin. Es open source y está escrita en C#, .NET Core. El paquete incluye Tor y todo el tráfico entre clientes, con el servidor pasando a través de ella, de forma que las direcciones IP están ocultas. Es fácil de instalar y usar. Esta billetera incluye tecnología de privacidad estándar como una billetera Determinista de Jerarquía y evasión de reutilización de direcciones, además de control de monedas obligatorio. La billetera utiliza filtrado de bloqueo del lado del cliente para obtener su propio historial de transacción de manera privada.
Los CoinJoins ocurren entre usuarios sin intermediarios proveedores de liquidez. Hasta principios de 2019, los coinjoins ocurren aproximadamente una vez cada hora y media.
Las billeteras de los usuarios se conectan a un servidor que coordina la CoinJoin. La billetera utiliza firmas ciegas schnorr (lo que es similar a la criptografía utilizada en firmas ciegas chaumian y certificados de portador ciego), de manera que este servidor o cualquier persona sea incapaz de conocer el enlace entre las entradas y salidas de la transacción mezclada. El servidor es ejecutado por la compañía zkSNACKS, desarrolladores de la Billetera Wasabi; esta compañía genera sus ingresos cobrando una tarifa (0,17% por participante hasta 2019) de cada transacción coinjoin.
Artículo principal: Billetera Wasabi.
Billetera Samourai
La Billetera Samourai es una billetera para smartphone que implementa algunas características de privacidad. Stowaway es una implementación de PayJoin. Stonewall es un esquema que crea transacciones que parecen CoinJoins pero en realidad involucran solo a una persona; estas falsas coinjoins pretenden crear falsos positivos en algoritmos usados por una compañía de vigilancia de transacciones hipotética. Los PayNyms son una implementación de direcciones ECDH. La billetera también cuenta con una opción llamada salidas de cambio de tipo similar, en las que se genera una dirección de cambio del mismo tipo que la dirección de pago; esto evita la toma de huellas dactilares de una billetera utilizando tipos de direcciones que dirigen a detección de direcciones de cambio.
Por diseño, la Billetera Samourai obtiene información sobre el historial y balance del usuario consultando su propio servidor. Este servidor conoce todas las direcciones y transacciones de los usuarios y por tanto puede espiarlos. Por lo mismo, utilizar la configuración de diseño de la Billetera Samourai sólo es un útil en un modelo de amenaza en el que el adversario puede analizar la blockchain pero no puede acceder a este servidor. En junio de 2019 con el lanzamiento y open sourcing del servidor de la Billetera Samourai, Dojo, los usuarios ahora podrían alojar su propio servidor de manera privada y dirigir su Billetera Samourai a conectarse con él.
Liquid Sidechain
Para 2018 la Liquid sidechain implementa Transacciones Confidenciales (TC) lo que permite que las bitcoins sean transferidas en esa sidechain al tiempo que los montos de transacción se mantienen ocultos. El producto es desarrollado por la compañía Blockstream y está dirigido a intercambios y comerciantes. Permite una rápida transferencia de bitcoins de manera muy privada.
Dado que Liquid es una sidechain federada, los usuarios generalmente necesitan pasar chequeos anti lavado de dinero y entregar sus datos personales para utilizarla. Su modelo de seguridad es bastante similar a tener bitcoins en un intercambio, puesto que si suficientes funcionarios son hackeados entonces todas las bitcoins en la sidechain podrían ser robadas. Sin embargo, dentro de su modelo de seguridad usted disfruta de excelente privacidad, y la sidechain en sí misma está dirigida a comerciantes e inversores que ciertamente quieren tener sus actividades de mercadeo privadas para evitar una inversión ventajista de parte de otros comerciantes.
Ejemplos y casos de estudio
La privacidad es un tema muy multifacético y práctico, ayuda el seguir ejemplos para poder entender mejor cómo todos los conceptos se relacionan entre sí.
Ejemplo de mala privacidad – Ejecución de intercambio de frente
- Usted es un comerciante y tiene una cuenta en un intercambio bitcoin.
- Usted quiere depositar algunas bitcoins para vender.
- Envía sus bitcoins a la misma dirección de depósito de intercambio que ha utilizado en el pasado.
- Debido a la reutilización de dirección, es fácil ver en la blockchain que algunas bitcoins están siendo enviadas al intercambio.
- El intercambio requiere 3 confirmaciones antes de acreditar su cuenta, pero en ese tiempo el precio ya ha cambiado en su contra debido a que otros comerciantes se han percatado de su transacción de depósito.
- Usted vende sus bitcoins por un precio menos atractivo del que hubiese querido.
- Esto se evita fácilmente haciendo click en el botón Generar Nueva Dirección de Depósito en el sitio web del intercambio y depositando ahí.
Lección: La reutilización de direcciones es terrible para su privacidad.
Ejemplo de mala privacidad – Ahorros revelados por la reutilización de direcciones
- Usted mantiene sus ahorros en bitcoin, utilizando una billetera en papel de dirección única, lo que resulta en reutilización de direcciones.
- Todos sus ahorros en bitcoin se encuentran en esta misma dirección, digamos que contiene una cantidad valorada en 1 millón de dólares.
- Usted compra una pequeña cantidad de bitcoins para añadir a sus ahorros, depositándola en la billetera de papel.
- La persona que le vendió las bitcoins sigue su rastro en la blockchain y descubre que su billetera de papel contiene $1 millón.
- Se lo menciona a alguien en un café o un bar.
- El rumor corre. Un ladrón entra a su casa y lo toma como rehén hasta que $1 millón en bitcoin sean entregados a cambio de su libertad[89].
Lección: La reutilización de direcciones es terrible para la privacidad.
Ejemplo de mala privacidad – Ahorros revelados con recolección de datos
- Usted ahorra en bitcoin. Comerciando en un intercambio al cual le revela todos sus datos.
- Normalmente compra monedas pero a veces las vende. Sólo utiliza este intercambio.
- Sin importar qué tecnología privada de blockchain utilice, el intercambio igualmente conoce todos sus negocios y puede saber exactamente cuántas bitcoin tiene en cualquier momento.
Evadiendo sanciones
- Usted vive en un país que se encuentra bajo sanciones de comercio internacional por parte de otros países.
- Debido a esto, no puede comprar el periódico online que quiere.
- Navega a través del sitio web del periódico con Tor, de forma que no puedan saber su país de origen a través de su dirección IP.
- Usted compra bitcoins con dinero en efectivo y las envía al software de billetera en su computador, entonces utiliza estas bitcoins para comprar el periódico.
- Las transacciones bitcoin no tienen información geográfica en ellas, de forma que no se descubre que su pago viene de un país sancionado.
Ejemplo – Transacciones con sus compañeros de poker online sin revelar su verdadero nombre
- Usted juega poker online con algunas personas (por dinero real).
- Gana en grande. Mucho dinero llega a usted y sus compañeros están molestos.
- Las apuestas están en bitcoin, lo que usted recibe. Vende las monedas por dinero o vía un intercambio, o las utiliza directamente para pagar por bienes o servicios.
- Sus compañeros de poker irritados no pueden descubrir su nombre real.
Este ejemplo tiene un modelo de amenaza muy leve en la que el adversario no puede acceder a los registros AML/KYC del intercambio (si usted no comerció con dinero) y dado que ellos no son su ISP no pueden enlazar fácilmente su dirección bitcoin con su dirección IP (en caso de que usted haya usado un nodo ligero en vez de uno completo).
Ejemplo – Donar sin que su empleador lo sepa
- Usted gana su dinero en bitcoin, su empleador le ha enviado bitcoins como su sueldo.
- Usted quiere donar a X caridad o asociación política con una donación de 0.1 BTC, pero no quiere que su empleador lo sepa.
- Deposita 0.3 BTC en un casino bitcoin, intercambio altcoin o algún otro sitio web de servicio bitcoin que permite depósitos de bitcoin anónimos y retiros del público en general.
- Retira 0.1 BTC y pone la dirección de donación deseada como dirección de retiro.
- Retira los restantes 0.2 BTC de vuelta a su propia billetera (con una nueva dirección, evitando la reutilización de direcciones).
Si su empleador casualmente analiza la blockchain pensará que usted es un apostador en vez de partidario de X grupo. Al casino bitcoin no le interesa a quién donó. Su empleador tampoco puede correlacionar las cantidades, porque ve que depositó 0.3 BTC pero solo 0.1 BTC fueron enviados al grupo. La privacidad viene de mezclar sus monedas con las de todos los demás que utilizan un casino en el período de tiempo en el que sus monedas fueron depositadas.
Ejemplo – Donar sin que nadie lo sepa
- Usted quiere apoyar a X caridad o asociación política sin que nadie lo sepa.
- Descargue e instale una billetera respaldada por un nodo completo como Bitcoin Core.
- Compre la cantidad exacta de bitcoin usando dinero (obtenga un poco más debido a las tarifas transaccionales y volatilidad), envíe las monedas a su billetera.
- Envíe las monedas al grupo para donarlas. La transacción debería de ser transmitida a través de Tor.
En vez de un intercambio de dinero directo, el usuario podría también haber comprado un sustituto del efectivo como una gift card, cambiándola en línea por bitcoins que no estuviesen enlazadas a su identidad.
En este modelo de amenaza es requerido el nodo completo, pues de lo contrario su ISP o cualquier otro adversario podría espiarle en las comunicaciones de nodo ligero y descubrir las direcciones bitcoin del usuario. Al transmitir la transacción a través de Tor ni su ISP ni una compañía de vigilancia de transacciones pueden saber que su dirección IP transmitió la transacción.
Ejemplo – Recibir donaciones de manera privada
- Usted tiene una única dirección de donación para su grupo o proyecto, cualquiera puede ver todas las donaciones y sus cantidades al colocar su dirección de donación en un explorador blockchain.
- Quiere gastar las donaciones sin que nadie en internet lo sepa.
- La dirección de donación es parte de una billetera respaldada por un nodo completo como Armory.
- Transmite una transacción a través de Tor para depositar el dinero donado en un sitio web bitcoin que permite depósitos y retiros anónimos.
- Retire el dinero directo a un servicio web bitcoin similar.
- Tenga cuidado de utilizar distintas transacciones para evitar que las cantidades sean correlacionadas.
- Asegúrese de esperar un poco para evitar que el tiempo sea utilizado para enlazar las transacciones.
- Repita esto a través de varios sitios web bitcoin distintos[90] antes de enviar las monedas de vuelta a su billetera.
Utilice este ejemplo con 1 BTC. Cada flecha -> es una nueva transacción de retiro.
Ejemplo – Almacenar sus ahorros de forma privadaAsí como antes, la billetera de nodo completo permite que su billetera sepa su propio historial en privado, mientras que la transmisión por Tor esconde su dirección IP usada cuando envía una transacción. Usar muchas cantidades distintas evita que la correlación de montos provea pistas capaces de arruinar su privacidad. Utilizar múltiples sitios web bitcoin significa que un sólo website que coopere con el adversario no será suficiente para arruinar por completo su privacidad. Existe riesgo de custodia puesto que cada sitio web tiene el poder de robar su dinero, pero en este ejemplo la cantidad de bitcoin es relativamente baja así que el riesgo es aceptable.
- Usted desea guardar valores en bitcoin sin que nadie sepa lo que hace con esos valores, o incluso que posee bitcoins.
- Compre las monedas de alguna manera y haga que las envíen a su billetera JoinMarket, la cual ha configurado para usar su propio nodo completo, todo lo cual es ejecutado a través de Tor.
- Ejecute el script tumbler de JoinMarket, el cual le hace crear múltiples transacciones CoinJoin con el propósito de romper el enlace entre direcciones.
- Haga que las monedas sean enviadas a otra billetera, la cual será usada para almacenar los bitcoins a largo plazo. La billetera debería estar respaldada por un nodo completo como Electrum, dirigido a su propio servidor Electrum.
Nótese que la tecnología de privacidad bitcoin como JoinMarket puede esconder información relacionada a la privacidad de sus transacciones, pero no puede agregar privacidad en otros lugares; por ejemplo, si compra las bitcoins de una manera no anónima utilizando un intercambio AML/KYC entonces ese intercambio sabrá que su identidad de la vida real compró bitcoins en ese momento.
Utilizar JoinMarket es un método de no-custodia, a diferencia del método previo, que envía bitcoin a través de muchos sitios web de servicio bitcoin, por lo que es útil cuando el riesgo de custodia es inaceptablemente alto (como cuando está anonimizando todos sus ahorros). Todas las billeteras están respaldadas por nodos completos en este ejemplo para poder impedir que un servicio externo sea capaz de enlazar sus direcciones o conectarlas a su dirección IP. El nodo completo es ejecutado enteramente a través de Tor para impedir que su proveedor de servicio internet o cualquier adversario a nivel de red vea que usted está ejecutando un nodo bitcoin.
Ejemplo – Detener que pagos ingresados a través de distintas fuentes sean enlazados entre sí
- Si usted tuviese ambos pagos en la misma billetera estos podrían ser enlazados entre sí con la heurística de propiedad de entrada común.
- Usted trabaja como enfermera, además genera ingresos extra como stripper. Ambos trabajos pagan en bitcoin y usted no quiere que sean enlazados entre sí.
- Usted envía su sueldo de enfermera a un JoinMarket mixdepth y el sueldo de stripper a otro mixdepth.
- Usted ejecuta el tumbler script de JoinMarket, el cual combina ambos balances sin necesidad de enlazarlos entre sí.
Otra manera de hacer esto posible (sin correr el riesgo de custodia) sería depositar su sueldo de enfermera en un servicio web bitcoin (como un casino) y luego depositar el sueldo de stripper a una dirección de depósito distinta. Posteriormente, retira ambos para ser combinados con todos los otros depósitos y usuarios del casino. Probablemente la mejor manera de hacer esto sería recibir uno o ambos salarios a través de la Red Relámpago.
Ejemplo – Retirar ganancias de un casino hacia un intercambio bitcoin sin que ninguna entidad sepa la fuente o destino de los fondos
- Usted ha ganado 10 BTC en un casino bitcoin, quiere retirarlas hacia un intercambio bitcoin para venderlas sin que ninguna de las partes lo sepa (quizás porque las apuestas online están bloqueadas en su jurisdicción).
- Instale JoinMarket y lo dirige hacia su propio nodo completo.
- Haga que las ganancias del casino sean enviadas a su billetera JoinMarket en tres pagos distintos de 5 btc + 2 btc + 3 btc, estos deberían ir a mixdepths separados.
- Ejecute el tumbler script de JoinMarket para mezclar las monedas y haga que las envíen a tres distintas direcciones de depósito del intercambio con montos de (por ejemplo) 1btc + 2btc + 7btc.
- De esta forma ni el casino online ni el intercambio pueden utilizar la correlación de valores para descubrir la fuente o el destino. Las transacciones coinjoin evitan que sea utilizada la heurística de propiedad de entrada común y las otras opciones de JoinMarket evitan la reutilización de direcciones y análisis del gráfico transaccional[91].
Ejemplo de mala privacidad – Usar un explorador blockchain
- Usted recibe un pago en bitcoin en una de sus direcciones.
- Copia y pega la dirección en un sitio web de exploración de la blockchain y presiona Actualizar hasta que la transacción entrante tenga 3 confirmaciones.
- El explorador blockchain ahora sabe que su dirección IP está muy interesada en esta dirección bitcoin en particular.
- Esto es evitado al usar su propia billetera bitcoin (respaldada por un nodo completo) para avisarle cuando sus pagos han entrado y cuántas confirmaciones tienen, sin que otra entidad lo sepa.
Esta ruptura de privacidad puede ser arreglada casi por completo al navegar en el sitio web explorador de la blockchain a través de Tor. Aún revela que alguien está interesado en esa dirección bitcoin pero sin saber su dirección IP ni conocer ninguna otra dirección IP controlada por el mismo usuario.
Ejemplo de mala privacidad – Fallo en la privacidad de su mezclado altcoin debido a una correlación de valores
- Usted posee 1.456225 BTC por las cuales alguna información relacionada con la privacidad se ha filtrado (quizás las compró a través de un intercambio AML/KYC) y quiere enviarlas a otra dirección al tiempo que rompe el enlace entre ambas.
- Intercambia las bitcoins por un altcoin, el cual implementa algo de tecnología relacionada a la privacidad, una tal llamada “moneda privada”, entonces, cambia el altcoin de vuelta a bitcoin después de haber hecho algunas transacciones altcoin.
- Envía las bitcoins de vuelta a su billetera en una transacción.
- Debido a que la cantidad de transacción es bastante cercana a la inicial de 1.456225 BTC, no es muy difícil para un adversario revisar la blockchain entera y observar los montos de transacciones similares entrando y saliendo del intercambio altcoin que usted utilizó.
Lección: Las transacciones tienen montos visibles para todos, los cuales deben ser tratados con mucho cuidado por la privacidad.
Ejemplo – Mezclado de altcoin por privacidad
- Similar al ejemplo previo, usted tiene bitcoins que quiere mezclar. Comercia dentro y fuera de un altcoin de privacidad para hacerlo.
- Al cambiar de vuelta a bitcoin usted deposita la altcoin de privacidad en un intercambio para ser vendida, utiliza varias transacciones para que el intercambio, y cualquier observador de la blockchain no puedan fácilmente utilizar las cantidades para enlazar las direcciones de antes y después.
Este método aún estaría propenso a fallas debido a que los altcoins de privacidad tienen menos transacciones que bitcoin por un factor de unos cientos, de forma que la anonimidad establecida podría ser menor. Además, existen riesgos de custodia al utilizar intercambios, por lo que este método podría no ser apropiado para grandes cantidades de moneda. Dado que las altcoins de privacidad son usualmente mucho menos escalables que bitcoin, sus billeteras de nodo completo podrían ser más costosas en recursos al ejecutarse que bitcoin. Las altcoins de privacidad son propensas a precios más volátiles que bitcoin, lo que aumenta el riesgo de perder parte del dinero debido a movimientos en el precio.
Ejemplo – Comercio diario con Red de Relámpago
- Usted tiene algunas bitcoin y quiere gastarlas en bienes y servicios regulares. (Café, créditos telefónicos, VPN, hosting, alquiler de apartamento y hotel, vuelos, comida, bebidas, ropa, etc.) cuidando su privacidad lo más posible.
- Descarga e instala una billetera de Red Relámpago y la utiliza para todas sus compras.
- Los ataques de privacidad como la heurística de propiedad de entrada común, la reutilización de direcciones y detección de cambio de dirección fundamentalmente no funcionan en la tecnología de transacciones off-chain.
Ejemplo de mala privacidad – Envíos a una dirección de donación estática sin precauciones
- Usted posee sus propias bitcoin y las mantiene en una billetera de custodia.
- Quiere donar a la organización política o caritativa X.
- Crea una transacción en el sitio web de la billetera de custodia, enviando algo de dinero a la dirección de donación del grupo.
- El servidor de billetera de custodia puede ver a dónde la está enviando (especialmente fácil si el grupo usa una dirección de donación estática).
- El servidor de billetera de custodia se encuentra en desacuerdo con sus posiciones y por tanto cierra su cuenta.
Lección: Utilizar una billetera de custodia es malo para su privacidad puesto que el custodio puede ver todo lo que usted hace. La reutilización de direcciones es dañina para la privacidad (pero común con direcciones de donación).
Ejemplo de mala privacidad – Recibir donaciones que están siendo espiadas con pagos de comprador misterioso
- Usted quiere aceptar donaciones en bitcoin pero no quiere revelar la cantidad total donada.
- Instala un servidor web para que le otorgue direcciones únicas a cada visitante.
- Un adversario que quiere tener una noción de su ingreso total de donaciones le dona una pequeña cantidad de bitcoins.
- Usted combina todas las donaciones para ser usadas como entradas de una transacción, por lo tanto las enlaza juntas con la heurística de propiedad de entrada común.
- El adversario ahora tiene una buena noción de su ingreso total de donaciones.
Lección: Los pagos de comprador misterioso pueden ser usados para espiar a las personas, incluso si estas evitan la reutilización de direcciones. Sea consciente de todo lo que está siendo revelado con la heurística de propiedad de entrada común.
Ejemplo de la vida real – Malware que roba bitcoins utilizando direcciones estáticas
- Usted crea un stealware (malware que roba dinero de su víctima).
- Codifica algunas direcciones bitcoin en su malware, al cual las víctimas son enviadas.
- Cualquier investigador de malware puede ver ahora cuántas bitcoins ha robado usted simplemente introduciendo las direcciones en un explorador blockchain.
Esto ha sido efectuado en múltiples casos incluyendo: El Wannacry malware[92][93] y Electrum stealware[94][95].
Ejemplo de mala privacidad – Espionaje en un malware ladrón de bitcoin utilizando pagos de comprador misterioso
- Usted es un investigador de infosec estudiando malware ladrón de bitcoin.
- El autor del malware ha codificado un esquema de dirección ECDH dentro de su malware.
- Su análisis del malware sólo revela la clave pública ECDH en vez de las direcciones bitcoin, de forma que el autor piensa que está actuando en privado.
- Usted manda una pequeña cantidad de bitcoin a una dirección derivada de la clave pública ECDH como un pago de comprador misterioso.
- El autor del malware envía todas sus bitcoins recibidas a través de robo a un intercambio en una sola transacción, incluyendo su pago.
- Usted puede ahora mirar en la blockchain y utilizar la heurística de propiedad de entrada común para tener una noción de cuantas bitcoins han sido robadas por el malware.
- Además, ahora puede contactar al intercambio, el cual le entregará la identidad real del autor de malware, quien ahora puede ser encarcelado.
Lección: Los pagos de comprador misterioso en conjunto con la heurística de propiedad de entrada común pueden ser usados para des-anonimizar incluso a aquellas personas que evitan la reutilización de direcciones.
Ejemplo – Billetera ligera de un único uso ejecutada a través de Tor
- Usted quiere comprar o donar algo a alguien en línea anónimamente.
- Instala la billetera Electrum y la configura para utilizar Tor o Tails OS.
- Usted compra bitcoins anónimamente con efectivo y las envía a su billetera Electrum.
- Gasta el balance entero de bitcoins comprando o donando a aquello que desea.
- Al terminar, elimina su billetera y nunca la vuelve a utilizar.
Su billetera Electrum utiliza un servidor externo, el cual puede ver todas sus direcciones y transacciones bitcoin. Dado que se ha conectado a través de Tor, el servidor no descubre su verdadera dirección IP. Puesto que usted solo usa una dirección bitcoin una vez y nunca más, el servidor es incapaz de agrupar ninguna otra dirección. Como gastó su balance total, entonces no existe una dirección de cambio que pueda filtrar información. Esta instalación resulta en una fuerte privacidad a pesar de que un servidor externo esté siendo utilizado.
Ejemplos de mala privacidad – Billetera ligera utilizada múltiples veces a través de Tor
Muy similar al ejemplo previo, pero más de una dirección y transacción son utilizadas.
- Usted quiere utilizar bitcoin para más de un caso de uso, por ejemplo, comprar un sombrero de colección y pagar un VPN.
- Instala la billetera Electrum y la configura para utilizar Tor.
- Paga por el sombrero de colección y pide que lo envíen a su dirección postal.
- Paga por el VPN para aumentar su privacidad de navegación en la web.
- Como la billetera Electrum consulta un servidor externo Electrum, ese servidor puede enlazar ambas transacciones y saber cuál dirección es la dirección de cambio.
- Por lo tanto, el servidor puede fácilmente ver que la misma persona que compró el sombrero también pagó por el VPN. Como la compra del sombrero requirió que usted revelara su dirección postal, esta ahora puede ser enlazada a la cuenta VPN y usted ya no puede navegar en la web anónimamente.
Lección: El servidor externo Electrum fue capaz de enlazar sus dos transacciones. Evite esto ejecutando su propio servidor Electrum, el cual es respaldado por su propio nodo completo.
Lección 2: Note que el TailsOS, hasta 2018, utiliza este modelo de privacidad para Electrum(!)
Ejemplo de la vida real – Dirección de donación pública combinada con la heurística de propiedad de entrada común
- Vaya a un sitio web que acepte donaciones bitcoin como la página de donaciones Tails OS.
- Tome su dirección de donaciones (en este caso 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2) y búsquela en el sitio www.walletexplorer.com
- Este sitio utiliza la heurística de propiedad de entrada común, reutilización de direcciones y posiblemente otras técnicas para agrupar direcciones.
- Podemos ver la cantidad y volumen de donaciones en el proyecto Tails OS: https://www.walletexplorer.com/wallet/04d3d17f766c4e53?from_address=1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2 la cantidad se ve real por lo que probablemente estemos en la línea correcta.
Ejemplo de la vida real – El análisis forense digital ayuda con la investigación del intercambio MtGox
- Mt. Gox es un intercambio bitcoin ya difunto, el cual cerró en 2013 por bancarrota.
- Su base de datos interna fue filtrada en Marzo 2014, a partir de lo cual fue posible crear una imagen casi completa de los depósitos y retiros de sus billeteras.
- La reutilización de direcciones fue también un factor de gran influencia. La heurística de propiedad de entrada común fue un factor menor puesto que esta heurística fue desactivada gracias a la opción de clave privada de importación de mtgox.
- El análisis de información también fue chequeado cruzadamente al revisar en la web todos los posts de foros en los que un cliente escribe algo como: ¡Ayuda! Hice un depósito a MtGox por una cantidad de 0.12345 BTC. A medida que escribo mi transacción tengo 20 confirmaciones pero el depósito no ha aparecido en el intercambio. Los posts del foro incluyen fecha y hora. Estos posts incluyen suficiente información para buscar la transacción correspondiente en la blockchain.
- El análisis reveló que existieron múltiples robos de mtgox y el intercambio fue insolvente la mayoría de su existencia.
Charla completa: Conferencia Breaking Bitcoin 2017. Kim Nilsson – Cracking MtGox Slides.
Ejemplo de la vida real – Uso con errores de la heurística de propiedad de entrada común exagera las importes de donaciones
- Vaya a un sitio web que acepte donaciones como ThePirateBay.
- Tome su dirección de donación (en este caso 1z8Tep4BNS79W3kYH8CHA8tWj6nuHYcCM) y búsquela en el sitio www.walletexplorer.com
- El sitio utiliza la heurística de propiedad de entrada común, reutilización de direcciones y posiblemente otras técnicas para agrupar direcciones.
- Podemos ver la mayoría de los valores y volúmenes de donaciones a ThePirateBay: https://www.walletexplorer.com/wallet/00005c945dba011c?from_address=1z8Tep4BNS79W3kYH8CHA8tWj6nuHYcCM
- Los resultados indican que ThePirateBay está obteniendo cientos de millones de dólares de donaciones por día, lo cual no es creíble.
- Una posible explicación de lo que está en realidad ocurriendo es que ThePirateBay acepte donaciones directo a esta cuenta como un intercambio bitcoin, lo que resultaría en que el análisis basado en la heurística de propiedad de entrada común entregue cifras altamente exageradas, puesto que en realidad encuentra todos los depósitos a ese intercambio entero. Esto presenta un peligro para ThePirateBay puesto que el intercambio de custodia podría bloquear o censurar donaciones entrantes.
- Otra posibilidad es que ThePirateBay esté utilizando CoinJoin.
Ejemplo de la vida real – Agrupaciones incorrectas encontradas por la heurística de propiedad de entrada común
- El sitio web www.walletexplorer.com usa la heurística de propiedad de entrada común, reutilización de direcciones y posiblemente otras técnicas para agrupar direcciones.
- Tiene un gran racimo llamado MtGoxAndOthers, el cual cuenta con 8.6 millones de transacciones y 3.6 millones de direcciones asosciadas hasta Enero de 2019.
- El antiguo intercambio Mt. Gox tenía una opción en la que los usuarios podían importar claves privadas bitcoin de sus billeteras personales directo hacia el sitio web[96]. Ahí sería agrupada con UTXOs de la propia billetera de MtGox.
- Parece que algunas transacciones CoinJoin podrían también haber terminado en este racimo[97]
- Por ejemplo, la transacción 5ac0210febf7ce07a737bae8c32f84c1c54d131c21a16ca6b02b6f1edcad15c3, que es probablemente una transacción JoinMarket, pertenece al racimo MtGoxAndOthers[98].
- Otro ejemplo es la transacción 52757ed33a235ce8e48aeaabab7f6dd9cd3445c3642630123103b154ee59f3f5, que se trata de una coinjoin creada por el antiguo servicio centralizado SharedCoin[99], que también se encuentra en el racimo MtGoxAndOthers de acuerdo al walletexplorer.
Ejemplo de la vida real – Coinjoin hecho a mano despista un analista bitcoin
- El inventor de CoinJoin Greg Maxwell publicó un thread en [dotorg/index.php?topic=139581.0 foros bitcointalk forums llamados “I taint rich!”], el cual pretendía demostrar coinjoin y cómo la heurística de propiedad de entrada común no siempre es correcta.
- El thread invitaba a los lectores del foro a crear CoinJoins a mano con la dirección de vanidad de Greg Maxwell, lo cual él espera sea una fuerte demostración de los defectos de la heurística de propiedad de entrada común.
- Muchos años después, una transacción bitcoin con un valor de 40000 BTC fue transmitida y minada, lo cual causó especulación en algunos foros bitcoin. Los coinjoins manuales causaron que algunos llegaran a la errada conclusión de que Greg Maxwell era el dueño de los 40000 BTC.
- Una cita del analista:
Originalmente se ve como si fueran propiedad de alguien con la dirección de vanidad de GMaxweLL: 14947302eab0608fb2650a05f13f6f30b27a0a314c41250000f77ed904475dbb
Si se siguen los 40k de esa transacción (click en las salidas), se llega a la transacción que enlazamos. Es una serie corta de transacciones.
Básicamente, alguien que es dueño de esa dirección fue capaz de desbloquear monedas de esa dirección, así como otra dirección que mantenía los 40,000 en la misma transacción. Entonces deben haber sido dueños de ambos (al menos hace 4 años, por lo menos).
Lección: La heurística de propiedad de entrada común no siempre está en lo correcto.
Ejemplos de la vida real – El análisis de billetera del intercambio QuadrigaCX
- A principios de 2019 el intercambio QuadrigaCX cerró y muchos de sus clientes quedaron incapacitados para acceder a sus depósitos bitcoin, posiblemente para siempre.
- Un cliente quiso analizar la blockchain para encontrar información sobre la billetera de QuadrigaCX.
- Este pidió en foros de internet que otros clientes revelaran sus direcciones de depósito y transacción, varios de ellos lo hicieron.
- Usando www.walletexplorer.com, el analista fue capaz de encontrar un gran racimo de billeteras conteniendo todas esas direcciones, es probable que esta sea la hot wallet de QuadrigaCX. La hot wallet hizo muchas transacciones, a menudo involucrando reutilización de direcciones y no usó CoinJoin; por lo tanto, es probable que este análisis esté en lo correcto.
- El racimo walletexplorer llamado MtGoxAndOthers despistó al analista para que creyera que QuadrigaCX tenía algo que ver con MtGox, cuando en realidad este racimo surge por causa de CoinJoin.
- El analista fue incapaz de encontrar un solo racimo con una cantidad significativa de bitcoins que pudiese ser la billetera de almacenamiento frío. Sin embargo, es posible que las billeteras de almacenamiento frío creen pocas transacciones y nunca reutilicen direcciones; de forma que es posible que tal racimo nunca apareciera en walletexplorer.com, que utiliza la heurística de propiedad de entrada común. Sin embargo, también es posible que el intercambio sea insolvente y por tanto no haya ninguna billetera de almacenamiento en frío.
Artículo principal: https://blog.zerononcense.com/2019/02/04/quadrigacx-chain-analysis-report-pt-1-bitcoin-wallets/
Comentarios Reddit: https://www.reddit.com/r/Bitcoin/comments/amut05/investigation_proves_an_exchange_quadriga_ran_a/
Ejemplo de la vida real – Evitar que los clientes del casino Bustabit sean vetados de Coinbase.com
- Coinbase.com es un intercambio bitcoin. Bustabit es un casino online que utiliza bitcoin.
- En los Estados Unidos apostar en línea es ilegal (aunque los gobiernos estatales a menudo operan sus propias loterías y apuestas como las hechas en Las Vegas son legales). Coinbase.com mantiene esta política advirtiendo y eventualmente vetando a sus usuarios que usan casinos bitcoin online.
- Algunos de los clientes de Bustabit estaban siendo advertidos y vetados por Coinbase.com
- Bustabit implementó la evasión de cambio[100] para que muchas de sus transacciones de retiro no tuviesen una salida de cambio.
- Bustabit también importó varios miles de direcciones reutilizadas a JoinMarket e hizo que estas fueran usadas como entradas en muchas transacciones CoinJoin.
- Ningún otro cliente Bustabit fue advertido ni vetado
- Parece que la combinación de ambos métodos es capaz de romper la heurística de propiedad de entrada común y reduce la información privada filtrada por las salidas de cambio, lo suficiente como para que la compañía de vigilancia de transacciones socia de Coinbase.com fuese ahora incapaz de identificar las direcciones de billeteras Bustabit.
Ejemplo de la vida real – Scripts inusuales de firmas múltiples
- Para enero de 2019 los contratos multifirmas eran visibles para cualquier observador de la blockchain.
- Esto incluye sus valores m-de-n, los más comunes por lejos son los multisig 2-de-3[101]
- Algunos scripts muy inusuales como multifirmas 12-de-14 han sido usados contadas veces en la blockchain. Son muy fácilmente visibles como la billetera de alguien que recibió dinero y luego lo gastó.
- La bóveda bitcoin de la compañía Xapo utilizó un esquema de firmas múltiples 3-de-5. En el momento en el que lo movieron resultó que 90% de las monedas mantenidas en direcciones multisig 3-de-5 se movieron en la blockchain. Esto reveló la cantidad de bitcoins en la billetera de Xapo[102].
- En 2016 el intercambio Bitfinex fue hackeado y parte de su billetera robada. Bitfinex utilizó direcciones multifirmas 2-de-3 para almacenar sus monedas. Cuando el ladrón movió las monedas hackeadas a direcciones no-multifirmas normales, el movimiento de 120,000 bitcoins fuera de multisig 2-de-3 fue visible en la blockchain y reveló el tamaño del robo[103].
Ejemplo de la vida real – Contractor freelance de TI hace que sus compañeros de trabajo averigüen su salario
- Un usuario publicó en el foro reddit bitcoin[104] sobre su experiencia haciendo que sus compañeros de trabajo averiguaron su salario debido a la reutilización de direcciones.
- “Como contractor freelance de TI, tuve un incidente en el que un especialista on-site descubrió mi salario diario. Claramente, estaba un poco molesto y se quejó con su manager sobre la falta de su propio salario. Mi agencia me multó por 50% de mi salario mensual. No es necesario decir que ahora genero una dirección única de recepción por cada factura, y utilizo otro set de direcciones para los gastos diarios de uso personal”
Lección: La reutilización de direcciones es terrible para la privacidad.
Ejemplo de la vida real – Un hacker esconde el destino de 445 btc con CoinJoin
- En mayo de 2017 un usuario reddit publicó un thread diciendo que mantenía 445 btc en la billetera web de blockchain.info y sus monedas habían sido robadas[105]
- Ofreció una recompensa de 50% por cualquier ayuda o información que le llevase a encontrar sus bitcoins
- Resultó que las monedas robadas fueron mezcladas a través del JoinMarket. Parece que el hacker puso las monedas en un script generador de rentabilidad de JoinMarket, lo que les permitió ser usadas para coinjoins un gran número de veces. Una peeling chain CoinJoin puede ser vista.
- Todos los rastros han sido perdidos hasta donde cualquiera sabe.
Para buenos consejos respecto a cómo guardar bitcoins sin que estas sean robadas por hackers, vea el artículo Guardando bitcoins en este wiki.
Ejemplo de mala privacidad – Fusión de datos en los datos de blockchain y cookies web al comprar en línea con Bitcoin
- Las compras por internet presentan varias fugas de privacidad potenciales. Algunos ejemplos son los de partes externas rastreando cookies (Como las provenientes de sitios como Doubleclick, Google Analytics o Facebook), o datos entregados intencionalmente a los comerciantes como nombre, dirección de entrega o de email.
- La blockchain Bitcoin filtra mucha información relacionada con la privacidad.
- La fusión de datos de estas dos categorías de fuga puede revelar mucha información sobre las personas que utilizan Bitcoin para sus compras por internet. Este es el tema de un documento de 2018 llamado When The Cookie Meets The Blockchain[106].
- Por ejemplo, si un usuario bitcoin compra un sombrero de colección y lo envía a su casa, utilizando la misma billetera para más tarde donar a Wikileaks, el comerciante de sombreros y los trackers externos (que conocen el nombre real del usuario y su dirección postal) pueden saber que fue el mismo usuario quien donó a Wikileaks.
Este es un ejemplo del poder de la fusión de datos, donde dos o más fugas de privacidad se combinan para revelar mucha más información que cada fuga individual.
Los problemas de privacidad de un rastreador de cookies externo han sido conocidos por más de una década, pero la situación no ha mejorado significativamente. La privacidad puede ser devuelta en la práctica en esta situación al 1) Usar extensiones de browser como uBlock Origin, Adblock Plus o Ghostery para bloquear el rastreo de cookies por parte de terceros y/o 2) Utilizar métodos de transacción off-chain para hacer pagos en los que mucha menos información privada sea revelada. En la práctica, la mayoría de los usuarios en 2019 estarían utilizando la Red Relámpago para sus compras online.
Ejemplo de mala privacidad – Las mezclas de mezcladores centralizados son fácilmente deshechas con la correlación de valores
- BitcoinFog es un mezclador bitcoin centralizado, cobra 1-3% por una mezcla.
- Alguien en reddit fácilmente deshace varias de las mezclas de BitcoinFog utilizando la correlación de valores[107]
Ejemplo de mala privacidad – Fusión de datos usando datos de la blockchain y datos de direcciones IP en transmisión de transacciones
- Un documento publicado en 2018 [108] utiliza análisis de bitcoin y rastreo de transmisión de transacciones para quitar el anonimato a usuarios bitcoin.
- Los investigadores utilizan la reutilización de direcciones y la heurística de propiedad de entrada común (los autores del documento no mencionan la posibilidad de CoinJoin)
- Los investigadores conectan cada uno de los nodos bitcoin escucha e intentan rastrear las transacciones mientras son transmitidas. Esto les da una noción de las direcciones IP originarias.
- El documento identifica alrededor de 22,000 usuarios bitcoin al enlazar sus direcciones IP y direcciones bitcoin. Alrededor de 20,000 de estos usuarios provienen de una dirección IP, la cual probablemente pertenece a una billetera web popular.
- El documento recolectó datos durante fines de 2013, pero el algoritmo de relevo de la transacción Bitcoin Core ha cambiado significativamente con el correr del tiempo para mejorar la privacidad. Solo el método utilizado debería de funcionar menos eficazmente hoy día.
Lección: La transmisión privada de transacciones (por ejemplo a través de tor) es necesaria para la privacidad.
Ejemplo de la vida real – Un documento de 2018 analiza las transacciones ransomware bitcoin
- Un documento de 2018 usa técnicas de rastreo para estudiar el ransomware bitcoin[109]
- Algunos ransomwares utilizan direcciones estáticas (lo que implica reutilización de direcciones) mientras que otros requieren que las víctimas se conecten a un servidor http que entrega nuevas direcciones bitcoin
- Para encontrar direcciones ransomware los investigadores encontraron reportes de víctimas y usaron la ingeniería reversa en binarias ransomware para encontrar las direcciones dentro de estas.
- Además utilizaron pagos de comprador misterioso, enviando 0.001 BTC a direcciones ransomware y observando a dónde es enviada esa moneda. Dos operadores ransomware (Cerber y Locky) mordieron el anzuelo, pero un operador (Sage) no lo hizo, y por tanto su racimo nunca fue encontrado.
- Los investigadores usaron la heurística de propiedad de entrada común para encontrar racimos de direcciones. Sabían que CoinJoin rompe esta suposición y por tanto busca transacciones CoinJoin detectables dentro de los racimos, lo que indicaría una ruptura. Esto fue antes de la invención o implementación de PayJoin, así que se asume que todos los coinjoins pueden ser detectados.
- Los investigadores intentaron combinar pagos entrantes a los racimos ransomware con picos en buscas de Google para ese ransomware, y cargas para la binaria ransomware en sitios de rastreo de malware. Si existen picos en búsquedas de Google o cargas binarias sin un aumento correspondiente en pagos bitcoin entrantes, entonces eso indica que los investigadores han dejado pasar algunos racimos pertenecientes a las billeteras ransomware. Esto es la correlación de tiempos en la práctica. Los investigadores concluyen que, de hecho, echan en falta la mayoría de los racimos para CryptoDefense, CryptoLocker y CryptoWall, pero probablemente tienen todos los racimos para los otros ransomware que estudian.
- Una compañía de vigilancia de transacciones llamada Chainalysis es utilizada para encontrar la propiedad de una cierta dirección. Funciona particularmente bien para intercambios que comparten sus datos con Chainalysis. Con esto el destino de los fondos ransomware puede ser rastreado. El destinatario más grande conocido hasta ahora es el BTC-E, un ya cerrado intercambio bitcoin ruso con controles negligentes que era ampliamente conocido por ser usado por criminales. Sin embargo, la mayoría de los fondos es enviado a destinatarios Unknown. Un ransomware de nombre CryptoXXX es enviado ~95% a Unknown, WannaCry tuvo 100% de desconocidos. Los investigadores escriben BTC-E en el resumen del documento y conclusiones puesto que es este el destinatario más grande que pudieron encontrar, pero en realidad la mayoría del dinero ransomware no pudo ser rastreado.
Este documento es un excelente ejemplo de rastreo de transacciones. Los investigadores tuvieron gran cuidado en sus conclusiones, puesto que en el análisis blockchain es a veces fácil creer que uno sabe más de lo que en realidad sabe. Vale la pena su lectura por parte de cualquiera interesado en conocer más sobre privacidad en bitcoin.
El ransomware es una amenaza. Siempre mantenga buenos respaldos de sus datos importantes.
Vea también
- Heurística de propiedad de entrada común
- Reutilización de direcciones
- CoinJoin
- PayJoin
- Compañía de vigilancia de transacciones
- Bloqueo de filtrado del lado del cliente
- #Privacidad de nodo completo
- Red Relámpago
Fuente: https://en.bitcoin.it/wiki/Privacy