Qué mira el comprobador
Hace dos cosas distintas, porque una contraseña puede fallar de dos maneras:
- Puede ser débil. Corta, hecha de palabras o con un patrón que un programa reconoce. Lo mide el analizador, que estima cuántos intentos haría falta para dar con ella.
- Puede estar filtrada. Aunque sea larga y rara, si ya apareció en una filtración da igual: está en las listas que se prueban primero. Lo comprueba la consulta a Have I Been Pwned.
Si está filtrada, el medidor baja a «muy débil» aunque los bits digan otra cosa.
Cómo se consulta sin enviar la contraseña
Se usa una técnica llamada k-anonimato, que propusieron Troy Hunt y Cloudflare en 2018:
- Tu navegador calcula la huella SHA-1 de la contraseña. Para password es 5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8.
- Envía solo los 5 primeros caracteres: 5BAA6.
- Have I Been Pwned devuelve todas las huellas filtradas que empiezan por esos 5 caracteres, varios cientos, con cuántas veces aparece cada una. Además pedimos que añada respuestas de relleno, para que ni el tamaño de la respuesta delate nada.
- Tu navegador busca el resto de la huella en esa lista. El servidor nunca sabe cuál de todas era la tuya.
Cómo leer el tiempo estimado
Suponemos un ataque sin conexión a 10.000 millones de intentos por segundo: alguien ha robado la base de datos de un servicio y prueba contraseñas con varias tarjetas gráficas contra un hash rápido. Es el peor caso habitual. Si el servicio protege bien las contraseñas (bcrypt, Argon2), el ataque es miles de veces más lento; si el atacante tiene que probar en la página de inicio de sesión, millones de veces más.
La guía cuánto se tarda en descifrar una contraseña tiene la tabla completa para cada escenario.
Preguntas frecuentes
¿Es seguro escribir mi contraseña aquí?
La contraseña se analiza en tu navegador y no se envía. Para la búsqueda en filtraciones calculamos su huella SHA-1 y mandamos solo los 5 primeros caracteres de esa huella a Have I Been Pwned, que devuelve todas las huellas filtradas que empiezan igual (cientos). La comparación final se hace en tu equipo. Ni nosotros ni ellos podemos saber qué has escrito.
Aun así, el mejor hábito es no escribir tus contraseñas reales en ninguna web. Si quieres comprobar una que usas, cámbiala igualmente si el resultado es malo.
¿Qué significa que mi contraseña aparece en filtraciones?
Que alguien, en algún momento, usó exactamente esa contraseña en un servicio que fue atacado, y ahora está en las listas que los atacantes prueban primero. No quiere decir que te hayan robado a ti, pero sí que la contraseña ya no protege nada. Cámbiala en todos los sitios donde la uses. En la guía qué hacer si tu contraseña se ha filtrado están los pasos.
¿Cómo se calcula la fortaleza?
Usamos zxcvbn, el analizador que creó Dropbox, con un diccionario propio en español e inglés. Busca palabras, nombres, fechas, recorridos de teclado (qwerty, asdf), repeticiones y sustituciones del tipo p4ssw0rd, y calcula cuántos intentos haría falta para dar con ella. Si no encuentra ningún patrón, la trata como aleatoria y la mide por su longitud y su variedad de caracteres.
¿Por qué el comprobador da menos bits que el generador para la misma contraseña?
Porque no tienen la misma información. El generador sabe con qué caracteres sorteó, así que su cifra es exacta. El comprobador solo ve el resultado: si tu contraseña de 16 caracteres no llevaba ningún número por casualidad, no puede saber que los números estaban permitidos y cuenta unos caracteres menos. Ante la duda, prefiere quedarse corto antes que darte una seguridad que no tienes.
La contraseña no aparece en filtraciones. ¿Ya es buena?
No necesariamente. Gato.Negro.1987 puede no estar en ninguna lista y aun así caer pronto, porque está hecha de piezas previsibles. Fíjate en los bits y en el tiempo: por debajo de 70 bits, cámbiala por una generada al azar.