Fundamentals ·

¿Qué es la entropía? La aleatoriedad detrás de la seguridad cripto


Toda billetera de criptomonedas comienza con un número aleatorio. No una contraseña que eliges, no un patrón que diseñas, sino aleatoriedad cruda extraída del mundo físico. Esta aleatoriedad se llama entropía, y es el factor más importante que determina si tus criptoactivos están seguros o son vulnerables.

Si la entropía detrás de tu billetera es fuerte, un atacante necesitaría buscar entre más combinaciones de las que hay átomos en el universo observable para encontrar tus claves. Si la entropía es débil, tus fondos pueden ser robados en segundos. No hay término medio.

Definición de entropía

En criptografía, la entropía mide la imprevisibilidad de los datos. Se cuantifica en bits. Un bit de entropía representa una única elección binaria: cara o cruz, 0 o 1. Dos bits de entropía dan cuatro resultados posibles. Tres bits dan ocho. Cada bit adicional duplica el número de posibilidades.

La fórmula es directa: n bits de entropía producen 2^n valores posibles.

Este crecimiento exponencial es lo que hace la entropía tan poderosa. Con números pequeños, las posibilidades parecen manejables. Con las cantidades de bits usadas en criptomonedas, se vuelven incomprensiblemente grandes.

La entropía en el contexto cripto no es una metáfora ni un concepto abstracto. Es una cantidad específica y medible de aleatoriedad que se introduce en algoritmos determinísticos para producir tu frase semilla, claves privadas y, en última instancia, tus direcciones. Todo lo que viene después de la entropía inicial se deriva matemáticamente. La entropía en sí es la única parte que debe ser genuinamente aleatoria.

128 bits vs 256 bits

El estándar BIP39, que define cómo se generan las frases semilla, soporta dos longitudes principales de entropía:

128 bits (frase semilla de 12 palabras)

  • Produce 2^128 frases semilla posibles
  • Eso es 340,282,366,920,938,463,463,374,607,431,768,211,456 combinaciones
  • Aproximadamente 3.4 x 10^38

256 bits (frase semilla de 24 palabras)

  • Produce 2^256 frases semilla posibles
  • Aproximadamente 1.16 x 10^77 combinaciones
  • Más que el número estimado de átomos en el universo observable

Ambos niveles se consideran seguros contra la tecnología actual. 128 bits de entropía es el estándar para la mayoría de las billeteras de consumo, y ningún método computacional conocido puede buscar a través de 2^128 posibilidades en ningún plazo práctico. La opción de 256 bits proporciona un margen de seguridad adicional para usuarios que desean máxima protección o les preocupan futuros avances en computación. Para una comparación detallada, consulta ¿Qué tan rápido se puede descifrar una frase semilla por fuerza bruta?.

La relación entre bits de entropía y número de palabras sigue una regla simple: cada 11 bits de entropía se mapean a una palabra de la lista de palabras BIP39 (2,048 palabras, y 2^11 = 2,048). Una frase de 12 palabras codifica 128 bits de entropía más 4 bits de checksum. Una frase de 24 palabras codifica 256 bits de entropía más 8 bits de checksum. Para el desglose completo de este proceso, lee BIP39 explicado.

Fuentes de aleatoriedad: RNG de hardware y Web Crypto API

La pregunta crítica es: ¿de dónde viene la entropía? No todos los generadores de números aleatorios son iguales.

Pseudoaleatorio vs criptográficamente seguro

Una función aleatoria de programación estándar (como Math.random() de JavaScript) es pseudoaleatoria. Usa una fórmula matemática para producir números que parecen aleatorios pero son completamente determinísticos. Dado la misma semilla inicial, producirá la misma secuencia cada vez. Esto es catastróficamente inadecuado para generar claves de criptomonedas.

Los generadores de números aleatorios criptográficamente seguros (CSPRNG) resuelven esto incorporando aleatoriedad física genuina de fuentes de hardware.

Generadores de números aleatorios por hardware

Los CPUs modernos incluyen generadores de números aleatorios de hardware dedicados que recolectan entropía de fenómenos físicos:

  • Intel RDRAND/RDSEED: Usa ruido térmico en circuitos de silicio
  • ARM TrustZone TRNG: Aprovecha la generación de bits aleatorios a nivel de hardware
  • Pools de entropía a nivel de sistema operativo: /dev/urandom de Linux, CryptGenRandom de Windows y SecRandomCopyBytes de macOS mantienen pools de entropía alimentados por eventos de hardware como temporización de interrupciones, variaciones de búsqueda en disco y tiempos de llegada de paquetes de red

