On the use of X.509 certificates for IoT

Current mechanism to secure communication between services and devices is to install X.509 certificates to each devices. During the manufacturing flow, a hardware security module generates a private public key pair for each device. A. X.509 certificate is created from the public key and device id, and is signed by a certificate authority (CA) or intermediate CAs known to the IoT Hub. Both the certificate and the private key is installed in the device. The private key is kept secured and hidden and may be installed in a more secure area inside the device. Manufacturer also upload the certificate to the IoT Hub. Devices are registered and provisioned in the IoT Hub. In this process, upon connection of device to the IoT Hub, IoT Hub sends a challenge that asks for proof of ownership of the message that will be sent by the device. Device signs a reply message with its private key, along with the certificate. IoT Hub verifies using the public key of device's certificate. This establishes an end to end secure connection between the device and the IoT Hub service. 

 A caveat of using X.509 certificates when dealing in IoT is its certificate revocation and certificate expiry. Expired certificate in a device can make the device itself unusable, and reinstalling certificates of thousands if not millions of devices is deemed impractical. Another issue is when certificate is accidentally added to a certificate revocation list or CRL. CRL is a list of certificates that are revoked by an issuing CA. This makes the devices unreachable if the service that communicates with the devices only deals with valid certificates. 

Comments

Popular posts from this blog

The Sidetree Protocol

On the IoT Exchange - DID integration

Smartkey Overview