Flexible Software Library for Secure Platform-Independent Distribution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Traditional software libraries are vulnerable to reverse-engineering and tampering due to their static nature, which limits security and performance customization to the library creator, and are often platform-specific, requiring source-code distribution for portability, exposing proprietary information.

Innovation Solution

A flexible library model that generates multiple diverse instances of software modules by applying distinct security and optimization transformations to an abstracted intermediate representation, allowing end-users to select security and performance attributes, and encrypting proprietary information for distribution.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional software libraries are distributed as pre-compiled object-code modules, then source code protection is provided to some extent, but determined attackers can still reverse-engineer the executables

Engineering Contradiction:
Improvesource code protectionVSAvoidreverse-engineering vulnerability
Core Design Contradiction:
ReliabilityVSObject-affected harmful factors

Solution Approach 1:

The patent applies parameter changes by transforming the intermediate representation through various security transformations that modify code structure, control flow, and data representation. These transformations change the parameters of the software modules while maintaining functional equivalence, making reverse-engineering difficult while preserving source code protection

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

The patent segments the software library creation process into distinct phases: generating intermediate representation, applying security transformations, and producing diverse instances. This segmentation allows independent optimization of security features without affecting the core functionality, enabling better protection against reverse-engineering

Inventive Principle:
Principle #1Segmentation

2Ease of manufacture

If library creator statically determines security and performance attributes at library creation-time, then development simplicity is maintained, but end-user customization capability is limited

Engineering Contradiction:
Improvedevelopment simplicityVSAvoidend-user customization capability
Core Design Contradiction:
Ease of manufactureVSAdaptability or versatility

Solution Approach 1:

The patent introduces dynamics by allowing security and performance attributes to be determined at link-time rather than creation-time. The system dynamically selects and applies security transformations based on end-user requirements, enabling customization while maintaining ease of use through automated processes

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent applies preliminary action by generating an intermediate representation that preserves all necessary information for future transformations. This intermediate form allows end-users to apply different security and optimization transformations without requiring access to original source code, enabling customization while simplifying the overall development process

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If software libraries are made platform-independent through source-code distribution, then portability is improved, but proprietary information exposure increases

Engineering Contradiction:
Improveplatform independenceVSAvoidproprietary information exposure
Core Design Contradiction:
Adaptability or versatilityVSLoss of information

Solution Approach 1:

The patent introduces an intermediary - the intermediate representation - that serves as a platform-independent form between source code and compiled object code. This intermediary allows the library to be distributed in a protected form that can be transformed for different platforms without exposing proprietary source code, achieving both portability and information protection

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent creates multiple copies of the software modules in diverse instances from the same intermediate representation. These copies are platform-specific compilations that can be distributed without exposing the original source code, enabling platform independence while maintaining proprietary information confidentiality

Inventive Principle:
Principle #26Copying

4Object-affected harmful factors

If multiple diverse instances are generated by applying distinct security transformations, then resistance to reverse-engineering is enhanced, but library complexity increases

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

Solution Approach 1:

The patent applies universality by creating a single intermediate representation that can serve as the basis for multiple diverse instances with different security transformations. This universal intermediate form enables the generation of numerous platform-specific and security-configured versions without proportionally increasing the complexity of the core library structure

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentEP3812894B1A system and method for encapsulating and enabling protection through diverse variations in software libraries
Publication Date: 2024.02.07 IRDETO BV
  • EP3812894B1 patent drawingFigure 1
  • EP3812894B1 patent drawingFigure 2
  • EP3812894B1 patent drawingFigure 3~4

AI summary

A flexible software library in which the software modules are defined as an abstract intermediate representation. The flexible library allows security transformation and performance attribute selections to be made by the end-user, rather than the library creator. Furthermore, since the flexible library contains an abstract representation of the software modules, the library can also be provisioned to contain an arbitrary number of named instances, representing specific sets of values for security and performance decisions, along with the corresponding native object-code resulting from those decisions. This permits distribution of software modules in a completely platform-independent manner while avoiding the disclosure of proprietary information, such as source-files.