Usuario de Monero… ¿eres tan anónimo como piensas?ElevenPaths 30 enero, 2018 Monero está de moda. Comenzamos hace unos meses a fijarnos en esta criptodivisa principalmente a raíz de la proliferación de proyectos destinados a cargar código Javascript de minado en el navegador y analizar por qué se está apostando por esta y no por otra más reconocida como Bitcoin. Monero utiliza el protocolo CryptoNote propuesto en octubre 2013 por un autor desconocido bajo el alias Nicolas van Saberhagen. Este no da pistas sobre quién es el emisor y receptor de una transacción al utilizar firmas circulares o en anillo que mezclan las transacciones de distintos usuarios. Además, desde enero de 2017, también se puede ocultar el saldo transferido en cada transacción reforzando la privacidad con la implementación de Ring Confidential Transactions, una mejora de su algoritmo. ¿Es posible no ser anónimo? No existe mucha documentación en español que explique a bajo nivel cómo funciona el protocolo de Monero, pero sí es cierto que muchos hemos jugado con ella para explorar su capacidad de otorgar anonimato en los pagos por defecto. Pero, ¿implica este anonimato opacidad total? No necesariamente. Veámoslo con el siguiente caso. Por cada cartera, vamos a tener una dirección pública y unas semillas, que serán las que se utilicen en el caso de querer recuperar o importar el monedero que estamos utilizando. Al igual que en Bitcoin. Sin embargo, en este sistema, existen dos pares de claves: Llaves de gasto (secret spend key (b) y public spend key (B)): son las claves con las que se autorizan las transacciones. Llaves de vista (secret view key (a) y public view key (A)): son unas claves especiales propias de Monero que podemos utilizar para dárselas a un tercero de cara a que compruebe un pago. Figura 2. Ejemplo de tipos de claves en Monero. La public view key (A) y la public spend key (B) son las contrapartes de la secret view key (a) y de la secret spend key (b). Las claves públicas son las claves necesarias para generar la dirección pública. Entoces, ¿cómo se construyen las direcciones? Para empezar, vamos a trabajar a partir de la siguiente dirección de la testnet: A2HBujQ1S7SbzgQkhsPPMQGA4mbhYww3dW8DRjJE1zNG9Z6pNrcc8gUNyQKeMQowDs5MBhP95Hxq4jFSkWGsP5grQFhPJaQ. Las direcciones de Monero, al igual que las de Bitcoin, están codificadas en Base58. Sin embargo, el proceso de generación de las direcciones es un poco diferente dado que en Bitcoin se codificaba toda la parte pública a la vez y aquí se hace por cachos. En primer lugar, los 95 caracteres se dividen en ocho bloques de 11 caracteres y un último bloque de 7 caracteres. Entonces, la dirección anterior quedaría dividida de la siguiente forma: A2HBujQ1S7S bzgQkhsPPMQ GA4mbhYww3d W8DRjJE1zNG 9Z6pNrcc8gU NyQKeMQowDs 5MBhP95Hxq4 jFSkWGsP5gr QFhPJaQ El siguiente paso correspondería a decodificar cada una de las cadenas de Base58 a hexadecimal. Podemos utilizar, por ejemplo, la siguiente herramienta online: http://lenschulwitz.com/base58. A2HBujQ1S7S –> 35F0782DFFE55EA9 bzgQkhsPPMQ –> D137E1BF857E0A87 GA4mbhYww3d –> 5A9D11E131320C10 W8DRjJE1zNG –> AE1F9169B3C903C5 9Z6pNrcc8gU –> 332343F929237AF5 NyQKeMQowDs –> 835D5CA3E7C297E2 5MBhP95Hxq4 –> 19FEBAB8369330DF jFSkWGsP5gr –> FC97290B25FBF447 QFhPJaQ –> CE1B93CF65 Si lo ponemos todo seguido, sería la siguiente cadena de 138 caracteres hexadecimales (69 bytes): 0x35F0782DFFE55EA9D137E1BF857E0A875A9D11E131320C10AE1F9169B3C903C5332343F929237AF5835D5CA3E7C297E219FEBAB8369330DFFC97290B25FBF447CE1B93CF65. Por definición, los cuatro últimos bytes (0x1B93CF65) se corresponden con los cuatro primeros del hash keecak del resto de la cadena. Hacen de checksum para identificar errores. El primer byte de los 65 restantes (0x35) se corresponde con el identificador de una dirección de Monero de la testnet. Y, por último, los 64 bytes restantes son las dos claves públicas asociadas a la dirección: Clave pública de gasto (B):0xF0782DFFE55EA9D137E1BF857E0A875A9D11E131320C10AE1F9169B3C903C533 Clave pública de vista (A):0x2343F929237AF5835D5CA3E7C297E219FEBAB8369330DFFC97290B25FBF447CE Lo podemos comprobar también introduciendo la dirección en un explorador como el de testnet.xmrchain.com o en el propio monedero que estemos utilizando. Figura 3. Ejemplo de claves públicas asociadas a una dirección. Por otro lado, la secret spend key (b) será la clave con la que se firmen las transacciones, es decir, tendrían el mismo funcionamiento que la clave privada en el sistema de Bitcoin. Por defecto, la información que veríamos a partir de un transaction id es la que se puede ver en la figura siguiente. Figura 4. Información pública a partir de una transacción Sin embargo, si le proporcionáramos la secret view key (a) correspondiente a nuestra dirección pública a un tercero, este será capaz de ver todos los inputs de dinero que ha tenido una dirección, pero no sabremos cuántas transacciones de salida ha realizado por lo que tampoco podremos saber cuál es el balance actual de la cuenta. Figura 5. información sobre los inputs que ha tenido una dirección pública de Monero. Además, también añadieron otra funcionalidad, la de verificar al receptor que la transacción ha sido emitida por una persona en concreto. Para ello necesitaríamos la clave privada de la transacción y la dirección del receptor de moneros. De esta forma, se contempla la posibilidad de que el emisor de la transacción pueda garantizar que ha realizado un determinado pago preservando el anonimato. Próximo pasos: el anonimato a nivel de red Como hemos visto, Monero ofrece anonimato en los pagos. Sin embargo, es necesario recordar que en el momento en el que nos conectamos a la red, un observador podría identificar que somos usuarios de esta criptodivisa. Si bien es cierto que los usuarios podrían conectarse a redes como Tor o I2P para enmascarar su identidad, los desarrolladores de Monero están trabajando en un proyecto llamado Kovri, una tecnología descentralizada y anónima basada en las especificaciones abiertas de I2P. Aunque actualmente se encuentra en fase de desarrollo, esta es una línea de trabajo que la comunidad de Monero necesita seguir impulsado para hacer posible un ecosistema de pagos verdaderamente anónimo. Félix Brezo Equipo de Innovación y Laboratorio de ElevenPaths @febrezo felix.brezo@11paths.com Yaiza Rubio Equipo de Innovación y Laboratorio de ElevenPaths @yrubiosec yaiza.rubio@11paths.com «Confianza en el diseño seguro» vs. «Seguro, confiamos en el diseño» (Otra historia de Star Wars)¡Ya tenemos los resultados de #CDO Challenge!
Telefónica Tech Boletín semanal de Ciberseguridad, 28 de enero – 3 de febrero LockBit Green: nueva variante de LockBit Recientemente, investigadores de vx-underground han detectado que los gestores del ransomware LockBit están utilizando una nueva variante de ransomware, denominada LockBit Green. Esta nueva variante...
Martiniano Mallavibarrena Ciberseguridad en el cine: mito vs. realidad con 10 ejemplos Los múltiples aspectos de la ciberseguridad (ataques, investigaciones, defensa, empleados desleales, negligencia, etc.) llevan años siendo parte del argumento de infinidad de películas y series de TV. En la...
Daniel Pous Montardit Resiliencia, clave en sistemas Cloud-Native En el primer post de la serie Cloud-Native, ¿Qué significa que mi software sea Cloud Native?, presentamos la resiliencia como uno de los atributos fundamentales que nos ayudan a...
Telefónica Tech Boletín semanal de Ciberseguridad, 21 – 27 de enero Killnet apunta contra objetivos en España Esta semana el grupo hacktivista Killnet anunció una campaña de ataques contra Alemania, dando lugar a la realización de ataques de Denegación de Servicio...
Gonzalo Fernández Rodríguez ¿Qué significa que mi aplicación sea Cloud Native? El término Cloud Native es algo que va más allá de mover las aplicaciones alojadas en un data center a una infraestructura proporcionada por un proveedor Cloud, sea Cloud...
Telefónica Tech Boletín semanal de Ciberseguridad, 14 – 20 de enero Vulnerabilidades críticas en los router Netcomm y TP-Link Se han descubierto una serie de vulnerabilidades en los routers Netcomm y TP-Link. Por un lado, los fallos, identificados como CVE-2022-4873 y CVE-2022-4874, se tratan de un...