Piensa una palabra al azar. Ahora mismo, la primera que se te ocurra.
Sea cual sea, no era al azar. Era una palabra tuya: algo que has leído esta semana, un objeto que tienes delante, la letra con la que empieza tu nombre. Cuando a una persona se le pide azar, lo que produce es autobiografía. Y la autobiografía se adivina.
Este es el problema entero de las contraseñas, resumido. No es que la gente sea perezosa —que también—, es que somos incapaces de generar aleatoriedad. Nos gustan ciertas letras, evitamos las repeticiones porque «no parecen aleatorias», alternamos vocales y consonantes sin darnos cuenta y, si nos piden un número, tiramos de los que tenemos a mano: fechas, edades, cifras con significado. Un atacante no necesita saber quién eres para explotar eso. Le basta con saber que eres humano.
Un ingeniero, cinco dados y una lista
En 1995, Arnold G. Reinhold publicó en su página web un método que llamó Diceware. La idea es tan simple que da un poco de rabia que haya que explicarla: si el problema es que el humano no sabe elegir al azar, quítale al humano la elección.
El procedimiento completo cabe en tres líneas:
- Tiras cinco dados y anotas los resultados en orden. Sale, pongamos,
4-2-6-1-3. - Buscas
42613en una lista. - Esa es tu palabra. Repites para la siguiente.
La lista tiene 7.776 entradas, y ese número no es caprichoso: es 6⁵, todos
los resultados posibles de cinco dados. Cada combinación —de 11111 a 66666—
apunta a una entrada distinta, y ninguna se queda fuera ni se repite. La lista
original mezcla palabras cortas en inglés con algunas sílabas, cifras y signos
sueltos, precisamente porque encontrar 7.776 palabras buenas es más difícil de
lo que parece.
Lo importante no es la lista. Es el dado.
Por qué 12,9 bits son 12,9 bits
Aquí está la parte que casi nadie entiende, y es la única que importa.
La entropía de una palabra de Diceware es log₂(7.776) = 12,9 bits. Es aritmética, no seguridad: hay 7.776 resultados y todos tienen exactamente la misma probabilidad.
Compáralo con lo que pasa cuando eliges tú. Si te pido una palabra de un diccionario de 7.776 palabras, la cuenta parece la misma —también hay 7.776 opciones— pero no lo es, porque tú no las eliges con la misma probabilidad. Vas a elegir palabras comunes, palabras que te gustan, palabras que has visto hoy. Ese diccionario tiene 12,9 bits sobre el papel y muchos menos en tu cabeza, y el atacante ordena su lista por frecuencia y prueba primero las que la gente elige. La entropía no es cuántas opciones hay: es cuántas opciones hay una vez descontado lo que el atacante sabe de tus gustos.
Los dados no tienen gustos. Tampoco tienen memoria: el dado no sabe que en la
tirada anterior salió bosque, así que no evita repetirse, no busca variedad y
no le da vergüenza que salgan dos palabras que empiezan igual. Por eso los 12,9
bits de Diceware son 12,9 bits de verdad, y no una cifra optimista de
folleto.
Y por eso salen las cuentas hacia arriba. Cada palabra suma:
- Cinco palabras: unos 64 bits.
- Seis palabras: unos 77 bits.
- Siete palabras: unos 90 bits.
Es suma limpia, no multiplicación mágica, porque cada tirada es independiente de las demás. Reinhold recomienda no bajar de cinco palabras, y seis o más para lo que importa de verdad. Puedes ver el efecto en el generador: añadir una palabra siempre suma lo mismo, y ese «siempre» es todo el invento.
El secreto no es la lista
La objeción llega sola: si la lista es pública, ¿no es más fácil romperlo?
No, y conviene decirlo despacio. Los 12,9 bits ya asumen que el atacante tiene la lista. También asumen que sabe que usas Diceware, que sabe cuántas palabras tiene tu frase y que sabe el orden en que las escribes. Todo eso está descontado. Lo único que no sabe es qué salió en tus dados, y eso es lo que estás contando cuando dices «77 bits».
Es lo contrario de lo que hacemos con P@ssw0rd, donde toda la esperanza está
depositada en que a nadie se le ocurra sustituir la a por @. Se le ocurre. Es
de las primeras reglas que aplica cualquier herramienta de ataque por diccionario.
Si tienes la tentación, pruébala en el comprobador y mira cuánto
aguanta.
La EFF y las listas alternativas
En 2016, la Electronic Frontier Foundation publicó sus propias listas de palabras para frases con dados. La lista larga mantiene las 7.776 entradas —los mismos cinco dados, los mismos 12,9 bits— pero cambia el contenido: fuera sílabas raras y signos, dentro palabras corrientes, fáciles de teclear y de distinguir unas de otras. También publicaron listas cortas, de 1.296 palabras (6⁴, cuatro dados, 10,3 bits por palabra): una con palabras más cortas y memorables, y otra pensada para que cada palabra se distinga de las demás por sus primeras letras y se pueda autocompletar. A cambio, cada tirada vale menos y hay que tirar más veces.
Lo elegante del asunto es que la aritmética no cambia con el gusto de nadie. El número de entradas manda. Puedes hacer tu propia lista en gallego, en euskera o en klingon: mientras tenga 7.776 entradas distintas y elijas con dados, cada palabra vale 12,9 bits. Lo único que estás decidiendo al cambiar de lista es cuán agradable te resulta el resultado, no cuán seguro es.
Las tres formas de estropearlo
Diceware falla de tres maneras, y las tres son el mismo error: el humano volviendo a meter la mano.
- Tirar y repetir porque «esa no me gusta». Si descartas resultados, ya no estás usando dados: estás usando tu criterio con un dado de atrezo. Sale lo que sale.
- Reordenar las palabras para que suenen a frase. El orden también es parte de la tirada.
- «Mejorarla» con un
!al final y una mayúscula al principio. Eso no añade nada frente a un atacante que sabe que la gente pone un!al final y una mayúscula al principio. Si necesitas cumplir una política estúpida, hazlo, pero no te creas que has ganado seguridad: la ganaste tirando otra vez.
Y una advertencia que Reinhold ya daba: los dados corrientes sirven de sobra —los de casino son más precisos, pero no hacen falta—, conviene tirar sobre una superficie lisa y el resultado se anota según sale.
El resumen
Una frase de seis palabras sacadas a dados es más larga de escribir que
P@ssw0rd, más fácil de recordar que Tr0ub4dor&3 y muchos órdenes de magnitud
más cara de romper que las dos. No porque sea más rebuscada —no lo es, son seis
palabras normales— sino porque es lo único de tu contraseña que no has decidido
tú.
Ese es el chiste completo de Diceware: la mejor contraseña que puedes tener es aquella en la que tu opinión no participa.
Fuentes: Arnold G. Reinhold, «The Diceware Passphrase Home Page» y su lista de 7.776 palabras (1995) · Electronic Frontier Foundation, listas de palabras para frases de contraseña con dados (2016) · la aritmética es comprobable: 6⁵ = 7.776 y log₂(7.776) ≈ 12,92 bits por palabra.