Brevet FR3028368A1 — publié le 20160513

DOMAINE TECHNIQUE AUQUEL SE RAPPORTE L'INVENTION La présente invention concerne l'utilisation de valeurs aléatoires en cryptographie. Elle concerne plus particulièrement un procédé et un dispositif de traitement cryptographique de données. L'invention s'applique particulièrement avantageusement dans les cas où des valeurs aléatoires utilisées lors d'un traitement cryptographique de données doivent être générées sans biais. ARRIERE-PLAN TECHNOLOGIQUE Dans le cadre du traitement cryptographique des données, on met couramment en oeuvre des opérations qui utilisent une valeur aléatoire préalablement obtenue au moyen d'un processus de génération d'aléas. C'est par exemple le cas lorsqu'une technique de masquage des données traitées au moyen d'une telle valeur aléatoire est appliquée : pour chaque exécution de l'algorithme cryptographique concerné, une valeur aléatoire est générée et combinée aux données à traiter, de sorte que les données effectivement manipulées sont à chaque fois différentes, de manière imprévisible, ce qui contrecarre d'éventuelles attaques par analyse de canal auxiliaire (en anglais "Side Channel Analysis"), par exemple par observation de la puissance consommée. On utilise également une valeur aléatoire en tant que clé éphémère dans les algorithmes de signature numérique, par exemple de type DSA pour "Digital Signature Algorithm", basés sur le problème du logarithme discret. En effet, les algorithmes de ce type comprennent en général une étape dans laquelle la valeur aléatoire est appliquée à l'élément générateur du groupe fini utilisé. Afin de jouer correctement leur rôle, les valeurs aléatoires doivent toutefois être uniformément réparties, au cours des exécutions successives de l'algorithme, sur toute la plage de valeurs prévue. En effet, tout biais dans la distribution statistique des valeurs aléatoires successives pourrait être exploité par un attaquant afin d'en déduire des informations sur les données manipulées (notamment par exemple des clés secrètes), comme mentionné dans l'article "Attacking (EC)DSA Given Only an lmplicit Hint", de J.-C. Faugère, C. Goyet et G. Renault, SAC 2012. OBJET DE L'INVENTION Dans ce contexte, la présente invention propose un procédé de traitement cryptographique de données comprenant les étapes suivantes : - mémorisation d'une valeur aléatoire obtenue au moyen d'un processus de génération d'aléas ; - mise en oeuvre d'une opération utilisant la valeur mémorisée ; caractérisé par une étape de : - réalisation d'un test positif en cas d'égalité entre la valeur mémorisée et ladite valeur aléatoire obtenue. La réalisation du test après la mise en oeuvre de l'opération permet de vérifier que la valeur aléatoire générée n'a pas été altérée par un attaquant qui chercherait à introduire un biais dans les valeurs aléatoires effectivement utilisées par l'opération. Ladite opération est par exemple une étape d'un algorithme de signature numérique, basé par exemple sur le problème du logarithme discret (ou DLP pour "Discrete Logarithm Problem"), tel qu'un algorithme DSA. L'opération peut comprendre, dans ce cadre notamment, l'application de la valeur mémorisée à un générateur d'un groupe fini ; dans le cas où on utilise un algorithme sur une courbe elliptique (par exemple de type ECDSA), le générateur est un point d'une courbe elliptique. Selon une autre possibilité de mise en oeuvre de l'invention, l'opération comprend un masquage d'une donnée (par exemple une clé secrète) par la valeur mémorisée. Dans un premier mode de réalisation envisageable, le test comprend une étape de comparaison de la valeur mémorisée et d'une valeur obtenue par une nouvelle itération d'une partie du processus de génération d'aléas. Dans un second mode de réalisation, le test comprend une étape de comparaison d'un mot de vérification, obtenu à partir de la valeur mémorisée, à un mot de contrôle. Le mot de vérification et le mot de contrôle ont en général une taille (ou longueur, en nombre de bits) inférieure à celle de la valeur aléatoire, ce qui permet de limiter l'espace mémoire nécessaire à la mémorisation des données à tester (ici le mot de contrôle). En pratique, le processus de génération d'aléas peut comprendre au moins une étape de tirage d'un premier nombre aléatoire et une étape de détermination de la valeur aléatoire sur la base du premier nombre aléatoire. Le processus de génération d'aléas peut comprendre en outre au moins une étape de tirage d'un second nombre aléatoire ; la détermination de la valeur aléatoire peut alors comprendre une étape de combinaison du premier nombre aléatoire et du second nombre aléatoire au moyen d'au moins une opération d'addition booléenne. Comme expliqué plus loin, on limite ainsi les possibilités d'attaque au moment du tirage des nombres aléatoires. La partie du processus de génération d'aléas réitérée pour obtenir la 10 valeur à comparer à la valeur mémorisée peut justement comprendre l'étape de détermination de la valeur aléatoire sur la base du premier nombre aléatoire. Dans la variante où un mot de contrôle est utilisé, le procédé peut comprendre une étape de détermination du mot de contrôle en fonction notamment du premier nombre aléatoire (et par exemple en fonction du premier 15 nombre aléatoire et du second nombre aléatoire, voire d'autres nombres aléatoires utilisés pour l'obtention de la valeur aléatoire). L'invention propose également un dispositif de traitement cryptographique de données comprenant une mémoire conçue pour mémoriser une valeur aléatoire obtenue au moyen d'un processus de génération d'aléas et 20 un processeur (formé par exemple d'un microprocesseur et d'une autre mémoire, ou d'une autre partie de la mémoire précitée, mémorisant des instructions exécutables par le microprocesseur) conçu pour mettre en oeuvre d'une opération utilisant la valeur mémorisée, caractérisé en ce que le processeur est conçu pour réaliser un test positif en cas d'égalité entre la valeur mémorisée et ladite valeur 25 aléatoire obtenue. Les caractéristiques optionnelles présentées ci-dessus à propos du procédé de traitement cryptographique de données peuvent s'appliquer à un tel dispositif. DESCRIPTION DETAILLEE D'UN EXEMPLE DE REALISATION 30 La description qui va suivre en regard des dessins annexés, donnés à titre d'exemples non limitatifs, fera bien comprendre en quoi consiste l'invention et comment elle peut être réalisée. Sur les dessins annexés : - la figure 1 représente schématiquement une entité électronique dans laquelle est mise en oeuvre l'invention ; - la figure 2 est un logigramme d'un premier exemple de procédé mis en oeuvre dans l'entité électronique de la figure 1 conformément aux enseignements de l'invention ; - la figure 3 est une première partie d'un logigramme illustrant un second exemple de procédé mis en oeuvre dans l'entité électronique de la figure 1 conformément aux enseignements de l'invention ; - la figure 4 est une seconde partie du logigramme illustrant ce second exemple ; et - la figure 5 est un logigramme d'un troisième exemple de procédé mis en oeuvre dans l'entité électronique de la figure 1 conformément aux enseignements de l'invention ; - la figure 6 est une variante envisageable pour le procédé représenté à la figure 3. La figure 1 représente schématiquement les éléments principaux d'une entité électronique 1 au sein de laquelle est mise en oeuvre l'invention. Cette entité électronique est par exemple une carte à microcircuit. En variante, il pourrait s'agir d'un élément sécurisé (ou SE pour "Secure Element") - par exemple un microcontrôleur sécurisé, d'un dispositif électronique portatif (ou "hand-held electronic device" selon l'appellation anglo-saxonne) - par exemple un terminal de communication ou un passeport électronique, ou d'un ordinateur. L'entité électronique 1 comprend un microprocesseur 2, une mémoire vive 4 et une mémoire non-volatile réinscriptible 6 (par exemple de type EEPROM pour "Electrically Erasable and Programmable Read-Only Memory"). L'entité électronique 1 pourrait éventuellement comprendre en outre une mémoire morte. La mémoire vive 4 et la mémoire non-volatile réinscriptible 6 (ainsi que le cas échéant la mémoire morte) sont chacune liées au microprocesseur 2 de sorte que le microprocesseur 2 peut lire ou écrire des données dans chacune de ces mémoires. Une de ces mémoires, par exemple la mémoire non-volatile réinscriptible 6, mémorise des instructions de programme d'ordinateur qui permettent la mise en oeuvre de l'un au moins des procédés décrits ci-dessous en référence aux figures 2 à 5 lorsque ces instructions sont exécutées par le microprocesseur 2. Les mémoires 4,6 stockent également des données représentatives de valeurs utilisées lors de la mise en oeuvre des procédés décrits ci-dessous. Par exemple, la mémoire non-volatile réinscriptible 6 mémorise une clé secrète (par exemple une clé privée) d et, dans certains modes de réalisation au moins, des données représentatives de paramètres d'une courbe elliptique, notamment un générateur G d'ordre q; la mémoire vive 4 mémorise, par exemple au sein de variables, des données traitées au cours des procédés décrits ci-dessous, notamment, comme expliqué plus bas, un message m et une variable k mémorisant une valeur aléatoire. L'entité électronique 1 comprend en outre une interface de communication 8 avec des dispositifs électroniques externes. Dans le cas décrit ici où l'entité électronique 1 est une carte à microcircuit, l'interface de communication 8 comprend par exemple des contacts affleurant sur une face de la carte à microcircuit. En variante, l'interface de communication 8 pourrait être réalisée par un module de communication sans contact. De manière générale, l'interface de communication 8 peut être un module de communication (filaire ou sans fil) avec une autre entité électronique. Le microprocesseur 2 peut ainsi recevoir des données (par exemple un message m) de l'autre entité électronique via l'interface de communication 8 et émettre des données, par exemple une signature (r,$), à l'autre entité électronique via l'interface de communication 8. La figure 2 représente, sous forme de logigramme, un premier exemple de procédé conforme aux enseignements de l'invention, dans lequel l'entité électronique 1 génère une signature électronique (r,$) d'un message reçu m selon un algorithme de signature, par exemple un algorithme de signature basé sur le problème du logarithme discret tel que l'algorithme de signature numérique sur courbe elliptique ECDSA (pour "Elliptic Curve Digital Signature Algorithm"). On utilise ici un groupe (E,+), par exemple formé de points d'une courbe elliptique, ayant un générateur G d'ordre q, c'est-à-dire tel que [q].G=OE (le symbole "." désignant la multiplication scalaire et OE étant l'élément neutre du groupe E). L'ordre q s'écrit sur n bits, c'est-à-dire que les valeurs q et n vérifient : 2n-1 2) et produire la valeur aléatoire k comme la somme 25 booléenne de ces nombres kj : k =k kN. MW ill- Les étapes E14, E16 et E18 forment donc un processus de génération d'aléas au moyen duquel est obtenue la valeur aléatoire mémorisée dans la variable k. Le microprocesseur 2 vérifie alors à l'étape E20 si cette valeur aléatoire k 30 convient en tant que scalaire à appliquer au générateur G (voir ci-dessous étape E22), c'est-à-dire si cette variable k est bien inférieure à l'ordre q: en pratique, on détermine si 0 En cas de réponse positive (P), le microprocesseur 2 procède à l'étape E22 au calcul de la première partie r de la signature (r, s), en utilisant notamment la variable k mémorisée en tant que valeur aléatoire, conformément à une formule qui peut être généralisée comme suit : r = H( [k].G, m). On remarque que, selon l'algorithme de signature spécifiquement utilisé, la première partie r de la signature (r, s) dépend ou non du message m. Par exemple, dans le cadre de l'ECDSA déjà mentionné, le message m n'est pas utilisé pour le calcul de la première partie r puisque la première partie r y est définie par : r = x([k].G) mod q, où x(P) désigne l'abscisse du point P de la courbe elliptique et où mod est l'opérateur modulo. Selon un autre exemple, dans le cadre de la signature de Schnorr, le message m est utilisé pour le calcul de la première partie r; on a en effet dans ce cas : r = h(m II x([k].G)) mod q, où h est une fonction de hachage, par exemple SHA-1, et où II est l'opérateur de concaténation. Le microprocesseur 2 peut alors calculer à l'étape E24 la seconde partie s de la signature (r, s), en fonction de la variable k (valeur aléatoire), de la première partie r et de la clé privée d (mémorisée comme déjà indiqué en mémoire non-volatile 6), ainsi que, dans certains cas (selon l'algorithme utilisé), du message m: s = f(k, m, r, d). Pour reprendre les exemples qui viennent d'être mentionnés (le symbole "" représentant la multiplication dans le corps fini GF(q) de caractéristique q) : - dans le cadre de l'ECDSA, s = k-1*(d*r + h(m)) mod q; - dans le cadre de la signature de Schnorr, s = k - r*d mod q. Le microprocesseur 2 vérifie alors à l'étape E26 que la valeur mémorisée dans la variable k est bien toujours celle obtenue par le processus de génération d'aléas, ici en vérifiant que : k = k1 k2. On se prémunit ainsi contre les attaques visant à introduire un biais dans la valeur aléatoire utilisée pour le calcul de la signature électronique (r, s), par exemple en forçant à une valeur déterminée un bit de la variable k. Une telle attaque a en effet pu avoir lieu entre la mémorisation de la valeur aléatoire (étape E18) et le calcul de la signature (étapes E22 et E24). En cas de résultat négatif (N) à l'étape de vérification E26, le microprocesseur 2 procède à l'étape E28 au traitement de l'erreur détectée. Le traitement réalisé dépend du contexte (c'est-à-dire du domaine d'application) dans lequel le procédé est mis en oeuvre ; sachant toutefois qu'une telle erreur peut provenir d'une attaque, le traitement d'erreur pourra comprendre l'incrémentation d'un compteur d'erreur ou le blocage du fonctionnement de l'entité électronique 1. La signature obtenue aux étapes E22 et E24 ne sera en général pas émise en dehors de l'entité électronique 1 (puisque cette signature est susceptible, en cas d'attaque par faute, de donner des informations sur la clé privée d). En cas de résultat positif (P) à l'étape de vérification E26, le microprocesseur 2 transmet à l'étape E30, via l'interface de communication 8, la signature (r, s) obtenue aux étapes E22 et E24. Les figures 3 et 4 présentent un second exemple de procédé mis en oeuvre au sein de l'entité électronique de la figure 1, conformément aux enseignements de l'invention. Le procédé débute à l'étape E110 (représentée en figure 3) par la réception d'un message m par le microprocesseur 2 à travers l'interface de communication 8. Le microprocesseur 2 procède ensuite à l'étape E112 au tirage d'un nombre aléatoire k2 (de longueur n bits) au moyen d'un algorithme de génération de nombres aléatoires ou pseudo-aléatoires. Le microprocesseur 2 procède à l'étape E116 au tirage d'un nombre aléatoire k1 (de longueur n bits) au moyen d'un algorithme de génération de nombres aléatoires ou pseudo-aléatoires. Le microprocesseur 2 procède également, à l'étape E118, au tirage d'un nombre aléatoire I compris entre 0 et (n/8)-1 au moyen d'un algorithme de génération de nombres aléatoires ou pseudo-aléatoires (n/8 correspond à la longueur en octets des données manipulées, notamment les nombres aléatoires kl, k2 et une variable k de longueur n bits utilisée ci-dessous ; lorsque le nombre n n'est pas divisible par 8, on arrondit n/8 à l'entier supérieur). On note ci-dessous k[0], k[1], , k[(n/8)-1 ] les n/8 octets formant la variable k et ainsi k[i] l'octet d'indice i. Cette variable est mémorisée en mémoire vive 4. De même, on note k1[0], k1[1], , ki[(n/8)-1] les n/8 octets formant la variable k1 et k2[0], k2[1], k2[(n/8)-1] les n/8 octets formant la variable k2. Le microprocesseur 2 initialise alors à 0 l'indice i (étape E120). Le microprocesseur 2 met alors l'octet k[i] d'indice i de la variable k, ici mémorisée en mémoire vive 4, à une valeur égale à la somme booléenne de deux octets, d'indices distincts entre eux, respectivement du nombre aléatoire k1 et du nombre aléatoire k2, comme suit : k[i] = ki[i] k2[i+1 mod (n/8)] (étape E122). Le microprocesseur 2 incrémente l'indice i à l'étape E124 et détermine à l'étape E126 s'il reste des octets de la variable k à définir, c'est-à-dire si i En cas de réponse positive (P) à ce test, le procédé boucle à l'étape E134 pour traiter les octets ki[i], k2[i] ayant le nouvel indice i (indice incrémenté). En cas de réponse négative (N) au test de l'étape E138, tous les octets formant les nombres aléatoires k1 et k2 ont été sommés entre eux (au sens booléen) pour former le mot de contrôle C. Le microprocesseur 2 effectue alors à l'étape E140 un calcul cryptographique, ici au moyen d'une fonction cryptographique F, utilisant notamment la valeur aléatoire mémorisée dans la variable k, la clé secrète d et le message m afin d'obtenir un résultat R : R = F(k, d, m). Ce calcul cryptographique est par exemple identique à celui réalisé aux 11k 111/ étapes E22 et E24 décrites ci-dessous. Le microprocesseur 2 procède dans ce cas à l'étape E140 au calcul de la signature (r, s), en utilisant notamment la valeur aléatoire mémorisée dans la variable k: r = H( [k].G, m) et s = f(k, m, r, d). En variante, le calcul cryptographique effectué à l'étape E140 peut utiliser une fonction cryptographique F d'un autre type, et inclure un masquage de données (par exemple un masquage de la clé privée d) par la valeur aléatoire mémorisée dans la variable k, c'est-à-dire, dans le cas du masquage de la clé privée d, inclure l'opération d 0 k. (On remarque qu'il n'est pas nécessaire dans un tel mode de réalisation de mettre en oeuvre l'étape E128 décrite ci-dessus.) Le microprocesseur 2 procède alors à la détermination d'un mot de vérification C' du mot de contrôle C, en commençant par une initialisation à la valeur nulle du mot de vérification C' à l'étape E144. Le microprocesseur 2 initialise ensuite un indice i à 0 (étape E146). Le microprocesseur 2 modifie le mot de vérification C' à l'étape E148 en lui ajoutant (au sens booléen) l'octet k[i] d'indice i de la variable k: C' = C' k[i]. Le microprocesseur 2 incrémente l'indice i à l'étape El 50 et détermine à l'étape E152 s'il reste des octets de la variable k à ajouter au mot de vérification C', c'est-à-dire si i Une différence éventuelle entre le mot de vérification C' et le mot de contrôle C a donc pour origine une erreur de traitement, dont une cause possible est une attaque par un attaquant qui cherche à introduire un biais dans les valeurs aléatoires k générées afin d'obtenir des informations sur la clé secrète (par exemple la clé privée) d. Le microprocesseur 2 vérifie donc à l'étape E154 si le mot de vérification C' est égal au mot de contrôle C. En cas de résultat négatif (N) à l'étape de vérification E154, le microprocesseur 2 procède à l'étape E156 au traitement de l'erreur détectée, par exemple à l'incrémentation d'un compteur d'erreur ou au blocage du fonctionnement de l'entité électronique 1, sans émission du résultat R obtenu à l'étape E140. En cas de résultat positif (P) à l'étape de vérification E154, le microprocesseur 2 transmet à l'étape E158, via l'interface de communication 8, le résultat R obtenu à l'étape E140. La figure 5 représente les étapes principales d'un troisième exemple de procédé mis en oeuvre par l'entité électronique 1 conformément aux enseignements de l'invention. Ce procédé débute à l'étape E210, à laquelle le microprocesseur 2 reçoit 15 un message m à signer conformément à un algorithme de signature, ici également un algorithme de signature basé sur le problème du logarithme discret dans un groupe E ayant un générateur G d'ordre q (le nombre q s'écrivant sur n bits). Le microprocesseur 2 procède alors au tirage d'un nombre aléatoire k' de longueur (n+64) bits (étape E212). On pourrait utiliser en variante un nombre 20 aléatoire de longueur (en nombre de bits) supérieure à (n+64). Le microprocesseur 2 réduit ce nombre aléatoire k' modulo q et mémorise la valeur réduite obtenue dans une variable k à l'étape E214. On a donc : k = k' mod q. Les étapes E212 et E214 sont réitérées dans le seul cas où la valeur 25 (aléatoire) réduite obtenue est nulle, i.e. k = 0. On obtient ainsi, au moyen d'un processus de génération d'aléas (ici les étapes E212 et E214), une valeur aléatoire mémorisée dans la variable k et comprise entre 1 et q-1. Grâce à l'utilisation d'un nombre aléatoire k' plus long d'au moins 64 bits que l'ordre q, le biais introduit lors de la réduction modulo q 30 n'est pas détectable, comme expliqué dans la publication FIPS ("Federal Information Processing Standards") 186-3, paragraphe B.5.1. Le microprocesseur 2 procède à l'étape E216 au calcul de la première partie r de la signature (r, s), en utilisant notamment la valeur aléatoire mémorisée dans la variable k, comme suit : r = H( [k].G, m) (voir ci-dessus la description de l'étape E22 pour des explications sur cette formule). Le microprocesseur 2 procède à l'étape E218 au calcul de la seconde partie s de la signature (r, s), en fonction de la variable k (valeur aléatoire), de la première partie r et de la clé privée d, ainsi qu'éventuellement (pour certains algorithmes de signature) du message m : s = f(k, m, r, d) (voir ci-dessus la description de l'étape E24 pour des explications sur cette formule). Le microprocesseur 2 vérifie alors à l'étape E220 que la valeur mémorisée dans la variable k est bien toujours celle obtenue par le processus de génération d'aléas, ici en vérifiant qu'on a bien toujours k = k' mod q. Ainsi, si un attaquant a modifié (au cours des étapes E214 à E218) la variable k utilisée comme valeur aléatoire pour le calcul de la signature (r, s) afin d'introduire un biais dans les valeurs aléatoires utilisées lors d'exécutions successives de l'algorithme de signature, l'égalité k = k' mod q ne sera plus vérifiée et la modification effectuée par l'attaquant sera détectée. Par conséquent, en cas de résultat négatif (N) à l'étape de vérification E220, le microprocesseur 2 procède à l'étape E222 au traitement de l'erreur détectée, par exemple par incrémentation d'un compteur d'erreur ou par blocage du fonctionnement de l'entité électronique 1, sans émission de la signature (r, s) obtenue aux étapes E216 et E218. En cas de résultat positif (P) à l'étape de vérification E220, le microprocesseur 2 transmet à l'étape E224, via l'interface de communication 8, la signature (r, s) obtenue aux étapes E216 et E218. La figure 6 représente une variante envisageable pour le procédé décrit ci-dessus en référence à la figure 3. Le procédé débute à l'étape E310 représentée en figure 6 par la réception d'un message m par le microprocesseur 2 à travers l'interface de communication 8. Le microprocesseur 2 procède ensuite à l'étape E311 au tirage d'un nombre aléatoire k2 (de longueur n bits) au moyen d'un algorithme de génération de nombres aléatoires ou pseudo-aléatoires. Le microprocesseur 2 initialise alors une variable k avec la valeur du nombre aléatoire k2 (étape E312) ; en variante, on pourrait pour éviter cette étape utiliser dans toute la suite la variable k2 (mémorisant le nombre aléatoire tiré à l'étape E311) en tant que variable k. Le microprocesseur 2 initialise par ailleurs un mot de contrôle C à la valeur nulle (étape E313). Le microprocesseur 2 initialise à 0 un indice i (étape E314). Le microprocesseur 2 modifie le mot de contrôle C à l'étape E315 en lui ajoutant (au sens booléen) l'octet k[i] d'indice i de la variable k (égale au nombre aléatoire k2 à cette étape) : C = C 4 k[i]. Le microprocesseur 2 incrémente l'indice i à l'étape E316 et détermine à l'étape E317 s'il reste des octets de la variable k à ajouter au mot de contrôle C, c'est-à-dire si i Le microprocesseur 2 incrémente l'indice i à l'étape E336 et détermine à l'étape E338 s'il reste des octets du nombre aléatoire k1 à ajouter au mot de contrôle C, c'est-à-dire si i En cas de réponse négative (N) au test de l'étape E338, tous les octets formant le nombre aléatoire k1 ont été sommés entre eux (au sens booléen) en s'ajoutant (au sens booléen) au mot de contrôle C précédemment généré. Ainsi, le mot de contrôle C est la somme booléenne des octets du nombre aléatoire k2 et des octets de tous les nombre aléatoires k1 utilisés lors des différentes itérations des étapes E318 à E338 (plusieurs itérations de ces étapes pouvant avoir lieu comme déjà indiqué selon le résultat du test de l'étape E339 décrite ci-dessous). On remarque que le nombre aléatoire k2 et tous ces nombres aléatoires k1 sont justement ceux qui ont servis de base à la construction (ou obtention) de la valeur aléatoire k (par passages successifs à l'étape E332). Dans les cas où la valeur aléatoire k obtenue doit être utilisée dans un algorithme de signature basé sur le problème du logarithme discret (c'est-à-dire appliquée à un générateur G d'ordre q d'un groupe E), le microprocesseur 2 vérifie à l'étape E339 si la valeur aléatoire k obtenue convient en tant que clé éphémère pour cet algorithme de signature, c'est-à-dire si 0 En cas de réponse négative (N) à ce test, le microprocesseur 2 reprend le processus à l'étape E318 afin de générer une nouvelle valeur aléatoire k susceptible de convenir. Comme précédemment, pour cette nouvelle génération de la valeur aléatoire k, on ne procède pas à nouveau au tirage du nombre aléatoire k2 ; en effet, l'utilisation d'un nouveau nombre aléatoire k1 suffit à obtenir rapidement une valeur aléatoire k convenable. On comprend que le processus de la figure 6 permet par ailleurs de garder le bénéfice des différents nombres aléatoires k1 éventuellement tirés au cours des passages successifs à l'étape E318 (puisque ces nombres aléatoires sont tous sommés pour participer à la formation de la valeur aléatoire k). En cas de réponse positive (P) au test de l'étape E339, le procédé se poursuit en revanche à l'étape E140 décrite ci-dessus en référence à la figure 4. REVENDICATIONS1. Procédé de traitement cryptographique de données comprenant les étapes suivantes : - mémorisation (E18 ; E122; E214) d'une valeur aléatoire (k1 k2; k' mod q) obtenue au moyen d'un processus de génération d'aléas (E14, E16, E18; E112, E116, E118, E122; E212, E214; E311, E318, E319, E322) ; - mise en oeuvre d'une opération (E22, E24; E140; E216, E218) utilisant la valeur mémorisée (k) ; caractérisé par une étape de : - réalisation d'un test (E26; E154; E220) positif en cas d'égalité entre la valeur mémorisée et ladite valeur aléatoire obtenue. 2. Procédé selon la revendication 1, dans lequel ladite opération (E22, E24; E140; E216, E218) est une étape d'un algorithme de signature numérique. 3. Procédé selon la revendication 2, dans lequel l'algorithme est un algorithme DSA. 4. Procédé selon l'une des revendications 1 à 3, dans lequel ladite opération (E22; E140 ; E216) comprend l'application de la valeur mémorisée (k) à un générateur (G) d'un groupe fini. 5. Procédé selon la revendication 4, dans lequel le générateur (G) est un point d'une courbe elliptique. 6. Procédé selon la revendication 1, dans lequel ladite opération (E140) comprend un masquage d'une donnée par la valeur mémorisée (k). 7. Procédé selon la revendication 6, dans lequel ladite donnée est une clé secrète. 8. Procédé selon l'une des revendications 1 à 7, dans lequel le test comprend une étape (E26; E220) de comparaison de la valeur mémorisée (k) et d'une valeur (k1 k2 ; k' mod q) obtenue par une nouvelle itération d'une partie du processus de génération d'aléas. 9. Procédé selon l'une des revendications 1 à 7, dans lequel le test 30 comprend une étape (E154) de comparaison d'un mot de vérification (C') obtenu à partir de la valeur mémorisée (k) à un mot de contrôle (C). 10. Procédé selon l'une des revendications 1 à 9, dans lequel le processus de génération d'aléas comprend au moins une étape (E14; E112 ; E212; E311) de tirage d'un premier nombre aléatoire (k1 ; k2; k') et une étape(E18; E122; E214; E322) de détermination de la valeur aléatoire (k1 Igy mod q) sur la base du premier nombre aléatoire (k1 ; k2; k'). 11. Procédé selon la revendication 10, dans lequel le processus de génération d'aléas comprend en outre au moins une étape (E16 ; E116; E318) de tirage d'un second nombre aléatoire (k2 ; k1) et dans lequel l'étape de détermination de la valeur aléatoire (k1 k2) comprend une étape de combinaison du premier nombre aléatoire et du second nombre aléatoire au moyen d'au moins une opération d'addition booléenne. 12. Procédé selon la revendication 10 ou 11, la revendication 10 étant prise dans la dépendance de la revendication 8, dans lequel ladite partie du processus de génération d'aléas comprend l'étape de détermination de la valeur aléatoire sur la base du premier nombre aléatoire. 13. Procédé selon la revendication 10 ou 11, la revendication 10 étant prise dans la dépendance de la revendication 9, comprenant une étape (E134; E315) de détermination du mot de contrôle (C) en fonction du premier nombre aléatoire (k1). 14. Dispositif de traitement cryptographique de données comprenant une mémoire (4) conçue pour mémoriser une valeur aléatoire (k) obtenue au moyen d'un processus de génération d'aléas et un processeur (2, 6) conçu pour mettre en oeuvre d'une opération utilisant la valeur mémorisée (k), caractérisé en ce que le processeur (2, 6) est conçu pour réaliser un test positif en cas d'égalité entre la valeur mémorisée et ladite valeur aléatoire obtenue.