Сотрудник поддержки диктует гостевой пароль от Wi-Fi. Администратор набирает вход в роутер на общей клавиатуре. Разработчик выдаёт тестовым учёткам одноразовые строки. Это три разные работы. Первые две требуют ручного ввода. Третья почти всегда попадает в менеджер паролей. Дальше многие встречают комикс xkcd 936: Tr0ub4dor&3 выглядит «сложным» и всё равно даёт около 28 бит, а correct horse battery staple — четыре обычных английских слова — около 44 бит. Из картинки утекло правило «четыре слова = достаточно сильный пароль» и прилипло к русскоязычным советам про парольную фразу.

У расчёта в комиксе есть условие, которое обычно выбрасывают: каждое слово берут равномерно случайно из списка примерно на две тысячи частых слов (в полоске заложено 11 бит на слово). Подставьте словарь на 100 слов — те же четыре слова падают примерно до 27 бит: слабее комикса и далеко от случайного пароля из 16 символов. Эта заметка не разбирает кнопки генератора. Она отвечает, когда брать случайные символы, когда — читаемую фразу, и хватает ли четырёх слов. В MyPassGen оба режима открываются сразу, без учётной записи. Случайный режим по умолчанию даёт 16 символов; читаемая фраза берёт от 3 до 10 слов из встроенного списка на 100. Каждую цифру ниже можно пересчитать на калькуляторе.

Разведите сценарии один раз

Будет ли этот секрет потом подставляться автоматически? Если да — генерируйте случайные символы: 16 по умолчанию или длиннее. Если кто-то набирает руками — гостевой Wi-Fi, общий принтер, роутер, который открывают два раза в год — берите парольную фразу и поднимайте число слов до 8–10. Не останавливайтесь на четырёх только потому, что фразу легко сказать вслух.

Сначала спросите, подставит ли менеджер

NIST SP 800-63B-4, финальная редакция от 31 июля 2025 года, отделяет длину пароля от того, как человек его вводит. Если пароль — единственный фактор, проверяющая сторона должна требовать не меньше 15 символов. Если это один фактор из нескольких, нижняя граница всё равно восемь. Проверяющая сторона также обязана допускать менеджеры паролей и автозаполнение, а если интерфейса автозаполнения нет — разрешать вставку из буфера. В документе прямо сказано: менеджер повышает шанс, что человек выберет более сильный секрет, особенно когда у менеджера есть свой генератор.

Та же редакция снимает два правила, которые сайты до сих пор часто держат в формах. Проверяющая сторона не должна требовать смесь регистра, цифр и символов как политику состава. Она не должна заставлять менять пароль по расписанию, пока нет свидетельств, что именно эта строка уже утекла. Для выбора «случайные символы или фраза» это чистый разрез: если можно вставить или автозаполнить, нет причины жертвовать энтропией ради того, чтобы строку было легче произнести. Если набирать всё равно придётся руками, слова снижают опечатки, а энтропию возвращают дополнительными словами.

Случайный режим MyPassGen принимает 6–128 символов и по умолчанию ставит 16 — тот же порядок длины, что и порог 15 символов для одного фактора. Короче 8 страница помечает как более слабый пароль. Это диапазон генератора, а не заявление, что 6 символов «соответствуют NIST». Если сайт режет вас восемью символами, возьмите все восемь, включите второй фактор и не притворяйтесь, что короткая случайная строка равна шестнадцатисимвольной.

Две разные модели генерации

Случайный пароль и читаемая фраза — не две шкурки одного секрета. Они считают пространство перебора по-разному. Случайные символы тянут знак за знаком из пула: включили заглавные, строчные, цифры и символы — размер пула равен сумме этих наборов. Парольная фраза тянет слова из фиксированного словаря и склеивает их разделителем. Если атакующий знает, какой список вы взяли и сколько слов вытянули, пространство поиска — «размер словаря в степени числа слов», а не «насколько длинным выглядит предложение».

Случайные символы копят биты по позициям

