Impulsado por
Featured

Las tiradas de dados mantienen las claves de Bitcoin fuera de línea, pero no todo el mundo se tomará la molestia de hacerlo

Un dado estándar de seis caras genera unos 2,6 bits de información impredecible con cada tirada. Puede que no parezca mucho, pero si se repite el proceso un número suficiente de veces, esas tiradas pueden generar la aleatoriedad bruta necesaria para proteger una cartera de bitcoins sin necesidad de recurrir a software ni a componentes electrónicos.

ESCRITO POR
COMPARTIR
Las tiradas de dados mantienen las claves de Bitcoin fuera de línea, pero no todo el mundo se tomará la molestia de hacerlo

Puntos clave

  • Una tirada imparcial de un dado de seis caras proporciona unos 2,585 bits de entropía, según la fórmula de Claude Shannon.
  • La documentación de Coinkite indicaba que 50 lanzamientos de dados cumplen el estándar de 128 bits para una semilla de monedero de bitcoins.
  • El análisis «Wizard Sardine» de Kevin Loaec señaló riesgos en las herramientas de Coldcard más allá de la semilla principal.

Por qué es tan difícil predecir el resultado de una tirada de dados

Claude Shannon, el matemático que sentó las bases de la teoría de la información, utilizó la entropía para medir el grado de incertidumbre de un resultado. Con un dado de seis caras imparcial, cada cara tiene la misma probabilidad de salir: una entre seis. Eso confiere a cada tirada aproximadamente 2,585 bits de entropía. El lanzamiento de una moneda produce 1 bit, mientras que un dado de ocho caras produce 3 bits.

Image of different colored diceLa reciente polémica en torno a Coldcard ha impulsado la generación de semillas basadas en dados en las redes sociales. Algunos usuarios ahora la consideran esencial, otros afirman que protegió sus fondos, mientras que los operadores experimentados señalan que la mayoría de los recién llegados no tolerarán un proceso de configuración lento y propenso a errores.

Lo importante no es que un dado al rodar se comporte de forma aleatoria a nivel atómico. No es así. El resultado se rige por la física, pero hay demasiadas variables pequeñas que cambian a la vez como para que alguien pueda calcular el resultado de forma fiable. El dado sale de la mano con una velocidad, un ángulo, una altura y un giro determinados; luego golpea la mesa y cambia de dirección con cada rebote.

En la práctica, incluso un cambio mínimo en el lanzamiento puede producir un resultado completamente diferente. Una posición ligeramente diferente de los dedos o un lanzamiento un poco más fuerte altera la trayectoria lo suficiente como para que el número final no pueda predecirse observando el movimiento. El resultado puede ser determinista en teoría, pero para la generación de carteras, lo que importa es que un atacante no pueda reproducirlo ni calcularlo.

Convertir las tiradas de dados en datos utilizables

Un ordenador no puede utilizar directamente una lista de resultados de tiradas de dados. Las tiradas deben convertirse primero en datos binarios, y el método de conversión es importante. Un método básico de par o impar es fácil de entender, pero desperdicia gran parte de la entropía disponible. Cada tirada se reduce a un solo bit, aunque el dado haya generado unos 2,6 bits de información. Los métodos más eficientes recopilan una larga secuencia de tiradas y procesan la cadena completa, normalmente mediante una función hash criptográfica. De este modo se conserva una mayor parte de la aleatoriedad.

El mismo principio se aplica en Diceware, un método de larga tradición para crear frases de contraseña seguras, y en la generación manual de carteras de Bitcoin. Una frase típica de recuperación de cartera de 12 palabras se construye a partir de 128 bits de entropía. A unos 2,6 bits por tirada, unas 50 tiradas aleatorias proporcionan suficiente información bruta para superar ese umbral.

Coinkite, el fabricante del monedero físico Coldcard, recomienda 99 o más tiradas para los usuarios que busquen cerca de 256 bits de entropía. Esto no hace que el monedero sea el doble de difícil de usar, pero proporciona al secreto generado un margen de seguridad matemático mucho mayor.

Una prueba en el mundo real de las semillas generadas con dados

Esa distinción cobró importancia después de que Coinkite revelara un problema de firmware que se remontaba a 2021. En algunos dispositivos Coldcard, el software podía saltarse el generador interno de números aleatorios del hardware y, en su lugar, utilizar un proceso más débil vinculado a información no secreta del dispositivo.

Dado que era posible reconstruir partes de ese proceso, los atacantes pudieron reducir el número de claves posibles de la cartera en lugar de buscar en todo el espacio de claves. La vulnerabilidad se relacionó con el robo de unos 1 128,6633 BTC de aproximadamente 1 100 direcciones, a las 13:00 horas, hora del Este.

X screenshot
Fuente de la imagen: X

Las semillas de monedero creadas íntegramente a partir de un número suficiente de tiradas de dados independientes no se vieron expuestas por la misma vía. Esos usuarios habían aportado su propia entropía, por lo que el generador de hardware defectuoso no fue responsable de crear el secreto principal del monedero.

Sin embargo, esa protección solo se aplicaba a la semilla generada a partir de los dados. No protegía automáticamente el resto de claves secretas generadas por el dispositivo.

