Las normas de contraseñas suelen pedir complejidad: una mayúscula, un número, un símbolo. Las matemáticas de la entropía muestran que la longitud importa mucho más, siempre que la contraseña sea realmente aleatoria. Esta guía explica el cálculo, qué longitud recomiendan las directrices actuales y cuándo una frase de contraseña de palabras aleatorias es la mejor opción.
Qué mide la entropía
Una contraseña aleatoria de longitud L, extraída de N caracteres posibles, tiene N^L valores posibles. La entropía es el log₂ de ese número, así que equivale a L × log₂ N bits. Cada bit adicional duplica el número de intentos que necesita un atacante.
Bits por carácter
log₂ 62equals5,95
Entropía
12 × 5,95equals71,5 bits
Tiempo medio
62¹² ÷ 2 ÷ 10.000.000.000/sequals5,112 años
Longitud frente a complejidad
Añadir símbolos amplía el conjunto de caracteres de 62 a 95, lo que eleva la entropía por carácter de 5,95 a 6,57 bits. Añadir un carácter más a una contraseña de letras y dígitos suma 5,95 bits completos. Así, una contraseña de 14 caracteres de letras y dígitos (83,4 bits) es más fuerte que una de 12 caracteres con símbolos (78,8 bits).
¿Qué longitud debe tener una contraseña?
Las directrices de identidad digital del Instituto Nacional de Estándares y Tecnología de EE. UU. (SP 800-63B) piden a los servicios que exijan al menos 15 caracteres cuando la contraseña es el único factor de inicio de sesión, y al menos 8 cuando se combina con otro factor. También desaconsejan las reglas de complejidad obligatoria y los cambios forzados rutinarios, y recomiendan permitir contraseñas largas.
Bits por carácter
log₂ 62equals5,95
Entropía
16 × 5,95equals95,3 bits
Tiempo medio
62¹⁶ ÷ 2 ÷ 10.000.000.000/sequalsMás que la edad del universo
Una contraseña aleatoria de 16 caracteres tiene más de 95 bits de entropía, más allá de cualquier ataque de adivinación práctico. En cambio, una contraseña aleatoria de 8 caracteres con símbolos tiene unos 52,6 bits, que un ataque offline rápido puede agotar en días.
La velocidad del ataque también importa
- Los inicios de sesión online tienen un límite de intentos, así que los atacantes solo consiguen unos pocos intentos por segundo y por cuenta.
- Si se roba una base de datos de contraseñas, los atacantes adivinan offline. Los hashes lentos, como bcrypt, permiten miles de intentos por segundo; los hashes rápidos y sin salt permiten miles de millones.
Por eso la misma contraseña puede ser segura durante décadas frente a un ataque y débil frente a otro.
Frases de contraseña frente a contraseñas aleatorias
Una frase de contraseña es una serie de palabras aleatorias unidas. En una contraseña, cada carácter es una elección aleatoria del conjunto de caracteres; en una frase de contraseña, cada palabra es una elección aleatoria de una lista de palabras.
- Una lista diceware estándar tiene 7.776 palabras, así que cada palabra aleatoria suma log₂ 7.776 ≈ 12,9 bits.
- 4 palabras ≈ 51,7 bits, 5 palabras ≈ 64,6 bits, 6 palabras ≈ 77,5 bits, 7 palabras ≈ 90,5 bits.
- 6 palabras aleatorias equivalen aproximadamente a una contraseña aleatoria de 13 caracteres de letras y dígitos.
Las matemáticas solo se cumplen si las palabras se eligen al azar, con dados o con un generador. Una frase de una canción, una cita o una oración inventada por ti tiene mucha menos entropía, porque los atacantes prueban primero las frases habituales.
La trampa: las personas no somos aleatorias
Todo esto da por hecho que los caracteres o las palabras son aleatorios. Las contraseñas que inventan las personas siguen patrones, como palabras del diccionario, nombres, fechas y sustituciones predecibles, y los atacantes prueban esos patrones primero. Una contraseña inventada puede tener mucha menos entropía real de lo que sugiere su longitud.
Valores prácticos recomendados
- Gestor de contraseñas: deja que genere de 16 a 20 caracteres aleatorios para cada cuenta.
- Contraseñas que tienes que escribir o recordar: usa una frase de contraseña de 6 o más palabras aleatorias.
- Añade siempre un segundo factor cuando se ofrezca; importa más que cualquier regla de longitud.
Comparaciones resueltas
Suponiendo que un atacante puede hacer 10 mil millones de intentos por segundo contra una base de datos de contraseñas robada y protegida con un hash rápido:
- 12 caracteres aleatorios de los 95 caracteres imprimibles: unos 78,8 bits. Alrededor de 1,7 millones de años para probar todas las combinaciones.
- 16 letras y dígitos aleatorios (62 caracteres): unos 95,3 bits. Mucho más allá de cualquier ataque práctico.
- 20 letras minúsculas aleatorias: unos 94 bits. Fáciles de escribir y tan fuertes como el ejemplo anterior por su longitud.
- 4 palabras aleatorias de una lista de 7.776 palabras: unos 51,7 bits. Se pueden descifrar en días a esta velocidad si el hash es rápido, así que son demasiado débiles para algo importante.
- 6 palabras aleatorias de la misma lista: unos 77,5 bits. Aproximadamente 680.000 años a esta velocidad, comparable a una contraseña aleatoria de 12 caracteres y mucho más fácil de recordar.
El patrón está claro: la longitud es la forma más barata de añadir fortaleza. Añadir dos palabras más a una frase de contraseña hace mucho más que cambiar letras por símbolos.
Qué deberían hacer los sitios web
Si construyes sistemas de inicio de sesión, la velocidad de adivinación del atacante depende en parte de ti. Guardar las contraseñas con un algoritmo de hash lento, con salt y diseñado para contraseñas, como bcrypt, scrypt o Argon2, reduce los intentos por segundo en muchos órdenes de magnitud frente a los hashes rápidos. Comprobar las contraseñas nuevas contra listas de contraseñas filtradas conocidas frena las peores elecciones, y ofrecer autenticación multifactor protege incluso a los usuarios que eligen mal.
Preguntas frecuentes
- ¿Es suficiente una frase de contraseña de 4 palabras?
- Para cuentas importantes, no: 4 palabras aleatorias dan unos 51,7 bits. Seis palabras aleatorias dan unos 77,5 bits, parecido a una contraseña aleatoria de 12 caracteres.
- ¿Cuántos caracteres debe tener una contraseña?
- NIST SP 800-63B pide al menos 15 caracteres cuando la contraseña es el único factor. Para las cuentas guardadas en un gestor de contraseñas, de 16 a 20 caracteres aleatorios es un valor razonable.
- ¿Es una frase de contraseña más segura que una contraseña?
- Puede serlo, si las palabras se eligen al azar. Seis palabras aleatorias de una lista de 7.776 palabras dan unos 77,5 bits, parecido a una contraseña aleatoria de 13 caracteres.
- ¿Los símbolos hacen una contraseña mucho más fuerte?
- Menos que la longitud. Los símbolos añaden unos 0,6 bits por carácter, mientras que una letra o un dígito más añade unos 5,95 bits.