Microcontroller Software EMP Fault Injection Resilience
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Microcontroller systems, such as smart card chips, are vulnerable to electromagnetic pulse (EMP) fault injections, which can cause data and timing faults, allowing hackers to gain control and steal user data, as existing countermeasures like laser and voltage spike injections are inefficient due to increased metal layers and progressive countermeasures.
Innovation Solution
A software system that optimizes source code by defining status constants with a width greater than the native processor width, having distinct high and low halves, and using an optimizing compiler to convert the code into machine language, making it resilient to EMP disruptions by requiring simultaneous and localized faults that are difficult to generate with current EMP systems.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If traditional status constants with native processor width are used, then the code is simpler and faster to execute, but the system becomes vulnerable to EMP fault injections that can disrupt program flow
Solution Approach 1:
The status constant is segmented into multiple parts (high half and low half) instead of using a single native-width value. This segmentation ensures that an EMP attack must simultaneously affect multiple distinct memory locations or instruction streams to compromise the status constant, thereby improving reliability against EMP attacks while accepting increased structural complexity
Solution Approach 2:
The patent extends the status constant from native processor width to double the width (e.g., from 32-bit to 64-bit), adding an extra dimension. This dimensional expansion creates redundancy where the high half and low half must both be correctly maintained, making it significantly harder for EMP attacks to disrupt program flow while preserving the original simple comparison logic
2Reliability
If status constants are extended beyond native processor width, then EMP attack resistance improves, but compiler optimization and code execution efficiency may deteriorate
Solution Approach 1:
The patent changes the parameter of status constant width from native processor width to double the native width. This parameter change increases EMP attack resistance because attackers must now simultaneously disrupt multiple wider status registers or instruction streams. The compiler optimization maintains execution efficiency by recognizing patterns in the extended constants and optimizing their handling despite the increased width
3Productivity
If redundant machine language instructions are combined by the compiler, then code size and execution time decrease, but security against EMP attacks is reduced
Solution Approach 1:
The patent deliberately avoids complete combination of redundant instructions by using extended status constants that require separate handling of high and low halves. This partial action approach maintains some redundancy in the machine code, which actually improves security against EMP attacks by creating multiple potential failure points that an attacker must simultaneously exploit, while the compiler still optimizes what it can combine
Data Source
AI summary
In one form, a software system includes a first non-transitory computer readable medium storing a source code program, a second computer readable medium, and a compiler. The first non-transitory computer readable medium includes a first function having a return type greater than a native width of a target processor, and a second function that calls the first function and that conditionally branches based on comparing a returned value from the first function to an expected value, wherein the expected value has first and second portions that are not equal to zero and are not equal to each other. The compiler converts the source code program in the first non-transitory computer readable medium into a machine language program for storage in the second computer readable medium. The compiler optimizes the source code program by selectively combining a set of redundant machine language instructions into a smaller set of machine language instructions.


