«Безопасно ли генерировать пароль на случайном сайте?» — справедливый вопрос: вы просите инструмент, который не контролируете, создать секрет, который вы вот-вот доверите своим учётным записям. Честный ответ таков: это полностью зависит от того, как работает инструмент, и вам не нужно верить сайту на слово. В этой статье объясняется, что вы можете проверить самостоятельно.
Коротко
- Реальный риск не в самом пароле, а в том, передаёт ли сайт сгенерированное на сервер, где это может быть записано.
- Вы можете проверить это сами: откройте инструменты разработчика браузера, перейдите на вкладку «Сеть», сгенерируйте пароль и посмотрите, срабатывает ли какой-либо запрос.
- По-настоящему клиентский генератор не создаёт никакой сетевой активности при генерации пароля — JavaScript полностью выполняется в вашем браузере.
- Отдавайте предпочтение инструментам, которые явно указывают на использование Web Crypto API (
crypto.getRandomValues()), а не тем, которые вообще не раскрывают источник случайности.
Короткий ответ
Онлайн-генератор паролей безопасен в использовании только тогда, когда он генерирует пароль полностью в вашем браузере и никогда никуда его не передаёт. PassGenerate работает именно так: генерация происходит локально через Web Crypto API, и вы можете проверить это сами менее чем за минуту с помощью встроенных инструментов разработчика браузера, не доверяя заявлениям на сайте.
Как самостоятельно проверить генератор
Для этой проверки не нужно быть разработчиком:
- Откройте сайт генератора паролей.
- Откройте инструменты разработчика браузера (в большинстве браузеров — F12 или правый клик → «Просмотреть код»).
- Перейдите на вкладку Сеть.
- Сгенерируйте пароль на странице.
- Понаблюдайте за вкладкой «Сеть». Если это действительно клиентский инструмент, вы увидите, что не срабатывает ни одного нового запроса при генерации пароля — никуда ничего не отправляется. Если вы увидите, что запрос уходит на сервер именно в момент нажатия кнопки генерации, стоит разобраться подробнее: проверьте, какие данные отправляются в теле запроса.
Это работает потому, что JavaScript, выполняющийся в вашем браузере, может либо целиком выполнить работу локально (вычислить случайный пароль и показать его — и всё), либо отправить данные на сервер и дождаться ответа. Вкладка «Сеть» показывает вам, что происходит на самом деле, — сайт не может это подделать незаметно для вас, поскольку вы проверяете реальный трафик, отправляемый вашим браузером.
Что технически означает «генерация на стороне клиента»
По-настоящему клиентский генератор паролей использует собственный Web Crypto API браузера, конкретно crypto.getRandomValues(), для создания криптографически стойких случайных байтов, а затем сопоставляет эти байты с выбранным набором символов полностью на JavaScript, работающем на вашем устройстве. Ничто в этом процессе не требует сетевого запроса и не выигрывает от него. Если инструменту нужно, чтобы ваш браузер общался с сервером для «генерации» пароля, это архитектурно не нужно для этой задачи, что само по себе стоит подвергнуть сомнению.
Тревожные признаки, на которые стоит обращать внимание
- Не раскрыт источник случайности. Если сайт не сообщает, как он генерирует случайность, вы не можете проверить, использует ли он CSPRNG вместо более слабого метода вроде
Math.random(), который в некоторых движках достаточно предсказуем, чтобы восстановить его по наблюдаемым выходным значениям, — непригоден для чего-либо связанного с безопасностью. - Сетевая активность во время генерации. Подтверждается описанной выше проверкой через инструменты разработчика. Даже если сайт утверждает, что ничего не записывает, при наличии запроса существует возможность его записи — намеренно или из-за ошибки на стороне сервера.
- Требование учётной записи или email до того, как можно воспользоваться инструментом. У генератора паролей нет никакой законной причины требовать ваш адрес электронной почты для генерации случайной строки.
- Чрезмерное количество сторонних скриптов. Обилие рекламных или аналитических технологий на странице, работающей с секретами, увеличивает поверхность атаки — чем больше стороннего кода выполняется на странице, тем больше возможностей для скомпрометированного скрипта перехватить то, что происходит на странице, даже если сам генератор клиентский. Это не гипотетическая проблема: в июне 2024 года был скомпрометирован широко используемый CDN Polyfill.js, и внедрённый вредоносный код был показан посетителям более 490 000 сайтов, которые просто подключали этот скрипт в качестве рутинной зависимости, — ни один из этих сайтов не был индивидуальной целью и не сделал ничего плохого, кроме доверия стороннему скрипту. Средний сайт сегодня загружает десятки скриптов, около двух третей из которых — сторонние, а доля сторонних скриптов в утечках данных резко растёт из года в год. Это не означает, что страница со сторонними скриптами автоматически небезопасна, — но это реальная причина предпочесть генератор с лаконичной, проверяемой страницей тому, что перегружен посторонними инструментами.
Почему это важнее для одних паролей, чем для других
Риск использования ненадёжного генератора масштабируется в зависимости от того, что защищает пароль. Генерация одноразового пароля для разовой подписки на рассылку несёт мало риска даже от сомнительного инструмента. Генерация вашего банковского пароля, пароля электронной почты или главного пароля вашего менеджера паролей — это как раз тот случай, когда стоит настаивать на самостоятельной проверке клиентского поведения, а не доверять заявлениям, — потому что именно для таких паролей записанная копия в открытом виде действительно имела бы значение.
Ключевые выводы
- Главный вопрос безопасности для любого онлайн-генератора паролей — передаёт ли он пароль куда-либо; проверьте это сами через вкладку «Сеть», а не доверяйте заявлениям.
- По-настоящему клиентская генерация создаёт нулевое количество сетевых запросов при генерации пароля.
- Отдавайте предпочтение инструментам, которые явно указывают на использование CSPRNG из Web Crypto API, а не тем, которые не объясняют источник случайности.
- Применяйте более строгую проверку к генераторам паролей высокого риска (банковские, email, главные пароли), чем к генераторам одноразовых паролей низкого риска.
Почему вы можете доверять PassGenerate
- Пароли генерируются локально в вашем браузере с помощью Web Crypto API.
- Пароли не передаются на серверы.
- Используется криптографически стойкий генератор псевдослучайных чисел (CSPRNG).
- Соблюдаются современные передовые практики безопасности, рекомендованные NIST и OWASP.
Источники
- Компрометация цепочки поставок CDN Polyfill.js, июнь 2024 года
- Документация Web Crypto API от MDN
- Шпаргалка OWASP по хранению паролей
- NIST SP 800-63B – Руководство по цифровой идентификации
Итог
Вам не нужно верить на слово онлайн-генератору паролей относительно того, как он работает, — минута с вкладкой «Сеть» вашего браузера точно скажет, передаёт ли он то, что генерирует. Отдавайте предпочтение инструментам, которые используют CSPRNG из Web Crypto API, не запрашивают ничего сверх генерации пароля и для которых вы лично подтвердили отсутствие сетевой активности, — и оставляйте самую строгую проверку для паролей, которые имели бы наибольшее значение в случае проблемы.