«Проверьте пароль по базам утечек» звучит как ловушка: чтобы узнать, есть ли пароль в базе, его вроде бы надо туда отправить. Приём, который это обходит, придумали давно, и он достаточно изящен, чтобы разобрать его целиком.
Три шага
-
Пароль превращается в хеш прямо у вас
В браузере, без единого сетевого запроса. Хеш — строка из сорока символов, из которой пароль обратно не получить.
-
На сервер уходят только первые пять символов
Не весь хеш, а его начало. Этого мало, чтобы опознать пароль: под такое начало подходят десятки тысяч разных хешей.
-
Сервер присылает весь список подходящих
Все хеши из своей базы, начинающиеся на эти пять символов. Сравнение происходит у вас в браузере, среди присланных.
Он видит запрос на пять символов и отдаёт весь список под них. Какой именно из тридцати тысяч ваш — и ваш ли вообще хоть один — он не узнаёт: сравнение идёт уже после ответа, на вашей стороне.
Что сервер всё-таки видит
| Что | Видит ли |
|---|---|
| Ваш пароль | Нет |
| Полный хеш пароля | Нет |
| Первые пять символов хеша | Да — но это тысячи разных паролей |
| Ваш IP-адрес и время запроса | Да — как при любом запросе |
| Нашёлся ли пароль в базе | Нет — сравнение идёт у вас |
| Сколько раз вы проверяли | Да — по числу запросов |
Что делать с результатом
Найденный пароль означает одно: он есть в публичных базах, и его пробуют автоматически на сотнях сайтов. Не важно, откуда он туда попал и насколько был сложным.
- Меняйте везде, где он использовался, а не только там, где вспомнили.
- Начните с почты — через неё восстанавливается остальное.
- Не пытайтесь «поправить» пароль, добавив символ: варианты перебирают автоматически.
Не найденный пароль не означает, что он надёжен. Базы неполны, и свежая утечка попадает в них не сразу — это проверка на известную компрометацию, а не аттестат прочности. Что делает пароль стойким, разобрано в статье про энтропию.