summaryrefslogtreecommitdiff
path: root/security-models/lectures/lecture4.tex
blob: aefcb56170f2a7528d294bb117f1418a896c56f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
% Лекция 4 (13.10.23)

\subsection{Модель типизированной матрицы доступов}

Дискреционная модель, получившая название <<типизированная матрица доступов>>
(ТМД), представляет собой развитие модели ХРУ, дополненной концепцией типов,
что позволяет несколько смягчить те условия, для которых возможно доказательство
безопасности системы.

Формальное описание модели включает в себя следующие элементы:
\begin{itemize}
  \item $O$ --- множество объектов системы;
  \item $S$ --- множество субъектов системы ($S \subseteq O$);
  \item $R$ --- множество прав доступа субъектов к объектам;
  \item $M$ --- матрица доступов;
  \item $C$ --- множество команд;
  \item $T$ --- множество типов объектов;
  \item $t: O \to T$ --- функция, ставящая в соответствие каждому объекту его тип;
  \item $q = (S, O, t, M)$ --- состояние системы;
  \item $Q$ --- множество состояний системы.
\end{itemize}

Состояния системы изменяются в результате применения к ним команд множества $C$.

\begin{align*}
  comm&and c(x_1 : t_1, \dots, x_k : t_k) \\
      &if (r_1 \in M[x_{s_1}, x_{o_1} and \dots and r_m \in M[x_{s_m}, x_{o_m}]) then \\
      &   a_1; \\
      &   \dots \\
      &   a_n; \\
      &endif \\
  &  end.
\end{align*}

Перед выполнением команды происходит проверка типов фактических параметров, и,
если они не совпадают с указанными в определении команды, то команда не
выполняется.

В модели ТМД используются 6 видов примитивных операторов, отличающихся от
аналогичных операторов модели ХРУ только использованием типизированных
параметров.

%% TODO: таблица
Примитивный оператор / Исходное состояние $q = (S, O, t, M)$ / Результирующее состояние $q' = (S', O', t', M')$
<<внести>> право $r$ в $M[s, o]$ / $s \in S, o \in O, r \in R$ / $S' = S, O' = O, t' = t, M'[s, o] = M[s, o] \cup \set{r}$, если $(s', o') \neq (s, o)$, то $M'[s', o'] = M[s', o']$.
<<удалить>> право $r$ из $M[s, o]$ / $s \in S, o \in O, r \in R$ / $S' = S, O' = O, t' = t, M'[s, o] = M[s, o] - \set{r}$, если $(s', o') \neq (s, o)$, то $M'[s', o'] = M[s', o']$.
<<создать>> субъект $s'$ с типом $t_s$ / $s' \not\in O$ / $S' = S \cup \set{s'}, O' = O \cup \set{s'}$, если $o \in O$, то $t'(o) = t(o), t'(s') = t_s$, если $(s, o) \in S \times O$, то $M'[s, o] = M[s, o]$, если $o \in O'$, то $M'[s', o] = \varempty$, если $s \in S'$, то $M'[s, s'] = \varempty$.
<<создать>> объект $o'$ с типом $t_o$ / $o' \not\in O$ / $S' = S, O' = O \cup \set{o'}$, если $o \in O$, то $t'(o) = t(o), t'(o') = t_o$, если $(s, o) \in S \times O$, то $M'[s, o] = M[s, o]$, если $s \in S'$, то $M'[s, o'] = \varempty$.
<<уничтожить>> субъект $s'$ / $s' \in O$ / $S' = S - \set{s'}, O' = O - \set{s'}$, если $o \in O$, то $t'(o) = t(o)$, если $(s, o) \in S' \times O'$, то $M'[s, o] = M[s, o]$.
<<уничтожить>> объект $o'$ / $o' \in O, o' \in S$ / $S' = S, O' = O - \set{o'}$, если $o \in O'$, то $t'(o) = t(o)$, если $(s, o) \in S' \times O'$, то $M'[s, o] = M[s, o]$.

Таким образом, ТМД является обобщением модели ХРУ, которую можно рассматривать
как частный случай ТМД с одним единственным типом для всех субъектов и объектов.

С другой стороны, любую ТМД можно выразить через систему ХРУ, введя для
обозначения типов специальные права доступа, а проверку типов в командах
заменив проверкой наличия соответствующих прав доступа.

Пусть $c(x_1 : t_1, \dots, x_k : t_k)$ --- некоторая команда системы ТМД. Будем
говорить, что $x_i$ является \emph{дочерним параметром}, а $t_i$ является
\emph{дочерним типом} в $c(x_1 : t_1, \dots, x_k : t_k)$, где $1 \leq i \leq k$,
в случае, когда в ней имеется один из следующих примитивных операторов:
\begin{itemize}
  \item <<создать>> субъект $x_i$ с типом $t_i$;
  \item <<создать>> объект $x_i$ с типом $t_i$.
