summaryrefslogtreecommitdiff
path: root/security-models/lectures/lecture4.tex
diff options
context:
space:
mode:
Diffstat (limited to 'security-models/lectures/lecture4.tex')
-rw-r--r--security-models/lectures/lecture4.tex159
1 files changed, 159 insertions, 0 deletions
diff --git a/security-models/lectures/lecture4.tex b/security-models/lectures/lecture4.tex
new file mode 100644
index 0000000..aefcb56
--- /dev/null
+++ b/security-models/lectures/lecture4.tex
@@ -0,0 +1,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{циклической}.