Как найти длину пароля формула

Решение прямой и обратной задачи

В качестве иллюстрации к таблице 7.1.
рассмотрим задачу на определение
минимальной мощности пространства
паролей (зависящей от параметров А
и L) в соответствии с заданной
вероятностью подбора пароля в течение
его срока действия и обратную задачу.

Прямая задача

Задана вероятность Р=10-6. Необходимо
найти минимальную длину пароля, которая
обеспечит его стойкость в течение одной
недели непрерывных попыток подобрать
пароль при заданном значении мощность
алфавита А.

Пусть скорость интерактивного подбора
паролей V=10 паролей/мин. Тогда в течение
недели можно перебрать

10*60*24*7= 100800 паролей (в 1 неделе 7 суток, в
сутках 24 часа, в часе 60 мин)

Далее, учитывая, что параметры S, V, Т
и Р связаны соотношением

P=V*T/S,

получаем: S=100*800/10-6
= 1,008 * 1011 ≈ 1011.

Если алфавит содержит А=26 символов, то
применяя формулу (4) получим минимальную
длину пароля:

L = ln(1011)
/ ln26 = 11∙ln10
/ ln 26 = 7,77 ≈ 8

Таким образом, минимальная длина пароля,
которая обеспечит его стойкость в
течение одной недели непрерывных попыток
со скоростью 10 паролей в минуту для
алфавита, состоящего из 26 букв составляет
8 символов.

Обратная задача

Пусть скорость
перебора паролей V = 100 000 = 10
5
паролей в секунду. Срок действия (жизни)
пароля T = 30 суток. Длина пароля L = 8
символов.

Согласно формулам
(1) и (2) рассчитаем соответствующие
вероятности подбора пароля при мощности
алфавита A равного 36 символам.

Вероятность подбора пароля вычисляется
по формуле (2) P
=
VT/S.
Поскольку V и T
заданы, то для определения вероятности
не хватает величины мощности пространства
паролей S. Для нахождения
величины S будем использовать
формулу (1) S = AL.
Для условий задачи величина
S
будет следующей:

S =368 =
2821109907456 = 2,8×10
12 ≈ 3×1012.

Используя найденное значение S,
находим вероятность подбора пароля для
заданных условий задачи:

P = (105×30
× 24 ×
60
× 60) / (3×1012)
= 864
×10-4
≈ 9×10-2
= 0,09

Таким образом, получаем значение
вероятности подбора пароля при длине
пароля 8 символов в течении 30 суток со
скоростью 100 000 паролей в секунду
составляет 9%.

Естественно, существуют способы повышения
стойкости пароля. Для удобства чтения
они сведены в таблицу 7.2.

Таблица 7.2.
Требования к выбору и использованию
паролей

Требования к выбору пароля

Получаемый эффект

Установление максимальной длины
пароля

Усложняет задачу злоумышленнику при
попытке подсмотреть пароль или
подобрать пароль методом «тотального
опробования»

Использование в пароле различных
групп символов

Усложняет задачу злоумышленнику при
попытке подобрать пароль методом
«тотального опробования»

Проверка и отбраковка пароля по словарю

Усложняет задачу злоумышленнику при
попытке подобрать пароль по словарю

Установление максимального срока
действия пароля

Усложняет задачу злоумышленнику при
попытке подобрать пароль методом
«тотального опробования», в том числе
без непосредственного обращения к
системе зашиты (режим off-line)

Установление минимального срока
действия пароля

Препятствует попыткам пользователя
заменить пароль на старый после его
смены по предыдущему требованию

Введение журнала истории паролей

Обеспечивает дополнительную степень
защиты по предыдущему требованию

Применение эвристического алгоритма,
бракующего пароли на основании данных
журнала истории

Усложняет задачу злоумышленнику при
попытке подобрать пароль по словарю
или с использованием эвристического
алгоритма

Ограничение числа попыток ввода пароля

Препятствует интерактивному подбору
паролей злоумышленником

Поддержка режима принудительной смены
пароля пользователя

Обеспечивает эффективность требования,
ограничивающего максимальный срок
действия пароля

Использование задержки при вводе
неправильного пароля

Препятствует интерактивному подбору
паролей злоумышленником

Запрет на выбор пароля самим пользователем
и автоматическая генерация паролей

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

Принудительная смена пароля при первой
регистрации пользователя в системе

