MQTT Gateway - Bridge Mode

In Entwicklung !



Der Bridge Mode ermöglicht die verschlüsselte Kommunikation zwischen zwei Mosquitto MQTT Brokern, die jeweils auf einem LoxBerry installiert sind.

Dies ermöglicht folgende Szenarien:

  • Zwei Broker am gleichen Standort, aber auch standortübergreifend, können ihre Daten verschlüsselt austauschen.
  • In weiterer Folge: Miniserver an verschiedenen Standorten können über das Internet, mit moderner TLS-Verschlüsselung, Daten miteinander teilen oder sich gegenseitig übermitteln.

Beim Bridge Mode im MQTT-Gateway wird eine Installation als "Master" festgelegt. Jede weitere Installation wird als "Bridge" definiert, d.h. jede Bridge verbindet zum Master. 

Für den Datenaustausch selbst hat das keine Auswirkung: Alle Daten von Master und allen Bridges werden synchronisiert.

Verschlüsselung

Zur Verschlüsselung wird das Standardverfahren TLS mit Pre-Shared Key eingesetzt. Pre-Shared Key (PSK) bedeutet, dass ein sicherer Schlüssel einmalig auf der anderen Seite eingegeben wird, mit dem die Verschlüsselung stattfindet. Das MQTT-Gateway erzeugt einen Schlüssel mit 240 bit. Das Plugin erlaubt keine manuelle Vergabe des Schlüssels, um das Sicherheitsniveau hoch zu halten. Es wird mit TLS V1.2 verschlüsselt, ein Fallback auf ältere Varianten ist deaktiviert.

Konfiguration des "Masters"

Die Bezeichnung "Master" ist irreführend - der Master hat keine Steuerungsfunktion gegenüber den Bridges. Es ist lediglich jener Broker, zu dem die anderen Broker verbinden.

Mit dem installierten MQTT-Gateway Plugin ist der Broker automatisch als "Master" konfiguriert. Es ist hier keine Einstellung erforderlich.

Konfiguration von "Bridges"

Bei der "Bridge" ist zu konfigurieren, wo der Master erreichbar ist, und mit welchen Anmeldedaten das passieren soll. Die Bridge-Konfiguration im Plugin erlaubt ausschließlich eine verschlüsselte Verbindung zum Master.

In der Bridge-Konfiguration gib an:

  • Hostname und Port des Masters (in der Regel <hostname>:8883), bzw. bei Verbindung über Internet der externe Hostname (evt. per DynDNS)
  • Username vom Master
  • Passwort vom Master
  • Pre-Shared Key vom Master

Diese Daten solltest du nicht unverschlüsselt über das Internet übertragen oder unvorsichtig ablegen.

Netzwerkeinrichtung

Jede eingerichtete Bridge muss den Master netzwerkmäßig erreichen. Über das lokale Netzwerk ist dafür nichts zu tun.

Um den Master über das Internet verfügbar zu machen, ist im "Master"-Netzwerk folgendes erforderlich:

  • Der Hostname deiner externen Internetverbindung mittels eines DynDNS-Dienstes, damit der Master auch bei Änderung deiner externen IP-Adresse erreichbar bleibt.
  • Eine Port-Weiterleitung 8883/TCP auf deinem Internet-Router an die lokale IP-Adresse des LoxBerrys.

Keinesfalls darfst du:

  • Am Router den Port 1883/TCP freigeben, oder andere Ports des LoxBerry's. Dies sind unverschlüsselte Verbindungen, teilweise auch ohne Authentifizierung!
  • Die Funktion DMZ aktivieren, wo nur nach einer internen IP-Adresse gefragt wird - damit wird der gesamte eingehende Verkehr an diese Adresse geleitet!

Sicherheit

Wenn der Port freigegeben ist, kann grundsätzlich jeder Internetnutzer versuchen, eine Verbindung mit deinem Broker aufzunehmen. Auch wenn das Knacken deines Pre-Shared Keys wahrscheinlich - bei entsprechend dafür gebauter "Knack-Hardware" - einige Jahrzehnte oder Jahrhunderte dauern wird, werden Verbindungen vom Mosquitto Broker angenommen und dann abgelehnt. Wenn du am LoxBerry für längere Zeit eine ungewöhnlich hohe CPU-Last ohne laufende Tasks entdeckst, prüfe an der Shell mit top, ob es sich um den Mosquitto-Dienst handelt. Ist das der Fall, deaktiviere am Router testweise den offenen Port 8883, ob sich die Last verringert. Ist das der Fall, hat es aktuell jemand auf deinen LoxBerry abgesehen. Die Verbindung ist trotzdem sicher, die Verschlüsselung gilt nach wie vor als praktisch nicht knackbar.

Trivia zur Sicherheit der Verschlüsselung

Auf die AES-Verschlüsselung, die in der Regel eine Schlüssellänge von 128 bit hat (also kürzer als unser Pre-Shared Key) und beispielsweise im WLAN verwendet wird, gibt es etliche Versuche, den Schlüssel ohne dem Durchprobieren aller Kombinationen zu erraten. Das zum heutigen Zeitpunkt beste Hacker-Ergebnis hat dazu geführt, dass nicht die Anzahl von 128 bit Schlüssel durchprobiert werden müssen, sondern nur 100 bit. Würde jeder Versuch nur 1 Millisekunde dauern (wobei wir wissen, dass oft die Ping-Zeit im Internet schon viel höher ist), würde das Knacken bei 100 bit etwa 40 Millionen Billionen Jahre dauern (konkret 40.196.936.841.331 Millionen Jahre).

Das zu Anfangszeiten im WLAN eingesetzte WEP-Verfahren bot eine Schlüssellänge von nur 40 bit. Selbst damit hätte das Durchprobieren aller Schlüssel (mit der Annahme 1 Millisekunde pro Versuch) ca. 35 Jahre gedauert. Ein Designfehler des Protokolls verursacht jedoch, dass sich der laufend ändernde Start-Schlüssel immer wieder wiederholt, wodurch ein mit WEP gesichertes WLAN heute in ca. einer Minute geknackt ist. Das WEP-Verfahren gilt seit 2003 als unsicher und wird heute nicht mehr in WLAN-Routern angeboten.

Frühere WLAN-Router erlaubten mit der Funktion WPS mit 8-stelliger PIN-Eingabe das einfache Einrichten einer Client-Verbindung. Das würde grundsätzlich das Durchprobieren von 100 Millionen Kombinationen erfordern. Ein Designfehler in der WPS-PIN-Überprüfung ermöglicht jedoch, dass lediglich 10.000 Versuche zur Ermittlung der ersten vier PIN-Stellen, und nur noch 1000 Versuche für die restlichen 4 Stellen erfordern. Damit kann der Schlüssel, der eigentlich 100 Millionen Kombination böte, mit lediglich 11.000 Versuchen geknackt werden.