summaryrefslogtreecommitdiff
path: root/security-models/lectures/lecture10.tex
blob: 3a0a0d7f47f1b24723d5d99a64233c033bd04c85 (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
% Лекция 10 (24.11.23)

%% NOTE: 2.3

Устовия применения де-факто правил в исходном состоянии $G = (S, O, E \cup F)$
и результаты их применения в результирующем состоянии $G' = (S, O, E \cup F')$
приведены в таблице.

%% TODO: таблица 1 - Де-факто правила расширенной модели Take-Grant

\begin{table}[H]
  \smallsize
  \centering
  \caption{}
  \begin{tabular}{|c|p{6cm}|p{6cm}|}
    \hline
    Правило &
    Исходное состояние $G = (S, O, E \cup F)$ &
    Результирующее состояние $G' = (S, O, E \cup F')$ \\ \hline

    Первое правило &
    $x \in S; y \in O; (x, y, r) \in E \cup F$ &
    $F' = F \cup \set{(y, x, w), (x, y, r)}$ \\ \hline

    Второе правило &
    $x \in S; y \in O; (x, y, w) \in E \cup F$ &
    $F' = F \cup \set{(y, x, r), (x, y, w)}$ \\ \hline

    $\fn{spy}(x, y, z)$ &
    $x, y \in S; x \neq z; \set{(x, y, r), (y, z, r)} \subset E \cup F$ &
    $F' = F \cup \set{(x, z, r), (z, x, w)}$ \\ \hline

    $\fn{find}(x, y, z)$ &
    $x, y \in S; z \in O; x \neq z; \set{(x, y, w), (y, z, w)} \subset E \cup F$ &
    $F' = F \cup \set{(x, z, w), (z, x, r)}$ \\ \hline

    $\fn{post}(x, y, z)$ &
    $x, z \in S; y \in O; x \neq z; \set{(x, y, r), (z, y, w)} \subset E \cup F$ &
    $F' = F \cup \set{(x, z, r), (z, x, w)}$ \\ \hline

    $\fn{pass}(x, y, z)$ &
    $y \in S; x, z \in O; x \neq z; \set{(y, x, w), (y, z, r)} \subset E \cup F$ &
    $F' = F \cup \set{(x, z, r), (z, x, w)}$ \\ \hline
  \end{tabular}
\end{table}

Из определения де-факто правил следует, что для анализа информационных потоков
достаточно рассматривать потоки одного вида: либо на чтение, либо на запись.

Будем рассматривать только информационные потоки на запись. Будем предполагать,
что при возникновении информационного потока не накладывается ограничений на
кооперацию субъектов системы, участвующих в этом процессе.

Пусть $x, y \in O_0$, $x \neq y$, --- различные объекты графа доступов и
информационных потоков $G_0 = (S_0, O_0, E_0 \cup F_0)$. Определим предикат
$\fn{can_write}(x, y, G_0)$, который будет истинным $\iff$ $\exists$ графы $G_1
= (S_1, O_1, E_1 \cup F_1), \dots, G_N = (S_N, O_N, E_N \cup F_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$ и $(x, y, w) \subset
F_N$.

%% NOTE: 2.8
\begin{theorem}
  Пусть $G_0 = (S_0, O_0, E_0 \cup F_0)$ --- граф доступов и информационных
  потоков, $x, y \in O_0$, $x \neq y$. Тогда предикат $\fn{can_write}(x, y, G_0)$
  истинен $\iff$ существуют объекты $o_1, \dots, o_m \in O_0$, где $o_1 = x,
  o_m = y$, такие, что или $m = 2$ и $(x, y, w) \in F_0$, или для $i = 1, \dots,
  m - 1$ выполняется одно из трёх условий:
  \begin{enumerate}
    \item
      $o_i \in S_0$ и или истинен предикат $\fn{can_share}(\set{w}, o_i, o_{i +
      1}, G_0)$, или $(o_i, o_{i + 1}, w) \in E_0 \cup F_0$;
    \item
      $o_{i + 1} \in S_0$ и или истинен предикат $\fn{can_share}(\set{r}, o_{i +
      1}, o_i, G_0)$, или $(o_{i + 1}, o_i, r) \in E_0 \cup F_0$;
    \item
      $o_i, o_{i + 1} \in S_0$ и или истинен предикат $\fn{can_share}(\alpha,
      o_i, o_{i + 1}, G_0)$, или истинен предикат $\fn{cna_share}(\alpha, o_{i
      + 1}, o_i, G_0)$, где $\alpha \in \set{t, g}$, или существует объект
      $o_i' \in O_0$ такой, что либо истинны предикаты $\fn{can_share}(\set{t},
      o_i, o_i', G_0)$, $\fn{can_share}(\set{g}, o_{i + 1}, o_i', G_0)$,
      либо истинны предикаты $\fn{can_share}(\set{g}, o_i, o_i', G_0)$,
      $\fn{can_share}(\set{t}, o_{i + 1}, o_i', G_0)$.
  \end{enumerate}

  \label{thm:2.8}
\end{theorem}

\paragraph{Алгоритм построения замыкания графа доступов и информационных потоков.}

Для проверки истинности предиката $\fn{can_share}(\alpha, x, y, G_0)$ или
$\fn{can_write}(x, y, G_0)$ для многих пар вершин неэффективно использовать
алгоритмы проверки условий теорем \ref{thm:2.6}, \ref{thm:2.8}.

Эффективнее применять алгоритмы, позволяющие осуществлять проверку истинности
данных предикатов сразу для всех пар вершин. Такие алгоритмы реализуют
преобразование графа доступов и информационных потоков в его замыкание.

Пусть $G = (S, O, E \cup F)$ --- граф доступов и информационных потоков такой,
что для каждого субъекта $s \in S$ существует объект $o \in O$ такой, что
выполняется условие $(s, o, \set{t, g, r, w}) \in E$.

\emph{Замыканием} (или \emph{де-факто замыканием}) графа $G$ называется граф
доступов и информационных потоков $G^* = (S, O, E^* \cup F^*)$, полученный из
$G$ применением последовательности правил take, grant и де-факто правил. При
этом применение к графу $G^*$ указанных правил не приводит к появлению в нём
новых дуг.

$tg$-замыканием графа $G$ называется граф доступов и информационных
потоков $G^{tg} = (S, O, E^{tg} \cup F)$, полученный из $G$ применением
последовательности правил take или grant.

При этом каждое ребро $(o_1, o_2, \alpha) \in E^{tg} - E$ имеет вид $(o_1, o_2,
t)$ или $(o_1, o_2, g)$, и применение к графу $G^{tg}$ правил take или grant не
приводит к появлению в нём новых дуг указанного вида.

\emph{Де-юре замыканием} графа $G$ называется граф доступов и информационных
потоков $G^\text{де-юре} = (S, O, E^\text{де-юре} \cup F)$, полученный из $G$
применением последовательности правил take или grant. При этом применение в
графу $G^\text{де-юре}$ правил take или grant не приводит к появлению в нём
новых дуг.

Алгоритм построения замыкания графа доступов состоит из трёх этапов:
\begin{enumerate}
  \item построение $tg$-замыкания;
  \item построение де-юре-замыкания;
  \item построение замыкания.
\end{enumerate}

Алгоритм построения $tg$-замыкания графа доступов и информационных потоков
$G = (S, O, E \cup F)$.