Cyclically Dependent Software Check Routines for Tamper Resistance
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional anti-tamper methods for software in embedded systems, which cannot rely on continuous bidirectional communication with a remote server or trusted hardware, struggle to effectively prevent reverse engineering and tampering due to vulnerabilities in check routines that can be identified and modified by reverse engineers.
Innovation Solution
The system analyzes dependencies to form a Directed Graph with cycles, ensuring that no single check routine is not covered by another, and uses check routines to dynamically compute the starting address of the next machine code block, making it necessary for a reverse engineer to remove all checks simultaneously and causing information gaps that prevent expected execution.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If check routines are embedded into software to verify code integrity, then software protection against tampering is improved, but the check routines themselves can be identified and modified by reverse engineers, making the protection ineffective
Solution Approach 1:
The patent implements dynamic check routines where the verification logic is not fixed at compile time but is instead generated or selected at runtime based on cryptographic keys or other dynamic parameters. This makes it difficult for reverse engineers to identify and modify specific check locations, as the check routines change between executions
Solution Approach 2:
The patent introduces an intermediary layer between the software code and the check routines, such as a cryptographic wrapper or indirection mechanism. This intermediary obscures the actual location and implementation of check routines, preventing reverse engineers from directly accessing and modifying them
2Reliability
If multiple check routines are distributed throughout software to ensure comprehensive coverage, then tamper detection capability is improved, but the complexity of the system increases
Solution Approach 1:
The patent divides the check routine functionality into multiple distributed segments throughout the software, each responsible for verifying specific code regions. This segmentation provides comprehensive tamper detection while managing complexity through modular design, where each segment is independent and can be implemented using consistent patterns
3Reliability
If check routines are made cyclically dependent to prevent individual check removal, then protection resilience is improved, but the computational overhead and memory requirements increase
Solution Approach 1:
The patent implements cyclically dependent check routines where checks are organized in cycles or chains, with each check depending on the result of the previous one. This periodic structure ensures that removing or modifying any single check breaks the entire verification chain, providing strong protection resilience. The cycle length and structure are optimized to balance security requirements with computational overhead
Data Source
AI summary
Embodiments of the present disclosure relate to anti-tamper computer systems, in particular to methods and systems which can embed protection code into software. Among other things, the protection code helps prevent (and make it more costly) to reverse engineer to tamper with the protected software with malicious intent, such as, but not restricted to: the removal of a license protection mechanism; the removal of code displaying advertisements; the injection of a malicious thread into the program memory space; illicit usage; or any other kind of unauthorized modification of the software.


