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

// новый вид файла инициализации - b_I_m-z.ini

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

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

O(1, 0, 0,0,0,0,0,0,0);

O(2,  1, 0,0,0,0,0,0,0);

ATTRNAME seclevelS IS ATTRS(1);

ATTRNAME seclevelO IS ATTRO(1);

RULES

READO

// если второй субъект хочет прочитать второй объект, то его уровень повышается до необходимого

if(THISS==2 && THISO==2)

{

make_secret(); // прописываем новые атрибуты субъекта

seclevelS[THISS]=AS(1,2),  // заносим изменения в массив первого атрибута. Это разрешает чтение второго объекта

}

IF(seclevelS[THISS]>=seclevelO[THISO])

WRITEO

// после чтения второй субъект хочет записать информацию в первый объект. Для этого он понижает свой уровень секретности до уровня объекта №1

if(THISS==2)

{

make_nonsecret();

seclevelS[THISS]=AS(1,2);

}

IF(seclevelO[THISO]>=seclevelS[THISS])

ENDRULES

Содержимое файла prefile:

void make_secret(void)

{

S(2,  1, 0,0,0,0,0,0,0);

}

void make_nonsecret(void)

{

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

}

Заполнение массива первых атрибутов субъектов seclevelS[] происходит в файле b_l_m-z.ini, т.к. данный массив не является глобальной переменной. Его изменения допустимы только в файле описания модели. Дополнительный файл postfile ничего не содержит.

После внесенных изменений была произведена проверка работы опре­деленной таким образом Z-системы. Второй субъект повысил свой уровень секретности, ему было разрешено читать информацию, хранящуюся во втором объекте, затем он понизил степень доверия, и ему было разрешено произвести запись в объект №1. Такая последовательность действий не противоречит правилам модели Белла-ЛаПадула, но приводит к утечке информации.

4.      Далее, чтобы избежать проблему Z-системы, файл описания был изменен следующим образом:

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

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

O(1,  0, 0,0,0,0,0,0,0);

O(2,  1, 0,0,0,0,0,0,0);

ATTRNAME secievelS IS ATTRS(1);

ATTRNAME seclevelO IS ATTRO(1);

RULES

READO

if(THISS==2 && THISO==2) // для чтения секретного объекта субъект №2 повышает степень доверия

{

make_secret();

seclevelS[THISS]=AS(1,2);

}

IF(seclevelS[THISS]>=seclevelO[THISO])

WRITEO

// субъект №2 понижает уровень секретности для записи в несекретный

// объект №1

          if(THISS==2)

{

make_nonsecret();

seclevelS[THISS]=AS(1,2);

}

// правило слабого спокойствия: если запись в несекретный объект №1, то вернуть субъект на уровень «секретно» и т.о. не разрешить запись

if(THISS==2 &&THISO==1)

{

rnake_secret();

seclevelS[THISS]=AS(1,2);

}

IF(seclevelO[THISO]>=seclevelS[THISS])

ENDRULES

Файлы prefile и postfile остались прежними.

Здесь введено правило слабого спокойствия, т.е. второй субъект может изменять свой уровень секретности, но ему не разрешено производить запись в несекретный объект №1. Для проведения записи субъект №2 понижает свою степень доверия. Далее осуществляется проверка направления записи, в ходе которой выясняется, что второй субъект пытается записать информацию в не­секретный объект. Это могут быть конфиденциальные данные, поэтому субъ­екту не разрешается выполнить данную операцию.

Контрольные вопросы по лабораторной работе

1.  На основе каких идей построена модель Белла-ЛаПадула?

2.  Какое правило позволяет решить проблему троянских коней?

3.  Приведите примеры критики модели Белла-ЛаПадула.

4.  В чем заключается проблема системы Z?

5.  Как можно избежать недостатков Z-системы?

Лабораторная работа № 3.

Ролевое управление доступом

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

Средства: методика проведения лабораторной работы, теоретический материал, персональный компьютер.

Время:  4 часа

Теоретические сведения

Ролевое управление доступом

Ролевое управление доступом (RoleBasedAccessControl) было пред­ложено в качестве альтернативы и дополнения к дискреционному и мандатно­му.