- •Тема 7. Математические модели анализа политики безопасности информации
- •Москва – 2010
- •Введение
- •1. Основные понятия и определения политики безопасности информации.
- •1.1. Понятие политики безопасности
- •1.2. Понятия доступа и монитора безопасности
- •1.3. Понятие ядра безопасности.
- •2. Математические модели анализа дискреционной политики безопасности информации
- •2.1. Модель матрицы доступов Харрисона-Руззо-Ульмана
- •Рассмотрим вопросы безопасности системы.
- •2.2. Типизованная матрица доступов
- •2.3. Модель распространения прав доступа Take-Grant
- •2.4. Модель Харрисона-Руззо-Ульмана.
- •3. Математические модели мандатной политики управления доступом
- •3.1. Классическая модель системы безопасности Белла-ЛаПадула
- •3.2. Модель безопасности Мак-Лина (безопасная функция перехода)
- •С точки зрения модели уполномоченных субъектов система (vo,r, Ta) считается безопасной в том случае, если:
- •Модель совместного доступа
- •3.3. Модель совместного доступа с уполномоченными объектами
- •3.4. Решетка мандатных моделей безопасности
- •3.5. Применение мандатных моделей безопасности.
Рассмотрим вопросы безопасности системы.
Все системы защиты должны строиться на основе определенных математических моделей, с помощью которых должно быть теоретически обосновано соответствие системы защиты требованиям заданной политики безопасности. И это является требованием большинства критериев оценки защищенности АС.
Очевидно, что необходим алгоритм, который бы осуществлял проверку соответствия системы защиты требованиям заданной политики безопасности.
Однако, как показывают результаты анализа модели HRU, задача построения алгоритма проверки безопасности систем, реализующих дискреционную политику разграничения прав доступа, не может быть решена в общем случае.
Рассмотрим некоторые теоретические положения, подтверждающие необходимость отыскания такого алгоритма.
Определение 1. Будем считать, что возможна утечка права r R в результате выполнения команды с, если при переходе системы в состояние Q' выполняется примитивный оператор, вносящий г в элемент матрицы доступов М, до этого г не содержавший.
Определение 2. Начальное состояние Q0 называется безопасным по отношению к некоторому праву г, если невозможен переход системы в такое состояние Q, в котором может возникнуть утечка права г.
Определение 3. Система называется монооперационной, если каждая команда выполняет один примитивный оператор.
Рассмотрим теорему о существовании некоторого алгоритма, проверяющего исходное состояние монооперационной системы и безопасность исходного состояния этой системы относительно права доступа r
Теорема 1. Существует алгоритм, который проверяет, является ли исходное состояние монооперационной системы безопасным для данного права r.
Приведем доказательство этого положения.
Для доказательства достаточно показать, что число последовательностей команд системы, которые следует проверить, ограничено.
В этом случае алгоритм проверки безопасности является алгоритмом тотального перебора всех последовательностей команд системы и проверки конечного состояния для каждой из них на отсутствие утечки права г.
Несколько замечаний:
Нет необходимости в последовательностях команд системы рассматривать команды "удалить" и "уничтожить", так как требуется, чтобы алгоритм проверял наличие права доступа r, а не его отсутствие.
Нет необходимости рассматривать последовательности команд, содержащих более одного примитивного оператора "создать", так как все последовательности команд, которые проверяют или вносят права доступа в новые элементы матрицы доступов М, могут быть простой заменой параметров представлены последовательностями, которые действуют с существующими субъектами и объектами.
3. Надо сохранить одну команду создания субъекта на случай, если начальное состояние системы Qo=(S, О, М) и S =0.
В результате нам надо рассматривать только те последовательности команд, которые содержат только примитивные операторы “внести” и максимум один примитивный оператор “создать” субъект.
Число различных операторов "внести" равно n =|R|(|So|+1)(|Oo|+1).
Так как порядок операций "внести" в последовательности команд не важен, то с учетом одной операции "создать" число последовательностей команд ограничено величиной 2n+1.
Теорема 2. Задача проверки безопасности произвольных систем алгоритмически неразрешима.
Для доказательства этой теоремы можно воспользоваться фактом, доказанным в теории машин Тьюринга:
не существует алгоритма проверки для произвольной машины Тьюринга и произвольного начального слова остановится ли машина Тьюринга в конечном состоянии или нет.
Под машиной Тьюринга понимается способ переработки слов в конечных алфавитах. Слова записываются на бесконечную в обе стороны ленту, разбитую на ячейки.
Обозначим элементы и команды машины Тьюринга:
A={a0,a1,...,am} - внешний алфавит, где а0= -пустой символ;
Q={q0,q1,..., qk}- внутренний алфавит, где q1- начальное состояние,
q0- конечное состояние;
D={r,l, e} - множество действий,
где: г- шаг вправо управляющей головки, l - шаг влево, е - управляющая головка не перемещается;
С: QAQAD - функция, задающая команды машины Тьюринга.
Например:
Запись С(qi0,аi0) = (qi1, ai1, d) означает, что когда машина находится в состоянии qi0 и управляющая головка указывает на ячейку ленты, содержащую символ аi0, то выполняется шаг машины, в результате которого в эту ячейку записывается символ аi1, машина переходит в состояние qi1, a управляющая головка смещается по ленте согласно действию d. .
Для того чтобы воспользоваться указанным выше фактом, необходимо представить все элементы и команды машины Тьюринга в виде элементов и команд модели HRU.
Пусть машина Тьюринга выполнила некоторое количество шагов.
Пронумеруем все ячейки, которые прошла считывающая головка (включая и те, в которые была изначально занесена информация)
Для нумерации ячеек используем числа от 1 до п.
Тогда (as1,..., asn) - заполнение ленты, где , asi A, si {0,1,.... m}
для i=1,...,n.
Допустим, что считывающая головка указывает на ячейку с номером
i {1, ...,п}, содержащую символ аit А, где it {0,1,.... m}, состояние машины в этом случае qij Q, где ij {1,..., k}, и должна быть выполнена команда
С(qij, аit) = (qij, аit, d),
где: qij Q, ait A, it {0,1, ...,m}, ij' {1,....k}, d D
Каждой ячейке ленты машины Тьюринга поставим в соответствие субъекта рассматриваемой нами модели HRU, при этом будем считать, что
О = S = {s i,.... sn}.
Зададим матрицу доступов М в текущем состоянии.
Пусть:
множество прав доступа R = QA{own} и
в матрицу доступов внесены права:
• asj M[Sj, Sj] для j =1,....n - заполнение ленты;
• own М[sj, s/+i] для j =1,.... n-1 - упорядочивание субъектов,
соответствующих ячейкам ленты;
• qij M[si, si,] - управляющая головка указывает на ячейку с номером i.
В результате, некоторому текущему состоянию машины Тьюринга будет соответствовать матрица доступов М модели HRU следующего вида:
S1 S2 S3 ... Si ... Sn-1 Sn
S1 S2 S3 ... Si ... Sn-1 Sn |
as1 |
own |
|
|
|
|
|
|
|
as2 |
own |
|
|
|
|
|
|
|
|
as3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
asi ,qij |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
asn-1 |
own |
|
|
|
|
|
|
|
|
asn |
Для каждой команды машины Тьюринга C(qij, аit) = (qij, аit, d) зададим соответствующую ей команду cd (qij, ait, qij; аit) модели HRU.
Если d = е,
то command ce(qij, ait, qij; аit) ;
if (qij M[s, s]) and {аit M[s, s]) then "удалить" право qij из M[s,s];
"удалить" право аit из M[s, s];
"внести" право qij - в M[s,s];
"внести" право аit в M[s, s];
end;
Если d=r, то необходимо указать две команды cr1(qij, аit, qij', ait)
и cr2(qij, аit, qij', ait),
где:
cr1(qij, аit, qij', ait) - считывающая головка не указывает на самую крайнюю правую ячейку ленты;
cr2(qij, аit, qij', ait) - считывающая головка указывает на самую крайнюю правую ячейку ленты.
Запишем теперь соответствующие этим командам машины Тьюринга команды модели HRU в следующем виде:
command cr1 (qij, аit, qij', ait)
if {qij M[s, s]) and (ait M[s, s]) and (own M[s, s']) then
"удалить" право qi,j из M[s,s];
"удалить" право аit из M[s, s];
"внести" право аit в M[s,s],
"внести" право qij в M[s',s'];
end;
command сг2(qij, аit, qij', ait)
if(qij M[s, s]) and (аit M[s, s]) and (not ( s' S: own M[s, s])) then
"удалить" право qij из M[s, s];
"удалить" право аit из M[s, s];
"внести" право аit в M[s,s];
"создать" субъект s';
"внести" право own в M[s,s'];
"внести" право аo в M[s',s'];
"внести" право qij в M[s',s'];
end;
Если d=l, то также указываются две команды:
- команда cl1(qij, аit, qij, аit.), - считывающая головка не указывает на самую крайнюю левую ячейку ленты;
- команда cl2 (qij, аit, qij, аit.) - считывающая головка не указывает на самую крайнюю левую ячейку ленты.
Запишем теперь соответствующие этим командам машины Тьюринга команды модели HRU аналогично командам:
command cr1 (qij, аit, qij', ait), command сг2(qij, аit, qij', ait).
Если машина Тьюринга останавливается в своем конечном состоянии qo, то в соответствующей системе, построенной на основе модели HRU, происходит утечка права доступа qo.
Из алгоритмической неразрешимости задачи проверки - остановится ли машина Тьюринга в конечном состоянии, - следует аналогичный вывод для задачи проверки безопасности соответствующей ей системы модели HRU.
Таким образом, в общем случае для систем дискреционного разграничения доступа, построенных на основе модели HRU, задача проверки безопасности алгоритмически неразрешима.
Рассмотренные выше теорема 1 и теорема 2 определяют два пути выбора систем защиты.
С одной стороны, общая модель HRU может выражать большое разнообразие политик дискреционного разграничения доступа, но при этом не существует алгоритма проверки их безопасности.
С другой стороны, можно использовать монооперационные системы, для которых алгоритм проверки безопасности существует, но данный класс систем по мнению специалистов в области безопасности информации является слишком узким.
Очевидно, что монооперационные системы не могут выразить политику, дающую субъектам права на созданные ими объекты, так как не существует одной операции, которая и создает объект, и помечает его как принадлежащий создающему субъекту одновременно.
Дальнейшие исследования модели HRU велись в основном в направлении определения условий, которым должна удовлетворять система, чтобы для нее задача проверки безопасности была алгоритмически разрешима.
Так, в 1976 г. было доказано, что эта задача разрешима для систем, в которых нет операции "создать".
В 1978 г. Было показано, что таковыми могут быть системы монотонные и моноусловные, т.е. не содержащие операторов "уничтожить" или "удалить" и имеющие только команды, части условия которых имеют не более одного предложения.
В том же 1978 году было показано, что задача безопасности для систем с конечным множеством субъектов разрешима, но вычислительно сложна.