ПРИКЛАДНАЯ ДИСКРЕТНАЯ МАТЕМАТИКА
2009 Математические основы компьютерной безопасности №1(3)
УДК 681.322
АНАЛИЗ БЕЗОПАСНОСТИ ИНФОРМАЦИОННЫХ ПОТОКОВ ПО ПАМЯТИ В КОМПЬЮТЕРНЫХ СИСТЕМАХ С ФУНКЦИОНАЛЬНО И ПАРАМЕТРИЧЕСКИ АССОЦИИРОВАННЫМИ СУЩНОСТЯМИ
Д. Н. Колегов Томский государственный университет, г. Томск E-mail: [email protected]
В статье вводится определение сущностей, параметрически-ассоциированных с субъектами компьютерных систем. Строится расширение ДП-модели, охватывающее такие сущности.
Ключевые слова: компьютерная безопасность, математические модели безопасности, дискреционные модели, анализ безопасности, права доступа, информационные потоки.
Введение
Одной из современных моделей анализа безопасности компьютерных систем (КС) с дискреционным управлением доступа является ДП-модель с ее расширениями [1]. Дальнейшее изложение будет вестись на основе работы [1] с учетом всех определений, обозначений и теорем в ней. Сущность называется функционально-ассоциированной с субъектом, если она определяет вид преобразования данных, выполняемого этим субъектом. В ДП-моделях с функционально-ассоциированными с субъектами сущностями (ФАС ДП-моделях) анализируется ситуация, когда реализация информационного потока по памяти к сущности, функционально-ассоциированной с субъектом, приводит к изменению вида преобразования данных, реализуемого этим субъектом.
В то же время в современных КС возможна реализация информационного потока по памяти от сущности, позволяющая получить права доступа различных субъектов, в том числе и доверенных. Такие сущности являются параметрически-ассоциироваными с субъектами КС. Например, получение субъектом-нарушителем доступа на чтение к конфигурационному файлу или реестру, в котором хранится пароль или хэш-значение пароля субъекта КС, позволяет субъекту-нарушителю получить право доступа владения к последнему субъекту. Кроме того, в настоящее время дополнительно к классическим угрозам нарушения конфиденциальности, целостности и доступности информации рассматривают угрозу раскрытия параметров КС — возможность идентификации параметров, функций безопасности и свойств КС, знание которых позволяет реализовать нарушение безопасности [2]. Например, чтение сообщения, выдаваемого субъектом-процессом при подключении к нему, позволяет нарушителю идентифицировать программное обеспечение (ПО), реализующее данный субъект-процесс КС, и получить права доступа последнего, используя известные уязвимости в ПО.
Таким образом, для обеспечения возможности анализа получения субъектом права доступа владения к другому субъекту с использованием информационного потока от сущности, параметрически-ассоциированной с последним, следует построить расширение ФАС ДП-модели, охватывающее информационные потоки указанного вида и отражающее возможность получения субъектом права доступа владения к другому субъекту в современных КС. Решение этой задачи и является целью данной работы.
Для этого вводится определение параметрически-ассоциированных сущностей с субъектами в КС, на их основе строится ДП-модель с функционально- и параметрически-ассоциированными с субъектами сущностями, которая является требуемым расширением ФАС ДП-модели, и в рамках этой модели формулируются и обосновываются необходимые и достаточные условия получения недоверенным субъектом права доступа владения к другому субъекту без кооперации с ним.
1. ДП-модель с функционально- и параметрически-ассоциированными
с субъектами сущностями
Определение 1. Пусть G = (S,E,R U A U F, H) — состояние КС S(G*,OP). Сущность e E E будем называть параметрически-ассоциированной с субъектом s Е S в состоянии G, если чтение данных в сущности e субъектом z Е S позволяет ему получить право владения к субъекту s в этом или последующих состояниях КС.
Замечание 1. Сущность e Е E, параметрически-ассоциированная с субъектом s Е S, содержит аргументы операций преобразования данных, выполняемого субъектом s в этом или последующих состояниях КС.
Замечание 2. В множество сущностей, параметрически-ассоциированных с субъектом s Е S, могут входить сущности, на которые субъект s не имеет прав доступа. Например, сущность-пароль, параметрически-ассоциированная с недоверенным субъектом-пользователем в ОС семейства UNIX, хранится в файле /etc/shadow, правами доступа к которому могут обладать только доверенные субъекты-процессы данной ОС [3]. Кроме того, возможно создание субъектов ОС, которые препятствовали бы доступу субъектов к некоторым критичным сущностям КС, несмотря на наличие необходимых прав доступа данных субъектов к этим сущностям [4].
Замечание 3. Существуют сущности, параметрически-ассоциированные с субъектом, которые не являются функционально-ассоциированными с ним. Примером такой сущности является раздел реестра ОС семейства Windows, содержащий информацию об установленных обновлениях ОС узла. Также существуют сущности, параметрически-ассоциированные с субъектом, которые являются функциональноассоциированными с ним. Так, зная идентификатор сессии пользователя web-приложения, возможно получить его права доступа; с другой стороны, удаление данного идентификатора приводит к закрытию сессии пользователя.
Наличие у субъекта данных о параметрах функционирования другого субъекта КС может позволить получить первому субъекту право доступа владения ко второму субъекту. При этом первому субъекту необходимо иметь возможность реализовать информационный поток по памяти к некоторому субъекту, позволяющему получить права доступа ко второму субъекту. Например, при получении субъектом-нарушителем пароля доверенного субъекта первому необходимо иметь возможность записи пароля в сущность-интерфейс КС. С учетом того, что доверенные субъекты не участвуют в реализации информационных потоков по времени, и того, что в современных КС, как правило, реализация информационного потока по времени от сущности, параметрически-ассоциированной с субъектом, не приводит к получению другим субъектом права доступа владения к первому, будем считать, что в КС выполняется следующее предположение.
Предположение 1. Информационный поток по времени от сущности, параметрически-ассоциированной с субъектом, не приводит к получению другим субъ-
ектом права доступа владения к первому субъекту. Если субъект реализовал информационный поток по памяти от сущности, параметрически-ассоциированной с другим субъектом, к себе, то первый субъект получает право доступа владения ко второму субъекту. Множество сущностей, параметрически-ассоциированных с субъектом, не изменяется в процессе функционирования КС.
Через ]s[c E обозначим множество всех сущностей, параметрически-ассоциирован-ных с субъектом s. При этом будем считать, что s є]s[.
В соответствии с данным предположением модифицируем определение ФАС ДП-модели для возможности анализа условий получения субъектом права доступа владения к другому субъекту с использованием реализации информационного потока по памяти от сущности, параметрически-ассоциированной с последним субъектом. Модифицированную ФАС ДП-модель будем называть ДП-моделью с функционально-и параметрически-ассоциированными с субъектами сущностями, или ФПАС ДП-моделью. Модификация состоит в добавлении к правилам преобразования состояний ФАС ДП-модели правила know(x,y, z), определенного в таблице: аргументом операции является состояние G, значением — состояние G', параметрами — сущности x, y, z.
Условия и результаты применения правила know(x, y, z)
ФПАС ДП-модели
Правило Исходное состояние G = (S,E,R U A U F,H) Результирующее состояние G' = (S', E', R' U A' U F',H')
know(x, y, z) x,y Є S,z Є E,z Є ]y[ и или x = z, или (z, x, writem) Є F S' = S, E' = E, A' = A, H' = H,F' = F,R' = R U (x, y, ownr)
Замечание 4. Правило know(x,y,z) является монотонным, то есть применение данного правила не приводит к удалению ребер или вершин из графа доступа.
Замечание 5. Как и правило control (x, y, z) ФАС ДП-модели, правило know(x,y, z) отражает возможность одним субъектом получить право доступа владения к другому субъекту путем реализации информационного потока.
Рассмотрим условия получения недоверенным субъектом права доступа владения ownr к другому субъекту без кооперации с ним для случая, когда в КС T,(G*,OP) используются правила преобразования состояний know(x,y,z) и control(x,y,z).
2. Анализ условий получения субъектом права доступа владения
к другому субъекту Определение 2. Траекторию функционирования КС T.(G*, OP) будем называть траекторией без кооперации доверенных и недоверенных субъектов для передачи прав доступа, если при ее реализации используются монотонные правила преобразования состояний, и доверенные субъекты:
— не дают недоверенным субъектам права доступа к сущностям;
— не берут у недоверенных субъектов права доступа к сущностям;
— используя информационные потоки по памяти к сущностям, не получают право доступа владения к субъектам;
— используя информационные потоки по памяти от сущностей, не получают право доступа владения к субъектам.
Таким образом, в КС T.(G*,OP) на траекториях без кооперации доверенных и недоверенных субъектов для передачи прав доступа доверенные субъекты:
— не инициируют выполнения следующих правил преобразования состояний: take_right(ar,u,x,e), grant_right(ar,u,x,e), control(u, y, z), know(u,y, z);
— доверенные субъекты могут выполнять монотонные правила преобразования состояний: own_take(ar,u,e), create_entity(u,e,e'), create_subject(u,e,e'), rename_entity(u,e,e'), access_read(u,e), access_write(u,e), access_append(u,e), find(u,e,e'), post(u, e, e'), pass(u, e, e') с условиями и результатами применения в соответствии с правилами преобразования БК ДП-модели,
где u Є Ls — доверенный субъект, x Є Ns — недоверенный субъект, y — субъект, что z є]у[ или z Є [y], z, e, e' — сущности, ar Є Rr — право доступа.
Определение 3. Траекторию функционирования КС T.(G*, OP) будем называть траекторией без кооперации доверенных и недоверенных субъектов для передачи прав доступа и реализации информационных потоков, если она является траекторией без кооперации доверенных и недоверенных субъектов для передачи прав доступа, и при ее реализации используются правила преобразования состояний:
— take_right(ar,x,y,z), grant_right(ar,x,y,z), own_take(ar,x,y) с условиями и результатами применения в соответствии с правилами преобразования базовой ДП-модели;
— create_entity(x, y, z), create_subject(x, y, z), rename_entity(x, y, z), flow(x, y, y', z), find(x,y, z), post(x,y,z), pass(x,y,z), access_read(x,y), access_write(x,y), access_append(x,y) с условиями и результатами применения в соответствии с правилами преобразования БК ДП-модели;
— control(x, y, z), know(x, y, z) с условиями и результатами применения в соответствии с правилами преобразования ФАС ДП-модели и таблицей.
Определение 4. Пусть имеются G0 = (S0, E0,R0 U A0 U F0, H0) — состояние КС Tj(G*, OP), недоверенный субъект x Є NsП S0 и y Є S0, где x = y. Определим предикат can_steal_own(x,y, G0, Ls), который будет истинным тогда и только тогда, когда существуют состояния G1,... , Gn = (Sn , En, Rn U An U Fn, Hn) и правила преобразования состояний op1,... , opN такие, что G0 \~op1 G1 \~op2 ... \~opN Gn является траекторией без кооперации доверенных и недоверенных субъектов для передачи прав доступа и реализации информационных потоков и (x, y, ownr) Є Rn , где N ^ 0. При этом в последовательности правил op1,... , opN отсутствуют правила вида grant_right(ar, y, s, e), take_right(ar,y,s,e), control(y, s,e'), know(y, s,e'), где ar Є Rr, s Є Ns П S0, e,e' Є E0
и e' Є [s] или e' Є^[ (субъект y не передает другим субъектам любые имеющиеся у него права доступа к любым сущностям и не получает с использованием правил control(x, y, z) и know(x,y, z) право доступа владения ownr к другим субъектам).
Определение 5. Пусть имеются G0 = (S0, E0,R0 U A0 U F0, H0) — состояние КС T.(G*, OP), недоверенный субъект x Є NsП S0 и y Є S0, где x = y. Определим предикат directly_can_share_own(x, y, G0, Ls), который будет истинным тогда и только тогда, когда существует последовательность субъектов s1,... ,sm Є S0, где s1 = x, sm = уи m ^ 2, таких, что для каждого i = І, ...,m — І выполняется одно из условий:
1) si Є Ns П S0, si Є [si+1] или si Є^і+![;
2) истинен предикат can_share(ownr, si, si+1, G0, Ls);
3) существует сущность e Є [si+1], что предикат can_write_memory(si,e,G0, Ls) является истинным;
4) существует сущность e е]Si+i[, что предикат can_write_memory(e, si,G0, Ls) является истинным.
Лемма 1. Пусть имеются G0 = (S0,E0,R0 U A0 U F0,H0) — состояние КС Tj(G*,OP), недоверенный субъект x E Ns П S0 и y E So, где x = y, и истинен предикат directly_can_share_own(x,y,G0, Ls). Тогда истинен предикат can_share_own(x, y, G0, Ls).
Доказательство. Пусть истинен предикат directly_can_share_own(x, y, G0, Ls), тогда по определению 5 существует последовательность субъектов s1,... ,sm в S0, где s1 = x, sm = y и m ^ 2, таких, что для каждого i = 1, ...,m — 1 выполняется одно из условий 1-4 определения 5. Докажем, что для такой последовательности s1,... ,sm предикат can_share_own(x,y,G0,Ls) является истинным. Проведем доказательство этого утверждения индукцией по длине m.
Пусть m = 2, тогда возможно четыре случая.
Первый случай: x Е Ns П S0, x Е [y] или x E]y[. Если x Е [y], то пусть op1 = control(x,y,x). Тогда G0 —op1 G1, (x,y,ownr) E R1 и предикат can_share_own(x,y,G0,Ls) истинен. Если x E]y[, то пусть op1 = know(x,y,x). Тогда G0 \~op1 G1 и (x,y,ownr) E R1 и предикат can_share_own(x,y,G0,Ls) также истинен.
Во втором случае истинен предикат can_share(x,y,G0,Ls). Следовательно, истинен предикат can_share_own(x, y, G0, Ls).
В третьем случае имеется x Е Ns П S0, существует сущность e Е [y] и истинен предикат can_write_memory(x,e,G0,Ls). Пусть op1 = control(x,y,e), тогда G0 \-op1 G1, (x,y,ownr) E R1 и предикат can_share_own(x,y,G0,Ls) истинен.
В четвертом случае имеется x Е Ns П S0, существует сущность e E]y[ и истинен предикат can_write_memory(e,x,G0,Ls). Пусть op1 = know(x,y,e), тогда G0 -op1 G1, (x,y,ownr) E R1 и предикат can_share_own(x,y,G0,Ls) истинен.
Докажем индуктивный шаг. Пусть m > 2 и доказываемое утверждение верно для всех последовательностей субъектов длины k < m. Докажем, что оно верно и для всех таких последовательностей длины m.
Рассмотрим последовательность субъектов s1,...,sm в S0, где s1 = x, s2 = = z и sm = y. Пусть z E Ns П S0. Тогда по предположению индукции существуют правила преобразования состояний op1,...,opN, такие, что G0 -op1
G1 — op2 ... -opN GN, и верно, что (x,z,ownr), (z,y,ownr) E RN , где
N ^ 0. Положим opN+1 = take_right(ownr,x,z,y). Тогда GN —op(N+1) GN+1 = = (SN+1, EN+1 ,RN+1 U AN+1 U FN+1, HN+1) и (x,y,ownr) E RN+1, следовательно, предикат can_share_own(x, y, G0, Ls) истинен.
Если z E Ls П S0, то (z,y,ownr) E R0, и по предположению индукции предикат can_share_own(x, z, G0, Ls) истинен. Следовательно, существуют правила преобразования состояний op1,...,opN, такие, что G0 — op1 G1 —op2 ... —opN Gn,
и (x,z,ownr) E Rn, где N ^ 0. Аналогично получаем истинность предиката can_share_own(x, y, G0, Ls). Лемма доказана. ■
Определим и обоснуем алгоритмически проверяемые необходимые и достаточные условия истинности предиката can_steal_own(x,y,G0, Ls).
Теорема 1. Пусть имеется G0 = (S0,E0,R0 U A0 U F0,H0) — состояние КС Yj(G*,OP), и (x,y,ownr) E Nr, где x E Ns П S0, y E S0 и x = y. Тогда предикат can_steal_own(x, y, G0, Ls) является истинным, если и только если существует по-
следовательность субъектов s1,... ,sm в S0, где s1 = x, sm = y и m ^ 2, таких, что
выполняется одно из условий.
Условие 1. m = 2 и истинен предикат directly_can_share_own(x,y,G0, Ls). Условие 2. m > 2 и для каждого i = 1, ...,m — 2 выполняется одно из условий:
— si,si+1 Е Ns П S0, si = y и предикаты directly_can_share_own(si, si+1,G0, Ls), directly_can_share_own(si+1,si+2,G0,Ls) являются истинными;
— i < m — 2, si, si+2 E NsПS0, si, si+2 = y и являются истинными предикаты directly_-can_share_own(si, si+1, G0, Ls) и directly_can_share_own(si+2, si+1, G0, Ls);
— i < m — 2, si+1,si+2 E Ns П S0, si+1 = y, si+2 = y и являются истинными предикаты directly _can_share_own(si+1, si ,G0 ,Ls), directly _can_share_-
own(si+2, si+b Go, Ls);
— si+1 E Ns П S0, si+1 = y и являются истинными предикаты directly_can_share_-own(si+1, si, G0, Ls), directly _can_share_own(si+1, si+2, G0, Ls).
Доказательство. Докажем достаточность выполнения условий теоремы для истинности предиката can_steal_own(x,y,G0, Ls). Если выполнено первое условие теоремы, то в соответствии с леммой истинен предикат can_share_own(x,y,G0, Ls). Следовательно, предикат can_steal_own(x, y, G0, Ls) также является истинным. Если выполнено второе условие теоремы, то тогда существует последовательность субъектов s^ ..., sm в S0, где s1 = x, sm = y, x = y и m > 2.
Проведем доказательство индукцией по длине m последовательности субъектов. Пусть m = 3. Возможны два случая. Первый случай: x, s2 Е NsПS0 и истинны предикаты directly_can_share_own(x, s2,G0, Ls), directly_can_share_own(s2,y,G0,Ls). Тогда в соответствии с леммой существуют состояния G1,...,Gn = (Sn ,En , Rn U An U Fn,Hn) и правила преобразования состояний op1,... , opN, такие, что G0 — op1 G1 —op2 ... —opN Gn и (x,s2,ownr), (s2,y,own) E Rn , где N ^ 0. Пусть opN+1 = = take_right(ownr,x,s2,y) и Gn —op(N+1) Gn+1, где Gn+1 = (Sn+1,En+1,Rn+1 U AN+1 U Fn+1,HN+1). Тогда (x,y,ownr) E RN+1 и предикат can_steal_own(x,y,G0,Ls) является истинным. Второй случай: s2 Е Ns П S0 и истинны предикаты
directly_can_share_own(s2, x, G0, Ls), directly_can_share_own(s2, y, G0, Ls). Тогда в соответствии с леммой существуют состояния G1,...,Gn = (Sn ,En , Rn U An U Fn, Hn) и правила преобразования состояний op1,... , opN, такие, что G0 — op1 G1 —op2 ... —opN Gn и (s2,x,ownr), (s2,y,ownr) E Rn, где N ^ 0. Пусть opN+1 = = grant_right(ownr,s2,x,y) и Gn —op(N+1) Gn+1, где Gn+1 = (Sn+1,En+1,Rn+1 U AN+1 U Fn+1,HN+1). Тогда (x,y,ownr) E RN+1 и предикат can_steal_own(x,y,G0,Ls) является истинным.
Докажем индуктивный шаг. Пусть m > 4 и утверждение теоремы верно для всех последовательностей субъектов длины k < m. Докажем, что утверждение теоремы верно для всех таких последовательностей длины m. Пусть имеется последовательность субъектов s1,... ,sm в S0, где s1 = x, s2 = z, s3 = w и sm = y. Возможно четыре случая.
Первый случай: x,z Е Ns П S0 и истинны предикаты directly_can_share_-own(x, z,G0,Ls), directly_can_share_own(z,w,G0,Ls). Тогда в соответствии с леммой существуют состояния G1,... , Gn = (Sn , En , Rn U An U Fn, Hn) и правила преобразования состояний op1,...,opN, такие, что G0 — op1 G1 — op2 ... —opN Gn и (x,z,ownr), (z,w,ownr) E Rn, где N ^ 0. По предположению индукции существуют состояния Gn+1, ... , Gn+k = (Sn+k, En+k, Rn+k U An+k U Fn+k , Hn+k) и правила преобразования состояний opN+1,... ,opN+K, такие, что GN+1 —op(N+^ GN+2 —op(N+2)
... —op(N+K) Gn+k и (w,y,ownr) E Rn+k , где K ^ 0. Положим opN+K+1 = = take _right(ownr ,x,z,w), opN+K+2 = take _right(ownr ,x,w,y), тогда
GN+K — op(N+K+1) GN+K+1 — op(N+K+2) GN+K+2 = (SN+K+2,EN+K+2,RN+K+2 U
An+k+2 U Fn+k+2,Hn+k+2) и (x,y,ownr) E Rn+k+2. Следовательно, предикат can_share_own(x, y, G0, Ls) истинен.
Второй случай: x, w E Ns П S0 и истинны предикаты directly_can_share_-own(x,z,G0,Ls), directly _can_share_own(w,z,G0,Ls). Тогда в соответствии с леммой существуют состояния G1,... , Gn = (Sn , En , Rn U An U Fn, Hn) и правила преобразования состояний op1,...,opN, такие, что G0 — op1 G1 — op2 ... —opN Gn и (x,z,ownr), (w,z,ownr) E Rn, где N ^ 0. По предположению индукции существуют состояния Gn+1, ... , Gn+k = (Sn+k, En+k, Rn+k U An+k U Fn+k , Hn+k) и правила преобразования состояний opN+1,... ,opN+K, такие, что GN+1 —op(N+^ GN+2 —op(N+2) ... —op(N+K) Gn+k и (w,y,ownr) E Rn+k , где K ^ 0. Положим opN+K+1 = = grant _right(ownr ,w,z,y), opN+K+2 = take _right(ownr ,x,z,y), тогда
GN+K — op(N+K+1) GN+K+1 — op(N+K+2) GN+K+2 = (SN+K+2,EN+K+2,RN+K+2 U
An+k+2 U Fn+k+2,Hn+k+2) и (x,y,ownr) E Rn+k+2. Следовательно, предикат can_share_own(x, y, G0, Ls) истинен.
Третий случай: w, z E Ns П S0, z = y и истинны предикаты directly_can_-share_own(z, x, G0, Ls), directly_can_share_own(w,z,G0,Ls). Тогда в соответствии с леммой существуют состояния G1,... ,Gn = (Sn,En,Rn U An U Fn,Hn) и пра-
вила преобразования состояний op1 ,...,opN, такие, что G0 — op1 G1 — op2 ... — opN Gn и (z,x,ownr), (w,z,ownr) E Rn, где N ^ 0. По предположению индукции существуют состояния Gn+1, . . . , GN+K = (SN+K, EN+K, RN+K U AN+K U FN+K, HN+K) и правила преобразования состояний opN+1,...,opN+k, такие, что Gn+1 —op(n+1) Gn+2 —op(N+2) ... — op(N+k) Gn+k и (w,y,own) E Rn+k, где K ^ 0. Поло-
жим opN+K+1 = grant_right(ownr,w,z,y), opN+K+2 = grant_right(ownr,z,x,y), тогда GN+K — op(N+K+1) GN+K+1 — op(N+K+2) GN+K+2 = (SN+K+2,EN+K+2, RN+K+2 U
An+k+2 U Fn+K+2, Hn+k+2) и (x,y,own) E Rn+k+2. Следовательно, предикат can_share_own(x, y, G0, Ls) истинен.
Четвертый случай: z Е Ns П S0, z = y и истинны предикаты directly_can_-share_own(z, x, G0, Ls), directly_can_share_own(z,w,G0, Ls). Тогда в соответствии с леммой существуют состояния G1,... , Gn = (Sn, En , Rn U An U Fn, Hn) и правила преобразования состояний op1,...,opN, такие, что G0 — op1 G1 —op2 ... —opN Gn и (z,x,ownr), (z,w,ownr) E Rn, где N ^ 0. По предположению индукции существуют состояния Gn+1, ..., Gn+k = (Sn+k, En+k, Rn+k U An+k U Fn+k , Hn+k) и правила преобразования состояний opN+1,...,opN+K, такие, что GN+1 —op(N+^ GN+2 —op(N+2) ... —op(N+K) Gn+k и (w,y,ownr) E Rn+k , где K ^ 0. Положим opN+K+1 = = take _right(ownr ,z,w,y), opN+K+2 = grant _right(ownr ,z,x,y), тогда
GN+K — op(N+K+1) GN+K+1 — op(N+K+2) GN+K+2 = (SN+K+2,EN+K+2,RN+K+2 U
An+k+2 U Fn+k+2, Hn+k+2) и (x,y,own) E Rn+k+2. Следовательно, предикат can_share_own(x, y, G0, Ls) истинен.
Индуктивный шаг доказан. Доказательство достаточности выполнения условий теоремы для истинности предиката can_steal_own(x, y, G0, Ls) закончено.
Докажем необходимость выполнения условий теоремы для истинности предиката can_steal_own(x, y, G0, Ls).
Пусть истинен предикат can_steal_own(x,y, G0, Ls). Тогда по определению существуют состояния G1,... , Gn = (Sn , En, Rn U An U Fn, Hn) и правила преобразования состояний op1,... , opN, такие, что G0 — op1 G1 —op2 ... — opN GN, и (x, y, ownr) E RN,
где N ^ 0. Выберем среди последовательностей правил преобразований ту, у которой длина N является минимальной. Следовательно, (x,y,ownr) Е Rn-1. При этом в последовательности правил op1,... , opN отсутствуют правила вида grant_right(a, y, s, e), take_right(a, y, s, e), control(y, s, e'), know(y, s, e'), где alpha E Rr, s E NsПS0, e, e' E E0 и e' E [s] или e' e]s[. Проведем доказательство индукцией по числу N.
Пусть N = 0, тогда (x,y, ownr) Е R0 и условие 1 теоремы выполнено. Пусть N = 1, тогда x Е Ns П S0, y Е S0, (x,y,ownr) Е R0 и существует правило преобразования состояний op1, такое, что G0 — op1 G1 и (x,y,ownr) Е R1. Из определения правил преобразования состояний следует, что возможны шесть случаев:
— x Е [y] и op1 = control(x,y,x);
— x E]y[ и op1 = know(x,y,x);
— существует сущность e E [y], такая, что (x,e,writem) E F0 и op1 = control(x,y,e);
— существует сущность e E]y[, такая, что (e,x,writem) E F0 и op1 = know(x,y,e);
— существует субъект z E Ns П S0, такой, что (x,z,ownr), (x,z,ownr) E R0 и op1 = take_right(ownr ,x,z,y);
— существует субъект z E Ns П S0, такой, что (z,x,ownr), (x,z,ownr) E R0 и op1 = grant_right(ownr,z, x, y).
Все шесть случаев соответствуют условиям 1 и 2 теоремы.
Пусть N > 2 и утверждение теоремы верно для всех последовательностей преобразований состояний длины l < N. Тогда x Е Ns П S0, y Е S0, (x,y,ownr) Е RN-1 и существует правило преобразования состояний opN, такое, что Gn-1 —apN Gn и (x, y, ownr) E Rn.
Из определения правил преобразования состояний и минимальности N следует, что выполняется одно из условий:
— существует сущность e E [y], такая, что (x, e, writem) E FN-1 и opN = control(x, y, e);
— существует сущность e E ]y[, такая, что (e,x,writem) E FN-1 и opN = know(x,y,e);
— существует субъект z E Ns П S0, такой, что (x,z,ownr), (z,y,ownr) E RN-1 и opN = take _right(ownr ,x,z,y);
— существует субъект z E Ns П S0, такой, что (z,x,ownr), (z,y,ownr) E RN-1 и opN = grant_right(ownr, z, x, y).
Если выполнено первое или второе условие, то выполнено первое условие теоремы. Рассмотрим случай выполнения третьего условия, когда (x,z,ownr), (z,y,ownr) Е Rn-1 и opN = take_right(a,x, z,y). Доказательство для случая выполнения четвертого условия проводится аналогично доказательству для случая выполнения третьего условия.
Так как длина N минимальна, то в последовательности преобразований состояний не использовались правила вида create_entity(x,y, z) и create_subject(x,y, z). Следовательно, z E S0 и истинны предикаты can_steal_own(x,z,G0,Ls) и can_steal_-own(z, y, G0, Ls) с длинами последовательностей преобразований состояний меньше N. По предположению индукции возможны четыре случая. Первый случай: истинны предикаты directly_can_share_own(x, z, G0, Ls) и directly_can_share_own(z, y, G0, Ls). Следовательно, второе условие теоремы выполнено.
Второй случай: истинен предикат directly_can_share_own(x, z,G0, Ls) и существует последовательность субъектов s1,... ,sm в S0, где s1 = z,sm = y и m ^ 2, таких, что выполняется условие 2. Следовательно, существует последовательность субъектов s1,... , sm, sm+1 в S0, где s1 = x, s2 = z, sm+1 = y, таких, что выполняется условие 2 теоремы.
Третий случай: истинен предикат directly_can_share_own(z, y, G0, Ls) и существует последовательность субъектов s1,... ,sm в S0, где s1 = x,sm = z и m ^ 2, таких, что выполняется условие 2. Следовательно, существует последовательность субъектов s1,... , sm, sm+1 в S0, где s1 = x, sm = z, sm+1 = y, таких, что выполняется условие 2 теоремы.
Четвертый случай: существуют последовательности субъектов s1, . . . , sm и
s1, ... ,s!n в S0, где s1 = x,sm = s1 = z, s'n = y и m,n ^ 2, для которых выполняется
условие 2. Следовательно, существует последовательность субъектов s",... ,s'm+n-1 в S0, где s'1 = x, s"m+n_ 1 = y, таких, что выполняется условие 2 теоремы.
Индуктивный шаг доказан. Доказательство необходимости выполнения условия теоремы для истинности предиката can_steal_own(x,y,G0, Ls) закончено. Теорема доказана. ■
ЛИТЕРАТУРА
1. Девянин П. Н. Анализ безопасности управления доступом и информационными потоками в компьютерных системах. М.: Радио и связь, 2006. 176 с.
2. Девянин П. Н. Модели безопасности компьютерных систем: Учеб. пособие для студ. высш. учеб. заведений. М.: Издательский центр «Академия», 2005. 144 с.
3. Робачевский А. Операционная система UNIX. СПб.: БХВ-Петербург, 2000. 528 с.
4. Качанов М. А., Колегов Д. Н. Расширение функциональности системы безопасности ядра Linux на основе подмены системных вызовов // Прикладная дискретная математика. 2008. № 2. С. 76 - 80.