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:
- Attribute und Ereignisse lesen und abonnieren
- In Attribute schreiben
- Befehle aufrufen
Wenn ein Knoten eine verschlüsselte Kommunikationssequenz mit einem anderen Knoten herstellt, besteht 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 Leseanfrage, mit der ein Attribut oder Ereignis von einem anderen Knoten angefordert wird, oder die Antwort, die Daten vom Server an den Client zurücksendet.
Auslöser 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, wie z. B. bei den Interaktionen mit Abos, 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, mit dem mehrere Geräte in derselben Aktion gleichzeitig adressiert und Nachrichten an sie gesendet werden können. Alle Knoten in einer Gruppe haben dieselbe Gruppen-ID, eine 16-Bit-Ganzzahl.
Für die Kommunikation auf Gruppenebene (Groupcast) nutzt 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. Der Nachteil ist, dass Pfade auch Gruppen oder Platzhalteroperatoren verwenden können, um mehrere Knoten oder Cluster gleichzeitig anzusprechen, 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 Lampen ausschalten möchte, kann ein Sprachassistent eine einzelne Interaktion mit mehreren Lampen innerhalb einer Gruppe herstellen, anstatt eine Abfolge einzelner Interaktionen. Wenn der Initiator individuelle Interaktionen mit jeder Lampe erstellt, kann dies zu einer für den Nutzer wahrnehmbaren Latenz bei der Gerätereaktion führen. Dies führt dazu, dass die einzelnen 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 erstellt 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 enthalten, um mehrere Knoteninstanzen auszuwählen.
Mit und ohne Zeitlimit
Es gibt zwei Möglichkeiten, eine Schreib- oder Aufruftransaktion auszuführen: zeitlich begrenzt und zeitlich unbegrenzt. Bei zeitgesteuerten Transaktionen wird ein maximales Zeitlimit für die zu sendende Write-/Invoke-Aktion festgelegt. Mit diesem Zeitlimit soll ein Abfangangriff auf die Transaktion verhindert werden. Das gilt insbesondere für Geräte, die den Zugriff auf Assets steuern, z. B. Garagentoröffner und Schlösser.
Um Zeitbasierte Transaktionen zu verstehen, ist es hilfreich zu wissen, wie Abfangangriffe geschehen können und warum Zeitbasierte Transaktionen wichtig sind.
Der Intercept-Angriff
Ein Abfangangriff hat das folgende Muster:
- Alice sendet Bob eine erste Nachricht, z. B. eine Write Request-Aktion.
- Eva, eine Man-in-the-Middle-Akteurin, fängt die Nachricht ab und verhindert, dass Bob sie empfängt, z. B. durch Funkstörungen.
- Da sie keine Antwort von Bob erhält, sendet Alice eine zweite Nachricht.
- Eva fängt die Nachricht wieder ab und verhindert, dass Bob sie empfängt.
- Eva sendet die erste abgefangene Nachricht an Bob, als käme sie von Alice.
- 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, akzeptiert er sie. Diese Nachricht stellt einen Sicherheitsverstoß dar, wenn sie einen Befehl wie „Schloss öffnen“ codiert.
Um diese Art von Angriffen zu verhindern, wird bei zeitgesteuerten Aktionen zu Beginn der Transaktion ein maximaler Zeitüberschreitungszeitraum festgelegt. Selbst wenn Eve die ersten sechs Schritte des Angriffsvektors ausführen kann, kann sie die Nachricht in Schritt 7 aufgrund einer abgelaufenen Zeitüberschreitung für die Transaktion nicht noch einmal wiedergeben.
Zeitgesteuerte Transaktionen erhöhen die Komplexität und Anzahl der Aktionen. Sie werden daher nicht für jede Transaktion empfohlen, sondern nur für kritische Vorgänge auf Geräten, die physische oder virtuelle Sicherheits- und Datenschutz-Assets steuern.
SDK-Abstraktion
Die Abschnitte Lesetransaktionen, Schreibtransaktionen und Transaktionen aufrufen bieten einen allgemeinen Überblick über die vom SDK ausgeführten Interaktionsmodellaktionen.
Entwickler, die ein Produkt mit dem Matter SDK erstellen, führen in der Regel keine Aufrufe zur direkten Ausführung von Aktionen aus. Die Aktionen werden durch SDK-Funktionen abstrahiert, die sie in einer Interaktion kapseln. Es ist jedoch wichtig, IM-Aktionen zu verstehen, damit die Entwickler die Funktionen von Matter gut kennen und die SDK-Implementierung genau steuern können.