-
El hackeo a Coldcard no solo ataca semillas vulnerables: también fuerza passphrases cortas.
-
La passphrase (BIP-39) es una palabra extra y opcional que se suma a la semilla de 12 o 24 palabras.
El youtuber y educador de Bitcoin conocido como ‘BTC Sessions’ confirmó este 2 de agosto el primer robo de fondos de una Coldcard Mk3 protegida con una passphrase de dos palabras, según relató en su cuenta de X.
Ese relato reabre una pregunta que CriptoNoticias planteó al cubrir la falla de aleatoriedad en el firmware del Coldcard Mk3, la hardware wallet fabricada por la empresa canadiense Coinkite: qué tan sólida es, en la práctica, una passphrase basada en el estándar BIP-39, la capa de seguridad adicional que la propia compañía recomendó como paliativo inmediato para los usuarios afectados por ese fallo.
La passphrase es una palabra o frase adicional y opcional que se combina con la frase semilla, las 12 o 24 palabras a partir de las cuales se genera una wallet de Bitcoin, esto permite generar una wallet completamente distinta.
Quien tenga la semilla completa pero no conozca esa palabra extra no llega a los fondos. Esta cualidad es la que promete una capa adicional de seguridad, dado que, incluso si alguien roba o reconstruye la semilla completa, todavía necesita adivinar la passphrase para vulnerar esa wallet.
¿Cómo un hacker podría forzar la passphrase?
Para intentar adivinarla por fuerza bruta, el hacker necesita primero tener la frase semilla completa, algo que en este caso ya logró explotando la falla de aleatoriedad de los dispositivos Coldcard. Con la semilla en mano, el ataque consiste en probar, una por una, distintas passphrases candidatas.
Para cada intento, el software que usa el hacker ejecuta una función criptográfica llamada PBKDF2-HMAC-SHA512 (definida en el estándar BIP-39, el mismo que establece cómo se genera la frase semilla), que toma la frase semilla y la passphrase candidata y repite un cálculo matemático 2.048 veces seguidas. Cada una de esas repeticiones depende del resultado de la repetición anterior: la función no puede ejecutar la repetición número 2.000 sin haber ejecutado antes, en orden, las 1.999 anteriores.
Esta técnica de repetir el cálculo se llama estiramiento de clave y funciona como una caja fuerte que, en lugar de abrirse con una sola combinación, obliga a quien intenta abrirla a calcular 2.048 combinaciones una detrás de la otra. El hacker puede seguir probando otras passphrases distintas al mismo tiempo (cada una con su propia cadena de 2.048 cálculos), pero cada passphrase individual le exige ese trabajo completo.
Por este diseño, adivinar una sola passphrase le exige al hacker miles de veces más cómputo que si la función hiciera un solo cálculo en lugar de 2.048. Multiplicado por la enorme cantidad de passphrases posibles que existen, el ataque se vuelve extremadamente lento y costoso para el hacker, aunque no imposible si la passphrase elegida es corta o predecible.
Al terminar las 2.048 repeticiones, la función PBKDF2-HMAC-SHA512 entrega como resultado una seguidilla de datos de 512 bits que funciona como una nueva semilla. A partir de esa semilla, el software del hacker sigue el estándar BIP-32 (que define cómo generar todas las direcciones de una wallet a partir de una única semilla) para calcular las direcciones que le corresponderían a esa wallet, y las compara con la cadena de bloques para ver si alguna tiene fondos. Si el hacker no encuentra fondos en ninguna, descarta la passphrase probada y repite todo el proceso, con sus 2.048 pasos, para la siguiente candidata.
¿Cuán rápido podría un hacker adivinar la passphrase?
La velocidad a la que se puede repetir ese proceso depende del hardware disponible y de la entropía, es decir, la cantidad de combinaciones posibles de la passphrase elegida.
La siguiente tabla elaborada por Miguel Vidal, cofundador de la empresa tecnológica FLOSSistems, permite conocer estimativamente cuánto tiempo demandaría romper una passphrase según su longitud y el tipo de caracteres usados: la primera columna muestra la cantidad de caracteres de la passphrase, y las columnas siguientes suman distintos tipos de caracteres (solo dígitos, solo minúsculas, mayúsculas y minúsculas combinadas, alfanumérico, y alfanumérico con símbolos). Cada casilla indica cuánto tardaría en romperse esa combinación asumiendo un atacante con 500 tarjetas gráficas RTX 5090 trabajando en paralelo, un poder de cómputo equivalente a unos 267 dólares por hora de alquiler en la nube, según el propio cálculo de Vidal.

Con los parámetros de Vidal, una passphrase de 8 caracteres alfanuméricos cae en 3 días; una de 12 caracteres con mayúsculas y minúsculas tarda unos 12 mil años; y recién a partir de los 16 caracteres, combinando mayúsculas, minúsculas, números y símbolos, romperla por fuerza bruta demandaría más tiempo que la edad del universo.
¿Es realmente fuerza bruta lo que está pasando?
Un argumento que circuló en un hilo de Reddit matiza cuánto de fuerza bruta hay realmente en juego en el hackeo a Coldcard. Según esa lectura, el o los atacantes no estarían probando passphrases al azar: su estrategia consistiría en generar y comprobar semillas vulnerables lo más rápido posible, y, en ese ejercicio, agregar una passphrase obliga a derivar y verificar una wallet adicional por cada candidata, lo que multiplica el costo de cómputo cuando se aplica a millones de semillas. Por esa razón, el argumento sostiene que en la práctica el atacante solo revisaría una lista muy corta de las passphrases más comunes, y que la mayoría de las víctimas terminará siendo gente que directamente no usó una passphrase.
Esa lectura no contradice el caso reportado por BTC Sessions, ya que dos «palabras comunes» encajan justo en esa lista corta, pero sí matiza la escala real del fenómeno: no se trataría de un ataque de fuerza bruta amplio contra millones de passphrases, sino de probar un puñado de las que serían más obvias.
Los antecedentes más citados de robos por fuerza bruta contra frases de este tipo corresponden, en realidad, a las brainwallets, un mecanismo distinto y más débil: ahí la clave privada se deriva directamente de un hash de la frase elegida por el usuario, sin el estiramiento de PBKDF2 que sí aplica BIP-39. Entre 2011 y 2016 se robaron así cerca de 1.800 BTC de cientos de direcciones generadas con frases de diccionario, según reportó Ars Technica en su momento.
El caso documentado más cercano a una passphrase BIP-39 real es el de un usuario de la hadrware wallet Trezor que perdió acceso a sus fondos y los recuperó gracias al servicio KeychainX, que rompió su passphrase en 24 horas ajustando patrones de contraseñas típicos a partir de pistas que el propio dueño aportó. No se trató, en ese caso, de adivinar una passphrase completamente desconocida desde cero.
Herramientas como BTCRecover, diseñadas justamente para este tipo de recuperación, confirman ese patrón: sirven para reconstruir una passphrase parcialmente recordada por su propio dueño, no para romper una desconocida por completo.
De modo tal, no existen, hasta ahora, casos documentados en los que una passphrase BIP-39 aleatoria y de alta entropía, completamente desconocida para el atacante, haya sido rota por fuerza bruta. Los éxitos conocidos involucraron passphrases débiles, previsibles, o algún tipo de información parcial en manos de quien intentó romperlas.








