Hallo!
Ich bin gerade dabei eine Library zu schreiben, die die Kommunikation mit HomeMatic Devices unter Java ermöglicht [1].
Ziel ist es, dass HomeMatic auch in einem Java basierten Smart-Home-System verwendet werden kann.
Die Kommunikation über HM-CFG-USB-2 und HM-CFG-LAN funktioniert mal soweit, dass (unverschlüsselte) Pakete mitgelesen werden können.
Leider bereitet mir der AES Encryption Modus beim HM-CFG-LAN Probleme, bei denen ihr mir hoffentlich weiterhelfen könnt.
Soweit ich das (auch im Homegear Quellcode) nachvollziehen konnte, wir ja gleich nach dem Verbinden zum Gateway ein “V” Packet mit einem 32 stelligem RemoteIV geschickt.
Dieses Packet beantwortet man mit “V” und mit einem selbstgewähltem LocalIV - soweit so gut. Mit deisen beiden IV Parametern und dem AES Key des Gateways wird dann die AES Ent-/Verschlüsselung initialisiert.
In den Homegear Logs kann man das auch schön nachvollziehen:
09/03/16 11:22:55.235 Module HomeMatic BidCoS: LAN-Konfigurationsadapter "My-HM-CFG-LAN": HM-CFG-LAN IV is: 30123C1232E170B80000000000000000
09/03/16 11:22:55.236 Module HomeMatic BidCoS: LAN-Konfigurationsadapter "My-HM-CFG-LAN": Homegear IV is: 861237816BD1234B2D0E7092B1D83123
09/03/16 11:22:55.236 Module HomeMatic BidCoS: LAN-Konfigurationsadapter "My-HM-CFG-LAN": Debug: Sending: V861237816BD1234B2D0E7092B1D83123
Die weitere Kommunikation erfolgt dann AES verschlüsselt, wobei der Cipher Feedback Mode (CFB) verwendet wird [2].
Soweit ich gesehen habe werden die Packets vom Gateway an Homegear mit dem Local IV verschlüsselt und die Packets von Homegear an das Gateway mit dem Remote IV.
In Java gibt es ebenfalls eine Implementierung für AES-128 und CFB [3] - die Ent-/Verschlüsselung klappt aber leider nicht wie gewünscht.
Meine Fragen sind nun:
Stimmen meine Annahmen zu Art der Verschlüsselung und IVs?
Welches Padding wird bei der Verschlüsselung verwendet? Wird überhaupt eines verwendet? (Das kann in Java nämlich noch zusätzlich angegeben werden)
Lg
[1] https://github.com/crea-doo/homematic-java
[2] https://github.com/Homegear/Homegear-HomeMaticBidCoS/blob/master/src/PhysicalInterfaces/HM-CFG-LAN.cpp#L544
[3] https://bouncycastle.org/specifications.html