Fragen zu HomeMatic AES

Hallo zusammen,

mir ist die Rolle von AES bei HomeMatic noch nicht 100% klar. Ich fasse mal zusammen, was ich glaube, verstanden zu haben, und reihe auch gleich meine Fragen in die Liste ein. Für alle Antworten und Korrekturen jetzt schon vielen Dank!

  • HomeMatic-Geräte haben einen oder mehrere sog. Kanäle.
  • Eine Verbindung zwischen zwei Geräten ist immer die Verbindung von einem Kanal des einen zu einem Kanal des anderen Gerätes.
  • Sollen mehrere Kanäle zweier Geräte verbunden werden, wird pro Kanalpaar eine Verbindung angelegt.
  • Für jede dieser Verbindungen kann man AES einschalten.
  • Heißt das, daß jedes HomeMatic-Gerät intern über einen AES-Schlüssel verfügt?
  • Falls ja, wird er beim Anlernen an Homegear immer gesetzt? Oder erst, wenn für eine der Verbindungen des Geräts AES aktiviert wird?
  • Falls immer gesetzt: Heißt das, daß ich jedes Gerät, das ich von Homegear ab- und an eine andere Zentrale anlernen möchte, vorher auf den Werkszustand zurücksetzen muß?
  • Entfällt der letzte Schritt, wenn die neue Zentrale den gleichen AES-Schlüssel hat wie Homegear?
  • Kann ich den AES-Schlüssel eines Homegear-Peers irgendwo einsehen?
  • Was bedeutet die Meldung “Info: Ignoring broadcast packet from peer 3 to other peer, because AES handshakes are enabled for this peer.” im homegear.log? Peer 3 ist ein (optischer) Fensterkontakt.

Ich glaube, das sind fürs erste alle Fragen. Falls mir noch mehr einfallen, reiche ich sie nach…

Hi @Manul,

ich denke dieser Vortrag hier vom 30c3 erklärt sehr im Detail wie AES bei homematic funktioniert: https://www.youtube.com/watch?v=KlRLW4jJWgc, alternativ http://fhemwiki.de/wiki/AES_Encryption

Richtig, siehe https://www.homegear.eu/index.php/HomeMatic_BidCoS_Device_Reference

Jein. Die Geräte verbinden sich und es können “alle” Kanäle “gesehen” werden. Bestimmte Funktionen triggern aber einen bestimmten Wert der über die Kanäle zugreifbar sind. Eventuell ist das schlecht erklärt.

Nein. Nur bestimmte Geräte nutzen AES, hauptsächlich sicherheitsrelevante Geräte (KeyMatic, Fensterkontakte, etc.)

Der Default AES Key von homematic ist bekannt. Siehe https://git.zerfleddert.de/hmcfgusb/AES/
Dadurch ist die Kommunikation ohne angepassten AES-Schlüssel als unsicher anzusehen. Dafür ist auch der Parameter rfKey. AES lässt sich aber nach erfolgfreichen Anlernen deaktivieren.

Wenn du ein Gerät nicht ablernst und danach nicht in den Werkszustand zurück setzt, lässt sich das Gerät nicht mehr mit einem anderen rfKey betreiben.
Falls das passieren sollte, muss das Gerät zu eq3 zum kostenpflichtigen Werksreset.

Meines Verständnisses nach, ja.

Siehe rfKey… oder default. Ich weiß nicht, ob die CCU den AES key von sich aus ändert.

Der Fensterkontakt ist in jedem Fall AES verschlüsselt. Ich gehe davon aus, dass die Kommunikation zwischen den Geräten mit einem anderen AES key stattfindet als der, der in homegear eingetragen ist (default). Ich denke, das ist dann nur die Info, dass homegear den Verkehr mitbekommen hat aber nichts mit anfangen kann da unbekannter AES key. @sathya?

Hoffe, ich konnte Licht ins Dunkel bringen :wink:

