Модель данных узла не имеет значения, если мы не можем выполнять с ней операции. Модель взаимодействия (IM) определяет отношения между менеджером устройств узла и менеджерами устройств других узлов. Это общий язык для общения между менеджерами устройств.
Узлы взаимодействуют друг с другом следующим образом:
- Чтение атрибутов и событий и подписка на них
- Запись в атрибуты
- Как вызывать команды
Когда узел устанавливает зашифрованную связь с другим узлом, между ними возникает взаимодействие. Взаимодействия могут состоять из одной или нескольких транзакций, а транзакции – из одного или нескольких действий, которые можно рассматривать как сообщения уровня IM между узлами.
Транзакции поддерживают несколько действий, например действие запроса на чтение, которое запрашивает атрибут или событие у другого узла, или его ответ – действие передачи данных, которое передает информацию с сервера на клиент.
Инициаторы и цели
Узел, который инициирует транзакцию, называется инициатором, а узел, который отвечает, – целью. Обычно инициатором является клиентский кластер, а целью – серверный кластер. Однако есть исключения, например взаимодействия с подписками, которые мы рассмотрим ниже.
Группы
Узлы в Matter могут принадлежать к группе. Группа устройств – это механизм, позволяющий одновременно адресовать и отправлять сообщения нескольким устройствам в рамках одного действия. У всех узлов в группе одинаковый идентификатор группы – 16-битное целое число.
Для групповой связи (Groupcast) Matter использует сообщения IPv6 Multicast, и у всех участников группы один и тот же адрес Multicast.
Пути
Чтобы взаимодействовать с атрибутом, событием или командой, необходимо указать путь к нему – местоположение атрибута, события или команды в иерархии модели данных узла. Однако в путях также могут использоваться группы или операторы подстановки, чтобы одновременно обращаться к нескольким узлам или кластерам, объединяя эти взаимодействия и, таким образом, уменьшая количество действий.
Этот механизм важен для повышения оперативности коммуникаций. Например, если пользователь хочет выключить все лампы, голосовой помощник может установить одно взаимодействие с несколькими лампами в группе вместо последовательности отдельных взаимодействий. Если инициатор создает отдельные взаимодействия с каждым светильником, это может привести к заметной задержке в работе устройства. Из-за этого разные устройства реагируют на команду с заметной задержкой. Это явление часто называют "эффектом попкорна".
Объект Path в Matter можно создать одним из следующих способов:
<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID> <cluster> <attribute | event | command>
В этих блоках пути endpoint и cluster также могут использоваться операторы подстановки для выбора нескольких экземпляров узла.
На время и без ограничения времени
Транзакцию записи или вызова можно выполнить двумя способами: с ограничением по времени и без ограничения по времени. Транзакции с ограничением по времени устанавливают максимальное время ожидания для отправки действия записи/вызова. Это необходимо, чтобы предотвратить перехват транзакции. Особенно это важно для устройств, которые предоставляют доступ к имуществу, например для гаражных ворот и замков.
Чтобы понять, что такое транзакции с временной меткой, нужно знать, как происходят атаки с перехватом и почему такие транзакции важны.
Атака на перехват
Атака с перехватом имеет следующую структуру:
- Алиса отправляет Бобу первое сообщение, например действие "Запрос на запись".
- Ева, посредник, перехватывает сообщение и не дает Бобу его получить, например с помощью радиопомех.
- Алиса не получает ответа от Боба и отправляет ему второе сообщение.
- Ева снова перехватывает сообщение и не дает Бобу его получить.
- Ева отправляет первое перехваченное сообщение Бобу, как будто оно пришло от Алисы.
- Боб отправляет ответ Алисе (и Еве).
- Ева сохраняет второе перехваченное сообщение, чтобы воспроизвести его позже. Поскольку Борис не получил исходное второе перехваченное сообщение от Алисы, он примет его. Это сообщение представляет собой нарушение безопасности, если оно содержит команду, например "открыть замок".
Чтобы предотвратить такие атаки, функция "Действия по расписанию" устанавливает максимальное время ожидания транзакции в начале транзакции. Даже если Еве удастся выполнить первые шесть шагов атаки, она не сможет воспроизвести сообщение на шаге 7, поскольку время ожидания транзакции истечет.
Транзакции с временными ограничениями увеличивают сложность и количество действий. Поэтому их не рекомендуется использовать для каждой транзакции, а только для критически важных операций на устройствах, которые контролируют физические или виртуальные ресурсы безопасности и конфиденциальности.
Абстракции SDK
В разделах Чтение транзакций, Запись транзакций и Вызов транзакций приводится общая информация о действиях модели взаимодействия, выполняемых SDK.
Разработчик, создающий продукт, в котором используется Matter SDK, обычно не выполняет вызовы для запуска действий напрямую. Действия абстрагируются функциями SDK, которые инкапсулируют их во взаимодействие. Однако понимание действий IM важно для того, чтобы инженер хорошо разбирался в возможностях Matter и мог точно управлять реализацией SDK.