KasperskyOS Community Edition 1.1

Модель безопасности 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 – высокоцелостный процесс, который применяет обновление.

Обновление ПО выполняется по следующему сценарию:

  1. Downloader загружает образ обновления и сохраняет его в файл, передав содержимое образа в FileSystem. Этому файлу назначается низкий уровень целостности.
  2. Verifier получает образ обновления у FileSystem, прочитав низкоцелостный файл, и проверяет его цифровую подпись. Если подпись корректна, Verifier обращается к FileSystem, чтобы FileSystem создал копию файла с образом обновления. Новому файлу назначается высокий уровень целостности.
  3. Updater получает образ обновления у FileSystem, прочитав высокоцелостный файл, и применяет обновление.

В этом примере модель безопасности Mic обеспечивает то, что высокоцелостный процесс Updater может читать данные только из высокоцелостного образа обновления. Вследствие этого обновление может быть применено только после проверки цифровой подписи образа обновления.

В этом разделе

Объект модели безопасности Mic

Правило create модели безопасности Mic

Правило execute модели безопасности Mic

Правило upgrade модели безопасности Mic

Правило call модели безопасности Mic

Правило invoke модели безопасности Mic

Правило read модели безопасности Mic

Правило write модели безопасности Mic

Выражение query_level модели безопасности Mic

В начало
[Topic ssp_descr_security_models_mic]

Объект модели безопасности 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:

set_of_integrity_levels

Параметры degrees и categories в примере задают следующее множество:

{

{}/low, {}/high,

{net}/low, {net}/high,

{log}/low, {log}/high,

{net,log}/low, {net,log}/high

}

В этом множестве {} означает пустое множество.

Отношение порядка между элементами множества уровней целостности L задается следующим образом:

order_of_integrity_levels

Согласно этому отношению порядка 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 (поскольку в данные аудита включается как имя метода модели безопасности, так и имя объекта, предоставляющего этот метод, можно понять, что был вызван метод конкретного объекта).
  • Если нужно использовать несколько вариантов мандатного контроля целостности, например, с разными множествами уровней целостности субъектов/ресурсов.
В начало
[Topic ssp_descr_security_models_mic_object]

Правило 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"

}

}

}

В начало
[Topic ssp_descr_security_models_mic_create]

Правило 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"

}

}

В начало
[Topic ssp_descr_security_models_mic_execute]

Правило 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 вне допустимого диапазона.
В начало
[Topic ssp_descr_security_models_mic_upgrade]

Правило 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

}

}

В начало
[Topic ssp_descr_security_models_mic_call]

Правило invoke модели безопасности Mic

invoke {source : <Sid>, target : <Sid>}

Проверяет допустимость информационных потоков от субъекта source к субъекту target.

Возвращает результат "разрешено", если уровень целостности субъекта target не превышает уровень целостности субъекта source.

Возвращает результат "запрещено" в следующих случаях:

  • Уровень целостности субъекта target превышает уровень целостности субъекта source.
  • Уровень целостности субъекта target несравним с уровнем целостности субъекта source.
  • Субъекту source или субъекту target не назначен уровень целостности.
  • Значение source или target вне допустимого диапазона.
В начало
[Topic ssp_descr_security_models_mic_invoke]

Правило 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

}

}

}

В начало
[Topic ssp_descr_security_models_mic_read]

Правило write модели безопасности Mic

write {source : <Sid>, target : <Sid>}

Проверяет допустимость записи данных в ресурс target потребителем ресурсов source.

Возвращает результат "разрешено", если уровень целостности ресурса target не превышает уровень целостности потребителя ресурсов source.

Возвращает результат "запрещено" в следующих случаях:

  • Уровень целостности ресурса target превышает уровень целостности потребителя ресурсов source.
  • Уровень целостности ресурса target несравним с уровнем целостности потребителя ресурсов source.
  • Потребителю ресурсов source или ресурсу target не назначен уровень целостности.
  • Значение source или target вне допустимого диапазона.
В начало
[Topic ssp_descr_security_models_mic_write]

Выражение query_level модели безопасности Mic

query_level {source : <Sid>}

Предназначено для использования в качестве выражения, проверяющего выполнение условий в конструкции choice (о конструкции choice см. "Привязка методов моделей безопасности к событиям безопасности"). Проверяет уровень целостности субъекта или ресурса source. В зависимости от результатов этой проверки выполняются различные варианты обработки события безопасности.

Выполняется некорректно в следующих случаях:

  • Субъекту или ресурсу source не назначен уровень целостности.
  • Значение source вне допустимого диапазона.

Когда выражение выполняется некорректно, модуль безопасности Kaspersky Security Module возвращает решение "запрещено".

В начало
[Topic ssp_descr_security_models_mic_query_level]