Qué hace segura a una contraseña
Una contraseña es segura cuando es difícil de adivinar, y eso depende de una sola cosa: cuántas posibilidades tendría que probar un atacante antes de dar con ella. La complejidad aparente (mayúsculas, un número al final, una @ en lugar de la a) solo ayuda si realmente multiplica esas posibilidades, y en las contraseñas que elige una persona casi nunca lo hace. Esta guía explica cómo medir la fortaleza con la entropía, cuánta hace falta en la práctica y por qué la forma de generar la contraseña importa tanto como su largo.
Entropía: medir la fortaleza en bits
La entropía mide cuántas contraseñas distintas podría haber producido un método de generación, expresado en bits. Cada bit duplica la cantidad de posibilidades: una contraseña de 40 bits sale de un universo de 2⁴⁰ (alrededor de un billón) candidatas; una de 41 bits, del doble.
Para una contraseña generada al azar, eligiendo cada carácter de forma independiente dentro de un conjunto de N símbolos, la fórmula es directa:
entropía = L × log₂(N)
donde L es el largo. Por ejemplo, 12 caracteres elegidos al azar entre minúsculas, mayúsculas, dígitos y 25 símbolos (N = 87) dan 12 × log₂(87) ≈ 12 × 6,44 ≈ 77,3 bits. Con 16 caracteres, la misma cuenta da 103 bits.
La tabla muestra cuántos bits aporta cada carácter según el conjunto, y qué largo hace falta para llegar a 60 y a 80 bits:
| Conjunto de caracteres | Símbolos (N) | Bits por carácter | Largo para 60 bits | Largo para 80 bits |
|---|---|---|---|---|
| Solo dígitos | 10 | 3,32 | 19 | 25 |
| Minúsculas | 26 | 4,70 | 13 | 18 |
| Minúsculas y mayúsculas | 52 | 5,70 | 11 | 15 |
| Letras y dígitos | 62 | 5,95 | 11 | 14 |
| Letras, dígitos y símbolos | 87 | 6,44 | 10 | 13 |
| Palabras de una lista Diceware | 7776 | 12,92 por palabra | 5 palabras | 7 palabras |
Dos conclusiones salen de la tabla. La primera: el largo pesa más que la variedad. Pasar de letras y dígitos (62) a sumar símbolos (87) ahorra apenas un carácter para llegar a 80 bits, mientras que cada carácter extra suma entre 5 y 6,5 bits. La segunda: una frase de pocas palabras elegidas al azar compite con una cadena de símbolos mucho más difícil de recordar.
Cuántos bits son suficientes
La entropía se vuelve concreta cuando se traduce a tiempo. Supongamos el peor escenario habitual: el atacante obtuvo la base de datos con los hashes y prueba candidatas offline a 10.000 millones por segundo, un ritmo realista para un equipo con varias GPU atacando un hash rápido. En promedio, encuentra la contraseña después de probar la mitad del espacio:
| Entropía | Tiempo promedio para adivinarla |
|---|---|
| 40 bits | menos de 1 minuto |
| 50 bits | unas 16 horas |
| 60 bits | casi 2 años |
| 72 bits | unos 7500 años |
| 80 bits | unos 1,9 millones de años |
| 100 bits | billones de años |
Contra un servicio en línea, que limita los intentos por segundo, 40 bits pueden ser suficientes. Pero una contraseña no sabe dónde va a terminar su hash, y las filtraciones de bases de datos son frecuentes. Por eso la referencia práctica es al menos 80 bits para cualquier cuenta que importe, y 100 o más para contraseñas maestras o claves que protegen otras claves. Si el servicio guarda las contraseñas con un hash lento y con sal (bcrypt, scrypt o Argon2), el atacante prueba órdenes de magnitud menos candidatas por segundo, pero eso depende del servicio, no de quien elige la contraseña.
Por qué la fórmula no sirve para contraseñas inventadas
La fórmula L × log₂(N) supone que cada carácter fue elegido al azar. Las personas no eligen al azar: empiezan con mayúscula, terminan con un número o un año, reemplazan a por @ y o por 0, y parten de palabras reales. Los programas de ataque modernos (hashcat, John the Ripper) prueban primero exactamente esos patrones, con diccionarios de miles de millones de contraseñas filtradas y reglas de transformación.
Verano2024! tiene 11 caracteres con mayúsculas, minúsculas, dígitos y un símbolo. Según la fórmula serían 71 bits. En la práctica es una palabra común, un año reciente y el símbolo más usado al final, y cae en los primeros minutos de cualquier ataque con reglas. La entropía real de una contraseña está en el proceso que la generó, no en los caracteres que terminó teniendo.
Frases de contraseña
Cuando una contraseña tiene que recordarse (la del gestor de contraseñas, la del equipo, la de cifrado del disco), una frase de contraseña al azar es la mejor opción. El método Diceware usa una lista de 7776 palabras (6⁵, una por cada combinación de cinco dados) y elige cada palabra tirando dados o con un generador criptográfico. Cada palabra aporta log₂(7776) ≈ 12,9 bits:
- 4 palabras ≈ 52 bits: no alcanza para resistir un ataque offline.
- 6 palabras ≈ 78 bits: un buen mínimo para la mayoría de los usos.
- 7 palabras ≈ 90 bits: holgado incluso para una contraseña maestra.
La condición es la misma que para los caracteres: las palabras tienen que salir de un sorteo, no de una elección. Una frase célebre, una letra de canción o "caballo correcto batería grapa" copiado de un ejemplo famoso tienen entropía prácticamente nula, porque están en los diccionarios de ataque.
Generar de verdad al azar
Todo lo anterior depende de que el generador sea impredecible. En JavaScript, Math.random() no sirve: está pensado para simulaciones y juegos, no para seguridad, y en varios motores su estado interno puede reconstruirse a partir de unas pocas salidas. Para contraseñas hace falta un generador criptográficamente seguro (CSPRNG), que en el navegador es crypto.getRandomValues() de la Web Crypto API y en el sistema operativo es /dev/urandom o su equivalente.
El generador de contraseñas de Toolbit usa crypto.getRandomValues(), calcula la entropía con la misma fórmula de esta guía y la muestra junto a la contraseña, de modo que puede ajustarse el largo hasta llegar al nivel buscado. La contraseña se genera en el navegador y nunca se envía a un servidor.
Qué recomiendan las guías actuales
La guía de identidad digital del NIST (SP 800-63B), que muchas organizaciones usan como referencia, cambió varias reglas que durante años se consideraron buenas prácticas:
- No imponer reglas de composición ("al menos una mayúscula, un número y un símbolo"). Empujan a los patrones predecibles descritos arriba sin aumentar la entropía real.
- No forzar el cambio periódico. Las rotaciones obligatorias producen contraseñas como
Verano2024!→Otoño2024!. Solo hay que cambiarla si hay indicios de que se filtró. - Comparar contra listas de contraseñas filtradas y rechazar las que aparezcan.
- Permitir contraseñas largas (al menos 64 caracteres) y cualquier carácter, incluidos espacios, para que las frases de contraseña sean viables. La revisión de 2025 subió además a 15 caracteres el mínimo para contraseñas que se usan sin un segundo factor.
Lista práctica
- Una contraseña distinta por servicio. La reutilización es la causa más común de cuentas comprometidas: cuando un sitio se filtra, los atacantes prueban esas mismas credenciales en todos los demás.
- Un gestor de contraseñas para guardarlas. Así cada una puede ser una cadena aleatoria de 16 o 20 caracteres sin necesidad de recordarla.
- Una frase de contraseña de 6 o 7 palabras para la contraseña maestra del gestor, la única que hay que memorizar.
- Autenticación de dos factores donde esté disponible, preferentemente con una aplicación o una llave física en lugar de SMS.
- 80 bits como piso para las contraseñas generadas; con letras, dígitos y símbolos, eso son 13 caracteres, y 16 dejan margen de sobra.
Resumen
La fortaleza de una contraseña se mide en bits de entropía, y la entropía solo se puede calcular cuando la contraseña se generó al azar. El largo pesa más que la variedad de caracteres, las frases de palabras sorteadas son la mejor opción para lo que hay que recordar, y un generador criptográfico más un gestor de contraseñas resuelven todo lo demás.