Allocation Table Security Module for Software IP Protection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In object-oriented programming languages, the protection of intellectual property in software programs is compromised due to the provision of intermediate code, which can be easily disassembled, allowing users to reconstruct or imitate data structures, thereby undermining the security of the original source code.

Innovation Solution

A device and method that utilize a security module with a restricted allocation table to manage subprogram calls, ensuring that access to the association between subprogram calls and subprograms is controlled, either through hardware or software, preventing direct access and allowing only authorized retrieval of subprogram data.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If intermediate code is provided for software distribution, then code portability and execution efficiency are improved, but intellectual property protection deteriorates because the code can be easily disassembled and reconstructed

Engineering Contradiction:
Improvecode execution efficiencyVSAvoidintellectual property protection
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent extracts the allocation table from the main program code and stores it separately in a data structure that is not easily accessible. The allocation table contains the mapping between virtual method calls and actual method implementations, and by separating it, the patent prevents reverse engineering of the complete program structure while maintaining execution efficiency.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent introduces an intermediary layer (the allocation table stored in a less accessible data structure) between the intermediate code and the actual method implementations. This intermediary prevents direct mapping and reverse engineering while allowing the virtual machine to efficiently resolve method calls during execution.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If virtual method tables are used for dynamic method binding, then object-oriented programming flexibility is improved, but code complexity increases due to additional data structures and lookup operations

Engineering Contradiction:
Improvedynamic method binding capabilityVSAvoiddata structure complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent extracts the allocation table from the traditional virtual method table structure and stores it separately. This reduces the complexity of the main code structure while maintaining the dynamic method binding capability. The separate storage allows the allocation table to be optimized independently without affecting the core program logic.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent applies local quality by storing the allocation table in a data structure with different access characteristics than the main program code. This allows the allocation table to be optimized for its specific purpose (method resolution) while the main program maintains its execution efficiency, creating localized optimizations without global complexity increases.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS7707631B2Device and method for processing a program code
Publication Date: 2010.04.27 INFINEON TECHNOLOGIES AG
  • US7707631B2 patent drawing
  • US7707631B2 patent drawing
  • US7707631B2 patent drawing

AI summary

A device for processing a program code with a plurality of subprogram calls, a subprogram corresponding to a subprogram call taking place by means of an allocation table, has a security module having the allocation table and a processor for using the program code. Access to the allocation table in the security module is restricted. The processor for using the program code is formed to retrieve, responsive to a request for subprogram data, using authorization information, subprogram data via the allocation table in the security module.