Научная статья на тему 'Анализ условий получения доступа владения в рамках базовой ролевой ДП-модели без информационных потоков по памяти'

Анализ условий получения доступа владения в рамках базовой ролевой ДП-модели без информационных потоков по памяти Текст научной статьи по специальности «Математика»

CC BY
181
47
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
Ключевые слова
КОМПЬЮТЕРНАЯ БЕЗОПАСНОСТЬ / РОЛЕВАЯ МОДЕЛЬ / ДП-МОДЕЛИ

Аннотация научной статьи по математике, автор научной работы — Девянин Петр Николаевич

В рамках базовой ролевой ДП-модели анализируются условия получения недоверенными субъект-сессиями доступа владения к доверенным субъект-сессиям. При этом рассматривается случай, когда взаимодействует произвольное число субъект-сессий, и они не получают доступа владения друг к другу с использованием информационных потоков по памяти к функционально ассоциированным с субъект-сессиями сущностям.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Necessary and sufficient conditions for the reception by untrusted user sessions of access owning to trusted user sessions are stated within the base role DP-model of computer systems with the role management of access. It is supposed in the consideration that any number of user sessions cooperate, and they do not get access owning to each other with the use of memory information flows to entities functionally associated with the user sessions.

Текст научной работы на тему «Анализ условий получения доступа владения в рамках базовой ролевой ДП-модели без информационных потоков по памяти»

2009 Математические основы компьютерной безопасности №3(5)

МАТЕМАТИЧЕСКИЕ ОСНОВЫ КОМПЬЮТЕРНОЙ БЕЗОПАСНОСТИ

УДК 004.94

АНАЛИЗ УСЛОВИЙ ПОЛУЧЕНИЯ ДОСТУПА ВЛАДЕНИЯ В РАМКАХ БАЗОВОЙ РОЛЕВОЙ ДП-МОДЕЛИ БЕЗ ИНФОРМАЦИОННЫХ ПОТОКОВ ПО ПАМЯТИ1

П. Н. Девянин

Институт криптографии, связи и информатики, г. Москва, Россия E-mail: peter_devyanin@hotmail.com

В рамках базовой ролевой ДП-модели анализируются условия получения недоверенными субъект-сессиями доступа владения к доверенным субъект-сессиям.

При этом рассматривается случай, когда взаимодействует произвольное число субъект-сессий, и они не получают доступа владения друг к другу с использованием информационных потоков по памяти к функционально ассоциированным с субъект-сессиями сущностям.

Ключевые слова: компьютерная безопасность, ролевая модель, ДП-модели.

1. Основные элементы базовой ролевой ДП-модели

На основе семейства ролевых моделей RBAC [1-3] и семейства ДП-моделей компьютерных систем (КС) с дискреционным или мандатным управлением доступом [4] построена базовая ролевая ДП-модель (БР ДП-модель) [5, 6]. Эта модель ориентирована на анализ в КС с ролевым управлением доступом условий передачи прав доступа ролей и реализации информационных потоков по памяти и по времени.

В настоящее время в рамках БР ДП-модели не удалось завершить исследования КС с ролевым управлением доступом, на условия функционирования которых не наложено ограничений. В связи с этим в [5, 6] с применением БР ДП-модели выполнен анализ необходимых и достаточных условий передачи прав доступа для случая, когда в системе существуют только две субъект-сессии двух пользователей.

Рассмотрим БР ДП-модель, в которой взаимодействует произвольное число субъект-сессий, и они не получают доступа владения друг к другу с использованием информационных потоков по памяти к функционально ассоциированным с субъект-сессиями сущностям.

Основными элементами БР ДП-модели являются:

E = O U C — множество сущностей, где O — множество объектов, C — множество контейнеров и O П C = 0;

U — множество пользователей;

Lu — множество доверенных пользователей;

Nu — множество недоверенных пользователей;

1 Работа выполнена в рамках реализации ФЦП «Научные и научно-педагогические кадры инновационной России» на 2009-2013 годы. Результаты работы докладывались на Международной конференции с элементами научной школы для молодёжи, г. Омск, 7-12 сентября 2009 г.

S С E — множество субъект-сессий пользователей;

Ls — множество доверенных субъект-сессий;

Ns — множество недоверенных субъект-сессий;

R — множество ролей;

AR — множество административных ролей;

Rr = {readr ,writer, appendr, executer, ownr} — множество видов прав доступа;

Ra = {reada, writea, appenda, owna} —множество видов доступа;

Rf = {writem,writet} —множество видов информационных потоков;

A С S х E х Ra — множество доступов субъект-сессий к сущностям;

F С E х E х Rf — множество информационных потоков между сущностями;

P С E х Rr — множество прав доступа к сущностям;

UA : U ^ 2R — функция авторизованных ролей пользователей;

AUA : U ^ 2ar — функция авторизованных административных ролей пользователей;

PA : R ^ 2р — функция прав доступа ролей;

user : S ^ U — функция принадлежности субъект-сессии пользователю;

roles : S ^ 2r U 2ar — функция текущих ролей субъект-сессий;

can_manage_rights : AR ^ 2r — функция администрирования прав доступа ролей;

He : E ^ 2е — функция иерархии сущностей;

Hr : R ^ 2r — функция иерархии ролей;

Har : AR ^ 2ar — функция иерархии административных ролей;

G = (PA, user, roles, A, F, He) — состояние системы;

E(G*, OP) —система, при этом G* —множество всех возможных состояний, OP — множество правил преобразования состояний;

G \~ар G' — переход системы T,(G*, OP) из состояния G в состояние G' с использованием правила преобразования состояний op Е OP;

T,(G*, OP, G0) —система T,(G*, OP) с начальным состоянием G0;

[s] С E U U — множество сущностей, функционально ассоциированных с субъект-сессией s (при этом по определению выполняется условие s Е [s]), и пользователей, каждый из которых может создать субъект-сессию, являющуюся функционально ассоциированной сущностью с субъект-сессией s;

