Software Integrity Check Against Tampering

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering Contradiction Analysis

1Reliability

If integrity check code sections are implemented in software programs, then security against tampering is improved, but device complexity increases

Engineering Contradiction:
Improvesecurity against tamperingVSAvoidsoftware structure
Core Design Contradiction:
ReliabilityVSDevice complexity

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.

Inventive Principle:
Principle #1Segmentation

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If obfuscated code is used to protect software, then security against reverse engineering is improved, but ease of operation deteriorates

Engineering Contradiction:
Improvesecurity against reverse engineeringVSAvoiddebugging capability
Core Design Contradiction:
ReliabilityVSEase of operation

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.

Inventive Principle:
Principle #2Taking out (Extraction)

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.

Inventive Principle:
Principle #26Copying

3Adaptability or versatility

If third-party recompilation is allowed, then adaptability is improved, but security against unauthorized modification deteriorates

Engineering Contradiction:
Improverecompilation capabilityVSAvoidintegrity verification
Core Design Contradiction:
Adaptability or versatilityVSReliability

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.

Inventive Principle:
Principle #23Feedback

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.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS11574046B2Protecting a software program against tampering
Publication Date: 2023.02.07 GUARDSQUARE NV
  • US11574046B2 patent drawing
  • US11574046B2 patent drawing
  • US11574046B2 patent drawing

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.