Esta herramienta reúne tres generadores de contraseñas con propósitos distintos. Todos se ejecutan localmente en el navegador: no se envían datos a ningún servidor y el sistema funciona sin conexión.
Genera una secuencia de palabras aleatorias tomadas de un diccionario español de ~10.000 formas. A diferencia de las cadenas de símbolos aleatorios, las frases están diseñadas para ser más fáciles de memorizar y, especialmente, más fáciles de comunicar (por ejemplo, dictándolas por teléfono) sin errores de transcripción.
Seguridad vs. Longitud: Es importante entender que, a igualdad de caracteres, una contraseña aleatoria es más robusta que una frase. Sin embargo, compensamos esto usando mayor longitud: 6 palabras aleatorias equivalen a ~80 bits de entropía. Cada palabra adicional multiplica por ≈ 10.000 el espacio de búsqueda.
Cuándo usarla: Como Clave Maestra para el modo Determinista o para un gestor de contraseñas. Las transformaciones (leet, mayúsculas, prefijos) ayudan a cumplir requisitos de ciertos servicios, pero no aportan entropía real: la fuerza reside en la aleatoriedad de las palabras elegidas.
Genera una cadena de caracteres usando el motor criptográfico del sistema (crypto.getRandomValues). Es la opción con mayor densidad de seguridad por carácter: una cadena corta de símbolos aleatorios puede ser tan fuerte como una frase muy larga.
Cuándo usarla: Para almacenar en un gestor (Bitwarden, KeePass, llavero del sistema). Al ser muy difíciles de recordar y de dictar, su uso ideal es mediante "copiar y pegar" desde un gestor que las guarde por ti.
No genera aleatoriedad nueva, sino que deriva una clave fija a partir de una Clave Maestra y el nombre de un Servicio (usando PBKDF2-HMAC-SHA256 con 600.000 iteraciones). Con los mismos datos obtendrás siempre el mismo resultado.
Cuándo usarla: Para tener una contraseña distinta por cada servicio sin depender de un archivo o nube. Solo necesitas recordar tu Clave Maestra; el resto se recalculan al instante. La seguridad de este método depende totalmente de la Clave Maestra, por lo que se recomienda generarla primero en la pestaña "De Frase".
Esta herramienta es estática y privada. Para usarla sin conexión o auditar el código, puedes descargar o guardar los ficheros necesarios: HTML, CSS, JS y el Diccionario. Ningún dato introducido o generado sale jamás de tu equipo.
La seguridad de una passphrase se mide asumiendo que el atacante conoce el diccionario base utilizado. Es la métrica realista frente a ataques dirigidos:
Calcular la entropía como longitud × log₂(pool de caracteres) sobrestima drásticamente la seguridad real. Un atacante serio no realiza fuerza bruta carácter a carácter: aplica ataques de diccionario con reglas de transformación (leet, mayúsculas, prefijos comunes), exactamente las operaciones que ofrece este generador. Por eso se muestra únicamente la entropía de diccionario.
No. Las opciones de capitalización, leet, prefijo y sufijo no aumentan la entropía real si son deterministas o previsibles. Su único propósito es cumplir requisitos de formato de servicios que exigen, por ejemplo, al menos un número y un símbolo. Los crackers modernos (Hashcat con best64.rule) aplican estas transformaciones automáticamente sobre cada entrada del diccionario.
La única forma de aumentar la seguridad real es añadir más palabras aleatorias.
crypto.getRandomValues()). Elegirlas uno mismo reduce la entropía real a una fracción de la teórica.El tamaño del diccionario y el uso de caracteres locales (ñ, acentos) impactan la seguridad.
| Idioma / Diccionario | Palabras (N) | Entropía por palabra | Ej. 6 Palabras |
|---|---|---|---|
| Español (este generador) Con acentos y 'ñ' | 10.000 | ≈ 13.28 bits | ≈ 79.68 bits |
| Inglés (Diccionario EFF) Sin acentos | 7.000 | ≈ 12.77 bits | ≈ 76.62 bits |
Nota: cada bit de entropía duplica el número de combinaciones posibles (2^H). La diferencia de 3,09 bits entre ambos modelos significa que una frase del diccionario de 10.000 palabras requiere ~8,3 veces más esfuerzo computacional para ser descifrada que una de 7.000.
Este generador no pretende producir contraseñas fáciles de memorizar, sino contraseñas muy fuertes usando el diccionario de 10.000 formas como "alfabeto". Cada palabra aleatoria aporta ≈ 13,28 bits de entropía, así que 6 palabras equivalen a un espacio de búsqueda de 280 candidatos: lo mismo que una contraseña de 6 caracteres elegida de un alfabeto de 10.000 símbolos distintos.
Su caso de uso principal es la Clave Maestra del generador Determinista de esta misma herramienta: una frase de 6+ palabras es una semilla con calidad criptográfica suficiente para alimentar la derivación PBKDF2. También sirve como clave maestra de un gestor de contraseñas o como clave de cifrado de disco — cualquier caso en el que necesites una única contraseña muy fuerte que sustente todo lo demás.
Para contraseñas que vas a almacenar directamente en un gestor (una por servicio), la pestaña "Aleatoria" ofrece mayor densidad de entropía por carácter y es la opción recomendada.
La seguridad de una contraseña no se mide por su complejidad visual, sino por su entropía (H). Este valor representa la incertidumbre o el número de intentos que un atacante debe realizar para adivinarla por fuerza bruta pura, asumiendo que conoce el conjunto de caracteres y la longitud utilizada.
La entropía se mide en bits. Cada bit adicional duplica el número de combinaciones posibles. Una contraseña de 81 bits requiere el doble de potencia computacional para ser descifrada que una de 80 bits.
Con 100 bits de entropía existen 2100 combinaciones. Este es un número inmenso (un 1 seguido de 30 ceros), lo que lo hace matemáticamente inviable para la tecnología actual.
La entropía depende directamente de la longitud de la clave (L) y el número de caracteres disponibles en la base (R):
Aumentar el tamaño de la base hace que cada carácter individual "transporte" más entropía, permitiendo claves más cortas con el mismo nivel de seguridad.
| Nombre de Base | Símbolos (R) | Bits/car. | Ej. 16 chars |
|---|---|---|---|
| Base16 (Hex) | 16 | 4.00 | 64.0 bits |
| Base32 | 32 | 5.00 | 80.0 bits |
| Base58 | 58 | ~5.86 | ~93.7 bits |
| Base62 | 62 | ~5.95 | ~95.3 bits |
| Base64 | 64 | 6.00 | 96.0 bits |
| Base Esp Simple | 74 | ~6.21 | ~99.3 bits |
| Base85 | 85 | ~6.41 | ~102.5 bits |
| Base94 | 94 | ~6.55 | ~104.9 bits |
El núcleo del generador es PBKDF2 (Password-Based Key Derivation Function 2), un algoritmo estandarizado para transformar una contraseña humana en una secuencia de bits de alta calidad criptográfica. Se configura con HMAC-SHA256 como función interna y 600.000 iteraciones.
La finalidad de iterar cientos de miles de veces es imponer un coste computacional asimétrico. Para el usuario legítimo, que ejecuta la derivación una única vez, dura una fracción de segundo. Para un atacante que intenta adivinar la Clave Maestra por fuerza bruta, cada intento requiere ese mismo cálculo completo; probar mil millones de candidatos pasa de ser cuestión de segundos a requerir hardware especializado durante meses o años.
El parámetro de 600.000 iteraciones sigue las recomendaciones actuales de OWASP para PBKDF2-HMAC-SHA256 y debe revisarse periódicamente a medida que mejora el hardware de ataque.
Una sal es un valor que se añade a la Clave Maestra antes de derivar los bits. En este generador, la sal es la concatenación del campo Servicio con el campo Versión. Cambiar cualquiera de las dos produce una secuencia de 512 bits completamente distinta, sin correlación aparente con la anterior.
Aislamiento entre servicios. Con una única Clave Maestra, el generador produce una contraseña distinta e impredecible para cada servicio. Si un servicio sufre una filtración, esa información no permite deducir la Clave Maestra ni la contraseña de otro servicio.
Protección frente a tablas precomputadas. Incluir un texto específico del servicio en la sal hace inútiles las rainbow tables genéricas. Un atacante tendría que precalcular una tabla específica para cada servicio, lo que, combinado con las 600.000 iteraciones, resulta inviable en la práctica.
Los gestores de contraseñas convencionales guardan una base de datos cifrada con todas las credenciales. Ese archivo puede perderse, corromperse o filtrarse. Un generador determinista funciona de forma distinta: no almacena nada. La contraseña de un servicio se recalcula bajo demanda cada vez que se necesita, a partir de la Clave Maestra y el nombre del servicio. El único dato persistente que necesita el usuario es lo que recuerda: su Clave Maestra.
Durante el uso, la contraseña generada reside únicamente en la memoria de la pestaña del navegador. Al cerrarla, desaparece. Esta página es un archivo estático que se ejecuta localmente: no envía la Clave Maestra ni la contraseña derivada a ningún servidor.
PBKDF2 produce 64 bytes (512 bits). Cada byte es un número entre 0 y 255, y hay que convertirlos a caracteres del alfabeto permitido.
El alfabeto por defecto contiene 74 caracteres: las 26 letras mayúsculas, las 26 minúsculas, los 10 dígitos y 14 símbolos de uso común (!@#$%^&*()_+-=). Se excluyen caracteres que causan problemas frecuentes en URLs, shells, SQL o sistemas de archivos.
La conversión byte → carácter se hace mediante módulo. Aplicado ingenuamente introduce un sesgo estadístico: como 256 no es múltiplo de 74, los primeros índices aparecen con probabilidad ligeramente superior. El generador descarta cualquier byte con valor igual o superior al mayor múltiplo de 74 por debajo de 256 (222), garantizando que todos los caracteres son equiprobables.
Este descarte consume entropía. Si los requisitos exigen más caracteres de los que la entropía disponible puede producir, se señala con el error "Entropía agotada".
El campo Versión es un número entero que forma parte de la sal. Modificarlo regenera una contraseña completamente distinta, sin relación con las versiones anteriores.
Renovación periódica. Si hay que cambiar la contraseña (política interna, sospecha de exposición…), basta con incrementar el número de versión.
Servicios con políticas restrictivas. En lugar de forzar la composición mediante restricciones manuales, el procedimiento recomendado es incrementar la versión hasta que la contraseña generada cumpla los requisitos del servicio. Como la derivación es determinista, la próxima vez que se necesite basta con probar versiones crecientes desde 1.
El uso de versiones es preferible a las restricciones manuales porque no reduce la entropía: cada incremento sortea una contraseña nueva en el espacio completo de posibilidades.
Los cuatro campos bajo Restricciones tienen dos modos:
Modo automático (vacío, placeholder "-"). Muestra el recuento real de cada clase en la contraseña generada. Informativo, no impone nada.
Modo manual (borde naranja con un número distinto de cero). Exige ese mínimo de caracteres de la clase. Si no se cumple naturalmente, se activa el Modo Adaptado: se extraen del flujo de bytes los caracteres obligatorios, se rellena el resto, y se aplica un barajado Fisher-Yates con los bytes restantes. Introducir 0 o vaciar devuelve a modo automático.
Las restricciones manuales deben usarse solo si es estrictamente necesario: son frágiles de recordar (hay que recordar el valor exacto de cada restricción) y reducen ligeramente la entropía al restringir el conjunto de contraseñas posibles.
Paso 1. Elegir una Clave Maestra. Larga, memorable y usada exclusivamente aquí. Una passphrase de 6+ palabras es una opción razonable (mira la pestaña "De Frase"). Si se olvida, no hay forma de recuperar ninguna contraseña derivada.
Paso 2. Introducir el nombre del servicio. Criterio consistente (p. ej. el dominio principal en minúsculas: google.com). El indicador CHK junto a la Clave Maestra muestra un hash corto de 4 caracteres para verificar visualmente que se ha tecleado la clave correcta.
Paso 3. Ajustar longitud y versión. Longitud por defecto 16, hasta 64 si el servicio lo permite. Versión inicial 1, solo se modifica si hace falta regenerar.
Paso 4. Copiar y usar. Al cerrar la pestaña la contraseña desaparece de memoria.
Paso 5. Si el servicio rechaza la contraseña. Incrementar la versión hasta que la generada cumpla los requisitos.