Содержание
- Модель безопасности Mic
- Объект модели безопасности Mic
- Правило create модели безопасности Mic
- Правило execute модели безопасности Mic
- Правило upgrade модели безопасности Mic
- Правило call модели безопасности Mic
- Правило invoke модели безопасности Mic
- Правило read модели безопасности Mic
- Правило write модели безопасности Mic
- Выражение query_level модели безопасности Mic
Модель безопасности Mic
Модель безопасности Mic позволяет реализовать мандатный контроль целостности. То есть эта модель безопасности дает возможность управлять информационными потоками между процессами, а также между процессами и ядром KasperskyOS, контролируя уровни целостности процессов, ядра и ресурсов, используемых через IPC.
В терминах модели безопасности Mic процессы и ядро называются субъектами, а ресурсы называются объектами. Однако сведения в этом разделе приведены с отступлением от терминологии модели безопасности Mic. Это отступление заключается в том, что термин "объект" не используется в значении "ресурс".
Информационные потоки между субъектами возникают, когда субъекты взаимодействуют через IPC.
Уровень целостности субъекта/ресурса – это степень доверия к субъекту/ресурсу. Степень доверия к субъекту определяется, например, исходя из того, взаимодействует ли субъект с недоверенными внешними программно-аппаратными системами, или имеет ли субъект доказанный уровень качества. (Ядро имеет высокий уровень целостности.) Степень доверия к ресурсу определяется, например, с учетом того, был ли этот ресурс создан доверенным субъектом внутри программно-аппаратной системы под управлением KasperskyOS или получен из недоверенной внешней программно-аппаратной системы.
Модель безопасности Mic характеризуют следующие положения:
- По умолчанию информационные потоки от менее целостных к более целостным субъектам запрещены. Опционально такие информационные потоки могут быть разрешены. При этом нужно гарантировать, что более целостные субъекты не будут компрометированы.
- Потребителю ресурсов запрещено записывать данные в ресурс, если уровень целостности ресурса выше уровня целостности потребителя ресурсов.
- По умолчанию потребителю ресурсов запрещено читать данные из ресурса, если уровень целостности ресурса ниже уровня целостности потребителя ресурсов. Опционально потребителю ресурсов может быть разрешена такая операция. При этом нужно гарантировать, что потребитель ресурсов не будет компрометирован.
Методы модели безопасности Mic позволяют назначать субъектам и ресурсам уровни целостности, проверять допустимость информационных потоков на основе сравнения уровней целостности, повышать уровни целостности ресурсов.
PSL-файл с описанием модели безопасности Mic находится в KasperskyOS SDK по пути:
toolchain/include/nk/mic.psl
В качестве примера использования модели безопасности Mic можно рассмотреть безопасное обновление ПО программно-аппаратной системы под управлением KasperskyOS. В обновлении участвуют четыре процесса:
Downloader
– низкоцелостный процесс, который загружает низкоцелостный образ обновления с удаленного сервера в интернете.Verifier
– высокоцелостный процесс, который проверяет цифровую подпись низкоцелостного образа обновления (высокоцелостный процесс, который может читать данные из низкоцелостного ресурса).FileSystem
– высокоцелостный процесс, который управляет файловой системой.Updater
– высокоцелостный процесс, который применяет обновление.
Обновление ПО выполняется по следующему сценарию:
Downloader
загружает образ обновления и сохраняет его в файл, передав содержимое образа вFileSystem
. Этому файлу назначается низкий уровень целостности.Verifier
получает образ обновления уFileSystem
, прочитав низкоцелостный файл, и проверяет его цифровую подпись. Если подпись корректна,Verifier
обращается кFileSystem
, чтобыFileSystem
создал копию файла с образом обновления. Новому файлу назначается высокий уровень целостности.Updater
получает образ обновления уFileSystem
, прочитав высокоцелостный файл, и применяет обновление.
В этом примере модель безопасности Mic обеспечивает то, что высокоцелостный процесс Updater
может читать данные только из высокоцелостного образа обновления. Вследствие этого обновление может быть применено только после проверки цифровой подписи образа обновления.
Объект модели безопасности Mic
Чтобы использовать модель безопасности Mic, нужно создать объект (объекты) этой модели. При этом нужно задать множество уровней целостности субъектов/ресурсов.
Объект модели безопасности Mic имеет следующие параметры:
config
– множество уровней целостности или конфигурация множества уровней целостности:degrees
– множество градаций для формирования множества уровней целостности;categories
– множество категорий для формирования множества уровней целостности.
Примеры:
policy object mic : Mic {
config = ["LOW", "MEDIUM", "HIGH"]
}
policy object mic_po : Mic {
config =
{ degrees : ["low", "high"]
, categories : ["net", "log"]
}
}
Множество уровней целостности представляет собой частично упорядоченное множество, которое является линейно упорядоченным или содержит несравнимые элементы. Множество {LOW, MEDIUM, HIGH} является линейно упорядоченным, так как все его элементы сравнимы между собой. Несравнимые элементы появляются, когда множество уровней целостности задается через множество градаций и множество категорий. В этом случае множество уровней целостности L представляет собой декартово произведение булеана множества категорий C на множество градаций D:
Параметры degrees
и categories
в примере задают следующее множество:
{
{}/low, {}/high,
{net}/low, {net}/high,
{log}/low, {log}/high,
{net,log}/low, {net,log}/high
}
В этом множестве {} означает пустое множество.
Отношение порядка между элементами множества уровней целостности L задается следующим образом:
Согласно этому отношению порядка j-й элемент превышает i-й элемент, если подмножество категорий E включает подмножество категорий A, и градация F больше градации A либо равна ей. Примеры сравнения элементов множества уровней целостности L:
- Элемент {net,log}/high превышает элемент {log}/low, так как градация high больше градации low, и подмножество категорий {net,log} включает подмножество категорий {log}.
- Элемент {net,log}/low превышает элемент {log}/low, так как уровни градаций для этих элементов равны между собой, и подмножество категорий {net,log} включает подмножество категорий {log}.
- Элемент {net,log}/high является наибольшим, так как превышает все остальные элементы.
- Элемент {}/low является наименьшим, так как все остальные элементы превышают этот элемент.
- Элементы {net}/low и {log}/high являются несравнимыми, так как градация high больше градации low, но подмножество категорий {log} не включает подмножество категорий {net}.
- Элементы {net,log}/low и {log}/high являются несравнимыми, так как градация high больше градации low, но подмножество категорий {log} не включает подмножество категорий {net,log}.
Для субъектов и ресурсов с несравнимыми уровнями целостности модель безопасности Mic предусматривает условия, аналогичные тем, которые эта модель безопасности предусматривает для субъектов и ресурсов со сравнимыми уровнями целостности.
По умолчанию информационные потоки между субъектам с несравнимыми уровнями целостности запрещены, но опционально такие информационные потоки могут быть разрешены. (Нужно гарантировать, что субъекты, принимающие данные, не будут компрометированы.) Потребителю ресурсов запрещено записывать данные в ресурс и читать данные из ресурса, если уровень целостности ресурса несравним с уровнем целостности потребителя ресурсов. Опционально потребителю ресурсов может быть разрешено чтение данных из ресурса. (Нужно гарантировать, что потребитель ресурсов не будет компрометирован.)
Объект модели безопасности Mic может быть покрыт аудитом безопасности. Условия выполнения аудита, специфичные для модели безопасности Mic, отсутствуют.
Необходимость создавать несколько объектов модели безопасности Mic возникает в следующих случаях:
- Если нужно по-разному настроить аудит безопасности для разных объектов модели безопасности Mic (например, для разных объектов можно применять разные профили аудита или разные конфигурации аудита одного профиля).
- Если нужно различать вызовы методов, предоставляемых разными объектами модели безопасности Mic (поскольку в данные аудита включается как имя метода модели безопасности, так и имя объекта, предоставляющего этот метод, можно понять, что был вызван метод конкретного объекта).
- Если нужно использовать несколько вариантов мандатного контроля целостности, например, с разными множествами уровней целостности субъектов/ресурсов.
Правило create модели безопасности Mic
create { source : <Sid>
, target : <Sid>
, container : <Sid | ()>
, driver : <Sid>
, level : <Level | ... | ()>
}
Назначает ресурсу target
уровень целостности level
в следующей ситуации:
- Процесс
source
инициирует создание ресурсаtarget
. - Ресурсом
target
управляет субъектdriver
, который является поставщиком ресурсов или ядром KasperskyOS. - Ресурс
container
является контейнером для ресурсаtarget
(например, директория является контейнером для файлов и/или других директорий).
Если значение container
не задано (container : ()
), ресурс target
рассматривается как корневой, то есть не имеющий контейнера.
Чтобы задать уровень целостности level
, используются значения типа Level
:
type Level = LevelFull | LevelNoCategory
type LevelFull =
{ degree : Text | ()
, categories : List<Text> | ()
}
type LevelNoCategory = Text
Правило возвращает результат "разрешено", если назначило ресурсу target
уровень целостности level
.
Правило возвращает результат "запрещено" в следующих случаях:
- Значение
level
превышает уровень целостности процессаsource
, субъектаdriver
или ресурсаcontainer
. - Значение
level
несравнимо с уровнем целостности процессаsource
, субъектаdriver
или ресурсаcontainer
. - Процессу
source
, субъектуdriver
или ресурсуcontainer
не назначен уровень целостности. - Значение
source
,target
,container
илиdriver
вне допустимого диапазона.
Пример:
/* Серверу класса updater.Realmserv будет разрешено отвечать на
* обращения любого клиента в решении, вызывающего метод resolve
* службы realm.Reader, если ресурсу, создание которого запрашивает
* клиент, при инициации ответа будет назначен уровень целостности LOW.
* Иначе серверу класса updater.Realmserv будет запрещено отвечать на
* обращения любого клиента, вызывающего метод resolve службы realm.Reader. */
response src=updater.Realmserv,
endpoint=realm.Reader {
match method=resolve {
mic.create { source : dst_sid
, target : message.handle.handle
, container : ()
, driver : src_sid
, level : "LOW"
}
}
}
Правило execute модели безопасности Mic
execute <ExecuteImage | ExecuteLevel>
type ExecuteImage =
{ image : Sid
, target : Sid
, level : Level | ... | ()
, levelR : Level | ... | ()
}
type ExecuteLevel =
{ image : Sid | ()
, target : Sid
, level : Level | ...
, levelR : Level | ... | ()
}
Назначает субъекту target
уровень целостности level
и задает минимальный уровень целостности субъектов и ресурсов, из которых этот субъект может принимать данные (levelR
). Код субъекта target
содержится в исполняемом файле image
.
Если значение level
не задано (level : ()
), субъекту target
назначается уровень целостности исполняемого файла image
. Если значение image
не задано (image : ()
), должно быть задано значение level
.
Если значение levelR
не задано (levelR : ()
), то значение levelR
равно level
.
Чтобы задать уровни целостности level
и levelR
, используются значения типа Level
. Определение типа Level
см. в "Правило create модели безопасности Mic".
Правило возвращает результат "разрешено", если назначило субъекту target
уровень целостности level
и задало минимальный уровень целостности субъектов и ресурсов, из которых этот субъект может принимать данные (levelR
).
Правило возвращает результат "запрещено" в следующих случаях:
- Значение
level
превышает уровень целостности исполняемого файлаimage
. - Значение
level
несравнимо с уровнем целостности исполняемого файлаimage
. - Значение
levelR
превышает значениеlevel
. - Значения
level
иlevelR
несравнимы. - Исполняемому файлу
image
не назначен уровень целостности. - Значение
image
илиtarget
вне допустимого диапазона.
Пример:
/* Запуск процесса класса updater.Manager будет разрешен,
* если при инициации запуска этому процессу будет назначен
* уровень целостности LOW, а также будет задан минимальный
* уровень целостности процессов и ресурсов, из которых этот
* процесс может принимать данные (LOW). Иначе запуск процесса
* класса updater.Manager будет запрещен. */
execute src=Einit, dst=updater.Manager, method=main {
mic.execute { target : dst_sid
, image : ()
, level : "LOW"
, levelR : "LOW"
}
}
Правило upgrade модели безопасности Mic
upgrade { source : <Sid>
, target : <Sid>
, container : <Sid | ()>
, driver : <Sid>
, level : <Level | ...>
}
Повышает назначенный ранее уровень целостности ресурса target
до значения level
в следующей ситуации:
- Процесс
source
инициирует повышение уровня целостности ресурсаtarget
. - Ресурсом
target
управляет субъектdriver
, который является поставщиком ресурсов или ядром KasperskyOS. - Ресурс
container
является контейнером для ресурсаtarget
(например, директория является контейнером для файлов и/или других директорий).
Если значение container
не задано (container : ()
), ресурс target
рассматривается как корневой, то есть не имеющий контейнера.
Чтобы задать уровень целостности level
, используются значения типа Level
. Определение типа Level
см. в "Правило create модели безопасности Mic".
Правило возвращает результат "разрешено", если повысило назначенный ранее уровень целостности ресурса target
до значения level
.
Правило возвращает результат "запрещено" в следующих случаях:
- Значение
level
не превышает уровень целостности ресурсаtarget
. - Значение
level
превышает уровень целостности процессаsource
, субъектаdriver
или ресурсаcontainer
. - Уровень целостности ресурса
target
превышает уровень целостности процессаsource
. - Процессу
source
, субъектуdriver
или ресурсуcontainer
не назначен уровень целостности. - Значение
source
,target
,container
илиdriver
вне допустимого диапазона.
Правило call модели безопасности Mic
call {source : <Sid>, target : <Sid>}
Проверяет допустимость информационных потоков от субъекта target
к субъекту source
.
Возвращает результат "разрешено" в следующих случаях:
- Уровень целостности субъекта
source
не превышает уровень целостности субъектаtarget
. - Уровень целостности субъекта
source
превышает уровень целостности субъектаtarget
, но минимальный уровень целостности субъектов и ресурсов, из которых субъектsource
может принимать данные, не превышает уровень целостности субъектаtarget
. - Уровень целостности субъекта
source
несравним с уровнем целостности субъектаtarget
, но минимальный уровень целостности субъектов и ресурсов, из которых субъектsource
может принимать данные, не превышает уровень целостности субъектаtarget
.
Возвращает результат "запрещено" в следующих случаях:
- Уровень целостности субъекта
source
превышает уровень целостности субъектаtarget
, и минимальный уровень целостности субъектов и ресурсов, из которых субъектsource
может принимать данные, превышает уровень целостности субъектаtarget
. - Уровень целостности субъекта
source
превышает уровень целостности субъектаtarget
, и минимальный уровень целостности субъектов и ресурсов, из которых субъектsource
может читать данные, несравним с уровнем целостности субъектаtarget
. - Уровень целостности субъекта
source
несравним с уровнем целостности субъектаtarget
, и минимальный уровень целостности субъектов и ресурсов, из которых субъектsource
может принимать данные, превышает уровень целостности субъектаtarget
. - Уровень целостности субъекта
source
несравним с уровнем целостности субъектаtarget
, и минимальный уровень целостности субъектов и ресурсов, из которых субъектsource
может принимать данные, несравним с уровнем целостности субъектаtarget
. - Субъекту
source
или субъектуtarget
не назначен уровень целостности. - Значение
source
илиtarget
вне допустимого диапазона.
Пример:
/* Любому клиенту в решении разрешено обращаться к
* любому серверу (ядру), если информационные потоки от
* сервера (ядра) к клиенту допускаются моделью
* безопасности Mic. Иначе любому клиенту в решении
* запрещено обращаться к любому серверу (ядру). */
request {
mic.call { source : src_sid
, target : dst_sid
}
}
Правило invoke модели безопасности Mic
invoke {source : <Sid>, target : <Sid>}
Проверяет допустимость информационных потоков от субъекта source
к субъекту target
.
Возвращает результат "разрешено", если уровень целостности субъекта target
не превышает уровень целостности субъекта source
.
Возвращает результат "запрещено" в следующих случаях:
- Уровень целостности субъекта
target
превышает уровень целостности субъектаsource
. - Уровень целостности субъекта
target
несравним с уровнем целостности субъектаsource
. - Субъекту
source
или субъектуtarget
не назначен уровень целостности. - Значение
source
илиtarget
вне допустимого диапазона.
Правило read модели безопасности Mic
read {source : <Sid>, target : <Sid>}
Проверяет допустимость чтения данных из ресурса target
потребителем ресурсов source
.
Возвращает результат "разрешено" в следующих случаях:
- Уровень целостности потребителя ресурсов
source
не превышает уровень целостности ресурсаtarget
. - Уровень целостности потребителя ресурсов
source
превышает уровень целостности ресурсаtarget
, но минимальный уровень целостности субъектов и ресурсов, из которых потребитель ресурсовsource
может принимать данные, не превышает уровень целостности ресурсаtarget
. - Уровень целостности потребителя ресурсов
source
несравним с уровнем целостности ресурсаtarget
, но минимальный уровень целостности субъектов и ресурсов, из которых потребитель ресурсовsource
может принимать данные, не превышает уровень целостности ресурсаtarget
.
Возвращает результат "запрещено" в следующих случаях:
- Уровень целостности потребителя ресурсов
source
превышает уровень целостности ресурсаtarget
, и минимальный уровень целостности субъектов и ресурсов, из которых потребитель ресурсовsource
может принимать данные, превышает уровень целостности ресурсаtarget
. - Уровень целостности потребителя ресурсов
source
превышает уровень целостности ресурсаtarget
, и минимальный уровень целостности субъектов и ресурсов, из которых потребитель ресурсовsource
может принимать данные, несравним с уровнем целостности ресурсаtarget
. - Уровень целостности потребителя ресурсов
source
несравним с уровнем целостности ресурсаtarget
, и минимальный уровень целостности субъектов и ресурсов, из которых потребитель ресурсовsource
может принимать данные, превышает уровень целостности ресурсаtarget
. - Уровень целостности потребителя ресурсов
source
несравним с уровнем целостности ресурсаtarget
, и минимальный уровень целостности субъектов и ресурсов, из которых потребитель ресурсовsource
может принимать данные, несравним с уровнем целостности ресурсаtarget
. - Потребителю ресурсов
source
или ресурсуtarget
не назначен уровень целостности. - Значение
source
илиtarget
вне допустимого диапазона.
Пример:
/* Любому клиенту в решении разрешено обращаться к серверу
* класса updater.Realmserv, вызывая метод read службы
* realm.Reader, если модель безопасности Mic допускает
* чтение данных этим клиентом из ресурса, который требуется
* этому клиенту. Иначе любому клиенту в решении запрещено
* обращаться к серверу класса updater.Realmserv, вызывая
* метод read службы realm.Reader. */
request dst=updater.Realmserv,
endpoint=realm.Reader {
match method=read {
mic.read { source : src_sid,
, target : message.handle.handle
}
}
}
Правило write модели безопасности Mic
write {source : <Sid>, target : <Sid>}
Проверяет допустимость записи данных в ресурс target
потребителем ресурсов source
.
Возвращает результат "разрешено", если уровень целостности ресурса target
не превышает уровень целостности потребителя ресурсов source
.
Возвращает результат "запрещено" в следующих случаях:
- Уровень целостности ресурса
target
превышает уровень целостности потребителя ресурсовsource
. - Уровень целостности ресурса
target
несравним с уровнем целостности потребителя ресурсовsource
. - Потребителю ресурсов
source
или ресурсуtarget
не назначен уровень целостности. - Значение
source
илиtarget
вне допустимого диапазона.
Выражение query_level модели безопасности Mic
query_level {source : <Sid>}
Предназначено для использования в качестве выражения, проверяющего выполнение условий в конструкции choice
(о конструкции choice
см. "Привязка методов моделей безопасности к событиям безопасности"). Проверяет уровень целостности субъекта или ресурса source
. В зависимости от результатов этой проверки выполняются различные варианты обработки события безопасности.
Выполняется некорректно в следующих случаях:
- Субъекту или ресурсу
source
не назначен уровень целостности. - Значение
source
вне допустимого диапазона.
Когда выражение выполняется некорректно, модуль безопасности Kaspersky Security Module возвращает решение "запрещено".
В начало