Code Key Mixing for Copy Protection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional software-based cryptographic algorithms for copy protection are vulnerable to reverse engineering, as the software process and keys are stored separately, making them susceptible to hacking through techniques like single stepping or inserting breakpoints.

Innovation Solution

A method that generates code and mixes predefined data, such as keys, into the binary representation of the code, making them indistinct from each other, and uses an iterative process to combine and separate them, thereby obscuring the keys and making it difficult for hackers to obtain the cryptographic process or keys.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If software cryptographic algorithms are used for copy protection, then copy protection functionality is achieved, but the system becomes vulnerable to reverse engineering

Engineering Contradiction:
Improvecopy protection securityVSAvoidreverse engineering vulnerability
Core Design Contradiction:
ReliabilityVSObject-affected harmful factors

Solution Approach 1:

The patent merges the cryptographic code and key data into a single combined structure. The key data is embedded within the code binary representation, making them indistinct from each other. This combination prevents hackers from separately accessing the key data, as any modification to the code automatically changes the embedded key, thus resolving the vulnerability to reverse engineering while maintaining copy protection functionality

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent implements nesting by embedding the key data inside the code structure. The key data is hidden within the binary representation of the code, similar to a nested doll where one object is contained within another. This nesting makes it extremely difficult for hackers to extract the key data without executing the code, thereby enhancing security against reverse engineering

Inventive Principle:
Principle #7Nested doll (Nesting)

2Ease of operation

If keys are stored separately from software process, then key management is simplified, but security against hacking is reduced

Engineering Contradiction:
Improvekey managementVSAvoidsecurity against hacking
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The patent combines previously separate entities (code and key data) into a unified structure. By embedding the key data within the code binary, the system eliminates the need for separate key storage and management, while simultaneously enhancing security. Any attempt to access or modify the code directly impacts the embedded key, making separate key management attacks ineffective

Inventive Principle:
Principle #5Merging (Combining)

3Object-affected harmful factors

If code and keys are mixed together, then reverse engineering difficulty increases, but system complexity increases

Engineering Contradiction:
Improvereverse engineering difficultyVSAvoidsystem complexity
Core Design Contradiction:
Object-affected harmful factorsVSDevice complexity

Solution Approach 1:

The merging of code and key data is achieved through a systematic embedding process where key data is integrated into the binary representation of the code. This creates a unified structure that increases reverse engineering difficulty while maintaining manageable system complexity through automated processing and clear operational procedures

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS7783038B2Using code as keys for copy protection
Publication Date: 2010.08.24 AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LTD
  • US7783038B2 patent drawing
  • US7783038B2 patent drawing
  • US7783038B2 patent drawing

AI summary

A method for obscuring data and software including the steps of (A) generating code for performing a predefined operation using one or more sets of predefined data, (B) generating a first binary representation of the code and (C) mixing the one or more sets of predefined data into the binary representation of the code such that the one or more sets of predefined data and the code are substantially indistinct from each other.