Курс лекций Защита Информации/Модель Харрисона-Рузза-Ульмана: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 1:
Модель Харрисона-Руззо-Ульмана является классом дискретизационной модели, реализует произвольное управление доступом субъектов к объектам и контроль за распределение прав доступа в рамках этой модели.
 
== Субъектно-объектный взгляд ==
Система обработки предоставляется в виде совокупности активных сущностей субъектов <math>S_i</math>, формирующих множество субъектов <math>S</math>, которые
осуществляют доступ к пользователям пассивных сущностей объектов <math>O_i</math>, формирующих множество объектов <math>O</math>, содержащих защищаемую информацию, и конечного множества прав доступа <math>R</math>, характеризующий полномочия на выполнение соответствующих действий до того, что бы включить в область действия модели отношения между субъектами. Принято считать, что все субъекты одновременно являются и объектами.
 
== Пространство состояний системы ==
 
Эволюция системы в модели представляет собой траектории в пространстве состояний. Пространство состояний системы образуется в декартовом произведении множеств, составляющих ее субъектов, объектов и прав доступа. Текущее состояние <math>Q</math>-множества в этом пространстве определяется тройкой, состоящей из множества <math>S</math>, <math>O</math> и матрицы прав доступа <math>A</math>, описывающая текущие права доступа <math>S</math> к <math>O</math>. Строки матрицы составляют <math>S</math>, а столбцы-объекты.
Модель Харрисона-Руззо-Ульмана является классом дискретизационной модели, реализует произвольное управление доступом субъектов к объектам и контроль за распределение прав доступа в рамках этой модели.
 
Строка 23 ⟶ 13 :
 
Поведение системы во времени моделируется переходами между различными состояниями. Переход осуществляется путем внесения изменений в матрицу <math>M</math> с помощью команд вида:
<math>command</math> <math>\alpha(x_1, ... ,x_n)</math>
<backquote>
<math>command</math> <math>\alpha(x_1,if~ ...r_1~ in~ M[x_{s_1},x_n) x_{o_1}]</math>
<math>if~ r_1r_2~ in~ M[X_S_1x_{s_2}, X_O_1x_{o_2}]</math>
...
</backquote>
<math>if~ r_m~ in~ M[x_{s_m}, x_{o_2m}]</math>
<math>then</math>
<math>op_1, op_2, ... , op_n</math>
где:
* <math>\alpha</math> - имя команды;
* <math>x_i</math> - параметры команды. являющиеся идентификаторами субъектов и объектов;
* <math>s_i</math> и <math>o_i</math> - индексы субъектов и объектов;
* <math>op_i</math> - эелементарная операция.
 
Элементарная операция, составляющая команду, выполняется только в том случае, если все условия, означающие присутствие указанных прав доступа в ячейках матрицы <math>M</math> являются истинными.
 
В классической модели допустимы только 6 элементарных операций:
# <math>enter~ r~ into~ M[s,o]</math>
# <math>delete~ r~ from~ M[s,o]</math>
# <math>create~ subject~ s</math>
# <math>create~ object~ s</math>
# <math>destroy~ subject~ s</math>
# <math>destroy~ object~ o</math>
 
Применение любой элементарной операции в системе, находящейся в состоянии <math>Q=(S,O,M)</math>, влечет за собой переход в другое состояние <math>Q'=(S',O',M')</math>, которое отличаеся от состояния <math>Q</math> по крайней мере одним компонентом.
 
* <math>enter</math>
<math>enter~ r~ into~ M[s,o]~ (s \in S, o \in O)</math>
<math>o'=o</math>
<math>s'=s</math>
<math>M'[x_s,x_o]=M[x_s, x_o]</math> если <math>(x_s, x_o) \ne (s, o)</math>
<math>M'[s,o]=M[s,o] \cup \{r\}</math>
* <math>delete</math>
<math>delete~ r~ from~ M[S,O]~ (s \in S, o \in O)</math>
<math>o'=o</math>
<math>s'=s</math>
<math>M'[x_s,x_o]=M[x_s, x_o]</math> если <math>(x_s, x_o) \ne (s, o)</math>
<math>M'[s,o]=M[s,o] \setminus \{r\}</math>
* <math>create object</math>
<math>create~ object~ o~ (o \in O)</math>
<math>o'=o \cup \{o}</math>
<math>s'=s</math>
<math>M'[x_s,x_o]=M[x_s, x_o]</math> для <math>(x_s, x_o) \in s \times o</math>
<math>M'[x_s,o]=\empty</math> для <math>x_s \in S'</math>
* <math>create subject</math>
<math>create~ subject~ s~ (s \in S)</math>
<math>o'=o \cup \{o}</math>
<math>s'=s \cup \{s}</math>
<math>M'[x_s,x_o]=M[x_s, x_o]</math> для <math>(x_s, x_o) \in s \times o</math>
<math>M'[x_s,s]=\empty</math> для <math>x_s \in S'</math>
<math>M'[s,x_o]=\empty</math> для <math>x_o \in O'</math>
* <math>destroy subject</math>
<math>destroy~ subject~ s~ (s \in S)</math>
<math>o'=o \setminus \{o}</math>
<math>s'=s \setminus \{s}</math>
<math>M'[x_s,x_o]=M[x_s, x_o]</math> для <math>(x_s, x_o) \in s' \times o'</math>
* <math>destroy subject</math>
* <math>destroy object</math>
<math>destroy~ object~ o~ (o \in O \setminus S)</math>
<math>o'=o \setminus \{o}</math>
<math>s'=s</math>
<math>M'[x_s,x_o]=M[x_s, x_o]</math> для <math>(x_s, x_o) \in s' \times o'</math>