habrahabr

Зачем нам спецсимволы в паролях?

  • пятница, 31 октября 2025 г. в 00:00:13
https://habr.com/ru/articles/960706/

В английском алфавите 26 букв. С учётом заглавных букв (+26) и цифр (+10) получается 62 символа. Это значит, что для взлома пароля длиной n символов, состоящего только из букв и цифр, злоумышленник должен перебрать 62^n комбинаций. Мы привыкли думать в терминах степеней десятки, поэтому, чтобы выразить это число как 10^x, воспользуемся формулой

x = n \log_{10} (62) = 1.79 n

Для пароля длиной n = 10 символов x = 17.9, то есть 10^{17.9} вариантов перебора. В году примерно 3\cdot 10^{7} секунд. Для перебора с частотой один вариант в секунду потребуется 25 миллиардов лет. Ну или давайте более наукообразно: если ваш пароль будут ломать с частотой раз в секунду в течение вашей жизни, а вы с момента создания пароля и до гробовой доски хотите прожить 100 лет, то вероятность, что вас таки взломают равна 4\cdot 10^{-9}. Кажется, этого более чем достаточно. Но не для сайта Expedia.com. Они считают, что пароль nr75eJ2GBp недостаточно надежный.

Что же они хотят? Минимум 12 символов с использованием специальных символов (+23 итого 85). Получаем

x = 12 \log_{10} (85) = 23.15

Ещё раз напомню, что x — это показатель десятки. Тогда 10^{23.15} — это примерно 4 \cdot 10^{15} (4 квадриллиона) лет, если делать попытки раз в секунду. Я даже слова такого не знал. Давайте шутки ради поставим пароль VladimirPutin1952#. У таких серьёзных парней он точно не пройдёт.

Ах нет... сайт expedia доволен. Считает, что очень хороший, надёжный пароль. Этот пароль, кстати, проходит на всех сервисах, где я его опробовал, а не только на expedia.com.

— Ой, вэй... Таки что ты уже хочешь сказать?

Я таки хочу сказать, что если заставить дурака богу молиться, то он себе лоб разобъёт. Это дикое требование обязательно использовать специальные символы меня просто выбешивает. Оно почти ничего не добавляет к безопасности. Без них число вариантов — 62^n, с ними — 85^n. Это значит, что чтобы сделать пароль одинаковой надёжности без спецсимволов надо взять его длину в \log(85)/\log(62) \approx 1.07 раз больше, чем длина пароля со спецсимволами. То есть вместо пароля из 12 символов со спецсимволами, сделать пароль из 13 символов без них (1.07 \cdot 12\approx 13). А если вам не нравится использование заглавных букв, то для получения такой же надёжности нужно увеличить длину пароля всего лишь в \log(85)/\log(36) \approx 1.24 раза. То есть вместо пароля из 12 символов сделать пароль из 15 символов, но зато без всякого говна со спецсимволами и заглавными буквами. Но без заглавных букв вам в наше время сделать пароль уж точно не дадут, даже если позвоните на прямую линию президенту.

Глобальное помешательство на спецсимволах и заглавных буквах — это тот самый пример дурака, который разбил себе лоб. Все прекрасно понимают, что те, кто пользуется паролями типа "VladimirPutin", ставят заглавные буквы в начале слов, а спецсимволы добавляют в конце или в начале пароля. Показушная борьба за безопасность желанной безопасности не дала. Понятно, что писать программное обеспечение, которое бы серьёзно анализировало пароли на сложность, никому не хотелось, ведь после этого можно получить на линии поддержки тысячи граждан, которые забыли свой супер-надёжный пароль. Но как минимум могли посчитать, какие классы символов присутствуют, и в соответствии с этим требовать минимальную длину пароля, чтобы не заставлять всех использовать спецсимволы. Однако уровень интеллекта тех, кто пишет эти программы, оказался примерно на уровне интеллекта тех, кто пользуется паролем "VladimirPutin", поэтому сделали на отъ*ись.