Zumindest nicht so, daß ich es wirklich verstehe. Wenn ich in Homegear z.B. auf meinen Wandthermostat ein “peers list” loslasse, sieht das so aus:

(Peer)> peers list
Channel: 2      Address: 0x440075       Remote channel: 2       Serial number:  Virtual: False
Channel: 3      Address: 0x49bd34       Remote channel: 1       Serial number:  Virtual: False

Für mich sieht das nach Paarung spezifischer Kanäle aus.

Aber wenn ein Fensterkontakt bspw. AES-signiert mit einem Wandthermostat kommunizieren will, funktionert das, so wie ich das FHEM-Wiki verstehe, doch nur, wenn der Wandthermostat den selben AES-Schlüssel hat. Außerdem kann ich doch theoretisch AES für jede Direktverbindung einschalten, oder? Zumindest bietet mir der HM-Manager diese Option an, ausprobiert habe ich’s noch nicht. Meine Frage, ob der Schlüssel für jedes gepairte Device gesetzt wird, bleibt also bestehen.

Ich dachte, das gilt nur, wenn mir der AES-Key des Geräts nicht bekannt ist. Spricht aber, so wie Du’s schreibst, zumindest dafür, daß der Key für alle gepairten Devices gesetzt wird.

Nach meinem Verständnis, ist ein Gerät nicht generell “verschlüsselt”, sondern nur einzelne Verbindungen.

Das hieße dann, daß ein Gerät intern mehrere AES-Keys speichert?

Ganz klar ist mir das immer noch nicht alles.

Ich gebe zu, 100%ig Licht kann ich auch nicht ins Dunkel bringen. Ich weiß allerdings, dass wenn du den Schlüssel nicht explizit austauschst, die Geräte mit dem bekannten Standard-AES-Schlüssel kommunizieren.
Wenn Geräte direkt miteinander komunizieren, können Sie ja keinen anderen Schlüssel aushandeln. Somit ist diese Kommunikation als unsicher zu anzusehen.

Schau auch noch mal hier: http://homematic-forum.de/forum/viewtopic.php?f=27&t=8123#p56766

[quote]

  • Es ist keine Verschlüsselung, die Schaltbefehle gehen im Klartext durch den Äther (deswegen z.B. kann aber auch ein Taster gleichzeitig direktverknüpft werden und die Zentrale AES anfordern)
  • Einen Sicherheitsschlüssel gibt es immer, ob gesetzt oder nicht – da der Default-Schlüssel aber (zumindestens hypothetisch) bekannt ist, ist in diesem Fall die AES-Authentifizierung völlig nutzlos
  • Statt einem werden pro Vorgang dreimal Daten ausgetauscht (-> Batterieverbrauch, Fehleranfälligkeit)[/quote]

Ob wirklich alle homematic-Geräte AES sprechen, weiß ich leider nicht.

Mich darf übrigens gerne jeder korrigieren, das hier spiegelt auch nur mein Verständnis wieder.

1 Like

Genau darauf beziehen sich letztlich meine Fragen: Was genau heißt denn “explizit austauschen”? In der Original-CCU ist es nach meinem Verständnis so, daß sie ebenfalls erst mal den Standard-Key mitbringt. Wenn man den dann ändert, indem man einen sog. Sicherheitsschlüssel eingibt, aus dem dann als MD5-Digest der AES-Key generiert wird, ändert sie den Schlüssel der angelernten Geräte - aber gilt das für alle Geräte? Oder nur für diejenigen, für die AES in irgendeiner Form aktiviert ist? Und wie ist das bei Homegear, das ja mit dem rfKey von vorneherein einen vom Standard-Key verschiedenen AES-Schlüssel mitbringt? Hat jedes Gerät, das einmal an Homegear angelernt wurde, damit ebenfalls einen neuen Schlüssel?

