devopscodepro
Язык
Пароль не покидает страницу — отправляются только 5 символов его хеша.

Проверка утечки пароля

Проверка, встречается ли пароль в известных утечках — пароль не покидает браузер, отправляются 5 символов его хеша.

пароль хешируется SHA-1 в вашем браузере; отправляются только первые 5 hex-символов хеша, совпадение определяется локально (k-анонимность)
Данные Have I Been Pwned (Pwned Passwords), haveibeenpwned.com

Как проверка сохраняет пароль

Ваш пароль хешируется SHA-1 прямо на этой странице, и отправляются только первые пять символов хеша. Сервис возвращает все суффиксы хешей с этими пятью символами — несколько сотен, — и совпадение определяется здесь, локально. Это k-анонимность: ни мы, ни Have I Been Pwned не узнаём, о каком пароле шла речь.

Показанное число — сколько раз именно этот пароль встречается в известных базах утечек, то есть сколько раз он встречается в списках, которыми пользуются атакующие.

То есть пароль действительно не покидает страницу?

Верно. Уходят пять шестнадцатеричных символов его хеша, которым соответствует примерно один хеш из миллиона. Это можно проверить во вкладке сети браузера: в теле запроса только пятисимвольный префикс и ничего больше.

Пароль не найден. Значит, он безопасен?

Значит, его нет в этом корпусе, а это не то же самое, что стойкость. Пароль, который пока никто не слил, всё равно подбирается за секунды, если он короткий или предсказуемый. Отсутствие здесь — нижняя планка, а не вердикт.

Пароль найден. Что делать?

Сменить его везде, где использовался, начиная с сервисов, где он общий. Слитый пароль уже в списках для credential stuffing, поэтому риск не в том, что его взломают, — его просто попробуют.

Почему SHA-1, он же скомпрометирован?

SHA-1 скомпрометирован по стойкости к коллизиям, а здесь это не имеет значения: хеш служит индексом в публичном наборе данных, а не границей безопасности. Набор опубликован в SHA-1, поэтому и поиск идёт по SHA-1.

Смежные инструменты: Генератор паролей, bcrypt / htpasswd и Декодер JWT.