Instruction Encoding Permutation for Embedded Code Protection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Embedded devices are susceptible to reverse engineering and unauthorized code extraction due to standardized instruction set encodings, which can lead to vulnerabilities and unauthorized code transfer.

Innovation Solution

Implement secret permutations of instruction encodings in embedded devices, using a key to decode the binary executable into the correct instructions, thereby obfuscating the instruction set and creating a hardware binding that prevents unauthorized execution.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If standardized instruction set encodings are used in embedded devices, then ease of manufacture and compatibility are improved, but security against reverse engineering and unauthorized code extraction deteriorates

Engineering Contradiction:
Improveease of manufactureVSAvoidreverse engineering vulnerability
Core Design Contradiction:
Ease of manufactureVSObject-affected harmful factors

Solution Approach 1:

The patent applies parameter changes by modifying the binary encoding parameters of instruction sets. Each embedded device is configured with a unique permutation of binary encodings for instructions, operands, and instructions/operands combinations. This changes the encoding parameters from standardized to device-specific, making reverse engineering difficult while maintaining ease of manufacture through systematic permutation application.

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

The patent implements local quality by making each embedded device have its own unique local encoding characteristics. The binary encoding permutation is specific to each device, creating localized encoding quality that differs from device to device. This ensures that code extracted from one device cannot be executed on another, providing security through localized encoding properties.

Inventive Principle:
Principle #3Local quality

2Object-affected harmful factors

If secret permutations of instruction encodings are implemented, then security against reverse engineering is improved, but device complexity increases

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

Solution Approach 1:

The patent applies preliminary action by pre-configuring each embedded device with a unique binary encoding permutation during manufacturing or initialization. The permutation is established in advance before any code execution occurs, allowing the device to naturally execute protected code without requiring complex real-time transformation logic. This reduces operational complexity while maintaining security.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent uses copying by creating permuted copies of standard binary encodings. Instead of implementing complex decryption mechanisms, the system creates simplified copied versions of instruction encodings that are transformed according to the device's unique permutation. This copying approach reduces device complexity compared to full decryption implementations.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS12476810B2Diversification of instruction set encodings to protect software
Publication Date: 2025.11.18 NXP BV
  • US12476810B2 patent drawing
  • US12476810B2 patent drawing
  • US12476810B2 patent drawing

AI summary

Software programs and firmware of an embedded device can be protected against lifting, copying, disassembly, and malware attacks by obfuscating the standard binary encodings of instructions in an instruction set that is understood by the processor(s) of the embedded device. The obfuscation is performed by using a key stored in the embedded device to generate a set of substitute binary encodings for the instructions based on one of a plurality of possible permutations of the standard binary encodings; a binary executable compiled from the software program code is re-encoded using the substitute encodings to produce a substitute “permuted” executable that is stored in memory of the embedded device. A permutation decoding unit in the embedded device obtains the permuted executable from memory, decodes each instruction back into its standard binary encoding using the key, and delivers the standard-encoded instruction to the embedded device's decoder circuit for execution.