Исследование алгоритмов оценки стойкости пароля
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
т совершенно незаметной, а с точки зрения взлома скорость упадет очень существенно - со 100 миллионов до 100 паролей в секунду. Замедление обычно достигается за счет многократного вычисления криптографических функций, причем эти вычисления построены таким образом, чтобы атакующая сторона не могла проверить пароль без повторения вычислений (то есть недостаточно просто добавить вызов Sleep в процедуре проверки пароля). Впервые такой вариант был предложен в 1997 году в работе Secure Applications of Low-Entropy Keys.
Системы, реализующие подобные замедления, увеличивают эффективную энтропию пароля на величину, где C - количество итераций при вычислении криптографического преобразования. Примеры подобных систем приведены в таблице 2.
Таблица 1.2 - Системы, увеличивающие эффективную энтропию
пароля
Где применяетсяКоличество итераций, алгоритмИзм. эффективной энтропии пароляWPA4x4096 SHA-1 (PBKDF2)+14 битMS Office 200750 000 SHA-1+15,6 битWinRAR 3.0+~100 000 SHA-1+16,6 битPGP 9.0+2x1024 SHA-1+11 битAdobe Acrobat 5.0 - 8.050 MD5 + 20 RC4+6,1 бит
Как было сказано выше, системы могут содержать ошибки, снижающие ее стойкость. Например, для шифрования данных может использоваться алгоритм с ключом недостаточной длины или сама процедура преобразования пароля может быть ненадежной. Так, все версии Microsoft Word и Excel, начиная с 97 и до 2003 включительно, для шифрования документов по умолчанию используют потоковый алгоритм RC4 с длиной ключа 40 бит.
Стойкость системы определяется стойкостью самого слабого звена, поэтому если известно, что для шифрования используется 40-битный ключ, нет никакого смысла использовать пароль с большей энтропией. Другой, ставший уже классическим, пример - алгоритм проверки паролей в операционной системе Windows NT/2000/XP/2003. Эти системы поддерживают два алгоритма - LM и NTLM. При создании пользователя или изменении его пароля эти системы вычисляют LM- и NTLM-хэши пароля и сохраняют его в базе данных учетных записей.
Алгоритм вычисления LM-хэша выглядит следующим образом:
-символы пароля приводятся к верхнему регистру и преобразуются в OEM-кодировку;
-если пароль короче 14 символов, он дополняется пробелами до этой величины;
-полученная последовательность из 14 символов делится на две части по 7 символов;
-каждая из полученных частей используется в качестве ключа для шифрования фиксированного значения алгоритмом DES;
-полученные в результате шифрования блоки объединяются - это и есть LM-хэш пароля.
2. Исследование некоторых алгоритмов оценки стойкости пароля
2.1 Анализатор паролей SeaMonkey
Этот анализатор паролей разработан как часть проекта SeaMonkey . Алгоритм его работы заключается в вычислении веса пароля, основывающемся на данных о символах, из которых этот пароль составлен. Вес пароля вычисляется по следующей формуле:
(2)
где:
-pwlength равно 5, если количество символов в пароле больше 5, или равно длине пароля;
-numeric равно 3, если количество цифр в пароле больше 3, в противном случае - равно количеству цифр;
-numsymbols считается равным 3, если число символов в пароле, отличных от букв, цифр и знаков подчёркивания, больше 3, иначе - количеству таких символов;
-upper равно 3, если количество букв в верхнем регистре больше 3, или количеству заглавных букв в противном случае.
После вычисления вес пароля нормируется таким образом, чтобы его значение заключалось в интервале от 0 до 100. Нормировка проводится в том случае, когда значение веса не попадает в этот диапазон. В случае, когда pwstrength меньше 0, значение pwstrength приравнивают к нулю, а когда больше 0, значение веса устанавливают равным 100. Ранжирование же пароля по степени стойкости оставлено на усмотрение разработчиков.
Описанный анализатор не использует никаких проверок с использованием словарей, что делает его оценки несколько однобокими, и, вероятно, менее точными.
.2 Password Strength Meter (jQuery plugin)
Ещё одним вариантом оценщика пароля, работающего на клиентской стороне, является Password Strength Meter - плагин, разработанный для JavaScript фреймворка jQuery.
Процедура оценки работает следующим образом. Известно множество качеств, обладая которыми пароль увеличивает или уменьшает свою стойкость к подбору. Каждое такое качество имеет свой строго определённый вес. Алгоритм заключается в поэтапной проверке наличия у пароля этих качеств и, в случае их присутствия происходит увеличения суммарного веса пароля, по величине которого после просмотра всех характеристик делается заключение об уровне стойкости пароля.
Рассмотрим полный алгоритм процедуры оценки пароля:
1.Вес пароля устанавливается равным нулю.
2.Если длина пароля менее 4 символов, то работа алгоритма заканчивается и возвращается результат слишком короткий пароль. Иначе переходим к шагу 3.
3.Вес пароля увеличиваем на величину , где len - длина пароля.
.Осуществляется попытка сжатия пароля по следующему алгоритму. Если в пароле встречается подстрока вида SS, где S - строка длины 1, то первая часть этой подстроки удаляется и сжатие продолжается с позиции начала второй части этой подстроки. Например, применяя этот алгоритм к строке aaabbcab, на выходе получим стр