The document discusses some of the challenges of IoT security and provides recommendations. It notes that IoT security is difficult because devices often lack secure boot processes, have undocumented backdoors, and debugging can be done over unencrypted network connections. It recommends hiring engineers trained in security, prioritizing security over features, performing regular penetration testing, and providing indicators if a device becomes hacked. However, it acknowledges that no security is impossible to break, so the focus should be on choosing important battles.
24. Secure Boot
BOOT ROM Code
Bootloader (UBoot / Barebox)
pubkey 1
pubkey 2
Signature Veri
fi
cation
25. Secure Boot
BOOT ROM Code
Bootloader (UBoot / Barebox)
Linux Kernel / RootFS (FIT)
pubkey 1
pubkey 2
pubkey 3
Signature Veri
fi
cation
Signature Veri
fi
cation
26. Secure Boot
BOOT ROM Code
Bootloader (UBoot / Barebox)
Linux Kernel / RootFS (FIT)
Additional Filesystems
pubkey 1
pubkey 2
pubkey 3
pubkey 4
Signature Veri
fi
cation
Signature Veri
fi
cation
Signature Veri
fi
cation
27. BOOT ROM Code
Bootloader (UBoot / Barebox)
Linux Kernel / RootFS (FIT)
Additional Filesystems
pubkey 1
pubkey 2
pubkey 3
pubkey 4
Signature Veri
fi
cation
Signature Veri
fi
cation
Signature Veri
fi
cation
Trusted Boot
28. BOOT ROM Code
Bootloader (UBoot / Barebox)
Linux Kernel / RootFS (FIT)
Additional Filesystems
pubkey 1
pubkey 2
pubkey 3
pubkey 4
Signature Veri
fi
cation
Signature Veri
fi
cation
Signature Veri
fi
cation
PCR Register
Trusted Boot
29. BOOT ROM Code
Bootloader (UBoot / Barebox)
Linux Kernel / RootFS (FIT)
Additional Filesystems
pubkey 1
pubkey 2
pubkey 3
pubkey 4
Signature Veri
fi
cation
Signature Veri
fi
cation
Signature Veri
fi
cation
PCR Register
Checksum BL
Checksum OTP
Checksum FIT
Checksum Kernel
Checksum Policy
Trusted Boot
50. Debugging via Network
Scan for Devices (mDNS / Avahi)
Get Signed Debugging Request
Debugging Request
Flags: uint8
Address: byte[4|16]
Port: uint8
Seed: uint16
51. Debugging via Network
Scan for Devices (mDNS / Avahi)
Get Signed Debugging Request
Send the Signed Debugging Request
Debugging Request
Flags: uint8
Address: byte[4|16]
Port: uint8
Seed: uint16
52. Debugging via Network
Scan for Devices (mDNS / Avahi)
Get Signed Debugging Request
Send the Signed Debugging Request
Connect to the Debugger
Debugging Request
Flags: uint8
Address: byte[4|16]
Port: uint8
Seed: uint16