Software Code Obfuscation via Lookup Table Conversion

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing software encryption methods are vulnerable to reverse engineering and analysis, particularly in hostile environments where cryptographic keys can be extracted and accessed by attackers, as they were not designed to operate under observable and tampered conditions.

Innovation Solution

The method involves converting initial software code into a final executable code by creating a conversion table of equivalent instructions, randomly replacing initial instructions, and manipulating data lengths to complicate analysis, while embedding keys and using scrambled lookup tables to enhance security.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If standard cryptographic operations are used, then encryption and decryption functions are achieved, but the software is vulnerable to reverse engineering and key extraction in hostile environments

Engineering Contradiction:
ImprovesecurityVSAvoidcode complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent applies parameter changes by transforming the cryptographic implementation from standard operations to lookup table-based operations. The S-box and inverse S-box are replaced with pre-computed lookup tables, changing the operational parameters from mathematical computations to table lookups. This transformation increases code complexity but enhances security against reverse engineering in hostile environments by obscuring the actual cryptographic logic.

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

The patent segments the cryptographic algorithm into separate lookup tables (S-box lookup table and inverse S-box lookup table) rather than implementing them as unified mathematical functions. This segmentation allows each table to be independently optimized and protects the overall cryptographic structure by distributing the secret operations across multiple discrete data structures, making reverse engineering more difficult.

Inventive Principle:
Principle #1Segmentation

2Reliability

If code obfuscation techniques are applied to resist reverse engineering, then security is improved, but the code size and execution complexity increase

Engineering Contradiction:
Improveresistance to reverse engineeringVSAvoidcode structure complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent uses copying by creating lookup tables that contain pre-computed values of cryptographic operations. Instead of implementing the actual mathematical algorithms, the patent copies the input-output relationships into table format. This copying approach obscures the underlying cryptographic logic while maintaining functional equivalence, thereby resisting reverse engineering without requiring complex obfuscation techniques.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The patent changes the operational parameters from direct cryptographic computations to indirect table lookups. By transforming the implementation from algorithmic operations to data-driven operations, the code structure becomes less recognizable to reverse engineers while maintaining the same cryptographic functionality. This parameter change effectively increases resistance to reverse engineering.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentEP2398182B1A device and a method for generating software code
Publication Date: 2021.06.30 NAGRAVISION SA
  • EP2398182B1 patent drawingFigure 1~3

AI summary

The present invention relates to the domain of obfuscated software, in particular software for the use in encryption and decryption of electronically transmitted information. According to the present invention, it is proposed a method to generate final software code resistant to reverse engineering analysis from an initial software code, said initial software code executing a function formed by a plurality of blocks of instructions and transforming an input data to an output data, said final software code being executed by a processor being able to directly handle data of a maximum bit length M and having an instructions set, said method comprising the steps of: - building a conversion table comprising in one side one instruction and in the other side a plurality of equivalent instruction or set of instructions, - splitting the input data into a plurality of segments of random length, said segments having a length equal or smaller than the processor maximum bit length M, - for each instruction of a block of instructions, selecting pseudo-randomly an equivalent instruction or set of instructions from the conversion table so as to obtain an equivalent block of instructions, - appending the plurality of equivalent block of instructions to obtain the final software code.