В случае, если элементы, содержащиеся в файле набора ключей проекта ETS, будут использоваться вне ETS и вне Falcon SDK, в зависимости от элемента должны применяться следующие алгоритмы дешифрования («псевдокод»):
IP-магистраль
- BackboneKey = AES128-CBC( A1, A2, A3, A4 )
- A3 = Project.BackboneKey
Туннельные интерфейсы
- Password = AES128-CBC( A1, A2, A3, A4 )
- A3 = RandomBytes( A31 ) + PKCS#7( Device.BusAccess( IA ).Password, A32 ))
- Authentication = AES128-CBC( A1, A2, A3, A4 )
- A3 = RandomBytes( A31 ) + PKCS#7( Device.AuthenticationCode, A32 )
IP Устройства
- ManagementPassword = AES128-CBC( A1, A2, A3, A4 )
- A3 = RandomBytes( A31 ) + PKCS#7( Device.ManagementPassword, A32 )
- Authentication = AES128-CBC( A1, A2, A3, A4 )
- A3 = RandomBytes( A31 ) + PKCS#7( Device.AuthenticationCode, A32 )
Устройства
- ToolKey = AES128-CBC( A1, A2, A3, A4 )
- A3 = Device.ToolKey
Групповые Адреса
- Key = AES128-CBC( A1, A2, A3, A4 )
- A3 = GroupAddress.Key
Детали
- A1 = PBKDF2( A11, A12, A13, A14, A15 )
- A11 = HMAC-SHA256 // 'PRF'
- A12 = keyring password
- A13 = "1.keyring.ets.knx.org" // 'salt'
- A14 = 65536 // количество итераций
- A15 = 128 // битовая длина производного ключа
- A2 = SHA256( A21, A22)
- A21 = keyring 'creation' attribute (из файла)
- A22 = 128 // наиболее значимые биты
- A3 = зашифрованные данные
- A31 = 8 // количество случайных байтов
- A32 = 24 // количество байтов заполнения
- A4 = SHA256