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

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

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

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

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

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

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

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

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

Группы

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

Для осуществления групповой связи ( Groupcast ) Matter использует сообщения IPv6 Multicast , и все члены группы имеют один и тот же 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. Ева хранит второе перехваченное сообщение для последующего воспроизведения. Поскольку Боб так и не получил первоначальное второе перехваченное сообщение от Алисы, она примет его. Это сообщение представляет собой нарушение безопасности, поскольку в нем закодирована команда, например, «открыть замок».

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

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

абстракции SDK

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

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