Il file del portachiavi KNX (.knxkeys) viene utilizzato in ETS per garantire una comunicazione sicura e contiene le credenziali crittografate relative ai dispositivi KNX. Il suo formato comprende un FDSK crittografato e una firma generata scrivendo elementi e attributi in un ordine specifico, per poi applicare l’hash mediante PBKDF2 e SHA256. Per utilizzarlo, importi il portachiavi tramite Progetto → Sicurezza → Importa portachiavi in ETS.
Panoramica sul portachiavi KNX:
Il file keyring è correlato alle configurazioni KNX Secure e viene utilizzato principalmente all’interno dell’ETS (Engineering Tool Software) per garantire una comunicazione sicura.
Il file presenta spesso l’estensione .knxkeys e contiene le credenziali crittografate per i dispositivi e le interfacce KNX.
Formato del file Keyring:
Di seguito è riportato il formato del file portachiavi.
L'FDSK è criptato e la decriptazione è spiegata nell'articolo qui
e una volta crittografato l'FDSK, firmi l'intero formato seguendo la seguente procedura.
Generazione di firme:
La firma sul file del portachiavi viene generata e verificata in modo simile alla generazione di hash/firma per i dati dei prodotti KNX:
- In un .NT BinaryWriter (sAttributeStream), scriva in questo ordine (omettendo Keyring/@Signature):
-foreachElemento
a. char(0x01)
b. Nome dell'elemento (senza alcuno spazio dei nomi XML)*
c. foreach Attributo, ordinato per Nome dell'attributo
-Nome dell'attributo con byte di lunghezza iniziale*.
-Valore dell'attributo con byte di lunghezza iniziale*.
d. elabora ricorsivamente i possibili elementi figli
e. char(0x02)
2. Base64( PBKDF2( HMAC-SHA256, KeyringPassword, "1.keyring.ets.knx.org", 65536, 128))*
3. Firma = MSB128( SHA256( sAttributeStream))
Nota: i nomi degli elementi e degli attributi, così come i valori degli attributi e l'hash della password base64 sono tutti scritti con un byte di lunghezza iniziale. I valori vuoti degli attributi sono scritti come valore di lunghezza 0x00.
Utilizzo nell’ETS:
Per stabilire una connessione sicura con un router KNX Secure, è necessario caricare il file del portachiavi KNX (.knxkeys) in ETS procedendo come segue:
Progetto → Sicurezza → Importa portachiavi → Selezionare il file .knxkeys.