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

 //секция «имена атрибутов»:

ATTRNAME secleveIS IS ATTRS (1);

 //секция «правиладоступа»:

RULES

             READO   IF (func ())

             WRITEO IF (seclevelS [THISS] <seclevelO [THISO})

ENDRULES

Секция «субъекты» предназначена для определения набора субъектов в системе. Здесь субъекты нумеруются и задаются значения их атрибутов, Секция может включать от одного до шестнадцати субъектов. Максимальное количество атрибутов фиксировано и равно 8. Все атрибуты имеют числовой тип unsignedlong.

Секция «объекты» предназначена для определения набора объектов в системе. Причем, порядок секций «субъекты» и «объекты» непринципиален, т.е. объекты могут быть объявлены перед субъектами. Здесь объекты нумеру­ются и задаются значения их атрибутов. Количество объектов также варьиру­ется от 1 до 16. Атрибуты объектов также имеют числовой тип unsignedlong, их максимальное количество - 8.

Секция «имена атрибутов» служит для именования атрибутов, как субъектов, так и объектов. Здесь задается имя атрибута по его номеру. Коли­чество атрибутов у субъекта и объекта фиксировано и равно 8. Полученное ат­рибутом имя сохраняется при смене номера сущности. Имена атрибутов субъ­ектов и объектов должны различаться и не повторять служебные слова языка описания и языка Си++.

Секция «правила доступа» предназначена для задания условий, по которым происходит доступ активных сущностей к пассивным. Секция выделя­ется служебными словами RULES и ENDRULES. Внутри секции записываются виды доступа и условия доступа. Возможны следующие виды доступа к пассив­ной сущности:

1.  READS- чтение субъекта;

2.  READO- чтение объекта;

3.  WRITES- запись в субъект;

4.  WRITEO- запись в объект;

5.  CREATES - создание субъекта;

6.  CREATED- создание объекта;

7.  DELETES- удаление субъекта;

8.  DELETED- удаление объекта;

9.  CHATTRS- смена атрибутов субъекта;

10.  CHATTRO - смена атрибутов объекта.

Условия доступа записываются в теле IF. Синтаксис внутри IF совпадает с синтаксисом внутри условного оператора if языка Си++.

Дополнительные переменные и функции, применение которых возможно в данной секции, объявляются и определяются во вспомогательных файлах:

•   prefile;

•   post file.

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

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

Пример prefile:

int func(void);

Пример postfite:

int func(void)

{

   return 1;

}

В качестве основы языка описания модели взят язык Си++. С его помо­щью определены операторы языка описания. Поэтому пользователь должен придерживаться правил написания программ на языке Си++ (например, синтак­сис, правила постановки комментариев, вызовы функций и т.д.). Рассмотрим подробно секции файла описания с точки зрения используемых операторов.

Секция «субъекты». Задание набора субъектов

Чтобы описать систему, пользователю необходимо объявить имеющиеся в ней субъекты и задать их атрибуты. С этой целью в файле инициализации в секции «субъекты» задается набор субъектов следующим образом:

S {номер субъекта, атрибут 1,..., атрибут n);

номер субъекта - номер определяемого субъекта.

Номер субъекта может принимать целое значение из интервала 1...16. При этом, если два субъекта имеют один номер, то в рассмотрение принимает­ся только последний по порядку. Ответственность за последствия выхода за границы интервала лежит на пользователе.

атрибут i - это числовое значение i-oгo атрибута субъекта.

Количество атрибутов - 8. Все атрибуты субъектов имеют тип unsignedlong, что накладывает свои рамки на разрядность атрибута. Ошибка при пре­вышении максимального количества атрибутов будет обработана компилято­ром Си++.

По умолчанию номер субъекта = 1, а атрибут i= 0. Тогда вызов функции S() эквивалентен S(1, 0,0,0,0,0,0,0,0), S(5) - S(5, 0,0,0,0,0,0,0,0), S(5, 1,2) -S(5, 1,2,0,0,0,0,0,0).