Автор: Пользователь скрыл имя, 18 Декабря 2011 в 23:58, курсовая работа
Целью данной работы было разработать программное средство для проверки пароля на сложность.
Для достижения поставленной цели необходимо было реализовать ПО
определяющее в введенном пароле наличие таких элементов, как:
верхний и нижний регистры, наличие цифр, знаков и указанием мин длины.
Ниже в этой работе приводится принцип работы программы.
Московский
Государственный
Факультет ИТС
Кафедра
«Информационные системы»
Отчет по курсовой работе по дисциплине
«Методы и средства защиты компьютерной информации»
на тему:
«Проверка
сложности пароля»
Выполнил:
Проверил:
Москва – 2011
Целью данной работы было разработать программное средство для проверки пароля на сложность.
Для достижения поставленной цели необходимо было реализовать ПО
определяющее в введенном пароле наличие таких элементов, как:
верхний и нижний регистры, наличие цифр, знаков и указанием мин длины.
Ниже
в этой работе приводится принцип
работы программы.
Сложность пароля — мера эффективности, с которой пароль способен противостоять его угадыванию или методу полного перебора. В своей обычной форме сложность пароля является оценкой того, как много попыток в среднем потребуется взломщику, без прямого доступа к паролю, для его угадывания. Другое определение термина — функция от длины пароля, а также его запутанности и непредсказуемости. Использование сложных паролей снижает риск наличия бреши в защите, но сложные пароли не замещают собой необходимость наличия других эффективных мер безопасности.
Эффективность пароля заданной силы строго зависит от проектирования и реализации программного обеспечения систем аутентификации, в частности, насколько быстро атакующий может проверить догадку пароля, и как надежно информация о пароле пользователя хранится и передается. Риски также представлены некоторыми способами взлома безопасности компьютера, не относящимися к сложности пароля. Это такие методы как фишинг, кейлоггинг, телефонная прослушка, социальная инженерия, атака по сторонним каналам, уязвимости в программном обеспечении.
Самый очевидный способ проверить догадку — попытаться использовать её для допуска к ресурсу, защищённому угадываемым паролем.
Однако, этот способ может быть медленным, и достаточно большое количество систем задерживает или блокирует доступ к аккаунту после нескольких неверных попыток. С другой стороны, системы, которые используют пароли для аутентификации, должны хранить их в каком-либо виде, чтобы сверять их с введенными значениями. Обычно вместо самого пароля хранится только криптографическая хеш-функция пароля. Если хеш-функция достаточно сложная, то её очень сложно обратить. То есть, если атакующий имеет на руках значение хешированного пароля, то он не сможет напрямую восстановить из него пароль. Однако, если украдена криптографическая хеш-функция, то знание хешированного значения позволит атакующему быстро проверять предположительные пароли.
Еще один способ быстрого угадывания возможен, когда пароль используется для формирования криптографического ключа. В таких случаях атакующий может быстро проверить пароль, смотря насколько успешно он декодирует зашифрованные данные.
Если в системе паролей не используется криптографическая соль, то атакующий может заранее вычислить значение хеш-функции для распространенных вариантов паролей, а также для всех паролей меньше определенной длины, что позволяет очень быстро восстановить пароль. Большие списки заранее посчитанных хеш-функций паролей можно эффективно хранить используя радужную таблицу. Такие таблицы доступны в интернете для некоторых публичных систем аутентификации паролей.
Пароли создаются или автоматически (используя генераторы случайных чисел) или человеком. Сложность произвольно выбранного пароля против атаки полным перебором может быть точно вычислена. В большинстве случаев, пароли изначально создаются человеком, которого просят выбрать пароль, иногда направляя его советами или набором правил. Это типично происходит во время создания аккаунта для компьютерных систем или веб-сайтов. В этом случае возможны только оценки сложности пароля, так как люди склонны следовать шаблонам в таких задачах, и эти шаблоны всегда играют на руку атакующему. Кроме того, списки часто выбираемых паролей всеобще распространены для использования в программах угадывания паролей. Любой из многочисленных словарей для разнообразных языков — это такой список. Все элементы в таком списке считаются слабыми при использовании в качестве пароля. Несколько десятилетий анализа паролей в многопользовательских компьютерных системах показали, что больше 40% паролей легко отгадать, используя только компьютерные программы, и еще больше можно отгадать, когда во время нападения учитывается информация о конкретном пользователе.
Автоматическая генерация паролей, если выполнена должным образом, помогает избежать всякой связи между паролем и его пользователем. Например, имя домашнего питомца пользователя вряд ли сгенерируется такой системой. Для пароля, выбранного из достаточно большого пространства возможностей, полный перебор может стать практически невозможным. Однако, действительно случайные пароли может быть сложно сгенерировать и, как правило, пользователю их сложно запомнить.
В компьютерной индустрии обычно оценивают сложность пароля в терминах информационной энтропии (понятие из теории информации), измеряемой в битах. Вместо количества попыток, необходимых, чтобы точно угадать пароль, берется логарифм по основанию 2 от этого числа и называется количеством "битов энтропии" в пароле. Пароль со, скажем, 42-битной сложностью, посчитанной таким путем, будет соответствовать случайно сгенерированному паролю длиной в 42 бита. Другими словами, чтобы взломать пароль с 42-битной сложностью, необходимо произвести 242 попыток, исчерпав все возможные варианты методом полного перебора. Таким образом, добавление одного бита энтропии к паролю удваивает количество необходимых догадок, что делает задачу атакующего в два раза сложнее. В среднем, атакующий должен будет проверить половину из всех возможных вариантов пароля, до того как найдет правильный. (Закон больших чисел)
Случайные пароли состоят из строки символов специфичной длины, взятых из какого-ибо набора символов, использую процесс случайного выбора, в котором каждый символ равновероятен. Сложность случайного пароля зависит от фактической энтропии подразумеваемого генератора случайных чисел; зачастую используются генераторы псевдослучайных чисел. Множество публично-доступных генераторов паролей используют генераторы случайных чисел, находящихся в программных библиотеках, которые предлагают ограниченную энтропию. Однако, большинство современных операционных систем имеют криптографически сильные генераторы случайных чисел, которые подходят для генерации пароля. Для создания случайного пароля также возможно использовать обычные игральные кости. Программы для случайных паролей часто имеют свойство гарантировать, что результат будет удовлетворять местной политике паролей; например, всегда создавая пароль из смеси букв, чисел и специальных символов. Сложность случайного пароля, измеренная в терминах информационной энтропии, будет равна
где N — это
количество возможных символов, а L
— количество символов в пароле.
H измеряется в битах.
Энтропия на 1 символ для разных наборов символов | ||
Набор символов | Количество символов N | Энтропия на 1 символ H |
Арабские цифры (0–9) | 10 | 3.3219 бита |
Шестнадцатеричная система (0–9, A-F) | 16 | 4.0000 бита |
Латинский алфавит без верхнего регистра (a-z) | 26 | 4.7004 бита |
Алфавитные и числовые символы без верхнего регистра (a-z, 0–9) | 36 | 5.1699 бита |
Латинский алфавит с верхним регистром (a-z, A-Z) | 52 | 5.7004 бита |
Алфавитные и числовые символы с верхним регистром (a-z, A-Z, 0–9) | 62 | 5.9542 бита |
Все печатные символы ASCII | 95 | 6.5699 бита |
Рис.1
Для практических целей, пароли должны быть одновременно обоснованной сложности и функциональными для конечного пользователя, но и достаточно сложными, чтобы защитить от умышленной атаки. Сложные пароли можно легко забыть, и их с большей вероятностью будут записывать на бумаге, что подразумевает собой некоторый риск. С другой стороны, если потребовать пользователям запоминать пароли наизусть, то они будут придумывать более легкие пароли, что серьезно увеличит риск взлома.
Некоторые основные критерии надежности были установлены для метода полного перебора, в контексте попытки нахождения ключа, используемого при шифровании. Эта проблема не та же самая, так как эти методы включают в себя астрономическое количество попыток, но результаты могут помочь определиться с выбором пароля. В 1999 году проект Electronic Freedom Foundation взломал 56-битный DES шифр меньше чем за один день, используя специально спроектированное аппаратное оборудование. В 2002 году distributed.net взломал 64-битный ключ за 4 года 9 месяцев и 23 дня. А 12 октября 2011 distributed.net оценила, что для взлома 72-битного ключа используя нынешние возможности потребуется 124.8 лет. Ввиду огромной сложности и из-за ограничений, связанных с нашим пониманием законов физики, нельзя ожидать, чтобы какой-либо цифровой компьютер (или комбинация) был способен взломать 256-битный шифр с помощью метода полного перебора. Так или иначе, в теории существует возможность (Алгоритм Шора), что квантовые компьютеры смогут решать такие задачи, однако, возможно ли это будет на практике — доподлинно неизвестно.
Как результат
— нельзя дать точный ответ на, в некоторой
степени другую проблему, проблему оптимальной
сложности пароля. NIST рекомендует использовать
пароль в 80-бит энтропии для наилучшей
защиты, который может достигнут с помощью
95-символьного алфавита (то есть символьный
набор ASCII) 12-символьным паролем (12 * 6.5 битов
= 78).
Блок-схема алгоритма представлена на рисунке 1.2.
Рис.1.2.
Программная часть была реализована на языке C# в среде Microsoft Visual Studio 2010. Были использованы стандартные библиотеки NetFramework 4.0.
Подробный код
программы представлен в
Единственное
окно программы, которое содержит в
себе чек боксы для проверки наличия
символов и регистров, а так же
лейблы для ввода мин длины
пароля и самого пароля.
Рис
2.1 Главное окно
Правильное выполнение анализа сложности.
Рис
2.2.1 правильное выполнение
Рис
2.2.2
Рис
2.2.3
Выполнение с несоответствием какого либо условия.
Рис
2.3.1 несоответствие
условий
Рис
2.3.2