如果 ETS 项目密钥环文件中包含的元素应在 ETS 和 Falcon SDK 之外使用,则应使用下述跟元素相关的解密算法(“伪代码”):
IP 主干线
- BackboneKey = AES128-CBC( A1, A2, A3, A4 )
- A3 = Project.BackboneKey
隧道接口
- 密码 = AES128-CBC( A1, A2, A3, A4 )
- A3 = RandomBytes( A31 ) + PKCS#7( Device.BusAccess( IA ).Password, A32 ))
- 验证 = 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 )
- 验证 = 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 = 钥匙圈密码
- A13 = "1.keyring.ets.knx.org" // 'salt'
- A14 = 65536 // 迭代次数
- A15 = 128 // 派生密钥的bit位长度
- A2 = SHA256( A21, A22)
- A21 = 密钥环“创建”属性 (from the file)
- A22=128//最高位
- A3 = 加密数据
- A31 = 8 // 随机字节的个数
- A32 = 24 // 填充字节个数
- A4 = SHA256