IP Library Granted Patent US 11,121,852
Granted Patent B2
US 11,121,852 · App. 16/306,340 · Granted Sep 14, 2021

Partial unrolling for software security

Inventor: Sylvain Leveque (Gemenos, FR)
Assignee: THALES DIS FRANCE SA
H04L9/002H04L9/302H04L9/3066H04L2209/16
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,121,852
App. No.
16/306,340
Granted
Sep 14, 2021
Kind
B2
Abstract

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.

Claims (30)

1. A method to protect a computer program stored in a computerized device against leakage of sensitive data by said computerized device wherein a plurality of N computation units are executed depending on a driving value (DV), the driving value (DV) being a sequence of condition values having a length of N units, each unit having V possible values, wherein V≥2, the driving value (DV) being dedicated to handle sensitive data, each of the plurality of N computation units comprising a code to perform computations using sensitive data and susceptible to let sensitive data leak, said method comprising:

setting parameters k i and P i for each i=1, 2, . . . n, where

n is the number of different lengths of parts,

k i is the number of parts having P i computation units,

P i ≠P i+1 , P i >1 and P i <N, and

N=k 1 ×P 1 + . . . +k i ×P i + . . . +k n ×P n− ;

unrolling (S 1 ) k 1 + . . . +k i + . . . +k n parts of computation units of said computer program stored in said computerized device, by rewriting the computations into a sequence of computations units protecting the sensitive data, said unrolling step (S 1 ) resulting in V P1 + . . . +V Pi + . . . V Pn possible parts of computation units;

executing by said computerized device, in an executable computer program, instructions corresponding to the V P1 + . . . +V Pi + . . . V Pn possible parts of computation units;

partitioning the driving value into k 1 + . . . +k i + . . . +k n parts of units, and during execution of the computer program by said computerized device, selecting (S 2 ) parts of computation units for execution among the V P1 + . . . +V Pi + . . . V Pn possible parts of computation units is executed according to values of the parts of partitioned driving value;

dynamically updating the driving value by modifying the partitioning thereof while respecting its initial unit order and keeping the parameters k i and P i unchanged and selecting parts of computation units for execution among the V P1 + . . . +V Pi + . . . V Pn possible parts of computation units according to the dynamically updated driving value by said computerized device.

2. The method according to claim 1 , wherein k i and P i for each i=1, n are chosen taking security and available space into account.

3. A non-transitory storage comprising:

a computer program product protected against leakage of sensitive data wherein a plurality of N computation units are executed depending on a driving value (DV), the driving value (DV) being a sequence of condition values having a length of N units, each unit having V possible values, wherein V≥2, the driving value (DV) being dedicated to handle sensitive data, each of the plurality of N computation units comprising a code to perform computations using sensitive data and susceptible to let sensitive data leak, the computer program product protected by:

instructions to:

set parameters k i and P i for each i=1, 2, . . . n, where

n is the number of different lengths of parts,

k i is the number of parts having P i computation units,

P i ≠P i+1 , P i >1 and P i <N, and

N=k 1 ×P 1 + . . . +k i ×Pi+ . . . +k n ×P n− ;

unroll (S 1 ) k 1 + . . . +k i + . . . +k n parts of computation units of said computer program, by rewriting the computations into a sequence of computation units protecting the sensitive data, said unrolling step (S 1 ) resulting in V P1 + . . . +V Pi + . . . V Pn possible parts of computation units;

instructions corresponding to the V P1 + . . . +V Pi + . . . V Pn possible parts of computation units;

instructions to partition the driving value into k 1 + . . . +k i + . . . +k n parts of units, and instructions to cause the computer program, during execution of the computer program, to select (S 2 ) parts of computation units for execution among the V P1 + . . . +V Pi + . . . V Pn possible parts of computation units is to be executed according to the parts of the partitioned driving value; and

instructions to dynamically update the driving value (DV) by modifying its parts while respecting its initial unit order and keeping ki and Pi unchanged and selecting parts of computation units for execution among the V P1+ . . . +V Pi + . . . V Pn possible parts of computation units is to be executed according to the dynamically updated driving value.

4. The non-transitory storage, according to claim 1 , wherein said computer program comprises unrolled parts and instructions to execute a driving value using the unrolled parts by selecting the branch containing the partially unrolled sequence of computation units corresponding to the value of the part and executing the selected sequence of computation units.

5. A method to protect a computer program stored in a computerized device against leakage of sensitive data by said computerized device wherein a plurality of N computation units are executed depending on a driving value (DV), the driving value (DV) being a sequence of condition values having N condition values, each condition value having V possible values, the driving value (DV) being dedicated to handle sensitive data, each of the plurality of N computation units comprising a code to perform computations using sensitive data and susceptible to let sensitive data leak, said method comprising:

unrolling a loop-case construct having V computation units of said computer program stored in said computerized device by rewriting the loop-case construct into parts that are combinations of computation units, each part having a length greater than one and less than N and wherein each part is one of a set of possible sequences of computation units having the same length as the corresponding each part, respectively;

executing by said computerized device, in a executable computer program, instructions corresponding to each possible combination of computation units of lengths corresponding to the lengths of the parts of the unrolled sequence;

partitioning the driving value into sub-sequences of condition values having lengths corresponding to the lengths of said computation unit sequences;

processing the partitioned driving value by, for each sub-sequence thereof, executing the corresponding computation unit combination in the executable computer program; and

dynamically updating the driving value by modifying the partitioning of the driving value into sub-sequences while respecting the original condition value sequence and processing the dynamically updated driving value by, for each sub-sequence thereof, executing the corresponding computation unit combination in the executable computer program by said computerized device.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2023
From: THALES DIS FRANCE SA
To: THALES DIS FRANCE SAS
Reel/Frame 064730/0307 →
CHANGE OF NAME Recorded Aug 10, 2021
From: GEMALTO SA
To: THALES DIS FRANCE SA
Reel/Frame 057154/0696 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2018
From: LEVEQUE, SYLVAIN
To: GEMALTO SA
Reel/Frame 047643/0047 →