Matter

Matter ist ein offener Standard, der von der Arbeitsgruppe "Project Connected Home over IP" (kurz CHIP) seit 2019 entwickelt und im Oktober 2022 erstmals publiziert wurde. Er soll die Kommunikation zwischen Geräten diverser Hersteller wie Google, Samsung, Apple und Amazon ermöglichen und damit die Grenzen bestehender Smart-Home Netze erweitern.
Protokoll
Es handelt sich um ein Application-Layer-Protokoll, welches auf Netzwerkprotokolle wie IPv6, Thread und BLE aufsetzt. Um von IP-Netzwerken auf z.B. Thread- oder BLE-basierte Geräte zugreifen zu können werden Bridges benötigt, welche die Netzwerklayer übersetzen.
Matter Virtual Device
Das Google Developer Center stellt Resourcen zur Entwicklung von Matter-basierten Geräten wie einer Sample App zum Verbinden von Matter-Geräten [2] oder virtuellen Matter-Geräten [3] zum Testen der Schnittstellen bereit. Das Developer Center bietet auch eine allgemeine Dokumentation für Matter an.[4]
Ein Matter Virtual Device (MVD) ist eine Emulation eines Matter Devices und simuliert das Verhalten eines Gerätes z.B. das Ein-/Ausschalten eines Lichtschalters.
Möglichkeiten
Das Virtual Device kann man über mehrere Wege bauen und starten. Dazu wurden insgesamt drei Möglichkeiten gefunden:
- Standalone
- Docker Image
- GitHub Repository
Es hat sich herausgestellt, dass das Standalone am Besten geeignet ist, um schnell ein MVD einzurichten. Dazu wird eine Umgebung mit einem 64-bit x86 Prozessor und mindestens Debian 11, Ubuntu 20.04 oder MacOS benötigt.
GitHub Repository
- git clone https://github.com/project-chip/connectedhomeip
- Initialisieren des Matter-Projektes durch "source scripts/activate.sh"
Diese Variante wurde nicht weiter verfolgt, da das Repository rekursiv aufgelöst wird und das Klonen und Ausführen daher sehr viel Zeit in Anspruch nimmt.
Docker Image Repository
- docker pull us-docker.pkg.dev/nest-matter/docker-repo/virtual-device-image:latest
Dieser Ansatz lädt ein Docker Image herunter, welches größer als 10GB ist. Entpackt hat es dann mehr als 30GB und ist daher als schneller Ansatz für die Entwicklung mit Matter-Geräten ebenfalls nicht tauglich.
Standalone
Das Standalone-Matter-Device wurde relativ neu von Google publiziert, lässt sich aber sehr einfach aufsetzen. Durch seine vergleichsweise geringe Größe mit weniger als 70MB ist es einfach herunterzuladen und ist innerhalb weniger Minuten lauffähig.
Installationsschritte (Debian/Ubuntu)
- wget https://dl.google.com/mvd/mvd_1.3.0_amd64.deb
- sudo dpkg -i mvd_1.3.0_amd64.deb
- mvd
Es öffnet sich eine GUI, womit man ein MVD erstellen kann.
Beim neuen Fenster kann man einige Einstellungen bezüglich des Gerätes konfigurieren:
- Device Type - Man kann mehrere Arten von Smart Home Geräten simulieren
- Vendor ID - Eindeutige zertifierte ID für den Händler (Mögliche Werte in der Entwicklung: 0xFFF1, 0xFFF2, 0xFFF3 and 0xFFF4)
- Product ID - Eindeutige zertifizierte ID für das Produkt (Mögliche Werte in der Entwicklung: 0x8000 bis 0x801F)
- Discriminator - Im Fall, dass im Netzwerk das gleiche Produkt mehrmals auftritt, kann über den Discriminator unterschieden werden.
Controller GUI
Um mit dem Matter Device zu kommunizieren, wird eine GUI benötigt. Dazu gibt es wieder zwei Möglichkeiten:
Internal GUI über RPC
Das Standalone MVD wird mit einer integrierten GUI geliefert, wobei das Gerät auf einem anderen Port (RPC-Port: 33000) angesprochen wird, als den Matter Port (Matter-Port: 5540). Sobald das MVD erstellt wurde, öffnet sich die Control-UI für das simulierte Gerät.
GUI über Mobile App
Das Google Developer Center hat ein CodeLab[2] zur Verfügung gestellt, womit man eine simple Kotlin-App für die Steuerung von Matter Geräten entwickeln kann. Dazu kann man ein Skeleton herunterladen und das Tutorial begleitet den Entwickler, um etwaige fehlende Code-Stellen zu implementieren, die mit dem Kommentar "// CODELAB:" versehen sind.
Diese App wurde dann mittels USB-Debugging auf ein Handy gestartet.
Connection
Um sich am Handy mit einem Matter Gerät zu verbinden, braucht man folgende Voraussetzungen:
Steps
Security Aspekt
Dieses Thema wurde im Rahmen des Wahlfachprojektes 2 vorgestellt. Die Aufgabe bestand darin, mit dem MVD einen Angriff nachzustellen und zu zeigen, dass dieser daher bereits während der Entwicklung erkennt und mitigiert werden könnte. Aufgrund der Neuheit des Standards ist dieser aber noch nicht in der Breite etabliert und daher sind auch noch wenige Vulnerabilities und Exploits bekannt. Daher konnten wir nur eine DoS Attacke ausprobieren und damit den Zugriff auf das MVD verhindern. Eine Differenzierung, ob es dabei zu einem DoS des Gerätes selbst oder der ausführenden Plattform kam, konnte nicht evaluiert werden.