diff options
Diffstat (limited to 'security-models/lectures/lecture4.tex')
| -rw-r--r-- | security-models/lectures/lecture4.tex | 159 |
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{циклической}. |