Γιατί η ασφαλής provisioning ανήκει στην παραγωγή
Μια συνδεδεμένη συσκευή που φεύγει χωρίς ταυτότητα πρέπει να γίνει provisioning στο πεδίο. Το field provisioning σημαίνει ένα χειροκίνητο βήμα (ή μια ευάλωτη αυτόματη εγγραφή) κατά την εγκατάσταση. Και τα δύο δημιουργούν λειτουργικό βάρος και έκθεση σε κινδύνους ασφαλείας.
Η provisioning από την πλευρά της παραγωγής δίνει στη συσκευή μια μοναδική κρυπτογραφική ταυτότητα πριν τη φόρτωση. Η συσκευή ξεκινά, αυθεντικοποιείται και εγγράφεται χωρίς χειροκίνητη παρέμβαση.
Secure elements
Τα Microchip ATECC608 και NXP EdgeLock είναι κοινά secure elements για IoT. Και τα δύο υποστηρίζουν:
- Δημιουργία ιδιωτικού κλειδιού ECC μέσα στο τσιπ (το κλειδί δεν φεύγει ποτέ)
- Υπογραφή και επαλήθευση πιστοποιητικών
- Προστασία επανάληψης βασισμένη σε counter
- Συμπεριφορά με ένδειξη παραβίασης
Η γραμμή παραγωγής δημιουργεί ένα κλειδί μέσα στο secure element, υπογράφει ένα πιστοποιητικό κόντρα στη root CA, γράφει το πιστοποιητικό στη συσκευή και καταγράφει το δημόσιο κλειδί σε σχέση με τον σειριακό.
Εγγραφή πιστοποιητικού X.509
Το X.509 είναι η πρότυπη μορφή πιστοποιητικών. Η εγγραφή από την πλευρά της παραγωγής ακολουθεί τυπικά αυτό το μοτίβο:
- Το secure element δημιουργεί ζεύγος κλειδιών ECC (το ιδιωτικό κλειδί κλειδώνεται μέσα στο τσιπ)
- Το σύστημα παραγωγής διαβάζει το δημόσιο κλειδί
- Το σύστημα παραγωγής υπογράφει το πιστοποιητικό με root CA που υποστηρίζεται από HSM
- Το πιστοποιητικό γράφεται πίσω στη συσκευή
- Το δημόσιο κλειδί και το αποτύπωμα του πιστοποιητικού καταγράφονται σε σχέση με τον σειριακό
Το ιδιωτικό κλειδί της root CA δεν αγγίζει ποτέ τη γραμμή παραγωγής. Ζει σε ένα HSM σε ελεγχόμενο περιβάλλον.
AWS IoT και Azure DPS
Το AWS IoT υποστηρίζει Just-in-Time Provisioning (JITP) και Multi-Account Registration. Το Azure Device Provisioning Service (DPS) υποστηρίζει X.509 attestation, Trusted Platform Module (TPM) attestation και symmetric key attestation.
Και τα δύο επιτρέπουν στη γραμμή παραγωγής να προεγγράφει συσκευές, ώστε να εγγράφονται αυτόματα στην πρώτη σύνδεση με το cloud. Η ροή εργασίας από την πλευρά της παραγωγής:
- Η συσκευή γίνεται provisioning με πιστοποιητικό X.509
- Το αποτύπωμα του πιστοποιητικού της συσκευής καταχωρείται στο cloud DPS
- Η συσκευή ξεκινά στο πεδίο, παρουσιάζει το πιστοποιητικό, εγγράφεται αυτόματα
- Το cloud αναθέτει τη συσκευή στη σωστή ομάδα και κατεβάζει τη διαμόρφωση
Η ιδιωτική PKI ακολουθεί το ίδιο μοτίβο με εσωτερική υποδομή αντί για AWS ή Azure.
Λειτουργική ροή εργασίας από την πλευρά της παραγωγής
- Root CA που υποστηρίζεται από HSM σε ελεγχόμενο περιβάλλον, με πρόσβαση μέσω signing API
- Δημιουργία κλειδιού ανά μονάδα μέσα στο secure element στη γραμμή
- Υπογραφή πιστοποιητικού μέσω κλήσης API (κανένα υλικό κλειδιού δεν εκτίθεται)
- Προεγγραφή στο cloud DPS ως μέρος του βήματος provisioning
- Εγγραφή ανά μονάδα καταγεγραμμένη στη βάση δεδομένων παραγωγής
- Προαιρετική διαχείριση λίστας ανάκλησης για συσκευές end-of-life ή χαμένες
Συνηθισμένες παγίδες
- Το ιδιωτικό κλειδί της root CA αποθηκευμένο στη γραμμή παραγωγής (όχι σε HSM)
- Το ίδιο κλειδί εγγεγραμμένο σε πολλές συσκευές ("test mode που έφτασε στην αποστολή")
- Το αποτύπωμα του πιστοποιητικού καταγράφεται αλλά δεν προεγγράφεται στο cloud DPS
- Η ροή provisioning γίνεται χειροκίνητα σε λίγες μονάδες, χωρίς ποτέ να επεκταθεί
Πηγές
- Τεκμηρίωση AWS IoT Just-in-Time Provisioning
- Τεκμηρίωση Microsoft Azure Device Provisioning Service
- Τεκμηρίωση Microchip ATECC608 secure element
- Τεκμηρίωση NXP EdgeLock secure element