Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Da die IKEA Smart Home app die primäre Referenz für die Kommunikation zum Tradfri Gateway ist, wäre es natürlich super, wenn man diese Kommunikation ebenfalls mitlesen könnte.

Meine ersten Ideen dazu: Wenn man den Pre-Shared-Key aus der IKEA Smart Home App auslesen kann oder initial die Koppelung über den Security Code mitschneidet, dann könnte man vielleicht auch die Kommunikation zwischen IKEA Smart Home App und Tradfri Gateway mitlesen. ?

Die erste Variante habe ich nicht näher betrachtet, sondern gleich die 2. Variante ausprobiert. Ich habe also die IKEA Smart Home app von meinem Handy gelöscht und neu installiert. Dadurch werden lokal gespeicherte Informationen, wie z.B. pre-shared Keys gelöscht. Dann habe ich mich über die App wieder mit dem Gateway verbunden und wurde erwartungsgemäß zum Scannen des QR-Codes oder der alternativ zur manuellen Eingabe des Security Codes aufgefordert. Nachdem diese Informationen eingegeben waren, konnte ich in der App wieder meine installierten Lampen sehen.

Dann Anschließend habe ich das Packet Capture mit Wireshark untersucht. Anfangs sah ich nur eine DTLS Kommunikation und Hello Pakete von beiden Seiten. Bei näherer Untersuchung stellte ich fest, dass eine verschlüsselte Kommunikation ausgehandelt wird. Die Authentifizierung, die , ähnlich wie das auch bei TLS geschieht, allerdings mit weniger Ciphers. Die Authentifizierungsphase, bei der der Client vom Server einen pre-shared Key anfordert, ist ja bereits hier in der verlinkten erwähnten Anleitung beschrieben war, worden. Diese lief bereits verschlüsselt ab, so dass man nichts im Klartext lesen konnte.

Ich habe nicht mal im RFC zu COAPS suchen müssen, sondern habe direkt gesehen, dass der Security Code ‘zufälligerweise’ zufälligerweisedie gleiche Länge hat, wie die pre-shared Keys . Ich habe daher das und vermutet, dass dieser Key für die initiale Verschlüsselung verwendet wird. Daher habe ich das Packet Capture gespeichert, den Security Code von ASCII in Hex umgewandelt und , - wie oben beschrieben , - in Wireshark eingetragen. Bingo! Jetzt konnte ich die Authentifizierung im Klartext mitlesen:

...

Am Anfang sieht man mehrere “Client Hello” und “Server Hello” Pakete , und die Aushandlung der symmetrischen Verschlüsselung (ähnlich wie bei TLS, nur mit weniger Ciphers). Danach folgt die Authentifizierung, mit der der CoAP-Client ein Pre-Shared Key für einen gewünschten Usernamen anfordert. Hierfür sendet der Client die Property “9090” und den gewünschten (dynamisch gewählten) Username im JSON-Format an den CoAP-Server.

...

Die Antwort im JSON-Format enthält die Property “9091” und den vom Server zufällig gewählten Pre-shared Key. Diesen Key kann man sehr einfach über die angegebenen Menüpunkte “Copy”, “…as Printable Text” Copy”, “…as Printable Textin die Zwischenablage kopieren und speichern. Nachdem man diesen Pre-shared Key wieder von ASCII in Hex konvertiert hat und in Wireshark eingegeben hat, kann man endlich die Kommunikation zwischen App und Gateway mitlesen.

...

Auch wenn dieser Guide zeigt, wie man die verschlüsselte Kommunikation mitlesen kann, um z.B. die Kommunikation für neue Geräte zu verstehen, ist das Protokoll CoAPS nach meiner Ansicht sehr sicher. Nur wenn man die initiale Koppelung zwischen der App und dem Gateway, die über den Security Code erfolgt, mitlesen kann, ist eine Entschlüsselung möglich. Da die Kommunikation bei IKEA nur im lokalen LAN und (hoffentlich verschlüsselten) WLAN zu Hause stattfindet, ist die Sicherheit in der Praxis nicht gefährdet oder beeinträchtigt.

...