Генератор случайных паролей
Выберите длину и наборы символов, затем сгенерируйте случайный пароль прямо в браузере — каждый символ берётся из crypto.getRandomValues(), криптографически стойкого источника случайности Web Crypto API, а не из более слабого Math.random(). Всё, что вы здесь генерируете, никогда не отправляется на сервер.
Пароль генерируется полностью в вашем браузере с помощью crypto.getRandomValues (криптографически стойкого источника случайности) — никогда не Math.random(), никогда не отправляется на сервер, нигде не логируется.
Результат
- Размер набора символов
- Оценка энтропии
Генератор случайных паролей
Стойкость пароля обычно измеряется в битах энтропии: сколько равновероятных паролей существует при таком же способе генерации — именно столько (в среднем половину этого числа) должен перебрать злоумышленник, прежде чем угадает ваш. Энтропия зависит ровно от двух вещей — от длины пароля и от размера набора символов, из которого выбирается каждая позиция. Этот инструмент выбирает каждый символ независимо и равновероятно из включённых наборов (строчные, заглавные буквы, цифры, символы) с помощью crypto.getRandomValues() — криптографически стойкого источника случайности Web Crypto API. Math.random() здесь никогда не используется: этот генератор быстрый и вполне пригоден для игр или симуляций, но не является криптографически стойким — в зависимости от движка JavaScript его внутреннее состояние в принципе может быть восстановлено по нескольким наблюдаемым результатам, что исключает его использование там, где нужна настоящая непредсказуемость — например, для пароля или API-ключа.
Формально энтропия пароля длиной N, выбранного из набора символов размером C, равна N × log2(C) бит. Если включены только строчные буквы, набор состоит из 26 символов (≈4,7 бита на символ); добавление заглавных букв и цифр расширяет набор до 62 символов (≈5,95 бита на символ); добавление символов увеличивает его ещё сильнее. 16-символьный пароль из полного набора (строчные + заглавные + цифры + символы), который предлагает этот инструмент, легко превышает 100 бит энтропии — этого более чем достаточно, чтобы никакая реалистичная офлайн-атака перебором не справилась с ним за человеческую жизнь, даже с использованием быстрой видеокарты, при условии, что пароль хранится правильно (медленным хешем с солью) на стороне сервиса.
Опция «исключить похожие символы» убирает визуально неразличимые символы — заглавную I, строчную l, цифру 1, заглавную O и цифру 0 — из всех включённых наборов. Эти символы легко перепутать, переписывая пароль с экрана от руки, диктуя его по телефону или набирая на устройстве, шрифт которого плохо их различает. Их исключение почти не уменьшает набор символов (всего пять символов из нескольких десятков), поэтому потеря энтропии минимальна — это компромисс ради удобства, а не ради безопасности, и его стоит включать всегда, когда пароль будет переписывать человек, а не буфер обмена менеджера паролей.
На практике реальная угроза, от которой защищает надёжный, уникальный, случайно сгенерированный пароль, — это credential stuffing: злоумышленники берут пароль, утёкший с одного взломанного сайта, и пробуют его — дословно — на всех остальных ваших учётных записях. Пароль, сгенерированный здесь заново для одной учётной записи, по определению нигде больше не мог быть использован — это главное практическое преимущество перед даже очень запоминающейся, придуманной человеком парольной фразой. Обратная сторона в том, что полностью случайную строку намеренно сложно запомнить — используйте вместе с ней менеджер паролей, а не пытайтесь запомнить её сами, а запоминающуюся парольную фразу оставьте для тех редких случаев (PIN-код разблокировки устройства, мастер-пароль самого менеджера паролей), когда её действительно нужно вводить по памяти.
Глоссарий
- Энтропия
- Мера в битах, показывающая непредсказуемость пароля — равна длине × log2(размер набора символов) для равномерно случайного пароля, как те, что генерирует этот инструмент.
- Набор символов
- Набор различных символов, из которых может состоять пароль — строчные, заглавные буквы, цифры и символы добавляют в него свои символы при включении.
- crypto.getRandomValues()
- Криптографически стойкий генератор псевдослучайных чисел из Web Crypto API, встроенный в каждый современный браузер — единственный источник случайности, который использует этот инструмент.
- Отбраковка выборки (rejection sampling)
- Приём для выбора равновероятного индекса в наборе символов без небольшого смещения, которое внесла бы обычная операция взятия остатка — за счёт отбрасывания и повторного получения случайных значений, которые исказили бы результат.
- Credential stuffing
- Атака, при которой пароль, утёкший с одного взломанного сайта, применяется к другим учётным записям жертвы — полностью нейтрализуется отказом от повторного использования пароля, чего заведомо не происходит со свежесгенерированным паролем.
- Парольная фраза
- Запоминающаяся альтернатива полностью случайному паролю — несколько случайных слов, соединённых вместе — которая жертвует частью энтропии на символ ради того, чтобы её было реально ввести по памяти.
Аналог в API
У этого инструмента нет аналога в API нашего сервиса — случайный пароль не является фактом об IP-адресе, поэтому нашему API нечего было бы вернуть здесь. Генерация выше происходит полностью на вашем устройстве — ничего никуда не отправляется. Если вам нужен именно наш API для поиска информации об IP, он покрывает геолокацию, данные ASN/сети и сигналы угроз/фрода для IP-адреса:
Часто задаваемые вопросы
- Используется ли Math.random() при генерации этого пароля?
- Нет — каждый символ берётся из crypto.getRandomValues(), криптографически стойкого источника случайности Web Crypto API. Единственное назначение этого инструмента — генерировать секреты, поэтому некриптографический источник был бы ошибкой, а не упрощением.
- Что делает опция «исключить похожие символы»?
- Она убирает визуально похожие символы I, l, 1, O и 0 из всех включённых наборов, чтобы результат было проще правильно переписать вручную или продиктовать. Это стоит лишь небольшой доли энтропии, поскольку убирается совсем немного символов.
- Какой длины должен быть мой пароль?
- 16 символов при включённых всех четырёх наборах символов легко превышают 100 бит энтропии — это надёжное значение по умолчанию для всего, что хранится с правильным солёным хешем. Используйте бóльшую длину для запаса или там, где сайт требует минимум.
- Отправляется ли мой пароль на сервер или где-то логируется?
- Нет — генерация происходит полностью в JavaScript вашего браузера. Эта страница не делает ни одного сетевого запроса для создания пароля, и ничего не записывается ни в какой лог.
- Зачем включать символы, если букв и цифр уже достаточно для большого пространства паролей?
- Каждый добавленный набор символов увеличивает размер пула, а значит и энтропию на символ — символы расширяют набор с 62 примерно до 85 символов. Это особенно важно для коротких паролей; при длине от 16 символов разница меньше, но всё ещё достаётся бесплатно.
- Стоит ли использовать этот инструмент вместо встроенного генератора в моём менеджере паролей?
- Подойдёт и то, и другое — оба используют криптографически стойкий источник случайности. Этот инструмент полезен, когда нужен разовый надёжный пароль без открытия менеджера паролей, или чтобы увидеть точные параметры и расчёт энтропии за результатом.
Понравился инструмент? Бесплатный аккаунт нашего API даёт 1000 запросов в день.Смотреть документацию API →