fa : U х E ^ 2е U 2U — функция, задающая множества сущностей, функционально ассоциированных с субъект-сессией, при ее создании пользователем (или от имени пользователя другой субъект-сессией) из сущности. При этом если пользователь u Е U или субъект-сессия от имени пользователя u не может создать из сущности e Е E новую субъект-сессию, то по определению fa(u, e) = 0. Кроме того, если для пользователя u Е U и сущности e Е E существует пользователь x Е U, такой, что выполняется условие x Е fa(u,e), то по определению будем считать, что пользователь x может создать субъект-сессию, которая будет являться функционально ассоциированной сущностью с субъект-сессией, создаваемой пользователем u из сущности e. По определению выполняется условие: для каждой субъект-сессии s Е S существует единственная сущность es Е E, такая, что справедливо равенство fa(user(s), es) = [s];

y(E) С Ls х E — множество пар вида (доверенная субъект-сессия, сущность), относительно которых корректна доверенная субъект-сессия у;

de_facto_roles : S ^ 2Rl>ar — функция фактических текущих ролей субъект-сессий, при этом по определению в каждом состоянии системы G = (PA, user, roles, A, F, He) для каждой субъект-сессии si Е S выполняется равенство:

de_facto_roles(s1) = roles(s1) U {r Е R U AR : 3s2 Е S [(s1, s2,owna) Е A & & r Е roles(s2)]};

de_facto_rights : S ^ 2P — функция фактических текущих прав доступа субъект-сессий, при этом по определению в каждом состоянии системы G = (PA, user, roles, A, F, He) для каждой субъект-сессии s Е S выполняется равенство:

de_facto_rights(s) = {p Е P : 3r Е de_facto_roles(s) [p Е PA(r)]}; de_facto_actions : S ^ 2P х 2r — функция фактических возможных дей-

ствий субъект-сессий, при этом по определению в каждом состоянии системы G = (PA, user, roles, A, F, He) для каждой субъект-сессии s1 Е S выполняется равенство:

de_facto_actions(s1) = (PA(roles(s1)) х can _manage _rights(roles(s1) П AR)) U U{(p,r) Е PхR : 3s2 Е S 3(s1 ,s2,owna) Е A [r Е can_manage_rights(roles(s2)nAR) & & p Е PA(roles(s2))]}.

В БР ДП-модели определены следующие правила преобразования состояний:

— монотонные: take_role(x, r), grant_right(x,r, (y,ar)), 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);

— и немонотонные: remove_role(x, r), remove_right(x,r, (y,ar)), delete_entity(x, y, z). По аналогии с базовой ДП-моделью может быть доказано, что в рамках БР ДП-

модели при анализе условий передачи прав доступа, реализации информационных потоков по памяти или по времени можно обойтись применением только монотонных правил преобразования состояний.

2. Условия получения права доступа владения

2.1. Вспомогательные предложения С целью описания в рамках БР ДП-модели условий получения недоверенной субъект-сессией доступа владения к доверенной субъект-сессии рассмотрим случай, когда взаимодействует произвольное число субъект-сессий, и они не получают доступа владения друг к другу с использованием информационных потоков по памяти к функционально ассоциированным с субъект-сессиями сущностям.

Используем следующие определение и предположение БР ДП-модели.

Определение 1. Назовем траекторию функционирования системы T.(G*,OP) траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа, если при ее реализации используются только монотонные правила преобразования состояний, и доверенные субъект-сессии:

— не берут роли в множество текущих ролей;

— не дают другим ролям права доступа к сущностям;

— не получают доступа владения к субъект-сессиям.

Предположение 1. Каждые пользователь или субъект-сессия системы T,(G*, OP) вне зависимости от имеющихся у них авторизованных ролей являются либо доверенными, либо недоверенными. Доверенные пользователи или субъект-сессии не создают новых субъект-сессий. Каждые недоверенный пользователь или субъект-сессия могут создать только недоверенную субъект-сессию.

Дадим определения.

Определение 2. Траекторию без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа G0 ^~opi G1 \~op2 ... ^~oPN Gn , где N ^ 0, назовем простой, если при ее реализации для 0 ^ i ^ N каждое правило op i не является правилом вида control(x, y, z), использующим для получения доступа владения субъект-сессией x к субъект-сессии y информационный поток по памяти (x, z, writem), где z Е [y].

Определение 3. Пусть G0 = (PA0,user0,roles0, A0, F0, HEo) —состояние системы E(G*, OP), в котором существуют недоверенный пользователь x Е Nu и субъект-сессия или недоверенный пользователь y Е Nu U S0, такие, что x = y. Определим предикат simple_can_access_own(x, y, G0), который будет истинным тогда и только тогда, когда существуют состояния G1,... , Gn и правила преобразования состояний op1,... ,opN, такие, что G0 \~opi G1 hop2 ... \~opN GN, где N ^ 0, является простой траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа, и существуют субъект-сессии sx, sy Е Sn, такие, что usern(sx) = x, или sy = y, или userN(sy) = y и выполняется условие (sx, sy,owna) Е An.

Для упрощения записи алгоритмически проверяемых необходимых и достаточных условий истинности предиката simple_can_access_own(x, y, G0) используем следующие определения.

Определение 4. Пусть G = (PA, user, roles, A, F, He) —состояние системы

E(G*, OP), в котором существуют субъект-сессии или недоверенные пользователи x,y Е Nu U S. Определим предикат simple_directly_access_own(x, y, G), который будет истинным тогда и только тогда, когда или x = y, или выполняется одно из следующих условий:

1. Если y Е Nu и x Е Nu , то существуют сущность ey Е E и роль ry Е R, такие, что (ey,executer) Е PA(UA(y)), ry Е can_manage_rights(AUA(y)) и выполняется одно из условий:

— ry Е UA(x);

— x Е fa(y,ey).

2. Если y Е Nu и x Е Ns П S, то существуют сущность ey Е E и роль ry Е R, такие, что (ey,executer) Е PA(UA(y)), ry Е can_manage_rights(AUA(y)) и выполняется одно из условий:

— ry Е UA(user(x));

— x Е fa(y,ey).

3. Если y Е Nu и x Е Ls П S, то существуют сущность ey Е E и роль ry Е R, такие, что (ey,executer) Е PA(UA(y)), ry Е can_manage_rights(AUA(y)) и выполняется одно из условий:

