By: Jayasimha Holkal, Senior Architect-Software, Product Engineering Services, Sasken Technologies Limited
IoT Devices and consumer devices with internet connections are becoming mainstream and ubiquitous. Unless properly designed, the devices and the consumers can be exposed to hacking. We have already witnessed several well-publicized cases of hacking in consumer devices. This article briefly describes some of the best practices to be undertaken to mitigate the attacks.
Physical Security: Devices, where attackers can have physical access, are prone to many attacks including side-channel attacks. Some best practices here are:
- Any physical interfaces access for programming, monitoring, controlling, etc. should be protected. Ex: JTAG fuses should be burnt in the production versions
- Interconnections between the components on the system to be protected. Ex: running the data lines in the intermediate layers of the PCB. Sensitive data like passwords should not be accessed over these lines.
- Analyze and implement protection against side-channel attacks. Ex: Masking
Boot: Booting is the foundation for security. Ensuring boot time is secure enables security for further stages. A trusted boot sequence is thus vital. Some best practices here are:
- Check the boot code is valid and trusted before executing
- SAM (Secure Access Module)/TPM(Trusted Platform Module) to be used
- On boot failure due to security check fail, unauthorized access to the system (ex: through uboot prompt) should not be made available
Operating System (OS): A proper configuration of OS is critical for security. Some best practices here are:
- Ensure OS is configured for the best security and is securely booted
- Include only those components and libraries that are required in the product
- Ensure proper access mechanisms are in place
- Continuously monitor the OS for updates on security and propagate the same
Network: Network is the window to the outside world. Proper monitoring and security of all transactions is vital. Some best practices here are:
- Ensure a proper firewall is in place
- Enable only ports that are necessary
- Ensure all connections are authenticated
- Use only secure connection, http and non-secure connections should not be used
Local Connectivity (Wi-Fi, Bluetooth, ZigBee, etc.): IoT devices, (sensors, actuators, etc.), would be using a local connectivity like Wi-Fi, Bluetooth, ZigBee to access the Internet through a router/AP/Gateway. The connection between the device and router/AP/Gateway could be vulnerable. Some best practices here are:
- There would be several options for establishing a link between the device and gateway. Ensure only the most secure option is used.
- Continuously monitor and upgrade for any security updates. Ex: Issues were detected with WPA2 which was considered secure.
Applications: Some best practices here are:
- Applications should not be run as root, only minimum privileges required should be provided
- Ensure applications can only access functionality as per their access rights
- Use secure coding practices and check the code through code analysis tools
Others: Overall the following best practices needs to be used wherever applicable
- Change any default user name and passwords. Use strong passwords containing a mix of upper and lower case alphabets, numeric and special symbols.
- Use the best encryption methods possible, ensure any communication is protected for confidentiality, ensures integrity, is authenticated, protected against replay attacks
- Use two factor authentication wherever possible
- All credentials to be stored in a trusted storage area