Защищает от неправомерных действий
системного администратора, имеющего
доступ к паролю в момент создания
учетной записи

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Формула расчета пароля

Леонид Лебедев



Знаток

(315),
на голосовании



14 лет назад

формула нужна, для расчета пароля, сколько комбинаций будет 🙂 спасибо….

Голосование за лучший ответ

James Lukash

Мудрец

(13007)


14 лет назад

Глупый вопрос. Пароль не расчитывают, а генерируют по определенному алгоритму, например, по набору допустимых символов и длине пароля.

Табуреточных дел мастер

Просветленный

(41113)


14 лет назад

Тут никакие формулы не нужны. Ответ и так очевиден.
Пусть a — количество символов, допустимых для пароля.
m — минимальная длина пароля
n — максимальная длина
Количество комбинаций = a^m + a^(m+1) + .+a^(n-1) + a^n
a^n — a в степени n

Похожие вопросы

Стоит чукча на посту, мимо кто-то проходит. Чукча:
— Пароль?
— 123456.
— Проходи.
Современная версия известного анекдота

Intro
В данной статье описываются результаты анализа паролей, которые используются для доступа к форумам, сайтам, электронной почте. Эти пароли не генерировались системой или назначались администратором — их задавал сам пользователь при регистрации.

По моей просьбе люди, знакомые мне по Интернету, собрали базу данных для этого исследования. Во время сбора информации в основном использовались уязвимости типа SQL-injection (позволяющие пользователю выполнять любые запросы к базе данных, установленной на сервере), XSS (cross-site-scripting — позволяет взломщику внедрить в страницу свой html-код, что дает возможность украсть cookies администратора и затем подделать сессию), а также простые оплошности системных администраторов, когда из-за неправильной конфигурации сервера базу данных мог просматривать любой человек. В результате этой работы была собрана база данных вида “логин:пароль”, содержащая 52125 записей. Большую часть (42920, 82,3%) из них представляли md5-хэши, остальные (9205, 17,7%) — пароли в виде plain-text (незашифрованные) или пароли, зашифрованные алгоритмами, допускающими построение обратной функции — то есть расшифровку (например, base64). Использование в интернет-проекте публичных алгоритмов, позволяющих декриптовать пароль, не дает никакой защиты и, по сути, ничем не лучше хранения паролей в открытом виде. В собранный базе данных есть пароли, заданные пользователями разных наций, но большинство из них приходится на русских (около 40%) и американцев (почти 20%), остальные — в основном европейцы (немцы, поляки, чехи, англичане). Азиатов — единицы.

Атака на 45MD5
После сбора информации для проведения анализа необходимо было взломать хотя бы некоторую часть полученных md5-хэшей. Для тех, кто несведущ в криптографии или программировании, попытаюсь объяснить суть этого алгоритма. Приведем общее определение хэш-функции — это преобразование, которое позволяет из данных произвольной длины получить некое значение фиксированной длины. Известный пример такой функции — crc32 — контрольная сумма файла. Хэш-функции также бывают криптографическими и программистскими. Нас интересует первый вариант. Основными свойствами хэш-функций, применяемых в криптографии, являются необратимость и свободность от коллизий. Необратимость означает, что нельзя разработать алгоритм, который на основе известного хэша позволяет получить исходные данные (грубо говоря, зная хэш пароля, получить сам пароль). Свободность от коллизий — практическую невозможность подобрать два разных исходных аргумента, для которых значение хэш-функции будет одинаковым. MD5 — публичный алгоритм, являющийся криптографической хэш-функцией, поэтому единственный возможный тип атаки на него — зашифровка всех возможных значений пароля и сравнение полученного результата с известным хэшем. Более подробно об алгоритме md5 можно почитать в RFC1321 (www.faqs.org/rfcs/rfc1321.html). Для взлома md5-хэшей я использовал программу Passwords Pro v1.2.0.1 (InsidePro.com). С ее помощью удалось взломать 21249 паролей из 42920 (49,5%). Уже исходя из этих данных можно утверждать, что почти половина всех используемых сейчас паролей — ненадежные. Были подобраны все пароли, длина которых менее 5 символов, и все численные пароли, длина которых менее 10 символов. Заявленная разработчиком скорость для разных процессоров:

