% Лекция 12 (04/08.12.23)

%% NOTE: 3.1
% \subsection{Модель Белла-ЛаПадулы}

$M = \set{m_{|S| \times |O|}}$ --- множество возможных матриц доступов, где
$m_{|S| \times |O|}$ --- матрица доступов, $m[s, o] \subseteq R$ --- права
доступа субъекта $s$ к объекту $o$;

$(f_s, f_o, f_c) \in F = L^S \times L^O \times L^S$ --- тройка функций
%% TODO: дописать

\begin{itemize}
  \item $V = B \times M \times F$ --- множество состояний системы;
  \item $Q$ --- множество запросов системе;
  \item
    $D$ --- множество ответов по запросам, например, $D = \set{yes, no, error}$;
  \item
    $W \subseteq Q \times D \times V \times V$ --- множество действий системы,
    где $(q, d, v^*, v) \in W$, означает, что системы по запросу $q$ с ответом
    $d$ перешла из состояния $v$ в состояние $v^*$;
  \item
    $\NN_0 = \set{0, 1, 2, \dots}$ --- множество значений времени;
  \item
    $X$ --- множество функций $x : \NN_0 \to Q$, задающих все возможные
    последовательности запросов к системе;
  \item
    $Y$ --- множество функций $y : \NN_0 \to D$, задающих все возможные
    последовательности ответов системы по запросам;
  \item
    $Z$ --- множество функций $z : \NN_0 \to V$, задающих все возможные
    последовательности состояний системы.
\end{itemize}

$\Sigma (Q, D, W, z_0) \subseteq X \times Y \times Z$ называется \emph{системой},
когда для каждого $(x, y, z) \in \Sigma (Q, D, W, z_0)$ выполняется условие:
для $t \in \NN_0 \; (x_t, y_t, z_{t + 1}, z_t) \in W$, где $z_0$ --- начальное
состояние системы.

При этом каждый набор $(x, y, z) \in \Sigma (Q, D, W, z_0)$ называется
\emph{реализацией} системы, а $(x_t, y_t, z_{t + 1}, z_t) \in W$ ---
\emph{действием} системы в момент времени $t \in \NN_0$.

В классической модели Белла-ЛаПадулы рассматриваются следующие запросы, входящие
в множество $Q$:
\begin{enumerate}
  \item запросы изменения множества текущих доступов $b$;
  \item запросы изменения функций $f$;
  \item запросы изменения прав доступа в матрице $m$.
\end{enumerate}

Следующий список описывает изменения каждого элемента состояния системы.
Конкретное решение по запросу включает возможность производить следующие
изменения в состоянии системы.
\begin{enumerate}
  \item
    Изменение текущих доступов:
    \begin{enumerate}
      \item
        получить доступ (добавить тройку (субъект, объект, вид доступа) в
        текущее множество доступов $b$);
      \item
        отменить доступ (удалить аналогично).
    \end{enumerate}
  \item
    Изменение значений функций уровней конфиденциальности и доступа:
    \begin{enumerate}
      \item изменить уровень конфиденциальности объекта;
      \item изменить уровень доступа субъекта.
    \end{enumerate}
  \item
    Изменение прав доступа:
    \begin{enumerate}
      \item
        дать разрешение на доступ (добавить право доступа в соответствующий
        элемент матрицы доступов $m$);
      \item
        отменить разрешение на доступ (удалить аналогично).
    \end{enumerate}
\end{enumerate}

Безопасность системы определяется с помощью трёх свойств:
\begin{itemize}
  \item
    ss --- свойства простой безопасности (simple security, безопасность по
    чтению);
  \item
    * --- свойства <<звезда>> (безопасность по записи);
  \item
    ds --- свойства дискреционной безопасности (discretionary security,
    безопасность (разрешённость) по матрице доступа).
\end{itemize}

Доступ $(s, o, r) \in S \times O \times R$ обладает ss-свойством относительно
$f = (f_s, f_o, f_c) \in F$, когда выполняется одно из условий:
\begin{enumerate}
  \item $r \in \set{execute, append}$;
  \item $r \in {read, write} \land f_s(s) \geq f_o(o)$.
\end{enumerate}

Состояние системы $(b, m, f) \in V$ обладает ss-свойством, когда каждый элемент
$(s, o, r) \in b$ обладает ss-свойством относительно $f$.

Доступ $(s, o, r) \in S \times O \times R$ обладает *-свойством относительно
$f = (f_s, f_o, f_c) \in F$, когда выполняется одно из условий:
\begin{enumerate}
  \item $r = execute$;
  \item $r = append \land f_o(o) \geq f_c(s)$;
  \item $r = read \land f_c(s) \geq f_o(o)$;
  \item $r = write \land f_c(s) = f_o(o)$.
\end{enumerate}

Состояние системы $(b, m, f) \in V$ обладает *-свойством, когда каждый элемент
$(s, o, r) \in b$ обладает *-свойством относительно $f$.

Состояние системы $(b, m, f) \in V$ обладает *-свойством относительно
подмножества $S' \subseteq S$, когда каждый элемент $(s, o, r) \in b$, где
$s \in S'$, обладает *-свойством относительно $f$.

