- •Введение
- •1. Информация как предмет защиты
- •2. Информационная безопасность
- •3. Основные угрозы информационной безопасности
- •Классификация угроз безопасности данных
- •4. Модель потенциального нарушителя
- •Типы нарушителей информационной безопасности ис
- •5. Классификация компьютерных преступлений
- •6. Личностные особенности компьютерного преступника
- •7. Принципы организации систем обеспечения безопасности данных (собд) ивс
- •8. Стандарты информационной безопасности
- •8.1. Критерии оценки безопасности компьютерных систем. «Оранжевая книга» сша
- •Основные элементы политики безопасности
- •Произвольное управление доступом
- •Безопасность повторного использования объектов
- •Метки безопасности
- •Принудительное управление доступом
- •Классы безопасности
- •Требования к политике безопасности
- •Произвольное управление доступом:
- •Повторное использование объектов:
- •Метки безопасности:
- •Целостность меток безопасности:
- •Принудительное управление доступом:
- •Требования к подотчетности Идентификация и аутентификация:
- •Предоставление надежного пути:
- •Требования к гарантированности Архитектура системы:
- •Верификация спецификаций архитектуры:
- •Конфигурационное управление:
- •Тестовая документация:
- •Описание архитектуры:
- •8.2. Европейские критерии безопасности информационных технологий
- •8.3. Руководящие документы Гостехкомиссии России
- •8.4. Общие критерии безопасности информационных технологий
- •9. Методы и средства защиты данных
- •9.1. Основные методы защиты данных
- •9.2. Классификация средств защиты данных
- •9.3. Формальные средства защиты
- •9.4. Физические средства защиты
- •9.5. Аппаратные средства защиты
- •9.5.1. Отказоустойчивые дисковые массивы
- •9.5.2. Источники бесперебойного питания
- •9.6.Криптографические методы и средства защиты данных
- •Классификация криптографических методов преобразования информации
- •9.7. Методы шифрования
- •9.7.1. Методы замены
- •9.7.2. Методы перестановки
- •9.7.3. Методы аналитических преобразований
- •9.7.4. Комбинированные методы
- •9.7.5. Стандарт сша на шифрование данных (des)
- •9.7.6. Отечественный стандарт на шифрование данных
- •9.8. Системы шифрации с открытым ключом
- •9.8.1. Алгоритм rsa
- •9.8.2. Криптосистема Эль-Гамаля
- •9.8.3. Криптосистемы на основе эллиптических уравнений
- •9.9. Электронная цифровая подпись
- •9.10. Методы кодирования
- •9.11. Другие методы шифрования
- •10. Стеганография
- •11. Защита программ от несанкционированного копирования
- •11.1. Методы, затрудняющие считывание скопированной информации
- •11.2. Методы, препятствующие использованию скопированной информации
- •11.3. Основные функции средств защиты от копирования
- •11.4. Основные методы защиты от копирования
- •11.4.1. Криптографические методы
- •11.4.2. Метод привязки к идентификатору
- •11.4.3. Методы, основанные на работе с переходами и стеком
- •11.4.4. Манипуляции с кодом программы
- •11.5. Методы противодействия динамическим способам снятия защиты программ от копирования
- •12. Защита информации от несанкционированного доступа
- •12.1. Аутентификация пользователей на основе паролей и модели «рукопожатия»
- •12.2. Аутентификация пользователей по их биометрическим характеристикам, клавиатурному почерку и росписи мыши
- •12.3. Программно-аппаратная защита информации от локального несанкционированного доступа
- •12.4. Аутентификация пользователей при удаленном доступе
- •13. Защита информации в компьютерных сетях
- •Пакетные фильтры
- •Сервера прикладного уровня
- •Сервера уровня соединения
- •Сравнительные характеристики пакетных фильтров и серверов прикладного уровня
- •Схемы подключения
- •Администрирование
- •Системы сбора статистики и предупреждения об атаке
- •Заключение
- •Библиографический список
- •394026 Воронеж, Московский просп., 14
12.1. Аутентификация пользователей на основе паролей и модели «рукопожатия»
При выборе паролей пользователи КС должны руководствоваться двумя, по сути взаимоисключающими, правилами – пароли должны трудно подбираться и легко запоминаться (поскольку пароль ни при каких условиях не должен нигде записываться, так как в этом случае необходимо будет дополнительно решать задачу защиты носителя пароля).
Сложность подбора пароля определяется, в первую очередь, мощностью множества символов, используемого при выборе пароля (N), и минимально возможной длиной пароля (k). В этом случае число различных паролей может быть оценено снизу как Ср = Nk. Например, если множество символов пароля образуют строчные латинские буквы, а минимальная длина пароля равна 3, то Ср = 263 = 17576 (что совсем немного для программного подбора). Если же множество символов пароля состоит из строчных и прописных латинских букв, а также из цифр и минимальная длина пароля равна 6, то Ср= 626 = 56 800 235 584.
Сложность выбираемых пользователями КС паролей должна устанавливаться администратором при реализации установленной для данной системы политики безопасности. Другими параметрами политики учетных записей при использовании парольной аутентификации должны быть:
максимальный срок действия пароля (любой секрет не может сохраняться в тайне вечно);
несовпадение пароля с логическим именем пользователя, под которым он зарегистрирован в КС;
неповторяемость паролей одного пользователя.
Обеспечить приемлемую степень сложности паролей и их реальную уникальность можно путем назначения паролей всем пользователям администратором КС с одновременным запретом на изменение пароля самим пользователем. Для генерации паролей администратор при этом может использовать программный генератор, позволяющий создавать пароли различной. Однако при таком способе назначения паролей возникают проблемы, связанные с необходимостью создания защищенного канала для передачи пароля от администратора к пользователю, трудностью проверки сохранения пользователем не им выбранного пароля только в своей памяти и потенциальной возможностью администратора, знающего пароли всех пользователей, злоупотребления своими полномочиями. Поэтому наиболее целесообразным является выбор пароля пользователем, на основе установленных администратором правил с возможностью задания администратором нового пароля пользователю в случае, если тот забыл свой пароль.
Еще одним аспектом политики учетных записей пользователей КС должно стать определение противодействия системы попыткам подбора паролей.
Могут применяться следующие правила:
ограничение числа попыток входа в систему;
скрытие логического имени последнего работавшего пользователя (знание логического имени может помочь нарушители подобрать или угадать его пароль);
учет всех попыток (успешных и неудачных) входа в систему журнале аудита.
Реакцией системы на неудачную попытку входа пользователя могут быть:
блокировка учетной записи, под которой осуществляется попытка входа, при превышении максимально возможного числа попыток (на заданное время или до ручного снятия блокировка администратором);
нарастающее увеличение временной задержки перед предоставлением пользователю следующей попытки входа.
Постоянная блокировка учетной записи при обнаружении попытки подбора пароля (до снятия блокировки администратором) менее целесообразна, поскольку она позволит нарушителю намеренно заблокировать работу в КС легального пользователя (реализовать угрозу нарушения доступности информации).
При любой реакции системы на попытку подбора пароля необходимо в настройках параметров политики учетных записей обеспечить сброс значения счетчика попыток входа в систему под конкретной учетной записью через заданный промежуток времени, иначе значения счетчика будут суммироваться для разных сеансов работы пользователя.
При первоначальном вводе или смене пароля пользователе обычно применяются два классических правила:
символы вводимого пароля не отображаются на экране (это же правило, применяется и для ввода пользователем пароля при его входе в систему);
для подтверждения правильности ввода пароля (с учетом первого правила) этот ввод повторяется дважды.
Очевидно, что в базе данных учетных записей пользователей КС пароли не могут храниться в открытом виде (иначе к ним может получить доступ как минимум администратор системы). Для хранения паролей возможно их предварительное шифрование или хеширование.
Шифрование паролей имеет два недостатка:
поскольку при шифровании необходимо использовать ключ, требуется обеспечить его защищенное хранение в КС (знание ключа шифрования пароля позволит выполнить его расшифрование и осуществить несанкционированный доступ к информации);
существует опасность расшифрования любого пароля и получения его в открытом виде.
Хеширование является необратимым преобразованием и знание хеш-значения пароля не даст нарушителю возможности его получения в открытом виде (он сможет только пытаться подобрать пароль при известной функции хеширования). Поэтому гораздо более безопасным является хранение паролей в хешированием виде. Недостатком является то, что не существует даже теоретической возможности восстановить забытый пользователем пароль.
Несмотря на то, что с помощью применения перечисленных выше правил парольную аутентификацию можно сделать более безопасной, она все-таки остается весьма уязвимой. Для ее усиления могут использоваться так называемые одноразовые пароли. Пусть пользователь КС получает список паролей Р1, Р2, ..., Рi ..., Рn, каждый из паролей действует только на один сеанс входа (Р1 – на первый, Р2 – на второй и т.д.). В этом случае знание уже использовавшегося пользователем пароля ничего не даст нарушителю, а при каждом входе легального пользователя возможна проверка на использование данного пароля кем-либо еще.
Недостатки схемы одноразовых паролей:
организация защищенного хранения длинного списка паролей (либо его запоминание, что маловероятно);
неясность с номером следующего пароля, если после ввода предыдущего пароля из списка вход пользователя в систему не был осуществлен из-за сбоя в работе КС.
Эти недостатки могут быть устранены, если список паролей генерировать на основе некоторой необратимой функции, например, функции хеширования. Пусть Р – начальный пароль пользователя, а F – необратимая функция. Обозначим: Fi(P) = F(F(...F(P)...)) (функция F применяется последовательно i раз). Тогда список одноразовых паролей создается следующим образом: Р1 = Fn(P), P2 = Fn-1(P), ..., Рn-1 = F(F(P)), Pn = F(P).
При сбое в процессе входа пользователя в КС всегда осуществится выбор следующего пароля из списка, а система последовательно применяет функцию F к введенному пользователем паролю, вплоть до совпадения с последним принятым от него паролем (и тогда пользователь допускается к работе в системе) или до превышения длины списка паролей (в этом случае попытка входа пользователя в КС отвергается).
Но в любом варианте парольной аутентификации подтверждение подлинности пользователя осуществляется на основе ввода им некоторой конфиденциальной информации, которую можно подсмотреть, выманить, подобрать, угадать и т.п. Рассмотрим аутентификацию пользователей на основе модели «рукопожатия», во многом свободную от указанных недостатков.
В описании используются следующие обозначения для элементов, характеризующих пользователя:
IDi – неизменный идентификатор i-го пользователя, который является аналогом имени и используется для идентификации пользователя;
Ki - аутентифицирующая информация пользователя, которая может изменяться и служит для аутентификации (например, пароль Pi=Ki).
Рассмотрим две типовые схемы идентификации и аутентификации.
В первой схеме (табл. 20) Ei=F(IDi, Ki), где «невосстановимость» Ki оценивается некоторой пороговой трудоемкостью T0 решения задачи восстановления Ki по Ei и IDi. Кроме того для пары Ki и Kj возможно совпадение соответствующих значений E. В связи с этим вероятность ложной аутентификации пользователей не должна быть больше некоторого порогового значения P0. На практике задают T0=1020...1030, P0=10-7...10-9.
Таблица 20
Номер пользователя |
Информация для идентификации |
Информация для аутентификации |
1 |
ID1 |
E1 |
2 |
ID2 |
E2 |
... |
... |
... |
n |
IDn |
En |
Протокол идентификации и аутентификации (для первой схемы):
Пользователь предъявляет свой идентификатор ID.
Если существует i=1...n, для которого ID=IDi, то пользователь, назвавшийся пользователем i, идентификацию прошел успешно. Иначе пользователь не допускается к работе.
Модуль аутентификации запрашивает у пользователя его аутентификатор Ki.
Вычисляется значение E=F(IDi, Ki).
Если E=Ei, то аутентификация прошла успешно. Иначе пользователь не допускается к работе.
Во второй схеме (табл. 21) Ei=F(Si, Ki), где S – случайный вектор, задаваемый при создании идентификатора пользователя; F – функция, которая обладает свойством «невосстановимости» значения Ki по Ei и Si.
Таблица 21
Номер пользователя |
Информация для идентификации |
Информация для аутентификации |
1 |
ID1, S1 |
E1 |
2 |
ID2, S1 |
E2 |
... |
... |
... |
n |
IDn, S1 |
En |
Протокол идентификации и аутентификации (для схемы 2):
Пользователь предъявляет свой идентификатор ID.
Если существует i=1...n, для которого ID=IDi, то пользователь, назвавшийся пользователем i, идентификацию прошел успешно. Иначе пользователь не допускается к работе.
По идентификатору IDi выделяется вектор Si.
Модуль аутентификации запрашивает у пользователя его аутентификатор Ki.
Вычисляется значение E=F(Si, Ki).
Если E=Ei, то аутентификация прошла успешно. Иначе пользователь не допускается к работе.
Вторая схема аутентификации применяется в OC UNIX. В качестве идентификатора используется имя пользователя (запрошенное по Login), в качестве аутентификатора - пароль пользователя (запрошенный по Password), функция F представляет собой алгоритм шифрования DES.
Следует отметить, что необходимым требованием устойчивости схем идентификации и аутентификации к восстановлению информации Ki является случайный равновероятный выбор Ki из множества возможных значений.
Преимущества аутентификации на основе модели «рукопожатия» перед парольной аутентификацией:
между пользователем и системой не передается никакой конфиденциальной информации, которую нужно сохранять в тайне;
каждый следующий сеанс входа пользователя в систему отличен от предыдущего, поэтому даже длительное наблюдение этими сеансами ничего не даст нарушителю.
К недостаткам аутентификации на основе модели «рукопожатия» относится большая длительность этой процедуры по сравнению с парольной аутентификацией.
Парольная аутентификация совершенно неприменима в случае взаимного подтверждения подлинности пользователей компьютерной сети. Однако, модель «рукопожатия» вполне приемлема для взаимной аутентификации.
В качестве примера рассмотрим процедуру «рукопожатия» для двух пользователей A и B. Пусть применяется симметричная криптосистема. Пользователи A и B разделяют один и тот же секретный ключ KAB.
Пользователь A инициирует «рукопожатие», отправляя пользователю B свой идентификатор IDA в открытой форме.
Пользователь B, получив идентификатор IDA, находит в базе данных секретный ключ KAB и вводит его в свою криптосистему.
Тем временем пользователь A генерирует случайную последовательность S с помощью псевдослучайного генератора PG и отправляет ее пользователю B в виде криптограммы EKAB(S).
Пользователь B расшифровывает эту криптограмму и раскрывает исходный вид последовательности S.
Затем оба пользователя преобразуют последовательность S, используя одностороннюю функцию f.
Пользователь B шифрует сообщение f(S) и отправляет криптограмму EKAB(f(S)) пользователю A.
Наконец, пользователь A расшифровывает эту криптограмму и сравнивает полученное сообщение f'(S) с исходным f(S). Если эти сообщения равны, то пользователь A признает подлинность пользователя B.
Пользователь A проверяет подлинность пользователя B таким же способом. Обе эти процедуры образуют процедуру «рукопожатия», которая обычно выполняется в самом начале любого сеанса связи между любыми двумя сторонами в компьютерных сетях.
Иногда пользователи хотят иметь непрерывную проверку подлинности отправителей в течение всего сеанса связи. Рассмотрим один из простейших способов непрерывной проверки подлинности.
Чтобы отправить сообщение M, пользователь A передает криптограмму EK(IDA, M). Получатель расшифровывает ее и раскрывает пару (IDA, M). Если принятый идентификатор IDA совпадает с хранимым, получатель принимает во внимание это сообщение.
Для повышения безопасности протокола взаимной аутентификации лучше вместо открытой формы пароля P пересылать его отображение, получаемое с использованием односторонней функции f(P). Это преобразование должно гарантировать невозможность раскрытия пароля по его отображению, так как противник наталкивается на неразрешимую числовую задачу.
Например, функция f может быть определена следующим образом:
f(P)=EP(ID),
где P – пароль,
ID – идентификатор,
EP – процедура шифрования, выполняемая с использованием пароля в качестве ключа.
На практике пароль состоит из нескольких букв, чтобы дать возможность пользователю запомнить его. Короткий пароль уязвим к атаке полного перебора. Для того, чтобы предотвратить такую атаку, функцию f определяют иначе:
f(P)=EP+K(ID),
где K – ключ (таблетка Toch-memory, USB-ключ и т.п.)
При интерактивном доступе пользователя к системе функция f может быть задана таблицей своих значений. Рассмотрим два примера. В первом примере система предлагает пользователю ответить при регистрации его в КС на несколько вопросов, имеющих частично объективное и частично вымышленное содержание (например: «девичья фамилия Вашей матери», «в каком городе Вы проживали в июне 2002 г.», «где находится клуб», «когда откроется пул» и т. п.). При входе в систему пользователю предлагается ответить на другой список вопросов, среди которых есть некоторые из заданных ему при регистрации. Для правильной аутентификации пользователь должен дать те же ответы, которые он давал на аналогичные вопросы при регистрации.
Второй пример – аутентификация на основе модели «рукопожатия». При регистрации в КС пользователю предлагается набор небольших изображений (например, пиктограмм), среди которых он должен выбрать заданное число картинок. При последующем входе в систему ему выводится другой набор изображений, часть из которых он видел при регистрации. Для правильной аутентификации пользователь должен отметить те картинки, которые он выбрал при регистрации.