430 likes | 895 Views
Развитие семейства ДП-моделей логического управления доступом в компьютерных системах. д.т.н., доцент Девянин П.Н. ИКСИ, г. Москва peter_devyanin@hotmail.com. Формальные модели. Модель Take - Grant. Модели дискреционного управления доступом. Модель ХРУ. Модель ТМД.
E N D
Развитие семейства ДП-моделей логического управления доступом в компьютерных системах д.т.н., доцент Девянин П.Н. ИКСИ, г. Москва peter_devyanin@hotmail.com
Формальные модели Модель Take-Grant Модели дискреционного управления доступом Модель ХРУ Модель ТМД Модель ролевого администрирования Модели ролевого управления доступом Базовая модель ролевого управления доступом Модель мандатного ролевого управления доступом Программная модель Модели безопасности информационных потоков Автоматная модель Вероятностная модель Модели мандатного управления доступом Модель СВС Классическая модель Белла-ЛаПадулы Модель целостности Биба Модель безопасности переходов Модели тематического управления доступом Субъектно-ориентированная модель изолированной программной среды Основные формальные модели управления доступом и информационными потоками
Основные существенные особенности функционирования современных КС • Возможность реализации в КС доверенных и недоверенных субъектов с различными условиями функционирования; • Различие в условиях реализации в КС информационных потоков по памяти и по времени; • Наличие в современных КС иерархической структуры сущностей и возможность ее использования при реализации информационных потоков по времени; • Возможность кооперации или, наоборот, противодействия субъектов друг другу при передаче прав доступа и реализации информационных потоков; • Возможность изменения функциональности субъекта при реализации информационного потока по памяти на функционально ассоциированные с ним сущности.
Элементы базовой ДП-модели E =O C множество сущностей, где O множество объектов, C множество контейнеров; S E множество субъектов; Rr= {readr, writer, appendr, executer, ownr} множество видов прав доступа; Ra= {reada, writea, appenda} множество видов доступа; Rf = {writem, writet} множество видов информационных потоков; Rraf = RrRaRf множество видов прав доступа, видов доступа и видов информационных потоков. Определение.Определим H: E 2Eфункцию иерархии сущностей, сопоставляющую каждой сущности cE множество сущностей H(c) E и удовлетворяющую условиям: Условие 1. Если сущность e H(c), то e < c и не существует сущности-контейнера d C, такой, что e< d,d < c. Условие 2. Для любых сущностей e1, e2E, e1e2, по определению выполняются равенство H(e1) H(e2) = и условия: • если o O, то выполняется равенство H(o) = ; • если e1 < e2, то или e1, e2E \ S, или e1, e2S; • еслиeE \ S, тоH(e) E \ S; • еслиsS, тоH(s) S.
а) б) в) г) ra writemwritet Определение системы Определение.Пусть определены множества S, E, R S E Rr, A S E Ra, F E E Rf и функция иерархии сущностей H. Определим G = (S, E, R A F, H) конечный помеченный ориентированный граф без петель, где элементы множеств S, E являются вершинами графа, элементы множества R A F ребрами графа. Назовем G = (S, E, R A F, H)графом доступов. (G*, OP) система, при этом: • каждое состояние системы представляется графом доступов; • G* множество всех возможных состояний; • OP множество правил преобразования состояний. G ├op G’ переход системы (G*, OP) из состояния G в состояние G’
GzG’z writerwriterwritet writet xyxy ├rename_entity(x, y, z) … writetwritet… rr sy’ sy’ Правила преобразования состояний В базовой ДП-модели определены 16 монотонных и немонотонных правил преобразования состояний: take_right(r, x, y, z), grant_right(r, x, y, z),remove_right(r, x, y, z), own_take(r, x, y),own_remove(r, x, y), create_entity(x, y, z), create_subject(x, y, z), delete_entity(x, y, z),rename_entity(x, y, z), access_read(x, y), access_write(x, y), access_append(x, y),flow(x, y, y’, z), find(x, y, z), post(x, y, z), pass(x, y, z)
Семейство ДП-моделей Базовая дискреционная ДП-модель ДП-модель без кооперации доверенных и недоверенных субъектов ДП-модель с блокирующими доступами доверенных субъектов ДП-модель с функционально ассоциированными с субъектами сущностями ДП-модель для политики безопасного администрирования ДП-модель для политики абсолютного разделения административных и пользовательских полномочий ДП-модель с функционально и параметрически ассоциированными с субъектами сущностями ДП-модель файловой системы Мандатная ДП-модель Мандатная ДП-модель с блокирующими доступами доверенных субъектов Мандатная ДП-модель с отождествлением порожденных субъектов Мандатная ДП-модель для политики строгого мандатного управления доступом Базовая ролевая ДП-модель
G0 G1ownr writem writem ├control(x, y, z) x z y x z y Права доступа Доступы Информационные потоки по памяти Информационные потоки по времени ДП-модель с функционально ассоциированными с субъектами сущностями (ФАС ДП-модель)
ФАС ДП-модель Определение.Пусть G0= (S0, E0, R0A0F0, H0) состояние системы (G*, OP) и недоверенный субъект x NSS0, субъект y S0, где x y. Определим предикат can_share_own(x, y, G0, LS), который будет истинным тогда и только тогда, когда существуют состояния G1, …, GNи правила преобразования состояний op1, …, opN, где N 0, такие, что траектория G0├ op1G1├ op2… ├ opNGNявляется траекторией без кооперации доверенных и недоверенных субъектов для передачи прав доступа и реализации информационных потоков, и (x, y, ownr) RN. • Теорема.ПустьG0= (S0, E0, R0A0F0, H0) начальное состояние системы (G*, OP,G0), в которомA0 = F0 = , и недоверенный субъект x NSS0, доверенный субъект y LSS0. Пусть истинен предикат can_share_own(x, y, G0, LS). Тогда существуют недоверенный субъект x’NSS0, доверенный субъект y’ LSS0, сущность e [y’] такие, что выполняется одно из условий. • Условие 1.x’ = e. • Условие 2.(x’, e, r) R0, где r {ownr, writer, appendr}. • Условие 3.Существует доверенный субъект y’’ LSS0 такой, что истинен предикат can_write_memory(y’’, e, G0, LS), и выполняется одно из условий: • субъект y’’ некорректен относительно сущности x’; • право доступа (x’, y’’, r) R0, где r {writer, appendr}; • существует сущность e’E0 такая, что право доступа (x’, e’, r) R0, где r {ownr, writer, appendr}, и субъект y’’ некорректен относительно сущности e’.
ДП-модель веб-системы (Назаров И.О.) ef1, ef2, ef3 сущности-функции ядра веб-системы; ekernel сущность-каталог, содержащая функции ядра веб-системы в виде исполняемых модулей; si доверенный субъект-интерфейс веб-системы; ep сущность-параметр, ассоциированная с субъектом-интерфейсом и используемая им при выборе сущности-функции для активизации; s1, s2, s3 доверенные субъекты-потоки HTTP-сервера, реализующие передачу данных от пользователей к интерфейсу веб-системы и наоборот; e1, e2, e3, e4, e5 сущности-порты, используемые субъектами-потоками HTTP-сервера, для записи в них и чтения из них данных при реализации взаимодействия между пользователем и интерфейсом; sa доверенный субъект-пользователь веб-системы; esсущность-скрипт, функционально ассоциированная с субъектом-пользователем и исполняющаяся в браузере пользователя веб-системы; su недоверенный субъект-пользователь веб-системы. Утверждение.ПустьG0= (S0, E0, R0A0F0, H0) начальное состояние системы 1(G*, OP,G0), в котором недоверенный субъект suNSS0, доверенный субъект saLSS0, сущность esE0 такие, что es [sa], пусть также право доступа владения (su, sa, ownr) Nr, тогда выполняются следующие условия: Условие 1. Предикат can_write_memory(su, es, G0, LS) является истинным. Условие 2. Предикат can_share_own(su, si, G0, LS) является истинным и возможно нарушение безопасности системы.
ДП-модель веб-системы на основе СУБД (Назаров И.О.) eb1, eb2сущности-«банки данных» СУБД веб-системы; ebase сущность-«база данных», содержащая сущности «банки данных»; sd доверенный субъект-драйвер СУБД веб-системы; eq сущность-запрос, функционально ассоциированная с субъектом-драйвером; er сущность-результат; si доверенный субъект-интерфейс веб-системы; ep сущность-параметр, ассоциированная с субъектом-интерфейсом; s1, s2доверенные субъекты-потоки, являющиеся потоками ОС, порожденными процессом HTTP-сервера; e1, e2, e3 сущности-порты, используемые субъектами-потоками HTTP-сервера для записи в них и чтения из них данных; su недоверенный субъект-пользователь веб-системы; eout сущность-устройство вывода данных рабочей станции субъекта-пользователя. Утверждение.ПустьG0= (S0, E0, R0A0F0, H0) начальное состояние системы 1(G*, OP,G0), в котором недоверенный субъект suNSS0, доверенный субъект sdLSS0, сущность eqE0 такие, что eq [sd]. Тогда выполняются следующие условия: Условие 1. Предикат can_share_own(su, sd, G0, LS) является истинным. Условие 2. Предикат can_write_memory(eb2, eout, G0, LS) является истинным и возможно нарушение безопасности системы.
ДП-модель с функционально и параметрически ассоциированными с субъектами сущностями (ФПАС ДП-модель, Колегов Д.Н.) G0 G1ownr writem writem ├control(x, y, z) x z [y] y x z [y] y G0 G1ownr writem writem ├know(x, y) x z ]y[ y x z ]y[ y G0 z1 ]y[ G1 z1 ]y[ writem writem ownr ├know(x, y) x y x y writem writem z2 ]y[ z2 ]y[
ФПАС ДП-модель (Колегов Д.Н.) • Определение. Пусть G0= (S0, E0, R0A0F0, H0) состояние системы (G*, OP) и недоверенный субъект x NSS0, субъект y S0, где x y. Определим предикат directly_can_share_own(x, y, G0, LS), который будет истинным тогда и только тогда, когда существует последовательность субъектов s1, …, smS0, где s1= x, sm= y и m 2, таких, что для каждого i = 1, ..., m – 1 справедливо неравенство sisi + 1 и выполняется одно из условий: • si [si + 1]; • истинен предикат can_share(ownr, si, si + 1, G0, LS); • существует сущность e [si + 1] такая, что истинен предикат can_write_memory(si, e, G0, LS); • для каждой сущности e ]si +1[ истинен предикат can_write_memory(e, si, G0, LS). • Теорема.Пусть G0= (S0, E0, R0A0F0, H0) состояние системы (G*, OP), пусть также право доступа владения (x, y, ownr) Nr, x NSS0, y S0, где x y. Предикат can_share_own(x, y, G0, LS) является истинным тогда и только тогда, когда существует последовательность субъектов s1, …, smS0, где s1= x, sm= y и m2, таких, что выполняется одно из условий. • Условие 1.m = 2 и истинен предикат directly_can_share_own(x, y, G0, LS). • Условие 2.m> 2 и для каждого i = 1, ..., m – 2 выполняется одно из условий: • si , si + 1NSS0и истинны предикаты directly_can_share_own(si, si + 1, G0, LS), directly_can_share_own(si + 1, si + 2, G0, LS); • i < m – 2, si, si + 2NSS0и истинны предикаты 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 + 2NSS0и истинны предикаты directly_can_share_own(si + 1, si, G0, LS), directly_can_share_own(si + 2, si + 1, G0, LS); • si + 1NSS0и истинны предикаты directly_can_share_own(si + 1, si, G0, LS), directly_can_share_own(si + 1, si + 2, G0, LS).
ДП-модель файловых систем (ФС ДП-модель, Буренин П.В.) Предположение.В рамках ФС ДП-модели выполняются следующие условия. Условие 1. Во множестве сущностей выделено подмножество сущностей, защищенных ФС и не являющихся субъектами. Условие 2. Во множестве доверенных субъектов выделено подмножество субъектов, обладающих правами доступа и реализующих доступ к сущностям, защищенным ФС, и кодирование в них данных в случае, когда оно осуществляется ФС. Эти доверенные субъекты реализуют информационные потоки по памяти между каждой сущностью, защищенной ФС, и соответствующей ей сущностью-образом, не являющейся субъектом. Условие 3. Доверенные или недоверенные субъекты, не реализующие доступ к сущностям, защищенным ФС, не обладают правами доступа и не могут получать доступ к этим сущностям. При этом они могут обладать правами доступа или получать доступ к сущностям-образам сущностей, защищенных ФС. Условие 4. В каждом состоянии системы кроме множества субъектов анализируется множество потенциальных доверенных субъектов (доверенных субъектов, которые могут быть созданы в процессе функционирования системы для реализации доступа к сущностям, защищенным ФС). Условие 5. Кроме возможности создания новых субъектов из сущностей недоверенный субъект может создать доверенного субъекта в случае, когда недоверенный субъект реализовал к себе информационные потоки по памяти от всех сущностей, параметрически ассоциированных с потенциальным доверенным субъектом. При этом недоверенный субъект получает контроль над созданным доверенным субъектом. Условие 6. Каждый доверенный субъект не обладает правами доступа ко всем сущностям. Условие 7. Доверенные субъекты, не реализующие доступ к сущностям, защищенным ФС, в процессе функционирования системы не получают новые доступы к сущностям и не участвуют в создание информационных потоков к или от сущностей, защищенных ФС. Условие 8. Не рассматриваются информационные потоки по времени, право доступа и доступ на запись в конец сущности. Условие 9. В начальном состоянии системы недоверенные субъекты не реализуют доступы к сущностям, к ним не имеют доступы другие субъекты, и отсутствуют информационные потоки по памяти с участием недоверенных субъектов. FSE E \ S множество сущностей, защищенных ФС; fs: FSE E \ S инъективная функция, которая ставит в соответствие каждой сущности, защищенной ФС, соответствующую ей сущность-образ; PS множество потенциальных доверенных субъектов, реализующих доступ к сущностям из множества FSE; FSSLSS множество доверенных субъектов, реализующих доступ к сущностям из множества FSE.
ФС ДП-модель (Буренин П.В.). Запрещенные информационные потоки Определение.Пусть G0= (S0, E0, R0A0F0, H0) начальное состояние системы (G*, OP,G0). Запрещенным информационным потоком по памяти является информационный поток от сущностиe FSE, защищенной ФС, к недоверенному субъекту x NSS0 в случае, когда в начальном состоянии G0 субъект x не имеет прав доступаreadr или ownr к сущности-образу fs(e) E, соответствующей сущности e. Определение. В рамках ФС ДП-модели будем говорить, что система (G*, OP,G0) является безопасной в случае, когда невозможен переход системы в состояние, в котором реализуется запрещенный информационный поток по памяти. Определение. Нарушитель в рамках ФС ДП-модели любой недоверенный субъект системы.
ФС ДП-модель (Буренин П.В.). Правило potential_subject(x, y, z)
ФС ДП-модель (Буренин П.В.). Достаточные условия реализации запрещенного информационного потока • Определение. Пусть G0= (S0, E0, R0A0F0, H0) состояние системы (G*, OP) и недоверенный субъект x NSS0, субъект или потенциальный доверенный субъект y S0PS, где x y. Определим предикат directly_can_share_own(x, y, G0), который будет истинным тогда и только тогда, когда существует последовательность субъектов s1, …, smS0PS, где s1= x, sm= y и m2, таких, что для каждого i = 1, ..., m – 1 справедливо неравенство sisi + 1 и выполняется одно из условий: • si + 1FSS0иsi [si + 1] (каждый доверенный субъект из множества FSS0 является функционально корректным); • истинен предикат simple_can_share(ownr, si, si + 1, G0); • si + 1FSS0и существует сущность e [si + 1] такая, что истинен предикат simple_can_write_memory(si, e, G0) (невозможно получение к доверенному субъекту из множества FSS0 права доступа владения с использованием реализованного к нему информационного потока по памяти); • для каждой сущности e ]si + 1[ истинен предикат simple_can_write_memory(si, e, G0). • Теорема.Пусть G0= (S0, E0, R0A0F0, H0) состояние системы (G*, OP) и сущности x, y E0, где x y. Предикат can_write_memory(x, y, G0) является истинным в случае, когда существует последовательность сущностей e1, …, emE0, где e1= x, em= y и m2, таких, что для каждого i = 1, ..., m – 1 выполняется одно из условий. • Условие 1. eiLSS0и или (ei, ei + 1, writem) F0, или (ei, ei + 1, writea) A0. • Условие 2. eiFSS0 (NSS0) и или (ei, ei + 1, writem) F0, или истинен предикат can_share(writer, ei, ei + 1, G0). • Условие 3. ei + 1LSS0и (ei + 1, ei, reada) A0. • Условие 4. ei + 1FSS0 (NSS0)и истинен предикат can_share(readr, ei + 1, ei, G0). • Условие 5. eiNSS0, ei + 1FSS0 (NSS0) и истинен предикат can_share_own(ei, ei + 1, G0). • Условие 6. ei + 1NSS0, eiFSS0 (NSS0)и истинен предикат can_share_own(ei + 1, ei, G0).
Иерархия ролей Права доступа Роли R P Ограничения S U Сессии Пользователи AR AP Административные роли Основные ролевые модели семейства RBAC • Базовая модель; • Модель ролевого администрирования; • Модель мандатного ролевого управления доступом. Административные права доступа Иерархия административных ролей
Специфика ролевого управления доступом • Наличие статических и, особенно, динамических ограничений на роли пользователей, роли сессий и права доступа ролей; • Сложный анализ условий передачи прав доступа с учетом наличия прав доступа к сущностям только у ролей (вопрос о фактических ролях, фактических правах доступа сессий, фактических возможных действий); • Необходимость уточнения способов классификации субъектов на доверенные и недоверенные; • Каскадное удаление или добавление прав доступа с использованием иерархии ролей; • Неэффективность использования графов доступов для описания состояний.
Базовая ролевая ДП-модель Элементы ДП-моделей КС с дискреционным или мандатным управлением доступом: E =O Cмножество сущностей, где O множество объектов, C множество контейнеров; S Eмножество субъект-сессий пользователей; LSSмножество доверенных субъект-сессий; NS= S \ LS множество недоверенных субъект-сессий; [s] E множество всех сущностей, функционально ассоциированных с субъект-сессией s; Rr= {readr, writer, appendr, executer, ownr} множество видов прав доступа; Ra= {reada, writea, appenda, owna}множество видов доступа; Rf= {writem, writet} множество видов информационных потоков; HE: E 2Eфункция иерархии сущностей.
Базовая ролевая ДП-модель Элементы моделей КС с ролевым управлением доступом (RBAC иARBAC): Uмножество пользователей; Rмножество ролей; ARмножество административных ролей (AR R = ); P E Rrмножество прав доступа к сущностям; UA: U →2Rфункция авторизованных ролей пользователей; AUA: U →2ARфункция авторизованных административных ролей пользователей; PA: R →2Pфункция прав доступа ролей; user: S →Uфункция принадлежности субъект-сессии пользователю; roles: S → 2R 2ARфункция текущих ролей субъект-сессий; HR: R 2Rфункция иерархии ролей; HAR: AR 2ARфункция иерархии административных ролей.
Базовая ролевая ДП-модель can_manage_rights: AR 2Rфункция администрирования прав доступа ролей; A S E Ra множество доступов субъект-сессий к сущностям; F E E Rf множество информационных потоков; G = (UA, AUA, PA, user, roles, A, F, HR, HAR, HE, LU, LS) состояние системы; (G*, OP) система, при этом G* множество всех возможных состояний, OP множество правил преобразования состояний, G ├op G’ переход системы из состояния Gв состояние G’ с использованием правила преобразования состояний; (G*, OP,G0) система (G*, OP) с начальным состоянием G0. Предположение. В рамках БР ДП-модели на траекториях функционирования системы не изменяются: значения множеств U, LU, R, функции UA, AUA, HR, HAR. Предположение. Каждые пользователь или субъект-сессия системы (G*, OP) вне зависимости от имеющихся у них авторизованных ролей являются либо доверенными, либо недоверенными. Доверенные пользователи или субъект-сессии не создают новых субъект-сессий. Каждые недоверенный пользователь или субъект-сессия могут создать только недоверенную субъект-сессию.
Фактические роли, права доступа, возможные действия Предположение. Субъект-сессии могут иметь друг другу только доступ владения owna. Роли могут обладать к субъект-сессиям только правом доступа владения ownr. Если субъект-сессия s1 реализовала информационный поток по памяти от себя к сущности, функционально ассоциированной с другой субъект-сессией s2, то субъект-сессия s1 получает: • доступ владения owna к субъект-сессии s2; • возможность использовать роли из множества ролей roles(s2) (при этом субъект-сессия s1 не может изменить множество текущих ролей roles(s2)); • возможность получать доступ владения owna к субъект-сессиям, доступом владения к которым обладает субъект-сессия s2; • возможность использовать административные роли субъект-сессии s2 для осуществления действий над ролями и сущностями, которые позволяют ей изменять права доступа ролей субъект-сессии s2. • возможность использовать информационные потоки, в реализации которых участвует субъект-сессия s2. de_facto_roles: S → 2Rфункция фактических текущих ролей субъект-сессий; de_facto_rights: S → 2Pфункция фактических текущих прав доступа субъект-сессий. de_facto_actions: S → 2P2R функция фактических возможных действий субъект-сессий
Примеры задания правил преобразования состояний
Монотонные правила Определение .Назовем правило преобразования состояний монотонным, если его применение не приводит к удалению из состояний: ролей из множества текущих ролей субъект-сессии, прав доступа ролей к сущностям, субъект-сессий или сущностей, доступов субъект-сессий к сущностям, информационных потоков. Монотонными правила (17): take_role(x, r), grant_right(x, r, (y, r)), create_entity(x, r, y, z), create_first_session(u, r, y, z), create_session(x, w, r, y, z), rename_entity(x, y, z), control(x, y, z), access_own(x, y), take_access_own(x, y, z), access_read(x, y), access_write(x, y), access_append(x, y), flow(x, y, y’, z), find(x, y, z), post(x, y, z), pass(x, y, z), take_flow(x, y). Немонотонными правила (3):remove_role(x, r), remove_right(x, r, (y, r)), delete_entity(x, y, z). Утверждение.Пусть G0= (PA0, user0, roles0, A0, F0, HE0) начальное состояние системы (G*, OP, G0). Пусть также существуют состояния системы G1, …, GNи правила преобразования состояний op1, …, opN такие, что G0├op1G1├op2… ├opN GN, где N 0. Тогда существуют состояния G’1, …, G’M, где M 0, и монотонные правила преобразования состояний op’1, …, op’M такие, что G0├op’1G’1├op’2… ├op’M G’M и выполняются следующие условия. Условие 1. Верно включение SNS’M, и для каждого субъект-сессии s SN выполняются условия: userN(s) = user’M(s), rolesN(s) roles’M(s). Условие 2.Верно включениеENE’M, и для каждой сущности e EN выполняется условие HEN(e) H’EM(e). Условие 3. Для каждой роли rR выполняется условие PAN(r) PA’M(r). Условие 4. Верно включение ANA’M. Условие 5. Верно включение FNF’M.
Связь условий и результатов применения правил преобразования состояний в рамках ФАС ДП-модели Права доступа Доступы Информационные потоки по памяти Информационные потоки по времени
Зависимость условий и результатов применения правил преобразования состояний БР ДП-модели Пользователи (U) user UA, AUA Субъект-сессии (S) roles de_facto_roles Роли (RAR) PA P Права доступа ownr к субъект-сессиям Права доступа к сущностям A Доступы к сущностям Доступы owna к субъект-сессиям • F control(x, y, z) Информационные потоки по памяти Информационные потоки по времени
Траектории без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа Определение.Назовем траекторию функционирования системы (G*, OP) траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа, если при ее реализации используются только монотонные правила преобразования состояний, и доверенные субъект-сессии: • не берут роли во множество текущих ролей; • не дают другим ролям права доступа к сущностям; • не получают доступ владения к субъект-сессиям. В системе (G*, OP) на траекториях без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа доверенные субъект-сессии: • не инициируют выполнения следующих правил преобразования состояний: take_role(x, r), grant_right(x, r, (y, r)), create_session(x,w, r, y, z), control(x, y, z), access_own(x, y), take_access_own(x, y, z), take_flow(x, y); • могут выполнять монотонные правила преобразования состояний: create_entity(x, r, y, z), rename_entity(x, y, z), access_read(x, y), access_write(x, y), access_append(x, y), flow(x, y, y’, z), find(x, y, z), post(x, y, z), pass(x, y, z); • недоверенные пользователи могут инициировать выполнение правила create_first_session(u, r, y, z).
Случай двух субъект-сессий. Предикаты can_share((e, ), x, G0) и directly_grant_right(x, y, G) Определение .Пусть G0= (PA0, user0, roles0,A0, F0, HE0) состояние системы (G*, OP), в котором существуют пользователь x U0 и право доступа к сущности (e, ) P0. Определим предикат can_share((e, ), x, G0), который будет истинным тогда, и только тогда, когда существуют состояния G1, …, GNи правила преобразования состояний op1, …, opN такие, что G0├op1G1├op2… ├opN GNявляется траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа, и существует субъект-сессия sxSNтакая, что userN(sx) = xи право доступа к сущности (e, ) de_facto_rightsN(sx), где N 0. Определение .Пусть G = (PA, user, roles,A, F, HE) состояние системы (G*, OP), в котором недоверенная субъект-сессия или недоверенный пользователь x NU (NSS), субъект-сессия или недоверенный пользователь yNUS. Определим предикат directly_grant_right(x, y, G), который будет истинным тогда, и только тогда, когда или x = y, или выполняется одно из условий 1-4. Условие 1. Если y NU и xNU, то существует роль rcan_manage_rights(AUA(x)) UA(y). Условие 2. Если y NUи xNSS, то существуют роль rcan_manage_rights(AUA(user(x))) UA(y). Условие 3. Если y S и xNU, то выполняется одно из условий: • y NSSи существуют роль rcan_manage_rights(AUA(x)) UA(user(y)); • yLSSи существуют роль rcan_manage_rights(AUA(x)) roles(y). Условие 4. Если yS и xNSS, то выполняется одно из условий: • y NSSи существуют роль rcan_manage_rights(AUA(user(x))) UA(user(y)); • yLSSи существуют роль rcan_manage_rights(AUA(user(x))) roles(y).
Случай двух субъект-сессий. Предикат directly_access_own(x, y, G) Определение. Пусть G = (PA, user, roles,A, F, HE) состояние системы (G*, OP), в котором существуют недоверенный пользователь или недоверенная субъект-сессия xNU (NSS), субъект-сессия или недоверенный пользователь y NUS. Определим предикат directly_access_own(x, y, G), который будет истинным тогда, и только тогда, когда или x = y, или выполняется одно из условий 1-6. Условие 1. Если y NU и xNU, то существуют сущность eyE и рольryR такие, что (ey, executer) PA(UA(y)), rycan_manage_rights(AUA(y)), и выполняется одно из условий или ryUA(x), или xfa(y, ey), или существует сущность e E такая, что (e, ) PA(UA(x)), где {writer, appendr, ownr}, и или efa(y, ey), или (e, ) PA(UA(y)), где {readr, ownr}. Условие 2. Если y NUи xNSS, то существуют сущность eyE и рольryR такие, что (ey, executer) PA(UA(y)), rycan_manage_rights(AUA(y)), и выполняется одно из условий или ryUA(user(x)), или xfa(y, ey), или существует сущность e Eтакая, что (e, ) PA(UA(user(x)), где {writer, appendr, ownr}, или (x, e, writem) F, и или efa(y, ey), или (e, ) PA(UA(y)), где {readr, ownr}. Условие3.Если y NUи xLSS, то существуют сущность eyEи роль ryRтакие, что (ey, executer) PA(UA(y)), rycan_manage_rights(AUA(y)), и выполняется одно из условий или ryroles(x), или xfa(y, ey), или существует сущность e Eтакая, что (e, ) PA(roles(x)), где {writer, appendr}, или (x, e, writem) F, и или efa(y, ey), или (e, ) PA(UA(y)), где {readr, ownr}. Условие 4. Если y S и xNU, то выполняется одно из условий или (y, ownr) PA(UA(x)), или x[y], или существует сущность e Eтакая, что (e, ) PA(UA(x)), где {writer, appendr, ownr}, и или e [y], или yNSS, (e, ) PA(UA(user(y))), где {readr, ownr}, или yLSS, (e, readr) PA(roles(y)), (y, e) y(E). Условие 5. Если yS и xNSS, то выполняется одно из условий или (y, ownr) PA(UA(user(x))), или x[y], или (x, y, owna) A, или существует сущность e Eтакая, что (e, ) PA(UA(user(x)), где {writer, appendr, ownr}, или (x, e, writem) F, и или e [y], или yNSS, (e, ) PA(UA(user(y))), где {readr, ownr}, или yLSS, (e, readr) PA(roles(y)), (y, e) y(E). Условие 6. Если yS и xLSS, то выполняется одно из условий или (y, ownr) PA(roles(x)), или x[y], или (x, y, owna) A, или существует сущность e E такая, что (e, ) PA(roles(x)), где {writer, appendr}, или (x, e, writem) F, и выполняется одно из условий: • yNSS и или e[y], или (e, ) PA(UA(user(y))), где {readr, ownr}; • yLSSи или e [y], (x, x) y(E), или (e, readr) PA(roles(y)), (y, e) y(E).
Случай двух субъект-сессий. Предикат directly_can_share((e, ), x, G) Определение.Пусть G = (PA, user, roles,A, F, HE) состояние системы (G*, OP), в котором существует пользователь x NU и право доступа к сущности (e, ) P. Определим предикат directly_can_share((e, ), x, G), который будет истинным тогда, и только тогда, когда существует пользователь y U, и выполняется одно из условий 1-6, где {, ownr}. Условие 1. Выполняется одно из условий: • пользователь y NU, право доступа (e, ) PA(UA(y)), и истинен предикат directly_access_own(x, y, G); • существует недоверенная субъект-сессия syNSS такая, что user(sy) = y, истинен предикат directly_access_own(x, sy, G) и (e, ) PA(UA(user(sy))). Условие 2. Существует недоверенная субъект-сессия sxNSSтакая, что user(sx) = x, и выполняется одно из условий: • пользователь y NU, право доступа (e, ) PA(UA(y)) и истинен предикат directly_access_own(sx, y, G); • существует недоверенная субъект-сессия syNSSтакая, user(sy) = y, истинен предикат directly_access_own(sx, sy, G), и (e, ) PA(UA(user(sy))). Условие 3. Существует доверенная субъект-сессия syLSS такая, что user(sy) = y, право доступа (e, ) PA(roles(sy)), и выполняется одно из условий: • истинен предикат directly_access_own(x, sy, G); • существует недоверенная субъект-сессия sxNSSтакая, что user(sx) = x, и истинен предикат directly_access_own(sx, sy, G). Условие 4. Если ownr, то существует доверенная субъект-сессия syLSS такая, что user(sy) = y, право доступа (e, ownr) PA(roles(sy)), can_manage_rights(roles(sy) AR) (roles(sy) UA(x)) , и выполняется одно из условий: • истинен предикат directly_access_own(x, sy, G); • существует недоверенная субъект-сессия sxNSSтакая, что user(sx) = x, и истинен предикат directly_access_own(sx, sy, G). Условие 5. Пользователь yNU, право доступа (e, ownr) PA(UA(y)), и выполняется одно из условий: • пользователь xNU, и истинен предикат directly_grant_right(y, x, G); • существует субъект-сессия sxNSSтакая, что user(sx) = x, и истинен предикат directly_grant_right(y, sx, G). Условие 6. Существует субъект-сессия syNSS такая, что user(sy) = y, право доступа (e, ownr) PA(UA(user(sy))), и выполняется одно из условий: • пользователь xNU, и истинен предикат directly_grant_right(sy, x, G); • существует субъект-сессия sxNSSтакая, что user(sx) = x, и истинен предикат directly_grant_right(sy, sx, G).
Случай двух субъект-сессий. Условия непосредственного получения прав доступа Утверждение . Пусть G0= (PA0, user0, roles0,A0, F0, HE0) состояние системы (G*, OP), в котором существуют недоверенный пользователь или недоверенная субъект-сессия xNU (NSS0), субъект-сессия или недоверенный пользователь y NUS0 и право доступа к сущности (e, ) P0. Пусть истинен предикат directly_access_own(x, y, G0) и выполняется одно из условий: • если y NU, то (e, ) PA0(UA0(y)), где {, ownr}; • если y NSS0, то (e, ) PA0(UA0(user0(y))), где {, ownr}; • если y LSS0и x NU, то либо (e, ) PA0(roles0(y)), либо (e, ownr) PA0(roles0(y)) и can_manage_rights(roles0(y) AR) (roles0(y) UA0(x)) ; • если y LSS0и x NSS0, то либо (e, ) PA0(roles0(y)), либо (e, ownr) PA0(roles0(y)) и can_manage_rights(roles0(y) AR) (roles0(y) UA0(user0(x))) . Тогда выполняется одно из условий. Условие 1. Если xNU, то истинен предикат can_share((e, ), x, G0). Условие 2. Если xNSS0, то истинен предикат can_share((e, ), user0(x), G0). Утверждение. Пусть G0= (PA0, user0, roles0,A0, F0, HE0) состояние системы (G*, OP), в котором существуют недоверенный пользователь или недоверенная субъект-сессия xNU (NSS0), субъект-сессия или недоверенный пользователь y NUS0 и право доступа к сущности (e, ) P0. Пусть истинен предикат directly_grant_right(x, y, G0) и выполняется одно из условий: • если x NU, то (e, ownr) PA0(UA0(x)); • если x NSS0, то (e, ownr) PA0(UA0(user0(x))). Тогда выполняется одно из условий. Условие 1. Если yNU, то истинен предикат can_share((e, ), y, G0). Условие 2. Если yS0, то истинен предикат can_share((e, ), user0(y), G0). Теорема. Пусть G0= (PA0, user0, roles0,A0, F0, HE0) состояние системы (G*, OP), в котором выполняются условия|U0| 2, x NU, для каждого пользователя u U0 верно неравенство |user01(u)| 1, и существует право доступа к сущности (e, ) P0. Предикат can_share((e, ), x, G0) является истинным тогда, и только тогда, когда является истинным предикат directly_can_share((e, ), x, G0).
Случай двух субъект-сессий. Условия непосредственного получения прав доступа Утверждение . Пусть G0= (PA0, user0, roles0,A0, F0, HE0) состояние системы (G*, OP), в котором существуют недоверенный пользователь или недоверенная субъект-сессия xNU (NSS0), субъект-сессия или недоверенный пользователь y NUS0 и право доступа к сущности (e, ) P0. Пусть истинен предикат directly_access_own(x, y, G0) и выполняется одно из условий: • если y NU, то (e, ) PA0(UA0(y)), где {, ownr}; • если y NSS0, то (e, ) PA0(UA0(user0(y))), где {, ownr}; • если y LSS0и x NU, то либо (e, ) PA0(roles0(y)), либо (e, ownr) PA0(roles0(y)) и can_manage_rights(roles0(y) AR) (roles0(y) UA0(x)) ; • если y LSS0и x NSS0, то либо (e, ) PA0(roles0(y)), либо (e, ownr) PA0(roles0(y)) и can_manage_rights(roles0(y) AR) (roles0(y) UA0(user0(x))) . Тогда выполняется одно из условий. Условие 1. Если xNU, то истинен предикат can_share((e, ), x, G0). Условие 2. Если xNSS0, то истинен предикат can_share((e, ), user0(x), G0). Утверждение. Пусть G0= (PA0, user0, roles0,A0, F0, HE0) состояние системы (G*, OP), в котором существуют недоверенный пользователь или недоверенная субъект-сессия xNU (NSS0), субъект-сессия или недоверенный пользователь y NUS0 и право доступа к сущности (e, ) P0. Пусть истинен предикат directly_grant_right(x, y, G0) и выполняется одно из условий: • если x NU, то (e, ownr) PA0(UA0(x)); • если x NSS0, то (e, ownr) PA0(UA0(user0(x))). Тогда выполняется одно из условий. Условие 1. Если yNU, то истинен предикат can_share((e, ), y, G0). Условие 2. Если yS0, то истинен предикат can_share((e, ), user0(y), G0). Теорема. Пусть G0= (PA0, user0, roles0,A0, F0, HE0) состояние системы (G*, OP), в котором выполняются условия|U0| 2, x NU, для каждого пользователя u U0 верно неравенство |user01(u)| 1, и существует право доступа к сущности (e, ) P0. Предикат can_share((e, ), x, G0) является истинным тогда, и только тогда, когда является истинным предикат directly_can_share((e, ), x, G0).
Случай без информационных потоков по памяти Пользователи (U) user UA, AUA Субъект-сессии (S) roles de_facto_roles Роли (RAR) PA P Права доступа ownr к субъект-сессиям Права доступа к сущностям A Доступы к сущностям Доступы owna к субъект-сессиям • F control(x, y, z) Информационные потоки по памяти Информационные потоки по времени
Случай без информационных потоков по памяти. Предикат simple_can_access_own(x, y, G0) • Определение. Траекторию без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступаG0├op1G1├op2… ├opN GN, где N 0,назовем простой в случае, когда при ее реализации для 0 ≤ i ≤ N каждое правило opi не является правилом вида control(x, y, z), использующим для получения доступа владения субъект-сессией x к субъект-сессии y информационный поток по памяти (x, z, writem), где z [y]. • Определение.Пусть G0= (PA0, user0, roles0,A0, F0, HE0) состояние системы (G*, OP), в котором существуют недоверенный пользователь x NU и субъект-сессия или недоверенный пользователь yNUS0 такие, что x≠ y. Определим предикат simple_can_access_own(x, y, G0), который будет истинным тогда и только тогда, когда существуют состояния G1, …, GN= (PAN, userN, rolesN,AN, FN, HEN) и правила преобразования состояний op1, …, opN такие, что G0├op1G1├op2… ├opN GN, где N 0,является простой траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа, и существуют субъект-сессии sx,sySN такие, что userN(sx) = x, или sy = y, или userN(sy) = y, и выполняется условие (sx,sy, owna) AN. • Определение.Пусть G = (PA, user, roles,A, F, HE) состояние системы (G*, OP), в котором существуют субъект-сессии или недоверенные пользователи x, yNUS. Определим предикат simple_directly_access_own(x, y, G), который будет истинным тогда и только тогда, когда или x = y, или выполняется одно из условий: • если y NU и xNU, то существуют сущность eyE и рольryR такие, что (ey, executer) PA(UA(y)), rycan_manage_rights(AUA(y)), и или ryUA(x), или xfa(y, ey). • если y NUи xNSS, то существуют сущность eyE и рольryR такие, что (ey, executer) PA(UA(y)), rycan_manage_rights(AUA(y)), и или ryUA(user(x)), или xfa(y, ey). • если y NUи xLSS, то существуют сущность eyEи роль ryRтакие, что (ey, executer) PA(UA(y)), rycan_manage_rights(AUA(y)), и или ryroles(x), или xfa(y, ey). • если y S и xNU, то или (y, ownr) PA(UA(x)), или x[y]. • если yS и xNSS, то или (y, ownr) PA(UA(user(x))), или x[y], или (x, y, owna) A. • если yS и xLSS, то или (y, ownr) PA(roles(x)), или x[y], или (x, y, owna) A.
Случай без информационных потоков по памяти. Остров • Определение. Пусть G = (PA, user, roles,A, F, HE) состояние системы (G*, OP), в котором существует субъект-сессия или недоверенный пользователь xNUS. Назовем множество X NUSостровом субъект-сессии или недоверенного пользователяx, если справедливо равенство X= {x} {y (NUS) \ {x}: существует последовательность s1, …,sm (NUS) \ {x}, где s1= x, sm= y и m 2, такая, что для каждого 1 ≤ i< mистинен предикат simple_directly_access_own(si, si + 1, G)}. Определим island: NUS→2Nu 2S функцию, задающую для каждого субъект-сессии или недоверенного пользователя соответствующий им остров. • island_roles: NU (NSS) → 2R 2ARфункция, задающая для каждых недоверенного пользователя или недоверенной субъект-сессии xNU (NSS) роли, которыми обладают все субъект-сессии или недоверенные пользователи, принадлежащие острову x. При этом по определению справедливо равенство island_roles(x) = {rR AR: существует y island(x) и либо y NU и rUA(y) AUA(y), либо yNSSи rUA(user(y)) AUA(user(y)), либо yLSSи rroles(y)}. • island_rights: NU (NSS) → 2Pфункция, задающая для каждых недоверенного пользователя или недоверенной субъект-сессии xNU (NSS) права доступа, которыми обладают все субъект-сессии или недоверенные пользователи, принадлежащие острову x. При этом по определению справедливо равенство island_rights(x) = {pP: существует risland_roles(x) и pPA(r)}. • island_actions: NU (NSS) → 2P2Rфункция, задающая для каждых недоверенного пользователя или недоверенной субъект-сессии xNU (NSS) возможные действия, которыми обладают все субъект-сессии или недоверенные пользователи, принадлежащие острову x. При этом по определению справедливо равенство island_actions(x) = {(p, r) P R: существует y island(x) и либо y NU и (p, r) PA(UA(y)) can_manage_rights(AUA(y)), либо yNSS и (p, r) PA(UA(user(y))) can_manage_rights(AUA(user(y))), либо yLSS и (p, r) PA(roles(y)) can_manage_rights(roles(y) AR)}. • Утверждение. Пусть G0= (PA0, user0, roles0,A0, F0, HE0) состояние системы (G*, OP), в котором существуют недоверенный пользователь или недоверенная субъект-сессия xNU (NSS0) и субъект-сессия или недоверенный пользователь yisland(x) \ {x}. Тогда выполняется одно из условий: • еслиxNU, то истинен предикат simple_can_access_own(x, y, G0); • еслиxNSS0, то истинен предикат simple_can_access_own(user0(x), y, G0).
Случай без информационных потоков по памяти.Обозначения в графе доступов • если для роли rRARи права доступа (e, ) Pвыполняется условие (e, ) PA(r), то в графе доступов r соединена с eребром вида (а), и помеченным ; • если для недоверенного пользователя xNUи роли rRAR выполняется условие rUA(x) или rAUA(x), то в графе доступов x соединен с rребром вида (б), и помеченным UA или AUA, соответственно; • если для недоверенной субъект-сессии xNSSи роли rRAR выполняется условие rUA(user(x)) или rAUA(user(x)), то в графе доступов x соединена с rребром вида (в), и помеченным UA или AUA, соответственно; • если для доверенной субъект-сессии xLSSи роли rRAR выполняется условие rroles(x), то в графе доступов x соединена с rребром вида (г), и помеченным roles; • если для административной роли arAR и роли rRвыполняется условие r can_manage_rights(ar), то в графе доступов ar соединена с rребром вида (д), и помеченным cmr; • если для субъект-сессий или недоверенных пользователей x, yNUSвыполняется условие yisland(x), то в графе доступов xсоединен с yребром вида (е), и помеченным island.
Случай без информационных потоков по памяти.Мосты Определение.Пусть G = (PA, user, roles,A, F, HE) состояние системы (G*, OP), в котором существуют недоверенная субъект-сессия или недоверенный пользователь xNU (NSS), субъект-сессии или недоверенные пользователи y, z NUS. Будем говорить, что субъект-сессия или недоверенный пользователь y соединен простым мостом с субъект-сессией или недоверенным пользователем zчерез недоверенную субъект-сессию или недоверенного пользователя x, когда zisland(x) и существует роль ryR такая, что выполняются условия. Условие 1. Или yNUи ryUA(y), или yNSSи ryUA(user(y)), или y LSSи ryroles(y). Условие 2. Или zNUи rycan_manage_rights(AUA(z)), или z NSSи rycan_manage_rights(AUA(user(z))), или zLSSи rycan_manage_rights(roles(z) AR). Определение.Пусть G = (PA, user, roles,A, F, HE) состояние системы (G*, OP), в котором существуют недоверенная субъект-сессия или недоверенный пользователь xNU (NSS), субъект-сессии или недоверенные пользователи y, z NUS. Будем говорить, что субъект-сессия или недоверенный пользователь y соединен мостом с субъект-сессией или недоверенным пользователем zчерез недоверенную субъект-сессию или недоверенного пользователя x, когда существуют субъект-сессии или недоверенные пользователи v, w NUSи роли rv, ryRтакие, что v, w,z island(x), w,z island(v), z island(w), и выполняются условия. Условие 1. Или yNUи ryUA(y), или yNSSи ryUA(user(y)), или y LSSи ryroles(y). Условие2. Или vNUи rvUA(v), rycan_manage_rights(AUA(v)), или vNSSи rvUA(user(v)), rycan_manage_rights(AUA(user(v))), или v LSSи rvroles(v), rycan_manage_rights(roles(v) AR). Условие3. Или w NUи rvcan_manage_rights(AUA(w)), или w Sи (w, ownr) PA(rv). is_simple_bridge: (NU (NSS)) × (NUS) × (NUS) → {true, false} функция, для которой по определению справедливо равенство is_simple_bridge(x, y,z) =trueтогда и только тогда, когда y соединен простым мостом с z через x, где недоверенная субъект-сессия или недоверенный пользователь xNU (NSS), субъект-сессии или недоверенные пользователи y, zNUS. is_bridge: (NU (NSS)) × (NUS) × (NUS) → {true, false} функция, для которой по определению справедливо равенство is_bridge(x, y,z) =trueтогда и только тогда, когда y соединен мостом с z через x, где недоверенная субъект-сессия или недоверенный пользователь xNU (NSS), субъект-сессии или недоверенные пользователи y, zNUS.
Случай без информационных потоков по памяти.Мосты Простой мост Мост
Случай без информационных потоков по памяти.Условия истинности получения доступа владения Теорема.Пусть G0= (PA0, user0, roles0, A0, F0, HE0) состояние системы (G*, OP), в котором существуют недоверенный пользователь x NUи субъект-сессия или недоверенный пользователь y NUS0такие, что x ≠ y. Предикат simple_can_access_own(x, y, G0) является истинным тогда и только тогда, когда существуют последовательности недоверенных субъект-сессий или недоверенных пользователей x1, …, xmNU (NSS0), субъект-сессий или недоверенных пользователей y1, … , ymNUS0, где m 1, таких, что x1= x, ym= y, yiisland(xi), где 1 i<m, и выполняются условия. Условие 1. Если m 2, то справедливо равенство is_bridge(xm, ym 1, y) =true. Условие 2. Если m 3, то для каждого 2 i<mсправедливо равенство или is_bridge(xi, yi 1, yi) =true, или is_simple_bridge(xi, yi 1, yi) =true.
Фрагменты доказательств Фрагмент доказательства 1 Существуют сущность eyE0 и роль ryR такие, что (ey, executer) PA0(UA0(y)), rycan_manage_rights(AUA0(y)). По условию утверждения (e, ownr) PA0(UA0(user0(x))), следовательно, существует роль reUA0(user0(x)) такая, что (e, ownr) PA0(re). Тогда положим: op1 = create_first_session(y, ry, ey, sy); op2 = take_role(x, re); op3 = take_role(x, ar); op4 = take_role(sy, r). op5 = grant_right(x, r, (e, )). Таким образом, при выполнении условия 2 определения 6G0├op1…├ op5G5 траектория без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа, и в состоянии G5 выполняется условие user5(sy) = yи право доступа к сущности (e, ) de_facto_rights5(sy). Следовательно, истинен предикат can_share((e, ), y, G0), и условие 1 утверждения выполнено. Фрагмент доказательства 2 Проведем доказательство индукцией по длине траекторий N. Пусть N = 0, тогда (e, ) de_facto_rights0(sx). По определению функции de_facto_rights0(sx) возможны два случая. Первый случай: право доступа (e, ) PA0(roles0(sx)) PA0(UA0(user0(sx))). Положим y =x,sy = sx. Тогда истинен предикат directly_access_own(sx, sx, G0), выполнено условие 2 определения 8, и предикат directly_can_share((e, ), x, G0) является истинным. Второй случай: существует субъект-сессия syS0 такая, что (sx, sy, owna) A0, reroles0(sy), и (e, ) PA0(re) PA0(roles0(sy)) PA0(UA0(user0(sy))). Тогда выполнено условие 4 определения 7, и предикат directly_access_own(sx, sy, G0) является истинным. Положим y =user0(sy), следовательно, выполнено условие 2 определения 8, и предикат directly_can_share((e, ), x, G0) является истинным. Пусть N = 1, тогда из минимальности N следует, что выполняется условие (e, ) de_facto_rights0(sx). По определению функции de_facto_rights1(sx) возможны два случая…
Развитие ДП-моделей • Разработка моделей адекватных условиям функционирования существующих компьютерных систем; • Построение ДП-моделей существующих компьютерных систем для формального анализа их безопасности; • Анализ условий кооперации доверенных и недоверенных субъектов при реализации информационных потоков; • Построение алгоритмов замыкания графа доступов; • Анализ условий передачи прав доступа ролей для случая произвольного числа субъект-сессий, а также анализ условий возникновения информационных потоков по памяти или по времени; • Исследование способов использования динамических ограничений; • Исследование возможности реализации мандатного ролевого управления доступом с применением динамических ограничений, не позволяющих порождать запрещенные информационные потоки по времени.