Data Array Obfuscation via Entry Masking and Address Shuffling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for obfuscating data arrays in computer software are inefficient, particularly in non-secure environments, as they either lead to large memory misallocations or slow down processing speeds, and lack sufficient security diversification.

Innovation Solution

The proposed solution involves two methods: (1) masking data entries using affine or additive functions with a security parameter to obscure data, and (2) shuffling addresses to decouple logical and physical memory allocations, allowing for secure and efficient obfuscation without significant processing speed reduction.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If conventional obfuscation methods are applied to data arrays, then security is improved, but processing speed deteriorates

Engineering Contradiction:
ImprovesecurityVSAvoidprocessing speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent applies obfuscation transformations during the code compilation phase rather than during runtime execution. The obfuscator modifies the bytecode instructions to include transformed array access patterns, constant modifications, and control flow changes before the code is executed. This preliminary transformation ensures security is built into the code structure without adding runtime overhead, thus improving security while maintaining processing speed.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If array obfuscation transformations are applied, then security is improved, but code complexity increases

Engineering Contradiction:
ImprovesecurityVSAvoidcode complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent introduces an intermediary obfuscation tool that acts as a translator between the original source code and the final executable code. This tool automatically applies transformations such as array index modifications, constant substitutions, and control flow restructuring without requiring the original programmer to manually complexify the code. The intermediary handles the complexity management, providing security enhancements while keeping the original code structure intact and maintainable.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If data transformations are applied to obfuscate arrays, then security is improved, but memory allocation efficiency deteriorates

Engineering Contradiction:
ImprovesecurityVSAvoidmemory loss
Core Design Contradiction:
ReliabilityVSLoss of substance

Solution Approach 1:

The patent modifies array access parameters through obfuscation transformations that change indices, offsets, and dimensions without altering the underlying data storage requirements. The obfuscator transforms array access instructions to use modified indices and dimensions, but the actual array data structures remain in their original form in memory. This approach maintains memory allocation efficiency while providing security through transformed access patterns that are difficult to reverse engineer.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS8667301B2Obfuscating transformations on data array content and addresses
Publication Date: 2014.03.04 APPLE INC
  • US8667301B2 patent drawing
  • US8667301B2 patent drawing
  • US8667301B2 patent drawing

AI summary

In a first computer (digital) data obfuscation process, data which is conventionally arranged in a data structure called an array (e.g., a table) and conventionally stored in computer or computer device memory is obfuscated (masked) by logically or mathematically combining the data, entry-by-entry, with a masking value which is computed as a logical or mathematical function of the entry itself or its index in the array, modulo a security value. The complementary unmasking value is a pointer to the entry's address in the table modulo the security value. In a second computer (digital) data obfuscation process, the addresses (location designations) in memory of a data array are themselves obfuscated (masked) by partitioning the array into blocks of entries and shuffling the order of the data entries in each block by a predetermined algorithm, resulting in a shuffled array also differing from the original array in terms of its size (the total number of entries).