Все мы хоть раз стояли перед формой регистрации, которая капризничает хуже фейсконтроля в клубе с дресс-кодом. Заглавную букву подавай, цифру подавай, спецсимвол подавай, а пароль из восьми букв ей, видите ли, недостаточно элегантен. И мы послушно берем любимое слово, сажаем в начало заглавную букву, в хвост пришпиливаем восклицательный знак и год, форма наконец светится зеленым и довольна собой. Так на свет появляется P@ssw0rd!2026, пароль, который одновременно проходит самую строгую проверку и попадает в первую тысячу вариантов, которые взломщик перелистает еще до того, как допьет утренний кофе.

Я однажды посчитала обе строчки из заголовка для коллег на внутреннем семинаре, расчет всем зашел, и с тех пор я достаю его каждый раз, когда кто-нибудь гордо показывает мне пароль с собачкой вместо буквы и спрашивает, крутой ли он. Отвечаю сразу: собачка его не спасает. Но давайте по порядку, потому что история тут веселее, чем намекает скучное слово «пароль».

Как вообще считают стойкость, и почему глаз тут бесполезен

Представьте, что взломщик не угадывает ваш пароль силой мысли, а тупо перебирает варианты один за другим, как человек, забывший код от чемодана прямо в зоне вылета. Весь вопрос в том, сколько вариантов ему придется пролистать. Чем их больше, тем дольше он мучается и тем выше шанс, что он махнет рукой и пойдет ломать соседа, у которого пароль попроще.

Количество этих вариантов принято мерить в битах, и тут работает приятная магия удвоения. Каждый лишний бит умножает число комбинаций на два. Сорок бит — это около триллиона вариантов, шестьдесят бит дают уже квинтиллион, единицу с восемнадцатью нулями. Двадцать бит разницы звучат скромно, а на деле раздувают перебор в миллион раз. Беда в том, что наш глаз в этой арифметике не смыслит ничего. Он видит значки, цифры и разный регистр, радостно ставит паролю пятерку за старательность, тогда как взломщику важна вовсе не старательность, а предсказуемость. А это, как мы скоро убедимся, две очень разные вещи, которые любят притворяться друг другом.

Немного про то, где пароль хранится после регистрации

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

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

Четыре слова, которые притворяются безобидными

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

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

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

P@ssw0rd!2026 снимает маску

Теперь очередь грозного на вид пароля. Тринадцать символов, заглавная буква, цифры, собачка, восклицательный знак, год. Выглядит так, словно его сочинял параноик из фильма про хакеров. Будь эти тринадцать знаков и вправду случайными, пароль весил бы около восьмидесяти пяти бит, и я бы первая сняла перед ним шляпу. Загвоздка в том, что случайностью тут и не пахнет, а пахнет словарем.

В самой сердцевине лежит слово password, которое стоит в любом списке на почетном первом месте, по соседству с qwerty и «123456». Дальше идут фокусы, которые кажутся нам хитрыми, а взломщику знакомы до зевоты. Замена буквы на похожую цифру или значок называется leet-подстановкой и давно записана в готовые правила. Приписанный в хвост восклицательный знак с годом тоже стандартный прием, который программа навешивает сама. Инструменты берут словарное слово и прогоняют его через сотни таких превращений автоматически: крутят регистр, меняют буквы на двойников, цепляют популярные хвосты, перебирают годы пачками от восьмидесятых до будущих. Человек любуется своей изобретательностью, а машина уже проверила этот вариант, пока он печатал восклицательный знак.

Итог печальный для нашего параноика. P@ssw0rd!2026 выскакивает в первые секунды атаки, в компании Password1 и Qwerty123, которых он в глубине души презирал. Его настоящая стоимость падает с воображаемых восьмидесяти пяти бит до жалких единиц: угадай базовое слово из короткого списка, прикинь год, а остальное доделает готовый набор правил. Снаружи броня, внутри картонка, и картонка эта промокает от первого же дождя.

Небольшая арифметика на салфетке

Люблю, когда цифру можно прикинуть прямо на коленке, поэтому вот грубая проверка. Если взломщик прогоняет сто миллиардов паролей в секунду, за сутки он осилит порядка десяти в шестнадцатой степени вариантов. Это примерно пятьдесят три бита. Значит, все, что собрано способом дешевле пятидесяти с небольшим бит, падает за день даже на быстром хеше. P@ssw0rd!2026 со своими единицами бит в этой логике не живет и секунды. Корова на шестидесяти двух битах оказывается в сотни раз выше суточного потолка, и это на самом неприятном железе. Переведите хранилище на медленный алгоритм, и потолок обрушивается еще на десяток порядков вниз, туда, где перебор перестает иметь смысл как занятие. Салфетка грубая, но порядок величин она ловит верно, а именно порядок тут и решает.

Почему форма регистрации нас подводит

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

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

Отдельная ирония в индикаторах силы пароля, тех самых полосочках, что зеленеют по мере добавления символов. Многие из них считают исключительно наличие значков и цифр, поэтому P@ssw0rd!2026 загорается у них бодрым зеленым, а четыре мирных слова нередко получают стыдливый желтый. Полосочка меряет то же самое, что и форма, и ошибается ровно там же, так что доверять ей стоит примерно как гороскопу в утренней газете.

