logo
ТОКБ

80. Математические методы анализа политики безопасности. Модель "take-grant"

Будем по-прежнему описывать функционирование системы при помощи графов доступов Gt и траекторий в фазовом пространстве ={G}. Единственное дополнение - правила преобразования графов. Будем считать, что множество доступов R={r, w, c} , где r - читать, w - писать, с - вызывать. Допускается,что субъект X может иметь права R на доступ к объекту Y, эти права записываются в матрице контроля доступов. Кроме этих прав мы введем еще два: право take (t) и право grant (g), которые также записываются в матрицу контроля доступов субъекта к объектам. Можно считать, что эти права определяют возможности преобразования одних графов состояний в другие. Преобразование состояний, то есть преобразование графов доступов, проводятся при помощи команд. Существует 4 вида команд, по которым один граф доступа преобразуется в другой.

1. Take. Пусть S - субъект, обладающий правом t к объекту X и R некоторое право доступа объекта X к объекту Y. Тогда возможна команда "S take  forY from X". В результате выполнения этой команды в множество прав доступа субъекта S к объекту Y добавляется право . Графически это означает, что, если в исходном графе доступов G был подграф

то в новом состоянии G', построенном по этой команде t, будет подграф

2. Grant. Пусть субъект S обладает правом g к объекту X и правом R к объекту Y. Тогда возможна команда "S grant  for Y to X". В результате выполнения этой команды граф доступов G преобразуется в новый граф G', который отличается от G добавленной дугой (Х Y). Графически это означает, что если в исходном графе G был подграф

то в новом состоянии G' будет подграф

3. Create. Пусть S - субъект, R. Команда "S create P for new object X" создает в графе новую вершину X и определяет Р как права доступов S к X. То есть по сравнению с графом G в новом состоянии G' добавляется подграф вида

4. Remove. Пусть S - субъект и X - объект, R. Команда "S remove Р for X" исключает права доступа Р из прав субъекта S к объекту X. Графически преобразования графа доступа G в новое состояние G' в результате этой команды можно изобразить следующим образом:

в G в G’

Далее будем обозначать G|-cG', если команда с преобразует G в G', а также G |- G', если существует команда с, что G|-G'. Будем понимать под безопасностью возможность или невозможность произвольной фиксированной вершине Р получить доступ R к произвольной фиксированной вершине X путем преобразования текущего графа G некоторой последовательностью команд в граф G', где указанный доступ разрешен.

Определение. В графе доступов G вершины Р и S называются tg-связными, если существует путь в G, соединяющий Р и S, безотносительно ориентации дуг, но такой, что каждое ребро этого пути имеет метку, включающую t или g.

Теорема 1. Субъект Р может получить доступа к, объекту X, если существует субъект S, имеющий доступ а, к вершине X такой, что субъекты Р и S связаны произвольно ориентированной дугой, содержащей хотя бы одно из прав t или g

Доказательство. Возможны 4 случая.

1. В G есть подграф

Тогда имеем право применить команду "Р take  for X from S" и получим в G' подграф

2. В G есть подграф

Тогда имеем право применить команду "S grant а for X to Р" и получим в G' подграф

3. В графе G есть подграф

Тогда применяем следующую последовательность разрешенных команд для преобразования графа G:"Р create tg for new object Y"

"Р grant g for Y to S"

"S grant  for X to Y"

"Р takes  for X from Y"

4. В графе G есть подграф

Тогда применяем следующую последовательность разрешенных команд для преобразования графа G в граф G' с дугой (Р X). "Р create tg for new object Y"

Далее будем записывать преобразования графов коротко

Теорема доказана.

Замечание. Метка с правом а на дуге в рассматриваемых графах не означает, что не может быть других прав. Это сделано для удобства.

Теорема. 2. Пусть в системе все объекты являются субъектами. Тогда субъект Р может получить доступ а к субъекту X тогда и только тогда, когда выполняются условия:

I. Существует субъект S такой, что в текущем графеG есть дуга.

2. S tg-связна с Р.

Доказательство. 1. Достаточность.

Доказательство будем вести индукцией по длине n tg-пути, соединяющего S и Р. При n=l утверждение доказано в теореме 1. Пусть длина tg-пути в G, соединяющего S и Р равна n>1. Пусть также есть вершина Q на этом tg-пути, которая смежна с S. Тогда по теореме 1 можно перейти к графу G', в котором . Ясно, что проводимые при этом команды не уничтожают tg-пути, ведущего из Р в Q. При этом длина пути из Р в Q равна (n-1), что позволяет применить предположение индукции. Тогда возможен переход от G' к G", в котором есть дуга . Сквозной переход от G к G’ доказывает достаточность.

2. Необходимость.

Пусть для пары вершин Р и X в графе G нет дуги , а после выполнения некоторой последовательности команд в графе G' есть дуга. Если в G нет ни одной вершиныS, для которой существует дуга , то для любой команды с преобразования графа G в графе G’ полученном G|-cG’ при помощи с, также нет ни одной вершины S, из которой выходит дуга . Это следует из просмотра всех четырех допустимых команд. Тогда для любой последовательности команд в графе G’, полученном из G применением этой последовательности команд, также нет какой-нибудь вершины S с дугой. Тогда такой вершины нет в графе G', что противоречит условию. Следовательно, в графе G есть S такая, что.

Пусть G' такой граф, когда впервые появляется дуга . Пусть G’ такой граф, из которого по некоторой команде получился G'. Тогда просмотр команд позволяет заключить, что дугавозникла применением к некоторому, команды take или grant. Это значит, что в графе G’ от Р к S существует tg-путь длины 1.

Пусть в графе G вершины Р и S не связаны tg-путем. Тогда при любой команде с в графе G’, полученном из G командой с G|-cG’ , также нет tg-пути из Р в S. В самом деле, возьмем take

Если в р не было take или grant, то новая дуга не увеличивает количество дуг с правом take или grant в новом графе, поэтому новый tg-путь возникнуть не может. Если в р есть t или g, то между V и Z существовал tg-путь и новая дуга не увеличила числа tg-связных вершин и поэтому не могла связать Р и S. Аналогично, если Y и Z были связаны дугой grant. Команда create также не может связать существующие вершины Р и S tg-путем.

Значит при любой последовательности команд c1,...cn, если в G нет tg-пути из Р в S, то их нет в G’ полученном из G G|-c1,...cnG’. Но это противоречит сделанному выше заключению о наличии такого пути длины 1 в графе G’. Теорема доказана.