Freebus Security Extension¶
Eine Sicherheiterweiterung für Freebus AVR-Platinen.
Quellen:
- SPINS: Security Protocols for Sensor Networks (http://www.ece.cmu.edu/~adrian/projects/mc2001/index.html)
- SEIB: Diversitäre Zugangs- und Sicherheitsmechanismen angewendet in automatisierten Gebäuden (http://tumb1.biblio.tu-muenchen.de/publ/diss/ei/2004/westermeir.pdf)
- EIBsec: Security in Networked Building Automation Systems (https://www.auto.tuwien.ac.at/thesis/pdf/THESIS0001.pdf)
Verschlüsselung von Gruppen-Telegrammen¶
Verschlüsselt wird hier nur der Nutz-Datenbereich (Transport- und Anwendungsschicht, bei einem Standard TP Telegramm: Byte 7–22). Dies hat den Vorteil, dass die Telegramme weiterhin von ungesicherten, KNX kompatiblen Komponenten (Aktoren, Sensoren, Routern), verarbeitet bzw. weitergeleitet werden können.
Integritätsschutz¶
Zum Schutz der Integrität eines Telegramms wird ein CRC32-Wert der Nutz-Daten berechnet und anschließend an das Ende dieses Bereichs (Byte 19-22) angefügt. Dies reduziert den verfügbaren Platz für Nutz-Daten von 16 auf 12 Byte. Die nachträgliche Verschlüsselung des Nutz-Datenbereichs verhindert eine spätere Manipulation des CRC-Wertes.
Schutz vor Wiedereinspielung alter Telegramme¶
Zum Schutz gegen das Wiedereinspielen alter Telegramme wird ein 128 Bit Zähler verwendet. Jeder Controller besitzt pro Gruppenzugehörigkeit genau einen Zählerwert. Dieser Zählerwert wird nicht wie der CRC-Wert an die Nachricht angehängt sondern wird vor der eigentlichen Verschlüsselung auf den Nutz-Datenbereich binär aufaddiert (XOR).
Verschlüsselung¶
Zur Ver- / Entschlüsselung der Telegramme wird der AES-Algorithmus eingesetzt. Jede Gruppe besitzt hierfür einen eigenen 128 Bit Schlüssel. Die Verschlüsselung eines Telegramms findet in vier Schritten statt:- Ein CRC32-Wert wird ausgehend von den Nutz-Daten (Byte 7-18) berechnet. Dieser Wert wird an das Ende dieses Bereiches geschrieben.
- Abhängig von der Gruppenadresse wird ein Gruppen-Zähler (64 Bit) auf den Nutz-Datenbereich (Byte 7-14) binär aufaddiert (XOR).
- Der Nutzdatenbereich wird mittels AES verschlüsselt. Der hierfür verwendete Schlüssel ist dabei abhängig von der jeweils verwendeten Gruppenadresse.
- Im letzten Schritt wird das Telegramm verschickt und der Gruppen-Zähler inkrementiert.
Entschlüsselung¶
Das Telegramm muss von allen Geräten welche die Gruppenadresse enthalten Entschlüsselt werden. Dies ist notwendig um den Zählerwert auf allen Geräten synchron zu halten.Der Entschlüsselungsvorgang besteht aus vier Schritten:
- Nachdem eine verschlüsselte Gruppennachricht empfangen wurde, wird der Nutz-Datenbereich (Byte 7-22) entschlüsselt. Hierzu wird der AES-Algorithmus in Kombination mit dem zur Gruppenadresse gehörenden Schlüssel verwendet.
- Der zur Gruppenadresse zugehörige Zählerwert wird auf den Nutzdatenbereich (Byte 7-14) binär aufaddiert (XOR).
- Es wird ein CRC32-Wert über die Nutz-Daten berechnet (Byte 7-18) und mit dem übertragenen Wert (Byte 19-22) verglichen.
- Stimmen beide Werte überein wird der Zähler inkrementiert und das Telegramm zur weiteren Verarbeitung der Transportschicht übergeben.
Synchronisation der Zähler¶
Verschlüsselung von Konfigurations-Telegrammen¶
Auf jedem Gerät wird ein Netzwerkschlüssel K_NET installiert. Dieser Schlüssel ist für alle Geräte gleich. Er wird zum Schutz der verbindungsorientierten Kommunikation verwendet.
Authentisierungs-Phase:- Gerät A schickt ein A_Connection Request and Gerät B (enthält Identität von A).
- Gerät B Antwortet mit einem verschlüsselten A_Connection_Response (Challenge die einen Nonce N1 und die Identität von B enthält).
- Gerät A Schickt ein verschlüsseltes A_Authorize_Request (enthält N1+1 und einen zweiten Nonce N2).
- B Antwortet mit einem A_Authorize_Response (enthält N2+1 verschlüsselt).
Nach der Authentisierungs-Phase wird die folgende Kommunikation entsprechend der Verschlüsselung von Gruppen-Telegrammen gehandhabt. Dabei wird K_NET als Schlüssel N1|N2 als Zähler verwendet.
Schlüssel Verteilung¶
Netzwerkschlüssel¶
Beim Flashen der Geräte wird bei aktiviertem Sicherheitsmodul ein initialer Netzwerkschlüssel eingespielt. Dieser muss vor der Verwendung des Gerätes durch die FTS überschrieben werden. Die FTS erstellt und speichert hierfür pro Projekt einen Netzwerkschlüssel. Da der initiale Netzwerkschlüssel für jeden bekannt ist, sollte der neue Schlüssel in einer sicheren Umgebung aufgespielt werden. Für die Übertragung des Schlüssels wird das erweiterte Telegrammformat verwendet.
Gruppenschlüssel¶
Die Gruppenschlüssel werden aus den entsprechenden Gruppenadressen erstellt. Hierfür wird jede Gruppenadresse mithilfe des AES und K_NET verschlüsselt.