Patent ID: 11924320
Assignee: SECURED-IC SAS
Field: Digital communication (Electrical engineering)
Classification: CPC H  G | IPC G  H

Claim 0:
1. A device adapted to protect a cryptographic program implemented in a cryptographic computing device, said cryptographic computing device comprising one or more processors, the cryptographic program comprising instructions and being associated with an initial execution order of the instructions, wherein the device comprises a compiler configured to compile sad cryptographic program, which provides an intermediate representation of said cryptographic program comprising instructions and variables used to execute said instructions, the device further comprising a processing unit configured to:
determine a graph of dependencies comprising nodes and edges and representing the dependencies between the variables and/or the instructions comprised in said intermediate representation, each node of said graph representing an instruction of said intermediary representation, and each edge of said graph representing a variable of said intermediary representation;
determine a masked graph of dependencies by replacing each variable of the graph of dependencies with a masked variable, the processing unit determining sad masked variable by applying a masking scheme to said variable, said masking scheme using mask values, which provides the masked graph of dependencies, the masked graph of dependencies comprising additional nodes representing values and/or instructions used for determining at least one masked variable and/or for generating or modifying the mask values used by the masking scheme to determine the masked variables, wherein the processing unit is configured to determine the masked graph of dependencies using a static analysis of the graph of dependencies without executing the cryptographic program and/or a symbolic execution of the graph of dependencies;
determine at least a set of independent instructions using said masked graph of dependencies, independent instructions in the set of independent instructions being not linked by edges in the masked graph of dependencies;
determine an execution order for each set of independent instructions from said initial execution order, said execution order representing the order of execution of said set of independent instructions by at least one of said one or more processors, said processing unit being configured to determine an execution order for each set of independent instructions by applying a random permutation to the initial execution order of the independent instructions; and
the device providing a protected cryptographic program being represented by the masked graph of dependencies and said determined execution order of the independent instructions, the device being configured to compile said protected cryptographic program to produce a protected executable program code.