Las contraseñas son el punto de fallo más frecuente en seguridad personal. No porque la gente sea descuidada, sino porque los requisitos que nos imponen (“mayúsculas, números, símbolos, mínimo 12 caracteres”) producen exactamente el tipo de contraseña que es difícil de recordar y fácil de predecir para un atacante: P@ssw0rd2024!.
Diceware resuelve esto de raíz. En lugar de una cadena críptica, obtienes una frase de varias palabras aleatorias que puedes memorizar y que ofrece más entropía que la mayoría de contraseñas convencionales.
Qué es Diceware
Diceware es un método para generar passphrases (frases como contraseña) usando dados físicos y una lista numerada de palabras. Lo publicó Arnold G. Reinhold en 1995 y sigue siendo uno de los enfoques más sólidos para crear secretos memorizables.
La idea central: si la aleatoriedad la genera un dado físico, no dependes de ningún software, ningún generador pseudoaleatorio ni ningún servidor remoto. El único requisito es que confíes en la física.
Cómo funciona
El método gira alrededor de una wordlist: una lista de palabras donde cada entrada está indexada por un número de cinco dígitos en base 6, desde 11111 hasta 66666. La lista clásica de Reinhold tiene 7776 palabras (6⁵ = 7776).
El proceso para obtener una palabra es:
- Lanza un dado cinco veces.
- Anota los resultados en orden: por ejemplo,
2,4,1,6,3→24163. - Busca
24163en la wordlist. Esa es tu palabra.
Repite esto tantas veces como palabras quieras en tu passphrase. Lo habitual son seis palabras.
La entropía
La seguridad de Diceware se puede calcular directamente. Cada palabra se escoge entre 7776 posibilidades, así que cada una aporta log₂(7776) ≈ 12,9 bits de entropía.
| Palabras | Entropía total | Combinaciones posibles |
|---|---|---|
| 4 | ~51 bits | 3,6 × 10¹⁵ |
| 5 | ~64 bits | 2,8 × 10¹⁹ |
| 6 | ~77 bits | 2,2 × 10²³ |
| 7 | ~90 bits | 1,7 × 10²⁷ |
| 8 | ~103 bits | 1,3 × 10³¹ |
| 9 | ~116 bits | 1,0 × 10³⁵ |
Con seis palabras estás en un territorio donde un ataque de fuerza bruta a escala industrial seguiría siendo inviable. Para comparar: la contraseña P@ssw0rd2024! tiene mucha menos entropía real porque sigue patrones predecibles que los atacantes ya conocen.
A partir de cierto punto, añadir palabras deja de tener impacto práctico. Con seis ya has excedido lo que cualquier ataque clásico puede romper; el eslabón débil pasa a ser el malware, la ingeniería social o que la passphrase sea tan larga que acabes escribiéndola. Frente a computación cuántica, el algoritmo de Grover reduciría la seguridad efectiva a la mitad (siete palabras quedarían en ~45 bits, insuficiente), pero alcanzar 128 bits post-cuánticos requeriría unas 20 palabras, que no son memorizables. Si ese escenario algún día fuera real, la solución serían algoritmos de derivación post-cuánticos, no más palabras. Siete tiene sentido para secretos críticos; más allá, la ganancia es teórica.
Estos valores de entropía asumen el peor escenario posible para el usuario: que el atacante sabe que usaste Diceware, conoce exactamente qué wordlist empleaste y sabe cuántas palabras tiene tu passphrase. Si el atacante ignora alguno de estos tres factores, la entropía efectiva es mayor.
También importa cómo separas las palabras. Si usas espacios u otro carácter no alfabético entre ellas (como recomienda el autor), la entropía se mantiene íntegra. Si en cambio concatenas las palabras sin separador, la entropía se reduce ligeramente por ambigüedad: por ejemplo, in put clammy e input clam my se vuelven idénticas al eliminar los espacios. En la práctica, usa siempre el espacio como separador o cualquier otro símbolo.
Cómo usarlo paso a paso
Lo que necesitas
- Uno o más dados físicos (sirve cualquiera de seis caras).
- La wordlist. Puedes usar la lista original de Reinhold o la lista de la EFF, publicada en 2016 con palabras más largas y reconocibles. También hay listas en español mantenidas por la comunidad.
- Papel y bolígrafo para anotar los lanzamientos.
El proceso
1. Decide cuántas palabras quieres. Para la mayoría de los casos, seis es suficiente. Si proteges algo crítico (un gestor de contraseñas, una clave GPG, un disco cifrado) considera siete. Más palabras no añaden seguridad práctica real: el límite no lo pone la passphrase, sino el resto del sistema (como hemos mencionado antes). Dicho esto, puedes usar cuantas quieras siempre y cuando puedas memorizarlas.
2. Lanza el dado cinco veces por palabra y anota el número. Hazlo con el dado real, no en tu cabeza. La tentación de “tirar mentalmente” elimina la aleatoriedad que hace que el método funcione.
Lanzamiento 1: 3 - 5 - 1 - 2 - 6 → 35126
Lanzamiento 2: 1 - 1 - 4 - 6 - 2 → 11462
Lanzamiento 3: 6 - 2 - 3 - 1 - 4 → 62314
Lanzamiento 4: 2 - 5 - 5 - 3 - 1 → 25531
Lanzamiento 5: 4 - 1 - 6 - 6 - 5 → 41665
Lanzamiento 6: 3 - 3 - 2 - 4 - 1 → 33241
3. Busca cada número en la wordlist. Cada número de cinco dígitos corresponde a exactamente una palabra de la lista.
4. Une las palabras. El resultado es tu passphrase. Puedes separarlas con espacios, guiones o simplemente escribirlas seguidas. Los espacios suelen estar permitidos y hacen la frase más legible.
Una passphrase típica podría quedar algo como: clamp frost river pencil above tiger
5. Memorízala. Forma una imagen mental o una historia absurda con las palabras. El cerebro retiene secuencias narrativas mucho mejor que cadenas de caracteres sin sentido.
Por qué es mejor que otros métodos
Frente a inventarte una contraseña: los humanos somos pésimos generando aleatoriedad. Tendemos a patrones, fechas, palabras que nos importan. Un atacante con un buen diccionario y reglas de mutación romperá eso.
Frente a un generador online: dependes de que el sitio sea honesto y de que tu conexión no esté comprometida. Con dados físicos, la entropía viene de la naturaleza, no de ningún software.
Frente a un gestor de contraseñas generando una clave maestra: los gestores son excelentes para contraseñas de cuentas individuales, pero su clave maestra necesitas memorizarla tú. Diceware es exactamente para ese caso: el secreto que vive solo en tu cabeza.
Herramientas y listas
Si por algún motivo necesitas generar la passphrase en digital (sin dados disponibles, por ejemplo), usa herramientas con código auditable y que funcionen offline:
dicewareen Python:pip install diceware && diceware -n 6usaos.urandom()del sistema operativo, que es criptográficamente seguro.- Listas auditadas: la lista grande de la EFF o la lista original de Reinhold que hemos mencionado antes.
- Listas en español: existen adaptaciones de la wordlist para castellano; busca “diceware español” en el repositorio de la EFF o en GitHub. Ten en cuenta que si incluyen tildes o ñ, algunos sistemas pueden no aceptarlas.
Si usas una herramienta digital, asegúrate de que genera los números con una fuente de entropía del sistema operativo (getrandom() en Linux, BCryptGenRandom en Windows), no con Math.random() ni similares.
Por qué Math.random() no sirve
Math.random() es un generador pseudoaleatorio (PRNG), no un generador criptográficamente seguro (CSPRNG). La diferencia importa.
Su estado interno es recuperable. En V8 (el motor de Node.js y Chrome) el algoritmo es xorshift128+, que mantiene 128 bits de estado interno. Con tan solo 5 o 6 valores de salida consecutivos, un atacante puede reconstruir el estado completo y predecir todos los valores futuros y pasados. Esto no es teoría: existen herramientas públicas que lo hacen.
Además, Math.random() se siembra típicamente con la hora del sistema u otras fuentes de baja entropía. Si el atacante sabe aproximadamente cuándo ejecutaste el código, el espacio de semillas a explorar se reduce mucho.
La alternativa correcta en JavaScript es crypto.getRandomValues(), que llama directamente al CSPRNG del sistema operativo:
// Mal: predecible con pocos valores observados
Math.random()
// Bien: entropía del sistema operativo, estado no recuperable
crypto.getRandomValues(new Uint32Array(1))[0]
Una nota sobre la seguridad del proceso
El método es tan seguro como el proceso que uses para aplicarlo:
- No uses dados de plástico barato: pueden tener sesgos leves por defectos de fabricación. Los dados de casino son de precisión y la mejor opción; para uso cotidiano cualquier dado estándar funciona bien.
- No pronuncies en voz alta ni los números ni las palabras mientras generas la passphrase. Un micrófono, una persona cerca o simplemente el hábito de murmurar son vectores reales.
- No enseñes la pantalla ni el papel durante el proceso: cámaras de seguridad, personas detrás o una pantalla visible desde fuera son riesgos que se ignoran fácilmente.
- Destruye el papel con los lanzamientos una vez hayas memorizado la passphrase.
Si quieres ir un paso más allá (y para la mayoría de personas no hace falta), imprime la wordlist y consulta los números en papel en lugar de en el ordenador. Evitas que un keylogger o una grabación de pantalla capture el proceso.
En resumen
Diceware no es nueva tecnología. Es un procedimiento de 1995 que sigue siendo relevante porque ataca el problema correcto: cómo generar secretos que un humano pueda recordar y un atacante no pueda predecir. Con seis palabras y unos minutos, tienes una passphrase con más entropía real que la mayoría de contraseñas que la gente usa hoy.
Lo único que necesitas es un dado y una wordlist.