© Excellent backgrounds/Shutterstock.com
MQTT-Security

Daten austauschen - aber sicher!


In den letzten beiden Teilen der Artikelserie wurde gezeigt, wie wichtig eine verschlüsselte Übertragung bei MQTT in Produktionsumgebungen ist, und es wurden neben Authentifizierungs- und Autorisierungsmechanismen fortgeschrittene Konzepte wie OAuth 2.0 und X.509-Clientzertifikat-Authentifizierung diskutiert. Doch wie kann man den Inhalt von MQTT-Nachrichten vor Manipulation schützen, falls keine verschlüsselte Kommunikation möglich ist?

Dieser letzte Teil der Artikelserie zeigt, wie man den Nachrichteninhalt von MQTT verschlüsseln kann, wie eine Datenintegritätsprüfung implementiert werden kann und diskutiert zusätzlich, welche Herausforderungen bei ressourcenbeschränkten Geräten in Sachen Sicherheit mit MQTT gelöst werden sollten.

Artikelserie: MQTT

Teil 1: Sicherheit im IoT durch offene Standards

Teil 2: X.509-Clientzertifikate und OAuth 2.0

Teil 3: Securityherausforderungen auf ressourcen­beschränkten Geräten

Wenn keine verschlüsselte Verbindung eines MQTT-Clients mit dem MQTT Broker möglich ist, lohnt es sich, die Nutzdaten zu verschlüsseln. Was ist Nutzdatenverschlüsselung im Kontext von MQTT überhaupt? Man unterscheidet klassischerweise zwischen zwei Arten der Verschlüsselung: Ende-zu-Ende-Verschlüsselung (E2E Encryption) und Client-to-Broker-Verschlüsselung.

Bei beiden Arten der Verschlüsselung wird nur der Inhalt der Nachricht verschlüsselt, Metadaten wie etwa das Topic einer MQTT-Nachricht werden nicht verschlüsselt, da diese Information vom Broker für das Routing der Nachrichten verwendet wird. Es kann daher trotz Verschlüsselung aller Daten immer noch möglich sein, dass Angreifer zwar nicht den Inhalt der Nachrichten kennen, jedoch analysieren könnten, welche Topics im System aktiv sind.

Ende zu Ende verschlüsseln

Mit der Ende-zu-Ende-Verschlüsselung wird der Inhalt eines MQTT-PUBLISH-Pakets vor nicht vertrauenswürdigen Subscribern geschützt. Meist wird diese Technik angewandt, falls es für einen MQTT-Client nicht möglich ist, eine verschlüsselte Verbindung via TLS mit einem MQTT Broker herzustellen und wenn andere MQTT-Clients ebenfalls keine verschlüsselte Verbindung zum Broker aufbauen können. Besonders sinnvoll ist E2E-Verschlüsselung, wenn sich nicht vertrauenswürdige MQTT-Clients am Broker verbinden können, falls z. B. keine Authentifizierung implementiert ist. Die gesendeten Nutzdaten eines Clients (also die sogenannte Payload einer MQTT-PUBLISH-Nachricht) werden dabei auf Clientseite mit einem synchronen oder asynchronen Verschlüsse...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang