Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТИБиМЗИ-Л7_2012.doc
Скачиваний:
64
Добавлен:
13.11.2019
Размер:
988.67 Кб
Скачать

Рассмотрим вопросы безопасности системы.

Все системы защиты должны строиться на основе определенных математических моделей, с помощью которых должно быть теоретически обосновано соответствие системы защиты требованиям заданной политики безопасности. И это является требованием большинства критериев оценки защищенности АС.

Очевидно, что необходим алгоритм, который бы осуществлял проверку соответствия системы защиты требованиям заданной политики безопасности.

Однако, как показывают результаты анализа модели HRU, задача построения алгоритма проверки безопасности сис­тем, реализующих дискреционную политику разграничения прав доступа, не может быть решена в общем случае.

Рассмотрим некоторые теоретические положения, подтверждающие необходимость отыскания такого алгоритма.

Определение 1. Будем считать, что возможна утечка права r R в результате выполнения команды с, если при переходе системы в состояние Q' выполняется примитивный оператор, вносящий г в элемент матрицы доступов М, до этого г не содержавший.

Определение 2. Начальное состояние Q0 называется безопасным по отношению к некоторому праву г, если невозможен переход системы в такое состояние Q, в котором может возникнуть утечка права г.

Определение 3. Система называется монооперационной, если каж­дая команда выполняет один примитивный оператор.

Рассмотрим теорему о существовании некоторого алгоритма, проверяющего исходное состояние монооперационной системы и безопасность исходного состояния этой системы относительно права доступа r

Теорема 1. Существует алгоритм, который проверяет, является ли исходное состояние монооперационной системы безопасным для данного права r.

Приведем доказательство этого положения.

Для доказательства достаточно показать, что чис­ло последовательностей команд системы, которые следует проверить, ограничено.

В этом случае алгоритм проверки безопасности является алгоритмом тотального перебора всех последовательностей команд системы и проверки конечного состояния для каждой из них на отсутствие утечки права г.

Несколько замечаний:

  1. Нет необходимости в последовательно­стях команд системы рассматривать команды "удалить" и "уничтожить", так как требуется, чтобы алгоритм проверял наличие права доступа r, а не его отсутствие.

  2. Нет необ­ходимости рассматривать последовательности команд, содержащих бо­лее одного примитивного оператора "создать", так как все последовательности команд, которые проверяют или вносят права доступа в новые элементы матрицы доступов М, могут быть простой заменой параметров представлены последовательностями, которые действуют с существующими субъектами и объектами.

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 - шаг влево, е - управляющая головка не перемещается;

С: QAQAD - функция, задающая команды машины Тьюринга.

Например:

Запись С(qi0i0) = (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 = QA{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 году было показано, что задача безопасности для систем с конеч­ным множеством субъектов разрешима, но вычислительно сложна.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]