Автор: Пользователь скрыл имя, 29 Февраля 2012 в 11:43, курсовая работа
Проблемы защиты информации от постороннего доступа и нежелательного воздействия на нее возникло с той поры, когда человеку по каким-либо причинам не хотелось делиться ею ни с кем или не с каждым человеком.
Ценной становится та информация, обладание которой позволит ее существующему и потенциальному владельцам получить какой-либо выигрыш.
Введение……………………………………………………….………..........4
1. Методы идентификации и аутентификации ..………..…….............6
1.1. Программные методы………………………………………………...6
1.2. Аппаратные методы…………………………………………………..7
1.3. Программно-аппаратные методы……………………………………8
2. Алгоритмы идентификации и аутентификации……………….…..10
2.1. Парольная аутентификация ……………………………….....……..10
2.2. Одноразовые пароли ………………………………………..............11
2.3. Сервер аутентификации Kerberos ………………………….…...….12
2.4. Идентификация и аутентификация с помощью биометрических данных.………………....………………………...........................................13
3. Алгоритм реализации метода защиты …………………………......16
3.1. Безопасная авторизация с передачей хешированного пароля .......16
3.2. Лингвистическая оценка эффективности разработанного метода идентификации и аутентификации………………………………………..18
4. Сравнение эффективности разработанного метода идентификации и аутентификации с методом Kerberos…………………………...…….....19
4.1. Математическая модель оценки эффективности………………….19
4.2. Лингвистическая оценка эффективности Kerberos..………..……..20
4.3. Анализ результатов сравнения ..……………..…………….……….21
Заключение………………………………………………………………….23
Список используемой литературы…………
СОДЕРЖАНИЕ
Введение……………………………………………………….
1. Методы идентификации и аутентификации ..………..…….............6
1.1. Программные методы………………………………………………...6
1.2. Аппаратные методы…………………………………………………..7
1.3. Программно-аппаратные методы……………………………………8
2. Алгоритмы идентификации и аутентификации……………….…..10
2.1. Парольная аутентификация ……………………………….....……..10
2.2. Одноразовые пароли ………………………………………..............1
2.3. Сервер аутентификации Kerberos ………………………….…...….12
2.4. Идентификация и аутентификация с помощью биометрических данных.………………....………………………....
3. Алгоритм реализации метода защиты …………………………......16
3.1. Безопасная авторизация с передачей хешированного пароля .......16
3.2. Лингвистическая оценка эффективности разработанного метода идентификации и аутентификации……………………………………….
4. Сравнение эффективности разработанного метода идентификации и аутентификации с методом Kerberos…………………………...…….....19
4.1. Математическая модель оценки эффективности………………….19
4.2. Лингвистическая оценка эффективности Kerberos..………..……..20
4.3. Анализ результатов сравнения ..……………..…………….……….21
Заключение……………………………………………………
Список используемой литературы………………………………………...24
Приложение………………………………………………..
ВВЕДЕНИЕ
Проблемы защиты информации от постороннего доступа и нежелательного воздействия на нее возникло с той поры, когда человеку по каким-либо причинам не хотелось делиться ею ни с кем или не с каждым человеком.
Ценной становится та информация, обладание которой позволит ее существующему и потенциальному владельцам получить какой-либо выигрыш.
С переходом на использование технических средств связи, информация подвергается воздействию случайных процессов (неисправностям и сбоям оборудования, ошибкам операторов и т.д.), которые могут привести к ее разрушению, изменению на ложную, а также создать предпосылки к доступу к ней посторонних лиц.
С появлением сложных автоматизированных систем управления, связанных с автоматизированным вводом, хранением, обработкой и выводом информации, проблемы ее защиты приобретают еще большее значение.
Идентификацию и аутентификацию можно считать основой программно-технических средств безопасности, поскольку остальные сервисы рассчитаны на обслуживание именованных субъектов. Идентификация и аутентификация - это первая линия обороны, "проходная" информационного пространства организации.[1,5]
Идентификация позволяет субъекту (пользователю, процессу, действующему от имени определенного пользователя, или иному аппаратно-программному компоненту) назвать себя (сообщить свое имя). Посредством аутентификации вторая сторона убеждается, что субъект действительно тот, за кого он себя выдает. В качестве синонима слова "аутентификация" иногда используют словосочетание "проверка подлинности".
Аутентификация бывает односторонней (обычно клиент доказывает свою подлинность серверу) и двусторонней (взаимной). Пример односторонней аутентификации - процедура входа пользователя в систему.
В сетевой среде, когда стороны идентификации и аутентификации территориально разнесены, у рассматриваемого сервиса есть два основных аспекта:
1. Что служит аутентификатором (то есть используется для подтверждения подлинности субъекта);
2. Как организован (и защищен) обмен данными идентификации и аутентификации.
Субъект может подтвердить свою подлинность, предъявив, по крайней мере, одну из следующих сущностей:
1. нечто, что он знает (пароль, личный идентификационный номер, криптографический ключ и т.п.);
2. нечто, чем он владеет (личную карточку или иное устройство аналогичного назначения);
3. нечто, что есть часть его самого (голос, отпечатки пальцев и т.п., то есть свои биометрические характеристики).[2]
В открытой сетевой среде между сторонами идентификации и аутентификации не существует доверенного маршрута; это значит, что в общем случае данные, переданные субъектом, могут не совпадать с данными, полученными и использованными для проверки подлинности. Необходимо обеспечить защиту от пассивного и активного прослушивания сети, то есть от перехвата, изменения и/или воспроизведения данных. Передача паролей в открытом виде, очевидно, неудовлетворительна; не спасает положение и шифрование паролей, так как оно не защищает от воспроизведения. Нужны более сложные протоколы аутентификации.
Надежная идентификация и затруднена не только из-за сетевых угроз, но и по целому ряду причин. Во-первых, почти все аутентификационные сущности можно узнать, украсть или подделать. Во-вторых, имеется противоречие между надежностью аутентификации, с одной стороны, и удобствами пользователя и системного администратора с другой. Так, из соображений безопасности необходимо с определенной частотой просить пользователя повторно вводить аутентификационную информацию (ведь на его место мог сесть другой человек), а это не только хлопотно, но и повышает вероятность того, что кто-то может подсмотреть за вводом данных. В-третьих, чем надежнее средство защиты, тем оно дороже.
Современные средства идентификации и аутентификации должны поддерживать концепцию единого входа в сеть. Единый вход в сеть - это, в первую очередь, требование удобства для пользователей. Если в корпоративной сети много информационных сервисов, допускающих независимое обращение, то многократная идентификация и аутентификация становится слишком обременительной. К сожалению, пока нельзя сказать, что единый вход в сеть стал нормой, доминирующие решения пока не сформировались.
Цель работы: изучить систему защиты аутентификатора при доступе к автоматизированной системе обработки данных (АСОД).
Для реализации поставленной цели необходимо решить следующие задачи:
1. Проанализировать существующие методы идентификации и аутентификации.
2. Изучить защиту аутентификатора в случае перехвата трафика и просмотра исходника злоумышленником, осуществить защиту сервиса при потере данных из базы данных (БД) сервера.
3. Сравнить разработанный метод с существующим методом аутентификации и идентификации.
4. Оценить эффективность разработанного метода защиты идентификации и аутентификации.
1. Методы идентификации и аутентификации
1.1 Программные методы
Существует 3 метода программной аутентификации:
1. Метод пароля и его модификация.
Пароль выбирается пользователем.
Ожидаемое безопасное время это полупроизведение числа возможных паролей и времени, необходимого для того, чтобы попробовать все возможные пароли.
Модификация методов простых паролей:
1) Пароль с выборкой символов. Система просит ввести случайную цепочку символов, составляющую пароль.
2) Метод однократного пароля. Пользователь вводит в систему, или система выдает пользователю значительное число паролей, которые тот должен запомнить или хранить. Каждый раз пользователь входит под новым именем. Проблемы: в случае аварийного завершения сеанса работы пользователь может не знать, какой пароль вводить.
3) При завершении сеанса работы система просит ввести пароль на следующий сеанс.
Правила обращения с паролями:
1) Пароли нельзя хранить в системе в явном виде
2) Пароли нельзя отображать в явном виде
3) Пароли необходимо менять как можно чаще
4) Система не должна вырабатывать новый пароль в конце сеанса работы
2. Метод вопрос-ответ. Пользователь при входе отвечает на m ориентированных и n стандартных вопросов. Стандартные вопросы не касаются пользователя и вводятся в систему заранее.
3. Метод секретного алгоритма. Система выдает случайное число. Пользователь, зная секретный алгоритм, сообщает системе результаты вычислений по алгоритму.
Главным недостатком программных методов идентификации и аутентификации с точки зрения безопасности является знание пользователем аутентификатора.
1.2. Аппаратные методы.
Аутентификация производится по некоторому предмету, которым физически обладает пользователь.
В большинстве случаев аутентификация с помощью уникального предмета обеспечивает более серьезную защиту, чем парольная аутентификация.
Предметы, используемые для аутентификации, можно условно разделить на следующие две группы:
1. «Пассивные» предметы, которые содержат аутентификационную информацию (например, некий случайно генерируемый пароль) и передают ее в модуль аутентификации по требованию. При этом, аутентификационная информация может храниться в предмете как в открытом так и в защищенном виде. В последнем случае требуется ввод PIN-кода для доступа к хранящимся данным, что автоматически превращает предмет в средство двухфакторной аутентификации.[3]
2. «Активные» предметы, которые обладают достаточными вычислительными ресурсами и способны активно участвовать в процессе аутентификации. Эта возможность особенно интересна при удаленной аутентификации пользователя, поскольку на основе таких предметов можно обеспечить строгую аутентификацию. Под этим термином скрывается такой вид аутентификации, при котором секретная информация, позволяющая проверить подлинность пользователя, не передается в открытом виде.
Примеры стандартов:
Носитель информации - магнитная полоса. В соответствии с международным стандартом ISO 1811-1/9 1989 полоса содержит три дорожки: две для идентификации и одна - для перезаписи информации. Проблемы: невысокая механическая стойкость.[4,5]
Недостатки аппаратных методов:
Необходимость физической защиты носителя аутентификатора.
Большие временные затраты на добавление (удаление) пользователей.
Неудобства для пользователя, связанные с необходимостью повышенного внимания к носителю аутентификатора (исключить кражу).
Угроза для защиты системы идентификации и аутентификации из-за возможности создания дубликата.
1.3. Программно-аппаратные методы.
Аутентификация производится с помощью основных биометрических показателей человека:
Осуществляется сканирование сетчатки; измеряется угловое распределение кровеносных сосудов относительно слепого пятна. Стоимость устройств 5-7 тыс. долларов. Контрольный образ - 40 байт.
Существует несколько процентов вероятности не признания законного пользователя, но зато 100%-я вероятность обнаружения чужака.[6,7]
Основан на выделении основных дактилоскопических признаков, измерения расстояния между ними, вычисления их относительных координат. Контрольный образ 400-1000 байт. Цена - 2-4 тыс. долл. Надежность - 95%. Руки человека должны быть теплыми. Термохромные материалы значительно изменяют отражающую способность при незначительном изменении температуры. Прибор представляет собой матрицу 250х250 ячеек. Каждая ячейка имеет 16 градаций оттенков.[7,6]
Образ занимает от 9 до 1000 байт, в зависимости от фирмы производителя. Цена - 3-5 тыс. долл.[8] Рука облучается мощным световым потоком. Фотоячейки фиксируют контур руки. Система обнаруживает возрастные изменения, производственные изменения и муляжи.
Параметры, уникальные для человека:
Положение краев контура каждого пальца
Положение центральных осей для каждого контура пальца
Смещение осей контуров всех пальцев до положения, перпендикулярного опорной линии
Ширина контура каждого пальца в определяющих местах опорной линии
4.1. Динамическая аутентификация (специальный планшет и ручка). В ручке установлен преобразователь ускорения по осям x и y; планшет измеряет силу нажатия.
4.2. Статическая аутентификация. Подпись сверяется с контрольным образом. Расписываются 4-5 раз. Контрольный образ от 40 байт до 4 Кбайт. Стоимость оборудования - 100-1200 долл.[9]
Высота тона (диапазон частот вибрации голосовых связок)
Резонансные частоты глотки носовой и ротовой полости
Мелодичность (высота тона как функция времени)
Интонация (громкость как функция времени)
Методы аутентификации:
5.1. Фразонезависимые
5.2. Текстозависимые
Контрольный образ от 2 до 20 Кбайт. Стоимость оборудования - от 300 долл.[10]
Существуют определенные временные интервалы при последовательном нажатии клавиш на клавиатуре. Позволяет производить аутентификацию постоянно и скрытно.
Способы:
6.1. По свободному тексту
6.2. По набору ключевых фраз
Средства биометрической аутентификации используются в системах, работающих в двух вариантах:
1. Открытые системы. Средства аутентификации используются неподготовленным пользователем и количество средств аутентификации – одно, два.
2. Системы управления оружием или серьезная закрытая информация. Пользователи заранее подготовлены и четко знают последовательность действий.
За невыполнение последовательности действий могут быть применены технические средства охраны.
2. Алгоритмы идентификации и аутентификации
2.1. Парольная аутентификация
Главное достоинство парольной аутентификации - простота и привычность. Пароли давно встроены в операционные системы и иные сервисы. При правильном использовании пароли могут обеспечить приемлемый для многих организаций уровень безопасности. Тем не менее, по совокупности характеристик их следует признать самым слабым средством проверки подлинности.
Чтобы пароль был запоминающимся, его зачастую делают простым (имя подруги, название спортивной команды и т.п.). Однако простой пароль нетрудно угадать, особенно если знать пристрастия данного пользователя. Известна классическая история про советского разведчика Рихарда Зорге, объект внимания которого через слово говорил "карамба"; разумеется, этим же словом открывался сверхсекретный сейф.[11]
Иногда пароли с самого начала не хранятся в тайне, так как имеют стандартные значения, указанные в документации, и далеко не всегда после установки системы производится их смена.
Ввод пароля можно подсмотреть. Иногда для подглядывания используются даже оптические приборы.
Пароли нередко сообщают коллегам, чтобы те могли, например, подменить на некоторое время владельца пароля. Теоретически в подобных случаях более правильно задействовать средства управления доступом, но на практике так никто не поступает; а тайна, которую знают двое, это уже не тайна.
Пароль можно угадать "методом грубой силы", используя, скажем, словарь. Если файл паролей зашифрован, но доступен для чтения, его можно скачать к себе на компьютер и попытаться подобрать пароль, запрограммировав полный перебор (предполагается, что алгоритм шифрования известен).
Тем не менее, следующие меры позволяют значительно повысить надежность парольной защиты:
1. наложение технических ограничений (пароль должен быть не слишком коротким, он должен содержать буквы, цифры, знаки пунктуации и т.п.);
2. управление сроком действия паролей, их периодическая смена;
3. ограничение доступа к файлу паролей;
4. ограничение числа неудачных попыток входа в систему (это затруднит применение "метода грубой силы");
5. обучение пользователей;
6. использование программных генераторов паролей (такая программа, основываясь на несложных правилах, может порождать только благозвучные и, следовательно, запоминающиеся пароли).[12]
Перечисленные меры целесообразно применять всегда, даже если наряду с паролями используются другие методы аутентификации.
2.2 Одноразовые пароли
Рассмотренные выше пароли можно назвать многоразовыми; их раскрытие позволяет злоумышленнику действовать от имени легального пользователя. Гораздо более сильным средством, устойчивым к пассивному прослушиванию сети, являются одноразовые пароли.
Наиболее известным программным генератором одноразовых паролей является система S/KEY компании Bellcore. Идея этой системы состоит в следующем. Пусть имеется односторонняя функция f (то есть функция, вычислить обратную которой за приемлемое время не представляется возможным). Эта функция известна и пользователю, и серверу аутентификации. Пусть, далее, имеется секретный ключ K, известный только пользователю.[13]
На этапе начального администрирования пользователя функция f применяется к ключу K n раз, после чего результат сохраняется на сервере. После этого процедура проверки подлинности пользователя выглядит следующим образом:
1. Сервер присылает на пользовательскую систему число (n-1);
2. Пользователь применяет функцию f к секретному ключу K (n-1) раз и отправляет результат по сети на сервер аутентификации;
3. Сервер применяет функцию f к полученному от пользователя значению и сравнивает результат с ранее сохраненной величиной. В случае совпадения подлинность пользователя считается установленной, сервер запоминает новое значение (присланное пользователем) и уменьшает на единицу счетчик (n).
На самом деле реализация устроена чуть сложнее (кроме счетчика, сервер посылает затравочное значение, используемое функцией f), но для нас сейчас это не важно. Поскольку функция f необратима, перехват пароля, равно как и получение доступа к серверу аутентификации, не позволяют узнать секретный ключ K и предсказать следующий одноразовый пароль.
Система S/KEY имеет статус Internet-стандарта (RFC 1938).[13,12]
Другой подход к надежной аутентификации состоит в генерации нового пароля через небольшой промежуток времени (например, каждые 60 секунд), для чего могут использоваться программы или специальные интеллектуальные карты (с практической точки зрения такие пароли можно считать одноразовыми). Серверу аутентификации должен быть известен алгоритм генерации паролей и ассоциированные с ним параметры; кроме того, часы клиента и сервера должны быть синхронизированы.[14]
2.3. Сервер аутентификации Kerberos
Kerberos - это программный продукт, разработанный в середине 1980-х годов в Массачусетском технологическом институте и претерпевший с тех пор ряд принципиальных изменений. Клиентские компоненты Kerberos присутствуют в большинстве современных операционных систем.
Kerberos предназначен для решения следующей задачи. Имеется открытая (незащищенная) сеть, в узлах которой сосредоточены субъекты - пользователи, а также клиентские и серверные программные системы. Каждый субъект обладает секретным ключом. Чтобы субъект C мог доказать свою подлинность субъекту S (без этого S не станет обслуживать C), он должен не только назвать себя, но и продемонстрировать знание секретного ключа. C не может просто послать S свой секретный ключ, во-первых, потому, что сеть открыта (доступна для пассивного и активного прослушивания), а, во-вторых, потому, что S не знает (и не должен знать) секретный ключ C. Требуется менее прямолинейный способ демонстрации знания секретного ключа.
Система Kerberos представляет собой доверенную третью сторону (то есть сторону, которой доверяют все), владеющую секретными ключами обслуживаемых субъектов и помогающую им в попарной проверке подлинности.
Чтобы с помощью Kerberos получить доступ к S (обычно это сервер), C (как правило - клиент) посылает Kerberos запрос, содержащий сведения о нем (клиенте) и о запрашиваемой услуге. В ответ Kerberos возвращает так называемый билет, зашифрованный секретным ключом сервера, и копию части информации из билета, зашифрованную секретным ключом клиента. Клиент должен расшифровать вторую порцию данных и переслать ее вместе с билетом серверу. Сервер, расшифровав билет, может сравнить его содержимое с дополнительной информацией, присланной клиентом. Совпадение свидетельствует о том, что клиент смог расшифровать предназначенные ему данные (ведь содержимое билета никому, кроме сервера и Kerberos, недоступно), то есть продемонстрировал знание секретного ключа. Значит, клиент - именно тот, за кого себя выдает. Подчеркнем, что секретные ключи в процессе проверки подлинности не передавались по сети (даже в зашифрованном виде) - они только использовались для шифрования. Как организован первоначальный обмен ключами между Kerberos и субъектами и как субъекты хранят свои секретные ключи - вопрос отдельный.[15]
Проиллюстрируем описанную процедуру на Рис. 1. Проверка сервером S подлинности клиента C.
Рис. 1. Проверка сервером S подлинности клиента C.
На Рис.1. c и s - сведения (например, имя), соответственно, о клиенте и сервере, d1 и d2 - дополнительная (по отношению к билету) информация, Tc.s - билет для клиента C на обслуживание у сервера S, Kc и Ks - секретные ключи клиента и сервера, {info}K - информация info, зашифрованная ключом K.
Приведенная схема - крайне упрощенная версия реальной процедуры проверки подлинности. Более подробное рассмотрение системы Kerberos можно найти, например, в статье В. Галатенко "Сервер аутентификации Kerberos (Jet Info, 1996, 12-13). Нам же важно отметить, что Kerberos не только устойчив к сетевым угрозам, но и поддерживает концепцию единого входа в сеть.
2.4. Идентификация и аутентификация с помощью биометрических данных
Биометрия представляет собой совокупность автоматизированных методов идентификации и/или аутентификации людей на основе их физиологических и поведенческих характеристик. К числу физиологических характеристик принадлежат особенности отпечатков пальцев, сетчатки и роговицы глаз, геометрия руки и лица и т.п. К поведенческим характеристикам относятся динамика подписи (ручной), стиль работы с клавиатурой. На стыке физиологии и поведения находятся анализ особенностей голоса и распознавание речи.
Биометрией во всем мире занимаются очень давно, однако долгое время все, что было связано с ней, отличалось сложностью и дороговизной. В последнее время спрос на биометрические продукты, в первую очередь в связи с развитием электронной коммерции, постоянно и весьма интенсивно растет. Это понятно, поскольку с точки зрения пользователя гораздо удобнее предъявить себя самого, чем что-то запоминать. Спрос рождает предложение, и на рынке появились относительно недорогие аппаратно-программные продукты, ориентированные в основном на распознавание отпечатков пальцев.
В общем виде работа с биометрическими данными организована следующим образом. Сначала создается и поддерживается база данных характеристик потенциальных пользователей. Для этого биометрические характеристики пользователя снимаются, обрабатываются, и результат обработки (называемый биометрическим шаблоном) заносится в базу данных (исходные данные, такие как результат сканирования пальца или роговицы, обычно не хранятся).[16]
В дальнейшем для идентификации (и одновременно аутентификации) пользователя процесс снятия и обработки повторяется, после чего производится поиск в базе данных шаблонов. В случае успешного поиска личность пользователя и ее подлинность считаются установленными. Для аутентификации достаточно произвести сравнение с одним биометрическим шаблоном, выбранным на основе предварительно введенных данных.
Обычно биометрию применяют вместе с другими аутентификаторами, такими, например, как интеллектуальные карты. Иногда биометрическая аутентификация является лишь первым рубежом защиты и служит для активизации интеллектуальных карт, хранящих криптографические секреты; в таком случае биометрический шаблон хранится на той же карте.
Активность в области биометрии очень велика. Организован соответствующий консорциум (см. http://www.biometrics.org/), активно ведутся работы по стандартизации разных аспектов технологии (формата обмена данными, прикладного программного интерфейса и т.п.), публикуется масса рекламных статей, в которых биометрия преподносится как средство обеспечения сверхбезопасности, ставшее доступным широким массам.[17]
На мой взгляд, к биометрии следует относиться весьма осторожно. Необходимо учитывать, что она подвержена тем же угрозам, что и другие методы аутентификации. Во-первых, биометрический шаблон сравнивается не с результатом первоначальной обработки характеристик пользователя, а с тем, что пришло к месту сравнения. А, как известно, за время пути... много чего может произойти. Во-вторых, биометрические методы не более надежны, чем база данных шаблонов. В-третьих, следует учитывать разницу между применением биометрии на контролируемой территории, под бдительным оком охраны, и в "полевых" условиях, когда, например к устройству сканирования роговицы могут поднести муляж и т.п. В-четвертых, биометрические данные человека меняются, так что база шаблонов нуждается в сопровождении, что создает определенные проблемы и для пользователей, и для администраторов.[18]
Но главная опасность состоит в том, что любая "пробоина" для биометрии оказывается фатальной. Пароли, при всей их ненадежности, в крайнем случае, можно сменить. Утерянную аутентификационную карту можно аннулировать и завести новую. Палец же, глаз или голос сменить нельзя. Если биометрические данные окажутся, скомпрометированы, придется, как минимум производить существенную модернизацию всей системы.
Проанализировав методы идентификации и аутентификации можно сделать вывод, что программно-аппаратные методы, слишком громоздкие. Аппаратные методы решили главную проблему программных методов, но при этом обзавелись большим количеством других, возможно, более легко решаемых проблем. Программные же методы себя почти исчерпали, их совершенствование проходит лишь с помощью комплексного подхода к обеспечению безопасности в целом, что, впрочем, не мешает оставаться самым распространенным методом обеспечения аутентификации и идентификации.
3. Алгоритм реализации метода защиты
3.1 Безопасная авторизация с передачей хешированного пароля
Задача - осуществить защиту в случае просмотра трафика, и просмотра исходника (могут узнать хеш пароля) злоумышленниками. Имея доступ ко всем данным, никто не должен авторизоваться на сервере, не зная исходный пароль. Варианты подмены IP адреса, получение пароля непосредственно в момент ввода (keylog), или брутфорс исключаем, это не забота сервиса идентификации и аутентификации.
Пароль по сети передаваться не будет, поэтому используется хеширование прямо в браузере, для этого используется небольшая библиотека Javascript SHA-1. Почему SHA-1, а не, допустим, MD5? Считается, что SHA-1 немного надежнее, да и сама Javascript библиотека меньше, чем аналогичная (на том же сайте) для MD5.[19]
Вместо самого пароля передается хеш hash2 = sha1_hmac(login, password), однако на сервере хранится не он, а его хеш с логином: sha1_hmac(hash2, login). Этим отсекаем возможность залогиниться, если кто-то украл захешированные данные с сервера, например, взяли из базы данных, или прочитали php файл, если хеш данные находятся в нем.
Для защиты от перехваченного трафика, с формой авторизации передается хеш, сформированный на основе random данных, IP адреса, и обратного хеша на основе логин-пароль: hash1 = sha1_hmac(password, login); key = sha1(hash1, random_key+remote_addr). Случайно сформированный ключ для хеширования хранится в сессии. Алгоритм идентификации и аутентификации представлен на Рис. 2.
Рис. 2. Алгоритм идентификации и аутентификации
На Рис. 3. UML-диаграмма деятельности:
Под цифрой 1. Представлен алгоритм перехода на защищенную страницу сайта.
Под цифрой 2. Представлен алгоритм функции проверки подлинности идентифицированного субъекта.
Под цифрой 3. Представлен алгоритм функции аутентификации.
Рис. 3. UML-диаграмма деятельности
3.2. Лингвистическая оценка эффективности разработанного метода идентификации и аутентификации.
В качестве метода идентификации и аутентификации мной был выбран программный метод, поскольку это самый распространенный, универсальный и дешевый метод.
Для того что бы оценить эффективность метода защиты идентифика- ции и аутентификации необходимо:
1. Оценить внешние угрозы АСОД.
2. Оценить внутренние угрозы АСОД.
3. Оценить степень противостояния внешним и внутренним угрозам АСОД.[20]
Оценим степень противостояния внешним и внутренним угрозам АСОД при использовании разработанного мной алгоритма идентификации и аутентификации. Результат представлен в Таблице 1.
Таблица 1 – Лингвистическая оценка эффективности разработанного алгоритма.
Внешние угрозы | Степень защиты | Внутренние угрозы | Степень защиты |
Считывание аутентификатора с канала связи | Не позволит пройти аутентификацию | Потеря данных с БД | Не позволит пройти аутентификацию |
Вход в уже открытую сессию | невозможен | Кейлокеры, трояны … | возможно |
Брут – методы | возможно | Человеческий фактор | возможно |
Считывание аутентификатора с клиентской части АСОД | Не позволит пройти аутентификацию | Потеря данных с клиентской машины | Не позволит пройти аутентификацию |
Оценивание в терминах нечеткой логики обосновано отсутствием экспертов для оценки, разработанного мной метода защиты идентификации и аутентификации.
Используя лингвистические переменные, можно строить свое размытое множество V, которое зависит от множества критериев эффективности, точки „удовлетворения”, ее определения и способа построения функции принадлежности. Таким образом, нечеткое множество V будем считать моделью выбора, то есть его функцию принадлежности используем как функцию полезности альтернатив. Относительно значений этой функции может осуществляться ранжирование альтернатив.
4. Сравнение эффективности разработанного метода идентификации и аутентификации с методом Kerberos.
4.1 Математическая модель оценки эффективности
В общем случае задачу многокритериального выбора можно сформулировать в следующем виде. Задано множество решений некоторой проблемы - и множество критериев для оценки полезности альтернатив. Каждой альтернативе лицо, принимающие решение (ЛПР) (или привлеченные к принятию решения эксперты) выставляют оценки по всему множеству критериев K. То есть это оценка j-ой альтернативы по i-му критерию. Оценки выставляются или в баллах (например, всем привычная 5ти бальная шкала оценок) напрямую, или вычисляются в соответствующих единицах или в рамках нечеткой логики. Результаты оценивания представляются в виде матрицы решений.
Далее формируется модель оценки системы, с помощью совокупности критериев системного анализа или (и) их конкатенации (критерий Лапласа, критерий minСКО, комбинированный и т.д.).
Затем, для каждого вектора оценок вычисляется, в зависимости от примененной модели многокритериального выбора, обобщённый, по всем , вектор полезности . При вычислении значений полезности могут приниматься во внимание веса критериев (например, вероятности возникновения).
Формульная запись используемых критериев системного анализа:
1. Критерий Лапласа:
2. Критерий «осторожного наблюдателя» (Вальда):
3. Критерий «максимакса»:
4. Критерий Гурвица:
К(ai) = α max Kij + (1− α) ∙ min Kij
0≤ α ≤1
Копт = max { α max Kij + (1 + α) ∙ min Kij}
α = 0.5
5. Критерий Севиджа:
6. Критерий минимума СКО:
4.2 Лингвистическая оценка эффективности Kerberos
Оценим степень противостояния внешним и внутренним угрозам АСОД при использовании Kerberos идентификации и аутентификации. Результат представлен в Таблице 2.
Таблица 2 – Таблица сравнения.
Внешние угрозы | Степень защиты Kerberos | Внутренние угрозы | Степень защиты Kerberos |
Считывание аутентификатора с канала связи | Не позволит пройти аутентификацию | Потеря данных с БД | Разработчики закладывают невозможность данной атаки |
Вход в уже открытую сессию | невозможен | Кейлокеры, трояны … | невозможно |
Брут – методы | невозможно | Человеческий фактор | Частично защищает |
Считывание аутентификатора с клиентской части АСОД | невозможно | Потеря данных с клиентской машины | Не защищает |
Воспользуемся многокритериальным выбором, по критериям: Байеса-Лапласа, Вальда, MaxiMaxa, Гурвица, Сэвиджа, min СКО, при помощи аппарата нечеткой логики. Используя ранее полученные лингвистические оценки, составим матрицу решений. Результат представлен в Таблице 3.
Таблица 3 – Матрица решений
Сложив полученные результаты (Таблица 4) по критериям Байеса-Лапласа(BL), Вальда(V), MaxiMaxa(MM), Гурвица(G) и вычтя результаты критериев Сэвиджа(S), min СКО(SKO) получим значения:
1. Разработанный алгоритм – 0,38 = (maxBL + maxV + maxMM + maxG – maxS - maxSKO)/0,38*100=19%, где maxX – максимально возможное значение критерия X.
2. Kerberos – 1,38 = (maxBL + maxV + maxMM + maxG – maxS - maxSKO)/0,38*100 = 69%%, где maxX – максимально возможное значение критерия X.
Таблица 4 - Результаты вычислений.
4.3 Анализ результатов сравнения
Результаты, полученные в ходе сравнения, отражают не совершенство разработанной мной системы защиты идентификации и аутентификации. Главными проблемами считаю возможность подбора аутентификатора с помощью brut-методов.
Защиту от brut-методов можно добавить на серверной стороне:
1. наложение технических ограничений (пароль должен быть не слишком коротким, он должен содержать буквы, цифры, знаки пунктуации и т.п.);
2. управление сроком действия паролей, их периодическая смена;
3. ограничение числа неудачных попыток входа в систему;
Внедрение защиты от человеческого фактора считаю не целесообразной, поскольку мой метод идентификации и аутентификации изначально разрабатывался для сложных технических условий. А внедрение какой либо защиты от пользователя может вызвать затруднения при работе с АСОД (например, долгое время отклика, или сложная установка клиентской части), или вернуть уязвимость через клиентскую машину (непосредственно получение аутентификатора с клиентской машины).
Вывод: анализ результатов сравнения эффективности показал, что разработанный алгоритм идентификации и аутентификации имеет низкое качество противодействия угрозам (19%). Основные проигранные позиции – Человеческий фактор, Кейлокеры, а так же Brut-методы атак на систему идентификации и аутентификации. Решение проблем Brut-методов представлено выше, защиту от кейлокеров можно обеспечить, исключив не целевое использование клиентских аппаратных частей системы АСОД, человеческий фактор можно частично исключить с помощью аппаратных средств (вместо прямого ввода аутентификатора, использовать физические носители с аутентификатором).
В ходе выполнения курсового проекта были решены все поставленные задачи и сделаны следующие выводы:
1. Проанализировав существующие методы идентификации и аутентификации был сделан вывод, что программно-аппаратные методы, слишком громоздкие, но самые перспективные и бурно развивающиеся. Аппаратные методы решили главную проблему программных методов, но при этом обзавелись большим количеством других, возможно, более легко решаемых проблем. Программные же методы себя почти исчерпали, их совершенствование проходит лишь с помощью комплексного подхода к обеспечению безопасности в целом, что, впрочем, не мешает оставаться самым распространенным методом обеспечения аутентификации и идентификации.
2. Реализовать защиту аутентификатора в случае перехвата трафика злоумышленником можно с помощью шифрования передаваемого, по открытому каналу связи, аутентификатора. Устранить потерю ключа шифрования при просмотре исходника злоумышленником можно с помощью вынесения функции формирующей ключ за пределы открытой для доступа части системы. Для осуществления защиты сервиса при потере данных из базы данных (БД) сервера необходимо хранить аутентификатор в хеш виде.
3. В ходе сравнения разработанной системы с моделью защиты идентификации и аутентификации Kerberos, были установлены слабые стороны разработанной системы, а также даны рекомендации, позволяющие повысить эффективность функционирования данной системы. Были сделаны выводы о качестве системы и возможном её улучшении, заключающие в системном подходе к обеспечению безопасности АСОД. А именно - установке дополнительного программного обеспечения с целью исключения проникновения на машины пользователей вредоносного программного обеспечения. Так же более детальной настройке сервера АСОД блокирующей доступ на некоторое время после нескольких неудачных попыток пройти аутентификацию.
4. Оценка эффективности разработанного метода защиты идентификации и аутентификации показала, что разработанный алгоритм имеет низкое качество противодействия угрозам (19%).
СПИСОК ЛИТЕРАТУРЫ
1. D. Hsiao, D. Kerr, S. Madnick "Computer Security" Academic Press, 1979.
3. Pavel V. Semjanov "On cryptosystems untrustworthiness"
7. Новые технологии, методы и средства добавочной защиты информации от несанкционированного доступа. Сборник статей Щеглов А.Ю., Щеглов К.А.
8. Michael J.Wenstrom “Managing Cisco Network Security” – Cisco Press, 2001
10. Руководящий документ. Средства вычислительной техники. Защита от несанкционированного доступа к информации. Показатели защищенности от несанкционированного доступа к информации.
12. А.А. Гладких, В.Е. Дементьев “Базовые принципы информационной безопасности вычислительных сетей: учебное пособие для студентов”, 2009.
13. http://www.securit.ru/products
14. Ворона В.А., Тихонов В.А. “Системы контроля и управления доступом”
16. В.П. Мельников, С.А. Клейменов, А.М. Петраков “Информационная безопасность и защита информации”, 2007
17. Малюк А.А. “Информационная безопасность: концептуальные и методологические основы защиты информации”, 2004
18. Ярочкин В.И. “Информационная безопасность”.
19. http://pajhome.org.uk/crypt/md
20. Галатенко В.А. “ Основы информационной безопасности”.
ПРИЛОЖЕНИЕ
PHP-код алгоритма идентификации и аутентификации.
<?php
$login = 'test';
//echo hash_hmac('sha1', 'pass', $login).'<br>';
$pass1 = '
//echo hash_hmac('sha1', hash_hmac('sha1', $login, 'pass'), $login).'<br>';
$pass2 = '
function key_session($regenerate = false) {
if (isset($_SESSION['key']) and ! $regenerate) {
$key = $_SESSION['key'];
} else {
$key = hash_hmac('sha1', microtime(), mt_rand());
$_SESSION['key'] = $key;
}
return $key;
}
function auth() {
global $login, $pass1, $pass2;
$key = key_session();
$remote_addr = $_SERVER['REMOTE_ADDR'];
$hash = hash_hmac('sha1', $key.$remote_addr, $pass1);
if (($_POST['key'] === $hash) and (hash_hmac('sha1', $_POST['password'], $login) === $pass2)) {
//unset($_SESSION['key']);
key_session(true);
$_SESSION['remote_addr'] = $remote_addr;
header('Location: auth.php?mode=login');
} else {
$key = key_session(true);
echo <<<EOF
<script type="text/javascript" src="sha1.js"></script>
<script type="text/javascript" src="jquery-1.4.2.min.js"></
<form name="auth" action="auth.php" method="post">
<input type="hidden" name="remote_addr" value="$remote_addr">
<input type="hidden" name="key" value="$key">
<input type="hidden" name="login" value="$login">
$login:
<input type="password" name="password" value="">
<input type="submit">
</form>
<script>
var key = $('input[name=key]').val();
var remote_addr = $('input[name=remote_addr]').
$('form[name=auth]').submit(
var login = $('input[name=login]').val();
var password = $('input[name=password]').val(
var key_hash = hex_hmac_sha1(hex_hmac_sha1(
$('input[name=key]').val(key_
var pass_hash = hex_hmac_sha1(password, login);
$('input[name=password]').val(
});
$('input[name=password]').
</script>
EOF;
}
}
session_start();
if (isset($_SESSION['remote_addr'
if ($_GET['mode'] === 'logout') {
unset($_SESSION['remote_addr']
auth();
} else {
print_r($_SESSION);
echo '<a href="?mode=logout">Exit</a>';
}
} else {
auth();
}
Java-код алгоритма шифрования пароля.
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
function hex_sha1(s){return binb2hex(core_sha1(str2binb(s)
function b64_sha1(s){return binb2b64(core_sha1(str2binb(s)
function str_sha1(s){return binb2str(core_sha1(str2binb(s)
function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));}
function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));}
function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));}
function sha1_vm_test()
{
return hex_sha1("abc") == "
}
function core_sha1(x, len)
{
x[len >> 5] |= 0x80 << (24 - len % 32);
x[((len + 64 >> 9) << 4) + 15] = len;
var w = Array(80);
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
var e = -1009589776;
for(var i = 0; i < x.length; i += 16)
{
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
var olde = e;
for(var j = 0; j < 80; j++)
{
if(j < 16) w[j] = x[i + j];
else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)),
safe_add(safe_add(e, w[j]), sha1_kt(j)));
e = d;
d = c;
c = rol(b, 30);
b = a;
a = t;
}
a = safe_add(a, olda);
b = safe_add(b, oldb);
c = safe_add(c, oldc);
d = safe_add(d, oldd);
e = safe_add(e, olde);
}
return Array(a, b, c, d, e);
}
function sha1_ft(t, b, c, d)
{
if(t < 20) return (b & c) | ((~b) & d);
if(t < 40) return b ^ c ^ d;
if(t < 60) return (b & c) | (b & d) | (c & d);
return b ^ c ^ d;
}
function sha1_kt(t)
{
return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :
(t < 60) ? -1894007588 : -899497514;
}
function core_hmac_sha1(key, data)
{
var bkey = str2binb(key);
if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz);
var ipad = Array(16), opad = Array(16);
for(var i = 0; i < 16; i++)
{
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5C5C5C5C;
}
var hash = core_sha1(ipad.concat(
return core_sha1(opad.concat(hash), 512 + 160);
}
function safe_add(x, y)
{
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
function rol(num, cnt)
{
return (num << cnt) | (num >>> (32 - cnt));
}
function str2binb(str)
{
var bin = Array();
var mask = (1 << chrsz) - 1;
for(var i = 0; i < str.length * chrsz; i += chrsz)
bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32);
return bin;
}
function binb2str(bin)
{
var str = "";
var mask = (1 << chrsz) - 1;
for(var i = 0; i < bin.length * 32; i += chrsz)
str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask);
return str;
}
function binb2hex(binarray)
{
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var str = "";
for(var i = 0; i < binarray.length * 4; i++)
{
str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
}
return str;
}
function binb2b64(binarray)
{
var tab = "
var str = "";
for(var i = 0; i < binarray.length * 4; i += 3)
{
var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16)
| (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 )
| ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);
for(var j = 0; j < 4; j++)
{
if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
}
}
return str;
}
Скриншоты
Форма ввода аутентификатора
Ввод аутентификатора
Отправка аутентификатора на сервер
Успешное прохождение аутентификации
Окончание сеанса работы
18