Koncepcje modelu interakcji

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

Węzły wchodzą ze sobą w interakcje przez:

  • Odczytywanie i subskrybowanie atrybutów i zdarzeń
  • Zapisuję w atrybutach
  • Wywoływanie poleceń

Za każdym razem, gdy węzeł nawiązuje zaszyfrowaną sekwencję komunikacji z innym węzłem, tworzą one relację interakcji. Interakcje mogą składać się z co najmniej jednej Transakcji, a Transakcje – z co najmniej jednego Działania, które można rozumieć jako wiadomości na poziomie komunikatora między Węzłami.

Hierarchia modelu interakcji
Rysunek 1. Hierarchia modelu interakcji

W ramach transakcji obsługiwanych jest kilka działań, takich jak 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 przesyła informacje z serwera z powrotem do klienta.

Inicjatory i cele

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 tej reguły istnieją jednak wyjątki, takie jak interakcje związane 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 umożliwiający adresowanie i wysyłanie wiadomości do kilku urządzeń jednocześnie w ramach tego samego działania. Wszystkie węzły w grupie mają ten sam identyfikator grupy, który jest 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

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

Ten mechanizm jest ważny dla zwiększenia szybkości reakcji na komunikaty. Na przykład gdy użytkownik chce wyłączyć wszystkie światła, asystent głosowy może nawiązać pojedynczą interakcję z kilkoma światłami w grupie zamiast sekwencji poszczególnych interakcji. Jeśli inicjator tworzy osobne interakcje z każdą lampą, może to spowodować zauważalne dla człowieka opóźnienie w reakcji urządzenia. 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ć, korzystając z jednej z poniższych opcji:

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

W tych elementach składowych ścieżki endpoint i cluster mogą też zawierać operatory wieloznaczne, które umożliwiają wybór 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 czasowe określają maksymalny czas oczekiwania na wysłanie działania zapisu/wywołania. Celem tego limitu czasu jest zapobieganie atakowi polegającemu na przechwyceniu transakcji. Dotyczy to zwłaszcza urządzeń, które blokują dostęp do zasobów, takich jak otwieracze do bram garażowych i zamki.

Aby zrozumieć transakcje czasowe, warto dowiedzieć się, jak może dojść do ataków polegających na przechwyceniu i dlaczego transakcje czasowe są ważne.

Atak polegający na przechwyceniu

Atak polegający na przechwyceniu ma następujący wzorzec:

  1. Alicja wysyła Robertowi pierwszą wiadomość, np. działanie żądania zapisu.
  2. Eve, która przeprowadza atak typu „man-in-the-middle”, przechwytuje wiadomość i uniemożliwia Bobowi jej odebranie, na przykład przez zakłócanie sygnału radiowego.
  3. Alicja, nie otrzymując odpowiedzi od Roberta, wysyła drugą wiadomość.
  4. Ewa ponownie przechwytuje wiadomość i uniemożliwia Robertowi jej odebranie.
  5. Ewa wysyła pierwszą przechwyconą wiadomość do Boba, 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, gdy koduje polecenie takie jak „otwórz zamek”.

Aby zapobiec tego typu atakom, działania czasowe ustawiają maksymalny limit czasu transakcji na początku transakcji. Nawet jeśli Eve uda się wykonać pierwszych 6 kroków wektora ataku, nie będzie mogła odtworzyć wiadomości w kroku 7, ponieważ upłynął limit 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 operacji krytycznych na urządzeniach, które mają kontrolę nad fizycznymi lub wirtualnymi zasobami bezpieczeństwa i prywatności.

Abstrakcje pakietu SDK

Sekcje Transakcje odczytu, Transakcje zapisu i Transakcje wywołania zawierają ogólne omówienie działań modelu interakcji wykonywanych przez pakiet SDK.

Deweloper tworzący usługę, która korzysta z pakietu SDK Matter, zwykle nie wykonuje wywołań bezpośrednio w celu wykonania działań. Działania są abstrakcyjne i są realizowane przez funkcje pakietu SDK, które hermetyzują je w interakcję. Jednak zrozumienie działań IM jest ważne, aby inżynier mógł dobrze poznać możliwości Matter, a także precyzyjnie kontrolować implementację pakietu SDK.