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 zum DM anderer Knoten: eine gemeinsame Sprache für die Kommunikation zwischen DMs.
Knoten interagieren miteinander, indem sie:
- Lesen und Abonnieren von Attributen und Ereignissen
- Attribute schreiben
- Aufrufen von Befehlen
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, mit der ein Attribut oder Ereignis von einem anderen Knoten angefordert wird, oder die entsprechende Antwort, die Report Data Action, 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. Typischerweise ist der Initiator ein Client-Cluster und das Ziel ein Server-Cluster. Es gibt jedoch Ausnahmen von diesem Muster, wie beispielsweise die weiter unten in diesem Abschnitt analysierten Subscription Interactions.
Gruppen
Knoten in Matter können zu einer Gruppe gehören. Eine Gerätegruppe ist ein Mechanismus, um mehrere Geräte in derselben Aktion gleichzeitig anzusprechen und ihnen Nachrichten zu senden. 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 anstelle einer Reihe einzelner Interaktionen herstellen. Wenn der Initiator individuelle Interaktionen mit jedem einzelnen Licht erzeugt, kann dies zu einer für den Menschen wahrnehmbaren Verzögerung in der Reaktionsfähigkeit des Geräts führen. Dadurch reagieren die Geräte mit sichtbaren Verzögerungen auf einen Befehl. Dies wird oft als „Popcorneffekt“ bezeichnet.
Ein Pfad in Matter kann mithilfe 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 Write- oder Invoke-Transaktion durchzuführen: Timed und Untimed. 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. Dies gilt insbesondere für Geräte, die den Zugang zu Vermögenswerten regeln, wie 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 „Write Request“-Aktion.
- 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 Alina keine Antwort von Erik 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. 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, legen zeitgesteuerte Aktionen zu Beginn der Transaktion ein maximales Transaktions-Timeout fest. Selbst wenn Eve es schafft, die ersten sechs Schritte des Angriffsvektors auszuführen, wird sie die Nachricht in Schritt 7 aufgrund eines abgelaufenen Timeouts für die Transaktion nicht erneut abspielen können.
Durch zeitgesteuerte Transaktionen werden die Komplexität und die Anzahl der Aktionen erhöht. Sie werden daher nicht für jede Transaktion empfohlen, sondern nur für die kritischen Vorgänge auf Geräten, die die physischen oder virtuellen Sicherheits- und Datenschutzressourcen kontrollieren.
SDK-Abstraktionen
Die Abschnitte Lesetransaktionen, Schreibtransaktionen und Invoke-Transaktionen bieten einen allgemeinen Überblick über die vom SDK ausgeführten Interaction Model Actions.
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. Allerdings ist das Verständnis von IM Actions wichtig, um dem Entwickler gute Kenntnisse über die Möglichkeiten von Matter sowie eine präzise Kontrolle über die SDK-Implementierung zu ermöglichen.