При равномерном выборе энтропия примерно равна длина × log2(размер пула). Четыре набора по умолчанию в MyPassGen — 26 заглавных, 26 строчных, 10 цифр и 18 символов в !@#$%^&*()-_=+[]{}, всего 80. Шестнадцать позиций из такого пула — это около 101 бита. Только буквы и цифры (62) при длине 16 дают около 95 бит. Укоротите длину до 8 и оставьте пул на 80 — получите около 51 бита. Поэтому короткий «сложный» пароль может выглядеть свирепо и всё равно сидеть в том же порядке величины, что и средняя парольная фраза.

Фраза копит биты по словам

При равномерном выборе энтропия примерно равна число слов × log2(размер словаря). Список Diceware Арнольда Райнхольда и длинный словарь EFF 2016 года оба содержат 7 776 записей — пять граней шестигранного кубика, 65. На слово приходится около 12,9 бита. Обычный совет EFF — шесть слов, около 77,5 бит. Четыре «бытовых» слова комикса по 11 бит каждое дают около 44 бит. Это более широкий список повседневного английского, а не короткий словарь на 100 слов.

Выбор должен идти из криптографического источника. MDN описывает Crypto.getRandomValues как криптографически стойкие случайные значения. Та же документация помечает Math.random() как непригодный для задач безопасности и отправляет к Web Crypto. «Случайный пароль» или «случайная фраза», собранные через Math.random(), честно не могут претендовать на полную энтропию формул выше.

Энтропию считают от словаря

Одна и та же фраза «четыре слова» может отличаться вдвое, стоит сменить знаменатель. log2(100) ≈ 6,64, значит четыре слова из списка на 100 — около 27 бит. log2(7776) ≈ 12,92, значит четыре слова Diceware — около 52 бит. В комиксе по 11 бит на слово выходит около 44. Назвать число слов и спрятать размер словаря — самый частый способ написать читаемую фразу сильнее, чем она есть. В русскоязычных разборах это особенно заметно: статью про Diceware читают как «любые четыре слова», хотя в расчёте сидит словарь на 7 776, а не набор из сотни существительных.

Одна цифра или один символ в хвосте добавляют мало выбора: десять цифр — около 3,3 бита, короткий набор знаков — около 3. Если в читаемой фразе MyPassGen включить вставку цифры или символа, оценка на странице прибавляет примерно по 6 бит на каждую опцию. Это щедрая внутренняя линейка, а не «один ! почти равен шести словам Diceware». Заглавная буква в начале каждого слова считается примерно как 0,5 бита на слово — лёгкий толчок, не смена ступени. Чтобы фразу из словаря на 100 загнать в зону «сильный» на общей линейке этой статьи (около 60 бит; собственный счётчик генератора для фразы ставит пороги 40 / 55 / 70), нужно 8–10 слов, а не 1! после четырёх.

Свои слова ещё хуже. Куплет, название фильма, имя текущего спринта или строка вроде «зима-2026-офис» уже стоят в словарных списках атакующего. Для предложения, которое вы помните, не работает формула «размер словаря в четвёртой степени». Парольная фраза зарабатывает эту формулу только когда слова — равномерная выборка из известного списка, а не строка, которая вам уже нравилась.

100 слов, 7 776 слов, случайная строка

Таблица считает по одной формуле. «100 слов» — встроенный список читаемой фразы MyPassGen. «7 776 слов» — длинный Diceware / EFF. Случайные строки идут из пула на 80 символов. Подписи справа — одна линейка, чтобы два формата уместились на одной странице: ниже примерно 40 бит — слабый, ниже 60 — средний, ниже 80 — сильный, выше — очень сильный. Это шкала для чтения, а не обещание про конкретную видеокарту. Собственный счётчик фразы в генераторе использует пороги 40 / 55 / 70, поэтому десять слов из списка на 100 (около 66 бит) там читаются как «сильный», а шесть слов Diceware (около 77,5 бит) — как «очень сильный».

Способ Около На этой линейке
Список на 100 × 4 слова ~27 бит Слабый
Список на 100 × 6 слов ~40 бит Средний (только перешагнул)
Список на 100 × 8 слов ~53 бит Средний
Список на 100 × 10 слов ~66 бит Сильный
Diceware 7 776 × 4 слова ~52 бит Средний
Diceware 7 776 × 6 слов ~77,5 бит Сильный (обычный размер EFF)
Случайные 8 символов (пул 80) ~51 бит Средний
Случайные 16 символов (пул 80) ~101 бит Очень сильный

