Sollen die in der Keyring-Datei des ETS-Projekts enthaltenen Elemente außerhalb von ETS und außerhalb der Falcon SDK verwendet werden, so sind folgende Entschlüsselungsalgorithmen ('Pseudocode') anzuwenden:
IP Backbone
- BackboneKey = AES128-CBC( A1, A2, A3, A4 )
- A3 = Project.BackboneKey
Tunneling-Schnittstellen
- Passwort = AES128-CBC( A1, A2, A3, A4 )
- A3 = RandomBytes( A31 ) + PKCS#7( Device.BusAccess( IA ).Password, A32 ))
- Authentifizierung = AES128-CBC( A1, A2, A3, A4 )
- A3 = RandomBytes( A31 ) + PKCS#7( Device.AuthenticationCode, A32 )
IP-Geräte
- ManagementPassword = AES128-CBC( A1, A2, A3, A4 )
- A3 = RandomBytes( A31 ) + PKCS#7( Device.ManagementPassword, A32 )
- Authentifizierung = AES128-CBC( A1, A2, A3, A4 )
- A3 = RandomBytes( A31 ) + PKCS#7( Device.AuthenticationCode, A32 )
Geräte
- ToolKey = AES128-CBC( A1, A2, A3, A4 )
- A3 = Device.ToolKey
Gruppenadressen
- Key = AES128-CBC( A1, A2, A3, A4 )
- A3 = GroupAddress.Key
Details
- A1 = PBKDF2( A11, A12, A13, A14, A15 )
- A11 = HMAC-SHA256 // 'PRF'
- A12 = Keyring Passwort
- A13 = "1.keyring.ets.knx.org" // 'salt'
- A14 = 65536 // Anzahl Iterationen
- A15 = 128 // Bitlänge des abgeleiteten Schlüssels
- A2 = SHA256( A21, A22)
- A21 = Keyring 'Erstellung' Attribut (aus der Datei)
- A22 = 128 // höchstwertigste Bits
- A3 = verschlüsselte Daten
- A31 = 8 // Anzahl zufälliger Bytes
- A32 = 24 // Anzahl Padding Bytes
- A4 = SHA256