— ry Е roles(x);

— x Е fa(y,ey).

4. Если y Е S и x Е Nu , то выполняется одно из условий:

— (y,ownr) Е PA(UA(x));

— x Е [y].

5. Если y Е S и x Е Ns П S, то выполняется одно из условий:

— (y,ownr) Е PA(UA(user(x)));

— x Е [y];

— (x, y, owna) Е A.

6. Если y Е S и x Е Ls П S, то выполняется одно из условий:

— (y,ownr) Е PA(roles(x));

— x Е [y];

— (x, y, owna) Е A.

Определение 5. Пусть G = (PA, user, roles, A, F, HE) —состояние системы

E(G*, OP), в котором существует субъект-сессия или недоверенный пользователь x Е Nu U S. Назовем множество X С Nu U S островом субъект-сессии или недоверенного пользователя x, если X = {x} U {y Е (Nu U S) \ {x}: существует последовательность sis2 ... sm, где si = x, s2,...,sm Е (Nu U S)\{x}, sm = y и m ^ 2, такая, что для каждого i, 1 ^ i < m, истинен предикат simple_directly_access_own(si, si+1, G)} и s^ = x. Определим функцию island : Nu U S ^ 2NuUS, задающую для каждых субъект-сессии или недоверенного пользователя соответствующий им остров.

В отличие от островов в классической модели Take-Grant острова в БР ДП-модели задаются для каждых субъект-сессии или недоверенного пользователя в отдельности и могут пересекаться.

Из определения 5 следует, что если существуют субъект-сессия или недоверенные пользователи x и y, такие, что y Е island(x), то island(y) С island(x).

Утверждение 1. Пусть G0 = (PAo,Usero,roles0, A0, F0, He0) — состояние системы E(G*, OP), в котором существуют недоверенный пользователь или недоверенная субъект-сессия x Е Nu U (Ns П So) и субъект-сессия или недоверенный пользователь y Е island(x) \ {x}. Тогда справедливо одно из предложений:

— если x Е Nu, то истинен предикат simple_can_access_own(x, y, G0);

— если x Е Ns П So, то истинен предикат simple_can_access_own(user0(x), y, G0).

Доказательство. Пусть выполнены условия утверждения. Тогда по определению 5 в Nu U S существует последовательность s^ ... sm, где m ^ 2, s1 = x, sm = y и для каждого i = 1,... , m-1 истинен предикат simple_directly_access_own(s,¿, si+1, G0) и si+1 = x. Докажем утверждение индукцией по длине m этой последовательности.

Пусть m = 2. Тогда справедливо неравенство x = y, истинен предикат simp-le_directly_access_own(x,y,G0) и по определению 4 истинен предикат directly_-access_own(x, y, G0) [6]. Следовательно (см. утверждение 2 и определение 13 в [6]), существуют состояния G1,... , Gn и правила преобразования состояний op1,... , opN, такие, что G0 \~opi G1 \~ap2 ... \~vpN Gn, где N ^ 0, является простой траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа, и существуют субъект-сессии sx,sy Е Sn, такие, что (sx,sy,owna) Е An и выполняется одно из условий:

— userN (sx) = x,userN (sy ) = y;

userN (sx) ^ sy y;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

— sx = x, userN (sy) = y;

— sx = x, sy = y.

Тем самым в случае m = 2 утверждение доказано.

Предположим (предположение индукции), что таким образом утверждение доказано всегда, когда 2 ^ m ^ l для некоторого l ^ 2, и докажем его (шаг индукции), когда m = l + 1.

Итак, пусть m = l + 1 и z = sm-1. Тогда x Е Nu U (Ns П S0) и z Е (Nu U So) \ {x}.

Рассмотрим случай, когда выполняются условия x Е Ns П So, z Е S0. Иные случаи

рассматриваются аналогично. Так как по определению 5 z Е island(x) \ {x}, то по предположению индукции существуют состояния Gi,... , Gn и правила преобразования состояний opi,... , opN, такие, что G0 \~ор! Gi \~ор2 ... \~opN Gn, где N ^ 0, является простой траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа и (x,z,owna) Е An. Если z = у, то шаг индукции обоснован. Пусть поэтому z = у. Возможны два случая.

Первый случай: z Е Ns П S0. Тогда по определению 5 у Е island(z) \ {z}, истинен предикат simple_directly_access_own(z, у, G0) и по предположению индукции существуют состояния Gn+i,... , Gk и правила преобразования состояний opN+i,... ,opK, такие, что Gn ^opN+1 Gn+i ^opN+2 ... ^opK Gk , где K ^

N, является простой траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа и (z,y,owna) Е Ak. Положим opK+i = take_access_own(x,z,y). Тогда G0 \~opi Gi hop2 ... \~opK+1 GK+i является простой траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа, выполняется условие (x,y,owna) Е Ak+i, и по определению 3 шаг индукции обоснован.

Второй случай: z Е Ls П S0. Тогда истинен предикат simple_directly_-access_own(z,y, G0) и выполняется условие 6 определения 4.

Если (y,ownr) Е PA(roles0(z)), то (y,ownr) Е de_facto_rights(x) и тогда пусть opN+i = access_own(x,y). Если z Е [y], то положим opN+i = control(x, y, z). Наконец, если (z,y,owna) Е A0, то пусть opN+i = take_access_own(x, z,y).

Таким образом, G0 \~opi Gi \~op2 ... \~opN+1 Gn+1 является простой траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа, выполняется условие (x, y, owna) Е An+i, и по определению 3 шаг индукции обоснован.

Утверждение доказано. ■

Введём обозначения:

island_roles : Nu U (Ns П S) ^ 2R U 2AR — функция, задающая для каждых недоверенного пользователя или недоверенной субъект-сессии x Е Nu U (Ns П S) роли, которыми обладают все субъект-сессии или недоверенные пользователи, принадлежащие острову x. При этом по определению справедливо равенство island_roles(x) = = {r Е R U AR : 3y Е island(x) [(y Е Nu & r Е UA(y) U AUA(y)) V (y Е Ns П S & r Е UA(user(y)) U AUA(user(y))) V (y Е Ls П S & r Е roles(y))]};

