logo
ТОКБ

83. Математические методы анализа политики безопасности. Модели j.Goguen, j.Meseguer (g-m).

Модели G-M - автоматные модели безопасных систем. Начнем с простейшего случая системы с "фиксированной" защитой. Пусть V - множество состояний системы (V - конечное и определяется программами, данными, сообщениями и пр.), С - множество команд, которые могут вызвать изменения состояния (также конечное множество), S - множество пользователей (конечное множество). Смена состояний определяется функцией:

do:V S СV.

Некоторые действия пользователей могут не разрешаться системой. Вся информация о том, что разрешено ("возможности" пользователей) пользователям сведена в с-таблицу t. В рассматриваемом случае "возможности" в с-таблице t совпадают с матрицей доступа. Если пользователь не может осуществить некоторую команду с, то

do (v, S, c) = v.

Предположим, что для каждого пользователя S и состояния v определено, что "выдается" этому пользователю (т.е., что он видит) на выходе системы. Выход определяется функцией

out: V SOut,

где Out - множество всех возможных выходов (экранов, листингов и т.д.).

Мы говорим о выходе для пользователя S, игнорируя возможности S подсмотреть другие выходы.

Таким образом получили определение некоторого класса автоматов, которые будут встречаться далее.

Определение. Автомат М состоит из множеств:

S - называемых пользователями;

V - называемых состояниями;

С - называемых командами;

Out - называемых выходами;

и функций:

и начального состояния v0.

Системы с изменяющимися "возможностями" защиты определяют следующими образами.

Пусть Capt - множество всех таблиц "возможностей", СС - множество с-команд (команд управления "возможностями"). Их эффект описывается функцией:

cdo: Capt S CCCapt.

При отсутствии у пользователя S права на с-команду положим cdo(t, S, c)=t. Пусть VC - множество команд, изменяющих состояние. Теперь можем определить С-автомат, который лежит в основе дальнейшего.

Определение. С-автомат М определяется множествами:

S - "пользователи";

V - "состояния";

VC - "команды состояния";

Out - "выходы";

Capt - "с-таблицы";

СС - "с-команды",

и функциями:

Будем считать

C=CCVC.

То, что мы определили на языке теории автоматов, называется последовательным соединением автоматов .

Определение. Подмножества множества команд С называются возможностями

Ab=2c.

Если дан С-автомат М, мы можем построить функцию переходов всей системы в множестве состояний VCapt:

cvdo: V CaptSСVCapt,

где

cvdo(v, t, S, с) = (do(v, t, S, с), t), если cVC,

cvdo(v, t, S, с) = (v, cdo(t, S, c)), если cCC.

Стандартно доопределяется функция cvdo на конечных последовательностях входов

cvdo: VCapt(SС)*VCapt

следующим образом:

cvdo(v, t, Nil) = (v, t),

если входная последовательность пустая;

cvdo(v, t, W(S, c))=cvdo(cvdo(v, t, W), S, c)),

где W(S, С) - входное слово, кончающееся на (S,С) и начинающееся подсловом W.

Определение. Если W входное слово, то[[W]] = (..., (vi ti),...), где последовательность состоянии вычисляется в соответствии с определенной выше функцией переходов под воздействием входной последовательности W.

Введем понятие информационного влияния одной группы на другую, смысл которого состоит в том, что используя некоторые возможности одна группа пользователей не влияет на то, что видит каждый пользователь другой группы. Для этого определим [[W]]s - выход для S при выполнении входного слова W С -автомата М:

[[W]]s=out([[W]], S),

где

out([[W]]s, S) = (... out(v, t, S)...),

[[W]] = (..., (vi, ti),...).

Пусть GS, AC, W(SC)*.

Определение. Pg(W) - подпоследовательность W, получающаяся выбрасыванием всех пар (S, с) при SG, Pa(W) - подпоследовательность W, получающаяся выбрасыванием из W всех пар (S, с) при cA, PGA(W) -подпоследовательность W, получающаяся выбрасыванием пар (S, с), SG и сА.

Пример 1. G={S, Р}, А={с1, с2}.

PGA((S', с), (S, сз), (S, с2), (Р', с))= (S', с), (S, с3), (Р', с). Определим несколько вариантов понятия независимости .

Пусть GS, GS.

Определение. G информационно не влияет на G' (обозначается G: | G'), если W(SС)* и SG' [[W]]s = [[PA(W)]]s

Аналогично определяется невлияние для возможностей А (или группы G и возможностей А).

Определение. А информационно не влияет на G (обозначается А: | G) , если W(SС)* и SG [[W]]s= [[PA(W)]]s

Определение. Пользователи G, используя возможности А, информационно не влияют на G' (обозначается A.G: | G'), если W( SС)* и SG' [[W]]s=[[PA(W)]]s.

Пример 2. Если А: | {S}, то команды из А не влияют на выход, выданный S. Если A={create, write, modify, deleted} для файла F, то А: | {S} означает, что информация читаемая S в F не может измениться любой из команд в А. Если F не существовал, то для S будет всегда выдаваться информация, что F не существует.

Определение. Политика безопасности в модели G-М - это набор утверждений о невлиянии.

Пример 3. MLS политика. Пусть L - линейно упорядоченное множество уровней секретности и задано отображение

level: S->L.

Определим: xL

S[-, x] = {SeS | level(S)<x )

S[x,+] = {SeS| level(S)>x}.

Определение. MLS политика в модели G-M определяется следующим набором утверждений о невлиянии:

xL, x'L, х>х',

S[x, +]:| S[ -, x'].

Говорят, что GS невидимо для остальных пользователей, если G:| , где=S\G.

Используя это понятие легко обобщить определение MLS политики на случай, когда L - решетка.

Определение. MLS политика в модели G-M определяется следующим набором утверждений о невлиянии:

xL S\S[-, х] - невидимо для остальных пользователей.

Пример 4. Одним из важнейших примеров политики безопасности, легко выражаемой в G-M модели, является режим изоляции.

Определение. Группа G называется изолированной,если G:| и:| G.

Система полностью изолирована, если каждый пользователь изолирован.

Пример 5. Контроль канала. В модели G-M канал определяется как набор команд АС .

Пусть G, G'S.

Определение. G и G' могут связываться только через канал А тогда и только тогда, когда

и

Пример 6. Информационный поток Пусть а, b, с, d -процессы и А1, A2, Аз - каналы такие, что а, b, с, d могут связываться только по схеме

Эта картинка описывается следующими утверждениями о невлиянии:

{b, c, d}: | {a} A1, {a}: | {b, c, d}

{c, d}: | {b} A2, {b}: | {c}

{c}: | {d} A3, {b}: | {d}

{d} : | {c}