Das Datenmodell (DM) eines Knotens ist nicht relevant, wenn wir keine Vorgänge darauf 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
- Attribute und Ereignisse lesen und abonnieren
- in 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 und Transaktionen aus einer oder mehreren Aktionen, die als IM-Nachrichten zwischen Knoten verstanden werden können.
Für Transaktionen werden mehrere Aktionen unterstützt, z. B. eine Leseanfrageaktion, mit der ein Attribut oder Ereignis von einem anderen Knoten angefordert wird, oder die Antwort darauf, die Aktion „Daten melden“, die die Informationen vom Server zurück an den Client überträgt.
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), Matter verwendet 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: die Position eines Attributs, Ereignisses oder Befehls in der Datenmodellhierarchie eines Knotens. Pfade können jedoch auch Gruppen oder Platzhalteroperatoren verwenden, um mehrere Knoten oder Cluster gleichzeitig zu adressieren, diese Interaktionen zu aggregieren und so die Anzahl der Aktionen zu verringern.
Dieser Mechanismus ist wichtig, um die Reaktionsfähigkeit der Kommunikation zu verbessern. Wenn ein Nutzer beispielsweise alle Lichter ausschalten möchte, kann ein Sprachassistent eine einzelne Interaktion mit mehreren Lichtern in einer Gruppe herstellen, anstatt eine Sequenz einzelner Interaktionen. Wenn der Initiator einzelne Interaktionen mit jedem Licht 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 mehreren Geräte mit sichtbaren Verzögerungen zwischen ihnen 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>
In diesen Pfadbausteinen können endpoint und cluster auch Platzhalteroperatoren enthalten, um mehr als eine Knoteninstanz auszuwählen.
Zeitgesteuert und nicht zeitgesteuert
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 Abfangangriff auf die Transaktion verhindern. Dies 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 auftreten können und warum zeitgesteuerte Transaktionen wichtig sind.
Der Abfangangriff
Ein Abfangangriff hat das folgende Muster:
- Alice sendet Bob eine erste Nachricht, z. B. eine Schreibanfrageaktion.
- 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.
- Alice erhält keine Antwort von Bob und sendet eine zweite Nachricht.
- Eve fängt sie 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, akzeptiert er sie. Diese Nachricht stellt eine Sicherheitsverletzung dar, wenn sie einen Befehl wie „Schloss öffnen“ enthält.
Um diese Arten von Angriffen zu verhindern, wird bei zeitgesteuerten Aktionen zu Beginn der Transaktion ein maximales Zeitlimit für die Transaktion festgelegt. Selbst wenn Eve die ersten sechs Schritte des Angriffsvektors ausführen kann, kann sie die Nachricht in Schritt 7 nicht wiedergeben, da das Zeitlimit für die Transaktion abgelaufen ist.
Zeitgesteuerte Transaktionen erhöhen die Komplexität und Anzahl der Aktionen. Daher werden sie 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 Datenschutz-Assets haben.
SDK-Abstraktionen
In den Abschnitten Lesetransaktionen, Schreibtransaktionen und Aufruftransaktionen finden Sie eine allgemeine Übersicht über die Aktionen des Interaktionsmodells, 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 einkapseln. Das Verständnis der IM-Aktionen ist jedoch wichtig, um dem Entwickler gute Kenntnisse der MatterFunktionen sowie eine genaue Kontrolle über die SDK-Implementierung zu ermöglichen.