Generador de contraseñas

Una contraseña salida del generador criptográfico de números aleatorios de tu navegador, con la longitud y los conjuntos de caracteres que elijas. Se produce en tu propia máquina y no se envía a ninguna parte, que en una contraseña no es un detalle sino todo el asunto: una que ha viajado por la red para llegar hasta ti es una que alguien ha podido ver.

20

Deja fuera l, I, 1, O y 0. Útil si tienes que leerla en pantalla, y cuesta unos bits.

  • Dónde se ejecuta No se sube nada, porque no hay archivo: se calcula en esta misma página.
  • Sin cola y sin cuenta Responde tan rápido como dé tu máquina, y nunca pregunta quién eres.
  • Tantas veces como quieras No se cuenta nada ni se limita nada: volver a responder no nos cuesta nada.

Cómo funciona

  1. Elige una longitud. Veinte es un buen valor por defecto; más largo sale gratis.
  2. Marca los conjuntos de caracteres que necesites. Algunos sistemas siguen rechazando los símbolos, por eso se pueden desactivar.
  3. Pulsa Generar. La contraseña aparece al instante, junto con su fuerza.
  4. Cópiala directamente a tu gestor de contraseñas. No intentes memorizarla: para eso está el gestor.

De dónde sale la aleatoriedad

Los caracteres se extraen con `crypto.getRandomValues`, el generador criptográfico de números aleatorios del navegador, alimentado por la reserva de entropía del sistema operativo. La alternativa, `Math.random`, está en todos los navegadores y aquí queda descartada: su algoritmo es público, su estado interno es pequeño y reconstruir ese estado a partir de unas pocas salidas es un problema resuelto con código publicado. Un generador construido sobre él produce contraseñas cuyo espacio de claves real es el tamaño de ese estado, por larga que parezca la contraseña.

A simple vista no se distinguen. Precisamente por eso vale la pena decir cuál se usa, y por eso hay en este proyecto una prueba que falla si `Math.random` llega a aparecer en ese archivo.

El sesgo que tienen casi todos los generadores

Convertir un byte aleatorio en un carácter aleatorio suele escribirse como `byte % tamaño`, y eso está sutilmente mal siempre que 256 no sea divisible entre el tamaño del alfabeto. Con veintiséis letras, los bytes del 0 al 255 cubren de la `a` a la `v` diez veces cada una y de la `w` a la `z` solo nueve: las primeras veintidós salen alrededor de un 11% más a menudo.

Es un defecto pequeño y es real, y es el más común con diferencia en los generadores de este tipo. La solución es descartar los valores de esa cola corta y volver a tirar, lo que cuesta un bucle y menos de dos tiradas por carácter de media. Es lo que ocurre aquí.

Qué significa la cifra de entropía

La entropía se expresa en bits y es la forma honesta de describir la fuerza de una contraseña: cada bit duplica el número de intentos necesarios. Una contraseña de veinte caracteres con los cuatro conjuntos ronda los 130 bits, es decir unas 2^130 posibilidades, un número sin significado físico, que es justamente la idea.

También hace visibles las concesiones. Quitar los símbolos de una contraseña de veinte caracteres cuesta unos 11 bits. Quitar los caracteres que se confunden cuesta unos 3. Añadir cuatro caracteres gana unos 26. Por eso la longitud gana siempre a la complejidad: esos cuatro caracteres de más valen más que todos los símbolos del teclado, y son más fáciles de aceptar en una contraseña que nunca vas a teclear a mano.

Todos los conjuntos marcados aparecen seguro

Si marcas dígitos, la contraseña lleva un dígito. Eso no es automático: sacar veinte caracteres al azar de un alfabeto mezclado deja una probabilidad real de no obtener ninguno de alguno de los conjuntos, y el resultado es una contraseña que una política rechaza y que tienes que volver a generar.

Los caracteres que lo garantizan se colocan primero y después se baraja todo, porque si no cada contraseña empezaría por una minúscula, luego una mayúscula, luego un dígito y luego un símbolo: un patrón que le quita los primeros caracteres al problema de adivinar. La garantía cuesta una fracción de bit, muy por debajo del redondeo de la cifra que se muestra.

Qué símbolos entran y cuáles no

Las comillas y la barra invertida se quedan fuera a propósito. Son los caracteres que rompen un comando de shell, una exportación CSV, una cadena de conexión o un archivo de configuración, y una contraseña que no se puede pegar donde hace falta es una contraseña que alguien sustituye por otra más débil.

Todo lo demás del rango ASCII imprimible está. Si un sistema rechaza el resultado, casi siempre es por una longitud máxima no declarada o una lista negra de símbolos: dos señales de que ahí se están guardando las contraseñas como no se deberían guardar, y una buena razón para no usar esa contraseña en ningún otro sitio.

Un generador es solo la mitad

Una contraseña fuerte que reutilizas es una contraseña débil, porque su fuerza deja de importar en cuanto se filtra cualquiera de los sitios que la tienen. El valor de generarlas está en que cada cuenta tenga la suya, y eso solo funciona si algo las recuerda por ti.

Así que usa un gestor de contraseñas, el que sea, incluido el que ya trae tu navegador. El generador de aquí es para el momento en que estás delante de un formulario; lo que lo hace valioso es que el resultado acabe en algún sitio donde puedas volver a encontrarlo.

Generador de contraseñas: preguntas frecuentes

¿Se envía la contraseña a un servidor?

No, y esta es la herramienta del sitio donde más importa. La genera tu propio navegador y solo existe en la página hasta que la copias. No se sube nada, no se registra nada y no hay cuenta. Un generador de contraseñas que funciona en un servidor es un generador cuya salida ha visto otra persona.

¿Cuánto debe medir mi contraseña?

Dieciséis es un suelo razonable y veinte es mejor. Más allá de unos treinta no queda nada que ganar frente a ningún atacante realista, así que la longitud solo la limita lo que acepte el sistema. Como deberías pegarla en vez de teclearla, la longitud no te cuesta nada.

¿Debo desactivar los caracteres que se confunden?

Solo si vas a leer la contraseña en una pantalla para teclearla en otro sitio: en un televisor, en una hoja impresa, en un aparato sin portapapeles. Reduce el alfabeto y cuesta unos pocos bits, que la cifra de entropía te enseña en cuanto lo activas.

¿Puede salir dos veces la misma contraseña?

En ningún sentido que importe. Con los ajustes por defecto hay unas 2^130 posibilidades, así que una repetición no ocurre ni aunque cada persona viva generase una por segundo durante toda la edad del universo.

¿Es gratis?

Sí, sin cuenta y sin límite de cuántas generes. Se ejecuta en tu máquina, así que no nos cuesta nada dejarte pulsar el botón otra vez.