In diesem Zusammenhang zwei weitere Fragen:

  • Wo bzw. wie kann man eigentlich für die Kommunikation zwischen Homegear und Peer AES aktivieren?

  • Wie kommt der neue AES-Schlüssel auf die Geräte? Will sagen, kann ich den AES-Schlüssel einer HomeMatic-Zentrale abgreifen, wenn ich ein Pairing mitsniffe?

Das siehst du völlig richtig. Um 100% auf Nummer sicher zu gehen, müsste man die Geräte in einer Alukiste oder in einem HF-isolierten Raum anlernen.
Um aber anzugreifen müsste jemand genau in diesem Moment vor deiner Tür stehen und mitlauschen.

Paging @sathya

Das ist klar, ja. War auch eher theoretische Überlegung als konkrete Sorge. Ich versteh Sachen halt gern… :wink:

1 Like

Hey @Manul, hallo @pmayer,

Die Geräte sollten immer in den Werkszustand gesetzt werden. Es müssen zwei Voraussetzungen erfüllt sein, damit das erneute Anlernen ohne Werksreset funktioniert:

  • Der AES-Schlüssel muss korrekt sein.
  • Die Zentralenadresse muss der Zentralenadresse entsprechen, mit welcher das Gerät angelernt wurde.

Genau, gepaart werden immer Kanäle. Auch AES wird auf Kanalebene ein- oder ausgeschaltet.

Sobald AES für einen Kanal aktiviert wurde, wird AES auf dem Gerät aktiviert (bis auf die Geräte, auf denen AES standardmäßig [z. B. neuer Fensterkontakt] oder immer [KeyMatic] eingeschaltet ist). Erst bei dieser Aktivierung wird der AES-Schlüssel an das Gerät übertragen. Nicht bereits beim Anlernen. Wenn das Gerät AES standardmäßig aktiviert hat, wird der AES-Schlüssel bereits beim Anlernen übertragen.

Ja, der Schlüssel kann mitgesniffed werden.

In der Gerätekonfiguration. Und zwar muss AES pro Kanal aktiviert werden. Wie @pmayer schon sagt unterstützen nicht alle Geräte und zum Teil auch nicht alle Kanäle AES. Aktivieren kannst du AES mit allen Konfigurationstools (z. B. HomeMatic-Konfigurator) oder mit:

homegear -e rc '$hg->putParamset(PEER_ID, KANAL, "MASTER", array("AES_ACTIVE" => true));'

Ich hoffe, ich habe alle Fragen beantwortet…

Viele Grüße

Sathya

3 Likes

Danke für Deine Antwort. Noch kurz nachgehakt: Wenn ich das hier

und das hier

kombiniere, müsste das hier

doch eigentlich nur gelten, wenn für das Gerät in irgendeiner Form AES aktiviert wurde, oder? Anderenfalls sollte ein unpair (pup) reichen? Wie ist das mit Geräten, die untereinander AES sprechen (Beispiel Fensterkontakt->Thermostat)? Wann wird da beim Anlernen bereits gepairter Geräte der Schlüssel übertragen?

Kannst Du hierzu

noch was sagen?

1 Like

Richtig.

Im Prinzip schon. Nur spinnt die Firmware der Geräte in solchen Fällen nach dem Neuanlernen zum Teil etwas, so dass ich trotzdem empfehlen würde, das Gerät in den Werkszustand zu bringen.

Beim Anlernen an die Zentrale. Bis dahin sprechen die Geräte miteinander nur mit dem Standardschlüssel, was eigentlich sicherheitstechnisch nichts bringt.

Da Broadcastpakete nicht signiert sind, verarbeitet Homegear diese aus Sicherheitsgründen standardmäßig nicht, da der Quelle nicht vertraut werden kann. Die Informationen in diesen Paketen gehen entsprechend verloren. Um das Verhalten zu ändern, kannst du “processBroadcastWithAesEnabled” in der “homematicbidcos.conf” auf “true” setzen. Dann hast du die Informationen aber auf Kosten der Sicherheit.

Viele Grüße

Sathya

2 Likes