АЛГОРИТМ ПОИСКА МОСТОВ ТИПА t* И t* В ГРАФЕ ДОСТУПОВ ДЛЯ ДИСКРЕЦИОННОЙ МОДЕЛИ БЕЗОПАСНОСТИ TAKE-GRANT
Д.М. Бречка
В статье приводится алгоритм поиска мостов типа t* и t* в графе доступов для дискреционной модели безопасности Take-Grant, основанный на классическом алгоритме поиска в ширину.
Введение
Модель Take-Grant является одной из первых и наиболее глубоко проработанных в математическом плане дискреционных моделей безопасности [1-3]. Одним из наиболее существенных достижений классической модели Take-Grant можно считать выработанные условия, при соблюдении которых компьютерная система считается защищённой. Эти условия можно найти в двух теоремах об истинности предиката «возможен доступ», сформулированных и доказанных для модели Take-Grant [2,3]. В классической модели способ проверки выполнимости этих условий никак не оговаривается. Наиболее простым способом проверки, в концептуальном плане, можно считать полный перебор вершин и дуг графа доступов. Однако, как известно, алгоритм перебора имеет экспоненциальную вычислительную сложность, это означает, что выполняться такой алгоритм на обычной ЭВМ будет слишком медленно.
В более поздних работах, посвящённых модели Take-Grant, предлагаются альтернативные способы проверки защищённости компьютерной системы, не основывающиеся на предложенных в классической модели условиях. В работах [4,5] предлагаются алгоритмы, имеющие полиномиальную сложность 0(N3).
Данная статья является продолжением работ [6,7], в которых описываются способы проверки безопасности компьютерной системы, основанные на тех условиях, что сформулированы в классической модели Take-Grant. В статье описывается полиномиальный алгоритм для поиска мостов типа t* и t* в графе доступов. Предлагаемый алгоритм основан на классическом алгоритме поиска в ширину [8].
Copyright ©2011 Д.М. Бречка
Омский государственный университет им. Ф.М. Достоевского E-mail: [email protected]
1. Начальные условия и обозначения
Исходя из условий, сформулированных в модели Take-Grant, для того чтобы предикат «возможен доступ» был истинен в произвольном графе, необходимо, чтобы в этом графе были известны острова (tg-связные подграфы из вершин-субъектов), мосты, начальные и конечные пролёты мостов (пути в графе заданного вида). В данной статье ограничимся поиском мостов типа Гиг- путей в графе, каждая дуга которых содержит метку t или t соответственно.
Пусть в графе уже известны острова, способ их нахождения приводится в [6,7]. Нам нужно найти мост между двумя островами Д и /2. Введём ряд обозначений. Будем обозначать дугу, содержащую метку t , между вершинами графа е» и ej через t (ei}ej). Начальную вершину моста будем обозначать через s, а конечную — через /. Множество всех вершин-объектов исходного графа обозначим через О.
2. Мост t*
Рассмотрим поиск моста типа . Для начала опишем алгоритм неформально. В начале работы алгоритм разбивает все множество вершин-объектов исходного графа на два подмножества Ог и Oj. В множество Ог попадают те вершины, до которых существует мост заданного вида, все остальные вершины заносятся в множество О*. В самом начале работы алгоритма в множестве Ог находится только одна вершина — s (начальная вершина). Далее алгоритм просматривает все дуги графа, инцидентные вершинам из множества Ог, и если обнаруживается дуга вида t , соединяющая вершину ег из Ог с вершиной е* из
Oi, то е» удаляется из Ог и заносится в Ог. После просмотра всех дуг графа в Ог может быть занесено сразу несколько вершин, то есть мощность Ог увеличится на некоторое число, а мощность Oi уменьшится на это же число. Если вершина / попадает в множество Ог, то это значит, что в графе существует путь заданного вида и алгоритм заканчивает работу. Иначе, процедура повторяется для измеренных Ог и Ог. Однако возможна ситуация, когда после просмотра всех дуг в Ог не будет добавлено ни одной вершины. Это возможно, когда между вершинами из Ог и вершинами из Ог не существует дуг вида t . Чтобы отловить данную ситуацию, нужно проверить мощности множеств, которыми мы оперируем: если мощности множеств не изменились, значит, необходимо закончить работу алгоритма с выдачей сообщения о том, что моста, заданного между рассматриваемыми островами, не существует.
Формально алгоритм будет состоять из трёх основных этапов. Перед началом работы алгоритма разобьём множество О на два подмножества Ог и Ог, причём О = Or U Oi.
Этап 1. Вершина s заносится в множество Ог, все остальные вершины заносятся в Ог.
Этап 2. Просматриваются все дуги графа, началом которых являются вершины из Ог, если существует t (er,ei), то ßi заносится в множество Ог и
удаляется из Ог. Здесь ег € Ог, ег € Ог. Когда все дуги, инцидентные вершинам из Ог множества, будут просмотрены, переходим на третий этап.
Этап 3. Если после выполнения этапа 2 вершина / оказалась во множестве Ог, то алгоритм заканчивает свою работу: мост заданного вида в графе существует. Если после выполнения этапа 2 мощности множеств Ог и Ог не изменились, алгоритм также заканчивает работу: моста заданного вида в графе не существует. В противном случае — возвращаемся на этап 2.
Замечание 1. В зависимости от задачи можно предусмотреть разные реализации алгоритма. Например, если требуется лишь показать наличие или отсутствие моста между указанными вершинами, то приведённого выше описания будет достаточно — алгоритм выдаёт сообщение о результатах своей работы. Если же требуется найти сам мост, то необходимо дополнительно каким-либо образом поддерживать множество отмеченных вершин и дуг. Например, после каждого шага второго этапа строить граф путей (который не обязательно будет деревом) или определённым образом окрашивать выбранные вершины и дуги.
Проведём оценку работы предложенного алгоритма. Пусть исходный граф содержит N вершин. Так как граф ориентирован, то в случае его полносвязно-сти количество дуг в нем будет равно — 1). Количество повторений этапа 2 можно ограничить количеством вершин графа, так как в случае если после каждого выполнения этапа в множество Ог будет заноситься по одной вершине, то мост в графе будет найден за N шагов. В общем случае в множество Ог за каждое выполнение этапа 2 будет заноситься более одной вершины, то есть мост будет найден меньше чем за N шагов. Если же моста не существует, то на каком-то шаге не найдётся дуги нужного вида и алгоритм ничего не занесёт в множество Ог, то есть мощность множества останется неизменной, тогда алгоритм прервётся с выдачей соответствующего сообщения. Таким образом, сложность работы алгоритма можно оценить как или 0(Ы3).
Теорема 1. Приведённый выше алгоритм корректно находит мост типа
Р.
Доказательство. Во-первых нужно доказать, что алгоритм вообще закончит свою работу (сходимость алгоритма), во-вторых — что алгоритм найдёт мост нужного вида (корректность алгоритма).
Сходимость можно показать исходя из того, что множество вершин-объектов исходного графа конечно. Алгоритм разбивает множество О на Oi и Ог, причём О = Ог и Ог. На каждом шаге второго этапа алгоритма либо какая-то вершина удаляется из Ог и заносится в Ог, при этом мощности обоих множеств соответственно изменяются, либо перемещения вершин не происходит — мощности множеств не меняются, и алгоритм заканчивает работу.
Пусть |О| = М. Возможно три варианта развития событий.
1. Все вершины из Ог будут перенесены в Ог, тогда на следующем шаге
алгоритм закончит свою работу, так как мощности множеств менять будет
уже невозможно. Всего алгоритм совершит М + 1 шагов.
2. На шаге к < М алгоритм обнаружит мост. Алгоритм закончит работу, при этом совершит к шагов.
3. На шаге к < М алгоритм обнаружит, что мощности множеств Ог и Ог не изменились. Алгоритм закончит работу, при этом совершит к шагов.
Таким образом, алгоритм в любом случае закончит работу независимо от того, присутствуют в графе мосты или нет.
Корректность алгоритма покажем индукцией по длине моста (/?.). В качестве базы индукции мы не можем выбрать п = 1, так как это бы означало, что начальная и конечная вершина моста соединены дугой Ь и, следовательно, принадлежат одному острову. Поэтому в качестве базы выберем п = 2 и покажем, что алгоритм найдёт такой мост.
Ситуация, когда в графе присутствует мост длины 2, изображена на рисунке 1. С вершиной ^ связана как минимум одна дуга вида Ь , соединяющая вершины ^ и х. С вершиной х, в свою очередь, связана как минимум одна дуга вида I , соединяющая х и /.
Вершина в заносится в множество От на первом этапе алгоритма. На втором этапе, при проверке всех дуг вида Ь , инцидентных вершинам из множества Ог, будет обнаружена вершина х. Эта вершина будет занесена в Ог и удалена из О*. Однако мост еще не будет найден. Он обнаружится только после повторного выполнения второго этапа, когда вновь будут просматриваться дуги вида Ь , инцидентные вершинам из множества Ог, т.е. будет обнаружена дуга, связывающая х и /.
Рис. 1. Мост длины 2
В качестве предположения индукции выберем утверждение, что для длины моста п < к, где к > 2 алгоритм находит мост правильно.
Шаг индукции: пусть длина моста равна к, алгоритм выполнил к — 2й шаг, и на этом шаге в множество От были занесены вершины Х1, Х2, ■ ■ - хт (рис. 2). Согласно предположению индукции, до каждой из вершин мост найден правильно. Так как длина моста равна к, это означает, что как минимум между ОДНОЙ ИЗ Ху и / существуют дуги I {х^,у) и I (у,/), являющиеся последними дугами искомого моста.
Применим алгоритм для каждой из х^, как показано для базы индукции, алгоритм способен правильно найти мост, состоящий их двух дуг.
Рис. 2. Шаг индукции
3. Мост і*
Для моста типа і* очевидно можно использовать описанный^выше алгоритм, если на втором этапе вместо дуг типа і* искать дуги типа Г. При этом все сказанное выше будет справедливо и для моста Г , в том числе трудоёмкость алгоритма также будет оцениваться как 0(ІУ3).
Заключение
Возможность проверки предиката «возможен доступ» на истинность позволяет установить наличие или отсутствие каналов утечки информации между двумя выделенными субъектами компьютерной системы. Для того чтобы
совершить проверку истинности данного предиката, необходимо также предусмотреть способы поиска мостов типа t*~$t* и t* Vt*, а также начального и конечного пролётов моста. В данной статье способы поиска этих структур не рассматриваются. Однако разработка полиномиальных алгоритмов поиска указанных структур может лечь в основу программных средств анализа безопасности информационных систем с целью выявления каналов утечки информации.
Литература
1. Lipton R.J., Snayder L. A linear time algorithm for deciding subject security // Journal of ACM (Addison-Wesley). N.3. 1977. P.455-464
2. Теоретические основы компьютерной безопасности: Учебное пособие для вузов / Девянин П.Н. и др. М. : Радио и связь, 2001. 192 с.
3. Гайдамакин H.A. Разграничение доступа к информации в компьютерных системах. Е. : Издательство Уральского Университета, 2003. 328 с.
4. Frank J., Bishop М. Extending the Take-Grant protection system. Technical report. Department of Computer science, University of California in Devis, 1996. 14 p.
5. Bishop M. Theft of information in the Take-Grant protection model // Computer security 3 (4). 1994. P.283-309.
6. Бречка Д.М. Алгоритмы анализа безопасности состояний компьютерной системы для модели Take-Grant // Математические структуры и моделирование. 2009. №20. С.160-172.
7. Бречка Д.М. Алгоритмы проверки безопасности состояний компьютерной системы в модели Take-Grant // Проблемы обработки и защиты информации. Книга 1. Модели политик безопасности компьютерных систем. Коллективная монография / Под общей редакцией С.В. Белима. Омск : ООО «Полиграфический центр КАН», 2010.
8. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. М. : МЦН-МО, 2000. 960 с.