- •Теоретические основы компьютерной безопасности
- •090105 – «Комплексное обеспечение информационной безопасности автоматизированных систем»
- •Оглавление
- •Введение
- •2. Указания к выполнению
- •2.1. Выполнение лабораторной работы
- •2.2. Оформление отчета по лабораторной работе
- •2.1 Лабораторная работа № 1. Дискреционные модели управления доступом. Модель Харрисона-Руззо-Ульмана
- •Теоретические сведения
- •Выполнение работы
- •Содержание отчета
- •Пример отчета
- •Контрольные вопросы по лабораторной работе
- •2.2 Лабораторная работа № 2. Модели мандатного управления доступом. Модель Белла-ЛаПадула
- •Теоретические сведения
- •Выполнение лабораторной работы
- •Содержание отчета
- •Пример отчета
- •Выполнение работы
- •Содержание отчета
- •Контрольные вопросы по лабораторной работе
- •Лабораторная работа № 4. Дискреционная модель, основанная на «типизированной матрице доступа
- •Теоретические сведения
- •Выполнение работы
- •Содержание отчета
- •Пример отчета
- •Порядок выполнения работы
- •Содержание отчета
- •Порядок выполнения работы
- •Содержание отчета
- •Пример отчета
- •Контрольные вопросы по лабораторной работе
- •Подготовка к экзамену
- •Вопросы итогового контроля
- •Учебники и учебные пособия:
- •Порядок создания исполняемого файла описания модели
- •Expert.Exe файл описания модели
- •Последовательность работы с интерфейсом «Монитора безопасности»
- •Теоретические основы компьютерной безопасности
- •090105 – «Комплексное обеспечение информационной безопасности автоматизированных систем»
Пример отчета
1. Исходные данные:
Рассмотрим систему, содержащую два субъекта и два объекта:
S1, с уровнем безопасности «секретно»;
S2 с уровнем безопасности «несекретно»;
О1 с уровнем секретности «несекретно»;
О2 с уровнем секретности «секретно».
Таким образом, мы можем построить решетку уровней:
1 ------------Sl------------O2-------- «секретно»
0-----------S2-----------О1----------«несекретно»
Очевидно, что S1 может читать O1 и О2 а S2 – только O1. Записывать информацию разрешено S1 в О2, а S2 в О1 и О2. Тогда файл описания модели будет выглядеть следующим образом:
// листинг файла инициализации b_l_m.ini
//1 - секретно; 0 - несекретно
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);
О(2, 1, 0, 0,0,0, 0, 0, 0);
ATTRNAME seclevelS IS ATTRS(1);
ATTRNAME seclevelO IS ATTRO(1);
RULES
READO IF(seclevelS[THISS]>=seclevelO[THISO])
WRITEO IF(seclevelO[THISO]>=seclevelS[THISS])
ENDRULES
Prefile и postfiie не используются.
2. В ходе работы с реализованной в п.(1) данного отчета моделью Белла-ЛаПадула была проведена проверка на доступ к объектам по чтению и записи. Данные операции выполнялись в соответствии с правилами NRU и NWD: S1 смог читать О1 и О2 а S2 - только О1. Записывать информацию было разрешено S1 в O2, , a S2 в О1 и O2. Операция, не определенная в модели Белла-ЛаПадула (например, смена атрибутов объекта), разрешена, что нарушает защищенность информации в системе.
3. Затем в файл описания модели были внесены изменения, чтобы реализовать проблему Z-системы. Для простоты реализован вариант Z-системы, в котором у запросившего доступ субъекта изменяется уровень безопасности до уровня объекта, и доступ тем самым разрешается. В этом варианте, т.к. меняется уровень не всех сущностей, а только одного субъекта.
// новый вид файла инициализации - 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 понижает свою степень доверия. Далее осуществляется проверка направления записи, в ходе которой выясняется, что второй субъект пытается записать информацию в несекретный объект. Это могут быть конфиденциальные данные, поэтому субъекту не разрешается выполнить данную операцию.
Контрольные вопросы по лабораторной работе
На основе каких идей построена модель Белла-ЛаПадула?
Какое правило позволяет решить проблему троянских коней?
Приведите примеры критики модели Белла-ЛаПадула.
В чем заключается проблема системы Z?
Как можно избежать недостатков Z-системы?
Лабораторная работа № 3.
Ролевое управление доступом
Цель работы: овладеть методикой формирования моделей безопасности, в основу которых положено ролевое управление доступом. Исследовать возможности моделей безопасности, в основу которых положено ролевое управление доступом.
Средства: методика проведения лабораторной работы, теоретический материал, персональный компьютер.
Время: 4 часа
Теоретические сведения
Ролевое управление доступом
Ролевое управление доступом (Role Based Access Control) было предложено в качестве альтернативы и дополнения к дискреционному и мандатному.
Природа разрешений, выделенных роли, существенно отличается от обычных операций чтения, записи, выполнения и т.д., поддерживаемых типичными операционными системами. В модели рассматривается авторизованная операция - выполнение программы на множестве связанных элементов данных. Это очень важное понятие позволяет осуществлять авторизацию в терминах абстрактных операций, встроенных в процедуры преобразования. Например, роли кассира в банке могут быть выделены скорее кредитные и дебитные операции с бюджетами, чем более общие операции чтения и записи. Это дает возможность RBAC рассматривать безопасность приложений в терминах операций этих приложений в противоположность универсальным операциям чтения и записи в операционных системах общего назначения.
Роли были использованы в некоторых продуктах управления доступом 70-80х гг., например, в RACF фирмы IBM. Для подобных продуктов характерно использование ролей в административных целях. Например, в RACF имеется роль Operator с правом доступа ко всем ресурсам, но без возможности изменить разрешения доступа, роль Special с возможностью изменить разрешения доступа, но без права доступа к ресурсам, и роль Auditor с правом доступа к контрольным журналам (содержащая, помимо всего прочего, события, сгенерированные ролями Operator и Special, не имеющими доступа к контрольному журналу).
С основной концепцией роли связано два аспекта:
• ролям назначаются пользователи и
• ролям назначаются привилегии и разрешения.
Пользователь, назначенный роли, таким образом, приобретает привилегии и разрешения этой роли.
Термин «привилегии» используется для обозначения общих широких полномочий системы. Примерами типичных привилегий существующих продуктов являются Operator, Auditor т.д.
Под термином «разрешение» будем понимать права доступа к конкретным объектам данных, например, файлам. Большинство операционных систем предоставляют такие разрешения как чтение, запись, исполнение и т.д. Для контроля на прикладном уровне хотелось бы иметь разрешения, связанные с прикладной областью. Например, те же дебитные и кредитные операции над бюджетным объектом. Пользователь, уполномоченный выполнять кредитную операцию над бюджетом, не должен иметь права произвольного доступа чтения и записи к бюджетному балансу. Следовательно, очень важно, чтобы RBAC, ориентированное на приложение, каким-либо образом удовлетворяло этому требованию.
Существует два подхода к контролированию разрешений при ориентации на приложения:
• Первый, менее детализированный, - предоставить разрешения, полностью основанные на том, какие операции или процедуры преобразования может выполнять данная роль. Так, например, кассира в банке можно уполномочить выполнять кредитные и дебитные операции. Если эти операции разрешены для всех бюджетов, то кредитные и дебитные операции могут быть авторизованы на выполнение операций чтения и записи бюджетов.
• Второй подход обеспечивает более тщательный контроль, так что роли кассира в банке выделяется разрешение на выполнение кредитных и дебитных операций только над конкретными типами бюджетов.
Такая детализация может быть обеспечена непосредственно системой управления доступом.
Понятие «назначение пользователей» связано с тем, как ролям назначаются пользователи. Основной вопрос, возникающий здесь: является ли назначение пользователей ролям полностью централизованным и выполняется исключительно служащим системы или существует некоторая децентрализация, посредством чего определенные пользователи получают право назначать других пользователей ролям.
Преимуществом централизованного подхода является обеспечиваемый им строгий контроль и централизация ответственности. Недостатком является увеличение затрат, когда система становится слишком большой. Кроме того, запросы на добавление пользователей ролям идут со стороны пользователей, и хорошая система должна позволять соответствующим пользователям осуществлять это непосредственно с центрального пункта управления. Заметим, что наиболее выгодно использовать здесь RBAC. Можно создавать роли администрирования назначения пользователей и выдавать право на включение в роль новых пользователей, но только для некоторого подмножества ролей в системе.
Недостатки ролевого управления доступом
Среди недостатков ролевого управления доступом необходимо отметить;
• возможность исполнения пользователем нескольких ролей одновременно;
• возможность продолжительного или частого использования роли.
Вопрос использования ролей связан с тем, как пользователь может активизировать различные роли в системе. Одна из возникающих при этом очевидных проблем: может ли пользователь исполнять несколько ролей одновременно? Так, пользователь, имеющий роль врача первой помощи, должен автоматически и одновременно быть в роли врача.
С другой стороны, рассмотрим пользователя, исполняющего роли руководителя проекта и руководителя отдела. Должен ли пользователь исполнять эти роли одновременно? Возможность пользователей одновременно исполнять все роли удобна для тех пользователей, которые приобретают все свои привилегии и разрешения на один сеанс. С другой стороны, это нарушает принцип наименьших привилегий (меньше привилегий - меньше вероятность утечки информации) и увеличивает вероятность возникновения уязвимостей.
Например, как руководитель отдела, пользователь имеет доступ к конфиденциальной информации отдела, которую он может скопировать в проектные документы с помощью троянских коней. Возникает явная необходимость ограничить число способов комбинирования более мощных ролей с более простыми.
Другие проблемы, касающиеся ролей, могут быть связаны с временными ограничениями на то, как долго может сохраняться конкретная роль, или как часто она может использоваться в течение данного промежутка времени. Здесь основной целью является сокращение возможного ущерба от неправильного использования и захвата мощных ролей.
С целью решения подобных проблем предлагаются следующие правила назначения пользователей ролям:
• во многих приложениях некоторые роли считаются взаимоисключающими;
Например, роли руководителя отдела и руководителя проекта не должны одновременно принадлежать одному и тому же субъекту;
• по возможности использовать иерархический принцип.
Например, пользователь может быть зарегистрирован как разработчик аппаратного обеспечения только в том случае, если он уже входит в группу роли разработчика. В этом случае назначение пользователей ролям разработчиков может контролироваться централизованно служащим безопасности, тогда как разрешение этим пользователям выполнять специализированные функции по разработке должно выдаваться только соответствующими пользователями. Это пример того, как могут передаваться дискреционные полномочия при одновременном сохранении для них некоторых централизованных ограничений;
• использовать таймеры и счетчики для ограничения предотвращения бесконтрольного захвата ролей, в особенности, если таких ролей мало и если они служат для выполнения критических служб.
Назначение привилегий и разрешений ролям также может быть централизованным или децентрализованным, как это было выше для назначения пользователей. В этом случае возникают аналогичные проблемы и компромиссы.