Partial Loop Unrolling for Secure Software Code Size

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods for protecting sensitive data in software loops, such as those using RSA or ECC algorithms, face challenges in balancing code size increase with the ability to modify driving values, as fully unrolled loops are space-inefficient and rolled loops are unsafe, limiting flexibility and security.

Innovation Solution

The method involves partial unrolling of loops into equivalent sequences of operations, allowing dynamic execution of driving values by selecting from pre-computed parts, optimizing code size and enabling updates, while maintaining security through distributed handling of sensitive data.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If loops are fully unrolled to protect sensitive data, then security is improved, but code size increases significantly

Engineering Contradiction:
ImprovesecurityVSAvoidcode size
Core Design Contradiction:
ReliabilityVSVolume of stationary object

Solution Approach 1:

The patent divides the driving value into multiple parts, where each part controls a segment of the unrolled loop. This segmentation allows the code to handle sensitive data securely through unrolling while only storing a portion of the driving value in the code, significantly reducing code size compared to full unrolling.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a new dimension by using multiple driving value parts (first part, second part, etc.) to control different segments of the unrolled loop. Instead of using a single driving value that would require full unrolling, the multi-part approach enables selective unrolling while maintaining security, effectively adding a dimensional structure to the control flow.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Reliability

If loops are fully unrolled to prevent data leakage, then security is improved, but flexibility to modify driving values is lost

Engineering Contradiction:
ImprovesecurityVSAvoidflexibility
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

By segmenting the driving value into multiple parts, the patent enables flexible modification of individual parts without affecting the entire driving value. Each part can be independently updated or modified, maintaining flexibility while the unrolled structure preserves security.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent makes the system dynamic by allowing the driving value parts to be modified at runtime. The unrolled loop structure is prepared in advance, but the actual driving value parts can be changed dynamically, combining the security benefits of unrolling with the flexibility of runtime modification.

Inventive Principle:
Principle #15Dynamics

3Volume of stationary object

If loops are used to maintain compact code, then code size is reduced, but security is compromised due to data leakage

Engineering Contradiction:
Improvecode sizeVSAvoidsecurity
Core Design Contradiction:
Volume of stationary objectVSReliability

Solution Approach 1:

The patent segments both the code structure and the driving value. The unrolled loop code is segmented into multiple computation units, each controlled by a part of the driving value. This segmentation allows the code to be compact (only storing parts of the driving value) while the unrolled structure prevents data leakage.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Instead of fully unrolling the loop (excessive action that increases code size), the patent applies partial unrolling where only sufficient segments are unrolled to achieve security. This partial action provides the necessary security protection while keeping code size manageable.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS11121852B2Partial unrolling for software security
Publication Date: 2021.09.14 THALES DIS FRANCE SA
  • US11121852B2 patent drawing
  • US11121852B2 patent drawing

AI summary

The present invention relates to a method to intrinsically protect a computer program having a driving value dedicated to handle sensitive data, said driving value comprising a plurality of N computation units to perform computations using sensitive data and susceptible to let sensitive data leak, each unit having V possible values, said method comprising a step of unrolling k parts of P units, with P>1 and P<N and N≥P*k, by rewriting them in an equivalent sequence of computations protecting the sensitive data, said unrolling step resulting in a plurality of V{circumflex over ( )}P possible parts of P units, said method further comprising the step of introducing, in the finally executed computer program, instructions to dynamically execute the driving value by selecting, at end of each executed part, the next part to be executed among the possible parts.