Wizard Sardine analiza la letra pequeña

El investigador de seguridad Kevin Loaec publicó el 1 de agosto en la página web de Wizard Sardine un análisis del exploit de Coldcard. Su observación más importante se refería a las funciones de Coldcard que generaban sus propios secretos de forma independiente de la semilla principal de la cartera.

«Creo que es extremadamente importante destacar que incluso los usuarios que importaron o generaron una semilla con los dados son vulnerables si utilizan las siguientes funciones», escribió Loaec en X, antes de presentar un diagrama del sistema afectado.

El diagrama muestra cómo el generador de números aleatorios defectuoso alimenta varias funciones secundarias de Coldcard. Entre ellas se incluyen la creación de carteras en papel, la clonación de dispositivos, el cifrado de sesiones USB, la función de transferencia «Secret Teleport», la creación de claves de co-firma, el generador de contraseñas integrado y los códigos de autenticación del módulo de seguridad de hardware.

X screenshot
Fuente de la imagen: publicación en X del investigador de seguridad Kevin Loaec.

Una cartera principal creada con 99 tiradas de dados permanecía en una parte separada del sistema. El problema era que las demás herramientas aún podían solicitar nuevos valores aleatorios al generador defectuoso. Como resultado, una semilla segura no garantizaba que todas las contraseñas, copias de seguridad, códigos de autenticación o claves secundarias creadas en el mismo dispositivo fueran igualmente seguras.

Por qué la mayoría de los nuevos usuarios no lanzarán los dados

La entropía generada con dados es técnicamente válida cuando se realiza correctamente, pero no es una opción predeterminada realista para la mayoría de los nuevos usuarios. Lanzar un dado 50 o 99 veces, introducir cada resultado con precisión y confirmar que no se ha omitido ni duplicado ninguna tirada requiere paciencia y mucha concentración. Un solo número mal introducido puede alterar por completo la cartera final, y la mayoría de los dispositivos no pueden distinguir si el error se debe a una tirada errónea, a un error de introducción de datos o a una mala interpretación de las instrucciones.

X screenshot
Fuente de la imagen: X

El proceso también conlleva riesgos que no existen con un generador de hardware que funcione correctamente. Los usuarios pueden anotar los resultados en un papel, fotografiarlos, introducirlos en una herramienta en línea o dejar la lista en algún lugar donde otra persona pueda encontrarla. Algunas personas lanzan el dado de forma repetitiva o controlada, utilizan un dado amañado o dañado, o se detienen antes de tiempo porque el proceso les parece excesivo. Las matemáticas pueden ser sólidas, pero la seguridad del resultado depende exclusivamente del procedimiento del usuario.

X screenshot
Fuente de la imagen: X

Por eso, tirar los dados no siempre se considera el mejor método para muchas personas, incluso entre los usuarios experimentados de bitcoin. Sustituye la confianza en un dispositivo por la confianza en un proceso manual. Para un usuario meticuloso desde el punto de vista técnico que entiende la entropía, verifica el método y mantiene privada la secuencia de tiradas, ese intercambio puede tener sentido. Para un comprador medio que configura un monedero por primera vez, esto aumenta las posibilidades de cometer un error irreparable, además de ser un proceso molesto.

X screenshot
Fuente de la imagen: X

También resulta difícil imaginar una adopción generalizada del bitcoin si esta depende de que la gente se siente a una mesa y anote los resultados de 99 tiradas de dados antes de poder recibir fondos y hacerlo de forma segura. Las prácticas de seguridad deben adaptarse a hogares reales, agendas apretadas, distracciones y usuarios que no quieren estudiar criptografía. La entropía manual debería seguir estando disponible como opción avanzada, pero el objetivo a largo plazo es contar con hardware y software que generen aleatoriedad sólida de forma correcta, expliquen claramente lo que está sucediendo y requieran el menor conocimiento especializado posible.

Lo que deben comprobar los propietarios de Coldcard

Los propietarios de dispositivos Coldcard afectados deben comprobar en primer lugar la versión de firmware instalada en el dispositivo. A continuación, deben revisar qué funciones utilizaron mientras ejecutaban el firmware anterior, en lugar de centrarse únicamente en cómo se generó la semilla principal de la cartera.

Cualquier persona que haya utilizado el dispositivo afectado para generar una cartera en papel, un secreto de clonación, una contraseña, una clave de co-firma o un código de autenticación podría tener que sustituir ese material de inmediato. Instalar la actualización evita que el mismo problema afecte a los nuevos secretos, pero no repara nada de lo creado anteriormente.

El incidente también refuerza el argumento a favor de las configuraciones de monedero con múltiples proveedores. En un sistema de multifirma, puede ser necesario utilizar dispositivos de hardware independientes de distintos fabricantes para aprobar una transacción. Esa estructura no elimina por completo la posibilidad de que se produzcan errores de firmware, pero puede evitar que un único generador de números aleatorios defectuoso ponga en peligro por sí solo todo el monedero.

Este artículo fue traducido del inglés mediante IA. La versión original en inglés es la fuente autorizada; las traducciones automáticas pueden contener imprecisiones, especialmente en la terminología legal y regulatoria.

Etiquetas en esta historia