Program Obfuscation via Dummy Blocks and Segmented Instructions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for obfuscating programs containing confidential information, such as encryption keys, are vulnerable to unauthorized analysis as they can be detected through collected constant data, even when control structures are complicated.

Innovation Solution

A program obfuscating device that generates an obfuscated program by inserting dummy blocks and process instructions, making it difficult for unauthorized analyzers to obtain confidential information by using a storage unit, process instruction generating unit, process instruction inserting unit, dummy block generating unit, and dummy block inserting unit to create a graph that is hard to analyze.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Difficulty of detecting and measuring

If dummy code is inserted to obfuscate the program control structure, then it becomes difficult to estimate the algorithm and location of modules, but confidential information can still be detected through collected constant data

Engineering Contradiction:
Improvedifficulty to estimate algorithm and module locationVSAvoidconfidential information detection through constant data
Core Design Contradiction:
Difficulty of detecting and measuringVSLoss of information

Solution Approach 1:

The confidential information is divided into multiple segments and stored in different locations within the program. Instead of keeping the complete confidential data in one place, it is fragmented across multiple instruction groups, making it impossible to detect the full confidential information by simply collecting constant data from the obfuscated program.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The harmful element (complete confidential information) is extracted from the constant data that can be easily collected. By removing the complete confidential data from the program's constant pool and replacing it with segmented pieces, the patent eliminates the vulnerability where analyzers could collect all constant data and reconstruct the confidential information.

Inventive Principle:
Principle #2Taking out (Extraction)

2Device complexity

If the program control structure is complicated through obfuscation, then unauthorized analysis becomes difficult, but the confidential information still exists in the program and can be found in constant data

Engineering Contradiction:
Improveprogram control structure complexityVSAvoidprotection of confidential information
Core Design Contradiction:
Device complexityVSReliability

Solution Approach 1:

Confidential information is segmented into multiple parts distributed across different instruction groups. This segmentation ensures that even if the program control structure is complicated, the confidential information remains protected because analyzers cannot reconstruct it from collected constant data when the complete information is split into non-contiguous segments.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Dummy instruction groups are introduced as intermediaries between the actual confidential information segments. These dummy groups contain constant data that mimics the appearance of confidential information but are harmless. When analyzers collect constant data, they receive a mixture of real segmented confidential data and dummy data, making reliable detection impossible.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Loss of information

If divisional secrets are used to replace program instructions containing confidential information, then confidential information cannot be detected from collected constant data, but unauthorized analyzers can still detect divisional secrets and reconstruct the confidential information

Engineering Contradiction:
Improveconfidential information detection from constant dataVSAvoiddetection of divisional secrets
Core Design Contradiction:
Loss of informationVSDifficulty of detecting and measuring

Solution Approach 1:

Dummy instruction groups are inserted as intermediaries among the divisional secrets. These dummy groups contain constant data that is indistinguishable from real confidential information segments. When analyzers detect and collect constant data, they cannot differentiate between dummy data and real segmented confidential data, preventing reliable reconstruction of the original confidential information.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

Different instruction groups have different qualities: some contain real segmented confidential information while others contain dummy data. This local differentiation in quality (real vs. dummy) within the overall structure of divisional secrets makes it impossible for analyzers to identify which segments are genuine, thereby protecting the confidential information even when divisional secrets are detected.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS8312297B2Program illegiblizing device and method
Publication Date: 2012.11.13 PANASONIC HOLDINGS CORP
  • US8312297B2 patent drawing
  • US8312297B2 patent drawing
  • US8312297B2 patent drawing

AI summary

A program obfuscating device for generating obfuscated program from which unauthorized analyzer cannot obtain confidential information easily. The program obfuscating device stores original program that contains authorized program instructions and confidential process instruction group containing confidential information that needs to be kept confidential, generates process instructions which, when executed in predetermined order, provide same result, with execution of last process instruction thereof, as the confidential process instruction group, inserts the process instructions into the original program at position between start of the original program and the confidential process instruction group so as to be executed in the predetermined order, in place of the confidential process instruction group, generates dummy block as dummy of the process instructions, and inserts the dummy block and control instruction, which causes the dummy block to be bypassed, into the original program, and inserts branch instruction into the dummy block.