MSDN Community

Windows IoT Development & Security

Secure Boot for Windows IoT Development

Secure Boot is a critical security feature designed to ensure that only trusted software is loaded during the boot process of your Windows IoT device. It helps protect against malware and unauthorized code execution from the moment the device powers on.

What is Secure Boot?

Secure Boot is a security standard developed by members of the PC industry to help make sure that a device boots using only software that is trusted by the Original Equipment Manufacturer (OEM). When the PC starts, the firmware checks the signature of each piece of boot software, including UEFI firmware drivers, EFI applications, and the operating system. If the signatures are valid, the PC boots, and the firmware gives the operating system control. If they are not valid, the firmware prevents the PC from booting.

Why is Secure Boot Important for IoT?

Implementing Secure Boot in Windows IoT

Implementing Secure Boot on Windows IoT devices typically involves configuring the UEFI firmware settings on your target hardware. The exact steps can vary depending on the System on Chip (SoC) vendor and the specific development board you are using.

Key Concepts:

Steps to Enable Secure Boot (General Guidance):

  1. Access your device's UEFI/BIOS settings. This is usually done by pressing a specific key (e.g., DEL, F2, F10, F12, ESC) during the initial boot sequence.
  2. Locate the "Secure Boot" or "Boot Security" section within the UEFI settings.
  3. Ensure Secure Boot is enabled.
  4. Verify that the Secure Boot keys are properly provisioned. Often, devices come with default Microsoft keys pre-installed. If not, you may need to load them manually.
  5. Save your changes and exit the UEFI settings.
Important: Modifying UEFI settings incorrectly can render your device unbootable. Always refer to your specific hardware documentation and proceed with caution. It is highly recommended to back up your existing keys before making changes.

Secure Boot and Custom Drivers/Software

If you are developing custom bootloaders or drivers for your Windows IoT device, you will need to ensure they are properly signed with certificates that are trusted by the Secure Boot configuration. This typically involves obtaining a code signing certificate and signing your binaries before deployment.

For production environments, consider using:

Troubleshooting

If your device fails to boot after enabling Secure Boot, it usually indicates an issue with the boot loader signature. You may need to disable Secure Boot temporarily to access the UEFI settings and investigate.

Common issues include:

Further Resources