FR 3035986 A1 20161111 FR 1554077 A 20150506 1 DOMAINE DE L'INVENTION La présente invention concerne de façon générale la génération d'une signature numérique d'un message. L'invention concerne plus précisément un procédé de signature à jetons basé sur un algorithme de signature numérique. ETAT DE LA TECHNIQUE De nombreux procédés de signature numérique sont utilisés couramment en cryptographie pour générer, pour un message numérique, une signature garantissant l'identité de l'émetteur de ce message. Afin de garantir un niveau de sécurité élevé, ces procédés peuvent comprendre des opérations complexes nécessitant une capacité de calcul importante. Un tel besoin en puissance de calcul peut s'avérer problématique lors de la mise en oeuvre de tels procédés de signatures pour la signature de messages en temps réel, particulièrement lorsque ces procédés sont mis en oeuvre sur des systèmes disposant de ressources réduites, tels qu'une carte à puce. Dans le but de diminuer la quantité de calculs à mettre en oeuvre lors de la signature, des procédés de signatures permettant de réaliser à l'avance une partie de ces calculs ont été développés. Dans cette catégorie de procédés de signature, les signatures à jeton ou à coupon prévoient le calcul, préalablement à la signature d'un message, d'un jeton indépendant de ce message, le stockage de ce jeton, et sa réutilisation lors de la signature d'un message pour calculer ladite signature. De tels procédés de signature permettent de déporter en amont de la signature les calculs les plus lourds et de restreindre au minimum les besoins en puissance de calcul lors de la génération de la signature elle-même. Un exemple d'un tel procédé de signature à jeton est exposé dans Benoit Chevallier-Mames, New signature schemes with coupons and tight reduction, Applied Cryptography and Network Security - ACNS 2005, volume 3531, Lecture Notes in Computer Science, pages 513-528. Springer-Verlag, 2005. 3035986 2 Parmi les nombreux procédés de signature existants, certains procédés nécessitant de réaliser des calculs lourds lors de la signature sont les procédés reposant sur l'algorithme DSA (« Digital Signature Algorithm ») ou l'algorithme ECDSA (« Elliptic Curve Digital Signature Algorithm ») à base de courbes 5 elliptiques. A chaque signature d'un message, les procédés basés sur ces algorithmes comprennent respectivement le calcul d'une exponentiation gk avec k entier aléatoire ou des coordonnées d'un point d'une courbe elliptique en multipliant un générateur G d'une courbe elliptique par un entier aléatoire k. De tels calculs sont des opérations très couteuses, particulièrement pour un client léger tel qu'une 10 carte à puce. Malheureusement, un tel calcul ne peut pas être anticipé de manière sûre, comme dans le cas d'une signature à jeton. En effet, en cas de calcul préalable et de stockage d'un couple (k, k*G) ou (k, r) avec r fonction de gk, si un pirate parvenait à prendre connaissance de telles valeurs et d'une signature générée à partir de 15 celles-ci selon l'algorithme DSA ou ECDSA, il pourrait obtenir des informations sur la clé privée du signataire. Ce pirate pourrait alors signer frauduleusement des messages au nom dudit signataire. Il existe donc un besoin d'un procédé de signature permettant d'anticiper 20 préalablement à la signature d'un message les calculs les plus couteux tels que la détermination d'un point de courbe elliptique, sans mettre en péril la sécurité du mécanisme de signature. 25 RESUME DE L'INVENTION A cet effet, la présente invention se rapporte ainsi selon un premier aspect à un procédé de génération d'une signature d'un message destinée à être validée par un serveur vérifieur, 30 un dispositif client étant configuré pour détenir une clé privée et une clé publique correspondante, ledit procédé étant caractérisé en ce qu'il comprend des étapes de : 3035986 3 -calcul préalablement hors ligne par un module matériel de sécurité d'un jeton de signature résultat d'un chiffrement à l'aide d'une fonction de chiffrement homomorphique, - stockage dudit jeton de signature; 5 - génération de ladite signature dudit message chiffrée à l'aide de ladite fonction de chiffrement homomorphique à partir du résultat du chiffrement par ladite fonction de chiffrement homomorphique de la clé privée stockée par le dispositif client, du jeton de signature et dudit message, ladite signature étant destinée à être validée par ledit serveur vérifieur à l'aide de ladite clé publique. 10 Les étapes lourdes du calcul de la signature peuvent ainsi être réalisées à l'avance, sans compromission de la sécurité grâce au chiffrement du jeton servant à stocker le résultat de ces calculs. Le calcul de la signature peut également être délégué par le dispositif client à un autre dispositif sans que celui-ci ait besoin de 15 connaitre ni le message à signer, ni le jeton déchiffré, ni la clé privée du client de façon à ne pas mettre en péril la sécurité du mécanisme de signature. Dans le cas d'une mise en oeuvre selon le protocole ECDSA, la clé publique Q et la clé privée d peuvent vérifier Q = d*G, G étant un point d'une courbe elliptique 20 d'ordre n un entier premier, et le procédé de génération d'une signature selon le premier aspect peut également comprendre la mise en oeuvre préalablement hors ligne par ledit module matériel de sécurité des étapes de : - génération d'un aléa k entier appartenant à [1;n-1] ; - calcul de l'entier intermédiaire abscisse du point de la courbe elliptique k*G modulo 25 n; ledit jeton de signature comprenant une première partie de jeton de signature générée en chiffrant l'entier intermédiaire calculé à l'aide de ladite fonction de chiffrement homomorphique et une deuxième partie de jeton de signature générée en chiffrant l'inverse de l'aléa à l'aide de ladite fonction de chiffrement 30 homomorphique. Dans le cas d'une mise en oeuvre selon le protocole DSA, la clé publique (p,q,g,y) et la clé privée d telle que 0 REVENDICATIONS1. Procédé de génération d'une signature d'un message (m) destinée à être validée par un serveur vérifieur (3), un dispositif client (2) étant configure pour détenir, une clé privée (d) et une clé publique (Q, (p,q,g,y)) correspondante, ledit procédé étant caractérisé en ce qu'il comprend des étapes de : -calcul (103) préalablement hors ligne par un module matériel de sécurité (4) d'un jeton de signature (q)(r), (p(1/k)) résultat d'un chiffrement à l'aide d'une fonction de chiffrement homomorphique ((p), - stockage (104) dudit jeton de signature (q)(r), (p(1/k)) ; - génération (105) de ladite signature (r,$) dudit message (m) chiffrée à l'aide de ladite fonction de chiffrement homomorphique (q)(r), (p(s)) à partir du résultat (q)(d)) du chiffrement par ladite fonction de chiffrement homomorphique de la clé privée stockée par le dispositif client (d), du jeton de signature (q)(r), (p(1/k)) et dudit message (m), ladite signature étant destinée à être validée par ledit serveur vérifieur (3) à l'aide de ladite clé publique (Q, (p,q,g,y)). 2. Procédé de génération d'une signature selon la revendication précédente dans lequel la clé publique Q et la clé privée d vérifient Q = d*G, G étant un point d'une courbe elliptique d'ordre n un entier premier, dans lequel ledit module matériel de sécurité met également en oeuvre préalablement hors ligne des étapes de : - génération (101) d'un aléa k entier appartenant à [1;n-1] ; - calcul (102) de l'entier intermédiaire (r) abscisse du point de la courbe elliptique k*G modulo n; et dans lequel ledit jeton de signature comprend une première partie de jeton de signature (q)(r)) générée en chiffrant l'entier intermédiaire calculé (r) à l'aide de ladite fonction de chiffrement homomorphique ((p) et une deuxième 3035986 15 partie de jeton de signature (p(1/k)) générée en chiffrant l'inverse de l'aléa (1/k) à l'aide de ladite fonction de chiffrement homomorphique 5 3. Procédé de génération d'une signature selon la revendication 1 dans lequel la clé publique (p,q,g,y) et la clé privée d telle que 0 4. Procédé de génération d'une signature selon l'une des revendications 2 ou 3, dans lequel la signature du message m chiffrée à l'aide de ladite fonction de chiffrement homomorphique comprend une première partie de signature chiffrée à l'aide de ladite fonction de chiffrement homomorphique et générée à l'aide de la formule : (p(s) = (p((1/k)*(z+d.r)) et une deuxième partie de 25 signature chiffrée à l'aide de ladite fonction de chiffrement homomorphique égale à (p(r), avec 1/k l'inverse de l'aléa, z fonction du message m, d la clé privée stockée par le dispositif client, r l'entier intermédiaire calculé et cp la fonction de chiffrement homomorphique. 30 5. Procédé de génération d'une signature selon l'une des revendications 2 ou 3 dans lequel le jeton de signature comprend en outre le résultat (q)(r.1/k)) du chiffrement par ladite fonction de chiffrement homomorphique du produit de l'entier intermédiaire calculé (r) avec l'inverse de l'aléa (1/k). 3035986 16 6. Procédé de génération d'une signature selon la revendication précédente, dans lequel la signature du message m chiffrée à l'aide de ladite fonction de chiffrement homomorphique comprend une première partie de signature 5 chiffrée à l'aide de ladite fonction de chiffrement homomorphique et générée à l'aide de la formule : (p(s) = (p((1/k).z + d.(r.1/k)) et une deuxième partie de signature chiffrée à l'aide de ladite fonction de chiffrement homomorphique égale à (p(r), avec 1/k l'inverse de l'aléa, z fonction du message m, d la clé privée stockée 10 par le dispositif client, r l'entier intermédiaire calculé, r.1/k le produit de l'entier intermédiaire calculé avec l'inverse de l'aléa et cp la fonction de chiffrement homomorphique. 7. Produit programme d'ordinateur comprenant des instructions de code de 15 programme pour l'exécution des étapes du procédé selon l'une quelconque des revendications précédentes lorsque ledit programme est exécuté sur un ordinateur. 8. Système (1) de génération d'une signature d'un message (m) destinée à être 20 validée par un serveur vérifieur (3), un dispositif client (2) étant configuré pour détenir une clé privée (d) et une clé publique (Q, (p,q,g,y)) correspondante, ledit système comprenant : -un module matériel de sécurité (4) configuré pour calculer préalablement hors ligne un jeton de signature (q)(r),(p(1/k)) résultat d'un chiffrement à l'aide d'une 25 fonction de chiffrement homomorphique ((p), - un dispositif de stockage (8) dudit jeton de signature (q)(r),(p(1/k)), -un serveur intermédiaire (7) ou ledit module matériel de sécurité (4) configuré pour générer ladite signature (r,$) dudit message (m) chiffrée à l'aide de ladite fonction de chiffrement homomorphique (q)(r), (p(s)) à partir du résultat (q)(d)) du 30 chiffrement par ladite fonction de chiffrement homomorphique ((p) de la clé privée stockée par le dispositif client (d), du jeton de signature (q)(r), (p(1/k)) et dudit message (m), -un serveur vérifieur (3) configuré pour valider ladite signature à l'aide de ladite clé publique (Q, (p,q,g,y)).