В KasperskyOS все взаимодействия между процессами статически типизированы. Допустимые структуры IPC-сообщения определяются IDL-описаниями серверов.
IPC-сообщение (как запрос, так и ответ) содержит фиксированную часть и опционально арену.
Фиксированная часть IPC-сообщения
Фиксированная часть IPC-сообщения содержит RIID, MID и опционально параметры интерфейсных методов фиксированного размера.
Параметры фиксированного размера – это параметры, которые имеют IDL-типы фиксированного размера.
RIID и MID идентифицируют вызываемый интерфейс и метод:
Тип фиксированной части IPC-сообщения генерируется компилятором NK на основе IDL-описания интерфейса. Для каждого метода интерфейса генерируется отдельная структура. Также генерируются типы union
для хранения любого запроса к процессу, компоненту или интерфейсу. Подробнее см. Пример генерации транспортных методов и типов.
Арена IPC-сообщения
Арена IPC-сообщения (далее также арена) содержит параметры интерфейсных методов (и/или элементы этих параметров) переменного размера.
Параметры переменного размера – это параметры, которые имеют IDL‑типы переменного размера.
Подробнее см. "Работа с ареной IPC-сообщений".
Максимальный размер IPC-сообщения
Максимальный размер IPC-сообщения определяется параметрами ядра KasperskyOS. На большинстве поддерживаемых KasperskyOS аппаратных платформ совокупный размер фиксированной части и арены IPC-сообщения не может превышать 4, 8 или 16 МБ.
Проверка структуры IPC-сообщения модулем безопасности
Перед тем как вызывать связанные с IPC-сообщением правила, подсистема Kaspersky Security Module проверяет отправляемое IPC-сообщение на корректность. Проверяются как запросы, так и ответы. Если IPC-сообщение имеет некорректную структуру, оно будет отклонено без вызова связанных с ним методов моделей безопасности.
Реализация IPC-взаимодействия
Чтобы упростить разработчику работу над реализацией IPC-взаимодействия, в составе KasperskyOS Community Edition поставляются:
libkos
, которая предоставляет API для работы с IPC-транспортом.Реализация простейшего IPC-взаимодействия показана в примерах echo и ping (/opt/KasperskyOS-Community-Edition-<version>/examples/
).