Intel Pentium-III 1000 MHz ~2,2 млн паролей/секунду
AMD AthlonXP 1700+ (1466 MHz) ~3,6 млн паролей/секунду
Intel Pentium-4 2400 MHz ~4,0 млн паролей/секунду

Реальная скорость перебора для моего компьютера (AMD AthlonXP 1600+) составляла около 3,2 миллионов паролей в секунду для взлома одного пароля и падала приблизительно до 200 тысяч паролей в секунду при одновременном взломе 8000 паролей (это происходит из-за того, что программе необходимо сравнить значение хэш-функции, полученное для проверяемого пароля, со всеми известными хэшами, загруженными в нее). Максимальное время, требующееся для подбора пароля, рассчитывается по следующей формуле:

где N — количество символов в наборе, из которого составляется пароль, L — предельная длина пароля, S — число проверок в секунду. Например, если рассчитать по этой формуле время, которое потребуется для перебора всех численных паролей длиной до 9 символов (S=3*10 6, N=10 (цифры), i=8), то получим всего лишь 37 секунд.

Однако метод полного перебора всех возможных комбинаций хорош либо для малого числа символов в наборе, либо для паролей небольшой длины (4-5 символов). Так, для перебора на обычном компьютере всех возможных паролей (могут включать 224 печатных символа) максимальной длиной 6 символов уже требуется 490 суток. Кроме атаки полным перебором, использовалась атака по словарю, когда возможные пароли не генерируются программой, а берутся из файла-словаря, заранее составленного пользователем.

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

Ниже приведено 15 самых популярных паролей и количество пользователей, избравших их:
123456 — 449 пользователей
123 — 303 пользователя
12345 — 288 пользователей
qwerty — 206 пользователей
12345678 — 148 пользователей
111 — 113 пользователей
1234 — 103 пользователя
666 — 85 пользователей
123321 — 77 пользователей
1111 — 77 пользователей
111111 — 76 пользователей
gfhjkm — 76 пользователей
password — 71 пользователь
1234567 — 69 пользователей
777 — 65 пользователей

Более полный список (50 самых популярных паролей) можно найти в Интернете на x-hack.ru/Antalos/ popular.html. Исходя из этих данных, можно сказать, что в целом за последнее время наблюдается упрощение паролей, применяемых пользователями. Так, по данным, собранным Solar Designer, в начале 90-х самыми популярными паролями являлись:

12345
abc123
password
passwd
123456
newpass
notused
Hockey
Internet

Конечно, приведенные пароли также ненадежны, но среди них нет ни одного длиной менее 4 символов или состоящего из одинаковых цифр (111).

Логин в пароле
Целых 729 (2%) паролей оказались абсолютно идентичными имени пользователя — не изменялся даже регистр букв (m2t4:m2t4, salavat:salavat). Еще 314 представляли собой различные модификации логина — добавление одной/нескольких цифр в начале или конце (jotum:1jotum, skiz:skiz57); запись всего логина или его части в обратном порядке (chap 118:811pahc, zoran58:naroz85); добавление фамилии к имени (korey:koreyblake); запись в другом регистре (dorofey: DOROFEY). При желании взломщик может собрать дополнительную информацию о пользователе (благо сделать это не так уж сложно) и перебрать возможные варианты. Если учесть, что в большинстве случаев добавляют сочетания вроде 1, 123 или год рождения, а процесс генерации подобных комбинаций можно автоматизировать, то такие пароли являются небезопасными и могут быть подобраны довольно быстро.

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

Модификация слова (запись в обратном порядке, удвоение, добавление цифр и т.п.) не спасает, так как с помощью написанной за 10 минут программы или готового софта на основе базового словаря можно быстро сгенерировать все эти варианты и проверить. Существуют даже программы, которые заменяют буквы схожими по начертанию цифрами (coolpass станет c00lpa55). Так что такие, казалось бы, надежные уловки не приводят к повышению устойчивости используемого пароля. Не думайте, что вы окажетесь умнее взломщика. Если хотите сделать свой пароль неуязвимым к словарной атаке — выбирайте бессмысленные комбинации символов.
В моем случае по словарям удалось подобрать 14176 (46,5%) паролей. Как видим, почти половина пользователей выбирает осмысленный пароль. Из этих паролей 6938 (22,8% от всех паролей) были подобраны всего лишь по двум маленьким словарям, в которые входят самые популярные пароли. Приведу краткую статистику по словарям, которые оказались наиболее эффективными (через запятую указано количество слов в словаре, затем — число подобранных паролей):

