KasperskyOS Community Edition 1.0

Структура IPC-сообщения

В KasperskyOS все взаимодействия между сущностями статически типизированы. Допустимые структуры IPC-сообщения определяются IDL-описанием интерфейсов сущности-получателя сообщения (сервера).

Корректное IPC-сообщение (как запрос, так и ответ) содержит фиксированную часть и арену.

Фиксированная часть сообщения

Фиксированная часть сообщения содержит аргументы фиксированного размера, а также RIID и MID.

Аргументы фиксированного размера – это аргументы любых IDL-типов, кроме типа sequence.

RIID и MID идентифицируют вызываемый интерфейс и метод:

  • RIID (Runtime Implementation ID) является порядковым номером вызываемой реализации интерфейса сущности (начиная с нуля).
  • MID (Method ID) является порядковым номером метода в содержащем его интерфейсе (начиная с нуля).

Тип фиксированной части сообщения генерируется компилятором NK на основе IDL-описания интерфейса. Для каждого метода интерфейса генерируется отдельная структура. Также генерируются типы union для хранения любого запроса к серверу, компоненту или интерфейсу.

Например, для метода Ping интерфейса Ping (компонент Ping сущности Server в примере echo) компилятор NK создаст тип фиксированной части запроса Ping_Ping_req и фиксированной части ответа Ping_Ping_res. Также будут сгенерированы следующие типы union:

  • Ping_req и Ping_res – фиксированные части запроса и ответа для любого метода интерфейса Ping;
  • Ping_component_req и Ping_component_res – фиксированные части запроса и ответа для любого метода любого интерфейса, реализация которого включена в компонент Ping;

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

  • Server_entity_req и Server_entity_res – фиксированные части запроса и ответа для любого метода любого интерфейса, реализация которого включена в любой компонент, экземпляр которого входит в сущность Server.

Арена

Арена представляет собой буфер для хранения аргументов переменного размера (IDL‑тип sequence).

Проверка сообщения в Kaspersky Security System

Проверку структуры отправляемого сообщения на корректность выполняет подсистема Kaspersky Security Module. Проверяются как запросы, так и ответы. Если сообщение имеет некорректную структуру, оно будет отклонено без вызова связанных с ним методов моделей безопасности.

Формирование структуры сообщения

В составе KasperskyOS Community Edition поставляются следующие инструменты, позволяющие упростить для разработчика создание и упаковку IPC-сообщения:

Формирование простейшего IPC-сообщения показано в примере echo.