Рассмотрим определенную систему, вывод которой пользователю u определен
функцией out(u, hist.read(u)), где hist.read(u) — история ввода системы(traces), чей
последний ввод был read(u), команда чтения, исполненная пользователем u. Безопасность
определена в терминах очищения (purge) историй ввода, где purge удаляет команды,
исполненные пользователем, чей уровень безопасности не доминирует над уровнем
безопасности u.
Определение: Определим сl, функцию от пользователей к уровням безопасности, такую
что cl(u) — степень доверия к u. Определим purge, функцию от usersrtraces в traces такую,
что:
— purge(u,<>) =<>, где <> — пустая история ввода
— purge(u, hist.command(w)) = purge(u, hist).command(w), если command(w) — ввод,
исполненный пользователем w; cl(u)≥cl(w)
— purge(u, hist.command(w)) = purge(u, hist), если command(w) — ввод, исполненный
пользователем w; cl(u)<cl(w)
Система удовлетворяет невмешательству, если и только если, для всех пользователей
u, всех историй Т и всех комманд вывода с, out(u,T.c(u))=out(u,purge(u,T).c(u)).
Рассмотрим вероятностную формулировку модели невмешательства. При этом
требование невмешательства
формулируется так:
p(low-out
t
|high-in
s
& low-in
s
)=p(low-out
t
|low-in
s
), где x
s
обозначает последовательность
значений х для всех моментов времени, предшествующих t.
При сравнении данной модели с БЛМ можно отметить:
1. БЛМ слабее, чем модель невмешательства, т.к. модель невмешательства запрещает
многие скрытые каналы, которые остаются при реализации примитивной БЛМ.
2. Модель невмешательства слабее, чем БЛМ в том, что она разрешает низко уровневым
пользователям копировать один высокоуровневый файл в другой высокоуровневый, что
БЛМ запретит, т.к. при этом нарушается ее безопасность по чтению.
В обоих случаях модель невмешательства ближе к интуитивному понятию
безопасности, чем БЛМ.