¿Qué tan difícil es adivinar tu frase de recuperación? ColdCard lo hizo fácil

FelixFelix
/Actualizado el 5 ago 2026
¿Qué tan difícil es adivinar tu frase de recuperación? ColdCard lo hizo fácil

Puntos clave

• Una actualización de firmware defectuosa de ColdCard recurrió silenciosamente del generador de números aleatorios por hardware a uno pseudoaleatorio por software

• Eso redujo el conjunto de posibles frases de recuperación de 2^256 a aproximadamente 2^40 (casi 1.1 billones) en Mk2/Mk3, y alrededor de 2^72 en Mk4/Mk5/Q

• Los atacantes nunca vulneraron el dispositivo; simplemente adivinaron frases de recuperación que ya no eran difíciles de adivinar

• Una frase BIP-39 de 24 palabras generada correctamente es unas 5×10^60 veces más difícil de colisionar que una explosión de rayos gamma de extinción masiva en el próximo segundo

• Un generador de números aleatorios verdaderos se basa en ruido físico, por lo que conocer el modelo del dispositivo, el número de serie, el tiempo de arranque y el código fuente completo sigue sin llevar a ninguna parte a un atacante

Este artículo está escrito como una explicación sencilla. Para que sea fácil de seguir, algunos detalles técnicos se han simplificado o convertido en analogías, y pueden diferir de cómo funcionan las cosas en la realidad. Si necesita tomar decisiones sobre la seguridad de activos reales, consulte los anuncios oficiales y a un profesional.

El 30 de julio de 2026, ocurrió algo inusual en la cadena de Bitcoin: en un lapso de apenas 15 minutos, 500 direcciones enviaron aproximadamente 594.48 BTC (unos 38 millones de USD) a una sola dirección. Poco después, cerca de 562 BTC de esa cantidad se movieron a otra dirección. Claramente esto no era una actividad de transferencia normal, y más tarde se confirmó que se trataba de un hacker moviendo fondos robados. Registro en cadena

500 source addressesone consolidation address (~594.48 BTC / ~$38M)a second address (~562 BTC)

A medida que las víctimas se presentaban una tras otra, surgió un hilo conductor: todas habían utilizado una billetera de hardware Coldcard. Ese mismo día, Coinkite, el fabricante de Coldcard, emitió una advertencia de seguridad, y tanto su investigación oficial como análisis técnicos independientes lo confirmaron: algo realmente había fallado con la billetera ColdCard. El problema radicaba en cómo se generaban los números aleatorios, lo que significaba que un atacante ni siquiera necesitaba hackear físicamente una Coldcard. Solo tenía que adivinar la frase de recuperación del usuario para vaciar los fondos.

Entonces, ¿qué pasó realmente aquí?

Todo este incidente falló en un paso específico: la generación de la frase de recuperación.

Aquí va una analogía. Normalmente, cuando una billetera de hardware genera una frase de recuperación, es como meter la mano en una bóveda casi infinita de llaves, sacar una al azar y entregártela; esa llave abre una caja fuerte que te pertenece solo a ti. Pero el software de ColdCard tenía un error, y el rango del cual obtenía las llaves se redujo de toda esa bóveda a un solo cajón pequeño. Lo único que tienes que hacer es probar las llaves de ese cajón una por una: cada llave que abra algo, lo vacías.

Por supuesto, esta analogía no es del todo exacta, pero el principio se mantiene. Más precisamente: una actualización defectuosa por parte del equipo de firmware de ColdCard hizo que, al generar una frase de recuperación, la billetera no pudiera llamar al generador de números aleatorios de hardware más seguro y, en su lugar, utilizara un generador de números aleatorios de software "pseudoaleatorio". La "contraseña" que produjo, es decir, la frase de recuperación, simplemente no era lo suficientemente segura, y eso fue lo que condujo a este incidente.

Llegados a este punto, tal vez te preguntes: ¿qué tiene que ver mi frase de recuperación con los números aleatorios? ¿Cómo encontró el hacker la contraseña de la caja fuerte? ¿Y qué es exactamente un generador de números aleatorios? Espera, déjame explicártelo paso a paso.

¿Qué hay realmente detrás de una frase de recuperación?

¿Por qué una frase de recuperación demuestra que los activos son tuyos?

