Si los elementos que contiene el archivo de llavero del proyecto ETS deben usarse fuera de ETS y fuera de Falcon SDK, deberán aplicarse los siguientes algoritmos de desencriptación (“pseudocódigo”), en función del elemento:
Backbone IP
- BackboneKey = AES128-CBC( A1, A2, A3, A4 )
- A3 = Project.BackboneKey
Interfaces de Tunnelling
- Contraseña = AES128-CBC( A1, A2, A3, A4 )
- A3 = RandomBytes( A31 ) + PKCS#7( Device.BusAccess( IA ).Password, A32 ))
- Autenticación = AES128-CBC( A1, A2, A3, A4 )
- A3 = RandomBytes( A31 ) + PKCS#7( Device.AuthenticationCode, A32 )
Dispositivos IP
- ManagementPassword = AES128-CBC( A1, A2, A3, A4 )
- A3 = RandomBytes( A31 ) + PKCS#7( Device.ManagementPassword, A32 )
- Autenticación = AES128-CBC( A1, A2, A3, A4 )
- A3 = RandomBytes( A31 ) + PKCS#7( Device.AuthenticationCode, A32 )
Dispositivos
- ToolKey = AES128-CBC( A1, A2, A3, A4 )
- A3 = Device.ToolKey
Direcciones de Grupo
- Clave = AES128-CBC( A1, A2, A3, A4 )
- A3 = GroupAddress.Key
Datos
- A1 = PBKDF2( A11, A12, A13, A14, A15 )
- A11 = HMAC-SHA256 // 'PRF'
- A12 = contraseña de llavero
- A13 = "1.keyring.ets.knx.org" // 'salt'
- A14 = 65536 // número de iteraciones
- A15 = 128 // longitud de bits de la clave derivada
- A2 = SHA256( A21, A22)
- A21 = atributo 'creación' del llavero (desde el archivo)
- A22 = 128 // bits más significativos
- A3 = datos encriptados
- A31 = 8 // número de bytes aleatorios
- A32 = 24 // número de bytes de relleno
- A4 = SHA256