Когда длина наконец начинает работать

У длины есть сила, но включается она только в паре со случайностью. И вот тут все держится на том самом слове «случайно», которое я повторяю как заклинание. Стоит человеку сочинить фразу со смыслом, вроде «мойлюбимыйкотбарсик», и длинная с виду строчка внутри оказывается бедной, потому что осмысленные фразы приходят людям в голову по довольно узкому набору дорожек. Перебор, который умеет гадать по кусочкам обычного текста, разделывается с такой фразой куда бодрее, чем намекает ее длина, и аккуратно складывает слова в предложение быстрее, чем вы ожидаете.

Генератор парольных фраз, тот самый diceware, для того и придуман, чтобы слова выпадали без вашего участия и без тайных закономерностей. Классический вариант даже романтичен: бросаете пять настоящих игральных кубиков, по выпавшему числу находите слово в таблице, и так для каждого слова фразы. Выходит чуть медитативно и очень надежно, потому что кубик не знает ваших привычек и не пытается сделать фразу красивее. Четыре слова дают разумный минимум, пять превращают запас в солидный, разделитель между словами и одна заглавная буква добавляют немного сверху, но солируют уже не они. Биты набираются количеством случайных слов, а не акробатическими этюдами внутри одного корня.

Любопытно, что такой пароль еще и дружелюбен к человеку. Его легко продиктовать по телефону, легко набрать на неудобной экранной клавиатуре телевизора, легко удержать в памяти ровно потому, что мозг цепляется за образы. Корову, лампу, поезд и ромашку можно представить одной нелепой картинкой и больше не вспоминать, какой там был значок после какой цифры. P@ssw0rd!2026, напротив, запоминается плохо именно из-за своей колючести, и человек в итоге переиспользует его на двадцати сайтах, что превращает одну утечку в двадцать проблем.

Короткий вывод, который стоит унести с собой

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

Еще одна житейская поправка. Фразы из слов хороши для тех немногих паролей, что приходится носить в голове: мастер-пароль от менеджера, ключ от диска, учетка без доступа к хранилищу. Все остальное разумнее свалить на парольный менеджер, который сгенерирует двадцать случайных символов, сам их запомнит и избавит вас от необходимости вообще их читать глазами. А там, где сервис уже дружит с passkeys, весь этот спор о длине снимается целиком, поскольку секрет, который можно было бы перебирать, просто перестает существовать, и ломать становится буквально нечего.

P@ssw0rd!2026 исправно выполняет каждое требование формы и так же исправно сидит среди первых кандидатов на взлом. Корова, лампа, поезд и ромашка не проходят ни одного пункта той же формы и при этом оставляют взломщику работу на месяцы, а при хорошем хешировании и на годы вперед. Мораль выходит слегка обидной для всех форм регистрации на свете: они проверяют пароль ровно по тому признаку, который меньше всего связан с его стойкостью. Так что в следующий раз, когда сайт потребует от вас спецсимвол, мысленно погладьте корову. Она без единого значка охраняет вас лучше, чем целый зоопарк восклицательных знаков.

Комментарии (4)


  1. AppCrafter
    12.10.2026 06:07

    Вместо password пришла эра passphrase


  1. ZamirHa
    12.10.2026 06:07

    То есть, мошеннику нужно перебрать сочетания из 50000 по четыре и по пять. Как-то не сильно мощно выглядит :))

    Тогда уж лучше, например, "карава_лампа_паезд_рамашка". Запоминаем четыре слова и одну гласную букву ))))))

    PS Заказывал в одной фирме пять машин с предустановкой систем, с парой логин/пароль "administator/administartor". Сам за этим пронаблюдать не мог, так что просто написал на бумажке.

    Один из паролей исполнитель написал с ошибкой)))) aministrator

    Угадал я быстро, но некоторые полезные мысли в процессе пришлось усвоить))


    1. inkelyad
      12.10.2026 06:07

      Тогда уж лучше, например, "карава_лампа_паезд_рамашка". Запоминаем четыре слова и одну гласную букву ))))))

      Это бессмысленно. Потому будешь мучительно вспоминать, какую именно ошибку ты сознательно добавил. Лучше просто еще одно нормально, грамотно написанное слов добавить.


  1. inkelyad
    12.10.2026 06:07

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

    К сожалению, оно так работать не будет. Последовательность перебора - тоже влияет.

    Вот у вас список - 50000 слов(62 бита). Но выпали 4 слова из верхних 10000 тыс слов Или не выпало, а пользователь выбрал такой из нескольких полученных, т.к. редкие слова - нечитаемые и трудно запомнить. (Ну вот будет там какое-то 'эсхатологический' - такое даже пытаться использовать не будут)

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

    Именно поэтому на практике настолько длинный набор слов использовать не стоит, а нужно брать "Самые частые 1000/8000" и добирать энтропию длиной.