Compiling countermeasures against fault attacks with “Tracing LLVM”
summary
An open-source LLVM extension called Tracing LLVM adds opacification and tracing primitives that make non-functional security annotations semantically observable so optimizations cannot remove them. The prototype composes four countermeasures (two source-level, two assembly-level) on a PIN verification function, preserves register allocation choices via a register-promotion pass, lets all LLVM optimizations remain enabled, and produces assembly the authors inspect and claim satisfies the intended protections; code and docs are available.
AI-written summary · about
chapters (12)
- 0:00Fault attacks introduction
- 1:04Compilers breaking security
- 2:48Preserving non-functional properties
- 4:55Introducing Tracing LLVM
- 5:38Opacification to hide values
- 7:01Opacification in LLVM example
- 9:09Tracing for secure transformations
- 10:32Register cleanup with tracing
- 12:14Evaluating verify_pin countermeasures
- 13:20From theory to binaries
- 14:23Future work plans
- 15:33Q&A
related talks
16mReconciling Optimization With Secure Compilation
53mFrom Within: Compiler Testing and Validation via Compilers
24mSNIP: Speculative Execution and Non-Interference Preservation for Compiler(…)
24mGenerating BPF Verifier Friendly Code with Clang
59mCompiler-assisted Translation Validation
18mRobustifying Debug Information Updates in LLVM via Control-Flow Conformance Analysis
01h 46mA little Introduction to Control Flow Integrity
26mAn Effective Approach to Software Obfuscation
