Reutilizar senhas é extremamente problemático. É triste que as pessoas não saibam dos riscos envolvidos para suas contas e dados. Atacantes usam endereços de email e senhas de vazamentos anteriores e tentam acessar outros sites. Gerenciadores de senhas que geram senhas aleatórias são uma medida perfeita contra esses ataques, gerando senhas aleatórias para cada site. Mas o que fazer com todas aquelas senhas antigas? Acabamos de lançar um novo recurso, permitindo que os usuários verifiquem suas senhas contra um enorme banco de dados com a ajuda do haveibeenpwned.com. Com essa nova ferramenta em nosso arsenal, é possível verificar senhas contra um conjunto de dados de quase 5 bilhões de contas com senhas.
O serviço Pwned Passwords foi criado em agosto de 2017 após o NIST divulgar orientações recomendando especificamente que senhas fornecidas pelos usuários sejam verificadas contra dados de violações existentes. A justificativa para este conselho e sugestões sobre como os aplicativos podem aproveitar esses dados são descritos em detalhes na postagem do blog intitulada Introducing 306 Million Freely Downloadable Pwned Passwords. Em fevereiro de 2018, a versão 2 do serviço foi lançada com mais de meio bilhão de senhas, cada uma agora também com uma contagem de quantas vezes foram expostas.
(Fonte: https://haveibeenpwned.com/Passwords)
Um pequeno vídeo dando uma noção melhor de como funciona. A API mostra o progresso da análise. Como é um serviço gratuito, honramos a limitação e não queremos causar danos, então as solicitações são limitadas a uma solicitação a cada 1,5 segundos.
Na primeira etapa, todos os segredos que contêm suas senhas são baixados do servidor. Na segunda etapa, cada segredo é descriptografado em seu navegador antes que um hash sha1 da senha seja criado. Hashes sha1 têm 160 bits de comprimento (40 caracteres em hexadecimal). O hash sha1 é dividido em um prefixo (5 caracteres hex) e um sufixo (35 caracteres hex). O prefixo é enviado para a API do haveibeenpwned.com, que verifica seu banco de dados e retorna uma lista de sufixos. O cliente comparará o sufixo da senha contra a lista de sufixos que recebeu e marcará a senha como comprometida ou não. Esta é uma maneira eficiente de consultar o banco de dados de senhas, sem realmente enviar a senha (ou derivativos fracos) e é conhecida como k-anonimização.