Software Integrity Check Against Tampering
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing methods for protecting software programs against tampering, such as reverse engineering and unauthorized modifications, provide low-level security and are often bypassed by hackers, and struggle to distinguish between authorized and unauthorized changes, leading to revenue loss and intellectual property theft.
Innovation Solution
A method involving integrity check code sections in software programs that compute and compare checksums or hashes, transmitting results to a server for verification, and receiving signals to prevent execution if tampering is detected, with a server-based system to differentiate between genuine and tampered versions by analyzing occurrence numbers of different integrity check results across user devices.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If integrity check code sections are implemented in software programs, then security against tampering is improved, but device complexity increases
Solution Approach 1:
The software program is divided into multiple code segments, each with its own integrity check code section. This segmentation allows integrity verification to be distributed throughout the program structure, enabling localized security checks without requiring a complete system-wide verification mechanism, thus managing complexity through modular organization.
Solution Approach 2:
An intermediary computing device (server) is introduced to receive integrity check results from the software program and determine whether to allow execution. This mediator handles the complex decision-making process for security verification, separating the integrity calculation logic from the execution control logic, thereby improving the overall system architecture.
2Reliability
If obfuscated code is used to protect software, then security against reverse engineering is improved, but ease of operation deteriorates
Solution Approach 1:
The integrity check functionality is extracted as a separate mechanism from the main program code. By taking out the security verification logic into dedicated integrity check code sections that operate independently, the system maintains security without requiring the entire program to be obfuscated, thus preserving debugging capabilities for non-security portions.
Solution Approach 2:
The integrity check code sections are designed to be self-contained copies of verification logic that can operate independently. These copied verification routines check specific code segments without requiring access to or modification of the main program code, allowing developers to debug the main program while the integrity checks remain as separate, verifiable units.
3Adaptability or versatility
If third-party recompilation is allowed, then adaptability is improved, but security against unauthorized modification deteriorates
Solution Approach 1:
The system implements a feedback mechanism where integrity check results are sent to an intermediary computing device, which then provides feedback on whether the software should be allowed to execute. This feedback loop enables authorized recompilation by third parties to be verified and approved, while unauthorized modifications are detected and blocked, thus reconciling adaptability with security.
Solution Approach 2:
The security verification system is designed to be dynamic rather than static. The intermediary computing device can adapt its verification process based on the specific circumstances, allowing legitimate recompilation while blocking unauthorized changes. This dynamic approach enables the system to differentiate between authorized and unauthorized modifications rather than applying a fixed rejection rule.
Data Source
AI summary
In a general aspect, a method of protecting a software program against tampering can include: executing, by a processor of a user device, an executable code of the software program, the executable code comprising integrity check code sections; during execution of one of the integrity check code sections of the executable code, computing by the processor an integrity check result applied to a code segment of the executable code; transmitting by the processor to a server a message containing the integrity check result and an identifier of the code segment; and when the integrity check result does not correspond to a reference result for the code segment of a genuine version of the software program, receiving by the processor from the server a signal that prevents an operation of the software program from being executed by the processor.


