Zašto sigurno provizioniranje pripada proizvodnji
Povezani uređaj koji se isporučuje bez identiteta mora se provizionirati na terenu. Terensko provizioniranje znači ručni korak (ili ranjivu automatsku registraciju) prilikom instalacije. Oba pristupa donose operativne probleme i bezbednosnu izloženost.
Provizioniranje na strani proizvodnje daje uređaju jedinstveni kriptografski identitet pre isporuke. Uređaj se pokreće, autentifikuje i registruje bez ručne intervencije.
Bezbedni elementi (secure elements)
Microchip ATECC608 i NXP EdgeLock uobičajeni su bezbedni elementi za IoT. Oba podržavaju:
- generisanje privatnog ECC ključa unutar čipa (ključ nikada ne izlazi napolje)
- potpisivanje i verifikaciju certifikata
- zaštitu od ponavljanja zasnovanu na brojaču
- ponašanje sa vidljivim tragom neovlašćenog otvaranja (tamper-evident)
Proizvodna linija generiše ključ unutar bezbednog elementa, potpisuje certifikat root CA-om, upisuje certifikat na uređaj i beleži javni ključ uz serijski broj.
Registracija X.509 certifikata
X.509 je standardni format certifikata. Registracija na strani proizvodnje obično ide ovim redom:
- bezbedni element generiše ECC par ključeva (privatni ključ ostaje zaključan u čipu)
- proizvodni sistem očitava javni ključ
- proizvodni sistem potpisuje certifikat preko root CA uz podršku HSM-a
- certifikat se upisuje nazad na uređaj
- javni ključ i otisak certifikata beleže se uz serijski broj
Privatni ključ root CA-a nikada ne dolazi na proizvodnu liniju. Čuva se u HSM-u u kontrolisanom 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 preko Trusted Platform Module (TPM) i atestaciju simetričnim ključem.
Oba omogućuju da proizvodna linija unapred registruje uređaje, pa se oni automatski registruju pri prvom povezivanju na cloud. Tok na strani proizvodnje:
- uređaj se provizionira X.509 certifikatom
- otisak certifikata uređaja registruje se u cloud DPS-u
- uređaj se na terenu pokreće, predočava certifikat i automatski se registruje
- cloud raspoređuje uređaj u odgovarajuću grupu i preuzima konfiguraciju
Vlastiti PKI prati isti obrazac, samo sa internom infrastrukturom umesto AWS-a ili Azurea.
Tok na strani proizvodnje koji funkcioniše
- root CA uz podršku HSM-a u kontrolisanom okruženju, dostupan preko API-ja za potpisivanje
- generisanje ključa po jedinici unutar bezbednog elementa na liniji
- potpisivanje certifikata preko API poziva (bez izlaganja ključnog materijala)
- predregistracija u cloud DPS-u kao deo koraka provizioniranja
- zapis o registraciji po jedinici u proizvodnoj bazi
- opcionalno upravljanje listom opoziva za uređaje na kraju životnog veka ili izgubljene jedinice
Uobičajene zamke
- privatni ključ root CA-a čuva se na proizvodnoj liniji (a ne u HSM-u)
- isti ključ upisan je u više uređaja ("test režim koji je završio u isporuci")
- otisak certifikata zabeležen je, ali nije predregistrovan u cloud DPS-u
- tok provizioniranja obavlja se 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