De-anchoring Handler for Software Anti-Glitching
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Physical attacks on software, such as voltage and clock glitching, exploit timing vulnerabilities to synchronize with critical code sections, making it difficult to prevent exploitation and control of the software execution.
Innovation Solution
The de-anchoring handler inserts random sets of instructions near critical code sections to disrupt synchronization, using a de-anchoring handler that includes a code analyzer, inserter, and generator to insert replacement manager instructions, de-anchoring sections, and restoration instructions into the input code, making it challenging for attackers to identify and synchronize with critical code execution.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If random code blocks are inserted into input code to prevent synchronization attacks, then security against physical attacks is improved, but device complexity increases
Solution Approach 1:
The de-anchoring handler is integrated into the software development process, inserting random code blocks into the input code before compilation. This preliminary action ensures that the critical code sections are protected against synchronization attacks before the software is deployed, without requiring additional complexity in the running system.
Solution Approach 2:
The patent introduces a de-anchoring handler as an intermediary component that processes input code and inserts de-anchoring sections. This handler acts as a mediator between the original code and the compiled executable, adding security functionality without directly modifying the core software logic or requiring changes to the target system architecture.
2Difficulty of detecting and measuring
If de-anchoring sections are inserted near critical code sections, then difficulty for attackers to synchronize is increased, but code length increases
Solution Approach 1:
The de-anchoring handler inserts random code blocks specifically near critical code sections that require protection, rather than uniformly throughout the entire codebase. This localized approach concentrates the security enhancement where it is most needed while minimizing the overall increase in code length.
Solution Approach 2:
The patent varies parameters such as the number of random instructions, the position of insertion, and the content of de-anchoring sections to create diverse protection patterns. This parameter variation increases the difficulty for attackers to synchronize without requiring excessive code length, as the same level of protection can be achieved with different configurations.
3Reliability
If replacement manager instructions are used to dynamically insert code blocks during execution, then security is improved, but execution time increases
Solution Approach 1:
The random code blocks are inserted into the input code during the development phase, before compilation. This preliminary action eliminates the need for dynamic insertion during execution, as the de-anchoring sections are already present in the compiled binary. The replacement manager instructions simply execute the pre-inserted code blocks, minimizing execution time overhead.
Solution Approach 2:
The patent uses simple, lightweight code blocks that execute quickly and are discarded after use. These de-anchoring sections are designed to be computationally inexpensive, requiring minimal processing time while effectively disrupting synchronization attacks. The temporary nature of these code blocks allows for rapid execution without significant performance penalty.
Data Source
AI summary
Systems, apparatus, articles of manufacture, and methods are disclosed to prevent attacks on software. An example non-transitory machine readable storage medium comprising instructions to cause programmable circuitry to at least: insert a plurality of code blocks into an input code; insert replacement manager instructions into the input code, the replacement manager instructions to, when executed: determine a subset of the plurality of code blocks; and insert the subset of the plurality of code blocks into memory for execution during execution of the input code.


