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 oddziałują na siebie poprzez:

  • 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.

Hierarchiczny model interakcji
Rysunek 1. Hierarchia modelu interakcji

W transakcjach obsługiwanych jest kilka akcji, takich jak akcja żądania odczytu, która żąda atrybutu lub zdarzenia od innego węzła, lub jej odpowiedź, akcja raportu danych, która przesyła informacje z powrotem 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 klientów, a celem klaster serwerów. Istnieją jednak wyjątki od tej reguły, jak na przykład Interakcje subskrypcji analizowane dalej w 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 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 w komunikacji. 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. Zjawisko to często nazywa się „efektem popcornu”.

Ścieżkę w Matter można złożyć, korzystając z jednej z poniższych opcji:

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

W tych blokach konstrukcyjnych ścieżki elementy 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 dwa sposoby: czasowy i bezczasowy. 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 kontrolują 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 przechwytujący

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

  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 otrzymawszy 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 zatrzymuje drugą przechwyconą wiadomość, aby odtworzyć ją później. Ponieważ Bob nigdy nie otrzymał oryginalnej drugiej przechwyconej wiadomości od Alicji, zostanie ona zaakceptowana. Wiadomość ta stanowi naruszenie bezpieczeństwa, jeżeli zawiera polecenie, np. „otwórz zamek”.

Aby zapobiec tego typu atakom, funkcja Działania czasowe 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 wygasłego limitu czasu transakcji.

Transakcje czasowe zwiększają złożoność i liczbę akcji. Dlatego nie są one zalecane w przypadku każdej transakcji, ale tylko w przypadku krytycznych operacji na urządzeniach, które kontrolują fizyczne lub wirtualne zasoby związane z bezpieczeństwem i prywatnością.

Abstrakcje pakietu SDK

Sekcje Odczyt transakcji, Zapis transakcji i Wywołanie transakcji zawierają ogólny przegląd działań modelu interakcji wykonywanych przez zestaw SDK.

Programista tworzący produkt korzystający z zestawu SDK Matter zazwyczaj nie wywołuje bezpośrednio akcji; akcje są abstrakcyjnie definiowane przez funkcje zestawu SDK, które hermetyzują je w interakcję. Zrozumienie działań IM jest jednak istotne, aby zapewnić inżynierowi dobrą znajomość możliwości Matter, a także dokładną kontrolę nad implementacją zestawu SDK.