Защиты от несанкционированного доступаСуществует притча о самом надежном способе хранения информации: Информация должна быть в одном экземпляре на компьютере, который находится в бронированном сейфе, отключенный от всех сетей и обесточенный. Понятно, что работать с такой информацией, мягко говоря, неудобно. В то же время хочется защитить программы и данные от несанкционированного доступа (НСД). А чтобы доступ был санкционированным, нужно определиться, кому что можно, а что нельзя. Для этого нужно: - разбить на классы информацию, хранящуюся и обрабатывающуюся в компьютере;
- разбить на классы пользователей этой информации;
- поставить полученные классы информации и пользователей в определенное соответствие друг другу.
Доступ пользователей к различным классам информации должен осуществляться согласно системе паролей, в качестве которой могут выступать: - обычные пароли;
- настоящие замки и ключи;
- специальные тесты идентификации пользователей;
- специальные алгоритмы идентификации ПЭВМ, дискеты, программного обеспечения.
Системы защиты информации от НСД обеспечивают выполнение следующих функций: - идентификация, т.е. присвоение уникальных признаков - идентификаторов, по которым в дальнейшем система производит аутентификацию;
- аутентификация, т.е. установление подлинности на основе сравнения с эталонными идентификаторами;
- разграничение доступа пользователей к ПЭВМ;
- разграничение доступа пользователей по операциям над ресурсами (программы, данные и т.д.);
- администрирование:
- определение прав доступа к защищаемым ресурсам,
- обработка регистрационных журналов,
- установка системы защиты на ПЭВМ,
- снятие системы защиты с ПЭВМ;
- регистрация событий:
- входа пользователя в систему,
- выхода пользователя из системы,
- нарушения прав доступа;
- реакция на попытки НСД;
- контроль целостности и работоспособности систем защиты;
- обеспечение информационной безопасности при проведении ремонтно-профилактических работ;
- обеспечение информационной безопасности в аварийных ситуациях.
Права пользователей по доступу к программам и данным описывают таблицы, на основе которых и производится контроль и разграничение доступа к ресурсам. Доступ должен контролироваться программными средствами защиты. Если запрашиваемый доступ не соответствует имеющемуся в таблице прав доступа, то системы защиты регистрирует факт НСД и инициализирует соответствующую реакцию. Прежде чем получить доступ к ресурсам, пользователь должен пройти процесс представления компьютерной системе, который включает две стадии: - идентификацию - пользователь сообщает системе по ее запросу свое имя (идентификатор);
- аутентификацию - пользователь подтверждает идентификацию, вводя в систему уникальную, не известную другим пользователям информацию о себе (например, пароль).
Для проведения процедур идентификации и аутентификации пользователя необходимо наличие: - программы аутентификации;
- уникальной информации о пользователе.
Различают две формы хранения информации о пользователе: внешняя (например, пластиковая карта или голова пользователя) и внутренняя (например, запись в базе данных). Естественно, что информация, хранящаяся в голове, и информация в базе данных должны быть семантически тождественны. Беда с жадным братом Али-Бабы Касимом приключилась именно из-за несовпадения внешней и внутренней форм: сим-сим не тождественен гороху, рису и т.д. Рассмотрим структуры данных и протоколы идентификации и аутентификации пользователя. Практически любому ключевому носителю информации, используемому для опознания, соответствует следующая структура данных о пользователе: - IDi - неизменный идентификатор i-го пользователя, который является аналогом имени и используется для идентификации пользователя;
- Ki - аутентифицирующая информация пользователя, которая может изменяться и служит для аутентификации (например, пароль Pi = Ki).
Так для носителей типа пластиковых карт выделяется неизменяемая информация IDi и объект в файловой структуре карты, содержащий Ki. Совокупную информацию в ключевом носителе можно назвать первичной аутентифицирующей информацией i-го пользователя. Очевидно, что внутренний аутентифицирующий объект не должен существовать в системе длительное время (больше времени работы конкретного пользователя). Например, Вы ввели пароль, который программа аутентификации занесла в переменную для сравнения с хранящимися в базе данных. Эта переменная должна быть обнулена не позже, чем Вы закончите свой сеанс. Для длительного хранения следует использовать данные в защищенной форме. Рассмотрим две типовые схемы идентификации и аутентификации. Схема 1. В компьютерной системе хранится: Номер пользователя | Информация для идентификации | Информация для аутентификации | 1 | ID1 | E1 | 2 | ID2 | E2 | ... | ... | ... | n | IDn | En |
Здесь Ei = F(IDi, Ki), где "невосстановимость" Ki оценивается некоторой пороговой трудоемкостью T0 решения задачи восстановления Ki по Ei и IDi. Кроме того для пары Ki и Kj возможно совпадение соответствующих значений E. В связи с этим вероятность ложной аутентификации пользователей не должна быть больше некоторого порогового значения P0. На практике задают T0 = 1020...1030, P0 = 10-7...10-9. Протокол идентификации и аутентификации (для схемы 1). - Пользователь предъявляет свой идентификатор ID.
- Если существует i = 1...n, для которого ID = IDi, то пользователь идентификацию прошел успешно. Иначе пользователь не допускается к работе.
- Модуль аутентификации запрашивает у пользователя его аутентификатор K.
- Вычисляется значение E = F(ID, K).
- Если E = Ei, то аутентификация прошла успешно. Иначе пользователь не допускается к работе.
Схема 2 (модифицированная). В компьютерной системе хранится: Номер пользователя | Информация для идентификации | Информация для аутентификации | 1 | ID1, S1 | E1 | 2 | ID2, S2 | E2 | ... | ... | ... | n | IDn, Sn | En |
Здесь Ei = F(Si, Ki), где S - случайный вектор, задаваемый при создании идентификатора пользователя; F - функция, которая обладает свойством "невосстановимости" значения Ki по Ei и Si. Протокол идентификации и аутентификации (для схемы 2). - Пользователь предъявляет свой идентификатор ID.
- Если существует i = 1...n, для которого ID = IDi, то пользователь идентификацию прошел успешно. Иначе пользователь не допускается к работе.
- По идентификатору ID выделяется вектор S.
- Модуль аутентификации запрашивает у пользователя его аутентификатор K.
- Вычисляется значение E = F(S, K).
- Если E = Ei, то аутентификация прошла успешно. Иначе пользователь не допускается к работе.
Вторая схема аутентификации применяется в OC UNIX. В качестве идентификатора используется имя пользователя (запрошенное по Login), в качестве аутентификатора - пароль пользователя (запрошенный по Password). Функция F представляет собой алгоритм шифрования DES. Эталоны для идентификации и аутентификации содержатся в файле Etc/passwd. Следует отметить, что необходимым требованием устойчивости схем идентификации и аутентификации к восстановлению информации Ki является случайный равновероятный выбор Ki из множества возможных значений. Простейший метод применения пароля основан на сравнении представленного пароля с исходным значением, хранящимся в памяти. Если значения совпадают, то пароль считается подлинным, а пользователь - законным. Перед пересылкой по незащищенному каналу пароль должен шифроваться. Если злоумышленник каким-либо способом все же узнает пароль и идентификационный номер законного пользователя, он получит доступ в систему. Лучше вместо открытой формы пароля P пересылать его отображение, получаемое с использованием односторонней функции f(P). Это преобразование должно гарантировать невозможность раскрытия пароля по его отображению. Так противник наталкивается на неразрешимую числовую задачу. Например, функция f может быть определена следующим образом: f(P) = EP(ID) , где P - пароль, ID - идентификатор, EP - процедура шифрования, выполняемая с использованием пароля в качестве ключа.На практике пароль состоит из нескольких букв. Но короткий пароль уязвим к атаке полного перебора. Для того, чтобы предотвратить такую атаку, функцию f определяют иначе: f(P) = EP + K(ID) , где K - ключ (таблетка Toch-memory, USB-ключ и т.п.)Процедуры идентификации и аутентификации пользователя могут базироваться не только на секретной информации, которой обладает пользователь (пароль, секретный ключ, персональный идентификатор и т.п.). В последнее время все большее распространение получает биометрическая идентификация и аутентификация, позволяющая уверенно идентифицировать потенциального пользователя путем измерения физиологических параметров и характеристик человека, особенностей его поведения. Основные достоинства биометрических методов идентификации и аутентификации: - высокая степень достоверности идентификации по биометрических признакам из-за их уникальности;
- неотделимость биометрических признаков от дееспособной личности;
- трудность фальсификации биометрических признаков.
В качестве биометрических признаков, которые могут быть использованы для идентификации потенциального пользователя, используются: - узор радужной оболочки и сетчатки глаз;
- отпечатки пальцев;
- геометрическая форма руки;
- форма и размеры лица;
- термограмма лица;
- форма ушей;
- особенности голоса;
- ДНК;
- биомеханические характеристики рукописной подписи;
- биомеханические характеристики "клавиатурного почерка".
При регистрации пользователь должен продемонстрировать один или несколько раз свои характерные биометрические признаки. Эти признаки (известные как подлинные) регистрируются системой как контрольный "образ" законного пользователя. Этот образ пользователя хранится в электронной форме и используется для проверки идентичности каждого, кто выдает себя за соответствующего законного пользователя. Системы идентификации по узору радужной оболочки и сетчатки глаз могут быть разделены на два класса: - использующие рисунок радужной оболочки глаза;
- использующие рисунок кровеносных сосудов сетчатки глаза.
Поскольку вероятность повторения данных параметров равна 10-78, эти системы являются наиболее надежными среди всех биометрических систем. Такие средства применяются, например, в США в зонах военных и оборонных объектов. Системы идентификации по отпечаткам пальцев являются самыми распространенными. Одна из основных причин широкого распространения таких систем заключается в наличии больших банков данных по отпечаткам пальцев. Основными пользователями таких систем во всем мире являются полиция, различные государственные организации и некоторые банки. Системы идентификации по геометрической форме руки используют сканеры формы руки, обычно устанавливаемые на стенах. Следует отметить, что подавляющее большинство пользователей предпочитают системы именно этого типа. Системы идентификации по лицу и голосу являются наиболее доступными из-за их дешевизны, поскольку большинство современных компьютеров имеют видео- и аудиосредства. Системы данного класса широко применяются при удаленной идентификации в телекоммуникационных сетях. Системы идентификации по динамике рукописной подписи учитывают интенсивность каждого усилия подписывающегося, частотные характеристики написания каждого элемента подписи и начертания подписи в целом. Системы идентификации по биомеханическим характеристикам "клавиатурного почерка" основываются на том, что моменты нажатия и отпускания клавиш при наборе текста на клавиатуре существенно различаются у разных пользователей. Этот динамический ритм набора ("клавиатурный почерк") позволяет построить достаточно надежные средства идентификации. Следует отметить, что применение биометрических параметров при идентификации субъектов доступа автоматизированных систем пока не получило надлежащего нормативно-правового обеспечения, в частности в виде стандартов. Поэтому применение систем биометрической идентификации допускается только в системах, обрабатывающих и хранящих персональные данные, составляющие коммерческую и служебную тайну. Взаимная проверка подлинности пользователейОбычно стороны, вступающие в информационный обмен, нуждаются во взаимной аутентификации. Этот процесс выполняется в начале сеанса связи. Для проверки подлинности применяют следующие способы: - механизм запроса-ответа;
- механизм отметки времени ("временной штемпель").
Механизм запроса-ответа. Если пользователь A хочет быть уверен, что сообщения, получаемые им от пользователя B, не являются ложными, он включает в посылаемое для B сообщение непредсказуемый элемент - запрос X (например, некоторое случайное число). При ответе пользователь B должен выполнить над этим числом некоторую заранее оговоренную операцию (например, вычислить некоторую функцию f(X)). Это невозможно осуществить заранее, так как пользователю B неизвестно, какое случайное число X придет в запросе. Получив ответ с результатом действий B, пользователь A может быть уверен, что B - подлинный. Недостаток этого метода - возможность установления закономерности между запросом и ответом. Механизм отметки времени подразумевает регистрацию времени для каждого сообщения. В этом случае каждый пользователь сети может определить насколько "устарело" пришедшее сообщение и не принимать его, поскольку оно может быть ложным. В обоих случаях для защиты механизма контроля следует применять шифрование, чтобы быть уверенным, что ответ послан не злоумышленником. При использовании отметок времени возникает проблема допустимого временного интервала задержки для подтверждения подлинности сеанса. Ведь сообщение с "временным штемпелем" в принципе не может быть передано мгновенно. Кроме того, компьютерные часы получателя и отправителя не могут быть абсолютно синхронизированы. Для взаимной проверки подлинности обычно используют процедуру "рукопожатия", которая базируется на указанных выше механизмах и заключается во взаимной проверке ключей, используемых сторонами. Иначе говоря, стороны признают друг друга законными партнерами, если докажут друг другу, что обладают правильными ключами. Процедуру "рукопожатия" применяют в компьютерных сетях при организации связи между пользователями, пользователем и хост-компьютером, между хост-компьютерами и т.д. В качестве примера рассмотрим процедуру "рукопожатия" для двух пользователей 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 совпадает с хранимым, получатель принимает во внимание это сообщение. Вместо идентификаторов можно использовать секретные пароли, которые подготовлены заранее и известны обеим сторонам. Продолжение: Протоколы идентификации с нулевой передачей знаний
Литература - Романец Ю.В., Тимофеев П.А., Шаньгин В.Ф. Защита информации в компьютерных системах и сетях. Под ред. В.Ф. Шаньгина. - 2-е изд., перераб. и доп. - М.:Радио и связь, 2001. - 376 с.: ил.
|