\end{itemize}

В противном случае будем говорить, что $x_i$ является \emph{родительским
параметром}, а $t_i$ является \emph{родительским типом} в команде
$c(x_1 : t_1, \dots, x_k : t_k)$.

Заметим, что в одной команде тип может быть одновременно и родительским и
дочерним.

Например,
\begin{align*}
  &command foo(s_1: u, s_2: u, s_3: v, o_1: w, o_2: b) \\
  &   \text{<<создать>> субъект } s_2 \text{с типом } u; \\
  &   \text{<<создать>> объект } s_3 \text{с типом } v; \\
  &end.
\end{align*}

Здесь $u$ является


\emph{Система монотонной ТМД} (МТМД) --- система ТМД, в командах которой
отсутствуют немонотонные примитивные операторы вида <<удалить>> и
<<уничтожить>>.

\emph{Каноническая форма системы МТМД} (КФМТМД) --- система МТМД, в которой
команды, содержащие примитивные операторы вида <<создать>>, не содержат
условий и примитивных операторов вида <<внести>>.

\begin{theorem} %% NOTE: 2.3
  Для каждой системы МТМД существует эквивалентная ей система КФМТМД.
\end{theorem}
\begin{proof}
  Пусть задана система МТМД, в которой определены множества $R, T, Q, C$.
  Построим эквивалентную ей систему КФМТМД, определив множества $R^*, T^*,
  Q^*, C^*$.

  Зададим множества
  \begin{align*}
    R^* &= R \cup \set{active}; \\
    T^* &= T \cup \set{t_{active}}.
  \end{align*}

  В каждом состоянии $q^* = (S^*, O^*, t^*, M^*)$, соответствующем состоянию
  $q = (S, O, t, M)$, справедливы равенства:
  \begin{align*}
    S^* &= S \cup \set{s_{active}}; \\
    O^* &= O \cup \set{s_{active}}.
  \end{align*}

  Пусть также для каждого $o \in O$ справедливо равенство $t^*(o) = t(o)$ и
  $s_{active}$ --- единственный объект такой, что $t^*(s_{active}) = t_{active}$.

  Кроме того, для $s \in S, o \in O$ справедливо равенство $M^*[s, o] = M[s, o]$,
  и в начальном состоянии $q_0^* = (S_0^*, O_0^*, t_0^*, M_0^*)$ системы КФМТМД
  для $o \in O_0$ справедливо равенство $M_0^*[s_{active}, o] = \set{active}$.

  Таким образом, право доступа $active$ обозначает активизированные субъекты и объекты
  КФМТМД.

  Каждую команду $c(x_1: t_1, \dots, x_k: t_k) \in C$ системы МТМД, не содержащую
  примитивные операторы <<создать>>, представим командой $c(x_1: t_1, \dots, x_k:
  t_k, x: active)$ системы КФМТМД, полученной из исходной команды добавлением
  условий проверки $active \in M[x, x_i], i = 1, \dots, k$.

  Каждую команду $c(x_1: t_1, \dots, x_k: t_k)$ системы МТМД, содержащую
  примитивные операторы <<создать>>, представим монотонными командами КФМТМД:
  \begin{itemize}
    \item
      $c'_{x_i}(x_{j_1}: t_{j_1}, \dots x_{j_m}: t_{j_m})$ --- команды без
      проверки условий, каждая из которых соответствуют одному дочернему
      параметру $x_i$ команды $c(x_1: t_1, \dots, x_k: t_k)$, содержит все её
      родительские параметры и параметр $x_i$ и содержит соответствующий
      примитивный оператор вида <<создать>>;
    \item
      $c''(x_1: t_1, \dots, t_k: t_k, x: t_{active})$ --- команда, содержащая
      условия и примитивные операторы <<внести>> команды $c(x_1: t_1, \dots,
      x_k: t_k)$, условия проверки $active \in M[x, x_i]$, для всех
      родительских параметров $x_i$, примитивные операторы <<внести>> право
      $active$ в $M[x, x_i]$ для всех дочерних параметров $x_i$.
  \end{itemize}

  Таким образом, только <<активизированные>> объекты (в том числе и субъекты)
  системы КФМТМД соответствуют объектам системы МТМД, а все преобразования над
  ними в системе КФМТМД, соответствуют преобразованиям системы МТМД.
\end{proof}

\emph{Граф создания системы МТМД} --- ориентированный граф с множеством вершин
$T$, в котором дуга от вершина $u$ к вершине $v$ существует $\iff$ в системе
имеется команда, в которой $u$ является родительским типом, а $v$ --- дочерним
типом.

Система МТМД (КФ МТМД) называется \emph{ациклической} (АМТМД или, соответственно,
АКФМТМД) $\iff$ её граф создания не содержит циклов; в противном случае система
является \emph{циклической}.