Из таблицы берите два факта. Первый: случайный пароль из 16 символов по умолчанию — самый дешёвый ряд «очень сильный»: запоминать его не нужно, менеджер подставит. Второй: читаемый режим, который останавливается на четырёх словах, сидит рядом с короткой случайной строкой или с переписанным словарным словом из комикса. Лёгкость произношения ступень не повышает. Когда набирать всё равно руками, гоните список на 100 до 8–10 слов или примите длину шести слов Diceware. Не ставьте четыре слова из короткого списка напротив шестнадцати случайных символов.

Порог NIST в 15 символов для одного фактора — минимум по длине, не по энтропии. Пятнадцать символов из пула на 80 дают около 95 бит — та же зона, что и 16 по умолчанию. Четыре частых английских слова даже по 44 битам комикса всё равно ниже случайной строки, которую подразумевает эта длина. Секрет, который набирают руками, должен оставаться набираемым и не выпадать из порядка величины. Туда идут добавлением слов, а не добавлением @.

Типичные ошибки

«Четыре слова — это пароль из xkcd» верно только если словарь и источник случайности совпадают с комиксом или с Diceware. Дефисы между английскими словами на экране не доказывают 11 или 12,9 бита на слово.

«Парольная фраза всегда слабее случайных символов» тоже неверно. Шесть слов Diceware — около 77,5 бит, уже «сильный» на этой линейке. Десять слов из списка на 100 — около 66 бит, тоже «сильный». Слабое место — короткий словарь плюс слишком мало слов, а не сам факт, что секрет собран из слов.

«Допишите 123 и восклицательный знак — и готово» почти ничего не делает с коротким паролем, который придумал человек: такие хвосты давно в словарях. На равномерно случайной цепочке слов одна лишняя цифра — несколько бит. Она не заменяет два дополнительных слова.

«Сайт умеет выдать фразу, значит результат сильный» зависит от словаря. Одни страницы держат 7 776 слов. Другие — несколько сотен тематических существительных или ещё меньше. Прежде чем доверять выводу, задайте три вопроса: какой длины опубликованный список? Источник — getRandomValues? Ушёл ли результат из вкладки как рабочие данные? Слоган не отвечает ни на один из них.

«HTTPS значит, что пароль не утечёт» закрывает только прослушивание канала. Если генератор уходит POST-ом с результатом или пишет секрет в событие аналитики, HTTPS всё равно доставляет открытый текст на тот хост. Проверка — в заметке Как на месте проверить, что шифрование в браузере не отправило открытый текст: смотрите строку и тело запроса во вкладке «Сеть», а не замочек в адресной строке.

Не вставляйте свежий пароль на сайт силы, который уносит строку

Одни проверки шлют пароль POST-ом. Другие — только префикс хеша. Локальная сверка качает открытый список слабых паролей и оставляет кандидата в поле. Разница разобрана в Локальный список утечек и Have I Been Pwned: что доказывает каждая проверка. И генерация, и локальная сверка открываются без учётной записи.

Сверка на месте

Эти шаги не опираются на обещание бренда. Возьмите строку, которую не поставите на настоящий аккаунт.

  1. Откройте генератор, выберите «Читаемая фраза», поставьте число слов 4 и нажмите «Сгенерировать». Запишите подпись силы и энтропию на странице. По таблице выше 100 × 4 должны лечь около «слабый» (примерно 27 бит).
  2. Поднимите число до 8 или 10 и сгенерируйте снова. Подпись должна вырасти; 10 слов должны подойти к «сильный». Не «улучшайте» результат четырьмя словами из головы.
  3. Переключитесь на «Случайные символы», оставьте длину 16, держите все четыре класса включёнными и сгенерируйте. Подпись должна быть «очень сильный» (около 101 бита). Поставьте три результата рядом: четыре читаемых слова не должны обгонять случайную строку из 16 символов.
  4. Откройте инструменты разработчика, вкладку «Сеть», включите «Сохранять журнал» и сгенерируйте ещё раз. В запросах документа и в событиях аналитики не должно быть пароля, который всё ещё виден на странице. Источник случайности — Web Crypto, а не Math.random() в скрипте страницы: имя функции можно найти во вкладке «Источники».
  5. Если нужна ещё сверка с открытым списком слабых паролей, вставьте в локальную проверку старый пароль, который собираетесь списать. Новый основной пароль на сайт, который уносит строку, не отправляйте. Промах значит только то, что строки нет в этом списке. Это не «никогда не сливали».

