Skip to content

DEF CON 34 talks are here: 354 talks, summarized and searchable.

Browse DEF CON 34

Digic8 Oracle

Laurent Clevy

HardwareTalks31 minExpertOpen on YouTube ↗

Where

Talks
hack.lu 2025

Duration

31 min

Shows how emulating a camera's firmware crypto routine can decrypt and verify Canon DIGIC 8 update files.

Summary

Laurent Clevy opens with his interest in Canon digital cameras as a playground for file formats and cryptography, and his goal of running native code on a recent EOS model. He examines Canon's firmware update files, which contain a small updater that runs a stripped-down operating system to write new firmware to flash. Both parts are signed and encrypted, and a region table defines which byte ranges each signature covers.

Comparing the old and new formats, the layout is largely unchanged, but the signature section now holds four values instead of two and the decryption routine is smaller, so old keys no longer work. He dumped firmware with a hidden script, then ran a crypto routine copied into RAM under Unicorn emulation without extracting its algorithm or key. Since one key is reused across several DIGIC 8 models, a dump from one camera could decrypt an update for another, which he calls an oracle. Crypto constants such as an S-box and the SHA-256 K table then helped locate hashing and verification functions, which he matched to the region table before scripting decryption and signature checks.

The main takeaway is that asymmetric signatures make forging valid updates far harder on newer cameras, and Canon changed keys again later. In questions, he noted that no integrity check was found at boot, so writing flash directly would be risky. For practitioners, emulation offered a quick route to understanding an unfamiliar scheme with little manual reversing.

Related talks