IP Library Granted Patent US 11,250,110
Granted Patent B2
US 11,250,110 · App. 16/481,377 · Granted Feb 15, 2022

Method to secure a software code

Inventors: Eric Garreau (Meudon, FR); Sébastien Volpe (Meudon, FR); Peter Garba (Munich, DE)
Assignees: THALES DIS FRANCE SAS; THALES DIS CPL Deutschland GmbH
G06F21/125G06F21/14G06F2221/0724
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,250,110
App. No.
16/481,377
Granted
Feb 15, 2022
Kind
B2
Abstract

The present invention relates to a method of securing a compiled software code (SC) comprising computer code instructions organized in a plurality of basic blocks, said method generating a secure software code (SSC) and comprising the steps of: •determining (S 1 ) by a processor a portion of the software code to be protected, •inserting (S 2 ) by the processor in a selected basic block of the software code a first sequence of instructions which when executed at runtime: computes an integrity check value on said portion of the software code to be protected and computes an index value based on said computed integrity check value, •inserting (S 3 ) by the processor in the selected basic block of the software code an indexed array of memory addresses in which the address, when executing the secure software code, of a following basic block to be executed after the selected basic block is indexed by said index value, •inserting (S 4 ) by the processor at the end of the selected basic block of the software code a jump instruction to the address indexed in the array by said index value computed at runtime.

Claims (22)

1. A method of securing a compiled software code (SC) comprising computer code instructions organized in a plurality of basic blocks, said method generating a secure software code (SSC) and comprising the steps of:

determining (S 1 ) by a processor ( 21 ) a portion of the software code to be protected,

inserting (S 2 ) by the processor in a selected basic block of the software code a first sequence of instructions which when executed at runtime:

computes (E 1 ) an integrity check value on said portion of the software code to be protected,

computes (E 2 ) an index value based on said computed integrity check value,

inserting (S 3 ) by the processor in the selected basic block of the software code an indexed array of memory addresses in which the address, when executing the secure software code, of a following basic block to be executed after the selected basic block is indexed by said index value,

inserting (S 4 ) by the processor at the end of the selected basic block of the software code a jump instruction to the address indexed in the array by said index value computed at runtime,

wherein said integrity check value is computed on instructions of the secure software code between a start address and a stop address, and wherein said method further comprises a fifth securing step (S 5 ) performed when or after compiling and linking the secure software code and comprising

determining begin and end addresses in the software code of the beginning and end of a portion of the software code on which the integrity check value is to be computed,

computing said integrity check value and said index value based on said computed integrity check value,

and comprising a sixth securing step (S 6 ) performed when or after compiling and linking the secure software code and comprising:

setting said start and stop addresses to said begin and end addresses determined in the fifth securing step (S 5 ) wherein the start and stop addresses are used during the execution step in the computation of the integrity check value,

setting, in the array, the address of the following basic block at said index value computed in the fifth securing step.

2. The method of claim 1 wherein the portion of the software code to be protected is determined at random.

3. The method of claim 1 wherein the integrity check value is computed on said portion of the software code to be protected and on at least a part of the selected basic block.

4. The method of claim 1 wherein the first sequence of instructions comprises a second sequence of instructions which, when executed at runtime, computes said integrity check value by performing one or more operations among a checksum, a mask, a hash function, a binary shifting and arithmetic operations.

5. The method of claim 4 wherein said second sequence of instructions is selected at random in a set of predetermined sequences of instructions computing integrity check functions.

6. The method of claim 1 wherein the first sequence of instructions comprises a third sequence of instructions which, when executed at runtime, applies a transformation function to said computed integrity check value to compute said index value, said transformation function comprising one or more operations among a checksum, a mask, a hash function, a binary shifting and arithmetic operations.

7. The method of claim 6 wherein the transformation function is selected at random in a set of predetermined transformation functions.

8. The method of claim 1 wherein addresses in the array are addresses of basic blocks of the secure software code when the secure software code is executed.

9. The method of claim 1 wherein the array and the first sequence of instructions are inserted at a random location in the selected basic block of the software code.

10. The method of claim 1 wherein the first sequence of instructions is inserted at the end of the selected basic block before the inserted jump instruction.

Assignments (3)
CHANGE OF NAME Recorded Mar 2, 2022
From: SFNT GERMANY GMBH
To: THALES DIS CPL DEUTSCHLAND GMBH
Reel/Frame 059303/0881 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2020
From: GARREAU, ERIC; VOLPE, SÉBASTIEN
To: THALES DIS FRANCE SA
Reel/Frame 053365/0109 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2020
From: GARBA, PETER
To: SFNT GERMANY GMBH
Reel/Frame 053365/0316 →
Priority Claims (1)
EP 17153409 · Jan 26, 2017 · regional
Continuity (1)
Related Publication 20200004934A1 · Jan 2, 2020