La entropía de las contraseñas explicada: cómo calcular realmente su fortaleza
"Usa una contraseña fuerte" es un consejo habitual, pero "fuerte" es vago. La entropía es la medida real detrás de ese consejo: un número, en bits, que indica cuántos intentos necesita un atacante en el peor de los casos. Este artículo explica qué significa ese número y cómo calcularlo para una contraseña que realmente estés eligiendo.
Resumen
- La entropía (en bits) mide el tamaño del espacio de búsqueda que un atacante debe recorrer por fuerza bruta:
entropía = log2(tamaño_del_conjunto ^ longitud). - Cada carácter adicional multiplica el espacio de búsqueda; cada tipo de carácter adicional solo lo multiplica por un factor fijo y comparativamente pequeño.
- Una contraseña de 12 caracteres usando solo minúsculas tiene menos entropía que una de 8 caracteres que mezcla los cuatro tipos de carácter — pero una frase de paso de 20 caracteres en minúsculas supera a ambas.
- Las contraseñas generadas por CSPRNG alcanzan exactamente su entropía teórica; las elegidas por humanos casi nunca lo hacen, porque los humanos no son aleatorios.
Respuesta breve
La entropía en bits es log2(N), donde N es el número total de contraseñas igualmente probables de esa longitud y conjunto de caracteres. En la práctica: entropía = longitud × log2(tamaño_del_conjunto). Una contraseña de 16 caracteres extraída uniformemente de los 95 caracteres ASCII imprimibles tiene aproximadamente 16 × log2(95) ≈ 105 bits de entropía — comparable a una clave AES de 256 bits en cuanto a resistencia práctica frente a fuerza bruta, lo cual es excesivo en comparación, pero 105 bits ya está muy por encima de lo que cualquier hardware actual o previsible puede agotar. PassGenerate genera contraseñas de esta forma, usando el CSPRNG de la Web Crypto API, por lo que esta cifra de entropía es real, no solo teórica.
La fórmula de la entropía, paso a paso
La entropía asume que cada carácter se elige de forma independiente y uniformemente aleatoria de un conjunto fijo. Dado un conjunto de caracteres de tamaño C y una contraseña de longitud L, el número de contraseñas posibles es C^L, y la entropía en bits es:
entropía = L × log2(C)
| Conjunto de caracteres | Tamaño del conjunto (C) | Bits por carácter (log2 C) |
|---|---|---|
| Solo dígitos (0-9) | 10 | 3.32 |
| Minúsculas (a-z) | 26 | 4.70 |
| Minúsculas + dígitos | 36 | 5.17 |
| Mayúsculas/minúsculas + dígitos | 62 | 5.95 |
| Mayúsculas/minúsculas + dígitos + símbolos (~33 comunes) | 95 | 6.57 |
Longitud vs. tamaño del conjunto de caracteres: por qué gana la longitud
Esta tabla muestra por qué NIST SP 800-63B resta importancia a las reglas de complejidad forzada en favor de la longitud:
| Longitud | Solo dígitos | Minúsculas | Mayúsculas+minúsculas+dígitos+símbolos |
|---|---|---|---|
| 8 | 27 bits | 38 bits | 52 bits |
| 12 | 40 bits | 56 bits | 79 bits |
| 16 | 53 bits | 75 bits | 105 bits |
| 20 | 66 bits | 94 bits | 131 bits |
| 24 | 80 bits | 113 bits | 157 bits |
| 32 | 106 bits | 150 bits | 210 bits |
Observa que una contraseña de 8 caracteres que usa los cuatro tipos de carácter (52 bits) tiene menos entropía que una contraseña de 12 caracteres en minúsculas (56 bits). Esta es la base matemática de un hallazgo bien conocido: agregar cuatro caracteres aleatorios más hace más por tu seguridad que forzar símbolos y dígitos en una contraseña corta. También es la razón por la que las frases de paso largas y generadas aleatoriamente (varias palabras aleatorias de diccionario) pueden ser a la vez más fuertes y más fáciles de escribir que una combinación corta de símbolos — cada palabra adicional suele añadir entre 11 y 13 bits si se extrae de una lista de unos pocos miles de palabras, lo cual se acumula rápidamente en 4-6 palabras.
Por qué "parecer aleatorio" no es lo mismo que serlo
Los cálculos de entropía asumen aleatoriedad uniforme real. Las contraseñas creadas por humanos incumplen sistemáticamente esta suposición incluso cuando parecen complejas: patrones de teclado (Qwerty123!), sustituciones tipo leetspeak (P@ssw0rd), y fechas o nombres con un símbolo añadido reducen la entropía efectiva muy por debajo de lo que sugiere el número de caracteres, porque las herramientas de descifrado de los atacantes están construidas precisamente en torno a estos patrones. Una contraseña puede parecer aleatoria a simple vista y aun así caer entre los primeros millones de intentos de un ataque de diccionario dirigido.
Esta es la razón práctica para preferir un generador que use un generador de números pseudoaleatorios criptográficamente seguro (CSPRNG) en lugar de inventar tú mismo una contraseña. Math.random() en JavaScript no es criptográficamente seguro y no es adecuado para generar contraseñas — está sembrado y generado por un algoritmo suficientemente predecible como para reconstruirse a partir de unas pocas salidas en algunos motores. El crypto.getRandomValues() de la Web Crypto API extrae datos de la fuente de aleatoriedad criptográfica del sistema operativo, por lo que cada carácter es genuina e independientemente aleatorio, y las matemáticas de entropía anteriores realmente se aplican.
Cómo se ve esto con hardware real
Las cifras de bits anteriores son útiles para comparar, pero no te dicen cuánto tarda realmente un ataque — eso depende del hardware que hace las conjeturas, y ese hardware es más rápido cada año. Hive Systems publica un benchmark anual exactamente sobre esto, probando la velocidad de fuerza bruta contra una flota alquilada de GPUs de consumo. Su tabla de 2026 sitúa una contraseña de 8 caracteres generada aleatoriamente con el conjunto completo de caracteres mixtos (mayúsculas, minúsculas, dígitos, símbolos) en aproximadamente 132 años para descifrarse — por debajo de los 164 años de 2025 y los 225 años de 2024, una caída de aproximadamente 20-25% anual a medida que mejora el hardware de GPU. Una contraseña de 8 caracteres solo en minúsculas cayó aún más rápido: de tres semanas para descifrarse en 2025 a aproximadamente dos semanas en 2026.
Dos cosas de ese benchmark vale la pena conocer. Primero, la tendencia es unidireccional — lo que hoy parece "seguro" se debilita cada año solo por las mejoras de hardware, lo cual es un argumento del mundo real para inclinarse hacia contraseñas más largas en lugar del mínimo actual. Segundo, y algo contraintuitivo, los chips aceleradores de IA especializados construidos para entrenar modelos de lenguaje resultaron no ser más rápidos para descifrar contraseñas por fuerza bruta que GPUs de videojuegos equivalentes, e incluso más lentos en algunas pruebas — el descifrado de contraseñas es un problema numérico puro que no se beneficia de las optimizaciones de multiplicación de matrices en las que se basa el hardware de IA.
¿Cuántos bits necesitas realmente?
No hay un número universal único, porque depende de contra qué te estés defendiendo:
- ~40-60 bits: Resistente a conjeturas casuales y ataques automatizados a pequeña escala, pero al alcance de un ataque offline bien dotado de recursos contra una base de datos con hash débil. Adecuado solo para cuentas genuinamente de bajo valor y bajo impacto.
- ~70-90 bits: Cómodamente fuera del alcance de la fuerza bruta incluso con hardware de descifrado optimizado, para cualquier marco temporal de ataque realista. Un objetivo razonable para la mayoría de las cuentas personales.
- 100+ bits: Efectivamente inalcanzable por fuerza bruta con la computación actual o previsible, criptográfico en el mismo sentido que una clave de cifrado fuerte. Apropiado para la contraseña maestra de tu gestor de contraseñas u otros puntos únicos de fallo.
Puntos clave
- La entropía es
longitud × log2(tamaño_del_conjunto_de_caracteres)— la longitud tiene un efecto lineal, el tamaño del conjunto de caracteres tiene un efecto logarítmico, por eso la longitud domina. - Una contraseña corta con todos los tipos de carácter puede tener menos entropía que una contraseña más larga con un solo tipo.
- La entropía efectiva solo es igual a la entropía teórica cuando los caracteres son genuina y uniformemente aleatorios — que es lo que garantiza un CSPRNG y lo que generalmente no logra la elección humana.
- Apunta a 70+ bits para cuentas cotidianas y 100+ bits para contraseñas maestras u otros puntos únicos de fallo.
Por qué puedes confiar en PassGenerate
- Las contraseñas se generan localmente en tu navegador usando la Web Crypto API.
- Ninguna contraseña se transmite a servidores.
- Usa un generador de números pseudoaleatorios criptográficamente seguro (CSPRNG).
- Sigue las mejores prácticas de seguridad modernas recomendadas por NIST y OWASP.
Referencias
- Tabla de contraseñas 2026 de Hive Systems (datos de benchmark de fuerza bruta)
- NIST SP 800-63B – Directrices de identidad digital
- Hoja de referencia de autenticación de OWASP
Conclusión
La entropía es una medida precisa y calculable de la fortaleza de una contraseña, no una noción vaga de "complejidad". La longitud importa más que forzar la mezcla de tipos de carácter porque aumenta el espacio de búsqueda de forma lineal, mientras que el tamaño del conjunto de caracteres solo lo aumenta de forma logarítmica — y nada de esto se sostiene a menos que los caracteres sean realmente aleatorios, razón por la cual un generador respaldado por CSPRNG como PassGenerate produce contraseñas que alcanzan exactamente su entropía teórica, algo que una contraseña elegida por un humano prácticamente nunca logra.