Теоретические основы компьютерной безопасности: Методические указания к выполнению лабораторных работ, страница 4

Для этого необходимо:

·  выбрать субъект и объект доступа;                                    

·  попытаться выполнить те операции доступа, которые указаны в соответствующей ячейке матрицы. Убедиться в возможности их выполне­ния;

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

Примечание:проверку производить для операций, определенных в файле описания модели. Операции, которые не описаны в файле - разрешены, т.е. здесь действует принцип: «все, что не запрещено - разрешено».

7.  Выйти из программы security.exe и вернуться к редактированию файла опи­сания модели.

8.  Реализовать в файле описания троянского коня, который обходит защиту данного типа моделей.

Примечание: на данном этапе возможно использование дополнительных фай­лов prefile и postfile.

9.  Повторить выполнение пунктов 3 - 5.

10.  Убедиться в возможности обхода защиты, предоставляемой дискреционной моделью Харрисона-Руззо-Ульмана.                                                    

11.  Выйти из программы security.exe.                                                       

Содержание отчета

В отчете необходимо привести:

1.  Исходные данные:

·  матрицу доступа;

·  содержимое файла описания модели;

·  содержимое файлов prefile и postfile, если таковые используются.

2.  Результаты, подтверждающие защищенность информации при использова­нии дискреционной модели доступа.

3.  Выводы, поясняющие действие механизма троянского коня и нарушения за­щиты.

4.  Выводы по лабораторной работе.

Пример отчета

1. Исходные данные:                                       

•   матрица доступа

Рассмотрим систему, состоящую из двух субъектов и двух объектов. Бу­дем рассматривать лишь две операции доступа: чтение и запись. При этом предположим, что в системе реализовано дискреционное управле­ние доступом, заданное матрицей вида:

01

02

ыS1

R, W

W

sS2

R, W

__

R - чтение объекта (read object);

W - запись в объект (write object).

•  файл инициализации

Запишем матрицу доступа при помощи двоичных чисел. Например, ячей­ка M[S1, O1] будет выглядеть как (R, W) = (1 1 )2 = (3)10. Для проверки возмож­ности доступа к объекту надо будет выделять интересующие нас биты посред­ством логической операции «И».

   // исходный текст файла описания модели h_r_u.ini

S(1,   3,1,    0,0,0,0,0,0);

S(2,   3, 0,   0,0,0,0,0,0);

О(1,   3,3,    0,0,0,0,0,0);

О(2,   1,0,     0,0,0,0,0,0);

RULES

   // используем побитовую операцию «И», чтобы выделить

   // установленный (не установленный) бит чтения

READO  IF( getSattr() && AS(THISO)&2 )

   // записи

WRITEOIF(AS(THISO)&1)

ENDRULES                                                                  

•   prefile

ULONG getSattr(void);                                                                    

•   postfile                                                                                         

 // действие троянской программы эквивалентно получению

 // неавторизованным субъектом доступа к объекту, например, по чтению

ULONG getSattr(void)

{

S(2,   3,2,   0,0,0,0,0,0);

return 1;

}

2. В ходе работы была проведена проверка на доступ к объектам. Изначально файл описания модели h_r_u.ini не содержал вызова функции getSattr(). Файлы prefiie и postfile были не заполнены. Дискреционная модель обеспечивала на­дежную гранулированную защиту по чтению и записи (другие операции разре­шены, т.к. в файле инициализации не оговорено противное.

3. Затем был применен механизм троянского коня, который эквивалентен полу­чению неавторизованным субъектом доступа на чтение. Для этого были изме­нены файлы h_r_u.ini, prefile и postfile. Их новый вид приведен в п.1 данного от­чета. После запуска программы security.exe и до выполнения операции чтения над пассивной сущностью (т.е. пока не произошла смена атрибутов) были оп­ределены атрибуты второго субъекта. Они соответствовали значениям, ука­занным в файле описания модели. После посылки сообщения «read object» ат­рибуты второго субъекта изменились - он получил доступ по чтению ко второму объекту. Запись нового атрибута выполнила троянская функция названием getSattr().