Konzepte des Interaktionsmodells

Das Datenmodell (DM) eines Knotens ist nicht relevant, wenn wir auf ihm keine Vorgänge ausführen können. Das Interaktionsmodell (IM) definiert die DM-Beziehung eines Knotens mit den DMs anderer Knoten. Dies ist eine gemeinsame Sprache für die Kommunikation zwischen DMs.

Knoten interagieren folgendermaßen miteinander:

  • Attribute und Ereignisse lesen und abonnieren
  • In Attribute schreiben
  • Befehle aufrufen

Immer wenn ein Knoten eine verschlüsselte Kommunikationssequenz mit einem anderen Knoten einrichtet, stellt er eine Interaktionsbeziehung dar. Interaktionen können aus einer oder mehreren Transaktionen bestehen und Transaktionen bestehen aus einer oder mehreren Aktionen, die als Nachrichten auf IM-Ebene zwischen Knoten verstanden werden können.

Hierarchie des Interaktionsmodells
Abbildung 1: Hierarchie des Interaktionsmodells

Für Transaktionen werden verschiedene Aktionen unterstützt, z. B. eine Leseanfrageaktion, die ein Attribut oder ein Ereignis von einem anderen Knoten anfordert, oder die Antwort, die Berichtsdatenaktion, die die Informationen vom Server an den Client zurücküberträgt.

Initiatoren und Ziele

Der Knoten, der eine Transaktion initiiert, ist der Initiator. Der antwortende Knoten ist das Ziel. In der Regel ist der Initiator ein Clientcluster und das Ziel ein Servercluster. Es gibt jedoch Ausnahmen zu diesem Muster, z. B. in den Abo-Interaktionen, die weiter unten in diesem Abschnitt analysiert werden.

Gruppen

Knoten in Matter können zu einer Gruppe gehören. Eine Gruppe von Geräten ist ein Mechanismus zum gleichzeitigen Adressieren und Senden von Nachrichten an mehrere Geräte in derselben Aktion. 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, einem Ereignis oder einem 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 Pfade auch Gruppen- oder Platzhalter-Operatoren verwenden, um mehrere Knoten oder Cluster gleichzeitig anzusprechen. Dadurch werden diese Interaktionen aggregiert 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 einzige Interaktion mit mehreren Lampen innerhalb einer Gruppe statt einer Abfolge einzelner Interaktionen einrichten. Wenn der Initiator mit jedem Licht individuelle Interaktionen erzeugt, kann er bei der Reaktionsfähigkeit des Geräts eine vom Menschen wahrnehmbare Latenz erzeugen. Dieser Effekt führt dazu, dass mehrere Geräte auf einen Befehl mit sichtbaren Verzögerungen zwischen ihnen 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 zur Auswahl von mehr als einer Knoteninstanz enthalten.

Mit Zeitstempel und ohne Zeitangabe

Es gibt zwei Möglichkeiten, eine Schreib- oder Invoke-Transaktion durchzuführen: Timed und Untimed. Mit zeitlich festgelegten Transaktionen wird ein maximales Zeitlimit für das Senden der Schreib-/Aufrufaktion festgelegt. Mit diesem Zeitlimit soll ein Intercept-Angriff auf die Transaktion verhindert werden. Sie gilt insbesondere für Geräte, die den Zugriff auf Assets wie Garagenöffner und Schlösser verhindern.

Zum besseren Verständnis von zeitlich begrenzten Transaktionen ist es hilfreich, zu verstehen, wie Intercept-Angriffe passieren können und warum zeitgesteuerte Transaktionen wichtig sind.

Der Intercept-Angriff

Ein Intercept-Angriff hat das folgende Muster:

  1. Alice sendet Bob eine erste Nachricht, beispielsweise eine Schreibanfrageaktion.
  2. Eve, ein Man-in-the-Middle, fängt die Nachricht ab und hindert Bob daran, sie zu empfangen, z. B. durch eine Art von Funkstörung.
  3. Alice erhält keine Antwort von Bob, sendet eine zweite Nachricht.
  4. Eve fängt wieder ab und hindert Bob daran, es zu erhalten.
  5. Eve sendet die erste abgefangene Nachricht an Bob, so als würde sie von Alice kommen.
  6. Bob sendet die Antwort an Alice (und Eve).
  7. Eve speichert die zweite abgefangene Nachricht zur späteren erneuten Wiedergabe. Da Bob die ursprüngliche zweite abgefangene Nachricht von Alice nie erhalten hat, wird sie akzeptiert. Diese Nachricht stellt eine Sicherheitsverletzung dar, wenn die Nachricht einen Befehl wie "open lock" codiert.

Um diese Arten von Angriffen zu verhindern, wird bei zeitgesteuerten Aktionen zu Beginn der Transaktion ein maximales Zeitlimit für Transaktionen festgelegt. Selbst wenn es Eve gelingen sollte, die ersten sechs Schritte des Angriffsvektors auszuführen, kann er die Nachricht in Schritt 7 aufgrund eines abgelaufenen Zeitlimits für die Transaktion nicht noch einmal wiedergeben.

Abgestimmte Transaktionen erhöhen die Komplexität und die 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

Die Abschnitte Lesetransaktionen, Schreibtransaktionen und Transaktionen aufrufen bieten einen allgemeinen Überblick über die vom SDK ausgeführten Aktionen des Interaktionsmodells.

Der Entwickler, der ein Produkt erstellt, das das Matter SDK verwendet, führt normalerweise keine Aufrufe zur direkten Ausführung von Aktionen durch. Die Aktionen werden von SDK-Funktionen abstrahiert, die sie in eine Interaktion kapseln. Es ist jedoch wichtig, die IM-Aktionen zu verstehen, damit der Entwickler gut mit den Funktionen von Matter vertraut ist und die SDK-Implementierung genau steuern kann.