При этом $S \backslash S'$ называется \emph{множеством доверенных субъектов},
то есть субъектов, имеющих право нарушать требования *-свойства.

Состояние системы $(b, m, f) \in V$ обладает ds-свойством, когда для каждого
доступа $(s, o, r) \in b$ выполняется условие $r \in m[s, o]$.

Состояние системы $(b, m, f)$ называется \emph{безопасным}, когда оно обладает
*-свойством относительно $S'$, ss-свойством и ds-свойством.

Реализация системы $(x, y, z) \in \Sigma (Q, D, W, z_0)$ обладает ss-свойством
(*-свойством, ds-свойством), когда в последовательности $(z_0, z_1, \dots)$
каждое состояние обладает ss-свойством (*-свойством, ds-свойством).

Система $\Sigma (Q, D, W, z_0)$ обладает ss-свойством (*-свойством, ds-свойством),
когда каждая её реализация обладает ss-свойством (*-свойством, ds-свойством).

Система $\Sigma (Q, D, W, z_0)$ нащывается \emph{безопасной}, когда она обладает
ss-свойством, *-свойством, ds-свойством одновременно.

Описанные свойства можно пояснить следующим образом:
\begin{enumerate}
  \item
    из обладания доступом *-свойством относительно $f$ следует обладание этим
    доступом ss-свойством относительно $f$;
  \item
    из обладания ss-свойством следует, что в модели Белла-ЛаПадулы выполняется
    запрет на чтение вверх, требуемый мандатной политикой безопасности.

    Кроме того, ss-свойство не допускает модификацию с использованием доступа
    write, когда $f_s(s) < f_o(o)$.

    Таким образом, функция $f_s(s)$ задаёт для субъекта $s$ верхний уровень
    конфиденциальности объектов, к которым он потенциально может получить доступ
    read или write;
  \item
    если субъект $s$ может понизить свой текущий уровень доступа до $f_c(s) =
    f_o(o)$, то он может получить доступ write к объекту $o$, но не доступ
    read к объектам $o'$, чей уровень $f_o(o') > f_c(s)$.

    Хотя при этом, возможно, справедливо неравенство $f_s(s) \geq f_o(o')$, и
    в каких-то других состояниях системы субъект $s$ может получить доступ
    read к объекту $o'$.

    Таким образом, *-свойство исключает появление в системе запрещённого
    информационного потока <<сверху вниз>> и соответствует требованиям мандатной
    политики безопасности (см. рис. 3.1).

    %% TODO: рис 1 (3.1): Иллюстрация *-свойства
\end{enumerate}

%% NOTE: 3.1
\begin{theorem}
  Система $\Sigma(Q, D, W, z_0)$ обладает ss-свойством для любого начального
  состояния $z_0$, обладающего ss-свойством $\iff$ для каждого действия
  $(q, d, (b^*, m^*, f^*), (b, m, f)) \in W$ выполняется два условия:
  \begin{enumerate}
    \item
      каждый доступ $(s, o, r) \in b^* \backshash b$ обладает ss-свойством
      относительно $f^*$;
    \item
      если $(s, o, r) \in b$ и не обладает ss-свойством относительно $f^*$,
      то $(s, o, r) \not\in b^*$.
  \end{enumerate}
\end{theorem}

\begin{theorem}
  Система $\Sigma(Q, D, W, z_0)$ обладает *-свойством относительно $S' \subseteq S$
  для любого начального состояния $z_0$, обладающего *-свойством относительно
  $S'$ $\iff$ для каждого действия $(q, d, (b^*, m^*, f^*), (b, m, f)) \in W$
  выполняются два условия:
  \begin{enumerate}
    \item
      для $s \in S'$ доступ $(s, o, r) \in b^* \backslash b$ обладает *-свойством
      относительно $f^*$;
    \item
      для $s \in S'$, если $(s, o, r) \in b$ и не обладает *-свойством
      относительно $f^*$, то $(s, o, r) \not\in b^*$.
  \end{enumerate}
\end{theorem}

\begin{theorem}
  Система $\Sigma(Q, D, W, z_0)$ обладает ds-свойством для любого начального
  состояния $z_0$, обладающего ds-свойством $\iff$ для каждого действия
  $(q, d, (b^*, m^*, f^*), (b, m, f)) \in W$ выполняется два условия:
  \begin{enumerate}
    \item
      для каждого $(s, o, r) \in b^* \backslash b$ выполняется условие
      $r \in m^*[s, o]$;
    \item
      если доступ $(s, o, r) \in b \land r \not\in m^*[s, o] \implies (s, o, r)
      \not\in b^*$.
  \end{enumerate}
\end{theorem}

%% NOTE: 3.4
\begin{theorem}[Базовая теорема безопасности]
  Система $\Sigma(Q, D, W, z_0)$ безопасна для безопасного $z_0$ $\iff$
  множество действий системы $W$ удовлетворяет условиям теорем 3.1 -- 3.3.
\end{theorem}
