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

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

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

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

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

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

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

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

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

Группы

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

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

Пути

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

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

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

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

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

Временное и бессрочное

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

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

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

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

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

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

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

Абстракции SDK

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

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