Концепции модели взаимодействия

Модель данных (DM) узла не имеет значения, если мы не можем выполнять над ним операции. Модель взаимодействия ( IM ) определяет связь DM узла с DM других узлов: общий язык для общения между DM.

Узлы взаимодействуют друг с другом посредством:

  • Чтение и подписка на атрибуты и события
  • Запись в атрибуты
  • Вызов команд

Каждый раз, когда узел устанавливает зашифрованную последовательность связи с другим узлом, они образуют отношение взаимодействия . Взаимодействия могут состоять из одной или нескольких транзакций , а транзакции состоят из одного или нескольких действий , которые можно рассматривать как сообщения уровня обмена мгновенными сообщениями между узлами.

Иерархия модели взаимодействия
Рисунок 1: Иерархия модели взаимодействия

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

Инициаторы и цели

Узел, инициирующий транзакцию, называется Инициатором , а отвечающий узел — Целевым . Обычно Инициатором является клиентский кластер, а Целевым — серверный кластер. Однако из этого правила есть исключения, например, во взаимодействиях по подписке, которые анализируются далее в этом разделе.

Группы

Узлы в Matter могут принадлежать к группе . Группа устройств — это механизм для адресации и отправки сообщений нескольким устройствам в одном действии одновременно. Все узлы в группе имеют один и тот же идентификатор группы — 16-битное целое число.

Для осуществления связи на уровне группы ( Groupcast ) Matter использует сообщения IPv6 Multicast , и все члены группы имеют один и тот же адрес Multicast .

Пути

Всякий раз, когда мы хотим взаимодействовать с атрибутом, событием или командой, мы должны указать путь для этого взаимодействия: местоположение атрибута, события или команды в иерархии модели данных узла. Важно отметить, что пути также могут использовать группы или подстановочные операторы для одновременного обращения к нескольким узлам или кластерам, объединяя эти взаимодействия и тем самым уменьшая количество действий.

Этот механизм важен для повышения скорости реагирования. Например, когда пользователь хочет выключить все светильники, голосовой помощник может установить единое взаимодействие с несколькими светильниками в группе вместо последовательности отдельных взаимодействий. Если Инициатор создаёт отдельные взаимодействия с каждым светильником, это может привести к заметной для человека задержке в реакции устройства. Этот эффект приводит к тому, что несколько устройств реагируют на команду с видимыми задержками между ними. Это часто называют «эффектом попкорна».

Путь в Matter можно собрать, используя один из вариантов ниже:

<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID>        <cluster> <attribute | event | command>

А в пределах этих строительных блоков Path endpoint и cluster могут также включать подстановочные операторы для выбора более одного экземпляра Node.

Временные и невременные

Существует два способа выполнения транзакции записи или вызова: с заданным временем и без заданного времени . Временные транзакции устанавливают максимальный тайм-аут для отправки действия записи/вызова. Цель этого тайм-аута — предотвратить атаку перехвата транзакции. Это особенно актуально для устройств, ограничивающих доступ к активам, таких как открыватели гаражей и замки.

Чтобы понять, что такое синхронизированные транзакции, полезно понять, как могут происходить атаки перехвата и почему синхронизированные транзакции важны.

Атака перехвата

Атака перехвата имеет следующую схему:

  1. Алиса отправляет Бобу начальное сообщение, например, действие «Запрос на запись».
  2. Ева, посредник, перехватывает сообщение и не дает Бобу его получить, например, с помощью какого-либо типа радиоглушения.
  3. Алиса, не получив ответа от Боба, отправляет второе сообщение.
  4. Ева снова перехватывает сообщение и не дает Бобу его получить.
  5. Ева отправляет первое перехваченное сообщение Бобу, как будто оно пришло от Алисы.
  6. Боб отправляет ответ Алисе (и Еве).
  7. Ева сохраняет второе перехваченное сообщение для последующего воспроизведения. Поскольку Боб не получал исходное второе перехваченное сообщение от Алисы, он его примет. Это сообщение представляет собой нарушение безопасности, поскольку содержит закодированную команду, например, «открыть замок».

Для предотвращения подобных атак функция Timed Actions устанавливает максимальное время ожидания транзакции в начале транзакции. Даже если Еве удастся выполнить первые шесть шагов вектора атаки, она не сможет воспроизвести сообщение на шаге 7 из-за истечения времени ожидания транзакции.

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

Абстракции SDK

Разделы «Транзакции чтения» , «Транзакции записи» и «Вызов транзакций» предоставляют общий обзор действий модели взаимодействия, выполняемых SDK.

Разработчик, создающий продукт, использующий Matter SDK, обычно не вызывает действия напрямую; действия абстрагируются функциями SDK, которые инкапсулируют их в взаимодействие. Однако понимание действий IM важно для хорошего понимания возможностей Matter , а также для точного контроля над реализацией SDK.