Sichere IoT-Kommunikation mit MQTT, Teil 1: Grundlagen

Security gehört zu den wichtigsten und gleichzeitig am stärksten vernachlässigten Themen im Internet der Dinge. Know-how und die richtigen Werkzeuge helfen beim Absichern der MQTT-Kommunikation.

Know-how  –  4 Kommentare
Sichere IoT-Kommunikation mit MQTT, Teil 1: Grundlagen
Anzeige

Applikationsentwickler sind nicht immer Sicherheitsexperten und sollen sich auf die Geschäftslogik ihrer IoT-Anwendung (Internet of Things) konzentrieren, sei es eine mobile App, Software oder Hardware. Da die Vernetzung von Geräten und Applikationen zunehmend zum Standard wird, benötigen Entwickler das richtige Handwerkszeug, um ihre Software ohne großen Aufwand sicher im Internet der Dinge anzubinden.

Für gängige Protokolle des World Wide Web wie HTTP haben sich Sicherheitsstandards und Best Practices in der Kommunikation etabliert. Für den Nachrichtenaustausch im Internet of Things gibt es leider derzeit noch Nachholbedarf, wie unter anderem das massive IoT-Botnetz zeigt, dessen Angriffen der Sicherheitsforscher Brian Krebs im September 2016 ausgesetzt war. Diese zweiteilige Artikelserie befasst sich damit, wie Entwickler das mittlerweile populärste IoT-Protokoll MQTT sicher einsetzen – und zwar sowohl auf der Client- als auch auf der Serverseite.

Glücklicherweise ist es sehr einfach, eine sichere IoT-Kommunikation mit MQTT zu implementieren, da das schlanke Protokoll der Unix-Philosophie folgt: "Mache nur eine Sache, und mache sie gut." Daher lassen sich Sicherheits-Layer wie TLS verwenden, das auch bei anderen Protokollen wie HTTP zur Absicherung der Kommunikation zum Einsatz kommt.

Bei MQTT vermittelt ein Broker zwischen dem Publisher und den Empfängern (Abb. 1).

MQTT ist ein Publish-Subscribe-Protokoll, das die Kommunikation aller Teilnehmer komplett mit sogenannten "Topics" entkoppelt. Weder die Empfänger einer Nachricht noch der Sender wissen voneinander, da sie nur mit dem MQTT-Broker als zentralem Verteiler der Nachrichten verbunden sind. Jede versendete Nachricht erhält ein Topic. Dabei handelt es sich um einen hierarchisch aufgebauten String mit Trennzeichen, ähnlich denen in POSIX-Dateisystemen.

Abbildung 2 zeigt ein exemplarisches Topic. Interessierte MQTT-Clients abonnieren es am Broker und bekommen jede Nachricht zugestellt, die am Broker für das jeweilige Abonnement eintrifft. Abonnierende Clients (Subscriber) können sich feingranular auf bestimmte Teilbereiche des Topic-Baums registrieren. Ein MQTT-Client kann sowohl als Publisher als auch als Subscriber fungieren: Die Kommunikation ist bidirektional und push-basiert. Die Auslieferung der Nachrichten erfolgt mit niedriger Latenz. Die Kommunikation ist somit ereignisgetrieben.

Die Topics sind in MQTT ähnlich hierarchisch aufgebaut wie in POSIX-Dateisystemen (Abb. 2).

MQTT baut auf TCP als Transportprotokoll auf. Ein MQTT-Client initiiert eine Session beim Broker nach dem Aufbau einer TCP-Verbindung. Da Client und Broker dauerhaft verbunden bleiben, ist eine echte Push-Kommunikation möglich.

Der erste Teil des Artikels betrachtet Security im Kontext von MQTT auf drei Ebenen:

  • Security auf Protokollebene
  • Authentifizierung
  • Autorisierung
Anzeige