Identifying the Bootloader in a Flash Dump

How to locate and read the bootloader in a raw flash dump with binwalk, strings, and dd, and what it reveals about a device’s secure boot.
Detecting Fault Injection at Runtime

Beyond surviving a glitch, a device can notice it is being attacked. Here is how runtime fault detection works and what to do when it triggers.
Designing Firmware That Survives a Glitch

You cannot stop a glitch, but you can make one insufficient. Here are the firmware patterns that survive fault injection.
Timing Attacks on Embedded Comparisons

A comparison that returns early leaks how much of a secret you got right. Here is how timing attacks work and why constant-time code matters.
Electromagnetic Side-Channel Basics

A chip radiates information as it computes. Here is how electromagnetic side-channel analysis works and why it can be easier than power analysis.
Clock Glitching to Skip a Security Check

Clock glitching corrupts an instruction by feeding the chip a malformed clock edge. Here is how it differs from voltage glitching and what it breaks.
Common Mistakes With AES on Microcontrollers

AES is strong, but the way it is used on microcontrollers often is not. Here are the implementation mistakes that quietly break it.
Generating Per-Device Keys at Manufacturing

Per-device keys only help if they are generated safely. Here is how provisioning works at manufacturing and the pitfalls to avoid.
Why You Should Never Ship One Signing Key

A single key shared across every unit turns one compromise into a fleet-wide breach. Here is why per-device keys matter and how to get them.
Where Embedded Devices Hide Their Keys

A device is only as secure as the place it keeps its keys. Here is a tour of common key storage choices, from the worst to the best.