Reutilizar contraseñas es extremadamente problemático. Es triste que la gente no conozca los riesgos involucrados para su cuenta y datos. Los atacantes usan direcciones de correo electrónico y contraseñas de brechas previas e intentan obtener acceso a otros sitios web. Los gestores de contraseñas que generan contraseñas aleatorias son una medida perfecta contra esos ataques, generando contraseñas aleatorias para cada sitio web. Pero ¿qué pasa con todas esas contraseñas antiguas? Acabamos de lanzar una nueva función, que permite a los usuarios verificar sus contraseñas contra una enorme base de datos con la ayuda de haveibeenpwned.com. Con esta nueva herramienta en nuestro cinturón, es posible verificar contraseñas contra un conjunto de datos de casi 5 mil millones de cuentas con contraseñas.
El servicio Pwned Passwords se creó en agosto de 2017 después de que NIST publicara una guía recomendando específicamente que las contraseñas proporcionadas por los usuarios se verificaran contra brechas de datos existentes. La razón de este consejo y sugerencias sobre cómo las aplicaciones pueden aprovechar estos datos se describen en detalle en la publicación de blog titulada Introducing 306 Million Freely Downloadable Pwned Passwords. En febrero de 2018, se lanzó la versión 2 del servicio con más de medio mil millones de contraseñas, cada una ahora también con un recuento de cuántas veces se había visto expuesta.
(Fuente: https://haveibeenpwned.com/Passwords)
Un pequeño video que da una mejor sensación de cómo funciona. La API muestra el progreso del análisis. Como es un servicio gratuito, respetamos la limitación y no queremos causar ningún daño, por lo que las solicitudes están limitadas a una solicitud cada 1.5 segundos.
En un primer paso, todos los secretos que contienen tus contraseñas se descargan del servidor. En un segundo paso, cada secreto se desencripta en tu navegador antes de que se cree un hash sha1 de la contraseña. Los hashes sha1 tienen 160 bits de largo (40 caracteres en hex). El hash sha1 se divide en un prefijo (5 caracteres hex) y un sufijo (35 caracteres hex). El prefijo se envía a la API de haveibeenpwned.com, que verifica su base de datos y devuelve una lista de sufijos. El cliente comparará el sufijo de la contraseña con la lista de sufijos que recibió y marcará la contraseña como comprometida o no. Esta es una manera eficiente de consultar la base de datos de contraseñas, sin enviar realmente la contraseña (o derivados débiles) y es conocido como k-anonimización.