Guías
¿Cuántos caracteres debe tener una contraseña segura?
La longitud pesa más que los símbolos. Aquí tienes la cuenta que lo demuestra, tablas de entropía para contraseñas y frases, y cuánto usar en cada caso.
La herramienta de esta guía
Generador de contraseñas seguras
Funciona dentro de tu navegador: nada de lo que pongas sale de esta página.
Generar una contraseña o una frase seguraLa respuesta corta: si la contraseña la genera y la guarda un gestor, 20 caracteres aleatorios; si tienes que memorizarla, una frase de 6 o 7 palabras elegidas al azar. Ocho caracteres con una mayúscula, un número y un símbolo ya no bastan, y entender por qué te ahorra seguir reglas que no sirven. Todo se reduce a una cuenta: cuántas contraseñas distintas tendría que probar alguien antes de dar con la tuya.
Qué mide la entropía (y cómo se calcula de verdad)
Si una contraseña se elige al azar entre un alfabeto de N símbolos y tiene L caracteres, hay N^L contraseñas posibles. La entropía es el logaritmo en base 2 de ese número:
bits = log2(N^L) = L × log2(N)
Cada bit duplica el trabajo del atacante. Con las 94 teclas imprimibles del ASCII (letras, números y símbolos, sin el espacio), cada carácter aporta log2(94) ≈ 6,55 bits. Con solo minúsculas, log2(26) ≈ 4,70. Esa diferencia por carácter parece grande, pero la longitud multiplica y el alfabeto no: 16 minúsculas (75,2 bits) superan con holgura a 8 caracteres con todo (52,4 bits).
La fórmula tiene una condición que casi nadie menciona: solo vale si cada carácter se eligió al azar de forma independiente. «Verano2024!» tiene 11 caracteres de un alfabeto de 94, pero su entropía real no se parece en nada a 72 bits, porque nadie la eligió al azar: es una palabra, un año y un signo al final, exactamente lo primero que prueba cualquier herramienta de ataque.
Tabla: bits según longitud y tipo de caracteres
| Longitud | Solo dígitos (10) | Minúsculas (26) | Letras y números (62) | ASCII imprimible (94) |
|---|---|---|---|---|
| 4 | 13,3 | 18,8 | 23,8 | 26,2 |
| 6 | 19,9 | 28,2 | 35,7 | 39,3 |
| 8 | 26,6 | 37,6 | 47,6 | 52,4 |
| 12 | 39,9 | 56,4 | 71,5 | 78,7 |
| 16 | 53,2 | 75,2 | 95,3 | 104,9 |
| 20 | 66,4 | 94,0 | 119,1 | 131,1 |
| 24 | 79,7 | 112,8 | 142,9 | 157,3 |
Como referencia práctica: por debajo de 50 bits, un atacante con tarjetas gráficas la saca en horas; a partir de unos 80 bits deja de ser realista por fuerza bruta; 128 bits es el nivel de una clave de cifrado moderna, y pasar de ahí no aporta nada útil.
Frases de contraseña: cuántas palabras hacen falta
Una frase de contraseña (el método diceware) son varias palabras sacadas al azar de una lista. La cuenta es la misma, pero el «alfabeto» es la lista entera: cada palabra aporta log2(tamaño de la lista) bits. Con la lista larga de la EFF, de 7776 palabras (las que salen con cinco dados), son 12,92 bits por palabra.
El detalle importante es que la entropía depende del tamaño real de la lista que uses. El generador de contraseñas de Utiliobox usa, en español, la lista dadoware-bonito-es filtrada a palabras de 3 a 9 letras sin tildes ni eñes, para que se puedan teclear en cualquier teclado: quedan 4862 palabras, es decir, 12,25 bits por palabra, y la herramienta calcula los bits sobre esas 4862 y no sobre las 7776 originales. La consecuencia práctica: en español necesitas una palabra más para igualar a la lista inglesa.
| Palabras | Lista de 4862 (español, Utiliobox) | Lista de 7776 (EFF, inglés) |
|---|---|---|
| 3 | 36,7 bits | 38,8 bits |
| 4 | 49,0 bits | 51,7 bits |
| 5 | 61,2 bits | 64,6 bits |
| 6 | 73,5 bits | 77,5 bits |
| 7 | 85,7 bits | 90,5 bits |
| 8 | 98,0 bits | 103,4 bits |
Un ejemplo de frase segura con este método sería algo como tormenta-pimienta-ancla-viaje-rodilla-granja: seis palabras, unos 73 bits, y se recuerda tras teclearla unas cuantas veces. Lo que la hace segura no es que suene rara, sino que las palabras salieron al azar. Una frase que eliges tú («mi perro se llama Toby») tiene muchísima menos entropía de la que aparenta, porque sigue la gramática y habla de tu vida.
Ataque en línea o fuera de línea: dos amenazas distintas
En línea es probar contraseñas contra el formulario de inicio de sesión. El servicio limita los intentos, bloquea la cuenta o pide un captcha, así que el atacante hace, como mucho, unos pocos miles de intentos. Aquí lo que te tumba no es la fuerza bruta sino el relleno de credenciales: probar en tu banco la contraseña que se filtró de otro sitio. Contra eso, la longitud no ayuda; ayuda no repetir contraseñas.
Fuera de línea es cuando se roba la base de datos con los hashes de las contraseñas. Entonces no hay límite: el atacante prueba en sus propias máquinas a la velocidad que le permita el algoritmo con que se guardaron. Con un hash rápido como MD5 sin sal, un equipo con varias tarjetas gráficas ronda el billón (10¹²) de intentos por segundo; con un algoritmo lento bien configurado (bcrypt, scrypt, Argon2) baja a miles. Tú no decides cómo guarda tu contraseña cada servicio, así que lo prudente es suponer el caso malo.
Tiempo medio de búsqueda, suponiendo contraseña aleatoria y 10¹² intentos por segundo (de media se acierta a mitad del recorrido):
| Contraseña aleatoria | Bits | Tiempo medio a 10¹²/s |
|---|---|---|
| 8 caracteres, ASCII imprimible | 52,4 | unos 50 minutos |
| 10 caracteres, letras y números | 59,5 | unos 5 días |
| 4 palabras, lista de 7776 | 51,7 | unos 30 minutos |
| 5 palabras, lista de 4862 | 61,2 | unas 2 semanas |
| 12 caracteres, ASCII imprimible | 78,7 | unos 7500 años |
| 6 palabras, lista de 4862 | 73,5 | unos 200 años |
| 7 palabras, lista de 4862 | 85,7 | alrededor de un millón de años |
Son órdenes de magnitud, no predicciones: el hardware mejora y los algoritmos lentos dividen estas cifras a favor tuyo por millones. Lo que sí es fiable es la comparación entre filas.
Por qué P@ssw0rd no es una contraseña fuerte
Cambiar la a por @ y la o por 0 es lo que hace todo el mundo, y por eso las herramientas de ataque lo aplican de serie: toman diccionarios de palabras y contraseñas filtradas y les pasan reglas de sustitución, mayúscula inicial, número y símbolo al final. P@ssw0rd cumple cualquier política de «mayúscula, número y símbolo» y aparece entre las primeras contraseñas de cualquier lista filtrada. Contra un ataque con diccionario y reglas cae en los primeros segundos: su entropía nominal de 52 bits no significa nada.
Las sustituciones añaden muy poca incertidumbre (el atacante prueba ambas variantes) y mucho esfuerzo para ti. Añadir caracteres aleatorios, en cambio, multiplica el trabajo del atacante por el tamaño del alfabeto cada vez.
Qué dice el NIST (SP 800-63B)
La guía de identidad digital del NIST estadounidense es la referencia que siguen muchos equipos de seguridad, también fuera de EE. UU. Su revisión 4, publicada en agosto de 2025, establece para los sistemas que la aplican:
- Longitud mínima de 15 caracteres cuando la contraseña es el único factor de autenticación, y de 8 cuando forma parte de una autenticación de varios factores.
- Se debería permitir un máximo de al menos 64 caracteres.
- No se deben imponer reglas de composición (obligar a mezclar mayúsculas, números y símbolos).
- No se debe exigir cambiar la contraseña periódicamente; solo cuando hay indicios de que se ha comprometido.
- Las contraseñas nuevas se deben comparar con una lista de contraseñas filtradas, comunes o previsibles, y rechazarlas.
- Nada de pistas ni de preguntas de seguridad tipo «nombre de tu primera mascota».
La lógica es la de este artículo: las reglas de composición y los cambios forzados empujan a contraseñas previsibles (Verano2024! pasa a Otono2024!), mientras que la longitud y el rechazo de contraseñas conocidas sí suben el coste del ataque.
Gestor de contraseñas: la pieza que lo hace viable
Nadie memoriza 80 contraseñas de 20 caracteres aleatorios. Un gestor (el del navegador, Bitwarden, 1Password, KeePassXC…) las genera, las guarda cifradas y las rellena por ti. Así cada cuenta tiene su propia contraseña y una filtración en un sitio no abre los demás, que es lo que de verdad protege frente al relleno de credenciales. Solo tienes que recordar una: la contraseña maestra, que por eso merece ser una frase larga.
«Aleatorio» tiene que ser criptográfico
Todos los cálculos anteriores suponen que el azar es impredecible. En JavaScript, Math.random() no lo es: está pensado para juegos y simulaciones, y en motores como V8 usa un generador (xorshift128+) cuyo estado interno se puede reconstruir a partir de unas pocas salidas. Para contraseñas hay que usar crypto.getRandomValues(), que toma el azar del generador criptográfico del sistema operativo. El generador de Utiliobox usa solo esta función y, si el navegador no la ofrece, muestra un aviso y no genera nada en lugar de recurrir a una fuente peor.
El sesgo del módulo
Hay un segundo error, más sutil y muy extendido: convertir el número aleatorio en un carácter con aleatorio % N. Si sacas un byte (0–255) y haces % 62, como 256 = 4 × 62 + 8, los ocho primeros caracteres del alfabeto tienen 5 posibilidades de 256 y el resto solo 4: salen un 25 % más a menudo. Con números de 32 bits el sesgo es minúsculo, pero sigue existiendo. La solución correcta es el muestreo por rechazo: descartar los valores del tramo final que no completa una vuelta entera y volver a tirar. Es lo que hace la herramienta de Utiliobox, con valores de 32 bits.
La trampa de «al menos uno de cada tipo»
Exigir que aparezca cada tipo de carácter descarta combinaciones, así que la entropía real es algo menor que L × log2(N). Con el alfabeto de 89 caracteres de Utiliobox (sin comillas ni barra invertida), una contraseña de 8 caracteres baja de 51,8 a 50,7 bits; con 20 caracteres, de 129,5 a 129,4. La herramienta cuenta las combinaciones válidas exactamente y genera descartando contraseñas enteras en lugar de colocar un carácter de cada tipo y barajar, que sobrerrepresentaría los dígitos.
Cuántos caracteres usar según el caso
| Uso | Recomendación | Por qué |
|---|---|---|
| Contraseña maestra del gestor, cifrado de disco | Frase de 7 palabras con la lista española de 4862 (85,7 bits) o 6 con la de 7776 (77,5) | Hay que memorizarla y puede sufrir ataques fuera de línea |
| Cuentas normales con gestor | 20 caracteres aleatorios con todos los tipos (unos 129 bits) | No la tecleas, así que alargarla no cuesta nada |
| Sitios con límites raros de longitud o caracteres | El máximo que permitan; si no admiten símbolos, compénsalo con longitud | 16 letras y números ya dan 95 bits |
| Wi-Fi doméstico (WPA2) | 20 o más caracteres aleatorios, o una frase de 6 palabras | Quien capture la conexión puede atacar la clave fuera de línea |
| PIN del móvil o de la tarjeta | 6 dígitos, que no sean fechas ni repeticiones | Solo 19,9 bits; lo protege el límite de intentos del dispositivo, no la entropía |
El PIN es la excepción que confirma la regla: funciona con tan pocos bits porque el hardware bloquea tras unos pocos fallos y nadie puede atacarlo fuera de línea. En cuanto un secreto puede probarse sin límite, lo único que lo protege es la longitud.
La herramienta de esta guía
Generador de contraseñas seguras
Funciona dentro de tu navegador: nada de lo que pongas sale de esta página.
Generar una contraseña o una frase segura