island_rights : Nu U (Ns П S) ^ 2P — функция, задающая для каждых недоверенного пользователя или недоверенной субъект-сессии x Е Nu U (Ns П S) права доступа, которыми обладают все субъект-сессии или недоверенные пользователи, принадлежащие острову x. При этом по определению справедливо равенство island_rights(x) = {p Е P : 3r Е island_roles(x) [p Е PA(r)]};

island_actions : Nu U (Ns П S) ^ 2P x 2R — функция, задающая для каждых недоверенного пользователя или недоверенной субъект-сессии x Е Nu U U(Ns П S) возможные действия, которыми обладают все субъект-сессии или недоверенные пользователи, принадлежащие острову x. При этом по определению справедливо равенство island_actions(x) = {(p,r) Е P x R : 3y Е island(x)

[(y Е Nu & (p,r) Е PA(UA(y)) x can_manage_rights(AUA(y))) V (y Е Ns П S & & (p, r) Е PA(UA(user(y))) x can_manage_rights(AUA(user(y)))) V (y Е Ls П S &

& (p,r) Е PA(roles(y)) x can_manage_rights(roles(y) П AR))]}.

Следствие 1. Пусть G0 = (PA0,user0,roles0,A0,F0,HEo) —состояние системы E(G*, OP), в котором существуют недоверенный пользователь или недоверенная

субъект-сессия x Е Nu U (Ns П S0). Тогда существуют состояния Gi,... , Gn и правила преобразования состояний op]_,... ,opN, такие, что G0 \~opi Gi \~op2 ... \~opN Gn, где N ^ 0, является простой траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа, и существует недоверенная субъект-сессия sx Е Ns П Sn, такая, что либо userN(sx) = x, либо sx = x и выполняются условия:

— island_roles(x) = island_roles(sx) С de_facto_rolesN(sx) (множество фактических ролей субъект-сессии sx включает все роли субъект-сессий или пользователей, принадлежащих ее острову);

— island_rights(x) = island_rights(sx) С de_facto_rightsN(sx) (множество фактических прав доступа субъект-сессии sx включает все права доступа субъект-сессий или пользователей, принадлежащих ее острову);

— island_actions(x) = island_actions(sx) С de facto actionsN(sx) (множество фактических возможных действий субъект-сессии sx включает все возможные действия субъект-сессий или пользователей, принадлежащих ее острову).

Доказательство. Если x Е Nu , то по предположению 1 недоверенный пользователь x может создать недоверенную субъект-сессию sx, такую, что user(sx) = x. При этом из определений функций island_roles, island_rights, island_actions следует, что справедливы равенства island_roles(x) = island_roles(sx), island_rights(x) = = island_rights(sx), island_actions(x) = island_actions(sx). Если x Е Ns П S0, то положим sx = x.

Из утверждения 1 следует, что существуют состояния Gi,... , Gn и правила преобразования состояний opi,... , opN, такие, что G0 \~opi Gi \~op2 ... \~opN Gn, где N ^ 0, является простой траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа. При этом выполняются условия:

— если y Е (island(x)\{x}) П Nu, то существует субъект-сессия sy Е Sn, такая, что userN (sy) = y и (sx, sy, owna) Е An ;

— если y Е (island(x)\{x}) П S0, то (sx, sy, owna) Е An.

Таким образом, в состоянии Gn выполняются условия:

— island_roles(x) = island_roles(sx) С de_facto_rolesN(sx);

— island_rights(x) = island_rights(sx) С de_facto_rightsN(sx);

— island_actions(x) = island_actions(sx) С de__facto_actionsN(sx).

Утверждение следствия доказано. ■

2.2. Основная теорема Дадим необходимые определения.

Определение 6. Пусть G = (PA, user, roles, A, F, He) —состояние системы

E(G*, OP), в котором существуют недоверенная субъект-сессия или недоверенный пользователь x Е Nu U (Ns П S) и субъект-сессии или недоверенные пользователи y,z Е Nu US. Будем говорить, что субъект-сессия или недоверенный пользователь y соединяется простым мостом с субъект-сессией или недоверенным пользователем z через недоверенную субъект-сессию или недоверенного пользователя x, если z Е island(x) и существует роль ry Е R, такая, что выполняются следующие два условия.

1. Или y Е Nu и ry Е UA(y), или y Е Ns П S и ry Е UA(user(y)), или y Е Ls П S и ry Е roles(y).

2. Или z Е Nu и ry Е can_manage_rights(AUA(z)), или z Е Ns П S и ry Е can_manage_rights(AUA(user(z))), или z Е Ls П S и ry Е can_manage_-rights(roles(z) П AR).

Определение 7. Пусть G = (PA, user, roles, A, F, HE) —состояние системы

E(G*, OP), в котором существуют недоверенная субъект-сессия или недоверенный пользователь x Е Nu U (Ns П S) и субъект-сессии или недоверенные пользователи y,z Е Nu US. Будем говорить, что субъект-сессия или недоверенный пользователь y соединяется мостом с субъект-сессией или недоверенным пользователем z через недоверенную субъект-сессию или недоверенного пользователя x, когда существуют субъект-сессии или недоверенные пользователи v,w Е Nu U S и роли rv,ry Е R, такие, что v,w,z Е island(x), w,z Е island(v), z Е island(w) и выполняются следующие условия.

1. Или y Е Nu и ry Е UA(y), или y Е Ns П S и ry Е UA(user(y)), или y Е Ls П S и ry Е roles(y).

2. Или v Е Nu и rv Е UA(v), ry Е can_manage_rights(AUA(v)), или v Е Ns П S и rv Е UA(user(v)), ry Е can_manage_rights(AUA(user(v))), или v Е Ls П S и rv Е roles(v), ry Е can_manage_rights(roles(v) П AR).

3. Или w Е Nu и rv Е can_manage_rights(AUA(w)), или w Е S и (w,ownr) Е Е PA(rv).

Введём обозначения:

