A raíz del catastrófico bug de baja entropía en las carteras de hardware Coldcard, vinculado a robos públicamente observados a partir del 30 de julio, los poseedores de Bitcoin han comenzado a reevaluar los supuestos de confianza en sus configuraciones de carteras de hardware.
Cómo funcionó la falla de entropía de Coldcard
Los dispositivos Coldcard estaban equipados con "generadores verdaderos de números aleatorios" (TRNGs) STM32 aparentemente funcionales, que dependen de procesos físicos para producir una frase semilla imposible de adivinar.
Sin embargo, después de que el creador de Coldcard, NVK, decidiera iniciar una reescritura del firmware para cambiar de un modelo de software libre bajo licencia GPL a un modelo de solo lectura, parece haberse introducido una grave vulnerabilidad.
A partir de la versión de firmware 4.0.1, publicada en marzo de 2021, el dispositivo utilizó el PRNG Yasmarang de MicroPython en lugar de usar correctamente el RNG de hardware STM32.
La generación de números aleatorios es un problema irresoluble en la informática, razón por la cual la generación de claves privadas seguras e inaccesibles siempre debe depender hasta cierto punto de procesos físicos externos.
El uso del PRNG Yasmarang fue ampliamente caracterizado por analistas del sector como un mecanismo de respaldo preprogramado. Sin embargo, Coinkite ha disputado ahora esta caracterización en una reciente publicación en X:
La conjetura de que los Coldcards fueron programados para recurrir por defecto a un método obviamente no seguro de generación de semillas también ha desatado especulaciones en X sobre si esto era una puerta trasera colocada deliberadamente.
El periodista investigador de Bitcoin Hodlnaut especuló que el error se debió a prácticas de desarrollo descuidadas y a esfuerzos por suprimir errores mediante cambios aleatorios.
Coinkite estimó que los dispositivos Mk2 y Mk3 generaban semillas con 40 bits de entropía, mientras que el Mk4, Mk5 y Q lograban alrededor de 70 bits. Ambos valores están muy por debajo de los 128 bits necesarios para una frase semilla segura de 12 palabras.
Desde entonces, los atacantes han estado forzando con éxito claves privadas por fuerza bruta, robando más de 100 millones de dólares en BTC. La probabilidad de que una cartera sea descubierta depende de si se añadió entropía adicional mediante dados, o si se utilizó una frase de contraseña BIP-39 y una ruta no estándar.
Relacionado: Los hackers de Coldcard transfieren 64 BTC y 200 ETH a mezcladores de criptomonedas
Desde entonces, James O’Beirne ha creado un sitio web con direcciones señuelo, titulado cktripwire, para estimar qué tipos de carteras están barriendo efectivamente los atacantes.

Señuelos rastreados por cktripwire. Fuente: cktripwire.com
Cómo la entropía física salvó algunas carteras
El exploit de Coldcard ha demostrado una vez más dolorosamente uno de los principios fundamentales de la comunidad: No confíes, verifica.
Aquellos usuarios que no confiaron en una pieza de ingeniería opaca para generar la entropía para la parte más crítica de la seguridad del proceso, sino que usaron un número suficiente de lanzamientos de dados, salvaron sus monedas del exploit.
Lanzar dados es un proceso simple, visiblemente transparente que un usuario común puede auditar por sí mismo y entender intuitivamente. Verificar el TRNG, por otro lado, requeriría una inspección física detallada de la electrónica y un examen del firmware.
Mientras que algunos han utilizado los eventos recientes como pretexto para declarar el fin de la auto-custodia, seguir esta mejor práctica deja muy pocas opciones para un atacante remoto.
Si la frase semilla se genera a través de entropía física sin depender de la seguridad de la cartera de hardware, se elimina el único verdadero punto único de fallo en la generación de la cartera.
Relacionado: ¿Significan los ataques a Coldcard que todas las carteras de hardware ahora son inseguras?
La xpub y las direcciones de recepción derivadas de la semilla pueden ser verificadas importándola a otros dispositivos.
La exfiltración de nonce a través de un airgap también puede ser detectada comprobando si dos dispositivos generan la misma firma compatible con RFC 6979 cuando se les da una transacción sin firmar idéntica.
La generación de entropía segura es, por lo tanto, el requisito absoluto para una cartera segura. Varios métodos y propuestas para generarla han estado circulando en X desde que el exploit de Coldcard se hizo público.
El método más popular es verificar cruzadamente la capacidad del dispositivo para convertir correctamente las caras de los dados en una frase semilla BIP-39 aplicando un hash SHA-256. Utilizar más de 100 lanzamientos de dados es suficiente para generar entropía para una semilla de 24 palabras.
Los métodos simples en papel, como la tabla publicada por Bitbox, dividen el espacio de palabras semilla BIP-39 de modo que una combinación de seis lanzamientos de dados y un lanzamiento de moneda puede asignarse directamente a una palabra semilla sin usar electrónica.
Plantillas más sofisticadas, como la hoja de trabajo de corrección de sesgo en dados codex32, utilizan un extractor de van Neumann que se puede calcular a mano para generar una frase semilla segura incluso con dados sesgados.
Una alternativa a lanzar dados es imprimir las palabras semilla BIP-39, cortarlas en pequeños trozos de papel del mismo tamaño, barajarlos a fondo y luego extraer aleatoriamente 24 palabras. Productos como Seedsticks o Entropia hacen esto más conveniente y robusto.
Hardware especializado como Frostsnap intenta distribuir de manera verificable la generación de entropía entre dispositivos.
Algunos usuarios se han dedicado a diseñar sus propios dispositivos de entropía física que pueden generar una frase semilla casi tan rápido como una pieza de hardware electrónico.
Relacionado: ¿Significan los ataques a Coldcard que todas las carteras de hardware ahora son inseguras?





