Konzepte des Interaktionsmodells

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

So interagieren Knoten miteinander:

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

Wenn ein Knoten eine verschlüsselte Kommunikationssequenz mit einem anderen Knoten einrichtet, stellen sie 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 interpretiert werden können.

Hierarchie des Interaktionsmodells
Abbildung 1: Hierarchie des Interaktionsmodells

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

Initiatoren und Ziele

Der Knoten, der eine Transaktion initiiert, ist der Initiator. Der antwortende Knoten ist der Ziel. In der Regel ist der Initiator ein Clientcluster und das Ziel ein Servercluster. Es gibt jedoch Ausnahmen von diesem Muster, z. B. im Abschnitt Abointeraktionen, der weiter unten in diesem Abschnitt analysiert wird.

Gruppen

Knoten in Matter gehören möglicherweise zu einer Gruppe. 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

Wann immer wir mit einem Attribut, einem Ereignis oder einem Befehl interagieren möchten, müssen wir den Pfad für diese Interaktion angeben, d. h. den Speicherort eines Attributs, eines Ereignisses oder eines Befehls in der Datenmodellhierarchie eines Knotens. Allerdings können Pfade auch Groups- oder Platzhalteroperatoren verwenden, um mehrere Knoten oder Cluster gleichzeitig anzusprechen und so 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 statt einer Abfolge einzelner Interaktionen einrichten. Wenn der Initiator einzelne Interaktionen mit jedem Licht 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>

In diesen Pfadbausteinen können endpoint und cluster auch Platzhalteroperatoren enthalten, um mehr als eine Knoteninstanz auszuwählen.

Zeitlich und ohne Zeitangabe

Es gibt zwei Möglichkeiten, eine Schreib- oder Aufruftransaktion auszuführen: Timed und Untimed. Zeitlich begrenzte Transaktionen legen ein maximales Zeitlimit für die zu sendende Schreib-/Aufrufaktion fest. Diese Zeitüberschreitung soll einen Intercept-Angriff auf die Transaktion verhindern. Sie gilt insbesondere für Geräte, die Zugang zu Ressourcen wie Garagenöffnern und Schlössern gewähren.

Zum besseren Verständnis von zeitgesteuerten Transaktionen sollten Sie verstehen, wie Abfangangriffe passieren können und warum zeitlich festgelegte Transaktionen wichtig sind.

Der Abfangangriff

Ein Abfangangriff hat das folgende Muster:

  1. Alice sendet an Bob eine erste Nachricht, z. B. eine Schreibanfrageaktion.
  2. Eve, ein Man-in-the-Middle, fängt die Nachricht ab und verhindert, dass Bob sie empfängt, beispielsweise durch eine Art Radiostörung.
  3. Alice erhält keine Antwort von Bob und sendet eine zweite Nachricht.
  4. Eve fängt noch einmal ab und verhindert, dass Bob es empfängt.
  5. Eve sendet die erste abgefangene Nachricht an Bob, als würde sie von Alice stammen.
  6. Bob sendet die Antwort an Alice (und Eve).
  7. Eve hält die zweite abgefangene Nachricht zur späteren Wiederholung. Da Bob die ursprüngliche zweite abgefangene Nachricht von Alice nie erhalten hat, wird sie akzeptiert. Diese Meldung stellt eine Sicherheitsverletzung dar, wenn die Nachricht einen Befehl wie „open lock“ codiert.

Um diese Art von Angriffen zu verhindern, wird mit zeitlich festgelegten Aktionen zu Beginn der Transaktion ein maximales Zeitlimit für Transaktionen festgelegt. Selbst wenn Eve die ersten sechs Schritte des Angriffsvektors ausführt, kann sie die Nachricht aus Schritt 7 aufgrund eines abgelaufenen Zeitlimits für die Transaktion nicht noch einmal wiedergeben.

Geplante 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 Kontrolle über physische oder virtuelle Sicherheits- und Datenschutz-Assets haben.

SDK-Abstraktionen

Die Abschnitte Transaktionen lesen, Transaktionen schreiben und Transaktionen aufrufen bieten eine allgemeine Übersicht über die vom SDK ausgeführten Interaktionsmodellaktionen.

Der Entwickler, der ein Produkt erstellt, für das das Matter SDK verwendet wird, führt normalerweise keine Aufrufe zum direkten Ausführen von Aktionen aus. Die Aktionen werden von SDK-Funktionen abstrahiert, die sie in einer Interaktion kapseln. Es ist jedoch wichtig, die IM-Aktionen zu verstehen, um dem Entwickler gute Kenntnisse über die Funktionen von Matter zu vermitteln und die SDK-Implementierung detailliert zu kontrollieren.