Koncepcje modelu interakcji

Model danych węzła jest nieodpowiedni, jeśli nie możemy na nim wykonać operacji. Model interakcji (IM) określa relację DM węzła z innymi węzłami. Jest to wspólny język komunikacji między czatami.

Węzły wchodzą ze sobą w interakcję:

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

Gdy węzeł ustanawia zaszyfrowaną sekwencję komunikacji z innym węzłem, ustanawia relację interakcja. Interakcje mogą składać się z jednej lub kilku transakcji, a transakcje na transakcje składają się z jednego lub kilku działań, które można rozróżnić jako komunikaty między węzłami na poziomie komunikatora.

Hierarchia modelu interakcji
Rysunek 1. Hierarchia modelu interakcji

W przypadku transakcji obsługiwanych jest kilka akcji, np. akcja żądania odczytu, która żąda atrybutu lub zdarzenia z innego węzła, bądź jego odpowiedź – akcja na podstawie danych raportu, która przenosi informacje z serwera do klienta.

Inicjatorzy i cele

Węzeł, który inicjuje transakcję, to Inicjator, a węzeł, który odpowiada, to cel. Zwykle inicjatorem jest klaster klienta, a obiektem docelowym jest klaster serwera. Istnieją jednak wyjątki od tego wzorca, jak np. w interakcjach z subskrypcjami analizowanych w dalszej części tej sekcji.

Grupy

Węzły w zasobniku Matter mogą należeć do grupy. Grupa urządzeń to mechanizm umożliwiający jednoczesne adresowanie i wysyłanie wiadomości do kilku urządzeń w ramach tej samej akcji. Wszystkie węzły w grupie mają tę samą identyfikator grupy, 16-bitową liczbę całkowitą.

Aby nawiązać 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: lokalizację atrybutu, zdarzenia lub polecenia w hierarchii modelu danych węzła. W związku z tym ścieżki mogą też używać grup lub operatorów z symbolami wieloznacznymi do obsługi kilku węzłów lub klastrów jednocześnie, co skumuluje te interakcje i zmniejsza liczbę działań.

Ten mechanizm usprawnia responsywność komunikacji. Na przykład: gdy użytkownik chce wyłączyć wszystkie światła, asystent głosowy może połączyć się w jedną interakcję z kilkoma światłami w grupie, a nie jako sekwencję poszczególnych interakcji. Jeśli Inicjator wywołuje indywidualne interakcje z każdym oświetleniem, może to spowodować zauważalne opóźnienie w reagowaniu urządzenia. W efekcie kilka urządzeń reaguje na polecenie z widocznymi opóźnieniami między nimi. Często mówimy o tym „efektem popcornu”.

Ścieżka w usłudze Matter można utworzyć na 1 z tych sposobów:

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

Wśród tych elementów składowych ścieżki endpoint i cluster mogą też zawierać operatory symboli wieloznacznych służące do wybierania więcej niż 1 instancji węzła.

Z sygnaturą czasową i bez limitu czasu

Transakcję zapisu lub wywołania można wykonać na dwa sposoby: przez określony czas lub bez czasu. W przypadku transakcji czasowych wyznaczony jest maksymalny czas oczekiwania na wysłanie działania zapisu/wywołania. Ten czas oczekiwania ma na celu zapobieganie atakom przechwytującym w ramach transakcji. Jest to szczególnie istotne w przypadku urządzeń od bramy dostępu do takich zasobów, jak np. zamki do garażu czy otwieranie do garażu.

Aby zrozumieć, na czym polegają transakcje ograniczone z czasem, warto dowiedzieć się, jak mogą występować ataki przechwytywane i dlaczego transakcje czasowe są ważne.

Przechwytywanie ataku

Atak przechwytujący ma następujący wzorzec:

  1. Alicja wysyła Robertowi wiadomość początkową, na przykład z żądaniem zapisu.
  2. Eve, czyli człowiek w środku, przechwytuje wiadomość i uniemożliwia Robertowi jej odbiór, na przykład przez zagięcie sygnału radiowego.
  3. Alicja nie otrzymuje odpowiedzi od Roberta i wysyła kolejną wiadomość.
  4. Eve ponownie przechwytuje dane i uniemożliwia Robertowi jego otrzymanie.
  5. Eve wysyła do Roberta pierwszą przechwyconą wiadomość, jakby Eve pochodziła od Alicji.
  6. Bob wysyła odpowiedź do Alicji (i Ewy).
  7. Ewa trzyma drugą przechwyconą wiadomość, aby odtworzyć ją później. Ponieważ Robert nie otrzymał od Alicji pierwszej przechwyconej wiadomości, będzie ją akceptować. Ten komunikat stanowi naruszenie zabezpieczeń, gdy koduje polecenie takie jak „Otwórz kłódkę”.

Aby zapobiec tego typu atakom, działania ograniczone czasowo ustawiają maksymalny limit czasu transakcji na początku transakcji. Nawet jeśli Eve ukończy pierwsze 6 kroków wektora ataku, nie będzie mogła ponownie odtworzyć wiadomości w kroku 7 z powodu przekroczenia limitu czasu oczekiwania na transakcję.

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

Abstrakcje pakietu SDK

Sekcje Odczytywanie transakcji, Zapisywanie transakcji i Wywoływanie transakcji zawierają ogólny przegląd działań modelu interakcji wykonywanych przez pakiet SDK.

Programista tworzący usługę, który korzysta z pakietu SDK Matter, zazwyczaj nie wykonuje wywołań bezpośrednio do działań. Są one wyodrębniane przez funkcje pakietu SDK, które obejmą je w interakcji. Znajomość działań komunikatorów pozwala inżynierowi sprawnie posługiwać się umiejętnościami platformy Matter, a także umożliwić szczegółową kontrolę nad implementacją pakietu SDK.