популярные пароли, 2153 — 5068
более полный словарь популярных паролей, 13958 — 6924
названия рок-групп и имена музыкантов, 12340 — 890
имена разных народов, 39132 — 1357
русские слова, набранные в английской раскладке, 138204 — 1406
русские слова, набранные транслитом, 138204 — 1958
слова разных народов, 3.162.009 — 10685
слова разных народов, записанные в обратном порядке, 3.162.009 — 9223

Стоит упомянуть, что по словарю, который использовался червем Морриса (419 слов), было подобрано всего 389 паролей. А в 1988 году этот вирус смог поразить 6200 компьютеров, что еще раз показывает, что наиболее употребляемые пароли изменяются с течением времени. Более полную статистику по использованным словарям можно посмотреть в Интернете на x-hack.ru/Antalos/dics.html.

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

P=n r,

где P — количество размещений (паролей), n — количество элементов множества, из которого осуществляется выборка (символов в наборе), r — число элементов (максимальная длина пароля).

Некоторые пояснения. Через “мал.” и “бол.” обозначены строчные и прописные латинские буквы соответственно. “Спец.” — спецсимволы (например, !@#). В строку “кириллица” вошли пароли, содержащие в себе символы русского или других национальных алфавитов, но не обязательно полностью состоящие из них (то есть пароль “паroL12” также подпадает под эту графу). В сводную таблицу не вошли 28 паролей, содержащих символы, единственный способ ввода которых — использование дополнительной клавиатуры для введения символа через его код — например, .

Из приведенной таблицы несложно сделать выводы: самая популярная длина пароля — 6 символов, состав — малые латинские символы или цифры. Более того, длина 85,6% всех паролей менее 8 символов, а состоят они из малых букв или цифр (в таблице выделены фоном). Подсчитаем время, которое необходимо для взлома md5-хэшей таких паролей на локальном компьютере. За среднюю скорость возьмем 3 миллиона вариантов в секунду, тогда по уже известной формуле получим:
Для малых букв:

(часов)

Для цифр:

(часов)

То есть, грубо говоря, вероятность того, что вы менее чем за сутки взломаете среднестатистический пароль, зная его md5-хэш, — 85%!

Еще несколько фактов
Среди собранных паролей оказалось 53 пароля системных администраторов (логины admin, administrator, webmaster). На общем фоне их пароли кажутся более надежными, но большая часть уязвима для атаки по словарю.
Основные правила, применяемые пользователями для генерации пароля путем изменения словарного слова или логина:

— добавление цифры в начале и/или конце пароля (в большинстве случаев — 0,1,…,9; 1,12,123,…; 00,11,…,99; 10,20,…,90; зачастую — год рождения);
— зеркалирование (matrix= xirtam);
— умножение слова, возможны разделители (moneymoney; zero-zero);
— умножение с зеркалированием (pepperreppep);
— запись в другой раскладке (валера =dfkthf);
— эксперименты с регистром букв (eXcesS);
— замена букв на цифры, схожие но начертанию (1slam);
— запись прямым/обратным транслитом (морж = morzh; billgates = биллгейтс).

Возможно применение нескольких правил одновременно, но даже это не дает надежной защиты от атаки по словарю, так как взломщик может модифицировать исходный пароль тем же путем. Мне показалось интересным, что популярные пароли могут изменяться с течением времени. Связано это с несколькими причинами.
Популярное в реальной жизни становится распространенным и в виртуальной. Так, пароль matrix, который в конце 80-х — начале 90-х использовали разве что математики, с выходом одноименного фильма занимает 29-е место в списке популярных паролей.

Точно так же влияют на выбор пароля и известные музыкальные группы (tatu), книги (Pelevin), программы (windows). Еще одним важным фактором является популяризация Интернета в целом — в Сеть приходит множество новых людей, которые могут не иметь понятия о компьютерной безопасности.
Это приводит к широкому использованию простейших паролей, а следовательно, и увеличению числа взломов.

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

Советы пользователям
Самый важный совет: никогда не используйте одинаковые пароли для доступа к разным системам! Даже если он кажется абсолютно устойчивым и надежным — например, V1!2cEqP,@#19r.

Взломщик может получить ваш пароль для доступа к одной системе, используя какую-либо уязвимость в ней. И это будет не ваша вина, а вина программистов. Но если он, получив один пароль, сможет получить контроль над всей вашей деятельностью в Сети — это будет целиком на вашей совести.
Теперь поговорим о выборе пароля. Никогда не используйте пароли, состоящие только из цифр. Количество возможных комбинаций цифр невелико (при желании рассчитайте его по формуле), и такой пароль может быть подобран относительно быстро даже при удаленной атаке. Проверьте используемый вами пароль: если в таблице он попадает в выделенные ячейки, то можно утверждать, что он ненадежен. Ваша цель при создании пароля — достичь максимально разумного числа символов в исходном наборе (используйте разный регистр и специальные символы).
Не используйте осмысленные пароли и их модификации. Взломщику не составит большого труда подобрать его. Не думайте, что система блокирования IP-адреса после определенного числа попыток войти в систему с неверным паролем защитит вас — просмотрите список прокси-серверов на samair.ru/proxy/ и убедитесь, что это лишь ширма, а не защита.

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

После того, как он зарегистрирует этот аккаунт на себя, получение вашего пароля будет для него делом нескольких минут.
Во-вторых, очень важным является контрольный вопрос, который позволяет восстановить забытый пароль.
Никогда не указывайте в ответе на него свои личные данные (год рождения, кличку собаки, девичью фамилию матери) — взломщик может с легкостью получить эту информацию, используя либо поиск в Интернете, либо социальную инженерию.
Во втором случае вы или ваши близкие (сослуживцы, родственники) сами с удовольствием раскроете взломщику эту информацию. Идеальным вариантом будет указать в ответе на контрольный вопрос случайный набор символов.
Еще несколько банальных советов. Регулярно обновляйте антивирусный софт, установите на ваш компьютер файрволл. Используйте альтернативный браузер (Opera) и почтовый клиент (The Bat!). Львиная доля уязвимостей в ПО, используемых взломщиками, приходится на продукты компании Microsoft.

Советы администратору
Введите систему контроля над паролями, которые выбирают пользователи. Лучше всего требовать наличия в нем букв и цифр, причем цифр не в начале или конце пароля, а в середине (хотя это и не убережет от паролей типа pass123pass, но множество глупых паролей будет отсеяно). Ограничивайте минимальную длину пароля хотя бы шестью символами. Не ограничивайте максимальную длину пароля (на мой взгляд, все разумные причины для этого на текущей стадии развития аппаратного обеспечения неактуальны).
Продумайте систему восстановления забытых паролей. Я считаю, что восстановление путем ответа на контрольный вопрос — недостаточно надежная схема.
Множество паролей взламывается именно через контрольный вопрос. Если вы не хотите потом разбираться, кому на самом деле принадлежит учетная запись, не используйте такую систему. На мой взгляд, хороший метод восстановления пароля — высылка на указанный при регистрации почтовый ящик.
Желательно высылать не старый пароль, а заново сгенерированный. Это поможет избежать шпионажа или действий от лица другого человека,
а также взлома аккаунтов пользователя на других системах.
В большинстве сетевых приложений сейчас используется аутентификация на базе алгоритма md5, который, хоть и надежен, довольно неустойчив при использовании слабых паролей.

Существуют разные системы для защиты хэшей, хранящихся в базе данных, от взлома методом грубой силы. Например, я встречал такой совет: “храните не весь хэш, а лишь его первые 16 символов, что затруднит атакующему ввод таких “огрызков” в программу для взлома, а вероятность совпадения первых 16 байт для разных паролей довольно мала”.
Более того, я встречал такой метод реализованным на практике. Это не самый лучший выход, так как допускает коллизионность паролей, а реальных препятствий взломщику не создает никаких.
Самым простым в реализации и дающим защиту от большинства взломщиков мне кажется следующий метод. Храните в базе данных не хэш пароля, а хэш хэша, то есть значение функции md5(md5(password)).
При логине пароль просто хэшируется два раза и полученное значение сверяется с хранящимся на сервере. Взломщик же сталкивается с несколькими трудностями. Во-первых, ему надо еще определить, что это не хэш самого пароля (а с первого взгляда это сделать невозможно: сказывается свойство, по которому результатом работы функции является значение фиксированной длины).
Во-вторых — публичных программ для взлома такого типа не существует. Придется или разрабатывать свою программу, или идти на какие-либо ухищрения. Это даст защиту от взломщиков-киддисов (а их сейчас большинство), которые используют программы, разработанные другими, и уязвимости, найденные не ими.
Можно пойти дальше и хранить пароль, хэшированный не два, а три или более раз. В этом случае еще и существенно замедляется скорость локального перебора паролей.

Комментарии
Все приведенные в статье примеры паролей реальные.
Ни один пароль не был использован для доступа к учетной записи или системе.

Александр Савченков, savabest@tut.by

Компьютерная газета. Статья была опубликована в номере 05 за 2005 год в рубрике

Какова оптимальная длина пароля? +29

Информационная безопасность, Криптография, Блог компании ДомКлик


Рекомендация: подборка платных и бесплатных курсов 3D-моделирования – https://katalog-kursov.ru/

Конечно, чем больше, тем лучше. И с помощью менеджера паролей можно очень легко генерировать и автоматически заполнять пароли любой длины. Но нужно ли делать пароли длиной в сотни символов, или есть какой-то эмпирический разумный минимум?

Вот интерфейс типичного генератора паролей:

Обратите внимание на ползунок Length: здесь он может менять длину пароля от 8 до 100 символов, а в других инструментах — гораздо больше. Какое же значение оптимально для паролей?

Хороший пароль — это всё, что у вас есть, когда вас взламывают

Чтобы понять, что такое хороший пароль, посмотрим, что происходит в стане врага!

Когда вы создаёте аккаунт, сервис сохраняет пароль в одном из многочисленных форматов. Сервис может положить пароль прямо в базу данных (в виде простого текста) или сгенерировать из него хэш с помощью одного из многочисленных алгоритмов. Самые популярные:

  • MD5
  • SHA-1
  • Bcrypt
  • Scrypt
  • Argon2

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

Хранение хэшей.

Взлом пароля

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

Взлом пароля.

И здесь важен выбор хорошего алгоритма. SHA-1 разрабатывался с учётом быстрого хэширования, это облегчает жизнь взломщикам. Bcrypt, Scrypt и Argon2 разрабатывались с учётом высоких вычислительных затрат, чтобы как можно больше замедлить взлом, особенно на специально выделенных машинах. И это очень важный аспект.

Если ориентироваться только на скорость, то пароль SHA-1, который невозможно взломать, выглядит так: 0OVTrv62y2dLJahXjd4FVg81.

А безопасный пароль, созданный с помощью правильно сконфигурированного Argon2, выглядит так: Pa$$w0Rd1992.

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

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

Думаете, в компаниях серьёзно относятся к безопасности и используют хорошие алгоритмы хэширования? Посмотрите на список взломанных баз данных, особенно на использованные в них хэши. Во многих случаях применялся MD5, чаще всего — SHA-1, и кое-где использовали bcrypt. Некоторые хранили пароли в виде простого текста. Такова реальность, которую нужно учитывать.

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

Пароль выбираете вы

Что вы можете сделать как пользователь? Если пароли хранятся в виде простого текста, тогда ничего не поделаешь. Когда базу украдут, сложность вашего пароля не будет иметь значения.

При правильно сконфигурированных алгоритмах сложность вашего пароля тоже не важна, он может быть 12345 или asdf.

Однако в промежуточных случаях, особенно при использовании SHA-1, сложность пароля имеет значение. Функции хэширования в целом не предназначены для паролей, но если вы используете сложный пароль, то это компенсирует недостатки алгоритмов.

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

Вывод: с сильным паролем вы защищены от большего количества взломов, чем со слабым паролем. А поскольку вы не знаете, насколько защищено хранилище паролей, вы не можете знать, насколько будет «достаточно безопасно» для этого сервиса. Так что предполагайте худшее, когда ваш выбор пароля ещё имеет значение.

Уникальности пароля недостаточно

Ладно, но с какой стати вам думать о том, чтобы использовать менеджер паролей и генерировать уникальный пароль для каждого сайта? В этом случае вы неуязвимы для credential stuffing — когда известная пара почтового ящика и пароля проверяется на разных сервисах в надежде, что человек использовал эти данные в разных местах. Это серьёзная угроза, потому что повторное использование паролей одна из главных проблем безопасности. От этого вас защитит генерирование уникального пароля для каждого сайта.

Credential stuffing.

А если базу украдут и всё её содержимое станет известно хакерам, то зачем вам всё ещё защищать свой пароль?

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

Использование сервиса после взлома.

Как оценить силу пароля с помощью энтропии

Сила пароля характеризуется энтропией — числовым представлением количества случайности, которая содержится в пароле. Поскольку речь идёт о больших числах, то вместо 1 099 511 627 776 (2^40) нам проще сказать «40 бит энтропии». И поскольку взлом пароля — это перебор вариантов, то чем их больше, тем больше времени нужно затратить на взлом.

Для случайных символов, сгенерированных менеджером паролей, энтропия считается по формуле: log2(<количество разных символов> ^ <длина>).

С длиной понятно, а что такое количество разных символов? Оно зависит от классов символов, входящих в пароль.

Например, пароль из 10 случайных строчных и прописных букв имеет log2(52 ^ 10) = 57 бит энтропии.

Чтобы вычислить удельную энтропию (её количество в одном символе заданного класса), можно использовать уравнение log2(n ^ m) = m * log2(n). Получаем: <длина> * log2(<количество разных символов>), где вторая часть является удельной энтропией. Пересчитаем по этой формуле предыдущую таблицу:

Для вычисления силы пароля нужно взять классы символов, которые входят в пароль, взять значения энтропии для этих классов и умножить на длину. Для приведённого выше примера пароля из 10 строчных и прописных букв мы получили 5.7 * 10 = 57 бит. Но если увеличить длину до 14, то энтропия скакнёт до 79,8 бит. А если оставить 10 символов, но добавить класс специальных символов, то общая энтропия будет равна 64 бит.

Приведённое уравнение позволяет быстро вычислить энтропию пароля, но тут есть подвох. Формула верна лишь в том случае, если символы не зависят друг от друга. А это относится только к сгенерированным паролям. Сочетание H8QavhV2gu удовлетворяет этому критерию и имеет 57 бит энтропии.

Но если использовать более лёгкие для запоминания пароли вроде Pa$$word11, то энтропия у них будет гораздо ниже при том же количестве символов. Взломщику не придётся перебирать все возможные комбинации, достаточно лишь перебрать слова из словаря с некоторыми изменениями.

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

Руководство по энтропии

Чем больше в пароле энтропии, тем сложнее его взломать. Но сколько энтропии будет достаточно? В целом, около 16 символов будет за глаза, у такого пароля 95—102 бита энтропии, в зависимости от классов символов. А какой минимальный порог? 80 бит? 60? Или даже 102 бита слишком мало?

Есть алгоритм, который по скорости соперничает с плохим алгоритмом хэширования, но зато изучен гораздо лучше: это AES.

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

Национальный институт стандартов и технологий определил размеры ключей, которые будут достаточны в обозримом будущем. Там рекомендуют использовать AES-128 в период «2019—2030 и позже». Как понятно из названия, речь идёт о 128 битах энтропии.

В другой рекомендации советуют делать ключи размером не меньше 112 бит:

Для обеспечения криптографической стойкости для нужд Федерального правительства сегодня требуется не меньше 112 бит (например, для шифрования или подписи данных).

Чтобы получить 128 бит энтропии с использованием прописных и строчных букв, а также чисел, нужен пароль длиной 22 символа ((5.95 * 22 = 131 бит).

Другие соображения

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

А если использовать только буквы и цифры, то при двойном клике выделится весь пароль.

Что делать, если есть ограничение по длине? На некоторых сайтах длина пароля не может достигать 22 символов. Иногда пароли могут быть только очень короткими, например, не больше 5 цифр. Тогда остаётся только использовать пароль максимально возможной длины.

Также есть рекомендации для сайтов по работе с паролями, и ограничение длины явно противоречит этим рекомендациям. Вот что говорит Национальный институт стандартов и технологий:

Нужно поддерживать пароли длиной хотя бы до 64 символов. Поощряйте пользователей делать удобные для запоминания секреты любой длины, с использованием любых символов (в том числе пробелов), что будет способствовать запоминанию.

И помните, что степень защиты паролей на сайтах варьируется от ужасной до превосходной, и они не скажут вам, каково реальное положение вещей. Если максимально допустимая длина пароля невелика, то создаётся впечатление, что такой сайт находится на плохой части шкалы.

Заключение

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

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

Добавить комментарий