Seguridad

Cómo recuperar claves de Wallets de Criptomonedas Exodus : «Not Your Keys, Not Your Coins»… ¿o tal vez sí?

Tuve mi primer ordenador a los 16 años. No tenía disco duro. Solo una enorme
disquetera de 5¼ pulgadas y MS-DOS. No aprendí a programar entonces, pero hice
algo que acabaría marcando mi forma de entender la informática: me leí la ayuda
de prácticamente todos los comandos. Quería saber qué hacía cada instrucción, de dónde venían los datos, adónde iban
y qué relación existía entre lo que escribía en la consola y lo que terminaba
almacenado en aquel disco. 

Figura 1: Cómo recuperar claves de Wallets de Criptomonedas Exodus.
 «Not Your Keys, Not Your Coins»… ¿o tal vez sí?
Así aprendí a “robar” los programas de diseño gráfico
para poder instalarlos en mi primer ordenador que me compré con 18 años,
copiando los archivos disquete a disquete, copiando las instrucciones de archivos
.ini de Windows, creando directorios… Aprendí a lo bruto!
Parte I: La movida.

Décadas después, el mundo cripto me ha devuelto exactamente esa sensación.
Existe una idea muy asociada a Warren Buffett: no pongas dinero en algo que no
comprendes. Yo descubrí hasta qué punto eso era cierto cuando sufrí mi primer
problema serio con una wallet.

Utilizaba Exodus con pocos fondos para experimentar. En una ocasión quise
instalarla como extensión en un navegador. No encontré una extensión oficial en
la web de Exodus, pero sí una que aparentaba serlo en el marketplace del
navegador. Introduje mis 12 palabras: No funcionó. Lo intenté varias veces y me
marché a trabajar. Horas después descubrí que los fondos habían desaparecido.
Ahí aprendí mi primera gran lección sobre autocustodia.

Yo había configurado una contraseña en Exodus y, de alguna manera, había dado
por supuesto que aquella contraseña protegía la wallet en cualquier lugar, como
sucede con cualquier cuenta en la nube. No comprendía todavía que aquella
contraseña protegía fundamentalmente esa instalación local, mientras que
quien dispusiera de mis 12 palabras podía reconstruir el acceso a los activos
desde otra aplicación compatible. La lección fue cara, aunque la cantidad fuera
pequeña: las verdaderas llaves eran aquellas palabras.

Pasó el tiempo. Seguí leyendo sobre Bitcoin, blockchain, DeFi y wallets, hasta que
otro problema volvió a empujarme hacia dentro de la tecnología. Durante unas pruebas con una tarjeta de débito vinculada a criptomonedas tuve que realizar una conexión que acabó provocando avisos de seguridad en mi wallet de pruebas de Exodus. La aplicación terminó restringiendo determinadas operaciones y el soporte técnico no conseguía ofrecerme una solución clara para mover algunos activos.

Ante la impotencia hice algo muy sencillo: restauré las mismas 12 palabras en
otra wallet compatible, a ver si funcionaba. Los fondos estaban ahí. Podía
operarlos
. Y entonces comprendí de verdad algo que hasta ese momento solo
conocía superficialmente: la wallet no es el patrimonio. La wallet es una
herramienta para acceder, mediante unas claves, a activos registrados en
blockchain.

Las mismas 12 palabras podían reconstruir las claves desde aplicaciones
diferentes. Aquello despertó una pregunta mucho más interesante: ¿qué relación
existe entre doce palabras que un ser humano puede escribir en un papel y las
enormes cadenas de números que terminan controlando direcciones
criptográficas? Ahí conecté el problema con otra investigación personal que
llevaba desarrollando desde hacía muchos años: la sucesión de los números
primos.


BIP-39
utiliza una lista de 2.048 palabras. Empecé a estudiar sus posiciones y a
representarlas mediante coordenadas asociadas a números primos. Esa
representación no rompe BIP-39 ni reduce mágicamente su seguridad; me
proporcionó, sobre todo, una forma matemática de estudiar las palabras, sus
posiciones y las combinaciones válidas.

Figura 3: “A los monos háblales de plátanos” o sustituir números por
palabras como la manera más fácil de ayudar a recordar una clave,
 además de añadir conceptualmente un punto más de “dificultad”
 a la hora de “desencriptarla”.

