Model danych (DM) węzła nie ma znaczenia, jeśli nie możemy na nim wykonywać operacji. Model interakcji (IM) definiuje relację DM węzła z DM innych węzłów: wspólny język komunikacji między DM.
Węzły komunikują się ze sobą, wykonując te czynności:
- Odczytywanie i subskrybowanie atrybutów oraz zdarzeń
- Zapisywanie danych w atrybutach
- Wywoływanie poleceń
Gdy węzeł nawiązuje szyfrowaną sekwencję komunikacji z innym węzłem, tworzy relację 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.
W przypadku transakcji obsługiwanych jest kilka działań, takich jak działanie żądania odczytu, które wysyła żądanie atrybutu lub zdarzenia do innego węzła, lub jego odpowiedź, działanie raportowania danych, które przekazuje informacje z powrotem od serwera do klienta.
Inicjatorzy i odbiorcy
Węzeł, który inicjuje transakcję, jest inicjatorem, a węzeł, który odpowiada, jest celem. Zwykle inicjator to klaster klienta, a docelowe – klaster serwera. Istnieją jednak wyjątki od tego wzoru, np. w przypadku interakcji z subskrypcją analizowanych 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, który jest 16-bitową liczbą całkowitą.
Aby umożliwić komunikację na poziomie grupy (Groupcast), Matter korzysta z komunikatów IPv6 Multicast, a wszyscy członkowie grupy mają ten sam adres Multicast.
Ścieżki
Gdy chcemy wchodzić w interakcję z atrybutem, zdarzeniem lub poleceniem, musimy określić ścieżkę dla tej interakcji: lokalizację atrybutu, zdarzenia lub polecenia w hierarchii modelu danych węzła. Uwaga: ścieżki mogą też używać grup lub operatorów symboli zastępczych do jednoczesnego adresowania kilku węzłów lub klastrów, co powoduje agregację tych interakcji i w efekcie zmniejsza 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ć jedną interakcję z kilkoma światłami w grupie zamiast sekwencji poszczególnych interakcji. Jeśli inicjator tworzy indywidualne interakcje z każdą lampą, może to spowodować zauważalne dla człowieka opóźnienie w reakcji urządzenia. W efekcie urządzenia reagują na polecenie z widocznymi opóźnieniami. Jest to często nazywane „efektem popcornu”.
Ścieżkę w Matter można utworzyć, korzystając z jednego z tych sposobów:
<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID> <cluster> <attribute | event | command>
W ramach tych elementów ścieżki endpoint
i cluster
mogą też zawierać operatory z symbolami wieloznacznymi, 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 opóźnieniem lub bez opóźnienia. Transakcje z czasem trwania określają maksymalny czas oczekiwania na wysłanie działania Write/Invoke. Ten limit czasu ma na celu zapobieganie atakowi przechwytywania transakcji. Jest to szczególnie ważne w przypadku urządzeń, które umożliwiają dostęp do zasobów, takich jak otwieracze i zamki garażowe.
Aby zrozumieć transakcje czasowe, warto wiedzieć, jak mogą wyglądać ataki przechwytywania i dlaczego transakcje czasowe są ważne.
Atak przechwytujący
Atak przechwytujący ma następujący schemat:
- Alicja wysyła Bobowi pierwszą wiadomość, np. działanie Write Request Action.
- Eve, która jest osobą przechwytującą, przechwytuje wiadomość i uniemożliwia Bobowi jej otrzymanie, na przykład przez zakłócanie sygnału radiowego.
- Nie otrzymując odpowiedzi od Roberta, wysyła drugą wiadomość.
- Eve ponownie przechwytuje wiadomość i uniemożliwia jej dotarcie do Boba.
- Eve wysyła pierwszą przechwyconą wiadomość do Boba, tak jakby pochodziła od Alicji.
- Bob wysyła odpowiedź do Alice (i Eve).
- Eve przechowuje drugą przechwyconą wiadomość, aby odtworzyć ją później. Ponieważ Robert nigdy nie otrzymał drugiej przechwyconej wiadomości od Alicji, zaakceptuje ją. Ta wiadomość stanowi naruszenie bezpieczeństwa, gdy zawiera kodowany rozkaz, np. „otwórz zamek”.
Aby zapobiec tego typu atakom, działania oparte na czasie ustawiają maksymalny limit czasu transakcji na początku transakcji. Nawet jeśli Eve uda się wykonać pierwsze 6 kroków wektora ataku, nie będzie mogła odtworzyć wiadomości na kroku 7 z powodu wygaśnięcia limitu czasu transakcji.
Transakcje o czasie zwiększają złożoność i liczbę działań. Dlatego nie zalecamy ich stosowania w przypadku każdej transakcji, ale tylko w przypadku krytycznych operacji 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ólny opis działań modelu interakcji wykonywanych przez SDK.
Deweloperzy tworzący produkt, który korzysta z pakietu SDK Matter, zazwyczaj nie wykonują wywołań do wykonania działań bezpośrednio. Działania są abstrakcyjne dzięki funkcjom SDK, które otaczają je interakcją. Jednak zrozumienie działań IM jest ważne, aby zapewnić inżynierowi dobrą znajomość możliwości pakietu Matter, a także dokładną kontrolę nad implementacją pakietu SDK.