« Ваш пароль должен содержать 8 символов, заглавную букву, строчную букву, цифру и специальный символ. »
Мы все знаем это правило. И тем не менее, в кибербезопасности это называется “театром безопасности”. Пароль вроде P@ssw0rd1! соблюдает все эти правила. Но это распространённое слово с предсказуемыми заменами, и именно такие пароли программы для взлома пробуют первыми.
Истинная безопасность основывается не на произвольных визуальных правилах, а на неумолимой математической реальности: энтропии.
Энтропия по Клоду Шеннону
Чтобы понять силу пароля, нужно обратиться к Клоду Шеннону, отцу теории информации. Энтропия измеряет степень неопределенности или непредсказуемости информации.
В применении к паролям энтропия вычисляется в битах. Чем выше количество битов, тем более непредсказуемым является пароль для компьютера. Упрощенная формула энтропии (E) случайно сгенерированного пароля:
E = L × log2(R)
- L — это длина пароля.
- R — это размер набора символов (26 для строчных букв, 62 с заглавными буквами и цифрами, 94 со всеми печатными символами). Четыре набора символов нашего генератора дают 91, потому что в его наборе символов 29 знаков.
Увеличение размера набора символов (добавление символов) увеличивает энтропию, но увеличение длины (добавление символов) увеличивает ее гораздо более радикально. Однако длина побеждает сложность только при одном условии: пароль должен быть сгенерирован абсолютно случайным образом.
Брутфорс против Атаки по словарю
Если вы используете слова или предсказуемые структуры, правило простой длины рушится.
Хакерские программы не перебирают все комбинации букв одну за другой (это называется Брутфорс или Brute Force). Они используют огромные списки реальных паролей из прошлых утечек данных, а также распространённые слова и фразы. Это Атака по словарю.
Если ваш пароль длинный, но состоит из словарных слов или предсказуемых замен, его реальная энтропия резко ниже его теоретической математической энтропии.
В таблице ниже действует одно правило: 100 миллиардов попыток в секунду, скорость, которую страница нашего генератора предполагает для офлайн-атаки на быстрый хеш. Время указано в среднем (половина всех вариантов) и округлено в меньшую сторону по той же формуле, что и на этой странице. Самый быстрый путь для каждого пароля выделен жирным:
| Пароль | Энтропия, если бы каждый символ был случайным | Брутфорс (в среднем) | Атака по словарю (наша оценка) |
|---|---|---|---|
password123 | 56 бит (11 символов, строчные буквы и цифры) | 7 дней | Меньше секунды |
S3cr3t!99 | 58 бит (9 символов, все четыре набора) | 24 дня | Меньше секунды |
correct horse battery staple | 133 бита (28 символов, строчные буквы и пробел) | Больше, чем 1 триллион лет | 1 минута |
gL7!pQ9z#vX2 | 78 бит (12 символов, все четыре набора) | 51 тысяча лет | Короткого пути нет |
Столбец словаря — это оценка. Она предполагает, что догадки атакующего повторяют структуру каждого пароля и что каждое базовое слово входит в 1 000 самых распространённых:
password123: одно распространённое слово и три цифры. Это 1 000 × 1 000, около миллиона догадок.S3cr3t!99: одно распространённое слово, с заглавной буквой или без, каждая “e” заменена на “3” или нет, затем любой суффикс из трёх символов. Это около 7 миллиардов догадок.correct horse battery staple: четыре распространённых слова. Комикс xkcd, который прославил эту фразу, насчитывает 44 бита для четырёх слов из списка в 2 048 слов. При той же скорости это в среднем 88 секунд, с округлением в меньшую сторону 1 минута.gL7!pQ9z#vX2: ни слова, ни шаблона, поэтому самый быстрый путь — брутфорс.
Эти оценки исходят из того, что пароль атакующему неизвестен. Каждый пароль в этой статье теперь публичен, поэтому каждому из них место в словаре. Опубликованный пароль — это сожжённый пароль.
Иллюзия Leetspeak и правила мутации
Возьмем пример S3cr3t!99. Визуально он кажется сложным и надежным. Тем не менее, это просто словарное слово “secret”, где буквы ’e’ были заменены на ‘3’, к которому добавлен очень распространенный суффикс (!99). Это называется leetspeak.
Против атаки по словарю этот пароль продержится меньше секунды, а не 24 дня, как можно было бы подумать по его длине. Современные программы для взлома (такие как Hashcat) не довольствуются проверкой статических списков слов; они автоматически применяют правила мутации. Они возьмут каждое слово из своего словаря, протестируют все возможные комбинации leetspeak, поменяют регистр и добавят годы или символы. Leetspeak дает ложное чувство безопасности.
Трюк со смещением клавиатуры (Keyboard Shift)
Чтобы усложнить запоминающуюся фразу, некоторые используют трюк со смещением раскладки клавиатуры. Например, вы запоминаете фразу вроде my-cat. Но в момент набора вы кладете пальцы на физическую клавиатуру QWERTY, в то время как ваша операционная система настроена на AZERTY (французскую).
- Задуманное слово:
my-cat - Набранный результат:
,y)cqt(Клавиша ’m’ становится ‘,’; ‘-’ становится ‘)’; ‘a’ становится ‘q’).
Хорошая ли это идея в OPSEC? Нет, этого метода недостаточно, если он используется отдельно. Как и leetspeak, смена раскладки — это фиксированная замена: атакующий, который её подозревает, просто применяет то же соответствие к каждой догадке. В OPSEC это безопасность через неясность: это задержит хакера-любителя, но не остановит целенаправленную и хорошо оснащенную атаку.
В сочетании с паролем, который уже надёжен (например, с длинной случайной фразой-паролем), этот приём добавляет немного. Даже если атакующий переберёт тысячу пар раскладок, это добавит меньше 10 бит, поскольку log2(1 000) ≈ 9,97. Стойкость по-прежнему обеспечивает фраза-пароль, лежащая в основе.
Создание мастер-пароля (~250 бит)
Если у списков слов, leetspeak и трюков с набором есть свои пределы, как создать мастер-пароль, который прослужит долго? Наш генератор уже оценивает 80 бит как “Надежный”, а 100 бит как “Очень надежный”. Для мастер-пароля, рассчитанного на десятилетия, эта статья целится гораздо выше: примерно в 250 бит энтропии. Квантовый раздел ниже объясняет, почему, и чего этот запас не даёт.
В зависимости от ваших потребностей есть два способа достичь этого:
1. Случайные символы (для менеджера паролей)
Строка символов, сгенерированная полностью случайно, без шаблона, который могла бы использовать машина:
8}8,_$-p)M&n,XvUCT0o+.5hDE6P^w6b@U-evS0
39 символов, случайно выбранных из 91 символа нашего генератора; генератор показывает для них “≈ Количество бит: 253”. Строка выбрана для этой статьи, поэтому теперь публична. Никогда её не используйте.
2. Случайная фраза-пароль (для пароля, который вы запоминаете)
Случайные слова запомнить легче, чем случайные символы. Каждое слово из списка EFF на 7 776 слов добавляет около 12,9 бита, поэтому энтропию определяет число слов. 12 слов дают “≈ Количество бит: 155”, намного выше порога “Очень надежный” нашего генератора. Обычные слова превышают 250 бит только при 20 словах.
Наш генератор останавливается на 12 словах. Чтобы превысить 250 бит с меньшим числом слов, отметьте “Случайная цифра после каждого слова” и выберите разделитель “Цифра + Символ”. Тогда 11 слов дают “≈ Количество бит: 260”:
depletion78$sporting14~overlap11>macaw86>paced95,paramedic41}blot41$flagstone07;uncanny92/broadways77#say2
Выбрана случайно для этой статьи, именно с этими настройками. Опубликованный пароль — это сожжённый пароль: никогда не используйте ни этот, ни любой другой пример, который вы прочитали. Считается только то, что выбрано случайно. Заглавная буква в каждом слове ничего не добавляет, а слова, выбранные вами самими, намного слабее случайных.
Квантовая угроза: Алгоритм Гровера
Зачем стремиться к 250 битам, когда 128 бит уже сегодня блокируют суперкомпьютеры? Ответ кроется в перспективе появления больших квантовых компьютеров.
В криптографии алгоритм Гровера позволяет квантовому компьютеру выполнять поиск в несортированной базе данных намного быстрее, чем классическому компьютеру. Конкретно, Гровер эффективно снижает уровень безопасности симметричного ключа или пароля вдвое.
Против квантового компьютера, запускающего алгоритм Гровера, пароль с энтропией 128 бит теоретически обеспечил бы сопротивление, эквивалентное лишь 64 битам. Это гораздо более тонкий запас.
Удвоение энтропии сохраняет запас: около 256 бит всё ещё оставят около 128 бит против алгоритма Гровера. Отсюда и цель в 250 бит в этой статье. Это мера предосторожности, которую выбирает эта статья, а не цифра, взятая из какого-либо стандарта.
У этого запаса есть пределы. Ускорение Гровера квадратичное, а не безграничное. Каждый его шаг по-прежнему должен вычислять хеш пароля сайта, причём на квантовом компьютере, достаточно большом, чтобы его выполнить. Для сравнения: при 100 миллиардах попыток в секунду, которые предполагает страница нашего генератора, средний перебор 100 бит уже занимает не менее 200 миллиардов лет.
Эта логика напоминает Harvest Now, Decrypt Later (HNDL): украденную базу хешей паролей можно сохранить сегодня и атаковать позже, более мощными машинами. Больший запас поднимает планку против этого. Это не постоянная гарантия.
Arpokrat Password Generator: Создайте свой
Не оставляйте безопасность ваших доступов на волю случая. Наш бесплатный генератор создаёт случайные пароли и фразы-пароли. Для каждого он показывает энтропию в битах и среднее время, которое занял бы перебор.
Он только генерирует: пароль, которым вы уже пользуетесь, он не оценивает. Для описанной выше цели в 250 бит выберите пароль из 39 символов со всеми четырьмя наборами символов. Генератор покажет для него “≈ Количество бит: 253”.
Он работает в вашем браузере. То, что он генерирует, никогда не отправляется и не сохраняется.
Последнее слабое звено: Повторное использование и управление доступом
Математическая энтропия не защищает от человеческой ошибки. 250-битный пароль теряет свою ценность, как только он утекает, если он повторно используется на нескольких сайтах (атака, называемая Credential Stuffing), или если он не защищен вторым фактором аутентификации (2FA).
Золотое правило цифровой гигиены — вам нужно запомнить только один единственный пароль: ваш 250-битный мастер-пароль (случайная фраза-пароль, как описано выше). Все ваши остальные доступы (банки, социальные сети, серверы) должны использовать уникальные случайные пароли, сгенерированные специально для них.
Чтобы хранить все эти пароли, которые невозможно запомнить, используйте менеджер паролей. Выберите такой, который шифрует ваше хранилище на вашем устройстве до синхронизации (это часто называют Zero-Knowledge), желательно такой, который имеет открытый исходный код и проходит независимый аудит.
