УДК 004.94
РАЗРАБОТКА РОЛЕВОЙ МОДЕЛИ БЕЗОПАСНОСТИ УПРАВЛЕНИЯ ДОСТУПОМ И ИНФОРМАЦИОННЫМИ ПОТОКАМИ КОМПЬЮТЕРНОЙ СИСТЕМЫ SELinux1
М. А. Качанов
В настоящее время наиболее рапространенным методом реализации безопасного управления доступом и информационными потоками в операционных системах (ОС) семейства GNU/Linux является применение программного средства SELinux, в связи с чем возникает задача разработки формальной модели его безопасности. В данной работе решается задача анализа безопасности управления доступом и информационными потоками в компьютерной системе (КС) SELinux, предлагаются ролевая модель безопасности данной КС, алгоритм проверки возможности получения права доступа и реализации информационного потока, а также метод применения данной модели на практике для анализа безопасности рассматриваемой КС.
Будем использовать основные понятия и обозначения теории ДП-моделей, считая, что моделируемая КС представляется системой, каждое состояние в которой задаётся набором объектов, а каждый переход из состояния в состояние осуществляется в результате применения одного из правил преобразования состояний. Определим новые элементы ДП-модели, необходимые для адекватного анализа безопасности КС SELinux:
T — множество типов сущностей;
M — множество известных классов сущностей;
Rm — множество прав доступа, допустимых для известных классов сущностей; label : E ^ U х R х T — функция, сопоставляющая сущности контекст безопасности (метку);
user : E ^ U, role : E ^ R, type : E ^ T — такие функции, что если e G E и label(e) = (u,r,t), то user(e) = u, role(e) = r, type(e) = t;
class : E ^ M — функция, сопоставляющая каждой сущности известный класс; allow_role : R ^ 2R — функция, сопоставляющая каждой роли множество ролей, которые она может занять;
role_types : R ^ 2T — функция, сопоставляющая каждой роли множество типов
субъектов, к которым ей разрешено получать доступ;
user_roles : U ^ 2R — функция, сопоставляющая каждому пользователю множество ролей, на которые он может быть авторизован;
class_perms : M ^ 2Rm —функция, сопоставляющая каждому известному классу сущностей набор прав доступа, к нему применимый;
Rr = {(c,p) : c G M,p G class_perms(c)} —множество видов прав доступа;
P С S х E х (Rr U {ownr}) —множество текущих прав доступа субъектов к сущностям;
функции fa : U х E ^ 2е, fp : U х E ^ 2е, ft : S х E х Rr ^ 2е, type_rights : T х T ^ 2Rr, role_transition : R х T ^ R, type_transition : T х T х M ^ 2T, login : R х T ^ 2RxT, constrain : Rr х (U х R х T)2 ^ {0,1}, validatetrans : M х (U х R х T)3 ^ {0,1}.
Определение 1. Иерархия известных классов сущностей — это заданное на множестве M отношение частичного порядка ^м, такое, что
Vm1,m2 Є M (m1 ^м m2 ^ class_perms(m1) D class _perms(m2)).
Определение 2. Совокупность объектов G = (U,UL, R, E, S, LS,T, F, M, RM, P, label, allow_role, role_types, user_roles, class_perms, type_rights, role_transition, type_transition, HE, login, constrain, validatetrans, ^M) будем называть состоянием системы.
В модели определены 19 правил преобразования состояний, образующих множество OP.
Используем следующие обозначения:
E(G*, OP) —система, где G* —множество всех возможных состояний; OP — множество правил преобразования состояний;
G \~ор G' — переход системы из состояния G в состояние G' с использованием правила преобразования состояний op Є OP.
Предположение 1. В рамках модели КС SELinux на траекториях функционирования системы доверенные пользователи не создают новых субъектов, доверенные субъекты не участвуют в передаче прав доступа, не реализуют информационных потоков по времени, не создают субъектов, не используют права доступа владения к другим субъектам.
Предположение 2. В рамках модели КС SELinux на траекториях функционирования системы не изменяются множества U, Ul , Ls, R, T, M, Rm, отношение ^м на множестве M, функции allow_role, role_types, user_roles, class_perms, type_rights, role_transition, type_transition, login, предикаты constrain, validatetrans.
Ввиду предположения 2 состояние системы будем записывать как G = (S, E, P, F, HE, class).
Определение 3. Система T.(G*,OP) с множеством правил преобразования состояний OP называется ДП-моделью КС SELinux, если её состояния подчиняются определению 2 и удовлетворяют предположениям 1 и 2.
Для формализации возможности получения права доступа и реализации информационного потока сформулируем определения предикатов безопасности ДП-модели КС SELinux.
Определение 4. Пусть G0 = (S0,E0,P0,F0,HE0,class0) —состояние системы T,(G*, OP), в котором существуют пользователь u Є U, право доступа ar Є Rr и сущность e Є E0. Определим предикат can_share(u, e, ar, G0), который будет истинным тогда и только тогда, когда существуют состояния G1,... , GN = (SN, EN, PN, FN, HEN, classN) и правила преобразования состояний op1,... ,opN, такие, что G0 \~opi G1 \~op2 ... ^~0pN Gn и существует субъект x Є SN, такой, что user(x) = u, и (x, e, ar) Є PN, где N ^ 0.
Определение 5. Пусть G0 = (S0,E0,P0,F0,HE0,class0) —состояние системы T.(G*, OP), в котором существуют сущности x,y Є E0. Определим предикат can_write_-memory(x,y,G0), который будет истинным тогда и только тогда, когда существуют состояния G1,... ,Gn = (Sn,En,Pn,Fn,Hen,classN) и правила преобразования состояний op1,... ,opN, такие, что G0 \~opi G1 \~op2 ... \~opN GN и (x,y,writem) Є FN, где
N ^ 0.
Определение 6. Пусть G0 = (S0,E0,P0,F0,HE0,class0) —состояние системы T.(G*, OP), в котором существуют сущности x,y G E0. Определим предикат can_write time(x, y, G0), который будет истинным тогда и только тогда, когда существуют состояния Gi,..., GN = (Sn, En, PN, Fn, HEN, classN) и правила преобразования состояний opi,..., opN, такие, что G0 \~opi Gi hop2 ... bopN GN и (x, y, writet) G FN, где N ^ 0.
Замечание 1. Заметим, что для проверки истинности предикатов can_share(u, e,ar,G0), can_write_memory(x,y,G0) и can_write_time(x,y,G0) в соответствии с определением требуется учесть все траектории функционирования КС, что не осуществимо на практике.
В связи с замечанием 1 представляется целесообразным сформулировать и обосновать алгоритмы проверки истинности предикатов can_share, can_write_memory и can_write_time. Такие алгоритмы реализуют преобразование начального состояния КС в его замыкание и позволяют проверить истинность предикатов для всех пользователей, сущностей и прав доступа одновременно. В работе вводятся определения замыканий ДП-модели КС SELinux (time-замыкания и memory-замыкания), предлагаются и обосновываются алгоритмы их построения.
Предлагается также метод применения построенной модели на практике для проверки возможности получения права доступа и реализации информационного потока в КС SELinux. Метод состоит из двух основных этапов. Первый этап — это построение начального состояния предложенной ДП-модели КС SELinux по набору конфигурационных файлов КС. Второй этап — это построение time-замыкания полученного состояния и интерпретация полученных результатов с точки зрения КС SELinux. На входе метод имеет весь набор необходимых конфигурационных файлов КС SELinux, а на выходе — ответ на вопрос, возможны ли получение заданного права доступа или реализация заданного информационного потока.
УДК 004.94
ОСОБЕННОСТИ РАЗРАБОТКИ ДП-МОДЕЛЕЙ СЕТЕВОГО УПРАВЛЕНИЯ ДОСТУПОМ1
Д. Н. Колегов
Работа посвящена особенностям построения ДП-моделей компьютерных систем (КС), реализующих сетевое управление доступом. Такие модели будем называть сокращенно СУД ДП-моделями, а при их описании используем основные определения и обозначения из [1].
Механизмы сетевого управления доступом в современных КС, как правило, обладают следующими свойствами, затрудняющими применение элементов и средств существующих ДП-моделей для их описания и исследования:
— распределенностью компонентов управления доступом и их сетевым взаимодействием;
— динамическим управлением доступом субъектов к сущностям на основе правил доступа и, как следствие, предоставлением субъектам различных прав доступа в зависимости от истинности условий того или иного правила доступа;