Zašto sigurno provizioniranje pripada u proizvodnju
Povezani uređaj koji se otprema bez identiteta mora se provizionirati na terenu. Terensko provizioniranje znači ručni korak (ili ranjivu automatsku registraciju) pri instalaciji. Oba pristupa donose operativne probleme i sigurnosnu izloženost.
Provizioniranje na strani proizvodnje uređaju daje jedinstveni kriptografski identitet prije otpreme. Uređaj se podiže, autenticira i registrira bez ručne intervencije.
Sigurnosni elementi (secure elements)
Microchip ATECC608 i NXP EdgeLock uobičajeni su sigurnosni elementi za IoT. Oba podržavaju:
- generiranje privatnog ECC ključa unutar čipa (ključ nikada ne izlazi)
- potpisivanje i verifikaciju certifikata
- zaštitu od ponavljanja zasnovanu na brojaču
- ponašanje s vidljivim tragom neovlaštenog otvaranja (tamper-evident)
Proizvodna linija generira ključ unutar sigurnosnog elementa, potpisuje certifikat root CA-om, upisuje certifikat na uređaj i bilježi javni ključ uz serijski broj.
Registracija X.509 certifikata
X.509 je standardni format certifikata. Registracija na strani proizvodnje obično ide ovim redoslijedom:
- sigurnosni element generira ECC par ključeva (privatni ključ zaključan je u čipu)
- proizvodni sustav očita javni ključ
- proizvodni sustav potpisuje certifikat preko root CA s podrškom HSM-a
- certifikat se upisuje natrag na uređaj
- javni ključ i otisak certifikata bilježe se uz serijski broj
Privatni ključ root CA-a nikada ne dolazi na proizvodnu liniju. Drži se u HSM-u u kontroliranom okruženju.
AWS IoT i Azure DPS
AWS IoT podržava Just-in-Time Provisioning (JITP) i Multi-Account Registration. Azure Device Provisioning Service (DPS) podržava X.509 atestaciju, atestaciju putem Trusted Platform Module (TPM) i atestaciju simetričnim ključem.
Oba omogućuju da proizvodna linija unaprijed registrira uređaje, kako bi se automatski registrirali pri prvom spajanju na cloud. Tijek na strani proizvodnje:
- uređaj se provizionira X.509 certifikatom
- otisak certifikata uređaja registrira se u cloud DPS-u
- uređaj se na terenu podigne, predoči certifikat i automatski se registrira
- cloud uređaj svrstava u odgovarajuću grupu i preuzima konfiguraciju
Vlastiti PKI prati isti obrazac, samo s internom infrastrukturom umjesto AWS-a ili Azurea.
Radni tijek na strani proizvodnje koji funkcionira
- root CA s podrškom HSM-a u kontroliranom okruženju, dostupan preko API-ja za potpisivanje
- generiranje ključa po jedinici unutar sigurnosnog elementa na liniji
- potpisivanje certifikata putem API poziva (bez izlaganja ključnog materijala)
- predregistracija u cloud DPS-u kao dio koraka provizioniranja
- zapis o registraciji po jedinici u proizvodnoj bazi
- opcionalno upravljanje listom opoziva za uređaje na kraju životnog vijeka ili izgubljene jedinice
Uobičajene zamke
- privatni ključ root CA-a pohranjen na proizvodnoj liniji (a ne u HSM-u)
- isti ključ upisan u više uređaja ("testni način koji je završio u otpremi")
- otisak certifikata zabilježen, ali nije predregistriran u cloud DPS-u
- tijek provizioniranja izveden ručno na nekoliko jedinica, bez skaliranja
Izvori
- dokumentacija AWS IoT Just-in-Time Provisioning
- dokumentacija Microsoft Azure Device Provisioning Service
- dokumentacija Microchip ATECC608 secure element
- dokumentacija NXP EdgeLock secure element