Password Generator

Generador de Contraseñas Fuertes: Contraseñas Seguras Aleatorias

Genera contraseñas aleatorias criptograficamente seguras. Personaliza longitud, conjuntos de caracteres y cantidad. Usa Web Crypto API.

100% del lado del cliente. Tus datos nunca salen de tu navegador.

Entropía: 129 bitsVery Strong

Que Hace Fuerte a una Contraseña

Una contraseña fuerte generada por maquina tiene dos propiedades: alta entropía (impredecibilidad) y sin patrones (sin palabras de diccionario, recorridos de teclado, sustituciones).

La entropía se mide en bits. Cada bit duplica el número de contraseñas posibles que un atacante debe probar. Una contraseña elegida uniformemente al azar de un conjunto de N caracteres posibles tiene log2(N) bits de entropía por carácter.

Conjunto de caracteresCaracteres disponiblesEntropía por carácter
Solo minusculas264,7 bits
Minusculas + digitos365,2 bits
Mayusculas + minusculas + digitos625,9 bits
ASCII imprimible completo956,6 bits

Una contraseña de 20 caracteres del conjunto ASCII imprimible completo tiene aproximadamente 130 bits de entropía. Una contraseña de 20 caracteres limitada a solo minusculas tiene 94 bits. El conjunto de caracteres importa, pero la longitud importa aún más: agregar un carácter del conjunto de 95 caracteres agrega 6,6 bits de entropía. Duplicar el conjunto de caracteres de 26 a 95 solo agrega aproximadamente 1,9 bits por carácter.

NIST SP 800-63B Sobre Contraseñas

Las directrices NIST (actualizadas en 2024) merecen conocerse porque contradicen la sabiduria convencional heredada sobre politicas de contraseñas:

Para contraseñas generadas por maquina almacenadas en un gestor, ninguna de estas restricciones de politica importa. Usa entropía completa y máxima longitud.

Entropía de Contraseñas vs Passphrases

Una contraseña aleatoria de 20 caracteres y una passphrase son herramientas diferentes para situaciones diferentes.

Una passphrase Diceware de 4 palabras (elegidas al azar de 7776 palabras):

correct horse battery staple

Entropía: log2(7776^4) ~ 51,7 bits/palabra x 4 = aproximadamente 207 bits. Mas entropía que una contraseña aleatoria de 20 caracteres.

Una passphrase Diceware de 6 palabras tiene aproximadamente 310 bits. Es irrompible. Y se puede escribir y memorizar, lo que la convierte en la elección correcta para:

Usa contraseñas de caracteres aleatorios para todo lo almacenado en tu gestor. Usa passphrases para el punado de credenciales que necesitas recordar o escribir regularmente.

Web Crypto API vs Math.random()

La diferencia de implementación no es sutil:

// INCORRECTO: Math.random() no es criptograficamente seguro
function insecurePassword(length) {
  const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  return Array.from({ length }, () => chars[Math.floor(Math.random() * chars.length)]).join("");
}

// CORRECTO: crypto.getRandomValues() es un CSPRNG
function securePassword(length) {
  const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";
  const array = new Uint32Array(length);
  crypto.getRandomValues(array);
  return Array.from(array, (n) => chars[n % chars.length]).join("");
}

La operación % chars.length agrega un pequeno sesgo de modulo cuando el tamaño del conjunto de caracteres no divide uniformemente 2^32. Para un conjunto de 95 caracteres y un valor aleatorio de 32 bits, el sesgo es insignificante en la práctica (los caracteres más comunes aparecen aproximadamente un 0,002% más frecuentemente que los menos comunes). Para una aplicación critica de seguridad, usa muestreo por rechazo para eliminar incluso este pequeno sesgo.

Como Genera Contraseñas Esta Herramienta

El generador funciona completamente en tu navegador. Ninguna contraseña se envía a ningun servidor. La fuente de aleatoriedad es el método crypto.getRandomValues() de Web Crypto API, que todos los navegadores modernos exponen y que obtiene valores del CSPRNG del sistema operativo.

Despues de generar, copia la contraseña directamente a tu gestor de contraseñas. Evita pegarla en ubicaciones intermedias donde el valor podría guardarse o sincronizarse (borradores de correo electronico, aplicaciones de notas, ventanas de chat).