Program Integrity Checks Against Reverse Engineering Tampering
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
The increasing difficulty in securing computer systems against malicious attacks, including reverse engineering and data theft, due to the widespread use of complex computer programs and network communications.
Innovation Solution
Implementing techniques such as generating multiple unique computer programs with randomization, using asymmetric cryptographic schemes, and employing methods to detect unauthorized modifications through time of execution, memory hashing, and variable mapping to ensure program integrity.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If computer programs are made more complex to provide advanced functionality, then program capabilities are improved, but vulnerability to reverse engineering and malicious attacks increases
Solution Approach 1:
The program is divided into multiple code segments with different integrity levels. Critical segments are protected with cryptographic verification while non-critical segments remain accessible. This segmentation allows the program to maintain complex functionality while protecting only the essential parts from reverse engineering.
Solution Approach 2:
The patent creates a composite program structure combining protected and unprotected code portions. The protected segments use cryptographic hashing and verification mechanisms, while unprotected segments provide user-facing functionality. This composite approach enables the program to offer advanced features while maintaining security for critical operations.
2Reliability
If cryptographic verification is implemented to detect code modification, then program integrity is improved, but computational overhead and execution time increase
Solution Approach 1:
Instead of verifying the entire program, the system performs cryptographic verification only on critical code segments. This partial verification approach maintains program integrity for essential functions while minimizing the computational overhead and time loss associated with comprehensive verification.
Solution Approach 2:
Cryptographic hashes of protected code segments are pre-computed and stored during program installation. During execution, the system only needs to verify these pre-computed hashes rather than performing full cryptographic verification, significantly reducing execution time while maintaining integrity checks.
3Object-affected harmful factors
If multiple randomized versions of the same program are generated, then security against reverse engineering is improved, but device complexity and resource requirements increase
Solution Approach 1:
The patent implements a universal verification mechanism that works across multiple randomized program versions. A single cryptographic hash verification system can validate any version of the program, eliminating the need for separate verification systems for each randomized variant. This reduces device complexity while maintaining security across all versions.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
Various techniques to detect and prevent reverse engineering of computer programs are disclosed. A program may be used as a key in an asymmetric cryptographic scheme, where modification of the program would destroy its usefulness as a key. An operator may be dispersed among different lines of code, so that unauthorized insertion or removal of lines of code causes the code to fail. Content of memory may be hashed at different times to detect unauthorized memory access. Code may be modified and hashes computed and compared to hashes expected from such modification. A duration of execution may be measured and compared to an expected duration, where deviation from expected may indicated unauthorized modification of code. Variables may be mapped according to a secret agreed logic to thwart eavesdropping. A program may be made labyrinthine and complex, so that its useful flow paths are difficult to discern.