Segmented Code Integrity Checking for Anti-Tamper Protection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing software security measures, such as obfuscation and copy protection, provide low-level security and are easily bypassed, making it difficult to effectively protect software from unauthorized tampering, modification, and reverse engineering, which can lead to loss of intellectual property and revenue.

Innovation Solution

An anti-tamper method that divides program code into segments with integrity checking portions, forming a linked chain of checks, where each segment verifies the integrity of adjacent segments, making it extremely laborious for hackers to modify attributes without compromising the entire sequence, thereby providing robust protection against unauthorized modification.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If obfuscation techniques are used to protect software code, then the code becomes difficult to read and understand, but the security level remains low and can be easily bypassed by reverse engineering tools

Engineering Contradiction:
Improvesoftware protection levelVSAvoidcode complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The software code is divided into multiple code segments, each with associated metadata. This segmentation allows the system to protect specific critical segments while maintaining others in their original form, thereby improving security without unnecessarily complicating the entire codebase.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary layer consisting of metadata and integrity checking mechanisms that mediate between the original code and potential attackers. This intermediary layer provides robust security without requiring the code itself to be obfuscated, thus avoiding the trade-off between security and code readability.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If copy protection techniques with password or serial number access are implemented, then unauthorized copying is prevented, but the protection can be easily compromised and provides only low-level security

Engineering Contradiction:
Improveanti-tamper effectivenessVSAvoidsecurity vulnerability detection
Core Design Contradiction:
ReliabilityVSDifficulty of detecting and measuring

Solution Approach 1:

The system performs preliminary integrity checking of code segments before execution. By checking the integrity of each code segment against its metadata beforehand, the system prevents unauthorized modifications from taking effect, providing strong anti-tamper protection that is difficult to compromise.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent implements a feedback mechanism where integrity checking results are used to control program execution. If any code segment fails the integrity check, the system can respond by preventing execution or alerting the user, creating a closed-loop security system that is highly effective and difficult to bypass.

Inventive Principle:
Principle #23Feedback

3Reliability

If program folding techniques are used to protect firmware, then random routine calls are generated, but the security level remains low and additional security procedures are still necessary

Engineering Contradiction:
Improvecode protection levelVSAvoidsecurity procedure complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The firmware is segmented into protected code segments with associated metadata. This segmentation enables targeted protection of critical routines without requiring program folding techniques, achieving high security with simpler procedures.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent replaces complex mechanical-style program folding techniques with a metadata-based integrity checking system. This substitution achieves equivalent or superior security with simpler, more maintainable procedures that do not require additional security layers.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

4Reliability

If obfuscated code is used to deter reverse engineering, then the code is difficult to read, but it remains vulnerable to basic code obfuscation bypass tools and requires maintaining two versions of the code

Engineering Contradiction:
Improveintellectual property protectionVSAvoidcode maintenance effort
Core Design Contradiction:
ReliabilityVSEase of manufacture

Solution Approach 1:

By segmenting the code and applying protection selectively to critical segments through metadata, the system protects intellectual property without obfuscating the entire codebase. This approach maintains code readability and simplifies maintenance while still providing strong IP protection.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies different levels of protection to different parts of the code based on their criticality. Critical segments are protected with integrity checking, while non-critical segments remain in their original form, optimizing both protection and maintainability.

Inventive Principle:
Principle #3Local quality

Data Source

PatentEP2045748B1Anti-tamper techniques
Publication Date: 2016.08.17 METAFORIC
  • EP2045748B1 patent drawingFigure 1
  • EP2045748B1 patent drawingFigure 2
  • EP2045748B1 patent drawingFigure 3

AI summary

The application describes anti-tamper techniques for protecting a program code portion against tampering. According to the described techniques, a sequence of code segments having a root-code segment and a plurality of sub-code segments is defined. Each sub-code segment is provided with an integrity checking portion for checking the integrity of a target code segment. At runtime, the integrity checking portion of a given sub-code segment carries out a checking procedure on the respective target code segment to obtain a runtime result which is compared with a reference result to verify that the target portion of the program has not been tampered with.