Для контроля взаимодействий между сущностями необходимо, чтобы структура пересылаемых IPC-сообщений была прозрачна для модуля безопасности. В KasperskyOS это достигается с помощью статического декларирования интерфейсов сущностей. Для этого используются специальные языки: Entity Definition Language (EDL), Component Definition Language (CDL) и Interface Definition Language (IDL). Если IPC-сообщение не соответствует описанию интерфейса, оно будет отклонено модулем безопасности.
Описание интерфейсов сущности определяет допустимые структуры IPC-сообщений. Так задается явная связь между реализацией каждого метода и тем, как вызов этого метода представлен для модуля безопасности. Почти все инструменты сборки решения явно или косвенно используют описания интерфейсов сущностей.
Виды статических описаний
Описание интерфейсов сущности строится по модели "сущность-компонент-интерфейс":
Пример
Ниже приведены статические описания решения, состоящего из сущности Client
, не реализующей ни одного интерфейса, и сущности Server
, реализующей интерфейс FileOps
.
Client.edl
// Статическое описание состоит только из имени сущности
entity Client
Server.edl
// Сущность Server содержит экземпляр компонента Operations
entity Server
components {
OpsComp: Operations
}
Operations.cdl
// Компонент Operations реализует интерфейс FileOps
component Operations
interfaces {
FileOpsImpl: FileOps
}
FileOps.idl
package FileOps
// Объявление пользовательского типа String
typedef array <UInt8, 256> String;
// Интерфейс FileOps содержит единственный метод Open с входным аргументом name и выходным аргументом h
interface {
Open(in String name, out UInt32 h);
}
См. подробнее о синтаксисе статических описаний.
В начало