УДК 004.056.52
ИССЛЕДОВАНИЕ БЕЗОПАСНОСТИ ДИСКРЕЦИОННОГО РАЗДЕЛЕНИЯ ДОСТУПА В ОС WINDOWS
С. В. Белим, Д. М. Бречка
На основе модели HRU исследуется дискреционное разделение доступа в операционных системах семейства Windows.
Введение
На сегодняшний день разработано несколько математических моделей подсистем безопасности компьютерных систем, допускающих гарантированную защищённость от утечек информации. Однако при попытке применения полученных результатов к реальным системам приходится сталкиваться с рядом трудностей. В данной статье предпринимается попытка описания механизма дискреционного разделения доступа подсистемы безопасности ОС Windows в рамках модели HEU [2-5,8].
Рассмотрим основные моменты разграничения доступа в ОС Windows [7,9,10]. Модель защиты Windows требует, чтобы поток заранее указывал операции, которые он собирается выполнить с объектом. Система проверяет права доступа, запрошенные потоком, и, в случае наличия разрешений, выдаёт потоку дескриптор, позволяющий осуществлять операции с объектом.
Права доступа к конкретному объекту хранятся в структурах, называемых списками контроля доступа ACL (Access Control List). Ссылки на ACL объекта хранятся в дескрипторе безопасности объекта DS. Для каждого объекта существуют системный ACL (SACL, System ACL) и избирательный ACL (DACL, Discretionary ACL). DACL администрируется владельцем объекта и предназначен для разделения доступа к объекту. SACL объекта администрируется системным администратором и предназначен для аудита действий с объектом. Списки контроля доступов состоят из записей АСЕ (Access Control Entry), каждая из которых отвечает за разрешение или запрет одного права доступа.
В операционных системах семейства Windows существует три вида, прав доступа к объектам:
1) стандартные права доступа — это права доступа, применимые к любому объекту (изменение владельца объекта, изменение списка DACL объекта, удаление объекта и т.д.);
Copyright © 2011 С. В. Белим, Д. М. Бречка.
Омский государственный университет им. Ф. М. Достоевского. E-mail: [email protected]
2) специальные права доступа — это права доступа, применимые только к объектам данного вида, (чтение данных из объекта, запись данных в объект, чтение атрибутов объекта, выполнение программного файла и т.д.);
3) общие права доступа — комбинации специальных и стандартных прав доступа. Общие права доступа вводятся для того, чтобы при установке разрешений на доступ абстрагировать владельца от конкретной реализации объекта.
Процесс преобразования общего права доступа к объекту в набор специальных и стандартных прав называется отображением права доступа.
Определены следующие общие права доступа:
1) чтение, включающее в себя чтение DACL объекта, чтение данных из объекта, чтение его атрибутов и расширенных атрибутов, использование объекта для синхронизации;
2) запись, включающая в себя чтение DACL объекта, запись и добавление данных в объект, запись его атрибутов и расширенных атрибутов, использование объекта для синхронизации;
3) выполнение, включающее в себя чтение DACL объекта, чтение его атрибутов, выполнение программного файла и использование объекта для синхронизации;
4) все действия с объектом.
Модель HRU названа по первым буквам фамилий ученых, предложивших её (Хариеон, Руззо, Ульман), Основное назначение этой модели состоит в анализе политики безопасности, построенной на основе матрицы доступов. Всю совокупность DACL объектов компьютерной системы можно представить в виде одной таблицы, называемой матрицей доступов М. В модели HRU определены шесть примитивных операторов, преобразующих матрицу доступов:
1, Enter(r, M[S,0]) — внести право г £ Ев ячейку M[S,0\, т, е, объект S получает право доступа г к объекту О.
2, Delete(r, M[S,0]) — удалить право г из ячейки M[S,0], т, е, запретить субъекту S доступ г к объекту О.
3, CreateS (S) — создать объект S. При этой операции в матрице доступов появляются дополнительный столбец и дополнительная строка. Вновь создаваемый субъект не имеет никаких прав,
4, Create0(0) — добавление нового объекта О. В матрице доступов появляется новый столбец, на который ни у кого нет никаких прав доступа,
5, DeleteS(S) — уничтожить субъект S. В таблице удаляется одна строка и один столбец,
6, Delete0(0) — уничтожить объект О. В таблице удаляется один столбец.
Из примитивных операторов могут составляться команды. Каждая команда состоит из двух частей:
1, Условия, при которых возможно выполнение команды.
2, Последовательность примитивных операторов,
command C(Xi,Xk)
if г\ G M[Xi] and...and rt G M[Xk\ then
OLl, Oi2\ ■■■ OLn\
end.
Здесь через Хг{г = 1 ,к) обозначены пары X* = (Б^,0^). Условия в теле команды являются необязательными, если известно, что система гарантированно находится в нужном состоянии.
1. Описание прав доступа ОС Windows в рамках модели HRU
Для корректного описания системы в рамках модели HRU необходимо корректно определить множество возможных прав доступа. Как видно из спецификации подсистемы безопасности ОС Windows, элементарные операции задаются стандартными и специальными правами доступа, тогда как общие права доступа являются комбинацией стандартных и специальных прав, т, е, командами.
Для записи конкретной команды, соответствующей некоторому общему праву доступа, будем рассматривать объект операционной системы как совокупность объектов. Такое рассмотрение допустимо в рамках субъектпо-объектпо-го подхода, который требует, чтобы конкатенация двух объектов также была объектом.
Для обозначения какой-то части объекта будем указывать общий идентификатор объекта и идентификатор соответствующей части, разделённые точкой. Например, содержимое файла F будет иметь обозначение F.Data. При работе с файлом важными структурами являются его заголовок F.Header, дескриптор безопасности F.DS и списки контроля доступа F.DACL, F.SACL.
Выпишем команды, соответствующие общим правам доступа к файлу /•'.
1, Чтение г файла F неким процессом S:
command Read_File((S, F))
Enter(r, M[S, F.Header})]
Enter(r, M[S, F.Data]);
Enter(r,M[S,F.DS]);
Enter(r, M[S, F.DACL])-,
Enter(r, M[S, F.SACL])-,
2, Запись w в файл F неким процессом S:
command Write_File((S, F))
Enter(w, M[S, F.Header})-,
Enter(w, M[S, F.Data]);
Enter(w, M[S, F.DS});
Enter (r,M[S,F.D ACL});
Enter(w, M[S, F.SACL]);
end.
3, Запуск исполнение mo го файла F неким процессом S:
command Execute_File((S,F))
Enter(r, M[S, F.Header})-,
Enter(x, M[S, F.Data});
Enter(r,M[S,F.DS]);
Enter(r, M[S, F.DACL});
Enter(r, M[S, F.SACL})-,
end.
4, Полный доступ к файлу /•' неким процессом S:
command All_File((S, F))
Enter(r, M[S, F.Header})-,
Enter(w, M[S, F.Header})-,
Enter(r, M[S, F.Data});
Enter(w, M[S, F.Data});
Enter(x, M[S, F.Data});
Enter(r, M[S, F.DS});
Enter(w, M[S, F.DS});
Enter(r, M[S, F.DACL});
Enter(r, M[S, F.SACL});
Enter(w, M[S, F.SACL});
end.
При рассмотрении безопасности системы важным является вопрос организации журнала аудита системы. Если аудит доступа к объектам системы фиксирует каждый доступ со стандартными или специальными правами, то данная система монооперационная и является безопасной [2,4], Однако, как легко понять в ОС Windows, в журнале аудита могут фиксироваться и общие права доступа, т, е, система перестаёт быть монооперационной и вопрос о её безопасности остаётся открытым, так как для произвольной системы задача проверки безопасности алгоритмически не разрешима [2,4],
2. Базисный подход
Для исследования безопасности механизма дискреционного разделения доступа в ОС Windows применим базисный подход к модели HRU, развитый в [1,6]. Для этого рассмотрим представление прав доступа на битовом уровне с помощью маски доступов [7,9,10]. Запрос субъекта на конкретный вид доступа к объекту преобразуется в маску доступа, которая сравнивается с масками разрешённых и запрещённых доступов в элементах частного списка контроля доступов (DACL) объекта.
Маска доступа, содержащаяся в элементе DACL, представляет собой значение длиной 32 бита. Первые 16 битов определяют специальные права доступа, биты с 16 до 23 — стандартные права доступа, бит 24 — право ACCESS_ SYSTEM_ SECURITY, бит 25 - право MAXIMUM^ ALLOWED (полный доступ), биты 26 и 27 зарезервированы для дальнейшего использования, биты с 28 по 31 определяют общие права доступа, отображаемые в специальные и стандартные права при попытке доступа к объекту.
Как было показано в [1,6], в модели HRU можно перейти к новому базису, работающему с битовой строкой. Будем использовать следующие обозначения: М — матрица доступов (совокупность DACL всех объектов системы), S — множество субъектов компьютерной системы, О — множество объектов компьютерной системы, M[S, О] — элемент матрицы доступов, определяющий права доступа субъекта S G S к объекту О G О.
1. Add0(0, М) — добавить столбец, соответствующий объекту О в матрицу доступов М.
2. Del0(0, М) — удалить столбец, соответствующий объекту О в матрице доступов М.
3. AddS(S,M) — добавить строку и столбец, соответствующие субъекту S в матрицу доступов М.
4. DelS(S, М) — удалить строку и столбец, соответствующие субъекту S в матрице доступов М.
5. Inv(M[S, О], к) — инвертировать в элементе матрицы доступов M[S,0\ бит с номером к. По сути эта операция выдает или отменяет право доступа cik-
Выпишем команды для всех стандартных, специальных и общих прав доступа в данном базисе.
Специальные права доступа
Специальные права и их значения приведены в табл. 1.
Команды в базисе для специальных прав приведены ниже.
1. Чтение данных файла /•':
command File_Read_Special(F) if (b0 == FALSE);
Fnv(F, 0);
Таблица 1
Специальные права и их значения
Название права Значение Описание права
FILE READ DATA FILE WRITE DATA FILE APPEND DATA FILE READ EA FILE WRITE EA FILE EXECUTE FILE DELETE FILE READ ATTRIBUTES FILE WRITE ATTRIBUTES 0x00000001 0x00000002 0x00000004 0x00000008 0x00000010 0x00000020 0x00000040 0x00000080 0x00000100 Чтение данных Запись данных Добавление данных Чтение расширенных атрибутов Запись расширенных атрибутов Исполнение Удаление Чтение атрибутов Запись атрибутов
2, Запись данных в файл /•':
command FileJW rite_Special(F)
*/(&i == FALSE);
Fnv(F, 1);
end.
3, Добавление данных в файл /•':
command File_Uppend_Special(F) if(b2 == FALSE);
Inv(F, 2);
end.
4, Чтение расширенных атрибутов файла F:
command File_Read_EA_Special(F) г f{bs == FALSE);
Fnv(F, 3);
end.
5, Запись расширенных атрибутов файла F:
command File_Write_EA_Special(F) if(b4 == FALSE);
Fnv(F, 4);
end.
6, Запуск исполнение mo го файла F:
command File_Execute_Special(F) if(b 5 == FALSE);
Inv(F, 5);
7, Удаление файла /•’:
command File_Delete_Special(F) if (b6 == FALSE);
Inv(F, 6);
end.
8, Чтение атрибутов файла F:
command File_Read_ Attributes _Special(F) ifib7 == FALSE);
Inv(F, 7);
end.
9, Запись атрибутов файла F:
command File JW rite _ Attribute s _ Special (F)
г f{bs == FALSE);
Fnv(F, 8);
end.
Стандартные права доступа
Стандартные права доступа приведены в табл. 2,
Таблица 2
Стандартные права доступа
Название права Значение Описание права
OBJECT DELETE OBJECT READ CONTROL OBJECT WRITE DACL OBJECT_CHANGE_OWNERSHIP OBJF.CT SYNCHRONIZE 0x00010000 0x00020000 0x00040000 0x00080000 0x00100000 Удаление объекта Чтение ОЭ объекта Чтение DACL объекта Изменение права собственности объекта Использование объекта для синхронизации
Ниже приведены стандартные права, выраженные в базисе,
1, Удаление объекта /•':
command Object_Delete_Standard(F)
if(b16 == FALSE);
Fnv(F, 16);
2, Чтение DS объекта F:
command Object_Read_Control_Standard(F)
if{bl7 == FALSE);
Inv(F, 17);
end.
3, Запись DACL объекта F:
command Object _W rite _D AC L _Standard{F)
if (b^ == FALSE);
Fnv(F, 18);
end.
4, Изменение прав владения объекта /•':
command Object _Change _Owner ship _Standard(F)
if{b19 == FALSE);
Fnv(F, 19);
end.
5, Изменение свойства синхронизации объекта /•':
command Object _Synchronize_Standard(F) if{b2o == FALSE);
Inv(F, 20);
end.
Общие права доступа
В табл. 3 приведены общие права доступа, ниже эти права представлены в базисе.
Таблица 3
Общие права доступа
Название права Значение Описание права
GENERIC ALL GENERIC EXECUTE GENERIC WRITE GENERIC READ 0x10000000 0x20000000 0x40000000 0x80000000 Общее право на полный доступ Общее право исполнения Общее право записи Общее право чтения
1, Добавление права на полный доступ на объект /•':
command Generic_All(F)
if{b2s == FALSE); Inv(F, 28);
2, Добавление права общего исполнения на объект F:
command Generic_Execute(F) if(b29 == FALSE);
Inv(F, 29);
end.
3, Добавление права общей записи на объект F:
command Generic _W г ite(F)
if (bSo == FALSE);
Inv(F, 30);
end.
4, Добавление права общего чтения на объект F:
command Generic _Read{F)
if {hi == FALSE);
Inv(F, 31);
end.
Таким образом, набор прав доступа, описанный в спецификации ОС Windows, можно считать базисом, а сама ОС Windows, как видно из вышеприведённого, будет монооперационной системой в данном базисе,
3. Заключение
В качестве общего заключения можно сказать, что переход к новому базису в рамках модели HRU позволяет рассматривать широкий спектр реальных компьютерных систем, В частности, возможно рассмотрение дискреционного разделения доступа в подсистеме безопасности ОС Windows на основе модели HRU, а также рассмотрение ОС Windows как монооперационной в некотором базисе.
Литература
1. Бречка Д. М., Белим С. В. Исследование безопасности компьютерных систем в модели дискреционного разделения доступа I IПI // Математические структуры и моделирование. 2009. Вып. 19. С. 97-103.
2. Гайдамакин Н. А. Разграничение доступа к информации в компьютерных системах. Екатеринбург: Изд-во Урал, ун-та, 2003.
3. Грушо А. А., Тимонина Е. Е. Теоретические основы защиты информации. М.: Яхтсмен, 1996.
4. Девянин П. Н. Модели безопасности компьютерных систем. М.: Академия, 2005.
5. ЗегждаД. П., Ивашко А. М. Основы безопасности информационных систем. М.: Горячая линия - Телеком, 2000.
6. Проблемы обработки и защиты информации: коллективная монография / под общ. ред. д-ра физ.-мат. наук С.В.Белима. Омск: КАН, 2010. Кн. 1: Модели политик безопасности компьютерных систем.
7. Руссинович М., Соломон Д. Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP и Windows 2000. Мастер-класс: пер. с англ. 4-е изд. М.: Русская редакция, 2005.
8. Harrison М. A., Ruzzo W. L., Ullman J. D. Protection in Operating Systems // Communications of the ACM. 1975. P. 14-25.
9. Microsoft Corporation. Microsoft Windows XP Professional. Учебный курс MCSA/ MCSE: пер. с англ. 2-е изд., испр. М.: Русская редакция, 2003.
10. Microsoft Developer Network. URL: http://msdn.microsoft.com (дата обращения: 10.10.2010).