Модель Харрисона-Рузо-Ульмана (матричная модель) используется для анализа системы защиты, реализующей дискреционную политику безопасности. При этом система представляется конечным автоматом, функционирующим согласно определенным правилам перехода.
При использовании матричной модели доступа должны быть определены множества субъектов S, объектов O и прав доступа R. В качестве субъектов системы рассматриваются в первую очередь выполняющиеся программы, поэтому предполагается, что S O. Условия доступа субъекта s S к объекту o O определяются матрицей доступа. Пусть, например, множество прав доступа состоит из прав на чтение (r), запись (w), выполнение (e). Запрет будет соответствовать пустому множеству прав доступа (). Тогда матрица доступа может быть такой, как представлено в таблице 1.1.
Таблица 1.1 | |||||
Пример матрицы доступа | |||||
o1 | o2 | o3 | o4 | ||
s1 | rwe | rw | rw | ||
s2 | e | rwe | r | ||
Здесь мы предполагаем, что объекты o1, o2 – это исполняемые файлы, которые после запуска становятся субъектами s1 и s2.
Могут определяться и другие наборы прав, например, {чтение, запись, владение}.
При описании систем с большим числом объектов и субъектов, размерность матрицы доступа может получиться весьма значительной. Для ее снижения, одинаковые по имеющимся правам субъекты и сходные по значимости объекты можно организовать в группы и давать разрешения группе субъектов на группу объектов.
Функционирование системы рассматривается с точки зрения изменений в матрице доступа. Модель определяет 6 примитивных операций: «создать»/«уничтожить» объект и субъект, «внести»/«удалить» право доступа субъекта к объекту. Их описание приведено в таблице 1.2.
Начальное состояние системы описывается множеством прав доступа R, множеством субъектов S, множеством объектов O (S O, мощности указанных множеств |S|=i, |O|=j, i j), матрицей доступа Mi j (элемент матрицы, соответствующий субъекту s и объекту o обозначается M[s,o] и является подмножеством множества прав доступа). Конечное состояние (после выполнения операции) – S’, O’, M’, R (множество прав доступа не изменяется).
Из примитивных операторов могут составляться команды. Команда состоит из двух частей: условия, при котором она выполняется, и последовательности операторов.
Таблица 1.2
Элементарные операции модели Харрисона-Рузо-Ульмана
Операция | Результат операции |
«создать» субъектs’,где | S’=S{s’}; O’=O{s’}; |
s’S | M’[s,o]=M[s,o]для всехsS,oO; |
M’[s’,o]=для всех oO’, M’[s,s’]= | |
для всех sS’ | |
«создать» объектo’,где | S’=S;O’=O{o’}; |
o’O | M’[s,o]=M[s,o]для всехsS,oO; |
M’[s,o’]=для всех sS’ | |
«уничтожить»субъект | S’=S\{s’};O’=O\{s’}; |
s’, где s’S | M’[s,o]=M[s,o]для всехsS’,oO’; |
«уничтожить» объектo’, | S’=S; O’=O\{o’}; |
где o’O | M’[s,o]=M[s,o]для всехsS’,oO’; |
«внести» право r’ Rв | S’=S; O’=O; M’[s,o]=M[s,o]дляss’,sS’, |
M[s’,o’],гдеs’S,o’O | oo’, oO’; |
M’[s’,o’]=M[s’,o’]{r’} | |
«удалить» право r’ Rиз | S’=S; O’=O; M’[s,o]=M[s,o]дляss’,sS’, |
M[s’,o’],гдеs’S,o’O | oo’, oO’; |
M’[s’,o’]=M[s’,o’]\{r’} | |
Общий вид команды [3]: command С (x1, …, xk):
if r1 M[xs1,xo1] and…and rm M[xsm,xom] then
α1;
…
αn; end
где r1, …, rm R – права доступа, α1, …, αn – последовательность примитивных операторов. При выполнении команды, система переходит из состояния Q в новое состояние Q ’. При этом, если хотя бы одно из условий команды не выполнено, Q=Q’. Для примера, рассмотрим команду создания субъектом s файла f. Множество прав доступа – чтение (read), запись (write), владение (own). Cчитаем, что для создания файла не требуется выполнения каких-либо дополнительных условий.
command «создать файл» (s, f)
«создать» объектf;
«внести» правовладенияownвM[s,f];«внести» правона чтениеreadвM[s,f];
«внести» правона записьwriteвM[s,f];
end
Как показали результаты анализа данной модели безопасности, задача построения алгоритма проверки безопасности систем, реализующих дискреционную политику безопасности, не может быть решена в общем случае.
Введем ряд определений.
Будем считать, что возможна утечка права r R в результате выполнения команды c, если при переходе системы в конечное состояние Q ’ выполняется примитивный оператор, вносящий r в элемент матрицы доступов M, до этого r не содержавший.
Начальное состояние Q 0 называется безопасным по отношению к некоторому праву r,если невозможен переход системы в такое состояние Q, в котором может возникнуть утечка права r.
Система называется моно-операционной, если каждая команда содержит только один примитивный оператор.
Для модели Харрисона-Рузо-Ульмана были доказаны следующие утверждения:
1. Существует алгоритм, который проверяет, является ли исходное состояние моно-операционной системы безопасным для данного права r;
2. Задача проверки безопасности произвольных систем алгоритмически неразрешима.
Таким образом, с одной стороны, общая модель Харрисона-Рузо-Ульмана может выражать большое разнообразие политик дискреционного доступа, но при этом не существует алгоритма проверки их безопасности. С другой стороны, можно предпочесть моно-операционную систему, для которой алгоритм проверки безопасности существует, но данный класс систем является слишком узким. Например, моно-операционные системы не могут выразить политику, дающую субъектам права на созданные ими объекты, т.к. не существует одной операции, которая и создает объект, и одновременно помечает его как принадлежащий создающему субъекту.
Модель Белла-ЛаПадула
Классической мандатной моделью безопасности является модель Белла–ЛаПадула. В ней для описания системы используются:
S–множество субъектов(например,множество пользователей ипрограмм);
O–множество объектов(например,множество файлов);
L–линейно упорядоченное множество уровней безопасности(например, «общий доступ», «для служебного пользования», «секрет-но», «совершенно секретно»);
F: S O L – функция, определяющая уровень безопасности субъекта или объекта в данном состоянии;
V–множество состояний–множество упорядоченных пар(F, M), где M – матрица доступа субъектов к объектам (матрица, строки которой соответствуют субъектам системы, столбцы – объектам, элемент матрицы Mso, далее обозначаемый как M[s,o], описывает права на доступ субъекта s к объекту o).
Система описывается начальным состоянием v0 V, множеством запросов R и функцией переходов T: (V R) V, описывающей переход системы из состояния в состояние под действием запроса.
В модели Белла–Ла-Падула вводится определение двух свойств безопасности системы: безопасность по чтению и безопасность по записи.
Состояние (F,M) безопасно по чтению тогда и только тогда, когда для s S, o O выполняется требование:
чтение M[s,o] F(s) F(o),
т. е. субъект s может прочитать информацию из объекта o, только если уровень секретности o меньше или равен уровню доступа s. Данное свойство безопасности также называется правилом запрета чтения с верхнего уровня.
Состояние (F,M) безопасно по записи тогда и только тогда, когда для s S, o O выполняется требование:
запись M[s,o] F(o) F(s),
т. е. субъект s может записать информацию в объект o, только если уровень секретности o выше или равен уровню доступа s. Данное свойство безопасности также называется правилом запрета записи на нижний уровень.
Состояние системы vV безопасно тогда и только тогда,когдаоно безопасно и по чтению, и по записи.
Система (v0,R,T) безопасна тогда и только тогда,когда ее начальное состояние v0 безопасно и любое состояние, достижимое из v0 после выполнения конечной последовательности запросов из R, также безопасно.
Большим достоинством модели Белла–Ла-Падула является то, что для нее доказана основная теорема безопасности. В общем случае, данная теорема формулируется следующим образом: если начальное состояние системы безопасно и все переходы из состояния в состояние не нарушают ограничений, сформулированных политикой безопасности, то любое состояние системы, достижимое за конечное число переходов будет безопасным. В случае модели Белла-ЛаПадула, ограничения не позволяют нарушить безопасность по чтению и записи.
Основная теорема безопасности для модели Белла – ЛаПадула.
Система (v0,R,T) (т. е. система с начальным состоянием v0, множеством запросов R, функцией переходов T) безопасна тогда и только тогда, когда состояние v0 безопасно и функция переходов T такова, что для v V, достижимого из состояния v0 после выполнения ко-нечной последовательности запросов из R (таких что T(v,r)=v*, где v=(F,M) – исходное состояние, v*=(F*,M *) – состояние после перехода), для s S, o O выполняются следующие условия:
1. Если чтениеM*[s,o] и чтениеM[s,o], то F*(s)F*(o);
2. Если чтениеM[s,o] и F*(s)<F*(o), то чтениеM*[s,o];
3. Если записьM*[s,o] и записьM[s,o], то F*(o)F*(s);
4. Если записьM[s,o] и F*(o)<F*(s), то записьM*[s,o].
Кратко рассмотрим доказательство теоремы.
Необходимость. Если система безопасна,то начальное состояние v0 безопасно по определению. Пусть существует некоторое состояние v*, достижимое из v0 путем выполнения конечного числа запросов из R и полученное в результате перехода из безопасного состояния v: T(v,r)=v*. Тогда, если при таком переходе нарушено хотя бы одно из первых двух ограничений, накладываемых теоремой на функцию T, то состояние v* не будет безопасным по чтению. Если функция T нарушает одно из двух последних условий теоремы, то состояние v* не будет безопасным по записи. Таким образом, при нарушении условий теоремы система становится небезопасной. Необходимость доказана.
Достаточность. Используем метод доказательства от противного. Пусть система небезопасна. В этом случае, либо начальное со-стояние v0 небезопасно, что противоречит условиям теоремы, либо должно существовать небезопасное состояние v*, достижимое из
безопасного начального состояния v0 путем выполнения конечного числа запросов из R. В этом случае, обязательно будет иметь место переход T(v,r)=v*, при котором состояние v – безопасно, а v* - нет. Однако четыре условия теоремы делают такой переход невозможным.
Несмотря на достоинства модели Белла–Ла-Падула, при ее строгой реализации в реальных АС возникает ряд проблем.
1. Завышение уровня секретности,связанное с одноуровневойприродой объектов и правилом безопасности по записи. Если субъект
с высоким уровнем доступа хочет записать что-то в объект с низким уровнем секретности, то сначала приходится повысить уровень секретности объекта, а потом осуществлять запись. Таким образом, даже один параграф, добавленный в большой документ субъектом с высоким уровнем доступа, повышает уровень секретности всего этого документа. Если по ходу работы изменения в документ вносят субъекты со все более высоким уровнем доступа, уровень секретности доку-мента также постоянно растет.
2. Запись вслепую. Эта проблема возникает,когда субъект производит операцию записи в объект с более высоким уровнем безопасности, чем его собственный. В этом случае, после завершения опера-ции записи, субъект не сможет проверить правильность выполнения записи при помощи контрольного чтения, так как ему это запрещено в соответствии с правилом безопасности по чтению.
3. Проблема удаленного чтения-записи. В распределенных системах при удаленном чтении файла создаются два потока: от субъекта к объекту (запросы на чтение, подтверждения, прочая служебная ин-формация) и от объекта к субъекту (сами запрашиваемые данные). При этом, например, если F(s)>F(o), то первый поток будет противоречить свойству безопасности по записи. На практике для решения этой проблемы надо разделять служебные потоки (запросы, подтверждения) и собственно передачу информации.
4. Доверенные субъекты. Модель Белла–Ла-Падула не учитывает,
что в реальной системе, как правило, существуют субъекты, действующие в интересах администратора, а также системные процессы, например, драйверы. Жесткое соблюдение правил запрета чтения с верхнего уровня и запрета записи на нижний уровень в ряде случаев делает невозможной работу подобных процессов. Соответственно, их также приходится выделять.