is_simple_bridge : (Nu U (NsП S)) x (Nu U S) x (Nu U S) ^ {true, false} — функция, для которой по определению справедливо равенство is_simple_bridge(x,y, z) = true тогда и только тогда, когда y соединен простым мостом с z через x, где x Е Nu U U(Ns П S), y, z Е Nu U S;

is_bridge : (Nu U (Ns П S)) x (Nu U S) x (Nu U S) ^ {true, false} — функция,

для которой по определению справедливо равенство is_bridge(x, y, z) = true тогда и только тогда, когда y соединен мостом с z через x, где x Е Nu U (Ns П S), y,z Е Nu U S.

В отличие от мостов в классической модели Take-Grant мосты в БР ДП-модели являются ориентированными. То есть в БР ДП-модели, если субъект-сессия или недоверенный пользователь y соединяется мостом или простым мостом с субъект-сессией или недоверенным пользователем z, то не обязательно z соединяется мостом с y.

Пусть G = (PA, user, roles, A, F, HE) — состояние системы T.(G*, OP). В дополнение к обозначениям, введенным при определении графа доступов в базовой ДП-модели, используем следующие обозначения (см. рис. 1):

— вершины из множества U U S (соответствующие пользователям и субъект-сессиям) в графе доступов будут обозначаться «•»;

— вершины из множества R U AR (соответствующие ролям и административным ролям) в графе доступов будут обозначаться «<*»;

— если для роли r Е R U AR и права доступа (e, а) Е P выполняется условие (e, а) Е Е PA(r), то в графе доступов r соединена с e ребром вида рис. 1, а, помеченным а;

— если для недоверенного пользователя x Е Nu и роли r Е R U AR выполняется условие r Е UA(x) или r Е AUA(x), то в графе доступов x соединен с r ребром вида рис. 1, б, помеченным UA или AUA соответственно;

— если для недоверенной субъект-сессии x Е Ns П S и роли r Е R U AR выполняется условие r Е UA(user(x)) или r Е AUA(user(x)), то в графе доступов x соединен с r ребром вида рис. 1, в, помеченным UA или AUA соответственно;

— если для доверенной субъект-сессии x Е Ls П S и роли r Е R U AR выполняется условие r Е roles(x), то в графе доступов x соединен с r ребром вида рис. 1, г, помеченным roles;

— если для административной роли ar Е AR и роли r Е R выполняется условие r Е can_manage_rights(ar), то в графе доступов ar соединена с r ребром вида рис. 1, д, помеченным cmr;

— если для субъект-сессий или недоверенных пользователей x,y Е Nu U S выполняется условие y Е island(x), то в графе доступов x соединен с y ребром вида рис. 1, е, помеченным island.

а) а

*-----------*~<g¡)

г е

е) AUA

•--------------*■*

х е Afjn S г

д) cmr

* ^- *

ar г

Рис. 1. Обозначения ребер в графе доступов

Пример 1. Пусть G = (PA, user, roles, A, F, He) —состояние системы Tj(G*,OP), в котором существуют недоверенная субъект-сессия или недоверенный пользователь x Е Nu U (Ns П S) и субъект-сессии или недоверенные пользователи y,z Е Nu U S. С использованием введенных обозначений приведены примеры простого моста (рис. 2, а) и моста (рис. 2, б), соединяющих y с z через x.

При этом в состоянии, представленном на рис. 2, а, выполняется условие is_simple_bridge(x,y, z) = true, а в состоянии, представленном на рис. 2, б, — условие is_bridge(x,y,z) = true.

Сформулируем и обоснуем алгоритмически проверяемые необходимые и достаточные условия истинности предиката simple_can_access_own(x, y, Go).

Теорема 1. Пусть G0 = (PA0,user0,roles0, A0, F0, HEo) —состояние системы

E(G*, OP), в котором существуют недоверенный пользователь x Е Nu и субъект-сессия или недоверенный пользователь y Е Nu U S0, такие, что x = y. Предикат simple_can_access_own(x, y, G0) является истинным тогда и только тогда, когда существуют последовательности недоверенных субъект-сессий или недоверенных пользователей x1,... , xm Е NuU(NsПSo) и субъект-сессий или недоверенных пользователей y1,... ,ym Е NuUS0, где m ^ 1, таких, что x1 = x, ym = y, yi Е island(xi) для 1 ^ i ^ m и выполняются следующие условия.

1. Если m ^ 2, то справедливо равенство is_bridge(xm,ym-1,y) = true.

2. Если m ^ 3, то для каждого i, 2 ^ i < m, или is_bridge(xi,yi-1,yi) = true, или is _simple _bridge(xi,yi-1,yi) = true.

Доказательство. Докажем достаточность выполнения условий теоремы для истинности предиката simple_can_access_own(x, y, G0). Применим индукцию по длине m последовательностей субъект-сессий или недоверенных пользователей.

v е Lsn S х е Nsr\S

Рис. 2. Примеры мостов: простой мост (а); мост (б)

Пусть m = 1, тогда по условию y Е island(x). Следовательно, по утверждению 1 предикат simple_can_access_own(x, y, Go) является истинным.

Пусть m = 2, тогда по условию is_bridge(x2,yi,y) = true, yi Е island(x), y Е island(x2). Значит, по определению 7 существуют субъект-сессии или недоверенные пользователи v,w Е Nu U S0 и роли rv,ryi Е R, такие, что v,w Е island(x2), w,y Е island(v), y Е island(w) и выполняются следующие условия:

— или yi Е Nu и ry1 Е ПЛо^^ли yi Е NsPSo и ry1 Е UAo(usero(yi)), или yi Е LsnSo и ryi Е roleso(yi);

— или v Е Nu и rv Е UA0 (v), ryi Е can_manage_rights(AUA0(v)), или v Е Ns n S0 и rv Е UA0(user0(v)), ryi Е can_manage_rights(AUA0(user0(v))), или v Е Ls n S0 и rv Е roles0(v), ryi Е can_manage_rights(roles0(v) П AR);

— или w Е Nu и rv Е can_manage_rights(AUA0(w)), или w Е S0 и (w,ownr) Е

Е PA0(rv).

Пример выполнения условий теоремы для случая m = 2 приведен на рис. 3.

