Koncepcje modelu interakcji

Model danych (DM) węzła nie jest istotny, jeśli nie możemy wykonywać na nim 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 przez:

  • odczytywanie atrybutów i zdarzeń oraz subskrybowanie ich;
  • zapisywanie atrybutów;
  • wywoływanie poleceń.

Gdy węzeł nawiązuje zaszyfrowaną sekwencję komunikacji z innym węzłem, tworzy się 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 transakcjach obsługiwanych jest kilka działań, np. działanie żądania odczytu, które żąda atrybutu lub zdarzenia z innego węzła, lub jego odpowiedź, czyli działanie raportowania danych, które przenosi informacje z serwera do klienta.

Inicjatorzy i cele

Węzeł, który inicjuje transakcję, jest inicjatorem, a węzeł, który odpowiada, jest celem. Zazwyczaj inicjatorem jest klaster klienta, a celem – klaster serwera. Od tego wzorca istnieją jednak wyjątki, np. w przypadku interakcji subskrypcji, które są analizowane 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. Wszystkie węzły w grupie mają ten sam identyfikator grupy, czyli 16-bitową liczbę całkowitą.

Aby umożliwić komunikację na poziomie grupy (Groupcast), Matter wykorzystuje wiadomości IPv6 Multicast, a wszyscy członkowie grupy mają ten sam adres Multicast.

Ścieżki

Aby 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 wieloznacznych , aby jednocześnie adresować kilka 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, aby zwiększyć szybkość reakcji komunikacji. Gdy na przykład 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 utworzy osobne 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 określane jako „efekt popcornu”.

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

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

W tych blokach konstrukcyjnych ścieżki endpoint i cluster mogą też zawierać operatory wieloznaczne, które umożliwiają wybranie 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 limitem czasu i bez limitu czasu. Transakcje z limitem czasu określają maksymalny limit czasu 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 garażowe i zamki.

Aby zrozumieć transakcje z limitem czasu, warto dowiedzieć się, jak mogą się zdarzyć ataki przechwytujące i dlaczego transakcje z limitem czasu są ważne.

Atak przechwytujący

Atak przechwytujący ma ten wzorzec:

  1. Alicja wysyła do Roberta pierwszą wiadomość, np. działanie żądania zapisu.
  2. Ewa, osoba atakująca, przechwytuje wiadomość i uniemożliwia Robertowi jej odebranie, np. przez zakłócanie sygnału radiowego.
  3. Alicja nie otrzymuje odpowiedzi od Roberta i wysyła drugą wiadomość.
  4. Ewa ponownie przechwytuje wiadomość i uniemożliwia Robertowi jej odebranie.
  5. Ewa wysyła do Roberta pierwszą przechwyconą wiadomość, tak jakby pochodziła od Alicji.
  6. Robert wysyła odpowiedź do Alicji (i Ewy).
  7. Ewa przechowuje drugą przechwyconą wiadomość, aby ją później odtworzyć. Ponieważ Robert nigdy nie otrzymał od Alicji oryginalnej drugiej przechwyconej wiadomości, zaakceptuje ją. Ta wiadomość stanowi naruszenie zabezpieczeń, jeśli koduje polecenie takie jak „otwórz zamek”.

Aby zapobiec tego typu atakom, działania z limitem czasu ustawiają maksymalny limit czasu transakcji na początku transakcji. Nawet jeśli Ewie uda się wykonać pierwsze 6 kroków wektora ataku, nie będzie mogła odtworzyć wiadomości w kroku 7 z powodu upłynięcia limitu czasu transakcji.

Transakcje z limitem czasu zwiększają złożoność i liczbę działań. Dlatego nie są zalecane w przypadku każdej transakcji, ale tylko w przypadku krytycznych operacji na urządzeniach, które mają kontrolę nad zasobami bezpieczeństwa fizycznego lub wirtualnego oraz prywatności.

Abstrakcje pakietu SDK

W sekcjach Transakcje odczytu, Transakcje zapisu i Transakcje wywołania znajdziesz ogólne informacje o działaniach modelu interakcji wykonywanych przez pakiet SDK.

Deweloper tworzący produkt, który korzysta z pakietu Matter SDK zwykle nie wykonuje bezpośrednio wywołań do wykonywania działań. Działania są abstrahowane przez funkcje pakietu SDK, które enkapsulują je w interakcji. Jednak zrozumienie działań IM jest ważne, aby inżynier mógł dobrze poznać możliwości Matter i mieć pełną kontrolę nad implementacją pakietu SDK.