Sicherheit im eigenen Netzwerk mittels MQTT

Wie bereits erwähnt basiert der Großteil der derzeitigen IoT Lösungen auf einzelne, individuelle Lösungen, „computergestützte Fernbedienungen“. Da die meisten IoT Module den dafür notwendigen TCP IP Stack  verarbeiten können ist eine Einbindung im Netzwerk mit nur wenigen Handgriffen realisiert. Ungeachtet etwaiger Sicherheitslücken wird dabei oftmals die Fernbedienung von Geräten mittels VPN auf das Internet erweitert. Alternativ kommen hierbei auch entsprechende Cloud Lösungen zum Einsatz, massgeschneidert für Millionen IoT Endgeräte. Ein Blick in die Nachrichten macht offenkundig das dieser Lösungsansatz im Bezug der Sicherheit des eigenen Netzwerks sehr bedenklich ist.

SSL TLS als Sicherheitskonzept für IoT

SSL / TLS Lösungen lassen sich insofern man über eigene Server verfügt mittels TLS Verschlüsselungen wie beispielsweise AES, RSA, Camellia vor dem Zugriff Dritter schützen. Insofern man über keinen eigenen Server verfügt ist man bei der Übertragung von IoT Daten auf den jeweiligen Anbieter angewiesen.

Derzeit wird massgeblich das HTTP bzw. im verschlüsselten Fall das HTTPS Protokoll zur Übertragung von IoT Daten zum Einsatz gebracht. Typische Angriffe erfolgen dabei häufig durch Man-in-the-Middle Angriffe. Der Zugriff durch unbefugte Dritte erfolgt dabei während des gesamten Datenverkehrs zwischen Client und Server. Selbst bei verschlüsselten TLS Verbindungen kann durch Vorgabe des notwendigen Schlüssels der Datenverkehr im Klartext dargestellt werden. Im Bezug des typischen Internetverkehrs kann hier durch entsprechend zertifizierte Sicherheitszertifikate, sowie Browsereinstellungen die Sicherheit optimiert werden.

HTTP Vorteile und Nachteile

HTTP wurde geschaffen um das Computer ausserhalb eines lokalen Netzwerks mittels einem einheitlichen Protokoll über TCP/IP kommunizieren können. Im Zuge des Internets wurde HTTP dahingehend optimiert nahezu sämtliche Informationen in Klartext zwischen Server und Client zu transportieren. Typischerweise wird hier das request response (Anfrage / Antwort) Modell verwendet. Im Zuge einer Client Anfrage erstellt der Server den Inhalt des Dokuments und reicht dieses an den Client durch. Gerade diese Dokument basierende Übertragung (sozusagen in Klarschrift) bringt

  • den Vorteil mit sich, nahezu alles mittels dem HTTP Protokoll transportieren zu können
  • den Nachteil mit sich, das unbefugte Dritte enthaltene Informationen leicht mitlesen können

Diesbezüglich wird die Sicherheit von HTTP stetig weiter optimiert um Daten vor dem Zugriff unbefugter Dritter zu schützen. Sowohl das HTTP Protokoll selbst, als auch verwendete Verschlüsselungen sind im Vergleich zu MQTT sehr komplex.

HTTP und MQTT im Vergleich

Sowohl HTTP als auch MQTT basieren auf TCP/IP unter Verwendung einer Netzwerkadresse sowie eines entsprechenden Ports. Im Bezug der weiteren Protokoll Strukturen unterscheiden sich MQTT und HTTP aber signifikant.

Der nachfolgende Vergleich verdeutlicht die Vorzüge des MQTT Protokoll in Verbindung mit Internet of Things:

Bezeichnung Protokoll Vergleich
Daten Orientierung MQTT Datenorientiert in Form von bytearrays, für Dritte schwer zu interpretieren
HTTP Dokumentorientiert in Klarschrift (unverschlüsselt), für Dritte leicht zu interpretieren
Nachrichten Schema MQTT Publizieren und Abonnieren unabhängig von der Existenz Teilnehmern / Clients, es wird lediglich mitgeteilt oder empfangen unabhängig von anderen Teilnehmern / Clients
HTTP Anfrage und Antworten in strikter Abhängigkeit der Teilnehmer Server / Client, es ist stets eine Verbindung zwischen den Teilnehmern notwendig
Daten Verteilung MQTT unterstützt indirekt 1 zu 0 Nachricht wird übermittelt unabhängig vom Empfänger
1 zu 1 direkt von einem Teilnehmer direkt zu einem anderen Teilnehmer
1 zu n von 1 Teilnehmer zu beliebig vielen Teilnehmern, ganz gleich ob eine Verbindung besteht
HTTP 1 zu 1 direkt von einem Teilnehmer direkt zu einem anderen Teilnehmer
Datenpakete MQTT einfache und kompakte Datenpakete auch geeignet für Verbindungen mit niedriger Übertragungsrate und hoher Latenz
HTTP komplexe Datenpakete nur bedingt geeignet für Verbindungen mit niedriger Übertragungsrate und hoher Latenz
kleinste Nachrichten Größe MQTT kleinste Nachrichtengröße 2 bytes
HTTP kleinste Nachrichtengröße request (HTTP 1.1) 41 bytes
kleinste Nachrichtengröße response (HTTP 1.1) 65 bytes
Nachrichten Priorität MQTT unterstützt 3 unterschiedliche Prioritäten von Nachrichten
HTTP unterstützt keine Nachrichtenpriorität, jede Nachricht hat die gleiche Priorität
benötigte Bibliotheken MQTT Gesamtgröße der C Bibliothek < 30KB
Gesamtgröße der Java Bibliothek < 100KB
HTTP je nach Anwendung z.B. XML, JSON,.. jedoch meist komplex
Protokoll Struktur MQTT sehr kompakt, basiert auf
CONNECT
PUBLISH
SUBSCRIBE
UNSUBSCRIBE
DISCONNECT
HTTP abhängig von der Anwendung meist komplex

MQTT Sicherheit im Internet of Things

Zunächst sollte man prinzipiell berücksichtigen das MQTT Nachrichten als byte array dargestellt werden und nicht Informationen in Klarschrift wie bei HTTP. Die Vielfalt von HTTP macht es notwendig die Dokumentinhalte zu Deklarieren wie beispielsweise durch tag, value, header Daten, usw.. Das heisst die Informationen zur Interpretation der übermittelten Daten muss bei HTTP innerhalb der Nachricht mitgeliefert werden.

MQTT Nachrichten werden entweder publiziert oder abonniert und zwar unabhängig von einem request. Die MQTT Nachrichten werden dabei durch Topics (Themen) und Kapitel unterschieden unabhängig von anderen Teilnehmern. Diesbezüglich beinhaltet die Nachricht keine Information die die enthaltenen Daten deklarieren.

Schlussendlich bleibt jedoch dass auch auf MQTT Nachrichten durch unbefugte Dritte ein Zugriff erfolgen kann. Bevor man hier nun zu typischen Lösungen wie TLS greift sollte man jedoch berücksichtigen das TLS lediglich mittels einem entsprechenden Zertifikat die in Klarschrift enthaltenen Daten verschlüsselt. Da MQTT jedoch nicht auf Klartext basiert sondern auf byte array basiert, liegt es an jedem selbst eine entsprechende Verschlüsselung zu erzeugen. Zusätzlich können im Zuge von MQTT wiederum eigene Sicherheitsmodelle im Prinzip des Publizieren und Abonnieren erzeugt werden, der Phantasie sind hierbei nahezu keine Grenzen gesetzt.