Con ayuda de un asistente de programación construí herramientas capaces de
generar frases BIP-39 válidas y empecé a comprender algo que antes me parecía
casi mágico: las palabras son una representación amigable para humanos de
información binaria generada bajo reglas matemáticas muy concretas (a los
monos háblales de plátanos). 

Figura 4: 2048 palabras producen un número exageradamente grande de posibles
combinaciones, pero es un número finito, concreto. La posibilidad de
que tu frase semilla NO coincida con la frase semilla que obtenga
otro usuario depende únicamente de capacidad de cómputo.
Detrás de aquel simple papel con doce palabras
había todo un universo. Y entonces decidí intentar el camino contrario. No
preguntarme solamente cómo se genera una frase válida, sino:
¿Qué información
deja una aplicación de wallet en un ordenador y hasta dónde puede llevarnos
esa información?

Parte II. La investigación técnica

Empecé por Exodus Desktop en Windows. Analicé sus carpetas locales, sus copias de seguridad y posteriormente parte del
código de la propia aplicación. Dos archivos aparecieron una y otra vez en la
investigación:


  • passphrase.json
  • seed.seco

Construí una herramienta experimental para estudiar esos archivos en mis propias
wallets de pruebas. El resultado fue sorprendente. En determinados estados
locales de Exodus sin contraseña configurada, el material almacenado permite
descifrar una estructura interna que contiene información suficiente para
reconstruir la frase BIP-39.

Figura 5 El guardado local de archivos que contengan información de
cualquier tipo de login es el eslabón más débil de la cadena.
A partir de descifrar el mecanismo de generación de la clave,
puede recorrerse el camino a la inversa:

La aplicación que desarrollé no se limita a mostrar doce palabras. Reconstruye la
información BIP-39, comprueba que reproduce correctamente el seed y deriva
una dirección Ethereum estándar (funcionaría también con otras direcciones de
criptomoneda). 

Figura 6: No es magia, es cálculo.
Después utiliza una dirección pública conocida únicamente como
verificador del resultado. En mis pruebas apareció:


BIP39 = OK
MATCH
Eso es importante porque también establece lo que no he descubierto. No se
pueden obtener las 12 palabras simplemente mirando una dirección pública. No
he roto BIP-39. No he reducido mediante números primos el enorme espacio
criptográfico de búsqueda hasta hacerlo atacable. El elemento decisivo de esta
recuperación es el material criptográfico que Exodus conserva localmente en
determinados estados de la aplicación. Quedaba entonces una pregunta fundamental: 
¿Qué sucede cuando el usuario
establece una contraseña? 
Realizamos un experimento controlado con una
wallet nueva y sin fondos. En el primer estado, sin contraseña, estaban presentes
passphrase.json y seed.seco. La recuperación funcionaba. Después establecimos
una contraseña: passphrase.json desapareció y seed.seco cambió. Ejecutamos
de nuevo la herramienta sobre una copia exacta de aquel estado. Esta vez no pudo
recuperar la frase
.

Posteriormente restauramos esa misma wallet mediante sus 12 palabras, sin
establecer nuevamente contraseña. Exodus generó un nuevo passphrase.json y
un nuevo seed.seco. La herramienta volvió a funcionar: 


BIP39 = OK. MATCH. 
Por tanto, el experimento produjo un ciclo muy claro:

  • Wallet sin contraseña → recuperación posible con el método estudiado.
  • Wallet protegida por contraseña → el método deja de funcionar.
  • Wallet restaurada de nuevo sin contraseña → recuperación posible otra vez.

Y esto establece un límite esencial de mi investigación: hasta ahora no he
demostrado ningún método para saltarse una contraseña de Exodus
configurada correctamente. De hecho, nuestras pruebas muestran
precisamente que establecerla bloquea el procedimiento que hemos reproducido.
Pero aparece una segunda cuestión: si antes de establecer esa contraseña ya se
generaron o conservaron copias locales correspondientes al estado anterior,
proteger la wallet posteriormente no significa necesariamente que aquellas
copias históricas hayan desaparecido. Y ahí podría encontrarse la verdadera
superficie de riesgo. 

Una posible mejora de diseño sería garantizar que el material
sensible quede protegido antes de que se cree o conserve el primer estado
local recuperable, ya sea mediante contraseña u otro sistema de protección
adecuado.

