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

Claim 8:
9. A method for protecting a cryptographic program implemented in a 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 method comprises:
compiling said cryptographic program, which provides an intermediate representation of said cryptographic program comprising instructions and variables used to execute said instructions;
determining 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, each edge of said graph representing a variable of said intermediary representation;
determining a masked graph of dependencies by replacing each variable in the graph of dependencies with a masked variable determined 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 one or more processors are 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;
determining at least a set of independent instructions using sad masked graph of dependencies, independent instructions in the set of independent instructions being not linked by edges in the masked graph of dependencies;
determining an execution order for each set of independent instructions from said initial execution order, said execution order representing the execution order of said set of independent instructions by at least one of sad one or more processors, and execution order being determined for each set of independent instructions by applying a random permutation to the initial execution order of the independent instructions; and
the method providing a protected cryptographic program being represented by the masked graph of dependencies and said determined execution order of the independent instructions, the method compiling said protected cryptographic program to produce a protected executable program code.