summaryrefslogtreecommitdiff
path: root/security-models/lectures/lecture6.tex
blob: 856d7f7f8b248d4926cfa05b9da8071a089bf02d (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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
% Лекция 6 (27.10.23)

Третий шаг алгоритма всегда будет иметь конечную сложность. Так как множество
объектов не изменяется, то необходимо перебрать все последовательности различных
команд, а их конечное число.

Наибольшую трудоёмкость в общем случае представляет разработка алгоритма
построения <<развёрнутого>> состояния.

Однако для АМТМД или АКФМТМД такой алгоритм существует.

Пусть $\alpha$ и $\beta$ --- две различные команды системы МТМД, содержащие
примитивные операторы <<создать>>, \dots. Будем считать, что $\alpha < \beta \iff$
для некоторого дочернего типа команды $\alpha$ в графе создания найдётся путь
в некоторый родительский тип команды $\beta$.

В системе АМТМД отношение <<$<$>> на множестве команд, содержащих примитивные
операторы <<создать>>, \dots, является отношением строгого порядка

%% TODO
\textbf{Алгоритм 2.2} \emph{Алгоритм построения <<развёрнутого>> состояния для
системы АКФМТМД.}
\begin{enumerate}
  \item
    Упорядочить в списке все команды, содержащие примитивные операторы вида
    <<создать>>, \dots (команда $\alpha$ следует в списке перед командой $\beta
    \iff \alpha < \beta \; \lor$ $\alpha$ и $\beta$ не сравнимы).
  \item
    Начиная с начального состояния, применять команды в соответствии с созданным
    на шаге 1 списком, при этом каждая команда применяется со всеми возможными
    для неё наборами родительских объектов.
\end{enumerate}

%% NOTE: 2.4
\begin{theorem}
  Существует алгоритм проверки безопасности систем АМТМД.
\end{theorem}
%% NOTE: 2.2
\begin{corollary}
  Алгоритм проверки безопасности систем АМТМД имеет экспоненциальную сложность.
\end{corollary}

Для АМТМД, в которых каждая команда имеет не более трёх параметров, доказано,
что алгоритм проверки их безопасности имеет полиномиальную сложность.

%% NOTE: 2.3
\subsection{Модель распространения прав доступа Take-Grant}

\subsubsection{}

Классическая модель Take-Grant ориентирована на анализ путей распространения
прав доступа в системе дискреционного управления доступом.

Основными элементами модели Take-Grant являются:
\begin{itemize}
  \item $O$ --- множество объектов;
  \item $S \subseteq O$ --- множество субъектов;
  \item
    $R = \set{r_1, r_2, \dots, r_m} \cup \set{t, g}$ --- множество видов прав
    доступа, где $t$ (take) --- право брать права доступа, $g$ (grant) --- право
    давать права доступа;
  \item
    $G = (S, O, E)$ --- конечный помеченный ориентированный без петель граф
    доступов, описывающий состояние системы.
\end{itemize}

Элементы множеств $S$ и $O$ являются вершинами графа, которые обозначаются
$\otimes$ --- объекты (элементы множества $O - S$) и $\cdot$ --- субъекты
соответственно.

Элементы множества $E \subseteq O \times O \times R$ являются дугами графа.
Каждая дуга помечена непустым подмножеством множества видов прав доступа $R$.
Состояние системы описывается соответствующим ему графом доступов.

В отличие от подели ХРУ в модели Take-Grant возможно наличие прав доступов не
только у субъектов к объектам, но и у объектов к объектам.

Основная цель классической модели Take-Grant --- определение и обоснование
алгоритмически проверяемых условий проверки возможности утечки права доступа по
исходному графу доступов, соответствующего некоторому состоянию системы.

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

Преобразование графа $G$ в граф $G'$ в результате выполнения правила $op$
обозначается через $G \vdash_{op} G'$.

В классической модели Take-Grant рассматриваются следующие четыре де-юре
правила преобразования графа, выполнение каждого из которых может быть
инициировано только субъектом, являющимся активной компонентой системы:
\begin{enumerate}
  \item
    $take$ --- брать права доступа (см. рис 2.1): субъект $x$ берёт у объекта
    $y$ права $\alpha$ на объект $z$;
    %% TODO: рис. 1
  \item
    $grant$ --- давать права доступа (см. рис. 2.2): субъект $x$ даёт объекту
    $y$ права $\alpha$ на объект $z$;
    %% TODO: рис. 2
  \item
    $create$ --- создать новый объект или субъект, при этом субъект создатель
    может взять на созданный субъект любые права доступа (по умолчанию
    предполагается, что создаётся объект, создание субъекта оговаривается особо)
    (см. рис. 2.3);
    %% TODO: рис. 3
  \item
    $remove$ --- удалять права доступа (см. рис. 4): субъект $x$ удаляет из
    своих прав доступа на объект $y$ набор прав $\alpha$.
    %% TODO: рис. 4
\end{enumerate}

%% TODO: нумерация
В таблице 2.3 приведены условия применения де-юре правил в исходном состоянии
$G = (S, O, E)$ и результаты их применения в результирующем состоянии
$G' = (S', O', E')$.