Если w Е Nu и rv Е can_manage_rights(AUA0(w)), то по предположению 1 существует сущность ew Е E0, такая, что (ew,executer) Е PA0(UA0(w)). Положим в этом случае opi = create_first_session(w, rv,ew, sw) и M = 1. Если же w Е S0, то положим sw = w и M = 0.

Таким образом, выполняются условия (sw,ownr) Е PAm(rv), sw Е island(x2), sw Е island(v), y Е island(sw) и ((sw,ownr),ryi) Е island_actions(x2).

По утверждению следствия 1 существуют состояния Gm+i,... ,Gl и правила преобразования состояний opM+i,... , opL, такие, что Gm \~opM+i Gm+i \~opM+2 ... ^~opL Gl, где L — M ^ 0, является простой траекторией без кооперации доверенных и недоверенных

Рис. 3. Пример выполнения условий теоремы для случая т = 2

субъект-сессий для передачи прав доступа, и существует недоверенная субъект-сессия sX2 Е Ns П Sl, такая, что либо userL(sX2) = x2, либо sx2 = x2, и в состоянии Gl выполняется условие island _actions(x2) = island _actions(sX2) С de_facto_actionsL(sX2). Следовательно, выполняется условие ((sw,ownr),ryi) Е de_facto_actionsL(sX2). Положим opL+\ = grant_right(sX2 ,ryi, (sw,ownr)).

Значит, в состоянии Gl+i, таком, что Gl ^~opL+1 Gl+i, выполняются условия (sw,ownr) Е PA(ryi) и y Е island(x). Таким образом, по утверждению 1 истинен предикат simple_can_access_own(x, y, Gl+i). Так как траектория G0 hopi G1 hop2 ... hopL+1 Gl+i является простой траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа, то по определению 3 является истинным предикат simple_can_access_own(x, y, G0).

Пусть m > 2 и утверждение верно для всех последовательностей длины l < m. Докажем достаточность условий теоремы при длине последовательности, равной m.

По условию теоремы существуют последовательности недоверенных субъект-сессий или недоверенных пользователей x1,... , xm Е Nu U (Ns П S0) и субъект-сессий или недоверенных пользователей yi,... ,ym Е Nu U S0, таких, что xi = x, ym = y, yi Е island(xi), где 1 ^ i ^ m, и

— справедливо равенство is_bridge(xm,ym-1,y) = true;

— для каждого i, 2 ^ i < m, или is_bridge(xi, yi-1,yi) = true, или is _simple _bridge(xi, yi-i, yi) = true.

По предположению индукции истинен предикат simple _can _access _own(x2 ,y, G0). Используя технику доказательства, примененную для случая m = 2, получаем, что существуют состояния G1,... , Gm и правила преобразования состояний op1,... , opM, такие, что G0 hopi G1 hop2 ... hopM Gm , где M ^ 0, является простой траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа, и существует роль ry2 Е R, такая, что выполняются следующие условия:

— или y2 е Nu и Ty2 е UAo(y2), или y2 е NsnSo и Ty2 е UAo (usero(y2)), или y2 е LsnSo и Ty2 е roleso(y2);

— (y,ownr) е PAm(ty2).

Если выполняется условие is_bridge(x2,yi,y2) = true, то по аналогии с рассмотренным случаем для m = 2 получаем, что является истинным предикат

simple_can_access_own(x, y, G0).

Пусть выполняется условие is_simple_bridge(x2,yl,y2) = true (рис. 4).

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Рис. 4. Пример выполнения условия is_simple_-bridge(x2,yl,y2) = true

Так как (y,ownr) е PAm(ry2), y2 е island(x2) и ((y,ownr),ryi) е island_actions(x2), то по утверждению следствия 1 существуют состояния Gm+i,... ,Gl и правила преобразования состояний opM+i,... , opL, такие, что Gm \~opM+1 Gm+i \~opM+2 ... ^~opL Gl, где L — M ^ 0, является простой траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа, и существует недоверенная субъект-сессия sx2 е Ns П Sl, такая, что либо userL(sX2) = x2, либо sx2 = x2 и в состоянии Gl выполняется условие island_actions(x2) = island_actions(sX2) С С de_facto_actionsL(sX2). Следовательно, ((y,ownr),ryi) е de_facto_actionsL(sX2). Положим opL+l = grant_right(sX2,ryi, (y,ownr)).

Значит, в состоянии Gl+]_, таком, что Gl \~opL+1 Gl+]_, выполняются условия (y,ownr) е PA(ryi) и y е island(x). Таким образом, по утверждению 1 истинен предикат simple_can_access_own(x, y, GL+l). Так как траектория G0 \~opi Gl \~op2 ... \~opL+i Gl+1 является простой траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа, то по определению 3 является истинным предикат simple_can_access_own(x, y, G0). Индуктивный шаг доказан.

Обоснована достаточность выполнения условий теоремы для истинности предиката simple_can_access_own(x, y, G0).

Докажем необходимость выполнения условий теоремы для истинности предиката simple_can_access_own(x, y, G0). По определению 3 существуют состояния Gl,... , Gn и правила преобразования состояний opl,... , opn, такие, что G0 \~opi Gl \~op2 ... \~cvn Gn , где N ^ 0, является простой траекторией без кооперации доверенных и недоверенных субъект-сессий для передачи прав доступа, и существуют субъект-сессии sX, sy е Sn, такие, что userN(sX) = x, или sy = y, или userN(sy) = y и выполняется условие (sX,sy,owna) е An.

Среди всех траекторий выберем ту, у которой длина N является минимальной. Проведем доказательство индукцией по длине траекторий N.

Пусть N = 0, тогда (sX,sy,owna) е A0. По определению 4 истинен предикат simple_directly_access_own(x, y, G0) и y е island(x). Положим m =1. Следовательно, выполнены условия теоремы.

Пусть N = 1, тогда из минимальности N следует, что (sX, sy, owna) е A0. Возможны три случая.

Первый случай: opl = control(sX, sy ,sz), где sz е E0 и sz е [sy ]. При этом

либо sX = sz, либо sz е S0 и (sX, sz, owna) е A0.

