Использование одинаковых паролей является чрезвычайно проблематичным. Печально, что люди не осведомлены о связанных с этим рисках для их учетных записей и данных. Атакующие используют адреса электронной почты и пароли из предыдущих утечек данных и пытаются получить доступ к другим веб-сайтам. Менеджеры паролей, которые генерируют случайные пароли, являются отличной мерой защиты от таких атак, генерируя случайные пароли для каждого веб-сайта. Но что насчет всех старых паролей? Мы только что выпустили новую функцию, позволяющую пользователям проверять свои пароли в огромной базе данных с помощью haveibeenpwned.com. С этим новым инструментом в нашем арсенале можно проверять пароли по базе данных, содержащей почти 5 миллиардов учетных записей с паролями.
Сервис Pwned Passwords был создан в августе 2017 года после того, как NIST выпустил рекомендации специально по проверке паролей пользователей на наличие данных о взломах. Обоснование этих рекомендаций и предложения по использованию этих данных в приложениях подробно описаны в блоге Introducing 306 Million Freely Downloadable Pwned Passwords. В феврале 2018 года была выпущена версия 2 сервиса, содержащая более полумиллиарда паролей, каждому из которых теперь также присвоено количество случаев его утечки.
(Источник: https://haveibeenpwned.com/Passwords)
Маленькое видео, которое лучше передает, как это работает. API показывает прогресс анализа. Поскольку это бесплатный сервис, мы учитываем ограничение скорости запросов и не хотим причинять вред, поэтому запросы ограничены одним запросом в 1,5 секунды.
На первом этапе все секреты, содержащие ваши пароли, загружаются с сервера. На втором этапе каждый секрет расшифровывается в вашем браузере перед тем, как будет создан хэш sha1 пароля. Хэши sha1 имеют длину 160 бит (40 символов в шестнадцатеричной системе). Хэш sha1 разбивается на префикс (5 шестнадцатеричных символов) и суффикс (35 шестнадцатеричных символов). Префикс отправляется на API haveibeenpwned.com, которое проверяет свою базу данных и возвращает список суффиксов. Клиент сравнит суффикс пароля со списком суффиксов, который он получил, и пометит пароль как скомпрометированный или нет. Это эффективный способ запроса базы данных паролей без фактической отправки пароля (или его слабых производных) и является известным как k-анонимизация.