EP3827549A1 - Procede d'execution d'une fonction, par un microprocesseur, securisee par desynchronisation temporelle - Google Patents

Procede d'execution d'une fonction, par un microprocesseur, securisee par desynchronisation temporelle

Info

Publication number
EP3827549A1
EP3827549A1 EP19756215.0A EP19756215A EP3827549A1 EP 3827549 A1 EP3827549 A1 EP 3827549A1 EP 19756215 A EP19756215 A EP 19756215A EP 3827549 A1 EP3827549 A1 EP 3827549A1
Authority
EP
European Patent Office
Prior art keywords
execution
instruction
delay
function
phase
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP19756215.0A
Other languages
German (de)
English (en)
Inventor
Nicolas BELLEVILLE
Damien Courousse
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Commissariat a lEnergie Atomique CEA
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Commissariat a lEnergie Atomique CEA, Commissariat a lEnergie Atomique et aux Energies Alternatives CEA filed Critical Commissariat a lEnergie Atomique CEA
Publication of EP3827549A1 publication Critical patent/EP3827549A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/004Countermeasures against attacks on cryptographic mechanisms for fault attacks

Definitions

  • the invention relates to a method of executing a function, by a microprocessor, secured by time desynchronization, as well as an information recording medium and an electronic calculator for the implementation of this method.
  • Temporal desynchronization is a principle used in software or hardware countermeasures to make more difficult the attempts at cryptanalysis of a function executed, for example, by a microprocessor of an embedded system. Subsequently, this executed function is called "secure function" because it is generally a function which executes operations which are the preferred target of an attacker such as, for example, an encryption or decryption function.
  • the cryptanalysis of a function consists in particular in studying the operation of this function to reveal secret information processed by this function, or to modify its operation. Attempts at cryptanalysis are conventionally called "attacks”.
  • Temporal desynchronization is, for example, effective in making attacks by auxiliary channels known by the English expression "Side Channel Attack” more difficult.
  • Auxiliary channel attacks bring together a wide variety of different possible attacks.
  • some of these attacks consist in measuring a physical quantity correlated to the operations executed by the microprocessor when it performs the secure function. This physical quantity can be the electrical consumption, the electromagnetic radiation of the microprocessor, the noise of the microprocessor, the execution time or others.
  • this attack is known by the acronym DPA ("Differential Power Analysis") or CPA ("Correlation Power Analysis").
  • fault injection attack Another known attack is for example the attack by fault injection or "fault attack”, known by the English expression “fault injection attack”.
  • This attack consists in causing a fault or a malfunction of the microprocessor at the particular moment when it executes a critical instruction of the secure function.
  • a critical instruction is, for example, a conditional branch instruction in order to cause unexpected operation of this secure function.
  • temporal desynchronization increases the difficulty for an attacker to target with the injection of a fault the moment when a particular instruction of the secure function is executed.
  • this ordinary time desynchronization phase comprising, before the execution by the microprocessor of each instruction l m of a group of instructions of the function, the carrying out of the following steps:
  • the problem with known methods is that the instructions of the secure function which are, for example, at the start of this function are less well protected than the following instructions and are therefore more vulnerable to attacks by auxiliary channels, because the inserted time delay accumulates on the wire instructions executed.
  • the instructions at the start of the secure function are those that are executed first. This is explained using the following simplified example in which, whatever the index m:
  • Figure 1 shows the statistical distribution SP i0 of the accumulation of the first delays after the introduction of the first ten delays.
  • This statistical distribution associates with each of the possible values of the accumulation of the first ten delays its probability of occurrence.
  • the possible values of the accumulations of the delays are represented on the abscissa and the probability of occurrence is represented on the ordinate.
  • the largest value, also called “maximum”, of the statistical distribution SPio is noted SPmaxio. After the insertion of the tenth first delay, the maximum SPmaxio is approximately equal to 0.25.
  • the tenth instruction of the secure function is executed one time in four at the same time.
  • Figure 1 shows on the same graph a statistical distribution SPi 00 of the cumulative first delays after the introduction of the first 100 delays.
  • the largest SPmaxioo value of the SPi 00 distribution is this time equal to 0.08.
  • the proposed law P m is constructed so that the statistical distribution SP m has the largest possible standard deviation and therefore is as flat as possible.
  • the proposed P m law is non-uniform.
  • the law P m is non-uniform that in the particular case where a single delay, drawn using this law P m , is introduced before the sequence of instructions to be protected, the robustness against an auxiliary channel attack of this instruction sequence is reduced.
  • this single delay be drawn with a uniform law and to use the law P m for all the other delays introduced elsewhere.
  • condition (1) depends on a statistical distribution SS k of the accumulation of delays already introduced before the execution of the instruction to be protected. However, these delays already introduced are all drawn using the law P m except possibly a delay which is drawn using the uniform law. Thus, to verify that condition (1) is satisfied or not by the set [1; 255], the distribution SS k and therefore the statistical distribution of the cumulative delay already introduced must be taken into account using the law P m .
  • the invention therefore aims to provide a method for executing a function, secured by more robust time synchronization against attacks and without it being necessary to modify the laws P m already implemented. It therefore relates to such an execution method according to claim 1.
  • the embodiments of this method may include one or more of the features of the dependent claims.
  • the invention also relates to an information recording medium, readable by an electronic computer, in which this information recording medium includes instructions for the execution of the method which is the subject of this application, when these instructions are executed by the electronic computer.
  • FIG. 1 is a graph representing statistical distributions of the accumulation of the first delays
  • FIG. 2 is a schematic illustration, along an axis, of the different times when instructions of a secure function are executed
  • FIG. 3 is a schematic illustration of the structure of a computing system capable of performing a secure function
  • FIGS. 4 to 6 are graphs representing different statistical distributions of cumulative delays useful for understanding the operating principle of time desynchronization implemented by the system of Figure 3;
  • FIG. 7 is a flow diagram of a method for executing a secure function implemented by the system of FIG. 3.
  • FIG. 2 represents a time axis 30 on which each graduation corresponds to an instant when an instruction l m of a secure function is executed.
  • the index “m” is the sequence number of the instruction compared to the other instructions of the secure function. This order number m is assigned by taking as a reference instruction of the secure function and progressing in a reference direction D ref .
  • the first instruction is the instruction U
  • the second instruction encountered is the instruction l 2 and so on until the last instruction of the function synchronized encountered while advancing in direction D ref .
  • the direction D ref can correspond to the direction in which the instructions l m are temporally executed one after the other by an electronic computer or to the reverse direction.
  • the order in which the instructions l m are executed may depend on the values of the variables processed by the secure function.
  • the value of the index m associated with an instruction executed can vary according to the values of the variables processed.
  • we consider that the values of the variables processed each time the secure function is executed are constant so that the value of the index m associated with a given instruction is always the same. If the values of the processed variables change and cause the order of instructions to be changed, this further increases the time desynchronization. Thereafter, unless otherwise indicated, terms such as "previous instruction”, “next instruction”, "before”, “after” are defined relative to the direction D ref .
  • the instruction preceding the instruction L is the instruction l mi .
  • first instruction of the secure function and “last instruction of the secure function” denote, respectively, the first and the last instruction of the secure function in the order in which these instructions are executed by an electronic computer. This first and this last instruction are noted, respectively, Deb and Der . These instructions l Deb and l Der are independent of the direction D ref .
  • the instruction L is typically an instruction which corresponds to an instant which could be chosen as a synchronization instant by an attacker who wishes to implement an attack by auxiliary channels. It is therefore a particular instruction of the secure function whose execution is easy to spot. Typically, this is the eb instruction or the b er instruction of the secure function.
  • the direction D ref goes from the instruction b eb to the instruction b er .
  • the direction D ref goes from the instruction b er to the instruction b eb .
  • Figure 2 is shown in the particular case where the instruction b is equal to the instruction b eb . To simplify the description, the embodiments described with reference to the figures are described in this particular case.
  • ti m The instant of execution, by the electronic computer, of the instruction l m is denoted ti m .
  • these times of execution are also noted, respectively, t ref , t deb and t der .
  • the secure function comprises one or more sequences Seq k of instructions.
  • a sequence Seq k is a group of one or more instructions l m systematically executed one after the other. Seq k sequences are disjoint from each other. Thus, an instruction l m which belongs to any Seq k sequence cannot also belong to another sequence of instructions.
  • the index k is the sequence number of the sequence Seq k with respect to the other instruction sequences of the secure function. This serial number is assigned by taking instruction b as the origin and progressing in the direction D ref . Thus, starting from instruction b and progressing in the direction D ref , the first sequence of instructions encountered is the sequence Seqi, the second sequence of instructions encountered is the sequence Seq 2 and so on.
  • first instruction of the sequence Seq k and “last instruction of the sequence Seq k ” denote, respectively, the first and the last instruction of the sequence Seq k in the direction D ref .
  • the instant of execution of the first instruction of the sequence Seq k is noted ts k .
  • each sequence Seq k is associated with a respective zone Z k for the introduction of a second delay.
  • Zone Z k has one or more instructions l m . It begins with an instruction noted l Zd, k and ends with an instruction noted l Zf, k .
  • the zone Z k systematically precedes, in the direction D ref , the sequence Seq k .
  • the instruction l zd, k is systematically located before, in the direction D ref , the first instruction of the sequence Seq k .
  • the instruction l zf, k is located after the instruction l zd, k in the direction D ref .
  • the instruction l zf, k is also located before, in the direction D ref , or confused with the first instruction of the sequence Seq k .
  • the zone Zi associated with the sequence Seqi is represented in the particular case where the instruction l zf, i is confused with the first instruction of the sequence Seqi.
  • FIG. 3 represents a calculation system 2 comprising in particular an electronic computer 4 capable of performing a secure function.
  • This system 2 also includes:
  • a clock 6 which gives rhythm to the operation of the components of the computer 4, and
  • the secure function is typically a function which manipulates and / or processes secret information during its execution.
  • the secure function is an encryption or decryption function.
  • the secret information often corresponds to an encryption or decryption key.
  • the secure function is an AES (“Advanced Encryption Standard”) encryption function.
  • the secure function comprises a succession of instructions which code the operations carried out by the computer 4 when it executes this secure function.
  • the computer 4 comprises:
  • microprocessor 10 capable of executing the instructions of the secure function
  • an input and output interface 14 allowing the computer 4 to exchange information with other electronic components of the system 2 such as for example a man-machine interface or a wireless transceiver or the like, and
  • the computer 4 is capable of producing temporal variability during each execution of the secure function. To this end, it comprises a module 18 for ordinary time desynchronization and a module 20 for enhanced time desynchronization.
  • the module 18 is for example a conventional time desynchronization module.
  • this is a hardware module capable of introducing a random delay before the execution of each instruction L of the secure function. Thereafter, the random delays introduced by the module 18 are called "first delays".
  • the first delay introduced before the instruction l m is introduced between the instants ti mi and ti m .
  • the first delays are introduced by varying the frequency of the clock 6.
  • the reader can refer to the following article: T. Guneysu and Al: “Generic side-channel countermeasures for recongurable devices, "Cryptography Hardware and Embedded Systems CHES 2011, Springer Berlin Heidelberg, 2011, pp. 33-48.
  • the module 18 randomly chooses a value of a first delay in a group Gi , m of ni , m possible values for this first delay.
  • the number ni , m is an integer greater than or equal to two.
  • the values of the group Gi , m are typically integer multiples of an elementary duration d e .
  • the different values of the group Gi , m are denoted jd e where:
  • - j is an integer between 0 and ni , m -l, and
  • the module 18 chooses each new value of the first delay in the group Gi , m by performing a random draw which checks a probability law P m .
  • the law P m associates with each value of the group Gi , m a probability of occurrence.
  • the law P m and the group Gi , m are for example the same whatever the values of the index m.
  • the module 20 reinforces the temporal desynchronization of the sequences Seq k of instructions.
  • the module 20 is capable of introducing before each instant ts k where the execution of the sequence Seq k begins an additional delay subsequently called "second delay".
  • this second delay is introduced between the instants ts ki and ts k .
  • this second delay is introduced into the zone Z k situated between the last instruction of the sequence Seq k _i and the first instruction of the sequence Seq k .
  • the instruction l Zf, k is chosen equal to the first instruction l m of the sequence Seq k . This zone Z k immediately precedes and is therefore contiguous to the sequence Seq k .
  • the instruction l zd , k is for example an instruction which calls a routine RI2d which triggers the introduction of the second delay before the execution of the instruction l Zf, k -
  • the instruction l zf, k is the instruction located at the return address of the routine RI2d.
  • the routine RI2d is executed by the microprocessor 10 before the execution of the first instruction of the sequence Seq k begins.
  • the module 20 randomly chooses a value of a second delay in a group G 2, k of n 2, k different values.
  • the number n 2, k is an integer greater than or equal to two.
  • the values contained in the group G 2, k are denoted x 0 , Xi. - i.
  • each value Xi is an integer multiple of the duration of e .
  • the module 20 uses a probability law S k which associates a probability of occurrence S k [xi] with each value x, of the group G 2, k . The sum of all these probabilities of occurrence S k [x] is equal to one.
  • a second delay whose duration is equal to the second delay x is introduced between the instants t zd, k and t zf, k where the instructions l zd, k and l zf, k are executed, respectively.
  • the RI2d routine includes instructions which, when executed by the microprocessor 10:
  • the random drawing of the integer q corresponds to the random choice of a value in the group G 2, k .
  • the values of group G 2, k each correspond to a respective number of useless instruction executions. More precisely, if we note d k the time necessary for the microprocessor 10 to execute an unnecessary instruction, then each value x is equal to qd k , where d k is for example itself an integer multiple of the duration of e .
  • the module 20 is associated with a memory in which is recorded for each sequence Seq k :
  • this information is saved in memory 12.
  • the law S k is practically equiprobable, that is to say that, whatever the value x ,, the probability S k [xi] is between 0.9 / n 2, k and l , l / n 2, k .
  • each law S k is equiprobable, that is to say that each probability S k [xi] is equal to l / n 2, k .
  • the values Xi of the group G 2, k prerecorded in the memory 12 verify the following condition (1):
  • - SS k is the statistical distribution of the possible values of the cumulation of the delays already introduced between the instants t ref and ts k ,
  • - p is a real number greater than or equal to 1.05 and, preferably, greater than or equal to 1.3 or 1.5 or 1.8 or 2.
  • the cumulative delays already introduced between the instants t ref and ts k include in particular:
  • this accumulation can also take into account any other delay than those introduced by the modules 18 and 20. By cons, this accumulation does not take into account the second delay chosen using the law S k .
  • the number p is a number chosen during the design of the law S k .
  • SEmaX k the maximum of a statistical distribution SE k .
  • the statistical distribution SE k is the statistical distribution of the accumulation of all the delays introduced between the instants and ts k .
  • the statistical distribution SE k is therefore identical to the statistical distribution SS k except that it also takes into account the second delay chosen using the law S k .
  • n 2 , k is equal to two so that the two values of the group G 2 , k are x 0 and Xi.
  • the value x 0 is zero and the value Xi is an integer multiple of the duration of e .
  • the value Xi is equal to 5d e .
  • the law S k is equiprobable and therefore the probabilities of occurrence of the values x 0 and Xi are both equal to 0.5.
  • FIG. 4 represents an example of distribution SS k for which the largest value SSmax k is approximately 0.25.
  • the distribution SS k is identical to the distribution SE k which would be obtained if the value of the second delay introduced before the sequence Seq k was systematically chosen equal to x 0 during each execution of the secure function.
  • the graph in FIG. 5 represents the statistical distribution SE k which would be obtained if the value of the second delay introduced before the sequence Seq k was systematically chosen equal to Xi during each execution of the secure function.
  • the distribution of Figure 5 is therefore identical to that of Figure 4 except that it is shifted to the right by the value Xi.
  • the graph in FIG. 6 represents the statistical distribution SE k which is obtained when there is a one in two chance that the value of the second delay introduced is either x 0 or Xi.
  • the distribution SE k is the weighted sum of the statistical distributions shown in Figures 4 and 5, where the weighting coefficients of each of these statistical distributions in Figures 4 and 5 are equal, respectively, to the probabilities of occurrence S k [x 0 ] and S k [xJ.
  • the weighting coefficient of the statistical distributions in Figures 4 and 5 is therefore 0.5.
  • condition (1) whatever the value of the index j, the probability of occurrence SE k Qd e ) is less than SSmax k / p.
  • the maximum SEmax k is therefore necessarily lower than the maximum SSmax k . Consequently, the introduction of the second delay reduces the value of the maximum SEmax k with respect to an embodiment where this second delay would never be introduced before the instant ts k . Consequently, as soon as the values Xi of the group G 2, k satisfy the condition (1), the temporal desynchronization of the sequence Seq k is improved by a configurable factor linked to the factor 1 / p.
  • the maximum SEmax k is two times smaller than the maximum SSmax k and this by introducing a second delay only equal on average to Xi / 2.
  • Condition (1) is expressed in the general case where:
  • condition (1) It is possible to determine a large number of sets of values x, which satisfy condition (1). However, among this large number of possible sets of x values, some are more advantageous than others. These sets of values Xi which are more advantageous than others satisfy additional conditions. For example, in this embodiment, the values of group G 2, k additionally satisfy the following condition (2):
  • SP k is the statistical distribution of the possible values of the accumulations of the first delays introduced between the instants t ref and ts k .
  • SPmax k is the maximum of the statistical distribution SP k .
  • the distribution SP k only takes account of the first delays introduced. Consequently, in particular, it does not take account of any second delays introduced before the instant ts ki .
  • the statistical distribution SP k is easier to determine than the distribution SS k .
  • the distribution SP k can be measured experimentally.
  • the secure function is executed repeatedly by a computer identical to the computer 4 except that it does not have a module 20. During each of these executions, the instant at which begins the execution of the sequence Seq k is recorded. From these records, the statistical distribution SP k is then constructed. It will be noted that the advantage of measuring the statistical distribution SP k is that it can be done without knowing the different laws P m used by the module 18.
  • the different laws P m used by the module 18 are known, then it is also possible to construct the statistical distribution SP k by calculation, which is simple and quick. Once the statistical distribution SP k has been constructed, its maximum SPmax k is also known.
  • the weighted average of the second delays introduced be as small as possible.
  • x 0 0.
  • the values Xi are between 0.9.lid e and l, llid e , where the number i is the smallest integer for which at least one of the following conditions (3) or (3 ') is satisfied:
  • Condition (3 ') is used if only the distribution SP k has been determined. Otherwise, preferably, condition (3) is used. Any set of values Xi which satisfies condition (3) or (3 ') also additionally satisfies condition (1). The sets of values Xi which verify condition (3 ') also additionally verify condition (2).
  • the group G 2, k be the same for T sequences Seq k different, where T is an integer greater than or equal to two.
  • the T sequences Seq k are the successive T sequences Seq k Seq k to Seq k + Ti .
  • the same set of values Xi must satisfy conditions (3) or (3 ') for k, k + 1 up to k + (Tl).
  • the values Xi are between 0.9.lid e and l, llid e , where the number i is the smallest integer for which at least one of the following conditions (4) or (4 ') is satisfied:
  • the method begins with a phase 40 of initialization.
  • This phase 40 begins with the identification of the sequences Seq k of instructions of the secure function which must be the subject of a reinforced temporal desynchronization. For this, there are many different ways to identify these sequences. However, below, certain directives are given which make it possible to optimize the implementation of the method described here.
  • a safety threshold Si , k below which the maximum SEmax k must be situated, is fixed.
  • this threshold Si , k is the same for all the sequences Seq k .
  • the threshold Si , k is chosen less than 0.2 or 0.1 and, preferably, less than 0.08 or 0.05 or 0.01.
  • the greater the cumulative amount of first delays introduced the more the value of the maximum SPrnax m decreases.
  • an index a + 1 corresponding to an instruction l a + i from which the maximum SPrnax m is less than the threshold Si , k without it being necessary for this to introduce second delays.
  • the instruction l a is the last instruction for which the following condition is satisfied: SPmax a > Si , k . It is therefore unnecessary to introduce second delays after the execution of the instruction l a .
  • the introduction of second delays after the execution of the instruction l a unnecessarily delays the execution of the secure function.
  • the education has been identified.
  • the distribution SP m of the accumulation of the first delays between instant t ref and instant ti m is determined by increasing the index m to the index a + 1.
  • the statistical distribution SP m is determined by measurement or by calculation if the laws P m are known.
  • the instruction l f of the secure function from which the introduction of second delays must be inhibited is then chosen between instruction l a and instruction l b . Consequently, the introduction of second delays ceases well before the instant t der and even though the introduction of first delays continues after the execution of the instruction l f , for example, until the instant t der .
  • the index b is here chosen between a and a + 100.
  • the first instructions of the secure function do not deal with secret information. There is therefore often an index below which the introduction of the second delay is also unnecessary. Seq k sequences are therefore located here between the instructions l d and l f . Between these instructions l d and l f , certain sequences of instructions can be more critical than others. Thus, advantageously, each sequence Seq k corresponds to one of these more critical instruction sequences. In this case, the instruction sequences Seq k are separated from each other by less critical instructions of the secure function. The moments of execution of these less critical instructions are desynchronized only by the introduction of first delays.
  • each sequence Seq k identified is associated with a zone Z k .
  • the instruction l zd, k is introduced into the code of the secure function between the last instruction of the sequence Seq ki and the first instruction of the sequence Seq k .
  • the instruction l zd, k is a call to the routine RI2d.
  • the instruction l zf, k is the instruction located at the return address of this routine RI2d.
  • a law S k is constructed so that following the introduction of the second delay, the maximum SEmax k is less than the threshold Si , k .
  • the different statistical distributions SS k or SP k associated with each sequence Seq k are determined either from measurements or by calculation if the laws P m are known and the distribution calculable. Thereafter, we place our in the particular case where these are the statistical distributions SP k that have been determined. However, everything described in this particular case also applies to the case where the distributions SS k are determined by simply replacing the expression "SP k " with the expression "SS k ".
  • the number n 2, k is taken equal to or greater than the upper part of the number p.
  • the upper part of a number is the smallest integer greater than or equal to this number.
  • the probability of occurrence S k [xi] associated with each of the values Xi of the group G 2, k is also chosen.
  • the law S k is equiprobable, that is to say that the law S k is a discrete uniform law.
  • the probability of occurrence S k [xi] of each value Xi is therefore equal to l / n 2, k .
  • the code of the secure function comprises an instruction l Zd, k which triggers the introduction of the second delay,
  • the memory 12 includes a group G 2, k of n 2, k values associated with this sequence Seq k , and
  • the memory 12 comprises a probability law S k associated with this sequence Seq k .
  • the system 2 can then proceed to a phase 42 of execution of the secure function.
  • the microprocessor 10 executes the instructions l m of the secure function one after the other.
  • phase 46 comprises, before the execution of each instruction l m , the execution of the following operations 48 and 50.
  • the module 18 randomly chooses, according to the law P m , a value of a first delay in the group Gi , m .
  • the module 18 introduces a first delay of duration equal to this first delay before the execution of the instruction L by the microprocessor 10.
  • This first delay is introduced between the instants ti mi and ti m .
  • the introduction of this first delay therefore has the effect of shifting the instant ti m with respect to the instant ti mi -
  • the module 20 performs a phase 60 of enhanced time desynchronization.
  • the execution of phase 60 is here only triggered in response to each loading or execution of an instruction l Zd, k .
  • the instruction l Zd, k is a call to the routine RI2d.
  • the execution of phase 60 is then systematically interrupted in response to the loading or the execution of the instruction l zf, k .
  • the module 20 performs the following operations.
  • the module 20 randomly chooses a value of the second delay in the group G 2, k , this choice being made according to the law S k .
  • the module 20 introduces a second delay of duration equal to the second delay, chosen during operation 62, before the loading or execution of the instruction l zf, k , c 'is to say here before the loading of the instruction which is at the return address of the routine RI2d.
  • the RI2d routine introduces this second delay by executing unnecessary instructions a certain number of times, for example.
  • polymorphic code can be used for this.
  • Polymorphic codes are well known. For example, the reader can consult the following articles on this subject:
  • a polymorphic code of a secure function is capable of performing the same operation, but by alternately executing different variants of the executable code.
  • Each of these variants produces the same result when executed by the microprocessor, but the code of each of these variants is different.
  • each of the variants executes a different number of instructions and / or different instructions.
  • the execution times of each of these variants by the microprocessor are therefore different from each other. Consequently, the fact of choosing a variant which takes longer to execute than another variant introduces a delay in the execution of the secure function.
  • the executable code of each of these variants can be prerecorded in a memory or be generated on the fly during a compilation phase prior to its execution.
  • the variant to be executed to carry out the operation is chosen randomly.
  • the variant to execute to perform the operation is chosen according to the value of the first or second delay.
  • a variant is chosen whose execution time is equal to the first or the second delay chosen randomly.
  • Another method for introducing a delay in the execution of a secure function is to interrupt its execution for a predetermined period of time, either by preempting the execution of the secure function by triggering an interrupt, either by inserting into the secure function code calls to independent routines whose execution time is variable.
  • the reader can consult the following article: J. -S. Coron et al. : "An efficient method for random delay generation in embedded software” Lecture Notes in Computer Science, vol. 5747 LNCS, pp. 156-170, 2009.
  • phase 46 of ordinary time desynchronization the introduction of the first delay is not necessarily carried out in the same way depending on whether, in parallel, phase 60 of enhanced time desynchronization is executed or not.
  • the first delay is introduced by modifying the frequency of the clock 6.
  • the first delay can be introduced by triggering the execution of a routine Rlld.
  • the first delay is chosen randomly using the law P k associated with the first instruction of the sequence Seq k .
  • the second delay is chosen randomly using the law S k . Then, the first and second delays thus chosen are added together to obtain a third delay.
  • a delay of a duration equal to the third delay is then introduced immediately before the instant ts k .
  • this delay can be introduced by executing a loop of useless instructions a number of times sufficient to delay the instant ts k with respect to the instant ts ki by a duration equal to the third delay.
  • the first delay since the first delay is introduced by the execution of the routine Rlld, it does not need to be introduced using the module 18 so that the module 18 can be temporarily deactivated.
  • the second delay need not be introduced immediately before the first instruction of the sequence Seq k .
  • the instruction l Zf, k can be located one or more instructions before the first instruction of the sequence Seq k .
  • the instruction l Zf, k can even be located before the first instruction of the Seq ki sequence, or even anywhere between the instructions and the first instruction of the Seq k sequence.
  • the second delay does not need to be introduced all at once.
  • the second delay is divided into several sub-periods, the sum of which is equal to the duration of the second delay. Then, each of these delay sub-periods is introduced during the execution of the secure function at respective different times situated between the times ts ki and ts k .
  • the instructions l zd , k and l zf , k are separated from each other by several intermediate instructions and these delay sub-periods are each introduced before a respective intermediate instruction.
  • this module comprises, for each sequence Seq k , identifiers prerecorded in its memory which allow it identify specific instructions of the secure function which precede the sequence Seq k .
  • These particular instructions identifiable by the module 20 correspond to the instructions l zd , k and l Zf, k .
  • the identifiers used are the addresses of the instructions l zd, k and l Zf, k .
  • the module 20 constantly compares the address of the instruction loaded by the microprocessor 10 with the prerecorded addresses of the instructions Iz dk - When the module 20 determines that the address of the instruction loaded by the microprocessor 10 corresponds to one of the prerecorded addresses of the instructions Iz dk then it executes operations 62 and 64. In the case where the address of the instruction loaded by the microprocessor 10 corresponds to the prerecorded address of an instruction l zf k , then the module 20 interrupts the execution of phase 60. If the introduction of the second delay is not yet complete at the time when the instruction l Zf, k is loaded or executed, then the second delay is introduced at this time there, all at once in step 64.
  • the distances between two successive values of the group G 2, k are not all the same.
  • the n 2, k values of the group G 2, k need not be uniformly distributed.
  • the group G 2, k contains the following three values 0, e id and e 4.id instead of the three values 0, e id and 2. i .de as described in the previous embodiments.
  • any two successive values of the group G 2, k is not equal to id e , but strictly greater than id e .
  • this distance is greater than or equal to l, lid e or 1.5. id e or 2.id e .
  • the group G 2, k does not have the value 0.
  • the group G 2, k includes only the values id e and 2.id e .
  • the T Seq k sequences which verify the condition (4) or (4 ') are not necessarily consecutive Seq k sequences but can be chosen arbitrarily from the set of Seq k sequences.
  • the condition (4) or (4 ') need not be satisfied.
  • the group G 2, k is generally different from the group G 2, k + i .
  • the maximum SPmax k or SSmax k varies according to the value of the index k.
  • the same sequence Seq k can be associated with several different laws S k denoted here S k, i , S k, 2 , S k, 3 and so on.
  • the laws S k, i , S k, 2 , S k, 3 all satisfy condition (1).
  • the laws S k, i , S k, 2 , S k, 3 are for example obtained for values different from the number p, denoted pi, p 2 and p 3 with for example, pi> 1.3, p 2 > Pi and p 3 > p 2 .
  • the value obtained for SEmax k is greater when the law S ki is used than when the law S k, 2 is used.
  • the module 20 selects from the different possible laws S kl , S k, 2 , S k, 3 the law to be used to randomly choose the value of the second delay. This selection is preferably made according to the context in which the secure function is executed. For example, the module 20 automatically selects the law S k to be used as a function of a required level of security which has previously been transmitted to it. The level of security required can be determined by the computer itself.
  • the computer 4 increases the security level which leads to selecting a law S k which further decreases the maximum SEmax k .
  • the selection of the security level can also be carried out according to the nature of the processing operations currently carried out by the computer 4.
  • the distribution SP k is used in place of the distribution SS k to construct the law S k .
  • the statistical distribution SS k is constructed and then used in turn to construct the law S k .
  • groups G 2, k of values which verify condition (1) without verifying condition (2) it is possible to construct groups G 2, k of values which verify condition (1) without verifying condition (2).
  • the statistical distribution SS k holds counts both the first and second delays already introduced before the execution of the sequence Seq k .
  • the statistical distribution SSi is equal to the statistical distribution SP zf, i because before time t zf, i no other second delay than that chosen according to the law Si has not yet been introduced.
  • the law P m used to choose the value of the first delay is not necessarily always the same for all the instructions l m .
  • the laws P m and P m + i can differ from each other by one or more of the following characteristics:
  • the law P m can also associate with one or more values of the group Gi , m , a probability of occurrence zero.
  • the law P m can associate a zero occurrence value with the zero value of the first delay.
  • this new value is systematically different from the zero value.
  • module 20 is not necessarily a software module executed by the same microprocessor as that which performs the secure function.
  • the module 20 is a software module executed by a security microprocessor capable of introducing the second delays during the execution of the function secured by the microprocessor 10.
  • the module 20 can also be in the form of a hardware module capable of executing phase 60.
  • the modules 18 and 20 are modules independent of the microprocessor 10, these modules can be implemented on the same safety microprocessor or in the same hardware module independent of the microprocessor 10.
  • the microprocessor 10 which performs the secure function is not necessarily a generic microprocessor equipped with an arithmetic unit and logical and able to execute a program stored in an external memory.
  • the microprocessor is a specific microprocessor only capable of performing the secure function.
  • such a specific microprocessor is a hardware module dedicated to the execution of this specific function which cannot be programmed to execute new functions other than those provided during design.
  • it may be a hardware module designed to perform the secure AES function.
  • the initialization phase 40 can be carried out by the computer 4 itself.
  • the microprocessor 10 executes the secure function several times and during each of these executions, only the phase 46 of ordinary time desynchronization is implemented.
  • the phase 60 of enhanced time desynchronization is not executed.
  • the secret information processed by the secure function is replaced by decoys.
  • the encryption keys are replaced by randomly drawn encryption keys.
  • repeated executions of the secure function during the initialization phase cannot leak this secret information.
  • the module 20 records the instant ts k when the execution of this sequence begins.
  • the module 20 constructs the statistical distribution SP k and therefore obtains the value of the maximum SPmax k . Then, the module 20 chooses the number n 2, k for example as previously described. In another embodiment, the number n 2, k can be chosen randomly from a limited group of integers.
  • the law S k [x] is systematically chosen equal to l / n 2, k . From this moment, the module 20 automatically determines a set of values Xi which satisfies condition (1) and in addition, possibly, condition (2), (3 ') and / or (4'). For this, it uses the distribution SP k which it determined automatically.
  • the law S k has been automatically constructed and is then recorded in the memory 12 associated with the sequence Seq k .
  • This memory 12 comprises beforehand the identifiers of the instructions l Zd, k and l Zf, k .
  • these instructions are, as in the embodiments previously described, respectively a call and return instruction of the routine RI2d.
  • the module 20 can also execute the initialization phase 40 at the same time as the execution phase 42. For example, as in the embodiment of the paragraph above, the module 20 constructs the statistical distribution SP k just before the execution of the sequence Seq k from knowledge of the laws P m and the sequence number m of the first instruction in the sequence Seq k . From this determined statistical distribution SP k , the module 20 constructs the law S k as previously described. In this case, the law S k is constructed between the instants ts ki and ts k .
  • the microprocessor also identifies the instruction l f from which the insertion of the second delays becomes unnecessary to satisfy the condition SEmax k ⁇ Si , k and can therefore be systematically inhibited. For example, to do this, the microprocessor proceeds as described in the main embodiment. In particular, the microprocessor identifies the last instruction l a , and therefore the instant t a , for which the following condition is satisfied: SPmax a > Si , k .
  • the statistical distribution SP m must be determined for different instants ti m , this determination is carried out either during the execution of an initialization phase 40 which precedes the execution of phase 42 or during the execution of an initialization phase 40 executed at the same time as phase 42.
  • the instructions l Zd, k and l Zf, k are automatically introduced into the code of the function secured by the computer 4 during phase 40.
  • the computer 4 distributes randomly or , on the contrary uniformly, these instructions l zd, k and l zf, k throughout the code of the secure function.
  • the sequences Seq k do not necessarily correspond to a sequence of critical instructions.
  • phase 60 is executed in response to a command received by the computer 4. In this case, as long as this command has not been received, even if the microprocessor 10 loads or executes an instruction l zd, k , phase 60 is not executed. On the other hand, after reception of this command, as soon as the microprocessor 10 loads or executes an instruction l zd, k , phase 60 is executed. For example, this command is sent and received by the computer 4 as soon as an attack attempt is detected. In another variant, this command comprises the law S k and the group G 2, k to be used to introduce, immediately in response, a second delay.
  • phase 60 can be triggered at any time and without waiting for an instruction l zd, k to be loaded or executed by the microprocessor 10.
  • the instructions l zd, k and lz f , k can be omitted.
  • phase 60 can be interrupted in response to a command received by the computer 4.
  • the module 20 determines, by calculation, the maximum SPmax zd, k of the statistical distribution SP zd, k . Then, it compares this maximum SPmax zd, k calculated with a prerecorded threshold top S h . If the maximum SPmax Zd , k calculated is greater than this threshold S h , then the module 20 triggers the execution of phase 60. Otherwise, the module 20 inhibits the execution of phase 60. This makes it possible to automatically adapt the instants of triggering of phase 60 to different secure functions capable of being executed by the same microprocessor 10.
  • phase 46 is not executed for the entire duration of the execution of the secure function.
  • phase 46 can be interrupted when the instructions being executed are not critical. Then, the execution of phase 46 can also be restarted if necessary.
  • phase 60 can continue to be executed during the period of time when phase 46 is interrupted. It is even possible to execute phase 60 only during the period of time when phase 46 is interrupted.
  • Steps 62 and 64 can be executed several times for the same sequence Seq k .
  • this allows each iteration of steps 62 and 64 to introduce before the execution of the sequence Seq k a second delay which divides by two the maximum SEmax k obtained after the previous iteration of steps 62 and 64 for this same sequence Seq k .
  • auxiliary channels Certain attacks by auxiliary channels are carried out taking as a reference instant the instant when the execution of the secure function ends. To make these attacks difficult, it is also necessary to minimize the maximum SEmax k in the case where the reference instant t ref is equal to the instant t der and the direction D ref goes from the instruction l Der to the instruction l Deb . In this case, the statistical distributions SS k or SP k are different from those constructed when the reference instant t ref is equal to the instant t deb . More generally, if it is suspected that a time when a particular instruction of the secure function is executed can be used as a reference time to implement an attack by auxiliary channels, then the methods described here can be implemented. implemented by choosing as instant t ref this instant where this particular instruction is executed.
  • the instant t ref can therefore be located between the instants t deb and t der .
  • several phases of enhanced temporal desynchronization similar to phase 60 can be executed in parallel. These different phases of enhanced temporal desynchronization then differ from one another only by the instant t ref chosen as the reference instant.
  • it is useful to execute in parallel with phase 60 an additional phase of enhanced temporal desynchronization for which the reference instant t ref has been chosen equal to t der . Indeed, this then makes it possible to protect the instructions located at the start of the secure function as well as those located at the end of the secure function.
  • Chapter 111.5 Other variants
  • the number of instructions contained in the sequence Seq k is for example equal to one.
  • the group of instructions of the secure function before each of which steps 48 and 50 are executed does not include all the instructions of the secure function, but only a limited number of these instructions l m .
  • this group includes only one instruction out of two for the secure function.
  • Inhibiting the execution of phase 60 after the execution of the instruction f allows to further reduce the execution time of the secure function.
  • Determining SPmax k and triggering phase 60 only if the maximum SPmax k crosses a predetermined threshold makes it possible to automatically adapt the instant of triggering of phase 60 to different secure functions capable of being executed by the same microprocessor 10.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

Ce procédé d'exécution d'une fonction sécurisée par désynchronisation temporelle comporte le choix aléatoire (62) d'une valeur d'un délai dans un groupe G2,k de n2,k valeurs possibles, ce choix aléatoire étant réalisé selon une loi Sk de probabilité, les valeurs du groupe G2,k vérifiant la condition suivante : où : - x0 à Xn2,k-1 sont les n2,k valeurs du groupes G2,k, - Sk[xI] est la probabilité d'occurrence associée à la valeur Xi par la loi Sk, - SSk est la distribution statistique des valeurs possibles du cumul des retards déjà introduits entre les instants tref et tsk, - tsk est l'instant où le microprocesseur exécute la première instruction d'une - tref est un instant de référence où le microprocesseur exécute une instruction particulière, - SSmaxk est la plus grande valeur de la distribution statistique SSk, et - p est un nombre réel supérieur à 1,3.

Description

PROCEDE D’EXECUTION D’UNE FONCTION, PAR UN MICROPROCESSEUR, SECURISEE PAR DESYNCHRONISATION TEMPORELLE
[001] L’invention concerne un procédé d’exécution d’une fonction, par un microprocesseur, sécurisée par désynchronisation temporelle, ainsi qu’un support d’enregistrement d’informations et un calculateur électronique pour la mise en œuvre de ce procédé.
[002] La désynchronisation temporelle est un principe employé dans des contre- mesures logicielles ou matérielles pour rendre plus difficiles les tentatives de cryptanalyse d’une fonction exécutée, par exemple, par un microprocesseur d’un système embarqué. Par la suite, cette fonction exécutée est appelée « fonction sécurisée » car il s’agit généralement d’une fonction qui exécute des opérations qui sont la cible privilégiée d’un attaquant comme, par exemple, une fonction de chiffrement ou de déchiffrement.
[003] La cryptanalyse d’une fonction consiste en particulier à étudier le fonctionnement de cette fonction pour révéler des informations secrètes traitées par cette fonction, ou modifier son fonctionnement. Les tentatives de cryptanalyse sont classiquement appelées « attaques ».
[004] La désynchronisation temporelle est, par exemple, efficace pour rendre plus difficiles les attaques par canaux auxiliaires connues sous l’expression anglaise « Side Channel Attack ». Les attaques par canaux auxiliaires regroupent une grande variété d’attaques différentes possibles. Par exemple, certaines de ces attaques consistent à mesurer une grandeur physique corrélée aux opérations exécutées par le microprocesseur lorsqu’il exécute la fonction sécurisée. Cette grandeur physique peut être la consommation électrique, le rayonnement électromagnétique du microprocesseur, le bruit du microprocesseur, le temps d’exécution ou autres. Dans le cas où la grandeur physique est la consommation électrique du microprocesseur, cette attaque est connue sous l’acronyme DPA («Differential Power Analysis») ou CPA (« Corrélation Power Analysis »). Ces attaques visent à corréler un événement extérieur, tel que la mesure d’une grandeur physique, à l’instant où une instruction particulière de la fonction sécurisée est exécutée. Les techniques de désynchronisation temporelle visent à rendre plus difficile l’établissement de cette corrélation entre des événements extérieurs et l’exécution de certaines instructions particulières.
[005] Une autre attaque connue est par exemple l’attaque par injection de fautes ou « attaque par fautes », connue sous l’expression anglaise « fault injection attack ». Cette attaque consiste à provoquer une faute ou un dysfonctionnement du microprocesseur au moment particulier où il exécute une instruction critique de la fonction sécurisée. Une instruction critique est, par exemple, une instruction de branchement conditionnel afin de provoquer un fonctionnement inattendu de cette fonction sécurisée. Dans le cadre de ces attaques, la désynchronisation temporelle augmente la difficulté pour un attaquant de cibler avec l’injection d’une faute l’instant où une instruction particulière de la fonction sécurisée est exécutée.
[006] Ces attaques ont en commun qu’il faut corréler un événement extérieur, tel qu’une mesure de la consommation électrique ou l’injection d’une faute, à l’instant où une instruction particulière de la fonction sécurisée est exécutée. Les techniques de désynchronisation temporelle visent à rendre plus difficile l’établissement de cette corrélation entre des événements extérieurs et l’exécution de certaines instructions particulières. À cet effet, il a déjà été proposé d’introduire un retard aléatoire avant l’exécution de chaque instruction de la fonction sécurisée. Ainsi des procédés connus d'exécution d'une fonction, par un microprocesseur, comportent :
- l’exécution, par le microprocesseur, des instructions de la fonction les unes après les autres, et en parallèle
- l’exécution d’une phase de désynchronisation temporelle ordinaire, cette phase de désynchronisation temporelle ordinaire comportant, avant l'exécution par le microprocesseur de chaque instruction lm d’un groupe d’instructions de la fonction, la réalisation des étapes suivantes :
1) le choix aléatoire d’une valeur d'un premier délai dans un groupe Gi,m de ni,m valeurs possibles pour ce premier délai, où ni,m est un entier supérieur ou égal à deux, chacune des ni,m valeurs possibles étant un multiple entier d'une durée élémentaire de, ce choix aléatoire étant réalisé selon une première loi Pm de probabilité qui associe une probabilité d’occurrence à chacune des valeurs possibles du groupe Gi,m, puis
2) l'introduction d'un premier retard égal au premier délai avant l'exécution de cette instruction de sorte que, par rapport à l'instant où débute l'exécution de la fonction, l'instant où débute l'exécution de cette instruction varie aléatoirement à chaque exécution de la fonction.
[007] Par exemple, un tel procédé est divulgué dans les articles suivants :
- J. S. Coron et Al : « Analysis and improvement of the random delay countermeasure of CHES 2009 », lecture note in computer science, volume 6225 LNCS, pages 95- 109, 2010. Par la suite, cet article est désigné par la référence « Coron2010 », et
- Olivier Benoit et Al : "Efficient Use of Random Delays", 14/06/2006, téléchargeable à partir de l'adresse internet suivante : eprint.iacr.org/2006/272.ps.
[008] Grâce à ces procédés connus, l’instant auquel s’exécute une instruction particulière d’une fonction sécurisée varie de façon aléatoire d’une exécution à l’autre de cette fonction sécurisée.
[009] Le problème avec les procédés connus est que les instructions de la fonction sécurisée qui se trouvent, par exemple, au début de cette fonction sont moins bien protégées que les instructions suivantes et sont donc plus vulnérables vis-à-vis des attaques par canaux auxiliaires, parce que le délai temporel inséré s’accumule au fil des instructions exécutées. Les instructions qui se trouvent au début de la fonction sécurisée sont celles qui sont exécutées en premier. Ceci est expliqué à l’aide de l’exemple simplifié suivant dans lequel, quel que soit l’indice m :
- ni,m— 2,
- de = 1 ,
- les deux valeurs contenues dans le groupe Gi,m sont 0 et 1,
- les probabilités Pm[0] et Pm[de] d’occurrences des valeurs, respectivement, 0 et de sont toutes les deux égales à 0,5, et
- un premier retard est introduit avant l’exécution de chaque instruction de la fonction sécurisée.
[0010] La figure 1 représente la distribution statistique SPi0 du cumul des premiers retards après l’introduction des dix premiers retards. Cette distribution statistique associe à chacune des valeurs possibles du cumul des dix premiers retards sa probabilité d’occurrence. Les valeurs possibles des cumuls des retards sont représentées en abscisse et la probabilité d’occurrence est représentée en ordonnée. La plus grande valeur, également appelée « maximum », de la distribution statistique SPio est notée SPmaxio. Après l’insertion du dixième premier retard, le maximum SPmaxio est environ égal à 0,25. Ainsi, la dixième instruction de la fonction sécurisée est exécutée une fois sur quatre au même instant.
[0011] La figure 1 représente sur le même graphe une distribution statistique SPi00 du cumul des premiers retards après l’introduction des 100 premiers retards. La plus grande valeur SPmaxioo de la distribution SPi00 est cette fois-ci égale à 0,08. Cela signifie que la centième instruction de la fonction sécurisée est approximativement exécutée une fois sur douze au même instant. Donc, la corrélation temporelle entre un événement extérieur et l’exécution de la centième instruction est plus difficile à établir que la corrélation temporelle entre un événement extérieur et l’exécution de la dixième instruction. Autrement dit, la centième instruction est mieux protégée contre les attaques par canaux auxiliaires que la dixième instruction.
[0012] Il est considéré aujourd’hui que la difficulté d’une attaque par canaux auxiliaires est d’autant plus grande que le maximum SPrnaxm de la distribution statistique SPm est petit, où l’indice m est le numéro d’ordre de l’instruction compté, par exemple, à partir de la première instruction lDeb de la fonction sécurisée. A ce sujet, le lecteur peut consulter l’article Coron2010.
[0013] Pour remédier à ce problème, il a déjà été proposé de modifier chaque loi Pm pour que les distributions statistiques SPm présentent des maximums SPrnaxm plus petits y compris pour les petites valeurs de l’indice m. Par exemple, c’est ce qui est proposé dans l’article Coron2010 ou d'Olivier Benoit précédemment cité.
[0014] En particulier, dans l'article d'Olivier Benoit, la loi Pm proposée est construite pour que la distribution statistique SPm présente le plus grand écart type possible et donc soit la plus plate possible. La loi Pm proposée est non-uniforme. Comme indiqué dans cet article, il résulte du fait que la loi Pm soit non-uniforme que dans le cas particulier où un seul retard, tiré à l'aide de cette loi Pm, est introduit avant la séquence d'instructions à protéger, la robustesse vis-à-vis d'une attaque par canaux auxiliaire de cette séquence d'instructions est réduite. Pour pallier à cet inconvénient, il est proposé, que dans ce cas particulier, cette unique retard soit tiré avec une loi uniforme et d'utiliser la loi Pm pour tous les autres retards introduits ailleurs. Dans l'article d'Olivier Benoit, le groupe de valeurs possibles dans lequel sont tirés les valeurs des retards introduits est l'ensemble [1; 255] Il est souligné que cet ensemble [1; 255] combiné avec la loi Pm ne satisfait pas la condition (1) décrite plus loin dans cette demande. En effet, la condition (1) dépend d'une distributions statistique SSk du cumul des retards déjà introduits avant l'exécution de l'instruction à protéger. Or ces retards déjà introduits sont tous tirés en utilisant la loi Pm sauf éventuellement un retard qui est tiré en utilisant la loi uniforme. Ainsi, pour vérifier que la condition (1) est satisfaite ou pas par l'ensemble [1; 255], il faut prendre en compte la distribution SS k et donc la distribution statistique du cumul des retards déjà introduits en utilisant la loi Pm. Des simulations réalisées par les inventeurs ont montré que, dans le cas du mode de réalisation présenté comme préféré par l'article d'Olivier Benoit (c'est-à-dire pour les valeurs suivantes des paramètres de la loi Pm : a=32, b=16, k=0,92), la condition (1) n'est pas satisfaite. D'autres simulations réalisées pour les valeurs numériques des paramètres a, b et k énoncées dans les tables 1 et 2 de l'article d'Oliver Benoit ont montré que la condition (1) n'est satisfaite par aucun des exemples numériques divulgués dans cet article. Cela provient du fait que la loi Pm a été construite pour obtenir une distribution statistique du cumul des retards introduits aussi plate que possible.
[0015] Par ailleurs, en pratique, il n’est parfois pas possible ou pas souhaitable de modifier les lois Pm.
[0016] L’invention vise donc à proposer un procédé d’exécution d’une fonction, sécurisée par désynchronisation temporelle plus robuste contre les attaques et sans qu’il soit pour cela nécessaire de modifier les lois Pm déjà implémentées. Elle a donc pour objet un tel procédé d'exécution conforme à la revendication 1.
[0017] Les modes réalisation de ce procédé peuvent comporter une ou plusieurs des caractéristiques des revendications dépendantes.
[0018] L’invention a également pour objet un support d’enregistrement d’informations, lisibles par un calculateur électronique, dans lequel ce support d’enregistrement d’informations comporte des instructions pour l’exécution du procédé objet de la présente demande, lorsque ces instructions sont exécutées par le calculateur électronique.
[0019] L’invention a également pour objet un calculateur électronique pour la mise en œuvre du procédé revendiqué. [0020] L’invention sera mieux comprise à la lecture de la description qui va suivre, donnée uniquement à titre d’exemple non limitatif, et faite en se référant aux dessins sur lesquels :
- la figure 1 est un graphe représentant des distributions statistiques du cumul des premiers délais,
- la figure 2 est une illustration schématique, le long d’un axe, des différents instants où des instructions d’une fonction sécurisée sont exécutées,
- la figure 3 est une illustration schématique de la structure d’un système de calcul apte à exécuter une fonction sécurisée ;
- les figures 4 à 6 sont des graphes représentant différentes distributions statistiques de cumul de délais utiles pour comprendre le principe de fonctionnement de la désynchronisation temporelle mise en œuvre par le système de la figure 3 ;
- la figure 7 est un organigramme d’un procédé d’exécution d’une fonction sécurisée mis en œuvre par le système de la figure 3.
[0021] Chapitre I : Terminologies et notations
[0022] Dans ces figures, les mêmes références numériques sont utilisées pour désigner les mêmes éléments. Dans la suite de cette description, les caractéristiques et fonctions bien connues de l’homme du métier ne sont pas décrites en détail.
[0023] La figure 2 est utilisée pour introduire différentes notations qui sont ensuite utilisées dans ce texte. La figure 2 représente un axe des temps 30 sur lequel chaque graduation correspond à un instant où est exécutée une instruction lm d’une fonction sécurisée. L’indice « m » est le numéro d’ordre de l’instruction par rapport aux autres instructions de la fonction sécurisée. Ce numéro d’ordre m est attribué en prenant comme origine une instruction de référence de la fonction sécurisée et en progressant dans une direction Dref de référence. Ainsi, en partant de l’instruction U et en allant dans la direction Dref, la première instruction est l’instruction U, la deuxième instruction rencontrée est l’instruction l2 et ainsi de suite jusqu’à la dernière instruction de la fonction synchronisée rencontrée en avançant dans la direction Dref. On notera que la direction Dref peut correspondre à la direction dans laquelle les instructions l m sont temporellement exécutées les unes après les autres par un calculateur électronique ou à la direction inverse. On notera aussi que l’ordre dans lequel les instructions lm sont exécutées peut dépendre des valeurs des variables traitées par la fonction sécurisée. Ainsi, la valeur de l’indice m associé à une instruction exécutée peut varier en fonction des valeurs des variables traitées. Par la suite, pour simplifier les explications et parce que cela correspond au pire des cas, on considère que les valeurs des variables traitées à chaque exécution de la fonction sécurisée sont constantes de sorte que la valeur de l’indice m associé à une instruction donnée est toujours le même. Dans le cas contraire où les valeurs des variables traitées changent et provoquent une modification de l’ordre d’exécution des instructions, cela augmente encore plus la désynchronisation temporelle. [0024] Par la suite, sauf indication contraire, les termes tels que « instruction précédente », « instruction suivante », « avant », « après » sont définis par rapport à la direction Dref. Ainsi, l’instruction précédant l’instruction L est l’instruction lm-i.
[0025] Les termes « première instruction de la fonction sécurisée » et « dernière instruction de la fonction sécurisée » désignent, respectivement, la première et la dernière instruction de la fonction sécurisée dans l’ordre où ces instructions sont exécutées par un calculateur électronique. Cette première et cette dernière instruction sont notées, respectivement, lDeb et lDer. Ces instructions lDeb et lDer sont indépendantes de la direction Dref.
[0026] L’instruction L est typiquement une instruction qui correspond à un instant qui pourrait être choisi comme un instant de synchronisation par un attaquant qui souhaite mettre en œuvre une attaque par canaux auxiliaires. Il s’agit donc d’une instruction particulière de la fonction sécurisée dont il est facile de repérer l’exécution. Typiquement, il s’agit de l’instruction eb ou de l’instruction ber de la fonction sécurisée.
[0027] Lorsque l’instruction b est la première instruction beb de la fonction sécurisée, alors la direction Dref va de l’instruction beb vers l’instruction ber. A l’inverse, lorsque l’instruction b est la dernière instruction ber de la fonction sécurisée, la direction Dref va de l’instruction ber vers l’instruction beb.
[0028] La figure 2 est représentée dans le cas particulier où l’instruction b est égale à l’instruction beb. Pour simplifier la description, les modes de réalisation décrits en référence aux figures sont décrits dans ce cas particulier.
[0029] L’instant d’exécution, par le calculateur électronique, de l’instruction lm est noté tim. Dans le cas particulier des instructions b, lDeb et ber, ces instants d’exécution sont également notés, respectivement, tref, tdeb et tder.
[0030] Enfin, la fonction sécurisée comporte une ou plusieurs séquences Seqk d’instructions. Une séquence Seqk est un groupe d’une ou plusieurs instructions lm systématiquement exécutées les unes après les autres. Les séquences Seqk sont disjointes les unes des autres. Ainsi, une instruction lm qui appartient à une séquence Seqk quelconque ne peut pas appartenir aussi à une autre séquence d’instructions.
[0031] De façon similaire à ce qui a été expliqué pour l’indice m, l’indice k est le numéro d’ordre de la séquence Seqk par rapport aux autres séquences d’instructions de la fonction sécurisée. Ce numéro d’ordre est attribué en prenant comme origine l’instruction b et en progressant dans la direction Dref. Ainsi en partant de l’instruction b et en progressant dans la direction Dref, la première séquence d’instructions rencontrée est la séquence Seqi, la deuxième séquence d’instructions rencontrée est la séquence Seq2 et ainsi de suite.
[0032] Les termes « première instruction de la séquence Seqk » et « dernière instruction de la séquence Seqk » désignent, respectivement, la première et la dernière instruction de la séquence Seqk dans la direction Dref. [0033] L’instant d’exécution de la première instruction de la séquence Seqk est noté tsk.
[0034] Ici, chaque séquence Seqk est associée à une zone Zk respective d’introduction d’un deuxième retard. La zone Zk comporte une ou plusieurs instructions lm. Elle débute par une instruction notée lZd,k et se termine par une instruction notée lZf,k. La zone Zk précède systématiquement, dans la direction Dref, la séquence Seqk. Ainsi, l’instruction lzd,k est systématiquement située avant, dans la direction Dref, la première instruction de la séquence Seqk. L’instruction lzf,k est située après l’instruction lzd,k dans la direction Dref. L’instruction lzf,k est également située avant, dans la direction Dref, ou confondue avec la première instruction de la séquence Seqk. Sur la figure 2 seule la zone Zi associée à la séquence Seqi est représentée dans le cas particulier où l’instruction lzf,i est confondue avec la première instruction de la séquence Seqi.
[0035] Chapitre II : Exemples de modes de réalisation
[0036] La figure 3 représente un système 2 de calcul comportant notamment un calculateur électronique 4 capable d’exécuter une fonction sécurisée. Ce système 2 comporte également :
- une horloge 6 qui rythme le fonctionnement des composants du calculateur 4, et
- une alimentation 8 qui fournit l’énergie nécessaire au fonctionnement du calculateur 4.
[0037] La fonction sécurisée est typiquement une fonction qui manipule et/ou traite des informations secrètes lors de son exécution. Par exemple, la fonction sécurisée est une fonction de chiffrement ou de déchiffrement. Dans le cas des fonctions de chiffrement ou de déchiffrement, l’information secrète correspond souvent à une clé de chiffrement ou de déchiffrement. Par exemple, ici, la fonction sécurisée est une fonction de chiffrement AES (« Advanced Encryption Standard »). La fonction sécurisée comporte une succession d’instructions qui code les opérations réalisées par le calculateur 4 lorsqu’il exécute cette fonction sécurisée.
[0038] De nombreuses architectures différentes sont possibles pour le calculateur 4. Ici, à titre d’illustration, le calculateur 4 comporte :
- un microprocesseur 10 capable d’exécuter les instructions de la fonction sécurisée,
- une mémoire 12 dans laquelle sont enregistrées les instructions de la fonction sécurisée à exécuter,
- une interface 14 d’entrée et de sortie permettant au calculateur 4 d’échanger des informations avec d’autres composants électroniques du système 2 comme par exemple une interface homme-machine ou un émetteur-récepteur sans fil ou autres, et
- un bus 16 qui permet aux différents éléments du calculateur 4 d’échanger des données à entre eux. [0039] Pour simplifier la figure 1, les autres composants du calculateur 4 n’ont pas été représentés.
[0040] Le calculateur 4 est capable de produire de la variabilité temporelle lors de chaque exécution de la fonction sécurisée. À cet effet, il comporte un module 18 de désynchronisation temporelle ordinaire et un module 20 de désynchronisation temporelle renforcée.
[0041] Le module 18 est par exemple un module conventionnel de désynchronisation temporelle. Par exemple, il s’agit ici d’un module matériel capable d’introduire un retard aléatoire avant l’exécution de chaque instruction L de la fonction sécurisée. Par la suite, les retards aléatoires introduits par le module 18 sont appelés « premiers retards ». Le premier retard introduit avant l’instruction lm est introduit entre les instants tim-i et tim. Par exemple, les premiers retards sont introduits en faisant varier la fréquence de l’horloge 6. À ce sujet, le lecteur peut se référer à l’article suivant : T. Guneysu and Al : « Generic side-channel countermeasures for recongurable devices," Cryptographie Hardware and Embedded Systems CHES 2011, Springer Berlin Heidelberg, 2011, pp. 33-48.
[0042] Pour cela, avant l’exécution de chaque instruction lm, le module 18 choisit aléatoirement une valeur d’un premier délai dans un groupe Gi,m de ni,m valeurs possibles pour ce premier délai. Le nombre ni,m est un entier supérieur ou égal à deux. Les valeurs du groupe Gi,m sont typiquement des multiples entiers d’une durée élémentaire de. Dans le cas particulier décrit ici, les différentes valeurs du groupe Gi,m sont notés j.de où :
- j est un entier compris entre 0 et ni,m-l, et
- le symbole « . » désigne, dans l’ensemble de ce texte, l’opération de multiplication.
[0043] Le module 18 choisit chaque nouvelle valeur du premier délai dans le groupe Gi,m en réalisant un tirage aléatoire qui vérifie une loi de probabilité Pm. La loi Pm associe à chaque valeur du groupe Gi,m une probabilité d’occurrence. Ici, la loi Pm et le groupe Gi,m sont par exemple les mêmes quelles que soient les valeurs de l’indice m.
[0044] Le module 20 renforce la désynchronisation temporelle des séquences Seqk d’instructions. Pour cela, par exemple, indépendamment du fonctionnement du module 18, le module 20 est capable d’introduire avant chaque instant tsk où débute l’exécution de la séquence Seqk un retard supplémentaire appelé par la suite « deuxième retard ». Généralement, ce deuxième retard est introduit entre les instants tsk-i et tsk. Ici, ce deuxième retard est introduit dans la zone Zk située entre la dernière instruction de la séquence Seqk_i et la première instruction de la séquence Seqk. Ici, l’instruction lZf,k est choisie égale à la première instruction lm de la séquence Seqk. Cette zone Zk précède immédiatement et est donc contiguë à la séquence Seqk.
[0045] Dans le cas d’une implémentation logicielle du module 20, l’instruction l zd,k est par exemple une instruction qui appelle une routine RI2d qui déclenche l’introduction du deuxième retard avant l’exécution de l’instruction lZf,k- Dans ce cas, typiquement, l’instruction lzf,k est l’instruction située à l’adresse de retour de la routine RI2d. La routine RI2d est exécutée par le microprocesseur 10 avant que débute l’exécution de la première instruction de la séquence Seqk.
[0046] Pour introduire le deuxième retard, le module 20 choisit aléatoirement une valeur d’un deuxième délai dans un groupe G2,k de n2,k valeurs différentes. Le nombre n2,k est un nombre entier supérieur ou égal à deux. Par la suite, les valeurs contenues dans le groupe G2,k sont notés x0, Xi . - i. Typiquement, chaque valeur Xi est un multiple entier de la durée de. Pour réaliser ce choix aléatoire, le module 20 utilise une loi Sk de probabilité qui associe une probabilité d’occurrence Sk[xi] à chaque valeur x, du groupe G2,k. La somme de toutes ces probabilités d’occurrence Sk[x] est égale à un. Ensuite, un deuxième retard dont la durée est égale au deuxième délai x, est introduit entre les instants tzd,k et tzf,k où sont exécutées, respectivement, les instructions lzd,k et lzf,k.
[0047] A titre d’illustration, la routine RI2d comporte des instructions qui, lorsqu’elles sont exécutées par le microprocesseur 10 :
- tirent aléatoirement à l’aide de la loi Sk un nombre entier q dans un ensemble de n2,k nombres entiers différents, puis
- exécutent q instructions inutiles pour les traitements réalisés par la fonction sécurisée. Dans ce mode de réalisation, le tirage aléatoire de l’entier q correspond au choix aléatoire d’une valeur dans le groupe G2,k. Dans ce cas, les valeurs du groupe G2,k correspondent chacune à un nombre respectif d’exécutions d’instructions inutiles. Plus précisément, si on note dk le temps nécessaire pour que le microprocesseur 10 exécute une instruction inutile, alors chaque valeur x, est égale à q.dk, où dk est par exemple lui-même un multiple entier de la durée de.
[0048] Ici, le module 20 est associé à une mémoire dans laquelle est enregistrée pour chaque séquence Seqk :
- les différentes valeurs x, du groupe G2,k, et
- les probabilités d’occurrence Sk[xi] associées à chacune de ces valeurs du groupe G2,k.
[0049] Par exemple, à titre d’illustration, ces informations sont enregistrées dans la mémoire 12.
[0050] De préférence, la loi Sk est pratiquement équiprobable c’est-à-dire que, quelle que soit la valeur x,, la probabilité Sk[xi] est comprise entre 0,9/n2,k et l,l/n2,k. Dans ce mode de réalisation, chaque loi Sk est équiprobable c’est-à-dire que chaque probabilité Sk[xi] est égale à l/n2,k.
[0051] Pour accroître la désynchronisation temporelle de la séquence Seqk, les valeurs Xi du groupe G2,k préenregistrées dans la mémoire 12 vérifient la condition (1) suivante :
ou :
- SSk est la distribution statistique des valeurs possibles du cumul des retards déjà introduits entre les instants tref et tsk,
- SSmaXk est la plus grande valeur, également appelée « maximum », de la distribution statistique SSk,
- p est un nombre réel supérieur ou égal à 1,05 et, de préférence, supérieur ou égal à 1,3 ou 1,5 ou 1,8 ou 2.
[0052] Le cumul des retards déjà introduits entre les instants tref et tsk comprend notamment :
- le cumul des premiers retards introduits par le module 18 entre les instants tref et tsk,
- le cumul des deuxièmes retards introduits par le module 20 entre les instants tref et tSk-i.
[0053] On notera que ce cumul peut aussi tenir compte de tout autre retard que ceux introduits par les modules 18 et 20. Par contre, ce cumul ne tient pas compte du deuxième retard choisi en utilisant la loi Sk.
[0054] Le nombre p est un nombre choisi lors de la conception de la loi Sk. Plus ce nombre p est grand, plus le maximum SEmaxk est petit et donc plus la robustesse de la séquence Seqk vis-à-vis des attaques par canaux auxiliaires est grande. On note ici SEmaXk le maximum d’une distribution statistique SEk. La distribution statistique SEk est la distribution statistique du cumul de tous les retards introduits entre les instants et tsk. La distribution statistique SEk est donc identique à la distribution statistique SSk sauf qu’elle tient compte en plus du deuxième retard choisi en utilisant la loi Sk.
[0055] La raison pour laquelle le fait de satisfaire la condition (1) permet de réduire le maximum SEmaxk est expliquée maintenant en référence aux figures 4 à 6. Les axes des graphes des figures 4 à 6 sont les mêmes que ceux décrits pour la figure 1.
[0056] Ces explications sont données dans le cas particulier où n 2,k est égal à deux de sorte que les deux valeurs du groupe G 2,k sont x0 et Xi. De plus ici, la valeur x0 est nulle et la valeur Xi est un multiple entier de la durée de. Par exemple, la valeur Xi est égale à 5de. La loi Sk est équiprobable et donc les probabilités d’occurrence des valeurs x0 et Xi sont toutes les deux égales à 0,5.
[0057] La figure 4 représente un exemple de distribution SSk pour laquelle la plus grande valeur SSmaxk est d’environ 0,25. La distribution SSk est identique à la distribution SEk qui serait obtenue si la valeur du deuxième retard introduit avant la séquence Seqk était systématiquement choisie égale à x0 lors de chaque exécution de la fonction sécurisée. [0058] Le graphe de la figure 5 représente la distribution statistique SEk qui serait obtenue si la valeur du deuxième retard introduit avant la séquence Seqk était systématiquement choisie égale à Xi lors de chaque exécution de la fonction sécurisée. La distribution de la figure 5 est donc identique à celle de la figure 4 sauf qu’elle est décalée vers la droite de la valeur Xi.
[0059] Le graphe de la figure 6 représente la distribution statistique SEk qui est obtenue lorsqu’il y a une chance sur deux que la valeur du deuxième retard introduit soit x0 ou Xi. On remarque que la distribution SEk est la somme pondérée des distributions statistiques représentées sur les figures 4 et 5, où les coefficients de pondération de chacune de ces distributions statistiques des figures 4 et 5 sont égaux, respectivement, aux probabilités d’occurrence Sk[x0] et Sk[xJ. Dans le cas particulier décrit ici, le coefficient de pondération des distributions statistiques des figures 4 et 5 est donc de 0,5. Autrement dit, à chaque valeur possible j.de du cumul des retards introduits, la distribution statistique SEk associe la probabilité d’occurrence suivante : SEk(j.de) = Sk[x0].SSkQ.de + Xo) + Sk[Xi].SSk(j.de + Xi).
[0060] Par conséquent, si la condition (1) est vérifiée, quelle que soit la valeur de l’indice j, la probabilité d’occurrence SEkQ.de) est inférieure à SSmaxk/p. Le maximum SEmaxk est donc nécessairement inférieur au maximum SSmaxk. Dès lors, l’introduction du deuxième retard réduit la valeur du maximum SEmaxk par rapport à un mode de réalisation où ce deuxième retard ne serait jamais introduit avant l’instant tsk. Par conséquent, dès que les valeurs Xi du groupe G2,k satisfont la condition (1), la désynchronisation temporelle de la séquence Seqk est améliorée d’un facteur configurable lié au facteur 1/p. Dans le cas particulier des explications ci-dessus, le maximum SEmaxk est deux fois plus petit que le maximum SSmaxk et cela en introduisant un deuxième retard seulement égal en moyenne à Xi/2.
[0061] La condition (1) est exprimée dans le cas général où :
- le nombre n2,k peut être supérieur ou égal à deux,
- les valeurs x, ne sont pas nécessairement des multiples entiers du délai dk, et
- la loi Sk n’est pas nécessairement équiprobable.
[0062] Il est possible de déterminer un grand nombre de jeux de valeurs x, qui satisfont la condition (1). Toutefois, parmi ce grand nombre de jeux de valeurs x, possibles, certains sont plus avantageux que d’autres. Ces jeux de valeurs Xi plus avantageux que d’autres satisfont des conditions supplémentaires. Par exemple, dans ce mode de réalisation, les valeurs du groupe G2,k satisfont en plus la condition (2) suivante :
ou :
SPk est la distribution statistique des valeurs possibles des cumuls des premiers retards introduits entre les instants tref et tsk, et
- SPmaxk est le maximum de la distribution statistique SPk.
[0063] Ainsi, contrairement à la distribution statistique SSk, la distribution SPk tient compte uniquement des premiers retards introduits. Par conséquent, notamment, elle ne tient pas compte d’éventuels deuxièmes retards introduits avant l’instant tsk-i.
[0064] Actuellement, il est considéré que si les valeurs du groupe G2,k satisfont à la condition (2) alors elles satisfont aussi nécessairement à la condition (1). La distribution statistique SPk est plus facile à déterminer que la distribution SSk. Par exemple, la distribution SPk peut être mesurée expérimentalement. Pour cela, lors d’une phase d’initialisation, la fonction sécurisée est exécutée à de multiples reprises par un calculateur identique au calculateur 4 sauf qu’il est dépourvu de module 20. Lors de chacune de ces exécutions, l’instant auquel débute l’exécution de la séquence Seqk est enregistré. À partir de ces enregistrements, la distribution statistique SPk est alors construite. On notera que l’avantage de mesurer la distribution statistique SPk est que cela peut être fait sans connaître les différentes lois Pm utilisées par le module 18.
[0065] Alternativement, si à l’inverse, les différentes lois Pm utilisées par le module 18 sont connues, alors il est aussi possible de construire la distribution statistique SPk par calcul, ce qui est simple et rapide. Une fois que la distribution statistique SPk a été construite, son maximum SPmaxk est également connu.
[0066] Par ailleurs, pour ne pas trop ralentir l’exécution de la fonction sécurisée, il est souhaitable que la moyenne pondérée des deuxièmes retards introduits soit aussi petite que possible. Pour cela, on impose ici que x0 = 0. De plus, quel que soit l’indice I supérieur ou égal à 1, on impose aussi que les valeurs Xi soient comprises entre 0,9.l.i.de et l,l.l.i.de, où le nombre i est le plus petit entier pour lequel au moins l’une des conditions (3) ou (3’) suivantes est satisfaite :
ou
[0067] La condition (3') est utilisée si seule la distribution SPk a été déterminée. Sinon, de préférence, c’est la condition (3) qui est utilisée. Tout jeu de valeurs Xi qui vérifie la condition (3) ou (3') vérifie également en plus la condition (1). Les jeux de valeurs Xi qui vérifient la condition (3') vérifient également en plus la condition (2).
[0068] Enfin, dans ce mode de réalisation, on impose en plus que le groupe G2,k soit le même pour T séquences Seqk différentes, où T est un entier supérieur ou égal à deux. Par exemple, les T séquences Seqk sont les T séquences Seqk successives Seqk à Seqk+T-i. Pour cela, le même jeu de valeurs Xi doit satisfaire les conditions (3) ou (3') pour k, k+1 jusqu’à k+(T-l). Autrement dit, dans ce mode de réalisation, quel que soit l’indice I supérieur ou égal à 1, on impose aussi que les valeurs Xi soient comprises entre 0,9.l.i.de et l,l.l.i.de, où le nombre i est le plus petit entier pour lequel au moins l’une des conditions (4) ou (4’) suivantes est satisfaite :
[0069] Le fonctionnement du système 2 va maintenant être décrit en référence à la figure 7.
[0070] Le procédé débute par une phase 40 d’initialisation. Cette phase 40 débute par l’identification des séquences Seqk d’instructions de la fonction sécurisée qui doivent faire l’objet d’une désynchronisation temporelle renforcée. Pour cela, il existe de nombreuses façons différentes d’identifier ces séquences. Toutefois, par la suite, on donne certaines directives qui permettent d’optimiser la mise en œuvre du procédé décrit ici. Par exemple, pour chaque séquence Seqk possible, un seuil Si,k de sécurité, en dessous duquel le maximum SEmaxk doit se situer, est fixé. A titre d’illustration, ici, ce seuil Si,k est le même pour toutes les séquences Seqk. Typiquement, le seuil Si,k est choisi inférieur à 0,2 ou 0,1 et, de préférence, inférieur à 0,08 ou à 0,05 ou à 0,01. [0071] Comme expliqué précédemment, plus la quantité cumulée de premiers retards introduits est importante, plus la valeur du maximum SPrnaxm diminue. Il existe donc un indice a+1 correspondant à une instruction la+i à partir duquel le maximum SPrnaxm est inférieur au seuil Si,k sans qu’il soit pour cela nécessaire d’introduire des deuxièmes retards. Autrement dit, l’instruction la est la dernière instruction pour laquelle la condition suivante est vérifiée : SPmaxa > Si,k. Il est donc inutile d’introduire des deuxièmes retards après l’exécution de l’instruction la. L’introduction de deuxièmes retards après l’exécution de l’instruction la retarde inutilement l’exécution de la fonction sécurisée. Ici, lors de la phase 40, l’instruction la est identifiée. Pour cela, par exemple, la distribution SPm du cumul des premiers retards entre l’instant tref et l’instant tim est déterminée en faisant croître l’indice m jusqu’à l’indice a+1. La distribution statistique SPm est déterminée par mesure ou par calcul si les lois Pm sont connues. L’instruction lf de la fonction sécurisée à partir de laquelle l’introduction de deuxièmes retards doit être inhibée est alors choisie entre l’instruction la et l’instruction lb. Dès lors, l’introduction de deuxième retards cesse bien avant l’instant tder et alors même que l’introduction de premiers retards se poursuit après l’exécution de l’instruction lf, par exemple, jusqu’à l’instant tder. Pour ne pas trop retarder inutilement l’exécution de la fonction sécurisée, l’indice b est ici choisi entre a et a+100.
[0072] Généralement, les premières instructions de la fonction sécurisée ne traitent pas des informations secrètes. Il existe donc souvent un indice d en dessous duquel, l’introduction du deuxième retard est aussi inutile. Les séquences Seqk sont donc ici situées entre les instructions ld et lf. Entre ces instructions ld et lf, certaines séquences d’instructions peuvent être plus critiques que d’autres. Ainsi, avantageusement, chaque séquence Seqk correspond à l’une de ces séquences d’instructions plus critiques. Dans ce cas, les séquences d’instructions Seqk sont séparées les unes des autres par des instructions moins critiques de la fonction sécurisée. Les instants d’exécution de ces instructions moins critiques sont désynchronisés uniquement par l’introduction de premiers délais.
[0073] Enfin, chaque séquence Seqk identifiée est associée à une zone Zk. Pour cela, l’instruction lzd,k est introduite dans le code de la fonction sécurisée entre la dernière instruction de la séquence Seqk-i et la première instruction de la séquence Seqk. Ici, l’instruction lzd,k est un appel à la routine RI2d. Dans ce cas, l’instruction lzf,k est l’instruction située à l’adresse de retour de cette routine RI2d.
[0074] Toujours lors de la phase 40, pour chaque séquence Seqk, une loi Sk est construite de manière à ce que suite à l’introduction du deuxième retard, le maximum SEmaxk soit inférieur au seuil Si,k. Pour cela, les différentes distributions statistiques SSk ou SPk associées à chaque séquence Seqk sont déterminées soit à partir de mesures soit par calcul si les lois Pm sont connues et la distribution calculable. Par la suite, on se place dans le cas particulier où ce sont les distributions statistiques SPk qui ont été déterminées. Toutefois, tout ce qui est décrit dans ce cas particulier s’applique également au cas où ce sont les distributions SSk qui sont déterminées en remplaçant simplement l’expression « SPk » par l’expression « SSk ».
[0075] Lorsque la distribution statistique SPk a été déterminée, le maximum SPmaxk est aussi connu. On détermine alors le nombre p tel que SPmaxk/p = Si,k.
[0076] Ensuite, le nombre n2,k est pris égal ou supérieur à la partie supérieure du nombre p. La partie supérieure d’un nombre est le plus petit entier supérieur ou égal à ce nombre.
[0077] La probabilité d’occurrence Sk[xi] associée à chacune des valeurs Xi du groupe G2,k est aussi choisie. Ici, la loi Sk est équiprobable, c’est-à-dire que la loi Sk est une loi uniforme discrète. Dans ce cas, la probabilité d’occurrence Sk[xi] de chaque valeur Xi est donc égale à l/n2,k.
[0078] Enfin, pour chaque ensemble de T séquences Seqk à Seqk+T-i successives, les valeurs Xi qui satisfont la condition (4') sont déterminées et enregistrées dans la mémoire 12. Ainsi, à l’issue de la phase 40, pour chaque séquence Seqk :
- le code de la fonction sécurisée comporte une instruction lZd,k qui déclenche l’introduction du deuxième retard,
- la mémoire 12 comporte un groupe G2,k de n2,k valeurs associé à cette séquence Seqk, et
- la mémoire 12 comporte une loi de probabilité Sk associée à cette séquence Seqk.
[0079] Une fois la phase 40 d’initialisation terminée, le système 2 peut alors procéder à une phase 42 d’exécution de la fonction sécurisée.
[0080] Lors de la phase 42, plus précisément lors d’une étape 44, le microprocesseur 10 exécute les unes après les autres les instructions lm de la fonction sécurisée.
[0081] En parallèle, le module 18 exécute, par exemple en permanence, une phase 46 de désynchronisation temporelle ordinaire. Dans ce mode de réalisation, la phase 46 comporte, avant l’exécution de chaque instruction lm, l’exécution des opérations 48 et 50 suivantes.
[0082] Lors de l’opération 48, le module 18 choisit aléatoirement, selon la loi Pm, une valeur d’un premier délai dans le groupe Gi,m.
[0083] Ensuite lors de l’opération 50, le module 18 introduit un premier retard de durée égale à ce premier délai avant l’exécution de l’instruction L par le microprocesseur 10. Ce premier retard est introduit entre les instants tim-i et tim. L’introduction de ce premier retard a donc pour conséquence de décaler l’instant ti m par rapport à l’instant tim-i-
[0084] En parallèle de l’étape 44 et de la phase 46, le module 20 exécute une phase 60 de désynchronisation temporelle renforcée. L’exécution de la phase 60 est ici uniquement déclenchée en réponse à chaque chargement ou exécution d’une instruction lZd,k. Comme expliqué précédemment, dans ce mode de réalisation, l’instruction lZd,k est un appel à la routine RI2d. L’exécution de la phase 60 est ensuite systématiquement interrompue en réponse au chargement ou à l’exécution de l’instruction lzf,k. Lorsque la phase 60 est exécutée, le module 20 réalise les opérations suivantes.
[0085] Lors d’une opération 62, le module 20 choisit aléatoirement une valeur du deuxième délai dans le groupe G2,k, ce choix étant réalisé selon la loi Sk.
[0086] Puis lors d’une opération 64, le module 20 introduit un deuxième retard de durée égale au deuxième délai, choisi lors de l’opération 62, avant le chargement ou l’exécution de l’instruction lzf,k, c’est à dire ici avant le chargement de l’instruction qui se trouve à l’adresse de retour de la routine RI2d. La routine RI2d introduit ce deuxième retard en exécutant un certain nombre de fois des instructions inutiles, par exemple.
[0087] Chapitre III : Variantes
[0088] Chapitre lll.l : Variantes de l’introduction du retard
[0089] Il existe de nombreuses autres méthodes pour introduire un retard lors de l’exécution d’une fonction sécurisée. Toutes les méthodes présentées ci-dessous peuvent aussi bien être appliquées à l’introduction du premier retard que du deuxième retard.
[0090] Par exemple, un code polymorphe peut être utilisé pour cela. Les codes polymorphes sont bien connus. Par exemple le lecteur peut consulter les articles suivants à ce sujet :
- G. Agosta et al. : « A code morphing methodology to automate power analysis countermeasures », DAC, 2012, pp. 77-82,
- G. Agosta et al. : « The MEET approach : Securing cryptographie embedded software against side channel attacks," IEEE TCAD, vol. 34, no. 8, pp. 1320-1333, 2015.
- D. Couroussé et al. : « Runtime code polymorphism as a protection against side channel attacks," WISTP, vol. 9895, 2016, pp. 136-152.
[0091] En résumé, un code polymorphe d’une fonction sécurisée est capable de réaliser une même opération, mais en exécutant, en alternance, différentes variantes du code exécutable. Chacune de ces variantes produit le même résultat lorsqu’elle est exécutée par le microprocesseur, mais le code de chacune de ces variantes est différent. Par exemple, typiquement, pour réaliser la même opération, chacune des variantes exécute un nombre différent d’instructions et/ou des instructions différentes. Les temps d’exécution de chacune de ces variantes par le microprocesseur sont donc différents les uns des autres. Dès lors, le fait de choisir une variante plus longue à exécuter qu’une autre variante introduit un retard dans l’exécution de la fonction sécurisée. Le code exécutable de chacune de ces variantes peut être préenregistré dans une mémoire ou être généré à la volée lors d’une phase de compilation préalable à son exécution. Classiquement, au cours de l’exécution du code polymorphe, la variante à exécuter pour réaliser l’opération est choisie aléatoirement. Au lieu de cela, ici, la variante à exécuter pour réaliser l’opération est choisie en fonction de la valeur du premier ou du deuxième délai. Autrement dit, on choisit une variante dont le temps d’exécution est égal au premier ou au deuxième délai choisi aléatoirement.
[0092] Il est aussi possible d’introduire un retard dans l’exécution d’une fonction sécurisée en diminuant la fréquence de l’horloge qui rythme le fonctionnement du microprocesseur. A ce sujet, le lecteur peut se référer à l’article suivant : T. Guneysu et al. : « Generic side-channel countermeasures for recongurable devices," Cryptographie Hardware and Embedded Systems CHES 2011, Springer Berlin Heidelberg, 2011, pp. 33-48..
[0093] Une autre méthode pour introduire un retard dans l’exécution d’une fonction sécurisée est d’interrompre son exécution pendant un intervalle de temps prédéterminé, soit en préemptant l’exécution de la fonction sécurisée par le déclenchement d’une interruption, soit en insérant dans le code de la fonction sécurisée des appels à des routines indépendantes dont le temps d’exécution est variable. À ce sujet, le lecteur peut consulter l’article suivant : J. -S. Coron et al. : « An efficient method for random delay génération in embedded software » Lecture Notes in Computer Science, vol. 5747 LNCS, pp. 156-170, 2009.
[0094] Pendant la phase 46 de désynchronisation temporelle ordinaire, l’introduction du premier retard n’est pas forcément réalisée de la même façon selon que, en parallèle, la phase 60 de désynchronisation temporelle renforcée est exécutée ou non. Par exemple, pendant la phase 46, et en absence d’exécution en parallèle de la phase 60, le premier retard est introduit en modifiant la fréquence de l’horloge 6. Lorsque les phases 46 et 60 sont simultanément exécutées, le premier retard peut être introduit en déclenchant l’exécution d’une routine Rlld. Lors de l’exécution de cette routine Rlld, le premier délai est choisi aléatoirement en utilisant la loi Pk associée à la première instruction de la séquence Seqk. Le deuxième délai est choisi aléatoirement en utilisant la loi Sk. Ensuite, les premier et deuxième délais ainsi choisis sont ajoutés l’un à l’autre pour obtenir un troisième délai. Un retard d’une durée égale au troisième délai est alors introduit immédiatement avant l’instant tsk. Par exemple, dans ce cas, ce délai peut être introduit en exécutant une boucle d’instructions inutiles un nombre de fois suffisant pour retarder l’instant tsk par rapport à l’instant tsk-i d’une durée égale au troisième retard. Dans ce cas, puisque le premier retard est introduit par l’exécution de la routine Rlld, celui-ci n’a pas besoin d’être introduit à l’aide du module 18 de sorte que le module 18 peut être désactivé temporairement.
[0095] Le deuxième retard n’a pas besoin d’être introduit immédiatement avant la première instruction de la séquence Seqk. Autrement dit, l’instruction lZf,k peut être située une ou plusieurs instructions avant la première instruction de la séquence Seqk. L’instruction lZf,k peut même être située avant la première instruction de la séquence Seqk.i, voire même n’importe où entre les instructions et la première instruction de la séquence Seqk.
[0096] Le deuxième retard n’a pas besoin d’être introduit en une seule fois. En variante, le deuxième retard est divisé en plusieurs sous-périodes dont la somme est égale à la durée du deuxième retard. Ensuite, chacune de ces sous-périodes de retard est introduite lors de l’exécution de la fonction sécurisée à des instants différents respectifs situés entre les instants tsk-i et tsk. Pour cela, typiquement, les instructions lzd,k et l zf,k sont séparées l’une de l’autre par plusieurs instructions intermédiaires et ces sous-périodes de retard sont introduites chacune avant une instruction intermédiaire respective.
[0097] Lorsque le module de désynchronisation temporelle renforcée est implémenté sous la forme d’un module matériel ou logiciel qui s’exécute indépendamment de la fonction sécurisée, ce module comporte pour chaque séquence Seqk, des identifiants préenregistrés dans sa mémoire qui lui permettent d’identifier des instructions particulières de la fonction sécurisée qui précèdent la séquence Seqk. Ces instructions particulières identifiables par le module 20 correspondent aux instructions lzd,k et lZf,k. Par exemple, les identifiants utilisés sont les adresses des instructions lzd,k et lZf,k. Dans ce cas, le module 20 compare en permanence l’adresse de l’instruction chargée par le microprocesseur 10 aux adresses préenregistrées des instructions Izd.k- Lorsque le module 20 détermine que l’adresse de l’instruction chargée par le microprocesseur 10 correspond à l’une des adresses préenregistrées des instructions Izd.k alors il exécute les opérations 62 et 64. Dans le cas où l’adresse de l’instruction chargée par le microprocesseur 10 correspond à l’adresse préenregistrée d’une instruction lzf k, alors le module 20 interrompt l’exécution de la phase 60. Si l’introduction du deuxième retard n’est pas encore terminée au moment où l’instruction lZf,k est chargée ou exécutée, alors le deuxième retard est introduit à ce moment-là, en une seule fois lors de l’étape 64.
[0098] Chapitre 111.2 : Variantes des lois Sk et Pm
[0099] En variante, les distances entre deux valeurs successives du groupe G2,k ne sont pas toutes les mêmes. Autrement dit, les n2,k valeurs du groupe G2,k n’ont pas besoin d’être uniformément réparties. Par exemple, dans le cas où n2,k = 3, le groupe G2,k contient les trois valeurs suivantes 0, i.de et 4.i.de au lieu des trois valeurs 0, i.de et 2. i .de comme décrit dans les modes de réalisation précédents.
[00100] En variante, les conditions (3) et (3') ne sont pas vérifiées. Dans ce cas, la distance entre deux valeurs successives quelconques du groupe G2,k n’est pas égale à i.de, mais strictement supérieure à i.de. Par exemple, cette distance est supérieure ou égale à l,l.i.de ou 1,5. i.de ou 2.i.de.
[00101] Dans une autre variante, le groupe G2,k ne comporte pas la valeur 0. Par exemple, le groupe G2,k comporte uniquement les valeurs i.de et 2.i.de. [00102] Les T séquences Seqk qui vérifient la condition (4) ou (4’) ne sont pas nécessairement des séquences Seqk consécutives mais peuvent être choisies arbitrairement parmi l’ensemble des séquences Seqk.
[00103] Il n’est pas nécessaire que la condition (4) ou (4’) soit satisfaite. Dans ce cas, le groupe G2,k est généralement différente du groupe G2,k+i. En effet, le maximum SPmaxk ou SSmaxk varie en fonction de la valeur de l’indice k.
[00104] De façon plus générale, les lois Sk et Sk+i peuvent différer l’une de l’autre par l’une ou plusieurs des caractéristiques suivantes :
- le nombre n2,k de valeurs dans le groupe G2,k,
- les valeurs x, contenues dans le groupe G2,k, ou
- les probabilités d’occurrence Sk[x] associées aux valeurs x, du groupe G2,k.
[00105] Même lorsque la condition (4) ou (4’) est satisfaite par les valeurs des groupes G2,k et G2,k+i, les lois Sk et Sk+i ne sont pas nécessairement identiques. Par exemple, ces lois Sk et Sk+i peuvent différer l’une de l’autre par les probabilités associées à chacune des valeurs Xi du groupe G2,k.
[00106] La même séquence Seqk peut être associée à plusieurs lois Sk différentes notées ici Sk,i, Sk,2, Sk,3 et ainsi de suite. Les lois Sk,i, Sk,2, Sk,3 satisfont toutes la condition (1). Ici, les lois Sk,i, Sk,2, Sk,3, sont par exemple obtenues pour des valeurs différentes du nombre p, notées pi, p2 et p3 avec par exemple, pi > 1,3, p2 > Pi et p3 > p2. Autrement dit, la valeur obtenue pour SEmaxk est plus grande quand la loi Sk i est utilisée que quand la loi Sk,2 est utilisée. De même, le maximum SEmaxk est plus grand quand la loi Sk,2 est utilisée que quand la loi Sk,3 est utilisée. Ensuite, lors de l’exécution de la fonction sécurisée, le module 20 sélectionne parmi les différentes lois possibles Sk l, Sk,2, Sk,3 la loi à utiliser pour choisir aléatoirement la valeur du deuxième délai. Cette sélection est faite en fonction, de préférence, du contexte dans lequel s’exécute la fonction sécurisée. Par exemple, le module 20 sélectionne automatiquement la loi Sk à utiliser en fonction d’un niveau de sécurité requis qui lui a préalablement été transmis. Le niveau de sécurité requis peut être déterminé par le calculateur lui-même. Ainsi si le calculateur détecte ou détermine qu’il est probable qu’il soit actuellement soumis à une attaque, par exemple par canaux auxiliaires, alors le calculateur 4 augmente le niveau de sécurité ce qui conduit à sélectionner une loi Sk qui diminue plus le maximum SEmaxk. La sélection du niveau de sécurité peut aussi être réalisée en fonction de la nature des traitements actuellement exécutés par le calculateur 4.
[00107] Dans les modes de réalisation précédemment décrits, la distribution SPk est utilisée à la place de la distribution SSk pour construire la loi Sk. Dans d’autres modes de réalisation, la distribution statistique SSk est construite puis utilisée à son tour pour construire la loi Sk. Dans ce cas, il est possible de construire des groupes G2,k de valeurs qui vérifient la condition (1) sans vérifier la condition (2). Contrairement à la distribution statistique SPk, la distribution statistique SSk tient compte à la fois des premier et des deuxième retards déjà introduits avant l’exécution de la séquence Seqk. Ainsi, pour construire la distribution statistique SSk, il faut connaître la distribution statistique SSk-i et la loi Sk-i. Dès lors, il est possible de construire la distribution statistique SSk par un processus itératif. Par exemple, de l’instant t = 0 jusqu’à l’instant t = kmax, où kmax est la plus grande valeur de l’indice k, les opérations suivantes sont réitérées :
1) construire la distribution statistique SSt+i à partir de la distribution statistique SSt, de la loi St et des lois Pm utilisées pour introduire les premiers retards entre l’instant tst-i et l’instant tst, puis
2) construire la loi St+i à partir de la distribution statistique SSt+i et de son maximum SSmaxt+i.
[00108] La distribution statistique SSi est égale à la distribution statistique SPzf,i car avant l’instant tzf,i aucun autre deuxième retard que celui choisi en fonction de la loi Si n’a encore été introduit.
[00109] De nombreuses variantes de la loi Pm sont possibles. De façon similaire à ce qui a été décrit pour la loi Sk, la loi Pm utilisée pour choisir la valeur du premier délai n’est pas nécessairement toujours la même pour toutes les instructions lm. Par exemple, les lois Pm et Pm+i peuvent différer l’une de l’autre par une ou plusieurs des caractéristiques suivantes :
- le nombre ni,m de valeurs dans le groupe Gi,m,
- les valeurs contenues dans le groupe Gi,m,
- les probabilités d’occurrence de chacune des valeurs du groupe Gi,m.
[00110] La loi Pm peut aussi associer à une ou plusieurs valeurs du groupe Gi,m, une probabilité d’occurrence nulle. Par exemple, la loi Pm peut associer une valeur d’occurrence nulle à la valeur nulle du premier délai. Ainsi, à chaque fois qu’une nouvelle valeur du premier délai est choisie, cette nouvelle valeur est systématiquement différente de la valeur nulle.
[00111] Chapitre 111.3 : Variantes du système de calcul
[00112] De nombreux autres modes de réalisations du système 2 sont possibles. Par exemple, le module 20 n’est pas nécessairement un module logiciel exécuté par le même microprocesseur que celui qui exécute la fonction sécurisée. Ainsi, en variante, le module 20 est un module logiciel exécuté par un microprocesseur de sécurité apte à introduire les deuxièmes retards lors de l’exécution de la fonction sécurisée par le microprocesseur 10. Le module 20 peut aussi se présenter sous la forme d’un module matériel apte à exécuter la phase 60. Lorsque les modules 18 et 20 sont des modules indépendants du microprocesseur 10, ces modules peuvent être implémentés sur un même microprocesseur de sécurité ou dans un même module matériel indépendant du microprocesseur 10.
[00113] Le microprocesseur 10 qui exécute la fonction sécurisée n’est pas nécessairement un microprocesseur générique équipé d’une unité arithmétique et logique et apte à exécuter un programme enregistré dans une mémoire externe. Par exemple, en variante, le microprocesseur est un microprocesseur spécifique uniquement capable d’exécuter la fonction sécurisée. Par exemple, un tel microprocesseur spécifique est un module matériel dédié à l’exécution de cette fonction spécifique qui ne peut pas être programmé pour exécuter de nouvelles fonctions autres que celles prévues lors de la conception. Par exemple, il peut s’agir d’un module matériel conçu pour exécuter la fonction sécurisée AES.
[00114] Chapitre 111.4 : Variantes du procédé de désvnchronisation temporelle
[00115] La phase 40 d’initialisation peut être réalisée par le calculateur 4 lui- même. Dans ce cas, lors de la phase d’initialisation, le microprocesseur 10 exécute plusieurs fois la fonction sécurisée et lors de chacune de ces exécutions, seule la phase 46 de désynchronisation temporelle ordinaire est mise en œuvre. Pendant cette phase d’initialisation, la phase 60 de désynchronisation temporelle renforcée n’est pas exécutée. Typiquement, dans ce cas, pendant cette phase d’initialisation, les informations secrètes traitées par la fonction sécurisée sont remplacées par des leurres. Par exemple, les clefs de chiffrement sont remplacées par des clefs de chiffrement tirées aléatoirement. Ainsi, les exécutions répétées de la fonction sécurisée pendant la phase d’initialisation ne peuvent pas laisser fuir ces informations secrètes. Lors de cette phase d’initialisation, pour chaque séquence Seqk, le module 20 relève l’instant tsk où débute l’exécution de cette séquence. Comme décrit précédemment, à partir de ces différentes mesures, le module 20 construit la distribution statistique SPk et obtient donc la valeur du maximum SPmaxk. Ensuite, le module 20 choisit le nombre n2,k par exemple comme précédemment décrit. Dans un autre mode de réalisation, le nombre n2,k peut être choisi aléatoirement dans un groupe limité d’entiers. La loi Sk[x] est systématiquement choisie égal à l/n2,k. A partir de ce moment-là, le module 20 détermine automatiquement un jeu de valeurs Xi qui satisfait la condition (1) et en plus, éventuellement, la condition (2), (3') et/ou (4’). Pour cela, il utilise la distribution SPk qu’il a déterminé automatiquement. A ce stade, la loi Sk a été automatiquement construite et est ensuite enregistrée dans la mémoire 12 associée à la séquence Seqk. Cette mémoire 12 comporte au préalable les identifiants des instructions lZd,k et lZf,k. Par exemple, ces instructions sont comme dans les modes de réalisation précédemment décrits, respectivement une instruction d’appel et de retour de la routine RI2d. Une fois que la loi Sk a été déterminée pour chacune des séquences Seqk, alors la phase d’initialisation s’arrête et le calculateur 4 procède alors à la phase d’exécution proprement dite de la fonction sécurisée. Cette phase d’exécution est par exemple identique à la phase 42 précédemment décrite.
[00116] Le module 20 peut aussi exécuter la phase 40 d’initialisation en même temps que la phase 42 d’exécution. Par exemple, comme dans le mode de réalisation du paragraphe ci-dessus, le module 20 construit la distribution statistique SPk juste avant l’exécution de la séquence Seqk à partir de la connaissance des lois Pm et du numéro d’ordre m de la première instruction de la séquence Seqk. A partir de cette distribution statistique SPk déterminée, le module 20 construit la loi Sk comme précédemment décrite. Dans ce cas, la loi Sk est construite entre les instants tsk-i et tsk.
[00117] Avantageusement, lors de la phase 40 d'initialisation, le microprocesseur identifie également l'instruction lf à partir de laquelle l'insertion des deuxièmes délais devient inutile pour satisfaire la condition SEmaxk < Si,k et peut donc être systématiquement inhibée. Par exemple, pour faire cela, le microprocesseur procède comme décrit dans le mode de réalisation principal. En particulier, le microprocesseur identifie la dernière 'instruction la, et donc l'instant ta, pour laquelle la condition suivante est vérifiée : SPmaxa > Si,k. Puisque pour faire cela, la distribution statistique SPm doit être déterminée pour différents instants tim, cette détermination est réalisée soit lors de l'exécution d'un phase 40 d'initialisation qui précède l'exécution de la phase 42 soit lors de l'exécution d'une phase 40 d'initialisation exécutée en même temps que la phase 42. Ces deux alternatives sont mises en œuvre, par exemple, comme décrit dans les deux paragraphes précédents.
[00118] Dans un mode de réalisation simplifié, les instructions lZd,k et lZf,k sont automatiquement introduites dans le code de la fonction sécurisée par le calculateur 4 lors de la phase 40. Par exemple, le calculateur 4 répartit aléatoirement ou, au contraire uniformément, ces instructions lzd,k et lzf,k dans l’ensemble du code de la fonction sécurisée. Dans ce cas, les séquences Seqk ne correspondent pas forcément à une séquence d’instructions critiques.
[00119] Dans une autre variante, la phase 60 est exécutée en réponse à une commande reçue par le calculateur 4. Dans ce cas, tant que cette commande n’a pas été reçue, même si le microprocesseur 10 charge ou exécute une instruction lzd,k, la phase 60 n’est pas exécutée. Par contre, après réception de cette commande, dès que le microprocesseur 10 charge ou exécute une instruction lzd,k, la phase 60 est exécutée. Par exemple, cette commande est émise et reçue par le calculateur 4 dès qu’une tentative d’attaque est détectée. Dans une autre variante, cette commande comporte la loi Sk et le groupe G2,k à utiliser pour introduire, immédiatement en réponse, un deuxième retard. Dans ce cas, la phase 60 peut être déclenchée à n’importe quel moment et sans attendre qu’une instruction lzd,k soit chargée ou exécutée par le microprocesseur 10. Dans cette dernière variante, les instructions lzd,k et lzf,k peuvent être omises.
[00120] De façon similaire, la phase 60 peut être interrompue en réponse à une commande reçue par le calculateur 4.
[00121] Dans un autre mode de réalisation, en réponse au chargement ou à l’exécution de l’instruction lzd,k, avant de déclencher l’exécution de la phase 60, le module 20 détermine, par calcul, le maximum SPmaxzd,k de la distribution statistique SPzd,k. Ensuite, il compare ce maximum SPmaxzd,k calculé à un seuil préenregistré haut Sh. Si le maximum SPmaxZd,k calculé est supérieur à ce seuil Sh, alors le module 20 déclenche l’exécution de la phase 60. Dans le cas contraire, le module 20 inhibe l’exécution de la phase 60. Cela permet d’adapter automatiquement les instants de déclenchement de la phase 60 à différentes fonctions sécurisées susceptibles d’être exécutées par le même microprocesseur 10.
[00122] En variante, la phase 46 n’est pas exécutée pendant toute la durée de l’exécution de la fonction sécurisée. Par exemple, la phase 46 peut être interrompue lorsque les instructions en cours d’exécution ne sont pas critiques. Ensuite, l’exécution de la phase 46 peut aussi être redémarrée si nécessaire. Eventuellement, la phase 60 peut continuer à être exécutée pendant la période de temps où la phase 46 est interrompue. Il est même possible d’exécuter la phase 60 uniquement pendant la période de temps où la phase 46 est interrompue.
[00123] Les étapes 62 et 64 peuvent être exécutées plusieurs fois pour la même séquence Seqk. Par exemple, dans le mode de réalisation décrit en référence dans la figure 7, cela permet à chaque itération des étapes 62 et 64 d’introduire avant l’exécution de la séquence Seqk un deuxième délai qui divise par deux le maximum SEmaxk obtenu après la précédente itération des étapes 62 et 64 pour cette même séquence Seqk.
[00124] Certaines attaques par canaux auxiliaires sont menées en prenant comme instant de référence l’instant où se termine l’exécution de la fonction sécurisée. Pour rendre ces attaques difficiles, il faut aussi minimiser le maximum SEmaxk dans le cas où l’instant de référence tref est égal à l’instant tder et la direction Dref va de l’instruction lDer vers l’instruction lDeb. Dans ce cas, les distributions statistiques SSk ou SPk sont différentes de celles construites lorsque l’instant de référence tref est égal à l’instant tdeb. De façon plus générale, s’il est soupçonné qu’un instant où est exécutée une instruction particulière de la fonction sécurisée peut être utilisé comme un instant de référence pour mettre en œuvre une attaque par canaux auxiliaires, alors les procédés décrits ici peuvent être mis en œuvre en choisissant comme instant tref cet instant où est exécutée cette instruction particulière. L’instant tref peut donc être situé entre les instants tdeb et tder. En particulier, pour protéger l’exécution de la fonction sécurisée, vis-à-vis de différentes attaques par canaux auxiliaires utilisant différents instants de référence, plusieurs phases de désynchronisation temporelle renforcée similaires à la phase 60 peuvent être exécutées en parallèle. Ces différentes phases de désynchronisation temporelle renforcée diffèrent alors les unes des autres uniquement par l’instant tref choisi comme instant de référence. En particulier, il est utile d’exécuter en parallèle de la phase 60, une phase supplémentaire de désynchronisation temporelle renforcée pour laquelle l’instant de référence tref a été choisi égal à tder. En effet, cela permet alors de protéger les instructions situées en début de la fonction sécurisée ainsi que celles situées à la fin de la fonction sécurisée. [00125] Chapitre 111.5 : Autres variantes
[00126] Le nombre d’instructions contenues dans la séquence Seqk est par exemple égal à un.
[00127] En variante, le groupe d’instructions de la fonction sécurisée avant chacune desquelles les étapes 48 et 50 sont exécutées ne comporte pas toutes les instructions de la fonction sécurisée, mais seulement un nombre restreint de ces instructions lm. Par exemple, ce groupe comporte seulement une instruction sur deux de la fonction sécurisée.
[00128] Chapitre IV : Avantages des modes de réalisation décrits
[00129] Le fait d’introduire un deuxième retard en plus du premier retard permet de diminuer le maximum SEmaxk et donc de rendre plus difficiles les attaques par canaux auxiliaires. De plus, cette diminution du maximum SEmaxk est obtenue sans qu’il soit nécessaire de modifier la loi Pm. Dès lors, ce procédé peut être mis en œuvre dans les cas où il n’est pas possible ou pas souhaitable de modifier les lois Pm utilisées pour choisir aléatoirement les premiers délais. Le procédé décrit ici peut donc être mis en œuvre dans un plus grand nombre de cas.
[00130] Le fait que la loi Sk soit équiprobable ou pratiquement équiprobable permet, pour un groupe G2,k de valeurs données, de minimiser le maximum SEmaxk et donc de rendre encore plus difficile les attaques par canaux auxiliaires.
[00131] Le fait de choisir chaque valeur Xi entre 0,9.l.i.de et l,l.l.i.de, où i est le plus petit entier qui vérifie la condition (3) ou (3') permet de minimiser le temps d’exécution de la fonction sécurisée pour un nombre n2,k fixé à l’avance de valeurs du groupe G2,k.
[00132] Le fait de choisir n2,k = 2 permet de minimiser le temps d’exécution de la fonction sécurisée.
[00133] Le fait que les valeurs Xi du groupe G2,k satisfassent en plus la condition (4) ou (4') permet d’utiliser le même groupe G2,k de valeurs pour réduire le maximum SEmaxk de plusieurs séquences Sk à Sk+T-i.
[00134] Le fait d’inhiber l’exécution de la phase 60 bien avant la fin de l’exécution de la fonction sécurisée permet de raccourcir le temps d’exécution de cette fonction sécurisée.
[00135] Inhiber l’exécution de la phase 60 après l’exécution de l’instruction lf permet de réduire encore plus le temps d’exécution de la fonction sécurisée.
[00136] Le fait de déterminer SPmaxk et de déclencher la phase 60 uniquement si le maximum SPmaxk franchit un seuil prédéterminé permet d’adapter automatiquement l’instant de déclenchement de la phase 60 à différentes fonctions sécurisées susceptibles d’être exécutées par le même microprocesseur 10.

Claims

REVENDICATIONS
1. Procédé d'exécution d'une fonction, par un microprocesseur, sécurisée par désynchronisation temporelle, ce procédé comportant :
- l’exécution (44), par le microprocesseur, des instructions de la fonction les unes après les autres, et en parallèle
- l’exécution d’une première phase (46) de désynchronisation, appelée "phase de désynchronisation temporelle ordinaire", cette phase de désynchronisation temporelle ordinaire comportant, avant l'exécution par le microprocesseur de chaque instruction lm d’un groupe d’instructions de la fonction, la réalisation des étapes suivantes :
1) le choix aléatoire (48) d’une valeur d'un premier délai dans un groupe Gi,m de ni,m valeurs possibles pour ce premier délai, où ni,m est un entier supérieur ou égale à deux, chacune des ni,m valeurs possibles étant un multiple entier d'une durée élémentaire de, ce choix aléatoire étant réalisé selon une première loi Pm de probabilité qui associe une probabilité d’occurrence à chacune des valeurs possibles du groupe Gi,m, puis
2) l'introduction (50) d'un premier retard égal au premier délai avant l'exécution de cette instruction de sorte que, par rapport à l'instant où débute l'exécution de la fonction, l'instant où débute l'exécution de cette instruction varie aléatoirement à chaque exécution de la fonction,
caractérisé en ce que, au cours de l’exécution, par le microprocesseur, des instructions de la fonction, le procédé comporte également l’exécution d’une seconde phase (60) de désynchronisation temporelle, appelée "phase de désynchronisation renforcée", d’une séquence Seqk d'instructions de la fonction, cette phase de désynchronisation temporelle renforcée de la séquence Seqk comportant la réalisation des étapes suivantes :
3) le choix aléatoire (62) d’une valeur d'un deuxième délai dans un groupe G2,k de n2,k valeurs possibles pour ce deuxième délai, où n2,k est un entier supérieur ou égal à deux, ce choix aléatoire étant réalisé selon une seconde loi Sk de probabilité qui associe une probabilité d’occurrence à chacune des n2,k valeurs possibles du groupe G2,k, les valeurs du groupe G2,k vérifiant la condition suivante : ou :
- l'indice k est un numéro d'ordre tel que l'indice k-1 est égal au nombre de séquences d'instructions à protéger à exécuter par le microprocesseur entre des instants tref et tsk, - tsk est l’instant où le microprocesseur exécute la première instruction de la séquence Seqk,
- tref est un instant de référence où le microprocesseur exécute une instruction particulière lref de la fonction, cette instruction particulière étant toujours la même lors de chaque exécution de la fonction,
- x0 à Xn k-i sont les n2,k valeurs du groupes G2,k,
- Sk[xi] est la probabilité d’occurrence associée à la valeur x, par la loi Sk,
- SSk est la distribution statistique des valeurs possibles du cumul des retards déjà introduits entre les instants tref et tsk, cette distribution statistique associant une probabilité d’occurrence à chacune des valeurs possibles du cumul des retards déjà introduits entre les instants tref et tsk,
- SSmaXk est la plus grande valeur de la distribution statistique SSk, et
- p est un nombre réel supérieur à 1,3,
- le symbole « . » désigne l’opération de multiplication, puis
4) l'introduction (64) d'un deuxième retard égal au deuxième délai entre les instants tref St tS|<.
2. Procédé selon la revendication 1, dans lequel, quel que soit l'indice I, la probabilité d’occurrence Sk[xi] est comprise entre 0,9/n2,k et l,l/n2,k.
3. Procédé selon l'une quelconque des revendications précédentes, dans lequel quelle que soit l'indice I, la valeur x, du groupe G2,k est comprise entre 0,9.l.i.de et l.l.l.i.de, où i est le plus petit entier pour lequel l'une des conditions suivantes est vérifiée : ou
ou :
- SPk est la distribution statistique des valeurs possibles du cumul des premiers retards déjà introduits entre les instants tref et tsk, cette distribution statistique associant une probabilité d’occurrence à chacune des valeurs possibles du cumul des premiers retards déjà introduits entre les instants tref et tsk, et
- SPmaXk est la plus grande valeur de la distribution statistique SPk.
4. Procédé selon l'une quelconque des revendications précédentes, dans lequel le nombre n2,k est égal à deux.
5. Procédé selon l'une quelconque des revendications précédentes, dans lequel :
- les valeurs du groupe G2,k vérifient en plus la condition suivante : où T est un entier supérieur ou égal à deux,
- l’exécution (44), par le microprocesseur, des d'instructions de la fonction les unes après les autres comporte l'exécution de plusieurs séquences Seqk à Seqk+T i d'instructions à protéger, et
- l’exécution de la phase (60) de désynchronisation temporelle renforcée pour chacune de ces séquences Seqk à Seqk+T-i, l’étape 3) exécutée pour chacune de ces séquences Seqk à Seqk+T-i étant réalisée en utilisant à chaque fois le même groupe G2,k de n2,k valeurs.
6. Procédé selon l'une quelconque des revendications précédentes, dans lequel
- entre l'instruction f et une instruction lf située entre la première et la dernière instructions de la fonction :
• la phase (42) de désynchronisation temporelle ordinaire est exécutée, et
• la phase (60) de désynchronisation temporelle renforcée est exécutée pour chaque séquence Seqk située entre ces instructions lref et lf, puis
- à partir de l'instruction lf, l’exécution de la phase (60) de désynchronisation temporelle renforcée est systématiquement inhibée alors que l’exécution de la phase (46) de désynchronisation temporelle ordinaire est poursuivie.
7. Procédé selon la revendication 6, dans lequel l’exécution de la phase (60) de désynchronisation temporelle renforcée est systématiquement inhibée à partir d’un instant tf compris entre des instants ta et tb, l’instant tf étant l’instant où est exécutée l’instruction lf et les instants ta et tb étant les instants d’introduction, respectivement, du a-ième premier retard et du b-ième premier retard depuis l’instant tref, où l’instant ta est le dernier instant, depuis l’instant tref, pour lequel la condition suivante est vérifiée : SPmaXa > Si, où :
- SPmaxa est la plus grande valeur de la distribution statistique SPa, où la distribution statistique SPa est la distribution statistique des valeurs possibles du cumul des premiers retards déjà introduits entre les instants tref et ta, cette distribution statistique associant une probabilité d’occurrence à chacune des valeurs possibles du cumul des premiers retards déjà introduits entre les instants tref et ta,
- « b » est un nombre entier supérieur à « a » et inférieur à « a+100 », et
- Si est un seuil positif et inférieur à 0,2.
8. Procédé selon la revendication 7, dans lequel le microprocesseur détermine, pour différents instants tim où un premier retard est introduit, la distribution SPm du cumul des premiers retards entre l'instant tref et cette instant tim jusqu'à identifier l'instant tim qui est le dernier instant, depuis l’instant tref, pour lequel la condition suivante est vérifiée : SPrnaxm > Si, l'instant ta étant alors pris égal à cet instant tim identifié.
9. Procédé selon l'une quelconque des revendications précédentes, dans lequel pendant l’exécution de la fonction par le microprocesseur, en réponse au chargement ou à l'exécution d'une instruction lZd,k de début de zone d'introduction d'un deuxième retard, le module de désynchronisation temporelle déclenche l’exécution de la phase (60) de désynchronisation temporelle renforcée.
10. Procédé selon l'une quelconque des revendications précédente, dans lequel le nombre p est supérieur à 1,5 ou 1,8.
11. Procédé selon l'une quelconque des revendications précédente, dans lequel la phase (46) de désynchronisation temporelle ordinaire est exécutée de façon répétée entre les instants tref et tsk.
12. Support (12) d'enregistrement d'informations, lisible par un calculateur électronique, caractérisé en ce que ce support comporte des instructions pour l'exécution d'un procédé conforme à l'une quelconque des revendications précédentes, lorsque ces instructions sont exécutées par le calculateur électronique.
13. Calculateur électronique comportant :
- un microprocesseur (10) apte à exécuter des instructions d’une fonction les unes après les autres,
- un module (18) de désynchronisation temporelle ordinaire apte à exécuter une phase de désynchronisation temporelle ordinaire, cette phase de désynchronisation temporelle ordinaire comportant, avant l'exécution par le microprocesseur de chaque instruction lm d’un groupe d’instructions de la fonction, la réalisation des étapes suivantes : 1) le choix aléatoire d’une valeur d'un premier délai dans un groupe Gi,m de ni,m valeurs possibles pour ce premier délai, où ni,m est un entier supérieur ou égale à deux, chacune des ni,m valeurs possibles étant un multiple entier d'une durée élémentaire de, ce choix aléatoire étant réalisé selon une première loi Pm de probabilité qui associe une probabilité d’occurrence à chacune des valeurs possibles du groupe Gi,m, puis
2) l'introduction d'un premier retard égal au premier délai avant l'exécution de cette instruction de sorte que, par rapport à l'instant où débute l'exécution de la fonction, l'instant où débute l'exécution de cette instruction varie aléatoirement à chaque exécution de la fonction,
caractérisé en ce que le calculateur électronique comporte en plus un module (20) de désynchronisation temporelle renforcée apte à exécuter une phase de désynchronisation temporelle renforcée d’une séquence Seqk d'instructions de la fonction, au cours de l’exécution, par le microprocesseur, des instructions de cette fonction, cette phase de désynchronisation temporelle renforcée de la séquence Seqk comportant la réalisation des étapes suivantes :
3) le choix aléatoire d’une valeur d'un deuxième délai dans un groupe G2,k de n2,k valeurs possibles pour ce deuxième délai, où n2,k est un entier supérieur ou égal à deux, ce choix aléatoire étant réalisé selon une seconde loi Sk de probabilité qui associe une probabilité d’occurrence à chacune des n2,k valeurs possibles du groupe G2,k, les valeurs du groupe G2,k vérifiant la condition suivante : ou :
- l'indice k est un numéro d'ordre tel que l'indice k-1 est égal au nombre de séquences d'instructions à protéger à exécuter par le microprocesseur entre des instants tref et tsk,
- tsk est l’instant où le microprocesseur exécute la première instruction de la séquence Seqk,
- tref est un instant de référence où le microprocesseur exécute une instruction particulière de la fonction, cette instruction particulière étant toujours la même lors de chaque exécution de la fonction,
- x0 à Xn k-i sont les n2,k valeurs du groupes G2,k,
- Sk[xi] est la probabilité d’occurrence associée à la valeur x, par la loi Sk,
- SSk est la distribution statistique des valeurs possibles du cumul des retards déjà introduits entre les instants tref et tsk, cette distribution statistique associant une probabilité d’occurrence à chacune des valeurs possibles du cumul des retards déjà introduits entre les instants tref et tsk, et - SSmaXk est la plus grande valeur de la distribution statistique SSk,
- p est un nombre réel supérieur à 1,3,
- le symbole « . » désigne l’opération de multiplication, puis
4) l'introduction (64) d'un deuxième retard égal au deuxième délai entre les instants tref et tsk.
EP19756215.0A 2018-07-23 2019-07-02 Procede d'execution d'une fonction, par un microprocesseur, securisee par desynchronisation temporelle Withdrawn EP3827549A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1856781A FR3084177B1 (fr) 2018-07-23 2018-07-23 Procede d'execution d'une fonction, par un microprocesseur, securisee par desynchronisation temporelle
PCT/FR2019/051640 WO2020021176A1 (fr) 2018-07-23 2019-07-02 Procede d'execution d'une fonction, par un microprocesseur, securisee par desynchronisation temporelle

Publications (1)

Publication Number Publication Date
EP3827549A1 true EP3827549A1 (fr) 2021-06-02

Family

ID=65494202

Family Applications (1)

Application Number Title Priority Date Filing Date
EP19756215.0A Withdrawn EP3827549A1 (fr) 2018-07-23 2019-07-02 Procede d'execution d'une fonction, par un microprocesseur, securisee par desynchronisation temporelle

Country Status (4)

Country Link
US (1) US20210273778A1 (fr)
EP (1) EP3827549A1 (fr)
FR (1) FR3084177B1 (fr)
WO (1) WO2020021176A1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3122747B1 (fr) 2021-05-07 2023-03-31 Commissariat Energie Atomique Procede d’execution d’une fonction, securise par desynchronisation temporelle

Also Published As

Publication number Publication date
WO2020021176A1 (fr) 2020-01-30
FR3084177B1 (fr) 2020-07-03
FR3084177A1 (fr) 2020-01-24
US20210273778A1 (en) 2021-09-02

Similar Documents

Publication Publication Date Title
EP3457620B1 (fr) Procédé d&#39;exécution d&#39;un code binaire d&#39;une fonction sécurisée par un microprocesseur
WO2009092903A2 (fr) Procede et dispositifs de protection d&#39;un microcircuit contre des attaques visant a decouvrir une donnee secrete
EP3712794B1 (fr) Procédé d&#39;exécution d&#39;un code binaire d&#39;une fonction sécurisée par un microprocesseur
EP3300293B1 (fr) Procédé de chiffrement ou de déchiffrement symétrique par bloc
WO2009112686A2 (fr) Procede et dispositifs de contre-mesure pour cryptographie asymetrique
EP4086801B1 (fr) Procédé d&#39;exécution d&#39;une fonction, sécurisé par désynchronisation temporelle
FR2895609A1 (fr) Procede cryptographique comprenant une exponentiation modulaire securisee contre les attaques a canaux caches, cryptoprocesseur pour la mise en oeuvre du procede et carte a puce associee
FR2917197A1 (fr) Procede de masquage du resultat d&#39;une operation de multiplication modulaire et dispositif associe.
EP3827549A1 (fr) Procede d&#39;execution d&#39;une fonction, par un microprocesseur, securisee par desynchronisation temporelle
EP3712795B1 (fr) Procédé d&#39;exécution, par un microprocesseur, d&#39;un code binaire comportant une fonction appelante et une fonction appelee
EP3300292B1 (fr) Procédé de chiffrement ou de déchiffrement protégé contre des attaques par canaux cachés
FR2960728A1 (fr) Procede de determination d&#39;une representation d&#39;un produit et procede d&#39;evaluation d&#39;une fonction
EP3306465B1 (fr) Procédé de traitement cryptographique comprenant une multiplication d&#39;un point d&#39;une courbe elliptique par un scalaire
EP1387519A2 (fr) Procédé de sécurisation d&#39;un ensemble électronique contre des attaques par introduction d&#39;erreurs
EP1869545B1 (fr) Dispositif implementant la multiplication modulaire de montgomery
EP4089559B1 (fr) Microprocesseur équipé d&#39;une unité arithmétique et logique et d&#39;un module matériel de sécurisation
FR2969875A1 (fr) Procede et systeme pour l&#39;authentification multi-modale multi-seuil utilisant le partage de secret
EP4057169B1 (fr) Procédé d&#39;exécution d&#39;un code binaire d&#39;un programme d&#39;ordinateur par un microprocesseur
EP4089557B1 (fr) Procédé d&#39;exécution d&#39;un code binaire par un microprocesseur
EP3799347B1 (fr) Sécurisation du chiffrement des et du déchiffrement des inverse
EP4057168B1 (fr) Procédé d exécution d&#39;un programme d ordinateur par un appareil électronique
FR2994608A1 (fr) Procede de traitement cryptographique comprenant un acces securise a une pluralite de tables de substitution, dispositifs et produit programme d&#39;ordinateur correspondants.
FR3166774A1 (fr) Réduction modulaire d’opérations cryptographiques
FR3053862A1 (fr) Procede de generation des parametres caracterisant un protocole cryptographique
EP3614617A1 (fr) Procédé et dispositif de génération de paramètre(s) d&#39;un protocole cryptographique asymétrique à partir d&#39;une blockchain, procédé et appareil de cryptage ou de décryptage et programme d&#39;ordinateur associés

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: UNKNOWN

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20210118

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20230201