В настоящее время авторизация пользователей с помощью пароля является самым распространённым, но одним из самых уязвимых способов авторизации. Различные сервисы и программы предъявляют свои требования к паролю, а некоторые не формулируют даже минимальных требований к задаваемому пользователем паролю.
Требования к паролям бывают разные. Они могут ставить условие на количество символов в пароле (длина пароля), разрешать или наоборот, запрещать, использовать какой-либо диапазон печатных ASCII символов.
Для того, чтобы выяснить, какой пароль будет считаться достаточно сложным, необходимо выделить параметры, по которым мы сможем оценить сложность пароля. Такими параметрами являются длина пароля и набор разрешенных символов (алфавит).
Очевидно, что чем длиннее пароль и чем больше используемый алфавит, тем сложнее этот пароль. Но придумывать, а тем более запоминать длинные пароли очень трудно. Поэтому имеет смысл узнать, насколько длинным должен быть пароль для того, чтобы он был достаточно сложным.
Сравним несколько вариантов длин паролей с использованием различных алфавитов. Возьмем длины пароля равные 6, 8, 10, 12, 16, 20 символам. При этом будем использовать шесть различных алфавитов (Таблица 1).
Таблица 1. Состав и количество символов алфавитов
Алфавит | Количество символов |
A1 = [0123456789] |
10 |
A2 = [a-z] |
26 |
A3 = [a-z0..9] |
36 |
A4 = [a-zA-Z] |
52 |
A5 = [a-zA-Z0..9] |
62 |
A6 = [a-zA-Z0..9S], где S = [!@#$%^&*()_-+=|/?.,:;[]{}] |
88 |
Вычислим количество всех возможных вариантов паролей различной длины с использованием шести различных словарей. Допустим, что в пароле возможно использование одного и того же символа несколько раз, поэтому используем формулу для размещений с повторениями:
, (1)
где - мощность алфавита,
- длина пароля.
Под мощностью алфавита будем понимать количество символов, входящих в состав данного алфавита.
Расчеты количества возможных вариантов паролей разной длины с использованием различных алфавитов приведены на рисунке 1.
Рис. 1. Зависимость количества всех возможных паролей от используемого алфавита и длины пароля.
Из диаграммы 1 следует, что зависимость количества всех вариантов паролей от длины паролей является степенной.
Рис. 2. Зависимость количества всех вариантов паролей от используемого алфавита
На Рис.2 приведен график степенной зависимости количества всех вариантов паролей от используемого алфавита.
После вычисления количественных значений пространств паролей при различных алфавитах и длинах паролей следует подсчитать среднее время подбора хэша для пароля. Хэшем пароля является результат вычисления хэш-функции от пароля.
Предположим, что для вычисления хэша в распоряжении злоумышленника имеются мощнейшие вычислительные комплексы, которые позволяют вычислять хэш пароля с помощью наиболее популярных хэш-функций (sha-2, sha-3, bcrypt, scrypt, PBKDF2) в среднем за 0.01 секунды, и таких комплексов 100, что позволяет вести вычисления в 100 параллельных потоков.
Среднее время подбора пароля, , будем считать по формуле:
, (2)
где - среднее время вычисления хэша для одного пароля из всех возможных паролей;
- общее количество всех возможных паролей;
- количество параллельных потоков вычисления.
Результатам вычислений представлены на рисунке 3.
Диаграмма зависимости среднего времени подбора пароля от используемого алфавита при составлении пароля и длины пароля приведена на рисунке 3.
Рисунок 3. Зависимость среднего времени подбора пароля от используемого алфавита и длины пароля
Экспериментально доказано, что среднее время подбора пароля для любого алфавита экспоненциально возрастает с увеличением длины пароля. Среднее время подбора пароля, при составлении которого использовался алфавит малой мощности в сочетании с большой длиной пароля, сопоставимо со средним временем подбора пароля, при составлении которого использовался алфавит большой мощности в сочетании с малой длиной пароля.
В результате проведенных вычислений и сравнений можно сделать вывод, что пароль будет считаться достаточно сложным, если для его составления использовали алфавит большой мощности и длина пароля составляет 8-12 символов.
Сформулируем требования, рекомендуемые для формирования пароля:
- длина пароля должна составлять не менее 8 символов;
- состав алфавита должен соответствовать алфавитам A5-А6.
Библиографический список
- Bruce Schneier Choosing Secure Passwords // Schneier on Security: сетевой ресурс. 2007. URL: https://www.schneier.com/blog/archives/2007/01/choosing_secure.html (дата обращения 10.06.2014)
- Bruce Schneier«Snakeoil: Warning Sign #5: Ridiculous key lengths» // Schneier on Security: сетевой ресурс. URL: https://www.schneier.com/crypto-gram-9902.html (дата обращения 10.06.2014)