Второй случай: opl = take_access_own(sX, sz ,sy) и {(sX,sz ,owna), (sz ,sy, owna)} С A0.

Третий случай: opl = access _own(sX, sy) и (sy, ownr) е de_ facto _rights0(sX). Значит, существует sz е S0, такая, что (sX, sz, owna) е A0 и (sy, ownr) е PA0(roles0(sz)).

Таким образом, в каждом из трех случаев по определению 5 выполняется условие y е island(x). Положим m = 1. Следовательно, выполнены условия теоремы.

Пусть N > 1 и утверждение теоремы верно для всех траекторий дли-

ны l < N. Докажем, что при длине траектории N, если истинен предикат simple_can_access_own(x, y, G0), то выполняются условия теоремы.

Из минимальности N следует, что (sX,sy,owna) е An-l. Возможны три случая.

Первый случай: opN = control (sX, sy, sz), где sz е EN-l и sz е [sy ]. При этом либо sX = sz, либо sz е Sn-i и (sX, sz, owna) е An-l. Если sX = sz, то по определению 5 выполняется условие y е island(x). Положим m = 1. Следовательно, выполнены условия теоремы. Пусть sX = sz, тогда положим z = userN-l(sz). Возможны две ситуации.

Первая ситуация: sz е S0. Тогда по предположению 1 z е Nu , по определению 5 истинен предикат simple_directly_access_own(z,y,G0) и истинен предикат simple_can_access_own(x, z, G0) с длиной траектории меньше N. Следовательно, по предположению индукции существуют последовательности недоверенных субъект-сессий или недоверенных пользователей xl,... , xm е Nu U (Ns П S0) и субъект-сессий или недоверенных пользователей yl,... ,ym е Nu U S0, где m ^ 1, таких, что xl = x, ym = z, yi е island(xi), где 1 ^ i ^ m, и

— если m ^ 2, то справедливо равенство is_bridge(xm,ym-l, z) = true;

— если m ^ 3, то для каждого i, 2 ^ i < m, или is_bridge(xi,yi-l,yi) = true, или

is _simple _bridge(xi,yi-l,yi) = true.

Если m = 1, то по определению 5 выполняется условие y е island(x). Если m ^ 2, то по определениям 5 и 7 справедливо равенство is_bridge(xm,ym-l,y) = true. Следовательно, условия теоремы выполнены.

Вторая ситуация: sz е S0. По определению 5 истинен предикат simple_directly_-access_own(sz,y, G0) и истинен предикат simple_can_access_own(x, sz, G0) с длиной траектории меньше N. Далее аналогично обоснованию в первой ситуации получаем, что условия теоремы выполнены.

Второй случай: opN = take _access _own(sX, sz, sy) и {(sX, sz, owna), (sz, sy,

owna)} С An-l. Положим z = userN-l(sz). Возможны две ситуации.

Первая ситуация: sz е S0 или sz е Ns П S0. Тогда по предположению 1 выполняется условие z е Nu и истинны предикаты simple_can_access_own(x, z, G0) и simple_can_access_own(z,y,G0) с длиной траекторий меньше N. Следовательно, по предположению индукции существуют последовательности недоверенных субъект-сессий или недоверенных пользователей xl,... ,x'n,xi,... , x'l е NuU(NsnS0) и субъект-