Antes de adentrarnos en de dónde viene una frase de recuperación, necesitamos aclarar una cosa: la relación entre tus activos, tu billetera y tu frase de recuperación.

En realidad, una frase de recuperación no se parece mucho a la llave de una caja fuerte. En el diseño subyacente de una blockchain, tus activos han estado a la vista de todos en la cadena todo el tiempo, como el dinero en efectivo en un banco. El efectivo en sí no tiene impreso el nombre de un propietario, todos pueden verlo y, en teoría, cualquiera tiene derecho a hacer algo con él. Pero, obviamente, no cualquiera puede retirar montos ilimitados. Eso se debe a que, antes de que puedas transferir algo, la cadena te pide que presentes una "prueba" que demuestre que posees estos activos y que te pertenecen, y esa "prueba" es tu frase de recuperación.

En otras palabras, quien ingrese la frase de recuperación en la cadena, los activos a los que apunta son suyos, incluso si la persona que la opera no eres tú, porque todo lo que ve la cadena es que alguien presentó una prueba válida de propiedad.

Alguien inicia una transferenciala cadena pide una pruebauna firma derivada de la frase de recuperaciónverificado, los activos se pueden mover

La cadena confía en las pruebas, no en las personas.

Así que una frase de recuperación se parece más, por naturaleza, a una escritura de propiedad o a un sello oficial que lleva un "número especial". El sello en sí es fácil de falsificar; lo que realmente lo hace a prueba de manipulaciones es el "número" especial que lleva y, por diseño, es prácticamente imposible que cualquier otra persona adivine ese número.

De modo que toda la cuestión se reduce a esa cadena de "números". ¿De dónde viene? ¿Y cómo mantiene tus activos seguros?

¿Cómo pasa una frase de recuperación de números a palabras?

Todos sabemos que las computadoras funcionan con código binario. Texto, imágenes, contraseñas: una vez que están dentro de una computadora, todo termina convertido en una cadena de ceros y unos. Las frases de recuperación no son la excepción.

Por ejemplo, dentro de una computadora podría verse así:

010101000010

Pero podrías preguntar: una frase de recuperación es un montón de palabras en inglés, no números. ¿Cómo demonios sale eso de esa cadena de ceros y unos?

En realidad no es tan complicado. Empezamos preparando un "diccionario" que indica qué fragmento de dígitos se corresponde con qué palabra. Para que sea fácil de seguir, armemos un pequeño diccionario con solo 16 palabras:

BinarioPalabra en inglésBinarioPalabra en inglés
0000apple1000umbrella
0001book1001candle
0010moon1010river
0011pocket1011star
0100coffee1100bread
0101squirrel1101forest
0110train1110clock
0111ocean1111window

A continuación, cortamos esa cadena de código en tres partes:

0101 | 0100 | 0010

Luego tomamos esos tres fragmentos y los buscamos en el diccionario:

0101 → squirrel
0100 → coffee
0010 → moon

Y así de simple, una cadena binaria que era casi imposible de leer se convierte en tres palabras fáciles de anotar:

squirrel coffee moon

Ese es el principio fundamental detrás de una frase de recuperación: no es un conjunto de palabras que aparecieron de la nada. Es un número largo, cortado en muchos fragmentos pequeños, donde cada fragmento se traduce a una palabra utilizando una lista de palabras fija.

Por supuesto, una frase de recuperación real es un poco más compleja que este ejemplo: la lista de palabras es más grande, el número es más largo y se agrega información de suma de verificación (checksum). Pero la lógica central no cambia. Una frase de recuperación es simplemente otra forma de expresar esa cadena de números, una que sea más fácil de anotar, almacenar y restaurar para los humanos.

¿Qué tan difícil es adivinar 24 palabras?

Dejando eso de lado, finalmente podemos hablar de las frases de recuperación reales. Hoy en día existen bastantes estándares para generarlas, los cuales puedes ver simplemente como si hubiera muchos "diccionarios" diferentes. Tomemos el más utilizado, BIP-39, y hablemos de dónde proviene realmente la seguridad de una frase de recuperación.

El diccionario de BIP-39 contiene exactamente 2,048 palabras, mucho más que el que usamos en nuestro ejemplo, pero funciona prácticamente de la misma manera. También está extraído de una cadena de código binario muy larga. Específicamente, proviene de una cadena de 264 bits, donde cada 11 bits representan una palabra, y cada palabra tiene 2^11, es decir, 2,048 posibilidades, coincidiendo exactamente con las 2,048 palabras del diccionario.

