Soy fan de xkcd, y una de sus viñetas más citadas es la del panel de contraseñas (#936): Tr0ub4dor&3 frente a correct horse battery staple. Cambió cómo millones de personas piensan las claves. El mensaje parece claro: olvida la contraseña “compleja”, usa cuatro palabras comunes y ganas en seguridad y en memoria. El detalle que casi nadie lee es el adjetivo: random. Cuatro palabras elegidas por ti no son cuatro palabras aleatorias.
Me interesa el marco: por qué las reglas de complejidad heredadas fallan, por qué el cómic solo funciona bajo supuestos concretos, y qué implica eso cuando el idioma sesga las letras iniciales de las palabras que memorizas.
El cómic tiene razón… con dados
El panel inferior de xkcd asigna 11 bits por palabra a correct horse battery staple. Eso asume selección uniforme de un diccionario de unas 2.048 palabras comunes (). Cuatro palabras independientes y aleatorias suman ~44 bits, unos 550 años a 1.000 intentos por segundo en el escenario del cómic.
Ese modelo es Diceware: tirar dados, mirar una lista, repetir. Implementaciones como diceware.dmuth.org lo llevan al navegador con crypto.getRandomValues() (la passphrase se genera en local y no sale de tu máquina). La passphrase es memorable después de generarse al azar, no porque tú la inventaste.
Si realmente eliges cuatro palabras al azar de una lista grande, el cómic es correcto. El problema es que casi nadie hace eso.
El cómic falla… sin dados
Cuando tú eliges las palabras para recordarlas, dejas de tener 11 bits por palabra. Tienes algo mucho peor:
| Sesgo | Qué pasa |
|---|---|
| Frecuencia léxica | Eliges casa, perro, amor antes que yunque o yegua |
| Letra inicial | En español abundan palabras que empiezan por a, c, p, s; escasean las de q, j, w |
| Semántica | Frases que “cuentan una historia” reducen el espacio de búsqueda |
| Personal | Nombres, fechas, canciones, mascotas, el atacante también los prueba primero |
La fórmula simplificada solo vale cuando cada símbolo tiene probabilidad uniforme . Si tú eliges las palabras, efectivo por posición es mucho menor, y no es el mismo para cada letra.
Imagina derivar una contraseña de las iniciales de veinte palabras que memorizaste:
- Con alfabeto uniforme de 26 letras: bits nominales.
- Si tus palabras empiezan sobre todo por
a,c,m,p,s, la entropía real por posición se acerca más a que a .
Un atacante con diccionario enriquecido no prueba todas las combinaciones con la misma prioridad. Prueba primero lo que los humanos eligen.
Entropía en cinco minutos
La entropía de Shannon mide cuánta incertidumbre hay en una elección:
Si cada símbolo es equiprobable entre opciones, se simplifica a . Para una secuencia de longitud con símbolos independientes:
| Contraseña | Cálculo | Entropía aprox. |
|---|---|---|
| 20 minúsculas aleatorias | ~94 bits | |
| 16 minúsculas aleatorias | ~75 bits | |
| 12 chars “complejos” (~94 símbolos) | ~79 bits | |
| 4 palabras “al azar” (Diceware real) | ~44 bits | |
| 4 palabras que tú eliges | distribución humana | imposible de cuantificar sin modelo; a menudo < 30 bits |
8 chars cumpliendo mínimo (Verano2024!) | patrón humano | ~30–40 bits |
La longitud gana al alfabeto “rico” cuando la aleatoriedad es real. Pero sin aleatoriedad, ni la longitud ni el alfabeto salvan la situación.
Dos caras del mismo error
| Enfoque | Síntoma | Ilusión |
|---|---|---|
| Complejidad NIST | Verano2024!, Password1! | ”Cumple mayúscula, número y símbolo” |
| xkcd mal aplicado | casa perro amor luna | ”Cuatro palabras, como el cómic” |
| Leetspeak | P@ssw0rd, Tr0ub4dor | ”Los símbolos confunden al atacante” |
En los tres casos la entropía nominal parece razonable. La efectiva es baja porque el proceso de generación es humano, predecible y explotable con reglas de sustitución.
De dónde salieron las reglas
Las políticas de “al menos una mayúscula, un número y un símbolo” tienen origen documentado en NIST SP 800-63 (2003), asociadas a Bill Burr. La idea era aumentar el espacio de búsqueda. En la práctica, entrenó a generar patrones reconocibles.
En 2017, Burr reconoció públicamente que esas directrices habían empeorado la seguridad efectiva. La actualización SP 800-63B recomienda longitud, listas de contraseñas filtradas, gestores y 2FA, no rotación periódica obligatoria ni complejidad ritual.
El cierre de xkcd resume el mismo diagnóstico desde otro ángulo: veinte años enseñando contraseñas difíciles de recordar y fáciles de adivinar.
El coste de teclear complejidad
Más allá de la entropía, hay usabilidad. En un teclado QWERTY español, Shift y Alt Gr para símbolos aumentan errores de entrada, reintentos y la tentación de reutilizar la misma contraseña “difícil” en todos los sitios.
Cada mayúscula es un golpe de teclado adicional. En móvil, peor: hay que alternar capas o pulsar prolongado para pasar de minúsculas a mayúsculas, y una contraseña que mezcla ambas se vuelve lenta e incómoda de teclear con el pulgar. Si la clave es algo que introduces a menudo (arranque del portátil, desbloqueo del gestor) ese coste se nota cada día.
También importa la transmisión oral. Dictar Tr0ub4dor&3 obliga a aclarar “ese es mayúscula”, “cero, no letra o”, “arroba, no a”. Una secuencia de solo minúsculas se lee de corrido: “jota, ene, erre, a…” sin ambigüedad. Útil si alguien de confianza te ayuda a recuperar una copia de seguridad o si la apuntas en voz alta mientras la memorizas.
Una secuencia larga de minúsculas aleatorias (generada por un gestor) es más rápida de teclear, menos propensa a errores y más clara al dictar que una contraseña corta con reglas de complejidad.
IAG y cracking moderno
Los ataques actuales no prueban solo password y 123456. Usan reglas de sustitución (a→@, e→3, s→$), diccionarios enriquecidos con nombres propios y modelos que aprenden patrones humanos (PassGAN y similares).
Las contraseñas “disfrazadas” y las frases “creativas” son el primer candidato, no el último. La IA no rompe la criptografía; explota que los humanos no son fuentes de aleatoriedad.
Matizaciones obligatorias
- Diceware y passphrases aleatorias reales sí funcionan. El problema no son las palabras; es la elección no aleatoria.
- Entropía no es todo. Credential stuffing, phishing, filtraciones y reutilización pueden comprometer una clave fuerte sin adivinarla.
- Límites de los sitios. Algunos capan longitud o rechazan ciertos símbolos, otro argumento a favor de secuencias largas de letras simples.
Qué hacer en la práctica
- Gestor de contraseñas para casi todo. Una clave maestra fuerte; el gestor genera el resto.
- Generación CSPRNG: nunca improvisar.
- Longitud adecuada: ~18–20 caracteres aleatorios dan ~75–94 bits con minúsculas; suficiente para la mayoría de contextos.
- 2FA donde importe, TOTP, llave hardware, WebAuthn.
- Diceware si quieres palabras y tienes dados (o un generador fiable como diceware.dmuth.org).
En el marco RPS, esto es piedra consciente para el día a día: poco ritual, máxima reversibilidad hacia un gestor, coste del fallo acotado si la clave maestra es fuerte.
Cierre: aleatorio primero
Las reglas de complejidad y el cómic de xkcd apuntan en direcciones opuestas, pero comparten un requisito invisible: la aleatoriedad tiene que ser real. Sin ella, las matemáticas del cómic mienten y las reglas de NIST empeoran las cosas.
La pregunta que queda es práctica: si necesitas memorizar pocas claves críticas (la maestra del gestor, el arranque del portátil) sin elegir tú las palabras ni las letras, ¿cómo lo haces sin caer en el sesgo que acabamos de describir?
En el siguiente post presento tale (Tales Vault System): entropía primero, historia después.