Estas fuentes físicas producen aleatoriedad que no puede predecirse incluso por un atacante con conocimiento completo del estado del software del sistema.

Web Crypto API

Para herramientas basadas en navegador, la Web Crypto API proporciona acceso al generador de números aleatorios criptográficos del sistema operativo a través de crypto.getRandomValues(). Esta función está especificada por el W3C e implementada en todos los navegadores modernos. Obtiene datos del mismo pool de entropía a nivel de sistema operativo usado por las aplicaciones nativas.

SafeSeed usa la Web Crypto API para toda la generación de claves. Cuando usas el Generador de frases semilla Bitcoin o el Generador de frases semilla Ethereum, la entropía se obtiene a través de crypto.getRandomValues(), que proporciona bytes aleatorios criptográficamente seguros directamente desde el hardware de tu dispositivo. Nada se genera en un servidor; todo se ejecuta en tu navegador.

La Web Crypto API no es lo mismo que Math.random(). Es un sistema fundamentalmente diferente diseñado específicamente para operaciones criptográficas. La distinción importa enormemente: Math.random() tiene aproximadamente 52 bits de estado interno en la mayoría de las implementaciones, lo que significa que un atacante que observe unas pocas salidas puede predecir todas las futuras. crypto.getRandomValues() no tiene tal debilidad.

De la entropía a la frase semilla

El camino desde la entropía cruda hasta una frase semilla sigue un camino preciso y determinístico definido por la especificación BIP39:

Paso 1: Generar bytes aleatorios

El CSPRNG produce 16 bytes (128 bits) o 32 bytes (256 bits) de datos aleatorios.

Paso 2: Calcular el checksum

Se calcula el hash SHA-256 de la entropía. Los primeros 4 bits (para entropía de 128 bits) o 8 bits (para entropía de 256 bits) de este hash se añaden a la entropía como checksum.

Paso 3: Dividir en grupos de 11 bits

Los bits combinados de entropía + checksum se dividen en grupos de 11 bits cada uno. Para una frase de 12 palabras: 128 + 4 = 132 bits, divididos en 12 grupos de 11 bits.

Paso 4: Mapear a palabras

Cada valor de 11 bits (0-2047) se usa como índice en la lista de palabras BIP39 de 2,048 palabras. El resultado es tu frase mnemónica.

Paso 5: Derivar la semilla

La frase mnemónica se pasa por PBKDF2-HMAC-SHA512 con 2,048 iteraciones para producir una semilla de 512 bits. Esta semilla se usa entonces para derivar el árbol de tu billetera HD siguiendo las rutas de derivación BIP44.

Cada paso después del paso 1 es determinístico. Los mismos 128 bits de entropía siempre producirán las mismas 12 palabras, la misma semilla y las mismas direcciones. Toda la seguridad del sistema depende de la imprevisibilidad de esos bytes aleatorios iniciales.

Cuando la entropía débil lleva al robo de fondos

Las consecuencias de la entropía débil no son teóricas. Múltiples incidentes del mundo real han demostrado lo que sucede cuando la aleatoriedad falla.

La vulnerabilidad de Android SecureRandom (2013)

En agosto de 2013, se descubrió un fallo en la implementación de SecureRandom de Android. La biblioteca criptográfica de Java en Android no estaba sembrando correctamente su generador de números aleatorios, causando que algunas billeteras de Bitcoin generaran claves privadas con entropía insuficiente. Los atacantes explotaron esto para robar bitcoins de las billeteras afectadas. La vulnerabilidad impactó múltiples aplicaciones de billetera y llevó a parches de emergencia en todo el ecosistema Android.

Blockchain Bandit (claves predecibles)

El investigador de seguridad Adrian Bednarek documentó un caso donde los atacantes escaneaban sistemáticamente la blockchain de Ethereum en busca de direcciones derivadas de claves privadas débiles. Claves como 0x0000...0001 (el número 1) o claves derivadas de frases simples habían sido usadas por personas que no entendían la entropía. Bots automatizados monitoreaban estas direcciones y robaban cualquier fondo depositado en ellas en cuestión de segundos. Miles de ether fueron drenados de direcciones con claves predecibles.