Pero las computadoras trabajan en binario, y los números aleatorios que generan solo pueden venir en múltiplos de 2, por lo que no puedes generar un número aleatorio de 264 bits directamente. Lo que podemos hacer es hacer que genere primero un número aleatorio de 256 bits y luego mover los primeros 8 dígitos al final. Ahora tenemos 264 bits, suficientes para una frase de recuperación de 24 palabras.

¿Recuerdas lo que repasamos hace un momento? La seguridad de la frase de recuperación, nuestro "sello oficial", proviene de una cadena especial de números, y ese número es el número aleatorio detrás de la frase. También dijimos que el sello es seguro precisamente porque nadie puede adivinar qué número hay en él. Obviamente no vas a reclamar los activos de alguien adivinando un número incorrecto. Entonces, ¿qué tan difícil es adivinar ese número? Se reduce a la longitud del número aleatorio: un número aleatorio de 256 bits tiene nada menos que 2^256 posibilidades, lo que significa 2^256 posibles frases de recuperación, o 2^256 posibles direcciones de billetera.

¿Qué tan grande es ese número? El número de partículas elementales en el universo observable suele estimarse en alrededor de 10^80, mientras que 2^256 ≈ 10^77. En otras palabras, podríamos entregarle una dirección de billetera a prácticamente todas las partículas observables del universo. Y toda la población humana es de apenas unos 2^33, por lo que cada persona aún podría recibir aproximadamente 2^223 direcciones, lo que equivale a un 1 seguido de 67 ceros:

10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000

Por lo tanto, que un hacker intente adivinar tu frase de recuperación es como intentar elegir la única dirección que tiene saldo entre todas ellas. Eso es extraordinariamente difícil.

Pero a estas alturas alguien podría preguntar: ¿podría una computadora generar accidentalmente dos direcciones de billetera idénticas? Entonces, quien haya llegado segundo podría simplemente llevarse los fondos de la primera persona, ¿verdad? Es una buena pregunta y, técnicamente, esa posibilidad existe. Sin embargo, en el mundo real, eso no va a suceder. Para dos frases de recuperación BIP-39 de 24 palabras generadas de forma independiente y correcta, las probabilidades de que sean idénticas son 1 / 2^256 ≈ 8.6 × 10^-78.

En comparación, documentos confiables estiman que las probabilidades de que la Tierra sea golpeada en el próximo segundo por un brote de rayos gamma lo suficientemente potente como para desencadenar una extinción masiva son de aproximadamente 4.4 × 10^-17. Lo que significa que una colisión de frases de recuperación es aproximadamente 5 × 10^60 veces menos probable que un evento de extinción masiva.

Lo cual te da una idea de lo difícil que es adivinar una frase de recuperación.

¿Entonces qué fue exactamente lo que ColdCard hizo mal?

De 2^256 a 2^40

Una vez que entiendes lo que hay realmente detrás de una frase de recuperación, es fácil comprender en qué se equivocó ColdCard.

Una actualización defectuosa por parte del equipo de ColdCard provocó que, al generar frases de recuperación, lo que debían ser 2^256 frases posibles terminaran siendo solo 2^40, una diferencia abismal en escala. Podrías preguntarte cómo un número aleatorio de 40 bits produce 24 palabras, pero no te detengas en eso. Todo lo que necesitas saber es que este error hizo que fuera drásticamente más probable que se adivinara una dirección de billetera generada por ColdCard.

Direcciones realmente generadas, solo unasMientras que una implementación correcta habría tenido
2^40 = 1,099,511,627,7762^256 = 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936

Vale la pena ser precisos con respecto al alcance: los diferentes modelos se vieron afectados en diferentes grados. Los aproximadamente 40 bits de los que se habla aquí aplican principalmente a las versiones Mk2 y Mk3, mientras que la estimación para las Mk4, Mk5 y Q es de alrededor de 72 bits.

Si pones ambas cifras una al lado de la otra, la respuesta salta a la vista: en total, solo existían 1,099,511,627,776 frases de recuperación posibles saliendo de ColdCard. Para un hacker, todo lo que se necesita es una máquina de alto rendimiento procesándolas una por una, y existe una probabilidad real de marcharse con los fondos. Sigue siendo un trabajo difícil, pero ya no está en una escala que la humanidad no pueda manejar en esta etapa.