сессий или недоверенных пользователей yl,... ,уП ,y'(,... ,yk е Nu US0, где 1 ^ n, 1 ^ к, таких, что x\ = x, xl = y'n = z, y'l = y, yi е island(xi), где 1 ^ i ^ n, y'( е island(xi), где 1 ^ i ^ k, и

— если n ^ 2, то справедливо равенство is_bridge(x'n,y'n_l,z) = true;

— если к ^ 2, то справедливо равенство is_bridge(x'i,y'l_l,y) = true;

— если n ^ 3, то для каждого i, 2 ^ i < n, или is_bridge(x'i,yli-l,yli) = true, или is _simple _bridge(x'i,y[-l,yi) = true;

— если к ^ 3, то для каждого i, 2 ^ i < к, или is _bridge(x" ,y"—l,y") = true, или is _simple _bridge(x'( ,y"—l,y") = true.

Положим: m = n + к — 1; xi = xi, где 1 ^ i ^ n; xn+i-l = xi, где 2 ^ i ^ k; yi = yi,

где 1 ^ i < n; yn+i-l = yi, где 1 ^ i ^ k. Тогда условия теоремы выполнены.

Вторая ситуация: sz е Ls П S0. Тогда по определению 3 выполняется условие (sz,sy,owna) е A0 и истинен предикат simple_can_access_own(x,sz,G0) с длиной траектории меньше N. Следовательно, по определению 5 истинен предикат simple_directly_access_own(sz,y,G0), и аналогично первому случаю получаем, что условия теоремы выполнены.

Третий случай: opN = access _own(sX, sy) и выполняется условие (sy, ownr) е е de_facto_rightsN-l(sX). Значит, существует sz е Sn-l, такая, что либо sX = sz и (sy,ownr) е PAn-l(rolesN—l(sX)), либо sX = sz, (sX,sz,owna) е An-l и (sy,ownr) е

е PAn-i (rolesN—l (sz)).

Если sX = sz и (sy,ownr) е PAn—l(rolesN —l(sX)), то по определению 5 выполняется условие у е island(x). Положим m = 1. Следовательно, выполнены условия теоремы.

Пусть sX = sz. Тогда (sX, sz, owna) е AN—l и истинен предикат simple_can_access_-own(x, sz, G0) с длиной траектории меньше N. Следовательно, по предположению индукции существуют последовательности недоверенных субъект-сессий или недоверенных пользователей xl,... ,xn е Nu U (Ns П S0) и субъект-сессий или недоверенных пользователей yl,... ,yn е NuUS0, где n ^ 1, таких, что xl = x, yn = sz, yj, е island(xj), где 1 ^ i ^ n, и

— если n ^ 2, то справедливо равенство is_bridge(xn,yn—l,sz) = true;

— если n ^ 3, то для каждого 2 ^ i < n справедливо равенство или

is_bridge(xi,yi—l,yi) = true, или is_simple_bridge(xi,yi—l,yi) = true.

Если либо sz е Ls П S0 и (sy,ownr) е PA0(roles0(sz)), либо z е Nu и (sy,ownr) е е PA0(UA0(z)), то по определению 7 is_bridge(xn,yn—l,y) = true. Положим m = n. Следовательно, выполнены условия теоремы.

Пусть либо sz е Ls П S0 и (sy,ownr) е PA0(roles0(sz)), либо z е Nu и (sy,ownr) е PA0(UA0(z)). Тогда если sz е Ls П S0, то по определениям 1 и 2 имеет место ry е roles0(sz). Если z е Nu, то ry е UA0(z). Тогда существует такое M, что 1 ^ M < N и выполняется одно из следующих трех условий.

Первое условие: у е Nu и opM = create_first_session(y,ry,ey,sy), где ey е EM —l и ry е can_manage_rights(AUA0(y)). Таким образом, по определению 7

is bridge(xn,yn—l,y) = true. Положим m = n. Следовательно, выполнены условия

теоремы.

Второе условие: opM = create_session(s'X,s'y,ry,ey,sy), где по предположению 1, определениям 1 и 2 существуют недоверенные субъект-сессии s'X,s'y е Ns П Sm—l, такие, что y = userM(sy) = userM(sy), ry е can_manage_rights(rolesM—^sy) П AR), ey е EM —l и либо sX = s!y, либо (sX, s!y,owna) е AM—l. Следовательно,

ry е can_manage_rights(AUA0(y)). Таким образом, по определению 7 is_bridge(xn, yn—l,y) = true. Положим m = n. Следовательно, выполнены условия теоремы.

Третье условие: opM = grant_right(s'X,Ty, (sy,ownr)), где по определениям 1 и 2 существует недоверенная субъект-сессия s'X е Ns П Sm —l, такая, что ((sy,ownr),ry) е е de_facto_actionsM—^sX). Следовательно, возможны две ситуации.

Первая ситуация: выполняются условия (sy,ownr) е PA0(UA0(userM —l(sX))) и ry е can_manage_rights(AUA0(userM—l(s'X))), тогда положим m = n + 1, xm = userM—l(sX), ym = y. При этом по определению 7 is_bridge(xm, sz,y) = true. Следовательно, выполнены условия теоремы.

Вторая ситуация: существует субъект-сессия s'y е Sm —l, такая, что (sy,ownr) е е PAm —l(rolesM—l(s'y)), ry е can_manage_rights(rolesM—l(s'y) П AR) и (s'X,s'y,owna) е е AM—l. Положим xi = userM—l(s'X). Если s'y е Ls П S0, то положим yi = = s'y, при этом выполняется условие ry е can_manage_rights(roles0(yi) П AR). Если s'y е Ns П Sm—l, то положим yi = userM—^sy), при этом выполняется условие ry е can_manage_rights(AUA0(yi)). Следовательно, истинен предикат simple_can_access_own(xi,yi, G0) с длиной траектории меньше M — 1. По предположению индукции существуют последовательности недоверенных субъект-сессий или недоверенных пользователей xn+l,... ,xn+k е Nu U (Ns П S0) и субъект-сессий или недоверенных пользователей yn+]_,... , yn+k е Nu U S0, где k ^ 1, таких, что xn+l = xi, yn+k = yi, yi, е island(xi), где n +1 ^ i ^ n + k, и

— если k ^ 2, то справедливо равенство is_bridge(xn+k,yn+k—l,yi) = true;

— если k ^ 3, то для каждого i, n + 2 ^ i < n + k, или is_bridge(xi,yi—l,yi) = true, или is_simple_bridge(xi,yi—l,yi) = true;

— выполняется условие is_simple_bridge(xn+l,yn,yn+l) = true, где yn = sz.

Если либо yi е Ls П S0 и (sy,ownr) е PA0(roles0(yi)), либо yi е Nu и (sy,ownr) е е PA0(UA0(yi)), то is_bridge(xn+k,yn+k—l,y) = true. Положим m = n + k. Следовательно, выполнены условия теоремы.

Пусть ни yi е Ls П S0 и (sy,ownr) е PA0(roles0(yi)), ни yi е Nu и (sy,ownr) е е PA0(UA0(yi)). Тогда так как (sy,ownr) е PAm—l(rolesM —l(yi)), то, повторяя (если потребуется) многократно рассуждения, приведённые для третьего случая, получаем, что условия теоремы выполнены.

Следовательно, доказан шаг индукции при длине траектории, равной N. Доказательство необходимости условий теоремы для истинности предиката simple_can_ac-cess_own(x, y, G0) закончено.

Теорема доказана. ■

Таким образом, в рамках БР ДП-модели обосновываются необходимые и достаточные условия получения субъект-сессией, функционирующей от имени недоверенного пользователя, доступа владения к другой субъект-сессии для случая, когда в системе взаимодействует произвольное число субъект-сессий, и они не используют информационные потоки по памяти.

ЛИТЕРАТУРА

1. Девянин П. Н. Модели безопасности компьютерных систем: Учеб. пособие для студ. высш. учеб. заведений. М.: Издательский центр «Академия», 2005. 144 с.

2. Bishop M. Computer Security: art and science. ISBN 0-201-44099-7, 2002. 1084 p.

3. Sandhu R. Role-Based Access Control // Advanced in Computers. Academic Press, 1998. V. 46.

4. Девянин П. Н. Анализ безопасности управления доступом и информационными потоками в компьютерных системах. М.: Радио и связь, 2006. 176 с.

5. Девянин П. Н. О разработке моделей безопасности информационных потоков в компьютерных системах с ролевым управлением доступом // Материалы Третьей Меж-дунар. научн. конф. по проблемам безопасности и противодействия терроризму. МГУ им. Ломоносова. 25-27 октября 2007 г. М.: МЦНМО, 2008. С. 261-265.

6. Девянин П. Н. Базовая ролевая ДП-модель // Прикладная дискретная математика. 2008. №1(1). С. 64-70.

i Надоели баннеры? Вы всегда можете отключить рекламу.