Koncepcje modelu interakcji

Model danych węzła nie ma znaczenia, jeśli nie możemy na nim wykonywać operacji. Model interakcji (IM) określa relację DM węzła z DM innych węzłów: wspólny język komunikacji między DM.

Węzły wchodzą ze sobą w interakcje w następujący sposób:

  • Odczytywanie atrybutów i zdarzeń oraz subskrybowanie ich
  • Zapisywanie w atrybutach
  • Wywoływanie poleceń

Gdy węzeł nawiąże zaszyfrowaną sekwencję komunikacji z innym węzłem, powstaje między nimi relacja interakcji. Interakcje mogą składać się z co najmniej 1 transakcji, a transakcje z co najmniej 1 działania, które można rozumieć jako wiadomości na poziomie IM między węzłami.

Hierarchia modelu interakcji
Rysunek 1. Hierarchia modelu interakcji

W przypadku transakcji obsługiwanych jest kilka działań, np. działanie Read Request Action, które wysyła żądanie atrybutu lub zdarzenia z innego węzła, lub jego odpowiedź, czyli działanie Report Data Action, które przesyła informacje z serwera do klienta.

Inicjatorzy i wartości docelowe

Węzeł, który inicjuje transakcję, to inicjator, a węzeł, który odpowiada, to cel. Zazwyczaj inicjatorem jest klaster klienta, a celem – klaster serwera. Od tego wzorca istnieją jednak wyjątki, np. w przypadku interakcji z subskrypcją, które analizujemy w dalszej części tej sekcji.

Grupy

Węzły w Matter mogą należeć do grupy. Grupa urządzeń to mechanizm adresowania i wysyłania wiadomości do kilku urządzeń w ramach tego samego działania jednocześnie. Wszystkie węzły w grupie mają ten sam identyfikator grupy, czyli 16-bitową liczbę całkowitą.

Do komunikacji na poziomie grupy (Groupcast) Matter wykorzystuje wiadomości IPv6 Multicast, a wszyscy członkowie grupy mają ten sam adres Multicast.

Ścieżki

Za każdym razem, gdy chcemy wejść w interakcję z atrybutem, zdarzeniem lub poleceniem, musimy określić ścieżkę tej interakcji: lokalizację atrybutu, zdarzenia lub polecenia w hierarchii modelu danych węzła. Ścieżki mogą też używać grup lub operatorów symboli wieloznacznych, aby jednocześnie odnosić się do kilku węzłów lub klastrów, agregując te interakcje i zmniejszając w ten sposób liczbę działań.

Ten mechanizm jest ważny, ponieważ zwiększa szybkość reakcji na komunikaty. Na przykład, gdy użytkownik chce wyłączyć wszystkie światła, asystent głosowy może nawiązać jedną interakcję z kilkoma światłami w grupie zamiast sekwencji pojedynczych interakcji. Jeśli inicjator tworzy indywidualne interakcje z każdym światłem, może to spowodować opóźnienie w reakcji urządzenia, które będzie zauważalne dla człowieka. Ten efekt powoduje, że wiele urządzeń reaguje na polecenie z widocznymi opóźnieniami. Jest to często nazywane „efektem popcornu”.

Ścieżkę w Matter można utworzyć za pomocą jednej z tych opcji:

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

W tych blokach konstrukcyjnych ścieżki symbole endpointcluster mogą też zawierać operatory symboli wieloznacznych, które umożliwiają wybieranie więcej niż 1 instancji węzła.

Z limitem czasu i bez limitu czasu

Transakcję zapisu lub wywołania można wykonać na 2 sposoby: z określonym czasembez określonego czasu. Transakcje czasowe ustalają maksymalny czas oczekiwania na wysłanie działania zapisu lub wywołania. Celem tego limitu czasu jest zapobieganie atakom przechwytującym na transakcję. Jest to szczególnie ważne w przypadku urządzeń, które ograniczają dostęp do zasobów, takich jak otwieracze do garażu i zamki.

Aby zrozumieć transakcje czasowe, warto wiedzieć, jak mogą przebiegać ataki typu „man-in-the-middle” i dlaczego transakcje czasowe są ważne.

Atak przechwycenia

Atak typu Intercept ma następujący wzorzec:

  1. Alicja wysyła Robertowi pierwszą wiadomość, np. działanie „Prośba o napisanie”.
  2. Ewa, osoba podszywająca się pod nadawcę, przechwytuje wiadomość i uniemożliwia Bobowi jej odebranie, np. za pomocą jakiegoś rodzaju zagłuszania radiowego.
  3. Alicja, nie otrzymując odpowiedzi od Roberta, wysyła drugą wiadomość.
  4. Ewa ponownie przechwytuje wiadomość i uniemożliwia Bobowi jej otrzymanie.
  5. Ewa wysyła pierwszą przechwyconą wiadomość do Boba, tak jakby pochodziła od Alicji.
  6. Bob wysyła odpowiedź do Alicji (i Ewy).
  7. Ewa zachowuje drugą przechwyconą wiadomość, aby odtworzyć ją później. Ponieważ Robert nigdy nie otrzymał oryginalnej drugiej przechwyconej wiadomości od Alicji, zaakceptuje ją. Ta wiadomość stanowi naruszenie bezpieczeństwa, jeśli zawiera polecenie, np. „otwórz zamek”.

Aby zapobiec tego typu atakom, funkcja działań czasowych ustawia maksymalny limit czasu transakcji na początku transakcji. Nawet jeśli Eve uda się wykonać pierwsze 6 kroków ataku, nie będzie mogła odtworzyć wiadomości w kroku 7 z powodu przekroczenia limitu czasu transakcji.

Transakcje czasowe zwiększają złożoność i liczbę działań. Dlatego nie są one zalecane w przypadku każdej transakcji, ale tylko w przypadku krytycznych operacji na urządzeniach, które mają kontrolę nad fizycznymi lub wirtualnymi zasobami związanymi z bezpieczeństwem i prywatnością.

Abstrakcje pakietu SDK

Sekcje Transakcje odczytu, Transakcje zapisuTransakcje wywołania zawierają ogólny przegląd działań modelu interakcji wykonywanych przez pakiet SDK.

Deweloper tworzący produkt, który korzysta z pakietu Matter SDK, zwykle nie wykonuje wywołań w celu bezpośredniego wykonania działań. Działania są abstrakcyjne w funkcjach pakietu SDK, które enkapsulują je w interakcję. Jednak zrozumienie działań IM jest ważne, aby zapewnić inżynierowi dobrą znajomość możliwości Matter, a także precyzyjną kontrolę nad wdrożeniem pakietu SDK.