Incluso en ese punto, las cosas aún no eran catastróficas. 1,099,511,627,776 sigue siendo un número bastante grande y, sumado a la latencia de la red, es posible que un hacker hubiera necesitado años de intentos antes de dar con una dirección que tuviera saldo.

Desafortunadamente, el error de ColdCard también significó que incluso el método para generar esos valores posibles era rastreable, lo que redujo la dificultad enormemente.

¿Por qué se pueden adivinar los números aleatorios generados por software?

Se debe a que los números aleatorios que ColdCard usaba para las frases de recuperación provenían de un "generador de números aleatorios por software" y, estrictamente hablando, cada generador de ese tipo es "pseudoaleatorio" y su algoritmo se puede rastrear. ¿Por qué digo esto?

Primero, piensa en lo que es realmente la aleatoriedad. Digamos que estamos lanzando una moneda al aire. Normalmente decimos que cara y cruz tienen cada una un 50% de probabilidad y salen al azar. Eso se debe a que, mientras la moneda gira en el aire, su trayectoria está moldeada por todo tipo de factores: qué tan fuerte la lanzamos, la gravedad de la Tierra, la fuerza y dirección del aire acondicionado en la habitación, el efecto Coriolis, e incluso las pequeñas vibraciones por el movimiento en la corteza terrestre, factores en los que podemos pensar y muchos otros en los que no. Juntos, hacen que sea imposible para nosotros calcular la trayectoria de la moneda en el aire, por lo que no podemos deducir el resultado y aceptamos que el lanzamiento de una moneda es "aleatorio".

Pero un "generador de números aleatorios por software" se ejecuta en un algoritmo fijo. En términos generales, toma un puñado de condiciones iniciales, las procesa a través de un algoritmo fijo y produce un número aleatorio fijo. Dicho de otro modo: mientras conozcamos esas pocas condiciones iniciales, sabremos qué número aleatorio producirá y, por lo tanto, cuál será la frase de recuperación.

Y casualmente, las condiciones iniciales que la gente suele utilizar son cosas como la marca de tiempo (timestamp) en la generación, la marca de tiempo de cuándo se encendió el dispositivo, el número de serie del dispositivo, etcétera. Eso significa que un hacker solo tiene que hacer conjeturas razonables sobre esos números y luego diseñar un algoritmo para descifrar las frases de recuperación que ColdCard generó. En otras palabras, el hacker no necesita adivinar a ciegas en absoluto, porque la forma en que se genera la frase sigue un patrón desde el principio.

¿Cómo mantiene realmente la seguridad un generador de números aleatorios por hardware?

La raíz de todo esto es que ColdCard no utilizó un "generador de números verdaderamente aleatorios", refiriéndose al generador de números aleatorios por hardware dentro del chip del elemento seguro. Como dijimos anteriormente, un PRNG por software ordinario es una fórmula determinista:

device ID + time + algorithmrandom number

Si un atacante puede enumerar los ID de los dispositivos y el momento exacto, puede volver a calcular cada resultado.

Un generador de números verdaderamente aleatorios, por otro lado, se basa en fenómenos físicos, tales como:

  • ruido térmico en circuitos;
  • fluctuación de los osciladores (jitter);
  • metaestabilidad de transistores;
  • ruido de avalancha;
  • ruido cuántico en algunos dispositivos;
  • errores de memoria aleatorios causados por rayos cósmicos.

y así sucesivamente, para generar la frase de recuperación, muy parecido al lanzamiento de una moneda, donde muchos de los factores intervinientes escapan por completo a la predicción humana. El proceso se convierte en:

unpredictable physical noisesample and digitizecondition and hashseed a cryptographically secure PRNGgenerate the recovery phrase

Incluso si un atacante conoce el modelo del dispositivo, el número de serie, la hora de inicio y todo el código fuente, aún no puede deducir hacia atrás la forma de onda exacta del ruido del circuito en ese momento. Así es como se ve la aleatoriedad verdaderamente confiable.

Entropía, la medida de la aleatoriedad

¿Qué es la entropía?

La palabra "entropía" suena compleja, pero puedes pensar en ella de forma sencilla: antes de que se revele la respuesta, ¿cuántos resultados posibles hay?