Ataques a brain wallets

Las brain wallets — donde una clave privada se deriva de una frase memorizada — han sido comprometidas repetidamente porque las frases elegidas por humanos tienen mucha menos entropía de lo que la gente supone. Los atacantes ejecutan diccionarios masivos de frases, letras de canciones, citas de libros y contraseñas comunes a través de la misma función de derivación usada por las brain wallets. Cualquier frase que un humano pueda recordar probablemente está dentro del espacio de búsqueda de estos ataques.

Estos incidentes comparten una lección común: los algoritmos criptográficos en sí mismos (SHA-256, secp256k1, ECDSA) no están rotos. La entropía que los alimentaba era insuficiente.

Pruebas de calidad de la entropía

¿Cómo puedes verificar que un generador de números aleatorios está produciendo entropía de calidad? Existen varias pruebas estadísticas:

NIST SP 800-22

El Instituto Nacional de Estándares y Tecnología publica un conjunto de pruebas estadísticas para aleatoriedad. Incluyen pruebas de frecuencia (¿están los 0s y 1s aproximadamente equilibrados?), pruebas de rachas (¿son las secuencias de bits idénticos de la longitud esperada?) y pruebas de rango de matrices, entre otras. Un CSPRNG que funcione bien debería pasar todas.

Suite de pruebas Dieharder

Un conjunto extendido de pruebas de aleatoriedad que somete a los generadores a pruebas más exigentes que la suite NIST. Nombrado en honor a las pruebas Diehard originales de George Marsaglia, esta suite se usa comúnmente para evaluar nuevos generadores de números aleatorios.

Verificación práctica

Para los usuarios finales, la verificación más práctica es asegurarse de estar usando una herramienta bien auditada que dependa de crypto.getRandomValues() o un CSPRNG equivalente a nivel de sistema operativo. No deberías intentar mejorar la entropía añadiendo tu propia "aleatoriedad" (como elegir palabras tú mismo), ya que las elecciones humanas son mucho menos aleatorias de lo que se siente.

Las herramientas de SafeSeed son de código abierto, lo que significa que cualquiera puede verificar que la fuente de entropía es crypto.getRandomValues() y no una alternativa más débil. El código se ejecuta enteramente en tu navegador sin comunicación con servidor, por lo que no hay oportunidad para que un intermediario influya en la generación de números aleatorios. Para una discusión más amplia sobre por qué la generación del lado del cliente importa, consulta ¿Son seguros los generadores de frases semilla online?.

La entropía y tu postura de seguridad

Entender la entropía cambia cómo piensas sobre la seguridad cripto. Tu frase semilla de 12 palabras no es solo un mecanismo de respaldo conveniente; es una codificación legible por humanos de un número aleatorio tan grande que el universo no contiene suficiente energía para buscar a través de todas las posibilidades.

Pero esa protección solo se mantiene si el número aleatorio original fue verdaderamente aleatorio. Al elegir herramientas para generar tu billetera:

  1. Verifica la fuente de entropía: La herramienta debería usar crypto.getRandomValues(), /dev/urandom o aleatoriedad equivalente respaldada por hardware.
  2. Evita la entropía personalizada: No elijas tus propias palabras, tires dados con un método sesgado ni uses ninguna fuente de aleatoriedad que "sientas" que es suficientemente buena.
  3. Usa estándares establecidos: BIP39 ha sido probado en batalla desde 2013. Las herramientas que siguen BIP39 con precisión, como el Generador de frases semilla Solana de SafeSeed, heredan una década de revisión de seguridad.
  4. Genera offline cuando sea posible: Incluso con entropía fuerte, generar claves en un dispositivo aislado u offline elimina los vectores de ataque basados en red. Consulta Cómo generar una frase semilla Bitcoin offline para una guía práctica.

La entropía es invisible. No puedes verla, sentirla ni verificarla mirando el resultado. Una frase semilla generada con entropía débil se ve idéntica a una generada con entropía fuerte. La única forma de garantizar tu seguridad es confiar en el proceso: usa herramientas auditadas y de código abierto que obtengan datos de generadores de números aleatorios respaldados por hardware, y nunca comprometas esta base.