IoT (Internet of Things) devices have – and in many cases have earned! – a rather poor reputation for security. It is easy to find numerous examples of security issues in various IoT gateways and devices.
So I was expecting the worst when I had the opportunity to talk to a number of IoT vendors and to attend the IoT Day at EclipseCon. Instead, I was pleasantly surprised to discover that considerable attention is being paid to security!
- Frameworks, infrastructure, and lessons from the mobile phone space are being applied to IoT. The mobile environment isn’t perfect, but has made considerable progress over the last few years. This is actually a pretty good starting point.
- Code signing is being emphasized. This means that the vendor has purchased a code signing certificate from a known Certificate Authority and used it to sign their application. This ensures that the code has not been corrupted or tampered with and provides some assurance that it is coming from a known source. Not an absolute guarantee, as the Certificate Authorities aren’t perfect, but a good step.
- Certificate based identity management, based on X.509 certificates, is increasingly popular. This provides a strong mechanism to identify systems and encrypt their communications.
- Oauth based authentication and authorization is becoming more widely used.
- Encrypted communications are strongly recommended. The Internet of Things should run on https!
- Encrypted storage is recommended.
Julian Vermillard of Sierra Wireless gave a presentation at EclipseCon on 5 Elements of IoT Security. His points included:
- Secure your hardware. Use secure storage and secure communications. Firmware and application updates should be signed.
- “You can’t secure what you can’t update.”
- Upgrades must be absolutely bulletproof – you can never “brick” a device!
- Need rollback capabilities for all updates. An update may fail for many reasons, and you may need to revert to an earlier version of the code. For example, an update might not work with other software in your system.
- Secure your communications
- Recommends using Perfect Forward Secrecy.
- Use public key cryptography:
- X.509 certificates (see above discussions on X.509). Make sure you address certificate revocation.
- Pre-Shared Keys. This is often easier to implement but weaker than a full Public Key X.509 infrastructure.
- Whatever approach you take, make sure you can handle regular secret rotation or key rotation.
- For low end devices look at TLS Minimal. I’m not familiar with this; it appears to be an IETF Draft.
Julian also recommended keeping server security in mind – the security of the backend service the IoT device or gateway is talking to is as important as device level security!
The challenge now is to get actual IoT manufacturers and software developers to build robust security into their devices. For industrial devices, where there is a high cost for security failures, we may be able to do this.
For consumer IoT devices you will have to vote with your wallet. If secure IoT devices sell better than insecure ones, manufacturers will provide security. If cost and time to market are everything, we will get insecure devices.