Software Code Obfuscation via Lookup Table Conversion
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
2Reliability
If code obfuscation techniques are applied to resist reverse engineering, then security is improved, but the code size and execution complexity increase
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.
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.
Data Source
Figure 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.