Una moneda normal tiene dos resultados posibles, cara y sello. Lanzarla una vez produce 1 bit de entropía, porque 2^1 = 2. Lánzala dos veces y hay cuatro posibilidades, cara-cara, cara-sello, sello-cara y sello-sello, lo que equivale a 2 bits de entropía, porque 2^2 = 4. Continúa así y 256 lanzamientos te darán 2^256 resultados diferentes, lo que equivale a 256 bits de aleatoriedad.

Pero la clave de la entropía no es solo que los resultados parezcan desordenados. Lo que más importa es que nadie pueda saber el resultado de antemano. Si una moneda ha sido manipulada para que siempre caiga en cara, entonces, incluso si la lanzas 256 veces, seguirá produciendo cero entropía, porque el resultado era predecible desde el principio.

¿Qué pasa si ni siquiera confías en el generador de números verdaderamente aleatorios?

Si tampoco confías en el generador de números verdaderamente aleatorios dentro de tu billetera hardware, hay una opción más primitiva disponible: lanza una moneda y crea la aleatoriedad con tus propias manos.

Registra las caras como 0 y los sellos como 1, lánzala 256 veces y anota cada resultado. Eso te da un número binario de 256 bits. Luego, en un entorno completamente fuera de línea, calcula la suma de comprobación (checksum) para ese número según el estándar BIP-39 y conviértelo en 24 palabras en inglés. Esa es una frase de recuperación completa.

flip a coin 256 timesrecord heads and tailsa 256-bit binary numbercompute the BIP-39 checksum24 recovery wordsimport into a hardware wallet

Una advertencia aquí: los lanzamientos de moneda solo pueden reemplazar el paso de "generar el número aleatorio". No pueden reemplazar a la billetera hardware. El almacenamiento de la billetera, la derivación de direcciones y la firma de transacciones deben realizarse dentro del entorno aislado de una billetera hardware. Los dispositivos conectados solo deben observar y transmitir transacciones, y nunca deben entrar en contacto con tu frase de recuperación.

No escribas los resultados reales de los lanzamientos de monedas en una página web, y no te inventes una cadena de ceros y unos solo porque se siente aleatoria. Solo cuando cada resultado proviene genuinamente de un lanzamiento impredecible, esa cadena de dígitos tiene aleatoriedad real.

Preguntas frecuentes

No. Los dispositivos en sí no fueron violados. Un error de firmware hizo que las frases de recuperación se generaran a partir de un conjunto de valores posibles mucho menor, por lo que los atacantes pudieron adivinarlas mediante fuerza bruta en lugar de atacar el hardware.

El impacto difirió según el modelo. Los aproximadamente 40 bits de aleatoriedad discutidos aquí se aplican principalmente a Mk2 y Mk3; la estimación para Mk4, Mk5 y Q es de alrededor de 72 bits. Consulta los anuncios oficiales de Coinkite para conocer el alcance definitivo.

Un generador por software es un algoritmo fijo al que se le suministran algunas condiciones iniciales, como una marca de tiempo o un número de serie, de modo que cualquiera que pueda adivinar esas entradas puede recalcular su salida. Un generador por hardware muestrea ruido físico impredecible, como el ruido térmico del circuito o la fluctuación del oscilador, que no se puede recalcular a partir de información pública.

Una frase BIP-39 de 24 palabras está respaldada por un número aleatorio de 256 bits, lo que otorga 2^256 posibilidades —aproximadamente 10^77, cerca del número de partículas elementales en el universo observable—.

Sí. Registra cara como 0 y cruz como 1, lanza 256 veces, luego calcula la suma de verificación BIP-39 sin conexión y convierte el resultado en 24 palabras. El lanzamiento de monedas solo reemplaza el paso de aleatoriedad; el almacenamiento de la billetera y la firma de transacciones deben realizarse dentro de una billetera de hardware, y los resultados nunca deben escribirse en una página web conectada.

Asegura tu viaje cripto con OneKey

View details for Comprar OneKeyComprar OneKey

Comprar OneKey

La cartera de hardware más avanzada del mundo.

View details for Descargar aplicaciónDescargar aplicación

Descargar aplicación

Opera con activos globales. Empieza en minutos solo con tu email.

View details for OneKey SifuOneKey Sifu

OneKey Sifu

Claridad cripto — a una llamada de distancia.

Seguir leyendo