Brevet FR3027752A1 — publié le 20160429

DOMAINE DE L'INVENTION La présente invention concerne de façon générale le domaine de la cryptographie asymétrique, et plus particulièrement des mesures visant à contrer les attaques par analyse de puissance, connues sous les appellations « SCA » (de l'anglais « side channel analysis ») et « DPA » (de l'anglais « differential power analysis »). La présente invention vise notamment un procédé et un système de génération d'une signature numérique d'un message protégeant, à faible coût de calcul, une clé privée. CONTEXTE DE L'INVENTION Le domaine de la cryptographie asymétrique (ou « à clé publique ») repose sur la sélection par chaque entité voulant communiquer d'une paire de clés : une clé dite publique communiquée aux autres entités, et une clé dite privée qui est gardée secrète. Contrairement à la cryptographie symétrique, la cryptographie asymétrique ne nécessite pas de sécuriser le canal de communication sur lequel les clés (publiques) sont échangées. La cryptographie asymétrique est, entre autres, utilisée pour signer numériquement un message, de sorte à permettre l'authentification de son auteur. Dans le mécanisme de signature, l'expéditeur du message utilise sa propre clé privée pour coder le message et ainsi obtenir une signature. La signature est reçue puis vérifiée par le destinataire à l'aide de la clé publique de l'expéditeur et du message, lui aussi reçu. L'efficacité de la majorité des mécanismes à clé publique, tels que le chiffrement El Gamal, la signature DSA ou encore la signature EC-DSA, repose sur le problème du logarithme discret, bien connu de l'homme de l'art. Dans ces mécanismes, la signature numérique S comprend des première et deuxième composantes non-nulles de signature, notées `r' et 's' respectivement. Pour le calcul de ces composantes, un entier aléatoire secret, noté 'k', est sélectionnée, et une valeur de hachage, notée m', du message à signer M est obtenue à l'aide d'une fonction de hachage, typiquement MD5, SHA-1 et SHA-2. La première composante de signature r est déterminée à partir de l'entier aléatoire k, d'un point 'G' d'un groupe mathématique d'ordre premier et éventuellement de la valeur de hachage m: r = H ([k]G,m) où H est une fonction de hachage, [k]G représente la multiplication scalaire de G par k. La deuxième composante de signature s est déterminée à partir de l'entier aléatoire k, de la première composante de signature r, de la clé privée, notée 'd', et éventuellement de la valeur de hachage m: s= f (k,m,r, d) A titre d'exemple pour la signature DSA, r = (gk mod p) mod q et s = f (k,m,r, d) = k-1(m + rd) mod q Où g e Zp* et q est l'ordre d'un groupe cyclique dans le groupe mathématique d'ordre (p) premier Zp* muni d'une loi de groupe multiplicative. Dans les systèmes cryptographiques à courbe elliptique, un schéma de signature classiquement utilisé est la signature EC-DSA (de l'anglais « Elliptic Curve Digital Signature Algorithm »). EC-DSA diffère de DSA dans la définition du domaine de paramètres et ainsi que dans la loi de groupe utilisée pour calculer la première composante de signature r. En effet, un point de base G est sélectionné sur une courbe elliptique pour définir un groupe cyclique d'ordre premier, ordre noté 'n'. Dans une version dite de signature américaine, l'algorithme EC-DSA est le suivant : sélectionner un entier aléatoire k tel que 0 Le masquage est une contre-mesure classique aux attaques DPA. Un masque, noté `co', est utilisé avec une opération de masquage, notée `*', pour éviter l'évaluation de résultats intermédiaires dépendants directement de r et d. Par exemple, la publication WO 2008/106793 décrit une contre-mesure par masquage pour la signature américaine ci-dessus où l'opération de masquage * est la multiplication modulo l'ordre n. Dans un premier mode de réalisation de cette publication, le masque co est une valeur aléatoire et la deuxième composante de signature s vaut Ic-1(m + (d * co)(co-1 * r)) mod n. Cette réalisation n'est cependant pas sûre car le terme (d * co)(co-1 * r) dépend seulement de r et de d. En outre, en notant I, M et A, les coûts respectifs d'une inversion modulaire, d'une multiplication modulaire et d'une addition/soustraction modulaire, cette réalisation conduit à un surcoût de I+2M, ce qui peut s'avérer important, d'autant plus que l'inversion modulaire est extrêmement coûteuse. Dans un autre mode de réalisation, le masque co vaut k-1 (valeur déjà utilisée pour le calcul de la signature) et la deuxième composante de signature s vaut + (d * co)r) mod n. Cette réalisation conduit à un surcoût de M comparé à la signature américaine sans masquage. Dans la publication EP 2 378 707 également relative à la signature américaine, l'opération de masquage * proposée est l'addition modulo l'ordre n, avec un masque co égal à mr-1. La deuxième composante de signature s vaut alors (d * co) mod n. Cette solution de masquage n'est pas sûre car le masque co est public. En outre, elle conduit à un surcoût de I+M comparé à la signature américaine sans masquage. RESUME DE L'INVENTION La présente invention vise à résoudre tout ou partie des inconvénients des solutions de masquage de l'art antérieur dans le processus de signature numérique d'un message. A cet effet, l'invention concerne tout d'abord un procédé de génération d'une signature numérique d'un message dans un système de traitement cryptographique de données comprenant, en mémoire, une clé privée et un message à signer, la signature numérique comprenant des première et deuxième composantes non-nulles de signature dont l'une au moins est déterminée à partir d'une valeur de hachage du message à signer, le procédé comprenant les étapes suivantes : obtenir un entier aléatoire ; déterminer la première composante de signature à partir de l'entier aléatoire et d'un point d'un groupe mathématique d'ordre premier ; déterminer la deuxième composante de signature à partir de l'entier aléatoire, de la première composante de signature et de la clé privée ; le procédé étant caractérisé en ce que la détermination de la deuxième composante de signature comprend les étapes suivantes : masquer la première composante de signature ou la clé privée par l'entier aléatoire à l'aide d'une opération d'addition modulaire ; multiplier le résultat de masquage avec l'autre valeur parmi la première composante de signature et la clé privée ; et ajouter, au résultat de multiplication éventuellement modifié, un multiple non- nul, positif ou négatif, de ladite autre valeur parmi la première composante de signature et la clé privée. La génération de la signature numérique peut prendre part à un traitement cryptographique, duquel résulte l'envoi du message et de la signature numérique associée ainsi générée. Corrélativement, l'invention concerne également un système cryptographique de génération d'une signature numérique d'un message, le système comprenant : une mémoire stockant une clé privée et un message à signer, la signature numérique comprenant des première et deuxième composantes non-nulles de signature dont l'une au moins est déterminée à partir d'une valeur de hachage du message à signer, un générateur aléatoire pour générer un entier aléatoire ; un calculateur de signature numérique configuré pour : déterminer la première composante de signature à partir de l'entier aléatoire et d'un point d'un groupe mathématique d'ordre premier ; et déterminer la deuxième composante de signature à partir de l'entier aléatoire, de la première composante de signature et de la clé privée, l'une des première et deuxième composantes étant également déterminée à partir d'une valeur de hachage du message à signer ; le système étant caractérisé en ce que la calculateur de signature numérique est en outre configuré pour, lors de la détermination de la deuxième composante de signature : masquer la première composante de signature ou la clé privée par l'entier aléatoire à l'aide d'une opération d'addition modulaire ; multiplier le résultat de masquage avec l'autre valeur parmi la première composante de signature et la clé privée ; et ajouter, au résultat de multiplication éventuellement modifié, un multiple non- nul, positif ou négatif, de ladite autre valeur parmi la première composante de signature et la clé privée. Grâce à l'utilisation d'un masquage par addition modulaire et l'ajout d'un multiple du masque (non rendu public) au résultat obtenu, la deuxième composante de signature incluant le terme rd est ainsi obtenue de façon sécurisée et à coût moindre comparé aux techniques connues. L'invention a également pour objet un produit programme d'ordinateur comprenant des instructions adaptées à la mise en oeuvre de chacune des étapes du procédé décrit précédemment lorsque ledit programme est exécuté sur un ordinateur. D'autres caractéristiques du procédé et du système selon des modes de réalisation sont décrites dans les revendications dépendantes. Selon des modes de réalisation, le multiple non-nul vaut, au signe près, le résultat d'une multiplication de l'entier aléatoire avec ladite autre valeur parmi la première composante de signature et la clé privée. Cette disposition permet de supprimer en une action la déviation apportée par le masquage additif à l'aide de l'entier aléatoire. Il en résulte un moindre coût de calcul, ainsi qu'un masquage ne modifiant pas la valeur finale de la signature numérique. Selon des modes de réalisation, lors de l'étape de masquage, l'entier aléatoire masque la clé privée, et le multiple non-nul est fonction de la première composante de signature. Le multiple non-nul n'est pas fonction de la clé privée, mais uniquement de la première composante de signature. Cette réalisation repose sur le masquage direct de la clé privée d afin de protéger le terme rd. Elle peut s'appliquer à de nombreuses signatures numériques basées sur le problème du logarithme discret. Dans un mode de réalisation relative à la signature dite « américaine », la détermination de la deuxième composante de signature comprend le calcul de la deuxième composante de signature selon la formule suivante : s = (rn + r(w* cl)) - r où s est la deuxième composante de signature, k est l'entier aléatoire, m est la valeur de hachage, r est la première composante de signature, co est la valeur de masquage égale à k, * est l'addition modulaire pour le masquage, et d est la clé privée. Ce mode de réalisation est très efficace en ce qui concerne la protection du terme rd, ainsi que sur le faible surcoût engendré (2A). Dans une variante fournissant la même protection avec un surcoût légèrement supérieur (M+2A), la détermination de la deuxième composante de signature comprend le calcul de la deuxième composante de signature selon la formule suivante : s= k-1. (m + r Go * d) - kr) où s est la deuxième composante de signature, k est l'entier aléatoire, m est la valeur de hachage, r est la première composante de signature, co est la valeur de masquage égale à k, * est l'addition modulaire pour le masquage, et d est la clé privée. Dans un mode de réalisation relative à la signature dite « russe », la détermination de la deuxième composante de signature comprend le calcul de la deuxième composante de signature selon la formule suivante : s = r (co * d) + k(m - r) où s est la deuxième composante de signature, r est la première composante de signature, co est la valeur de masquage égale à k, * est l'addition modulaire pour le masquage, d est la clé privée, k est l'entier aléatoire, et m est la valeur de hachage. Là encore, la signature obtenue est sûre en termes de protection de rd, avec un surcoût faible de 2A par rapport à la signature « russe » classique. Dans un mode de réalisation relative à la signature dite « chinoise », la détermination de la deuxième composante de signature comprend le calcul de la deuxième composante de signature selon la formule suivante : s = (1 + d)-1(k - r (co * d) + rk) où s est la deuxième composante de signature, d est la clé privée, k est l'entier aléatoire, r est la première composante de signature, co est la valeur de masquage égale à k, et * est l'addition modulaire pour le masquage. Là encore, la signature obtenue est sûre en termes de protection de rd, avec un surcoût modeste de M+2A par rapport à la signature « chinoise » classique. Dans un mode de réalisation relative à la signature dite « de Schnorr », la détermination de la deuxième composante de signature comprend le calcul de la deuxième composante de signature selon la formule suivante : s = k - r (co * d) + rk où s est la deuxième composante de signature, d est la clé privée, k est l'entier aléatoire, r est la première composante de signature, co est la valeur de masquage égale à k, et * est l'addition modulaire pour le masquage. Là encore, la signature obtenue est sûre en termes de protection de rd, avec un surcoût modeste de M+2A par rapport à la signature « de Schnorr » classique. Pour toutes ces signatures, la détermination de la première composante de signature demeure inchangée. Selon d'autres modes de réalisation, lors de l'étape de masquage, l'entier aléatoire masque la première composante de signature, et le multiple non-nul est fonction de la clé privée. Le multiple non-nul n'est pas fonction de la première composante de signature obtenue, mais uniquement de la clé privée. Cette réalisation repose sur le masquage direct de la première composante r afin de protéger le terme rd. Elle peut s'appliquer à de nombreuses signatures numériques basées sur le problème du logarithme discret. Dans un mode de réalisation relative à la signature dite « américaine », la détermination de la deuxième composante de signature comprend le calcul de la deuxième composante de signature selon la formule suivante : s = k-1. (rn + d(co * r)) - d où s est la deuxième composante de signature, k est l'entier aléatoire, m est la valeur de hachage, r est la première composante de signature, co est la valeur de masquage égale à k, * est l'addition modulaire pour le masquage, et d est la clé privée. Le masquage selon cette disposition est sûr et à faible coût (surcoût de 2A par rapport à la signature classique « américaine »). Dans une variante ayant un surcoût légèrement supérieur (M+2A), la détermination de la deuxième composante de signature comprend le calcul de la deuxième composante de signature selon la formule suivante : s = k-1. (m + d(co * r) - kd) où s est la deuxième composante de signature, k est l'entier aléatoire, m est la valeur de hachage, r est la première composante de signature, co est la valeur de masquage égale à k, * est l'addition modulaire pour le masquage, et d est la clé privée. Dans un mode de réalisation relative à la signature dite « chinoise », la détermination de la deuxième composante de signature comprend le calcul de la deuxième composante de signature selon la formule suivante : s = (1 + d)-1(k - (co * r)d + dk) où s est la deuxième composante de signature, d est la clé privée, k est l'entier aléatoire, r est la première composante de signature, co est la valeur de masquage égale à k, et * est l'addition modulaire pour le masquage. Le surcoût par rapport à la signature classique est de M+2A. Dans un mode de réalisation relative à la signature dite « de Schnorr », la détermination de la deuxième composante de signature comprend le calcul de la deuxième composante de signature selon la formule suivante : s = k - * r)d + dk où s est la deuxième composante de signature, d est la clé privée, k est l'entier aléatoire, r est la première composante de signature, co est la valeur de masquage égale à k, et * est l'addition modulaire pour le masquage. Ici aussi, le surcoût par rapport à la signature classique est de M+2A. Pour toutes ces signatures, la détermination de la première composante de signature demeure inchangée. Les avantages, buts et caractéristiques particulières de ce dispositif, de ce programme d'ordinateur et de ce support d'information étant similaires à ceux du procédé objet de la présente invention, ils ne sont pas repris ici. BREVE DESCRIPTION DES FIGURES D'autres avantages, buts et caractéristiques particulières de la présente invention ressortiront de la description qui va suivre faite, dans un but explicatif et nullement limitatif, en regard des dessins annexés, dans lesquels : la figure 1 représente schématiquement les éléments principaux d'une forme de réalisation possible pour une carte à microcircuit ; la figure 2 représente l'allure physique générale de la carte à microcircuit de la figure 1 ; et la figure 3 illustre schématiquement un procédé de génération d'une signature numérique selon l'invention appliqué au mécanisme EC-DSA. DESCRIPTION DETAILLEE DE L'INVENTION La figure 1 représente, schématiquement, un dispositif de traitement de données 40 formant système cryptographique dans lequel la présente invention est mise en oeuvre. Ce dispositif 40 comprend un microprocesseur 10, auquel est associée d'une part une mémoire vive 60, par exemple au moyen d'un bus 70, et d'autre part une mémoire non volatile 20 (par exemple du type EEPROM), par exemple à travers un bus 50. Le dispositif de traitement de données 40, et précisément le microprocesseur 10 qu'il incorpore, peuvent échanger des données avec des dispositifs extérieurs au moyen d'une interface de communication 30. On a schématiquement représenté sur la figure 1 la transmission d'une donnée d'entrée X reçue d'un dispositif extérieur (non représenté) et transmise de l'interface de communication 30 au microprocesseur 10. De manière similaire, on a représenté la transmission d'une donnée de sortie Y du microprocesseur 10 vers 10 l'interface de communication 30 à destination d'un dispositif extérieur. Cette donnée de sortie Y est issue d'un traitement de données par le microprocesseur 10, généralement sur la donnée d'entrée X à l'aide d'une donnée secrète 80 interne au système, par exemple une clé privée, notée d, et stockée en mémoire. Bien que, pour l'illustration, les données d'entrée et les données de sortie 15 figurent sur deux flèches différentes, les moyens physiques qui permettent la communication entre le microprocesseur 10 et l'interface 30 pourront être réalisés par des moyens uniques, par exemple un port de communication série ou un bus. Le microprocesseur 10 est apte à exécuter un logiciel (ou programme d'ordinateur) qui permet au dispositif de traitement de données 40 d'exécuter un 20 procédé conforme à l'invention dont des exemples sont donnés ci-dessous en regard de la figure 3. Le logiciel est composé d'une série d'instructions de commande du microprocesseur 10 qui sont par exemple stockées dans la mémoire 20. En variante, l'ensemble microprocesseur 10 - mémoire non-volatile 20 - mémoire vive 60 peut être remplacé par un circuit à application spécifique qui 25 comprend alors des moyens de mise en oeuvre des différentes étapes du procédé selon l'invention. La figure 2 représente une carte à microcircuit qui constitue un exemple de système cryptographique conforme à l'invention tel que représenté à la figure I. L'interface de communication 30 est dans ce cas réalisée au moyen des contacts de la 30 carte à microcircuit. La carte à microcircuit incorpore un microprocesseur 10, une mémoire vive 60 et une mémoire non volatile 20 comme cela est représenté sur la figure 1. Cette carte à microcircuit est par exemple conforme à la norme ISO 7816 et munie d'un microcontrôleur sécurisé qui regroupe le microprocesseur (ou CPU) 20 et 35 la mémoire vive 60. En variante, le système cryptographique peut être inclus dans une clé USB, un document ou un support d'informations papier comportant dans l'une de ses feuilles un microcircuit associé à des moyens de communication sans contact. Il s'agit de manière préférée d'une entité électronique portable ou de poche. Bien entendu, l'invention s'applique aussi à un système cryptographique équipant un ordinateur personnel ou un serveur. Un tel système cryptographique peut équiper chacun des dispositifs d'Alice et de Bob dans l'exemple classique évoqué dans la publication WO 2008/106793 en lien avec la figure 1 de celle-ci. Dans cet exemple, Alice souhaite envoyer un message signé à Bob, laquelle signature repose sur le mécanisme EC-DSA décrit plus haut. Le processeur d'Alice obtient le message à signer M et procède à la signature de celui-ci à l'aide de sa clé privée d avant d'envoyer le message ainsi signé Y à Bob. De son côté, Bob souhaite authentifier la signature d'Alice, et pour ce faire, le processeur de Bob dispose d'une copie de la clé publique d'Alice. A partir de cette clé publique, et du message M reçu et de la signature (r, s) l'accompagnant (donnée X reçue par Bob), le processeur de Bob est capable de vérifier ladite signature et donc l'authenticité d'Alice. Les principales étapes de cette vérification sont décrites dans la publication WO 2008/106793 en lien avec la figure 2 de celle-ci. En référence à la figure 3, on décrit maintenant un exemple de procédé de génération d'une signature numérique selon l'invention appliqué au mécanisme EC- DSA par lequel le microprocesseur 10 chiffre un message M en un message signé Y (incluant le message M et la signature (r,$)). Pour rappel, un point de base G d'ordre premier est choisi sur une courbe elliptique afin de former un groupe cyclique du même ordre. Cet ordre premier est noté n. De façon classique, le message M est haché en une valeur de hachage m, et un entier aléatoire k est choisi entre 0 et n. La première composante r de signature est classiquement générée à partir d'un entier aléatoire k, du point G, et éventuellement de la valeur de hachage m (selon les signatures considérées). D'une façon générale selon l'invention, la deuxième composante s de signature requiert de masquer la première composante r de signature ou la clé privée d par l'entier aléatoire k à l'aide d'une opération d'addition modulaire ; puis de multiplier le résultat de masquage avec l'autre valeur parmi la première composante r de signature et la clé privée d; puis d'ajouter, au résultat de multiplication éventuellement modifié par une ou plusieurs opérations modulaires, un multiple non-nul, positif ou négatif, de ladite autre valeur parmi la première composante r de signature et la clé privée d. A noter que la multiplication du résultat de masquage n'est réalisée qu'avec ladite autre valeur et non avec la valeur sujette à l'opération de masquage. La figure 3 illustre l'invention. Grâce à l'utilisation d'un masquage par addition modulaire et l'ajout d'un multiple du masque (non rendu public) au résultat obtenu, la deuxième composante de signature incluant le terme rd est ainsi obtenue de façon sécurisée et à coût moindre comparé aux techniques connues. En particulier, le multiple de l'autre élément vaut, au signe près, le résultat d'une multiplication de l'entier aléatoire k (égal au masque co) avec cet autre élément (r ou d). Des premiers modes de réalisation concernent le masquage de la clé privée d par l'entier aléatoire k. Dans ce cas, le multiple non-nul ajouté est fonction de la première composante r de signature calculée précédemment et non de la clé privée d. Cela permet de supprimer l'impact du masquage de d, soumis à une multiplication modulaire avec r pour obtenir le terme rd à protéger. Dans un premier de ces modes de réalisation, relatif à la signature américaine d'EC-DSA : s = (m + r(co * d)) - mod n où le masque co utilisé vaut l'entier aléatoire k. Selon cette formule, le multiple de l'autre élément non masqué, c'est-à-dire r, vaut -r, lequel est ajouté à r(w * d) une fois ce terme modifié par l'ajout modulaire de m et la multiplication modulaire par K1. Cela compense l'effet du masquage (qui ajoute k-1.r.co). Les opérations de signature EC-DSA munies de la contremesure DPA suggérée par cette formule sont maintenant décrites à l'aide de la figure 3. A l'étape 302, le processeur d'Alice obtient le message M à signer, soit de l'extérieur, soit depuis une mémoire interne. Sur instruction demandant la signature de ce message, le processeur d'Alice détermine la valeur de hachage m=HASH(M) à partir du message M (étape 304), où HASH est une fonction de hachage cryptographique, par exemple SHA-1. Le processeur d'Alice sélectionne alors à l'étape 306 un entier aléatoire k dans l'intervalle [0, n] où n est l'ordre premier du groupe sous- jacent à EC-DSA basé sur une courbe elliptique. Le processeur d'Alice utilise k pour déterminer, à l'étape 308, la premier composante r de signature du message : r = x([1c]G) mod n où x(P) renvoie l'abscisse du point P, et G est un point de la courbe elliptique. Si r=0 (test 310), un autre entier aléatoire k est généré en rebouclant sur l'étape 306, autrement (r0), le processeur de Alice sélectionne l'entier aléatoire k comme valeur de masquage : co=k (étape 312), puis calcule la deuxième composante s de signature à l'aide de la formule ci-dessus (étape 314). Le processeur d'Alice détermine alors si cette deuxième composante s de signature est nulle (test 316) auquel cas le procédé retourne à l'étape 306. Autrement, la signature (r, s) est publiée par le processeur d'Alice (étape 318). Il s'ensuit que le processeur d'Alice transmet le message M et la signature (r, s) obtenue à Bob. Dans un mode de réalisation particulier, l'ordre des opérations pour le calcul de la deuxième composante s de signature à l'étape 314 commence par une addition modulaire a = co * d mod n, suivie d'une multiplication modulaire fi = r. a mod n, suivie d'une deuxième addition modulaire y = m + fi mod n, suivie d'une deuxième multiplication modulaire ô = k'. mod n, suivie d'une dernière addition modulaire s = ô - r mod n, pour un total de deux multiplications modulaires et trois additions modulaires (coût total 2M+3A). En comparaison, la signature américaine classique comprend deux multiplications modulaires et une seule addition modulaire (coût 2M+A), alors que les deux solutions de masquage de la publication WO 2008/106793 requièrent respectivement I+4M+A et 3M+A. Comme il est classiquement admis les équivalences suivantes : - dans le cas EC-DSA, 1=80M et M=5A, la présente invention implique un surcoût de 2A à comparer au surcoût de M=5A de la deuxième solution décrite dans WO 2008/106793; - dans le cas Zp*, I=100M et M=20A, la présente invention permet également d'obtenir une amélioration significative du surcoût. Le tableau ci-dessous résume les performances obtenues par ce mode de réalisation de l'invention, en comparaison des solutions décrites dans la publication WO 2008/106793. Solutions existantes L'invention Opération de Multiplication Multiplication Addition modulaire masquage * modulaire modulaire Formule k-1 r . (d * co) /cl .m + (d * co)r k'. (m + r(co * d)) - r Surcoût pour s I+M M 2A 99% 1% 0.1% Surcoût global (EC) 3% 0.04% 0.017% Surcoût global (Z;) 22% 0.22% 0.022% Remarque Non sûre Sûre Sûre A toutes fins utiles, on notera que le développement de la formule ci-dessus permet de constater que la valeur de s obtenue est identique à la valeur de s obtenue en utilisant la signature américaine classique : s = + k'. rd. Ainsi, la vérification de signature par le processeur de Bob demeure inchangée. A noter qu'une variante dans l'ordre des opérations pour le calcul de la deuxième composante s de signature à l'étape 314 peut être illustrée par la formule équivalente suivante : s = (m + r(co * d) - kr)] mod n. Cette variante s'avère cependant moins efficace que la première formule car le surcoût engendré est de M+2A qui s'avère tout de même meilleur que nombre de solutions existantes. Des deuxièmes modes de réalisation concernent le masquage de la première composant r de signature par l'entier aléatoire k, au lieu de la clé privée d comme ci-dessus. Dans ce cas, le multiple non-nul ajouté à la première composante r masquée est fonction de la clé privée d et non de la première composante r. Dans un mode de réalisation, relatif à la signature américaine d'EC-DSA : s= [k-1.(m+ d(co * r)) - d] mod n où le masque co utilisé vaut toujours l'entier aléatoire k. Selon cette formule, le multiple de l'autre élément non masqué, c'est-à-dire d, vaut -d. Les explications données ci-dessus en lien avec la Figure 3 s'appliquent également à ce mode de réalisation, d et r jouant un rôle inverse. Les mêmes performances que celles résumées dans le tableau ci-dessus sont par conséquent obtenues. L'approche selon l'invention peut être appliquée à nombre d'autres signatures numériques basées sur le problème du logarithme discret. Dans le domaine particulier EC-DSA, l'invention s'applique notamment à la signature russe, à la signature chinoise ou encore à la signature Schnorr. De façon connue, la signature russe, notée EC-RDSA, diffère de la signature américaine classique sur le calcul de la signature numérique (r, s), comme suit. r = x([k]G) mod n, s= (dr + km) mod n. Un mode de réalisation de l'invention prévoit, au cours de l'algorithme de la Figure 3, de calculer la deuxième composante s de signature en utilisant le masque = k, comme suit : s= [r(co * d) + k(m - r)] mod n. Ici la clé privée d est masquée, et le multiple de r qui est ajouté vaut -kr. L'ordre des opérations pour le calcul de la deuxième composante s de signature (étape 314) peut alors être le suivant : une addition modulaire a = w * d mod n, suivie d'une multiplication modulaire fi = r. a mod n, suivie d'une deuxième addition modulaire y = m - r mod n, suivie d'une deuxième multiplication modulaire ô = k. y mod n, suivie d'une dernière addition modulaire s = fi + ô mod n, pour un total de deux multiplications modulaires et trois additions modulaires (coût total 2M+3A). Le surcoût de ce processus de masquage est de 2A par rapport à la signature russe classique. De même, la signature chinoise, notée SM2-sign, diffère de la signature américaine classique sur le calcul de la signature numérique (r, s), comme suit. r = x([k1G) + m mod n, s = (1 + d)-1(k - rd) mod n. Un mode de réalisation de l'invention prévoit, au cours de l'algorithme de la Figure 3, de calculer la deuxième composante s de signature en utilisant le masque = k, comme suit : s = (1 + d)-1(k - r(co * d) + rk) mod n. Ici la clé privée d est masquée, et le multiple de r qui est ajouté vaut rk. A noter que le calcul de la première composante r (étape 308) est légèrement modifiée selon la formule ci-dessus, dans laquelle la valeur de hachage m est prise en compte. L'ordre des opérations pour le calcul de la deuxième composante s de signature (étape 314) peut alors être le suivant : une addition modulaire a = w * d mod n, suivie d'une multiplication modulaire fi = r. a mod n, suivie d'une deuxième addition modulaire y = k - fi mod n, suivie d'une deuxième multiplication modulaire = r. k mod n, suivie d'une troisième addition modulaire E = y - ô mod n, suivie d'une quatrième addition modulaire ç7 = 1 + d mod n, suivie d'une inversion modulaire = mod n, suivie d'une multiplication modulaire s = i. E mod n, pour un total d'une inversion modulaire, trois multiplications modulaires et quatre additions modulaires (coût total I+3M+4A). Le surcoût de ce processus de masquage est de M+2A par rapport à la signature chinoise classique. De façon symétrique, le masquage peut porter sur la première composante r de signature et non plus sur la clé privée d: s = (1 + d)-1(k - (co * r)d + dk) mod n. Ici la première composante r est masquée, et le multiple de d qui est ajouté vaut dk. De même également, la signature de Schnorr diffère de la signature américaine classique sur le calcul de la signature numérique (r, s), comme suit. r = h(m,x([k]G)) mod n, où h( ) est une fonction de hachage par exemple SHA-1, s = (k - rd) mod n. Un mode de réalisation de l'invention prévoit, au cours de l'algorithme de la Figure 3, de calculer la deuxième composante s de signature en utilisant le masque = k, comme suit : s = [k - r(co * d) + rk] mod n. Ici la clé privée d est masquée, et le multiple de r qui est ajouté vaut rk. A noter que le calcul de la première composante r (étape 308) est légèrement modifiée selon la formule ci-dessus, dans laquelle la valeur de hachage m est prise en compte. L'ordre des opérations pour le calcul de la deuxième composante s de signature (étape 314) peut alors être le suivant : une addition modulaire a = w * d mod n, suivie d'une multiplication modulaire fi = r. a mod n, suivie d'une deuxième addition modulaire y = k - fi mod n, suivie d'une deuxième multiplication modulaire = r. k mod n, suivie d'une troisième addition modulaire s = y + ô mod n, pour un total de deux multiplications modulaires et trois additions modulaires (coût total 2M+3A). Le surcoût de ce processus de masquage est de M+2A par rapport à la signature Schnorr classique. De façon symétrique, le masquage peut porter sur la première composante r de signature et non plus sur la clé privée d: s = [k - (co * r)d + dk] mod d. Ici la première composante r est masquée, et le multiple de d qui est ajouté vaut dk.35 Les exemples qui précèdent ne sont que des modes de réalisation de l'invention qui ne s'y limite pas.5 REVENDICATIONS1. Procédé de génération d'une signature numérique (S) d'un message dans un système de traitement cryptographique de données comprenant, en mémoire, une clé privée (d) et un message à signer (M), la signature numérique (S) comprenant des première (r) et deuxième (s) composantes non-nulles de signature dont l'une au moins est déterminée à partir d'une valeur de hachage (m) du message à signer (M), le procédé comprenant les étapes suivantes : obtenir un entier aléatoire (k) ; déterminer la première composante de signature (r) à partir de l'entier aléatoire (k) et d'un point (G) d'un groupe mathématique d'ordre premier ; déterminer la deuxième composante de signature (s) à partir de l'entier aléatoire (k), de la première composante de signature (r) et de la clé privée (d) ; le procédé étant caractérisé en ce que la détermination de la deuxième composante de signature (s) comprend les étapes suivantes : masquer la première composante de signature (r) ou la clé privée (d) par l'entier aléatoire (k) à l'aide d'une opération d'addition modulaire ; multiplier le résultat de masquage avec l'autre valeur parmi la première composante de signature (r) et la clé privée (d) ; et ajouter, au résultat de multiplication éventuellement modifié, un multiple non- nul, positif ou négatif, de ladite autre valeur parmi la première composante de signature (r) et la clé privée (d). 2. Procédé selon la revendication 1, dans lequel, lors de l'étape de masquage, l'entier aléatoire (k) masque la clé privée (d), et le multiple non-nul est fonction de la première composante de signature (r). 3. Procédé selon la revendication 2, dans lequel la détermination de la deuxième composante de signature (s) comprend le calcul de la deuxième composante de signature selon la formule suivante : s = + r(w* d)) - r où s est la deuxième composante de signature, k est l'entier aléatoire, m est la valeur de hachage, r est la première composante de signature, co est la valeur de masquage égale à k, * est l'addition modulaire pour le masquage, et d est la clé privée. 4. Procédé selon la revendication 2, dans lequel la détermination de la deuxième composante de signature (s) comprend le calcul de la deuxième composante de signature selon la formule suivante :s= k-1 . (m + r (co * d) - kr) où s est la deuxième composante de signature, k est l'entier aléatoire, m est la valeur de hachage, r est la première composante de signature, co est la valeur de masquage égale à k, * est l'addition modulaire pour le masquage, et d est la clé privée. 5. Procédé selon la revendication 2, dans lequel la détermination de la 5 deuxième composante de signature (s) comprend le calcul de la deuxième composante de signature selon la formule suivante : s = r(co * d) + k(m - r) où s est la deuxième composante de signature, r est la première composante de signature, co est la valeur de masquage égale à k, * est l'addition modulaire pour le masquage, d est la clé privée, k est l'entier aléatoire, et m est la valeur de hachage. 10 6. Procédé selon la revendication 2, dans lequel la détermination de la deuxième composante de signature (s) comprend le calcul de la deuxième composante de signature selon la formule suivante : s = (1 + d)-1(k - r(co * d) + rk) où s est la deuxième composante de signature, d est la clé privée, k est l'entier aléatoire, r est la première composante de signature, co est la valeur de 15 masquage égale à k, et * est l'addition modulaire pour le masquage. 7. Procédé selon la revendication 2, dans lequel la détermination de la deuxième composante de signature (s) comprend le calcul de la deuxième composante de signature selon la formule suivante : s = k - r (co * d) + rk où s est la deuxième composante de signature, d est la clé privée, k est 20 l'entier aléatoire, r est la première composante de signature, co est la valeur de masquage égale à k, et * est l'addition modulaire pour le masquage. 8. Procédé selon la revendication 1, dans lequel, lors de l'étape de masquage, l'entier aléatoire (k) masque la première composante de signature (r), et le multiple non-nul est fonction de la clé privée (d). 25 9. Procédé selon la revendication 8, dans lequel la détermination de la deuxième composante de signature (s) comprend le calcul de la deuxième composante de signature selon la formule suivante : s = k-1. (m + d (co * r)) - d où s est la deuxième composante de signature, k est l'entier aléatoire, m est la valeur de hachage, r est la première composante de signature, co est la valeur de 30 masquage égale à k, * est l'addition modulaire pour le masquage, et d est la clé privée. 10. Procédé selon la revendication 8, dans lequel la détermination de la deuxième composante de signature (s) comprend le calcul de la deuxième composante de signature selon la formule suivante : s = k-1. (m + d(co * r) - kd) où s est la deuxième composante de signature, k est l'entier aléatoire, m est la valeur de hachage, r est la première composante de signature, co est la valeur de masquage égale à k, * est l'addition modulaire pour le masquage, et d est la clé privée. 11. Procédé selon la revendication 8, dans lequel la détermination de la deuxième composante de signature (s) comprend le calcul de la deuxième composante de signature selon la formule suivante : s = (1 + d)-1(k - (co * r)d + dk) où s est la deuxième composante de signature, d est la clé privée, k est l'entier aléatoire, r est la première composante de signature, co est la valeur de masquage égale à k, et * est l'addition modulaire pour le masquage. 12. Procédé selon la revendication 8, dans lequel la détermination de la deuxième composante de signature (s) comprend le calcul de la deuxième composante de signature selon la formule suivante : s = k - Go * r)d + dk où s est la deuxième composante de signature, d est la clé privée, k est l'entier aléatoire, r est la première composante de signature, co est la valeur de masquage égale à k, et * est l'addition modulaire pour le masquage. 13. Procédé selon l'une quelconque des revendications précédentes, dans lequel le multiple non-nul vaut, au signe près, le résultat d'une multiplication de l'entier aléatoire (k) avec ladite autre valeur parmi la première composante de signature (r) et la clé privée (d). 14. Système cryptographique de génération d'une signature numérique (S) d'un message, le système comprenant : une mémoire stockant une clé privée (d) et un message à signer (M), la signature numérique (S) comprenant des première (r) et deuxième (s) composantes non-nulles de signature dont l'une au moins est déterminée à partir d'une valeur de hachage (m) du message à signer (M), un générateur aléatoire pour générer un entier aléatoire (k) ; un calculateur de signature numérique configuré pour : déterminer la première composante de signature (r) à partir de l'entier aléatoire (k) et d'un point (G) d'un groupe mathématique d'ordre premier ; etdéterminer la deuxième composante de signature (s) à partir de l'entier aléatoire (k), de la première composante de signature (r) et de la clé privée (d), l'une des première et deuxième composantes étant également déterminée à partir d'une valeur de hachage (m) du message à signer (M) ; le système étant caractérisé en ce que la calculateur de signature numérique est en outre configuré pour, lors de la détermination de la deuxième composante de signature (s) : masquer la première composante de signature (r) ou la clé privée (d) par l'entier aléatoire (k) à l'aide d'une opération d'addition modulaire ; 10 multiplier le résultat de masquage avec l'autre valeur parmi la première composante de signature (r) et la clé privée (d) ; et ajouter, au résultat de multiplication éventuellement modifié, un multiple non-nul, positif ou négatif, de ladite autre valeur parmi la première composante de signature (r) et la clé privée (d). 15 15. Produit programme d'ordinateur comprenant des instructions adaptées à la mise en oeuvre de chacune des étapes du procédé selon l'une quelconque des revendications 1 à 13 lorsque ledit programme est exécuté sur un ordinateur.