% Лекция 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}