Das Datenmodell (DM) eines Knotens ist nicht relevant, wenn wir keine Vorgänge daran ausführen können. Das Interaktionsmodell (IM) definiert die DM-Beziehung eines Knotens zur DM anderer Knoten: eine gemeinsame Sprache für die Kommunikation zwischen DMs.
Knoten interagieren miteinander, indem sie:
- Attribute und Ereignisse lesen und abonnieren
- Attribute schreiben
- Befehle aufrufen
Wenn ein Knoten eine verschlüsselte Kommunikationssequenz mit einem anderen Knoten herstellt, entsteht eine Interaktionsbeziehung. Interaktionen können aus einer oder mehreren Transaktionen bestehen. Transaktionen bestehen aus einer oder mehreren Aktionen, die als Nachrichten auf IM-Ebene zwischen Knoten verstanden werden können.

Für Transaktionen werden mehrere Aktionen unterstützt, z. B. eine „Read Request Action“ (Lesenanfrageaktion), mit der ein Attribut oder Ereignis von einem anderen Knoten angefordert wird, oder die entsprechende Antwort, die „Report Data Action“ (Daten melden), mit der die Informationen vom Server an den Client zurückgegeben werden.
Initiatoren und Ziele
Der Knoten, der eine Transaktion initiiert, ist der Initiator, während der Knoten, der antwortet, das Ziel ist. In der Regel ist der Initiator ein Clientcluster und das Ziel ein Servercluster. Es gibt jedoch Ausnahmen von diesem Muster, z. B. bei den Abo-Interaktionen, die weiter unten in diesem Abschnitt analysiert werden.
Gruppen
Knoten in Matter können zu einer Gruppe gehören. Eine Gerätegruppe ist ein Mechanismus zum Adressieren und Senden von Nachrichten an mehrere Geräte in derselben Aktion gleichzeitig. Alle Knoten in einer Gruppe haben dieselbe Gruppen-ID, eine 16-Bit-Ganzzahl.
Für die Kommunikation auf Gruppenebene (Groupcast) verwendet Matter IPv6-Multicast-Nachrichten und alle Gruppenmitglieder haben dieselbe Multicast-Adresse.
Pfade
Wenn wir mit einem Attribut, Ereignis oder Befehl interagieren möchten, müssen wir den Pfad für diese Interaktion angeben: den Speicherort eines Attributs, Ereignisses oder Befehls in der Datenmodellhierarchie eines Knotens. Allerdings können in Pfaden auch Gruppen oder Platzhalteroperatoren verwendet werden, um mehrere Knoten oder Cluster gleichzeitig anzusprechen. Dadurch werden diese Interaktionen zusammengefasst und die Anzahl der Aktionen verringert.
Dieser Mechanismus ist wichtig, um die Reaktionsfähigkeit der Kommunikation zu verbessern. Wenn ein Nutzer beispielsweise alle Lampen ausschalten möchte, kann ein Sprachassistent eine einzelne Interaktion mit mehreren Lampen in einer Gruppe herstellen, anstatt eine Reihe einzelner Interaktionen. Wenn der Initiator einzelne Interaktionen mit jeder Lampe erstellt, kann dies zu einer für den Menschen wahrnehmbaren Latenz bei der Reaktionsfähigkeit des Geräts führen. Dieser Effekt führt dazu, dass die Geräte mit sichtbaren Verzögerungen auf einen Befehl reagieren. Dies wird oft als „Popcorn-Effekt“ bezeichnet.
Ein Pfad in Matter kann mit einer der folgenden Optionen zusammengestellt werden:
<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID> <cluster> <attribute | event | command>
Innerhalb dieser Pfadbausteine können endpoint
und cluster
auch Platzhalteroperatoren zum Auswählen mehrerer Knoteninstanzen enthalten.
Mit und ohne Zeitlimit
Es gibt zwei Möglichkeiten, eine Schreib- oder Aufruftransaktion auszuführen: zeitgesteuert und nicht zeitgesteuert. Bei zeitgesteuerten Transaktionen wird ein maximales Zeitlimit für das Senden der Schreib-/Aufrufaktion festgelegt. Dieses Zeitlimit soll einen Intercept-Angriff auf die Transaktion verhindern. Das gilt insbesondere für Geräte, die den Zugriff auf Assets steuern, z. B. Garagentoröffner und Schlösser.
Um zeitgesteuerte Transaktionen zu verstehen, ist es hilfreich, zu wissen, wie Abfangangriffe ablaufen können und warum zeitgesteuerte Transaktionen wichtig sind.
Der Intercept-Angriff
Ein Abfangangriff folgt diesem Muster:
- Alice sendet Bob eine erste Nachricht, z. B. eine Aktion vom Typ „Schreibanfrage“.
- Eve, ein Man-in-the-Middle, fängt die Nachricht ab und verhindert, dass Bob sie empfängt, z. B. durch eine Art Funkstörung.
- Da sie keine Antwort von Bob erhält, sendet sie eine zweite Nachricht.
- Eve fängt die Nachricht wieder ab und verhindert, dass Bob sie empfängt.
- Eve sendet die erste abgefangene Nachricht an Bob, als ob sie von Alice käme.
- Bob sendet die Antwort an Alice (und Eve).
- Eve behält die zweite abgefangene Nachricht für eine spätere Wiedergabe zurück. Da Bob die ursprüngliche zweite abgefangene Nachricht von Alice nie erhalten hat, wird er sie akzeptieren. Diese Nachricht stellt eine Sicherheitslücke dar, wenn sie einen Befehl wie „Schloss öffnen“ enthält.
Um diese Art von Angriffen zu verhindern, wird bei zeitgesteuerten Aktionen zu Beginn der Transaktion ein maximales Transaktions-Zeitlimit festgelegt. Selbst wenn Eve die ersten sechs Schritte des Angriffsvektors ausführen kann, kann sie die Nachricht in Schritt 7 aufgrund eines abgelaufenen Zeitlimits für die Transaktion nicht wiedergeben.
Zeitgesteuerte Transaktionen erhöhen die Komplexität und die Anzahl der Aktionen. Sie werden daher nicht für jede Transaktion empfohlen, sondern nur für die kritischen Vorgänge auf Geräten, die die Kontrolle über physische oder virtuelle Sicherheits- und Datenschutzressourcen haben.
SDK-Abstraktionen
Die Abschnitte Lesetransaktionen, Schreibtransaktionen und Invoke-Transaktionen bieten einen allgemeinen Überblick über die Interaction Model Actions, die vom SDK ausgeführt werden.
Der Entwickler, der ein Produkt mit dem Matter SDK erstellt, führt in der Regel keine Aufrufe aus, um Aktionen direkt auszuführen. Die Aktionen werden durch SDK-Funktionen abstrahiert, die sie in eine Interaktion einbetten. Es ist jedoch wichtig, IM-Aktionen zu verstehen, damit der Techniker die Funktionen von Matter gut kennt und die SDK-Implementierung genau steuern kann.