Waarom veilige provisioning in de productie thuishoort
Een verbonden apparaat dat zonder identiteit het magazijn verlaat, moet in het veld worden geprovisioneerd. Veldprovisioning betekent een handmatige stap (of een kwetsbare auto-enrollment) op het moment van installatie. Beide leiden tot operationele pijn en beveiligingsrisico's.
Provisioning aan de productiezijde geeft het apparaat een unieke cryptografische identiteit voordat het de fabriek verlaat. Het apparaat start op, authenticeert zich en meldt zich aan zonder handmatige tussenkomst.
Secure elements
Microchip ATECC608 en NXP EdgeLock zijn gangbare secure elements voor IoT. Beide ondersteunen:
- Generatie van een ECC-privésleutel binnen de chip (sleutel verlaat de chip nooit)
- Ondertekening en verificatie van certificaten
- Replay-beveiliging op basis van een teller
- Tamper-evident gedrag
De productielijn genereert een sleutel binnen het secure element, ondertekent een certificaat tegen de root CA, schrijft het certificaat naar het apparaat en koppelt de publieke sleutel aan het serienummer in het logboek.
Enrollment met X.509-certificaten
X.509 is het standaard certificaatformaat. Enrollment aan de productiezijde volgt doorgaans dit patroon:
- Het secure element genereert een ECC-sleutelpaar (privésleutel opgesloten in de chip)
- Het productiesysteem leest de publieke sleutel
- Het productiesysteem ondertekent het certificaat via een HSM-ondersteunde root CA
- Het certificaat wordt teruggeschreven naar het apparaat
- Publieke sleutel en certificaatvingerafdruk worden gekoppeld aan het serienummer vastgelegd
De privésleutel van de root CA komt nooit op de productielijn. Die bevindt zich in een HSM in een gecontroleerde omgeving.
AWS IoT en Azure DPS
AWS IoT ondersteunt Just-in-Time Provisioning (JITP) en Multi-Account Registration. Azure Device Provisioning Service (DPS) ondersteunt X.509-attestatie, Trusted Platform Module (TPM)-attestatie en attestatie met symmetrische sleutel.
Beide laten de productielijn apparaten vooraf registreren, zodat ze zich bij de eerste cloudverbinding automatisch aanmelden. De workflow aan de productiezijde:
- Apparaat wordt voorzien van een X.509-certificaat
- De certificaatvingerafdruk van het apparaat wordt geregistreerd bij de cloud-DPS
- Het apparaat start op in het veld, toont het certificaat en meldt zich automatisch aan
- De cloud wijst het apparaat toe aan de juiste groep en downloadt de configuratie
Een eigen PKI volgt hetzelfde patroon, met interne infrastructuur in plaats van AWS of Azure.
Een werkende workflow aan productiezijde
- HSM-ondersteunde root CA in een gecontroleerde omgeving, benaderd via een ondertekenings-API
- Sleutelgeneratie per stuk binnen het secure element op de lijn
- Certificaatondertekening via API-aanroep (geen sleutelmateriaal wordt blootgesteld)
- Voorregistratie bij de cloud-DPS als onderdeel van de provisioning-stap
- Enrollment-record per stuk vastgelegd in de productiedatabase
- Optioneel beheer van een revocatielijst voor end-of-life of verloren apparaten
Veelvoorkomende valkuilen
- Privésleutel van de root CA opgeslagen op de productielijn (niet in een HSM)
- Dezelfde sleutel geprogrammeerd in meerdere apparaten ("testmodus die in productie is gegaan")
- Certificaatvingerafdruk wel gelogd, maar niet vooraf geregistreerd bij de cloud-DPS
- Provisioning-workflow handmatig uitgevoerd op enkele eenheden, nooit opgeschaald
Bronnen
- AWS IoT Just-in-Time Provisioning-documentatie
- Microsoft Azure Device Provisioning Service-documentatie
- Microchip ATECC608 secure element-documentatie
- NXP EdgeLock secure element-documentatie