Proč bezpečný provisioning patří do výroby
Připojené zařízení, které opouští linku bez identity, musí být uvedeno do provozu až v terénu. Provisioning v terénu znamená buď ruční krok, nebo zranitelný automatický enrollment při instalaci. Obojí přináší provozní zátěž a bezpečnostní riziko.
Provisioning na straně výroby přidělí zařízení jedinečnou kryptografickou identitu ještě před expedicí. Zařízení se nabootuje, ověří se a zaregistruje bez ručního zásahu.
Secure elements
Microchip ATECC608 a NXP EdgeLock jsou běžné secure elementy pro IoT. Oba podporují:
- Generování privátního klíče ECC uvnitř čipu (klíč čip nikdy neopustí)
- Podepisování a ověřování certifikátů
- Ochranu proti replay pomocí čítače
- Detekci neoprávněné manipulace
Výrobní linka vygeneruje klíč uvnitř secure elementu, podepíše certifikát kořenovou CA, zapíše certifikát do zařízení a zaeviduje veřejný klíč proti sériovému číslu.
Enrollment certifikátů X.509
X.509 je standardní formát certifikátu. Enrollment na straně výroby obvykle probíhá takto:
- Secure element vygeneruje pár klíčů ECC (privátní klíč zůstává uzamčen v čipu)
- Výrobní systém načte veřejný klíč
- Výrobní systém podepíše certifikát kořenovou CA podloženou HSM
- Certifikát se zapíše zpět do zařízení
- Veřejný klíč a otisk certifikátu se zaevidují proti sériovému číslu
Privátní klíč kořenové CA se nikdy nedostane na výrobní linku. Zůstává v HSM v kontrolovaném prostředí.
AWS IoT a Azure DPS
AWS IoT podporuje Just-in-Time Provisioning (JITP) a Multi-Account Registration. Azure Device Provisioning Service (DPS) podporuje atestaci X.509, atestaci Trusted Platform Module (TPM) a atestaci symetrickým klíčem.
Obě služby umožňují výrobní lince předregistrovat zařízení tak, aby se při prvním připojení do cloudu automaticky zaregistrovala. Pracovní postup na straně výroby:
- Zařízení je vybaveno certifikátem X.509
- Otisk certifikátu zařízení je zaregistrován v cloudovém DPS
- Zařízení se nabootuje v terénu, předloží certifikát a automaticky se zaregistruje
- Cloud zařadí zařízení do správné skupiny a stáhne mu konfiguraci
Vlastní PKI funguje podle stejného vzoru, jen s interní infrastrukturou namísto AWS nebo Azure.
Funkční pracovní postup na straně výroby
- Kořenová CA podložená HSM v kontrolovaném prostředí, přístupná přes podpisové API
- Generování klíče pro každý kus uvnitř secure elementu přímo na lince
- Podepisování certifikátu přes volání API (žádný klíčový materiál se neobjeví venku)
- Předregistrace v cloudovém DPS jako součást kroku provisioningu
- Záznam o enrollmentu každého kusu ve výrobní databázi
- Volitelná správa revokačního seznamu pro zařízení na konci životnosti nebo ztracené kusy
Časté chyby
- Privátní klíč kořenové CA uložený na výrobní lince (mimo HSM)
- Stejný klíč nahraný do více zařízení („testovací režim, který odešel do výroby“)
- Otisk certifikátu zaevidovaný, ale nepředregistrovaný v cloudovém DPS
- Provisioning postup prováděný ručně na pár kusech, nikdy nenaškálovaný
Zdroje
- Dokumentace AWS IoT Just-in-Time Provisioning
- Dokumentace Microsoft Azure Device Provisioning Service
- Dokumentace secure elementu Microchip ATECC608
- Dokumentace secure elementu NXP EdgeLock