Esta investigación nació intentando recuperar una wallet y ha terminado
recordándome una idea básica: “Not your keys, not your coins” no significa
únicamente poseer las claves. Significa asumir la responsabilidad de
protegerlas. Durante décadas hemos delegado la custodia de nuestro patrimonio
en terceros. La autocustodia nos permite recuperar una parte de esa soberanía,
pero también devuelve al propietario una enorme responsabilidad. 

Y resulta
fascinante que algo tan importante pueda quedar representado por 12 ó 24
palabras escritas en un pequeño papel (recuerda, a los monos háblales de
plátanos). Detrás de esas palabras existe criptografía, entropía, funciones hash,
derivación de claves y una enorme estructura matemática. No necesitamos
comprenderla completamente para utilizarla. Pero sí necesitamos comprender el
valor de aquello que estamos custodiando.

Esta investigación se encuentra todavía en una fase inicial. El primer resultado
reproducible lo he obtenido estudiando Exodus Desktop en Windows, y las
conclusiones deben limitarse por ahora a ese entorno y a las versiones analizadas.
El siguiente paso será ampliar la metodología, de forma controlada y responsable,
a otras wallets del mercado para estudiar cómo almacenan y protegen localmente
el material necesario para recuperar una frase semilla.

Parte III: Criptografía y Criptomonedas
Puede que Exodus sea un
caso particular. Puede que encontremos comportamientos similares en otras
aplicaciones. O puede que encontremos arquitecturas completamente diferentes.
Eso es precisamente lo que toca investigar ahora.
Hay que recordar también que este año, el equipo de Google Quantum AI, junto a la Fundación Ethereum, publicó en marzo otro paper clave titulado «Securing Elliptic Curve Cryptocurrencies against Quantum Vulnerabilities«. En este caso, lograron reducir a menos de 500.000 qubits físicos el requisito para romper la criptografía de curva elíptica (ECDLP-256) que protege a Bitcoin y Ethereum, permitiendo un ataque en cuestión de minutos.
Éste es un tema delicado, ya que obliga a cambiar las bases del código de Bitcoin y esto requeriría un «Hard Fork» que afectaría a toda la red, desde desarrolladores hasta mineros, ya hay propuestas concretas sobre la mesa. Recientemente, investigadores de Blockstream han planteado una solución: migrar hacia firmas basadas en hash, con algoritmos de Post-Quanum Cryptography específicamente un esquema basado en SLH-DSA (Formerly SPHINCS+)
Parte IV: Conclusiones finales sobre la investigación
A esta investigación se suma una posibilidad especialmente esperanzadora: 
Que determinados usuarios que hayan perdido sus 12 ó 24 palabras semilla puedan llegar a recuperarlas a partir de datos locales que todavía conserven y, con ellas, recuperar el acceso a activos que consideraban perdidos.
Pero
esa oportunidad abre al mismo tiempo un importante desafío jurídico y fiscal. Una
herramienta capaz de recuperar credenciales de autocustodia no debería
utilizarse simplemente porque alguien afirme ser propietario de una wallet: habría
que establecer procedimientos sólidos para acreditar la titularidad o el control
legítimo de los activos, obtener una autorización expresa para intervenir sobre
los dispositivos y archivos y documentar la cadena de custodia y todo el
proceso de recuperación ante notario.
A ello se añade la cuestión fiscal y
regulatoria, que dependerá de la jurisdicción de residencia del usuario y de las
circunstancias concretas: procedencia de los activos, documentación histórica,
obligaciones de declaración, eventual tributación y justificación de movimientos
posteriores. 
Por eso, convertir esta investigación en un servicio real de
recuperación exigiría desarrollar, junto al procedimiento técnico, un protocolo
jurídico, de cumplimiento y trazabilidad que permita distinguir una
recuperación legítima de un intento de acceso a patrimonio ajeno. Poder
devolver a una persona el acceso a un patrimonio que creía perdido sería una
magnífica noticia; hacerlo con suficientes garantías para todas las partes
constituye, al mismo tiempo, uno de los grandes desafíos que abre esta
investigación.

Mientras, aquella sensación que tenía a los 16 años ha vuelto: abrir una consola,
no entender todavía todo lo que está ocurriendo y seguir investigando hasta
descubrir de dónde vienen los datos, adónde van y qué sucede realmente
entre medias.

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.