Генератор паролей MyPassGen собран по этой границе. Оба режима тянут значения через getRandomValues в текущей вкладке. Случайный режим — 6–128 символов, по умолчанию 16, с пометкой слабее ниже 8. Читаемая фраза — 3–10 слов из списка на 100; можно добавить разделитель, цифру, символ или заглавные. За раз — до 100 строк, копирование или экспорт TXT. Учётной записи нет, парольного хранилища на сайте тоже нет. Закроете вкладку — этих строк на сервере не будет. Сверяйте вкладку «Сеть», а не заголовок страницы.

Как выбрать следующий пароль

Для секрета, который меняете сегодня, сначала ответьте на вопрос про менеджер. Если автозаполнение справится — сгенерируйте 16 случайных символов или длиннее, по одной строке на сайт, без повторного использования. Если набирать придётся руками — сгенерируйте фразу из 8–10 слов. Соседу продиктуйте один раз. Ту же строку в чат «на всякий случай» не копируйте. Если получатель далеко и секрет должен прожить один раз, откройте одноразовую ссылку и держите ключ после # в адресе, вместо второй копии открытого текста.

Роутер, гостевой Wi-Fi и принтер — обычные случаи ручного ввода: гости бьют по экранной клавиатуре телефона, а смесь регистра и символов плодит ошибки 0/O и 1/l. Длинная цепочка слов хуже ослышивается и хуже списывается с ошибкой, чем «сложный» случайный пароль из 8 символов. Если панель администратора открываете редко и менеджер стоит на своём устройстве, для этого входа всё равно лучше 16 случайных символов. Фразу от Wi-Fi на админку роутера не переиспользуйте.

Когда разрез сделан, вопрос статьи закрыт. Случайный пароль или читаемая фраза — это вопрос про ввод. Хватает ли четырёх слов — вопрос про словарь. Четыре слова из списка на 100 не должны нести важный аккаунт. Случайный пароль из 16 символов по умолчанию — может. Подпись на странице должна сходиться с этой таблицей. Если не сходится, не верьте фразе «похоже на предложение, значит безопаснее».

Частые вопросы

Можно ли ставить четырёхсловную фразу мастер-паролем?

Из списка на 100 — нет. Около 27 бит — это короткая случайная строка. Мастер-пароль менеджера, фраза шифрования диска или любой секрет, который редко меняют и который жалко потерять, должны быть 16 и больше случайных символов в менеджере либо 8–10 случайно вытянутых слов — не предложение, которое вы сами сочинили.

Нужно ли добавлять регистр и символы, чтобы пройти правила сложности сайта?

Если сайт всё ещё требует смесь классов символов, включите вставку цифры, символа или заглавных, чтобы форма приняла строку. Это закрывает устаревшее правило написания. Это не главный источник энтропии. NIST уже просит проверяющую сторону такие правила не навязывать. После того как форма приняла пароль, судите его по числу слов и размеру словаря.

Нужна ли учётная запись, чтобы сгенерировать случайный пароль или фразу? Уходит ли результат на сервер?

Учётка не нужна. Генерация должна остаться в текущей вкладке. Риск журнала начинается, когда результат отдаёте сайту, который уносит строку. После нажатия «Сгенерировать» откройте «Сеть»: в теле запроса и в событиях аналитики этого пароля быть не должно. Нужна копия — скопируйте или выгрузите TXT туда, чему уже доверяете. Парольного хранилища на сайте нет.

Для Wi-Fi, который набирают руками: 16 случайных символов или фраза?

Смотрите, кто набирает. Если подключаетесь только вы через менеджер — берите 16 случайных символов. Если гости регулярно бьют по телефону — 8–10 слов и без кучи 0/O, 1/l и знаков. Ту же фразу от Wi-Fi на страницу администратора роутера не ставьте.