FR 3084177 A1 20200124 FR 1856781 A 20180723 PROCEDE D'EXECUTION D'UNE FONCTION, PAR UN MICROPROCESSEUR, SECURISEE PAR DESYNCHRONISATION TEMPORELLE [1] L'invention concerne un procédé d'exécution d'une fonction, par un 5 microprocesseur, sécurisée par désynchronisation temporelle, ainsi qu'un support d'enregistrement d'informations et un calculateur électronique pour la mise en oeuvre de ce procédé. [2] La désynchronisation temporelle est un principe employé dans des contre-mesures logicielles ou matérielles pour rendre plus difficiles les tentatives de 10 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. 15 [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 20 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 25 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 (« Correlation Power Analysis »). Ces attaques visent à corréler un événement 30 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. 35 [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 40 branchement conditionnel afin de provoquer un fonctionnement inattendu de cette 2 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 5 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 10 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 15 désynchronisation temporelle ordinaire comportant, avant l'exécution par le microprocesseur de chaque instruction I, 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 G1,' de nie valeurs possibles pour ce premier délai, où n1,' est un entier supérieur ou égal à 20 deux, chacune des ni., 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 G1,', puis 2) l'introduction d'un premier retard égal au premier délai avant l'exécution de cette 25 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. [7] Par exemple, un tel procédé est divulgué dans l'article suivant : J.S. Coron et AI: « Analysis and improvement of the random delay countermeasure of CHES 30 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 ». [8] 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. 35 [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 3 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 : - rh.', = 2, - de = 1, - les deux valeurs contenues dans le groupe G1,,, 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 SPio 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 SPK, 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 SP du 20 cumul des premiers retards après l'introduction des 100 premiers retards. La plus grande valeur SPmaxioe de la distribution SP 100 lao -u 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 à 25 é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 SPmax' de la distribution 30 statistique SP, est petit, où l'indice m est le numéro d'ordre de l'instruction compté, par exemple, à partir de la première instruction I - Deb 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 Pin pour que les distributions statistiques SP, présentent des maximums SPmax, plus 35 petits y compris pour les petites valeurs de l'indice m. Par exemple, c'est ce qui est proposé dans l'article Coron2010 précédemment cité. [0014] Toutefois, en pratique, il n'est parfois pas possible ou pas souhaitable de modifier les lois Pm. [0015] L'invention vise donc à proposer un procédé d'exécution d'une fonction, 40 sécurisée par désynchronisation temporelle plus robuste contre les attaques et sans 4 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 d'une fonction sécurisée par désynchronisation, dans lequel, au cours de l'exécution, par le microprocesseur, des instructions de la fonction, le procédé comporte également l'exécution d'une phase de 5 désynchronisation temporelle 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 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 à 10 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 G2A, les valeurs du groupe G2,k vérifiant la condition suivante V JEIN, SSinax, SI I- xiISS kt, j y+ À bk où : - l'indice k est un numéro d'ordre tel que l'indice k-1 est égal au nombre de 15 séquences d'instructions à protéger à exécuter par le microprocesseur entre des instants trek et tsk, - tsk est l'instant où le microprocesseur exécute la première instruction de la séquence Seqk, - trek 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, - xo à xnz,k-1 sont les n2,k valeurs du groupes G2.k, - Sk[xl] 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 trek et tsk, cette distribution statistique associant une probabilité d'occurrence à chacune des valeurs possibles du cumul des retards déjà introduits entre les instants trek et tsk, - SSmaxk est la plus grande valeur de la distribution statistique Ssk, et - p est un nombre réel supérieur à 1,05, puis 4) l'introduction d'un deuxième retard égal au deuxième délai entre les instants trek et tsk. [0016] Les modes réalisation de ce procédé peuvent comporter une ou plusieurs des caractéristiques suivantes : ^ quel que soit l'indice I, la probabilité d'occurrence Sk[xd est comprise entre 0,9/n2,k et 1,1/n2.k ; 5 ^ quelle que soit l'indice I, la valeur xl du groupe G2,k est comprise entre 0,9.I.i.de et lait& où i est le plus petit entier pour lequel l'une des conditions suivantes est vérifiée : tt, -1 SSmax, VJCIN, Sk[Li.(1, =0 OU `V' (j..1N, .611- k(j.(1,-1-1.i.de) S1, où : - SPmax, est la plus grande valeur de la distribution statistique SPa, où la 5 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 Let et ta, 10 - « b » est un nombre entier supérieur à « a » et inférieur à « a+100 », et - S1 est un seuil positif et inférieur à 0,2. ^ pendant l'exécution de la fonction par le microprocesseur, en réponse au chargement ou à l'exécution d'une instruction 17',,k de début de zone d'introduction d'un deuxième retard, le module de désynchronisation 15 temporelle déclenche l'exécution de la phase de désynchronisation temporelle renforcée : ^ le nombre p est supérieur à 1,5. [0017] L'invention a également pour objet un support d'enregistrement d'informations, lisibles par un calculateur électronique, dans lequel ce support d'enregistrement 20 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. [0018] L'invention a également pour objet un calculateur électronique comportant : - un microprocesseur apte à exécuter des instructions d'une fonction les unes après 25 les autres, - un module 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 1,' d'un groupe d'instructions de la fonction, la réalisation des étapes suivantes : 30 1) le choix aléatoire d'une valeur d'un premier délai dans un groupe Gy, de n1,m valeurs possibles pour ce premier délai, où nid, est un entier supérieur ou égale à deux, chacune des nt, 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 35 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, 7 dans lequel le calculateur électronique comporte en plus un module 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 5 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 10 associe une probabilité d'occurrence à chacune des nu( valeurs possibles du groupe 02,k, les valeurs du groupe G2,k vérifiant la condition suivante : n' 1 S, S enax, jffl x,] S.S' 1=0 où : - 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 15 des instants tret et tsk, - tsk est l'instant où le microprocesseur exécute la première instruction de la séquence Seqk, - tret 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 20 lors de chaque exécution de la fonction, - xo à Xruk-1 sont les n2,k valeurs du groupes G2.k, - Sk[xl] est la probabilité d'occurrence associée à la valeur xl 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 25 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,05, puis 4) l'introduction d'un deuxième retard égal au deuxième délai entre les instants tret et 30 tsk. [0019] 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 35 premiers délais, 8 - 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 ; 5 - 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 oeuvre 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 oeuvre par le système de la figure 3. 10 [0020] Chapitre I : Terminologies et notations [0021] 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. [0022] La figure 2 est utilisée pour introduire différentes notations qui sont ensuite 15 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 1,, 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 12 de la fonction sécurisée et en 20 progressant dans une direction Dret de référence. Ainsi, en partant de l'instruction I1 et en allant dans la direction Drer, la première instruction est l'instruction 12, la deuxième instruction rencontrée est l'instruction 12 et ainsi de suite jusqu'à la dernière instruction de la fonction synchronisée rencontrée en avançant dans la direction Dret. On notera que la direction Dret peut correspondre à la direction dans laquelle les instructions lm 25 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 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 30 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 35 augmente encore plus la désynchronisation temporelle. [0023] 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 Dret. Ainsi, l'instruction précédant l'instruction Im est l'instruction le n. [0024] Les termes « première instruction de la fonction sécurisée » et « dernière 40 instruction de la fonction sécurisée » désignent, respectivement, la première et la 9 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, 'Del, et IDer. Ces instructions IDeb et IDer sont indépendantes de la direction Dm, 5 [0025] L'instruction I1 est typiquement une instruction qui correspond à un instant qui pourrait être choisi comme un instant de synchronisation par un attaquant qui souhaite mettre en oeuvre 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 'Del, ou de l'instruction IDer de la fonction 10 sécurisée. [0026] Lorsque l'instruction 12 est la première instruction 'Del, de la fonction sécurisée, alors la direction Dret va de l'instruction IDeb vers l'instruction IDer. A l'inverse, lorsque l'instruction I1 est la dernière instruction IDer de la fonction sécurisée, la direction Dret va de l'instruction loe, vers l'instruction IDeb. 15 [0027] La figure 2 est représentée dans le cas particulier où l'instruction est égale à l'instruction IDeb. Pour simplifier la description, les modes de réalisation décrits en référence aux figures sont décrits dans ce cas particulier. [0028] L'instant d'exécution, par le calculateur électronique, de l'instruction I, est noté tim. Dans le cas particulier des instructions IL IDeb et 'Der, ces instants d'exécution sont 20 également notés, respectivement,.ref, d t et t .der- [0029] 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 1m 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 25 Seqk quelconque ne peut pas appartenir aussi à une autre séquence d'instructions. [0030] 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 12 et en progressant dans la direction Dref. Ainsi en partant de l'instruction 30 Il et en progressant dans la direction Dret, la première séquence d'instructions rencontrée est la séquence Seql, la deuxième séquence d'instructions rencontrée est la séquence Seq2 et ainsi de suite. [0031] 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 35 dernière instruction de la séquence Seqk dans la direction Dret. [0032] L'instant d'exécution de la première instruction de la séquence Seqk est noté t5k. [0033] 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 40 instructions lm. Elle débute par une instruction notée lzd,k et se termine par une 10 instruction notée Izt,k. La zone Zk précède systématiquement, dans la direction Dret, la séquence Seqk. Ainsi, l'instruction lid,k est systématiquement située avant, dans la direction Dref, la première instruction de la séquence Seqk. L'instruction lak est située après l'instruction lzd,k dans la direction Dret. L'instruction Ink est également située 5 avant, dans la direction Dret, ou confondue avec la première instruction de la séquence Seqk. Sur la figure 2 seule la zone Z1 associée à la séquence Seql est représentée dans le cas particulier où l'instruction I zu est confondue avec la première instruction de la séquence Seql. [0034] Chapitre I : Exemples de modes de réalisation 10 [0035] 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 15 calculateur 4. [0036] 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é 20 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. [0037] De nombreuses architectures différentes sont possibles pour le calculateur 4. 25 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 30 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. 35 [0038] Pour simplifier la figure 1, les autres composants du calculateur 4 n'ont pas été représentés. [0039] 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 40 temporelle renforcée. 11 [0040] 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 Im de la fonction sécurisée. Par la suite, les retards aléatoires introduits par le module 18 sont appelés « premiers 5 retards ». Le premier retard introduit avant l'instruction I, est introduit entre les instants tin-1 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," Cryptographic Hardware and Embedded Systems CHES 2011, Springer 10 Berlin Heidelberg, 2011, pp. 33-48. [0041] 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 Gt, de nie valeurs possibles pour ce premier délai. Le nombre ni,d, est un entier supérieur ou égal à deux. Les valeurs du groupe Gin, sont typiquement des multiples entiers d'une durée 15 élémentaire de. Dans le cas particulier décrit ici, les différentes valeurs du groupe G Lin sont notés j.de où : - j est un entier compris entre 0 et ni,m-1, et - le symbole « . » désigne, dans l'ensemble de ce texte, l'opération de multiplication. [0042] Le module 18 choisit chaque nouvelle valeur du premier délai dans le groupe 20 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,,' sont par exemple les mêmes quelles que soient les valeurs de l'indice m. [0043] Le module 20 renforce la désynchronisation temporelle des séquences Seqk 25 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- et tsk. Ici, ce deuxième retard est introduit dans la zone Zk située entre la 30 dernière instruction de la séquence Seqk-1 et la première instruction de la séquence Seqk. Ici, l'instruction lak 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. [0044] Dans le cas d'une implémentation logicielle du module 20, l'instruction lzd,k est par exemple une instruction qui appelle une routine RI2d qui déclenche l'introduction 35 du deuxième retard avant l'exécution de l'instruction lzkk. Dans ce cas, typiquement, l'instruction lak 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. [0045] Pour introduire le deuxième retard, le module 20 choisit aléatoirement une 40 valeur d'un deuxième délai dans un groupe Gai, de nz,k valeurs différentes. Le nombre 12 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 xo, Xn2,k 1. Typiquement, chaque valeur x1 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 Sad à 5 chaque valeur xl du groupe G2,k. La somme de toutes ces probabilités d'occurrence Sk[xl] est égale à un. Ensuite, un deuxième retard dont la durée est égale au deuxième délai xl est introduit entre les instants tzikk et tzt,k où sont exécutées, respectivement, les instructions lz,,k et Ink. [0046] A titre d'illustration, la routine R12d comporte des instructions qui, lorsqu'elles 10 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 15 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 xl est égale à q.dk, où dk est par exemple lui-même un multiple entier de la durée de. 20 [0047] Ici, le module 20 est associé à une mémoire dans laquelle est enregistrée pour chaque séquence Seqk : - les différentes valeurs xi du groupe G2,k, et - les probabilités d'occurrence Sk[xd associées à chacune de ces valeurs du groupe 02.k. 25 [0048] Par exemple, à titre d'illustration, ces informations sont enregistrées dans la mémoire 12. [0049] De préférence, la loi Sk est pratiquement équiprobable c'est-à-dire que, quelle que soit la valeur xl, la probabilité Sk[xl] est comprise entre 0,9/n2,k et 1,1/n2,k. Dans ce mode de réalisation, chaque loi Sk est équiprobable c'est-à-dire que chaque 30 probabilité Sk[xl] est égale à 1/n2,k. [0050] Pour accroître la désynchronisation temporelle de la séquence Seqk, les valeurs xl du groupe G2,k préenregistrées dans la mémoire 12 vérifient la condition (1) suivante : (1) \V" Sk[x,]5S,,(j + StStuaxt. où : 13 - SSk est la distribution statistique des valeurs possibles du cumul des retards déjà introduits entre les instants trek et tsk, - SSmaxk est la plus grande valeur, également appelée « maximum », de la distribution statistique SSk, 5 - p est un nombre réel supérieur ou égal à 1,05 et, de préférence, supérieur ou égal à 1,5 ou 1,8 ou 2. [0051] Le cumul des retards déjà introduits entre les instants trek et tsk comprend notamment : - le cumul des premiers retards introduits par le module 18 entre les instants trek et tsk, 10 - le cumul des deuxièmes retards introduits par le module 20 entre les instants trek et tsk-l. [0052] 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. 15 [0053] 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 20 trek 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. [0054] 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. 25 [0055] Ces explications sont données dans le cas particulier où n2.k est égal à deux de sorte que les deux valeurs du groupe G2,k sont xo et xl. De plus ici, la valeur xo est nulle et la valeur x1 est un multiple entier de la durée de. Par exemple, la valeur x1 est égale à 5de. La loi Sk est équiprobable et donc les probabilités d'occurrence des valeurs xo et x1 sont toutes les deux égales à 0,5. 30 [0056] 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 à xo lors de chaque exécution de la fonction sécurisée. 35 [0057] 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 à x1 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 xl. 14 [0058] 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 xo ou x1. 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 5 pondération de chacune de ces distributions statistiques des figures 4 et 5 sont égaux, respectivement, aux probabilités d'occurrence Sk[xo] et Sk[xl]. 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é 10 d'occurrence suivante : SEk(j.de) = Sk[xo].SSk(j.de + xo) + Sk[xd.SSk(j.cle + x1). [0059] Par conséquent, si la condition (1) est vérifiée, quelle que soit la valeur de l'indice j, la probabilité d'occurrence SEk(j.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 à 15 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 xl du groupe Gai 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 I, retarde inutilement l'exécution de la fonction sécurisée. Ici, lors de la phase 40, l'instruction I, est identifiée. Pour cela, par exemple, la distribution SP, du cumul des premiers retards 30 entre l'instant trek et l'instant tir, est déterminée en faisant croître l'indice m jusqu'à l'indice a+1. La distribution statistique SP,' est déterminée par mesure ou par calcul si PS max, V t k+ -1], V jcIN, SJI.Lcie]..5P,1 .(4+1. d'H 1,05, pz > pi et p3 > pz. Autrement dit, la valeur obtenue pour SEmaxk est plus grande quand la loi Ska 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 10 de l'exécution de la fonction sécurisée, le module 20 sélectionne parmi les différentes lois possibles SK1, 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 15 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é 20 peut aussi être réalisée en fonction de la nature des traitements actuellement exécutés par le calculateur 4. [00106] 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 25 tour pour construire la loi Sk. Dans ce cas, il est possible de construire des groupes Gik 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 30 connaître la distribution statistique SSk-1 et la loi Skg. 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+1 à partir de la distribution statistique SSt, 35 de la loi St et des lois Pm utilisées pour introduire les premiers retards entre l'instant tsti et l'instant ts1, puis 2) construire la loi St.n à partir de la distribution statistique SSt+1 et de son maximum SSmaxt-4. 23 [00107] La distribution statistique SS1 est égale à la distribution statistique SPzu car avant l'instant tri aucun autre deuxième retard que celui choisi en fonction de la loi S1 n'a encore été introduit. [00108] De nombreuses variantes de la loi Pm sont possibles. De façon similaire 5 à ce qui a été décrit pour la loi Sk, la loi P' utilisée pour choisir la valeur du premier délai n'est pas nécessairement toujours la même pour toutes les instructions I m. Par exemple, les lois P' et P,n_ri peuvent différer l'une de l'autre par une ou plusieurs des caractéristiques suivantes - le nombre n1,' de valeurs dans le groupe Gi,m, 10 - les valeurs contenues dans le groupe - les probabilités d'occurrence de chacune des valeurs du groupe G [00109] La loi P, peut aussi associer à une ou plusieurs valeurs du groupe Gi.', une probabilité d'occurrence nulle. Par exemple, la loi Pr, peut associer une valeur d'occurrence nulle à la valeur nulle du premier délai. Ainsi, à chaque fois qu'une 15 nouvelle valeur du premier délai est choisie, cette nouvelle valeur est systématiquement différente de la valeur nulle. [00110] Chapitrew2:varislual53n [00111] 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 20 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. 25 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. [00112] 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 30 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 35 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. [00113] Chapitre 111.4 : Variantes du procédé de désynchronisation temporelle [00114] 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 40 plusieurs fois la fonction sécurisée et lors de chacune de ces exécutions, seule la 24 phase 46 de désynchronisation temporelle ordinaire est mise en oeuvre. 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 5 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 10 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[xl] est systématiquement choisie égal à 1/n2,k. A partir 15 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 20 les identifiants des instructions lzd,k et Izt,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 25 phase d'exécution est par exemple identique à la phase 42 précédemment décrite. [00115] 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 Pin et du 30 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- et tsk. [00116] Dans un mode de réalisation simplifié, les instructions lzd,k et Iztk sont 35 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 lek 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. 25 [00117] 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 I zd,k, la phase 60 n'est pas exécutée. Par contre, après réception de cette commande, dès 5 que le microprocesseur 10 charge ou exécute une instruction I zd,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 à 10 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 lzkk peuvent être omises. [00118] De façon similaire, la phase 60 peut être interrompue en réponse à une commande reçue par le calculateur 4. 15 [00119] 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 Sb. Si le maximum SPmaxzd,k calculé est supérieur à ce seuil Sk, alors le module 20 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. [00120] En variante, la phase 46 n'est pas exécutée pendant toute la durée de 25 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 30 pendant la période de temps où la phase 46 est interrompue. [00121] 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 35 SEmaxk obtenu après la précédente itération des étapes 62 et 64 pour cette même séquence Seqk. [00122] 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 40 SEmaxk dans le cas où l'instant de référence trek est égal à l'instant tder et la direction 26 Drek va de l'instruction lDer vers l'instruction IDeb. Dans ce cas, les distributions statistiques SSk ou SPk sont différentes de celles construites lorsque l'instant de -deb- référence trek est égal à l'instant ttleb. 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 5 utilisé comme un instant de référence pour mettre en oeuvre une attaque par canaux auxiliaires, alors les procédés décrits ici peuvent être mis en oeuvre en choisissant comme instant trek cet instant où est exécutée cette instruction particulière. L'instant trek peut donc être situé entre les instants t -deb et tder. En particulier, pour protéger l'exécution de la fonction sécurisée, vis-à-vis de différentes attaques par canaux 10 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 trek choisi comme instant de référence. En particulier, il est utile d'exécuter en parallèle de la phase 60, 15 une phase supplémentaire de désynchronisation temporelle renforcée pour laquelle l'instant de référence trek a été choisi égal à tee,. 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. [00123] Chapitre 111.5 : Autres variantes 20 [00124] Le nombre d'instructions contenues dans la séquence Seqk est par exemple égal à un. [00125] 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 25 instructions I,. Par exemple, ce groupe comporte seulement une instruction sur deux de la fonction sécurisée. [00126] Chapitre IV : Avantages des modes de réalisation décrits [00127] 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 30 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 oeuvre 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 oeuvre dans un plus grand nombre de cas. 35 [00128] 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. [00129] Le fait de choisir chaque valeur xi entre 0,9.1.1de et 1,11.1de, où i est le plus petit entier qui vérifie la condition (3) ou (3') permet de minimiser le temps 27 d'exécution de la fonction sécurisée pour un nombre n2,k fixé à l'avance de valeurs du groupe G2.k. [00130] Le fait de choisir nal( = 2 permet de minimiser le temps d'exécution de la fonction sécurisée. 5 [00131] Le fait que les valeurs xl du groupe Gai REVENDICATIONS1. 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 phase (46) de désynchronisation temporelle ordinaire, cette phase de désynchronisation temporelle ordinaire comportant, avant l'exécution par le microprocesseur de chaque instruction 1,, d'un groupe d'instructions de la fonction, la 10 réalisation des étapes suivantes : 1) le choix aléatoire (48) d'une valeur d'un premier délai dans un groupe Ga,, de valeurs possibles pour ce premier délai, où ni,' est un entier supérieur ou égale à deux, chacune des nu, 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 15 probabilité qui associe une probabilité d'occurrence à chacune des valeurs possibles du groupe Gt,', 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 à 20 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 phase (60) de désynchronisation temporelle renforcée d'une séquence Seqk d'instructions de la fonction, cette phase de désynchronisation temporelle renforcée de la séquence 25 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 30 G2.k, les valeurs du groupe G2,k vérifiant la condition suivante : SSmax,,, jcIN , L x,l SS' j.de+ I =a où : - 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 trek et tsk, 35 - tsk est l'instant où le microprocesseur exécute la première instruction de la séquence Seqk, 29 - 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, - xo à xozk-1 sont les n2,k valeurs du groupes G2.k, 5 - Sk[xl] 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 trot 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,05, puis 4) l'introduction (64) d'un deuxième retard égal au deuxième délai entre les instants tref et t..Sk- 2. Procédé selon la revendication 1, dans lequel, quel que soit l'indice I, la probabilité d'occurrence Sk[xl] est comprise entre 0,9/n2,k et 1,1/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.I.i.de et 20 1,1.I.i.de, où i est le plus petit entier pour lequel l'une des conditions suivantes est vérifiée : SS ( j S maxi, 1) OU V jcIN, - SP -1-, 1. 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 : , I SSmax VteLiuk+T-11,V jelN, 1, 5,14 S.S'( j.cl,'+x,) 6. Procédé selon l'une quelconque des revendications précédentes, dans lequel, à partir d'une instruction If située entre la première et la dernière instructions de la 15 fonction, l'exécution de la phase (60) de désynchronisation temporelle renforcée est 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 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 If 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 lie, où l'instant ta est le dernièr 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 - S1 est un seuil positif et inférieur à 0,2. 8. Procédé selon l'une quelconque des revendications précédentes, dans lequel 35 pendant l'exécution de la fonction par le microprocesseur, en réponse au chargement 31 ou à l'exécution d'une instruction Lu 9. Procédé selon l'une quelconque des revendications précédente, dans lequel le nombre p est supérieur à 1,5. 10. Support (12) d'enregistrement d'informations, lisible par un calculateur électronique, caractérisé en ce que ce support comporte des instructions pour 10 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. 11. Calculateur électronique comportant - un microprocesseur (10) apte à exécuter des instructions d'une fonction les unes 15 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 I, d'un groupe d'instructions de la fonction, la réalisation des étapes 20 suivantes : 1) le choix aléatoire d'une valeur d'un premier délai dans un groupe G de valeurs possibles pour ce premier délai, où ni,' 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 25 probabilité qui associe une probabilité d'occurrence à chacune des valeurs possibles du groupe Gi,,, 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 30 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 112,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 32 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 : SSmnax1 où : - l'indice k est un numéro d'ordre tel que l'indice k-1 est égal au nombre de 5 séquences d'instructions à protéger à exécuter par le microprocesseur entre des instants trek et tsk, - tsk est l'instant où le microprocesseur exécute la première instruction de la séquence Seqk, - trek est un instant de référence où le microprocesseur exécute une instruction 10 particulière de la fonction, cette instruction particulière étant toujours la même lors de chaque exécution de la fonction, - )(0 à Xruk-i sont les n2,k valeurs du groupes G2.k, - Sk[xl] 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 15 déjà introduits entre les instants trer et tsk, cette distribution statistique associant une probabilité d'occurrence à chacune des valeurs possibles du cumul des retards déjà introduits entre les instants trek et tsk, et - SSmaxk est la plus grande valeur de la distribution statistique SSk, - p est un nombre réel supérieur à 1,05, puis 20 4) l'introduction (64) d'un deuxième retard égal au deuxième délai entre les instants trek et tSk. V jelN, s ix,Sskti.d