Dynamic Address Generation for Software Integrity

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for protecting software against attacks, such as static program analysis, are inadequate in ensuring the integrity and secure execution of software, particularly in preventing unauthorized access and modification.

Innovation Solution

A method where a computer executes security modules and an item of software sends a request to an address system for the address of instructions for a predetermined function, with the address system generating the address based on verification data from the security modules, enhancing security by making static program analysis more difficult.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If static program analysis is used to protect software, then security against attacks is improved, but the complexity of the system increases

Engineering Contradiction:
Improvesecurity against attacksVSAvoidsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent introduces an address system as an intermediary component between the software and the execution environment. This address system receives function identifiers from the software, verifies them against a database of authorized functions, and returns corresponding memory addresses. This mediator approach strengthens security by adding a verification layer without requiring the entire software system to become significantly more complex, as the address system handles the security checks centrally.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If verification data from security modules is required for address generation, then software integrity is improved, but the execution time increases

Engineering Contradiction:
Improvesoftware integrityVSAvoidexecution time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent implements preliminary action by pre-storing verified function addresses and their corresponding identifiers in a database within the address system. During software execution, the system retrieves the required address by looking up the function identifier in this pre-organized database, rather than performing verification calculations in real-time. This significantly reduces execution time while maintaining integrity, as the heavy verification work is done beforehand during system initialization or function registration.

Inventive Principle:
Principle #10Preliminary action

3Object-affected harmful factors

If dynamic address generation based on verification data is implemented, then protection against static program analysis is improved, but the difficulty of detecting and measuring execution paths increases

Engineering Contradiction:
Improveprotection against static program analysisVSAvoidexecution path detection
Core Design Contradiction:
Object-affected harmful factorsVSDifficulty of detecting and measuring

Solution Approach 1:

The patent applies dynamics by making the execution address dynamic rather than fixed. Instead of using static memory addresses that can be easily analyzed and predicted, the system generates addresses dynamically based on verified function identifiers and current execution context. This dynamic address generation prevents static program analysis from effectively mapping the software execution paths, as the addresses change based on runtime verification results, while still maintaining measurable and detectable execution flow through the address system's controlled address resolution process.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS12282529B2Protecting an item of software
Publication Date: 2025.04.22 IRDETO BV
  • US12282529B2 patent drawing
  • US12282529B2 patent drawing
  • US12282529B2 patent drawing

AI summary

A method for a computer to execute an item of software including, the software including one or more security modules. At at least one point during execution of the item of software at which a predetermined function is to be performed, a request is sent to an address system for carrying out the predetermined function, the request including an identifier of the predetermined function. In response to the request, an address generated by the address system based, at least in part, on (a) the identifier and (b) verification data provided to the address system from at least one of the one or more security modules is received from the address system. The address is based, at least in part, on the identifier and verification data provided to the address system from at least one of the security modules. Execution of the item of software is then continued at the address received from the address system.