%% TODO: таблица 2.3 --- Де-юре правила классической модели Take-Grant
Правила | Исходное состояние $G = (S, O, E)$ | Результирующее состояние $G' = (S', O', E')$
$take(\alpha, x, y, z)$ | $x \in S, \; y, z \in O, \; (x, y, \set{t}) \subset E, \; (y, z, \beta) \subset E, \; x \neq z, \; \alpha \subseteq \beta$ | $S' = S, O' = O, E'= E \cup \set{(x, z, \alpha)}$

\begin{itemize}
  \item $grant(\alpha, x, y, z)$
  \item
    $x \in S, \; y, z \in O, \; (x, y, \set{g}) \subset E, \; (x, z, \beta)
    \subset E, \; y \neq z, \; \alpha \subseteq \beta$
  \item $S' = S, O' = O, E'= E \cup \set{(y, z, \alpha)}$
\end{itemize}
\begin{itemize}
  \item $create(\beta, x, y)$
  \item $x \in S, \; y \not\in O, \beta \neq \varnothing$
  \item $O' = O \cup \set{y}$, если $y$ субъект, то $S' = S \cup \set{y}$,
    иначе $S' = S, \; E' = E \cup \set{(x, y, \beta)}$
\end{itemize}
\begin{itemize}
  \item $remove(\alpha, x, y)$
  \item $x \in S, \; y \in O, \; (x, y, \beta) \subset E, \; \alpha \subseteq \beta$
  \item $S' = S, \; O' = O, \; E' = E - \set{(x, y, \alpha)}$
\end{itemize}

Рассмотрим условия, при которых в системе возможно распространение прав доступа.

Пусть дан граф доступов $G_0 = (S_0, O_0, E_0), \; x, y \in O_0, \; x \neq y, \;
\alpha \subseteq R$. Определим предикат $\fn{can_share}(\alpha, x, y, G_0)$,
который будет истинным $\iff \exists G_1 = (S_1, O_1, E_1), \dots, G_N = (S_N,
O_N, E_N)$ и правила $op_1, \dots, op_N, \; N \geq 0 : G_0 \vdash_{op_1} G_1
\vdash_{op_2} \dots \vdash_{op_N} G_N \land (x, y, \alpha \subset E_N$.

Определение истинности предиката $\fn{can_share}(\alpha, x, y, G_0)$
непосредственно по определению является в общем случае алгоритмически
неразрешимой задачей, так как требует проверки всех траекторий функционирования
системы.

По этой причине для проверки истинности предиката $\fn{can_share}(\alpha, x, y,
G_0)$ следует определить необходимые и достаточные условия, проверка которых
возможна. Решение этой задачи будет выполнено в два этапа:
\begin{enumerate}
  \item %% TODO: дописать
  \item Определены и обоснованы условия истинности предиката для произвольных
    графов.
\end{enumerate}

Пусть $G = (S, S, E)$ --- граф доступов, все вершины которого являются субъектами.
Говорят, что вершины графа доступов являются $tg$-связными или что они соединены 
$tg$-путём, когда, без учёта направления рёбер, в графе между ними существует
путь такой, что каждое ребро этого пути помечено $t$ или $g$.

\begin{theorem}
  Пусть $G_0 = (S_0, O_0, E_0)$ --- граф доступов, содержащий только вершины
  субъекты, $x, y \in S_0, \; x \neq y$.

  Тогда предикат $\fn{can_share}(\alpha, x, y, G_0)$ истинен $\iff$ выполняются
  следующие два условия:
  \begin{enumerate}
    \item
      существуют субъекты $s_1, \dots, s_m \subset S_0 : (s_i, y, \gamma_i)
      \subset E_0$, где $i = 1, \dots, m$ и $\alpha = \gamma_1 \cup \dots \cup
      \gamma_m$;
  \end{enumerate}
\end{theorem}

%% TODO: дописать