Cómo generar contraseñas robustas
Una contraseña débil es la vulnerabilidad más explotada de internet de consumo. Año tras año, los corpus de filtraciones publicados por los atacantes muestran las mismas cadenas en cabeza: «123456», «password», «qwerty», «admin». Si alguna de tus cuentas comparte ese ADN, ya está sobre una wordlist corriendo en una botnet en algún lugar. Una contraseña fuerte es la defensa más barata y rápida que puedes desplegar, y unos segundos con un generador baten cualquier cosa que un cerebro humano produce bajo presión.
Breve historia de las contraseñas informáticas
Las contraseñas informáticas datan de 1961, cuando el equipo de Fernando Corbató en el MIT las introdujo para el Compatible Time-Sharing System (CTSS), permitiendo a varios usuarios compartir un mismo mainframe manteniendo privados sus archivos. El sistema tuvo su primera intrusión en 1962, cuando el doctorando Allan Scherr imprimió el fichero maestro de contraseñas para conseguir más tiempo de cómputo que su cuota semanal de cuatro horas. La lección, que guardar secretos en claro al lado de las cuentas que protegen es mala idea, tardó casi veinte años en asimilarse del todo.
En 1979, Robert Morris y Ken Thompson publicaron «Password Security: A Case History» y enviaron el hashing DES salado en Unix Versión 7: una sal aleatoria de 12 bits más 25 iteraciones de DES transformaron el fichero de contraseñas de un trofeo instantáneo en un objetivo de brute-force moderadamente caro. Las rainbow tables, «Crack» de Alec Muffett (1991) y GPUs cada vez más rápidas acabaron desbordando esas defensas, y el campo pasó a funciones de hashing deliberadamente lentas: bcrypt (1999), scrypt (2009) y Argon2 (2015, ganador actual del PHC).
El lado usuario de las recomendaciones sobre contraseñas evolucionó más lentamente. Las directrices NIST de 2003 (redactadas en gran parte por Bill Burr) recomendaban rotación periódica forzada y mezcla obligatoria de clases de caracteres, consejos que se volvieron la norma corporativa durante quince años. El propio Burr desautorizó esas reglas en una entrevista de 2017. Ese mismo año, NIST SP 800-63B Revisión 3 abandonó formalmente la rotación periódica y las reglas de composición, sustituyéndolas por dos ideas más simples: preferir secretos memorizados largos, y comprobar candidatos contra corpus de filtraciones antes de aceptarlos.
Qué hace fuerte a una contraseña
La resistencia de una contraseña al adivinado se reduce a una sola cantidad: la entropía, medida en bits. Cada bit duplica el espacio de búsqueda. Un PIN de 4 dígitos tiene unos 13 bits de entropía (10 000 combinaciones). Una cadena de 16 caracteres solo minúsculas tiene unos 75 bits. Una cadena de 16 caracteres mayúsculas y minúsculas + dígitos + símbolos tiene unos 105 bits. A 100 GH/s, lo que una GPU de gama alta puede alcanzar contra hashes salados rápidos, 50 bits caen en días, 70 bits en milenios.
Dos consecuencias prácticas.
La longitud manda sobre la complejidad. Añadir un carácter de un alfabeto de 70 símbolos multiplica el espacio de búsqueda por 70, casi lo mismo que añadir 6,1 bits. Añadir una regla de composición (por ejemplo, mezclar mayúsculas y minúsculas a longitud constante) solo duplica el espacio, un único bit. Doce caracteres minúsculos aleatorios baten siempre a ocho caracteres mayús/minús + símbolos.
La aleatoriedad no es negociable. Una cadena de 20 caracteres hecha con palabras inglesas no son 130 bits de entropía; frente a un atacante serio quizá son 40, porque las herramientas de cracking lanzan wordlists más reglas de mutación, no brute-force ciego. Las contraseñas generadas dan entropía plena por carácter. Las elegidas por humanos casi nunca.
Cómo funciona un generador de contraseñas
Un generador en el navegador usa crypto.getRandomValues(), el generador de números pseudoaleatorios criptográficamente seguro (CSPRNG) de la plataforma, alimentado por el pool de entropía del sistema operativo. Es la misma fuente que se usa para derivar claves de sesión TLS y vectores de inicialización AES. El antiguo Math.random() no es criptográficamente seguro y nunca debe usarse para contraseñas ni ningún otro fin de seguridad.
Eliges tres cosas:
- Longitud en caracteres
- Clases de caracteres a incluir (minúsculas, mayúsculas, dígitos, símbolos)
- Exclusiones opcionales de caracteres visualmente ambiguos (
l,1,I,O,0) cuando la contraseña debe leerse en voz alta o copiarse a mano
El generador entonces muestrea uniformemente del alfabeto elegido hasta alcanzar la longitud pedida, sin sesgo ni patrones.
Cómo generar una contraseña fuerte
- Decide la longitud. Doce caracteres es un mínimo razonable para cuentas nuevas, 16 a 20 para cuentas que guardan dinero o secretos, 25 o más para contraseñas maestras y credenciales root.
- Activa todas las clases de caracteres salvo si el sitio rechaza símbolos. Las reglas de composición ocultas cuestan unos bits de entropía y conviene incluir los caracteres más difíciles de adivinar cuando un gestor te rellena el campo de todos modos.
- Genera, luego audita. La mayoría de generadores muestran la entropía estimada; apunta a al menos 80 bits para cuentas ordinarias, 100 o más para cuentas de alto valor.
- Guarda en un gestor antes de pegar. Cerrar la pestaña pierde la contraseña para siempre si no se ha guardado antes. Es el autogol más común.
- Prueba el ida y vuelta del login. Una fracción pequeña pero real de sitios truncan en silencio las contraseñas a 16, 20 o 32 caracteres, o quitan ciertos símbolos en el servidor. Cierra sesión y vuelve a entrar una vez para confirmar qué se aceptó realmente.
Longitud, alfabeto y entropía de un vistazo
| Longitud | Alfabeto | Combinaciones | Entropía (bits) |
|---|---|---|---|
| 8 | solo minúsculas (26) | 2,1 × 10^11 | 38 |
| 12 | minúsculas + dígito (36) | 4,7 × 10^18 | 62 |
| 16 | mayús/minús + dígito (62) | 4,8 × 10^28 | 95 |
| 20 | mayús/minús + dígito + 32 símbolos | 4,5 × 10^37 | 125 |
| 25 | teclado completo (unos 94) | 2,0 × 10^49 | 164 |
Por debajo de 64 bits es frágil frente a un atacante offline decidido. Por encima de 100 bits es cómodamente a prueba de la próxima década frente a hardware clásico. Los ataques cuánticos reducen a la mitad la entropía efectiva vía el algoritmo de Grover, así que 100 bits clásicos dan 50 bits post-cuánticos, todavía muy por encima de cualquier amenaza práctica.
Las frases de paso como alternativa
Para el pequeño conjunto de contraseñas que realmente necesitas memorizar (la maestra de tu gestor, un desbloqueo de dispositivo, un código de recuperación de emergencia), una frase de paso le gana a una cadena aleatoria en memorabilidad sin sacrificar seguridad. La receta clásica es Diceware, inventada por Arnold Reinhold en 1995: tira cinco dados físicos, busca el número de cinco dígitos en una lista de 7 776 entradas (7 776 = 6^5), repite por la cantidad de palabras que quieras. Cada palabra añade unos 12,9 bits de entropía, así que una frase de seis palabras como correct horse battery staple cargo lumen da unos 77 bits, equivalente a una cadena aleatoria de 13 caracteres mayús/minús + dígito.
En 2016, la Electronic Frontier Foundation publicó listas estilo Diceware refrescadas, con palabras más largas y memorables (7 caracteres de media frente a 4,3 de Reinhold), todavía 7 776 entradas, todavía la misma entropía por palabra, más fáciles de teclear y de dictar por teléfono. Cualquiera de las dos sirve.
El único error que destruye la seguridad de una frase de paso es elegir tú las palabras en lugar de tirar los dados. Los humanos se concentran en 1 000 a 2 000 sustantivos y verbos comunes, así que una frase de seis palabras inventada por ti suele rondar los 60 bits de entropía efectiva y a veces está directamente en la wordlist del crackeador (correct horse battery staple misma, popularizada por el cómic xkcd, figura ya en todo ataque de diccionario moderno).
Consejos para mejores contraseñas
- Usa una contraseña distinta para cada cuenta. La reutilización es el vector de ataque de mayor rendimiento; un sitio comprometido expone todas las demás cuentas que comparten la credencial.
- Genera, nunca inventes. Los cerebros son malos para la aleatoriedad; los ordenadores son muy buenos. Externaliza el trabajo.
- Apunta a largo, no a ingenioso. Veinte caracteres de
crypto.getRandomValuesbaten cualquier patrón que inventes. - Pega en bloque, nunca teclees. Teclear una cadena aleatoria de 20 caracteres invita a typos y miradas por encima del hombro; deja que el gestor rellene el campo.
- Audita contraseñas existentes contra corpus de filtraciones. La API Pwned Passwords de haveibeenpwned.com comprueba cualquier contraseña contra unos 850 millones de hashes filtrados mediante un protocolo k-anonimato que nunca envía la contraseña completa.
- Rota solo por señal, no por calendario. La rotación forzada cada 90 días empuja a los usuarios a patrones predecibles como
Spring2026!luegoSummer2026!. La guía NIST actual es rotar solo cuando se sospecha compromiso. - Desactiva o aleatoriza las preguntas de seguridad. «El apellido de soltera de tu madre» se busca en casi cualquier sitio de genealogía; trata las respuestas como contraseñas alternativas y guarda cadenas aleatorias en tu gestor.
- Usa el autorrelleno, y verifica el dominio. Un gestor que se niega a rellenar en un dominio sosias acaba de bloquear gratis un intento de phishing.
Errores comunes
- Reutilizar contraseñas. Los ataques de credential-stuffing prueban pares email/contraseña filtrados contra miles de sitios; una contraseña reutilizada es un compromiso completo de cuenta.
- Información personal. Nombres de mascotas, cumpleaños, nombres de hijos, direcciones, mascotas de escuela, todo fácilmente cosechable en redes sociales.
- Sustituciones simples.
P@ssw0rdyPa55wordestán en todas las wordlists; las herramientas de cracking aplicanaa@,oa0,sa$como reglas de mutación por defecto. - Contraseñas cortas. Cualquier cosa por debajo de 10 caracteres frente a SHA-256 salado en hardware de consumo cae en horas, a veces minutos.
- Marchas de teclado y secuencias.
qwertyuiop,1qaz2wsx,asdfghjkl,abcd1234se prueban en los primeros mil intentos. - Guardar en claro. Post-its,
passwords.txt, autorrelleno del navegador sin contraseña maestra, todo arruina aguas abajo la fuerza de cualquier generador. - Compartir por email o chat. El email queda en reposo en el proveedor y a menudo en las copias de seguridad del dispositivo del receptor; el historial de chat persiste indefinidamente.
- Fiarse solo de los medidores de fuerza. Muchos puntúan longitud y composición de clases y se pierden patrones evidentes de diccionario;
correct horse battery staplepuntúa «débil» en algunos medidores y es de hecho fuerte por entropía. - Rotación periódica forzada. Empuja a los usuarios a derivados predecibles y baja la media de la población.
- Tratar el MFA como opcional. Incluso una contraseña generada de 25 caracteres debería tener un segundo factor en cuentas de alto valor; las contraseñas se phishean, los segundos factores suben el listón.
Más allá de las contraseñas: gestores, MFA y passkeys
Un gestor de contraseñas ya no es opcional. La alternativa realista es reutilizar contraseñas débiles o anotarlas en papel, ambas peores que cualquier gestor reputado. Una comparativa breve de las opciones principales:
| Herramienta | Precio | Modelo de almacenamiento | Punto fuerte |
|---|---|---|---|
| Bitwarden | Gratis / de pago | Sync cloud, opción autoalojada | Open source, auditado, plan gratis generoso |
| 1Password | De pago | Sync cloud, cifrado de extremo a extremo | UX pulida, compartir familia, Travel Mode |
| Dashlane | De pago | Sync cloud | Monitorización dark-web, VPN incluido |
| KeePassXC | Gratis | Fichero local (sync como prefieras) | Totalmente offline, sin riesgo de proveedor |
| Proton Pass | Gratis / de pago | Sync cloud, cifrado de extremo a extremo | Incluido en cuenta Proton, alias de email |
| Llavero de Apple | Gratis en dispositivos Apple | Sync iCloud | Nativo, gratis, atado al ecosistema Apple |
| Integrados en navegadores | Gratis | Sync por cuenta de navegador | Gratis e integrado, más débil frente a malware en el equipo |
La autenticación de dos factores (2FA) sube el coste de una contraseña robada de la toma de control instantánea a «el atacante tiene que interceptar también el segundo factor». Prefiere contraseñas de un solo uso basadas en tiempo (TOTP, vía una app autenticadora como Aegis, Raivo o 2FAS) al SMS, que es vulnerable a ataques de SIM-swap. Prefiere llaves de seguridad físicas (YubiKey, Titan, SoloKey) al TOTP en las cuentas de mayor valor.
Las passkeys (FIDO2 / WebAuthn) sustituyen la contraseña por una clave criptográfica ligada al dispositivo. Apple, Google y Microsoft anunciaron conjuntamente el soporte ampliado de passkeys en mayo de 2022, y ya están disponibles en iOS 16+, Android, Chrome, Safari, Edge y Windows Hello. Una passkey es no-phishable porque el navegador se niega a usarla en un dominio para el que no se registró, y no hay secreto compartido en una base del servidor que fugar en una brecha. Donde un sitio ofrece passkeys, actívalas; normalmente puedes mantener la contraseña como repliegue mientras el ecosistema madura.
Privacidad y el generador
El generador de contraseñas corre enteramente en tu navegador. Llama a crypto.getRandomValues() una vez por carácter, muestrea del alfabeto elegido y pinta el resultado en la página. No se registra nada, no se envía nada a un servidor, no se guarda nada después de salir de la página. La contraseña generada nunca sale de tu dispositivo a menos que la pegues en algún sitio. Para algo tan fundamental como la llave de una cuenta, ese flujo estrictamente local es el valor por defecto correcto: sin telemetría, sin analytics, sin scripts de terceros, sin caché. Toda la herramienta puede correr offline una vez cargada la página, lo que puedes comprobar desconectando la red y pulsando de nuevo Generar.
Preguntas frecuentes
¿Cuánto debe medir mi contraseña?
Usa al menos 12 caracteres para una seguridad correcta, 16 o más para cuentas sensibles. Cada carácter adicional hace la contraseña exponencialmente más difícil de romper.
¿Hay que incluir caracteres especiales?
Sí. Combinar mayúsculas (A-Z), minúsculas (a-z), cifras (0-9) y caracteres especiales (!@#$%^&*) aumenta notablemente la robustez al ampliar el conjunto de caracteres que un atacante tendría que adivinar.
¿Es seguro un generador de contraseñas?
Sí, cuando se ejecuta en tu navegador. Los generadores del lado del navegador usan el generador de números aleatorios criptográfico de tu dispositivo y nunca envían la contraseña a un servidor.
¿Con qué frecuencia cambiar las contraseñas?
Las recomendaciones actuales (NIST y otros) aconsejan cambiar las contraseñas solo en caso de evidencia de compromiso, no según un calendario fijo. Los cambios forzados frecuentes producen contraseñas más débiles, ya que la gente elige las más fáciles de recordar.
Is a passphrase as good as a random password?
Yes, if it is long enough and the words are chosen randomly (for example with Diceware or the EFF wordlist). Six randomly-chosen words give about 77 bits of entropy, comparable to a 13-character random password. Self-invented phrases are usually much weaker because humans cluster around the same few thousand common words.