Brevet FR3013476A1 — publié le 20150522

La présente invention concerne le domaine de la sécurité informatique. Elle concerne plus particulièrement un procédé cryptographique. Les attaques par canal auxiliaire (« Side-Channel Analysis » ou SCA en terminologie anglo-saxonne) appartiennent à un type d'attaque sur les dispositifs informatiques consistant à surveiller l'exécution d'un processus sur un dispositif attaqué via des phénomènes physiques observables depuis l'extérieur (par exemple des temps d'exécution, une consommation électrique, des radiations électromagnétiques ou autre). En fonction de l'observation de ces phénomènes, l'attaquant peut déduire les données manipulées lors de l'exécution du processus et ainsi éventuellement percer un secret, empêcher l'exécution normale du processus ou encore forcer l'exécution d'un processus malicieux. Les attaques par canal auxiliaire constituent un risque dont il faut particulièrement se prémunir dans les procédés de cryptographie, en particulier dans la cryptographie embarquée. En effet, l'attaque peut consister à surveiller un certain nombre d'exécutions d'un processus impliquant un secret (une clé cryptographique secrète par exemple) pour le découvrir. Afin de se prémunir contre ce type d'attaques, une contremesure peut consister à complexifier le secret avec des données aléatoires afin de le rendre plus obscur. Il s'agit plus particulièrement de rendre la corrélation entre les effets observés par l'attaquant (les phénomènes) et le secret plus difficile à établir en imposant la nécessité d'un très grand nombre d'observations avant d'arriver à découvrir le secret. La cryptographie sur les courbes elliptiques (« Elliptic Curve Cryptography » ou ECC en terminologie anglo-saxonne) est un ensemble de procédés cryptographiques basés sur les courbes elliptiques et plus particulièrement sur le problème du logarithme discret. ECDSA (acronyme de « Elliptic curve digital signature algorithm ») et ECDH (acronyme de « Elliptic curve Diffie-Hellman ») sont des exemples de procédés cryptographiques sur courbes elliptiques. Le premier concerne la signature numérique de messages et le deuxième l'échange de clés cryptographiques. Le problème du logarithme discret sur courbe elliptique énonce qu'étant donnés deux point P et Q d'une courbe elliptique reliés par la relation Q = [d].P (c'est-à-dire que le point Q est le résultat de la multiplication scalaire du point P par l'entier d), il est difficile de retrouver l'entier d. Les procédés cryptographiques sur courbes elliptiques utilisent ainsi les points P et Q comme des clés cryptographiques publiques et l'entier d comme une clé cryptographique privée. Lorsqu'un dispositif informatique met en oeuvre un procédé cryptographique sur courbe elliptique, un attaquant peut observer les effets de la multiplication scalaire [d].P pour découvrir l'entier d. Il convient donc de mettre en oeuvre des moyens matériels et logiciels pour résister à des attaques par canal auxiliaire. En termes de moyens matériels, les dispositifs informatiques peuvent résister à des attaques mettant en oeuvre entre 500 et 500 000 mesures du phénomène observé. On estime cependant qu'un niveau de sécurité satisfaisant est atteint lorsque les attaques nécessitent au moins 1 000 000 mesures. Il est donc nécessaire de mettre en oeuvre des moyens logiciels pour augmenter les nombre de mesures nécessaires pour mettre en oeuvre une attaque par canal auxiliaire. Une solution peut consister à masquer l'entier d avec un entier aléatoire r de N bits (N pouvant par exemple être 32 ou 64). Au lieu de calculer le point Q comme Q = [d].P (la multiplication scalaire de P par d), on calcule le point Q comme Q = [d + r.q].P, q étant l'ordre du point P. Le résultat de ces deux multiplications est bien le même point Q car q étant l'ordre du point P et r étant un entier [d + r.q].P = [d].P modulo q. Une autre solution peut consister à séparer la multiplication scalaire en trois en déterminant un entier aléatoire r de N bits tel que d = dO.r + dl, dO et dl étant deux entiers. Au lieu de calculer le point Q comme Q = [d].P (la multiplication scalaire de P par d), on calcule le point Q comme Q = [d0].([r].P) + [d1].P. Les deux solutions ci-dessus offrent un niveau de sécurité satisfaisant puisque l'entier secret d n'est pas manipulé directement lors de la multiplication scalaire. Cependant, cette sécurisation se fait au prix d'un grand coût de calcul supplémentaire. Par exemple, pour la courbe P-192 du standard NIST (acronyme de « National lnstitute of Standards and Technology »), l'utilisation d'un entier r de 32 bits pénalise les performances de calcul du dispositif informatique de l'ordre de 16,7 %. Dans la première solution évoquée ci-dessus, au lieu de manipuler l'entier d, on manipule un entier d + r.q qui est plus grand ce qui demande une puissance de calcul plus importante. Dans la deuxième solution évoquée ci-dessus, au lieu de réaliser une seule multiplication scalaire [d].P, on en effectue plusieurs ce qui demande ici aussi une puissance de calcul plus importante. La sécurisation des procédés cryptographiques sur courbes elliptiques contre les attaques par canal auxiliaire n'est donc pas optimale en termes de coût de calcul. Ainsi, il existe un besoin pour améliorer la sécurité des systèmes informatiques vis-à-vis des attaques par canal auxiliaire. La présente invention s'inscrit dans ce cadre. Un premier aspect de l'invention concerne un système de cryptographie sur courbe elliptique comportant: - des moyens de sélection aléatoire de l'un parmi un premier nombre et de l'opposé dudit premier nombre ; - des moyens de génération de l'un parmi un premier élément cryptographique, comportant un point de la courbe elliptique, et de l'opposé dudit premier élément, au moins en fonction d'une multiplication scalaire d'un premier point de ladite courbe elliptique par un nombre, dans lesquels, l'un au moins parmi le premier point et le nombre est obtenu à partir du nombre sélectionné par lesdits moyens de sélection aléatoire, - des moyens de génération, à partir dudit premier élément cryptographique, d'un deuxième élément cryptographique comportant au moins une coordonnée d'un deuxième point de ladite courbe elliptique, ladite coordonnée étant invariante par rapport à la sélection opérée par lesdits moyens de sélection aléatoire. Un procédé selon le premier aspect permet de tirer avantage de la propriété de l'addition sur les points des courbes elliptiques selon laquelle il existe une coordonnée invariante par passage à l'opposé d'un point. En d'autres termes si un point P d'une courbe elliptique a par exemple pour coordonnées affines (X,Y), son opposé - P, au sens de l'addition sur les points d'une courbe elliptique, a pour coordonnées affines (X, -Y). La coordonnée invariante est par exemple l'abscisse. Pour représenter les points de la courbe elliptique, il est possible d'utiliser des cordonnées affines, des coordonnées projectives homogènes ou jacobéennes ou autre. En restreignant l'utilisation des points de la courbe calculés à la coordonnée invariante, on peut obtenir la même coordonnée d'un point de la courbe elliptique en utilisant l'un ou l'autre d'un entier ou de son opposé dans une multiplication scalaire. En utilisant aléatoirement l'un ou l'autre du premier nombre (par exemple une clé cryptographique privée et de son opposé), il est possible d'améliorer la robustesse du procédé cryptographique contre des attaques par canal auxiliaire à un coût léger en termes de calcul. La robustesse peut être accrue par un facteur 4 puisque l'attaquant doit observer 4 fois plus le déroulement du procédé pour découvrir la clé cryptographique secrète. Ainsi, on peut atteindre un objectif de 200 000 mesures nécessaires pour percer le secret avec un dispositif matériel ayant une robustesse intrinsèque de seulement 50 000 mesures. Cet objectif peut être atteint à un moindre coût en termes de calculs. Contrairement aux solutions de complexification de la clé cryptographique secrète de l'art antérieur, un procédé selon le premier aspect ne nécessite pas de calculs complexes mettant en oeuvre des grandes valeurs d'entiers ou plusieurs multiplications scalaires. L'utilisation aléatoire d'un entier ou de son opposé est comparativement plus légère. Un procédé selon le premier aspect implique ainsi une augmentation de la complexité de calcul de l'ordre de 0% alors que les techniques de l'art antérieur imposent une augmentation de 16,7 %. Le système peut comporter un ou plusieurs dispositifs. Les moyens du système peuvent être distribués dans un ou plusieurs dispositifs du système. Par exemple, le premier et le deuxième élément cryptographique peuvent être générés par un même dispositif ou par des dispositifs différents, selon les réalisations. Par exemple, le système comporte en outre des moyens de génération de nombre aléatoire pour générer ledit premier nombre. Le premier nombre est par exemple une clé cryptographique. Par exemple, le système comporte en outre : - des moyens de génération d'une donnée intermédiaire ou de son opposé, en fonction du nombre sélectionné par lesdits moyens de sélection aléatoire, - des moyens de transmission de ladite donnée intermédiaire vers lesdits moyens de génération dudit premier élément cryptographique. Le premier nombre ou ledit premier point est par exemple obtenu à partir de ladite donnée intermédiaire. Le nombre de ladite multiplication scalaire est par exemple obtenu à partir de ladite donnée intermédiaire. La transmission de la donnée intermédiaire peut par exemple se faire par un échange de messages type APDU, sigle de « Application Protocol Data Unit », tels que définis dans la norme ISO 7816 partie 4. Le système peut comporter un premier dispositif et un deuxième dispositif, et le premier point de ladite courbe peut être déterminé par le premier dispositif à partir d'un point de ladite courbe elliptique reçu de la part dudit deuxième dispositif. Par exemple, le système met en oeuvre un échange de clés cryptographiques entre un premier dispositif et un deuxième dispositif. Par exemple il s'agit d'échanges de type ECDH ou ECMQV. Les échanges entre le premier dispositif et le deuxième dispositif peuvent par exemple être effectués au moyen de messages type APDU. Par exemple, le système comporte en outre : - des moyens de détermination, au sein du premier dispositif, d'un troisième point de ladite courbe elliptique par multiplication scalaire d'un quatrième point connu dudit deuxième dispositif, et - des moyens de transmission, au sein du premier dispositif, dudit troisième point vers ledit deuxième dispositif, pour une détermination par ledit deuxième dispositif dudit deuxième élément cryptographique à partir dudit troisième point et du nombre sélectionné par lesdits moyens de sélection. Selon des réalisations, le système comporte un premier dispositif et un deuxième dispositif, pour une signature numérique par ledit premier dispositif d'un message à destination dudit deuxième dispositif. Par exemple, il s'agit de signatures du type ECDSA ou GOST. Les échanges entre le premier dispositif et le deuxième dispositif peuvent par exemple être effectués au moyen de messages type APDU. Des modes de réalisation peuvent être mis en oeuvre dans le cadre de la signature d'applications afin de vérifier leur intégrité avant de les exécuter. Par exemple : - ledit premier dispositif comporte des moyens de génération d'une clé cryptographique publique à partir dudit premier nombre et d'un point initial de ladite courbe, - ledit premier dispositif, comporte des moyens de multiplication de ladite coordonnée dudit premier point par ledit nombre sélectionné par lesdits moyens de sélection aléatoire, et - ledit premier dispositif comporte des moyens de transmission d'au moins ledit premier élément cryptographique à destination dudit deuxième dispositif. Selon des réalisations, ledit premier dispositif transmet en outre ladite coordonnée dudit premier point ou son opposé, en fonction du nombre sélectionné par lesdits moyens de sélection aléatoire. Par exemple, le système comporte en outre: - des moyens de réception, au sein du deuxième dispositif, dudit premier élément cryptographique, - des moyens de génération, au sein du deuxième dispositif dudit deuxième élément cryptographique à partir dudit premier élément cryptographique, de ladite clé cryptographique publique et dudit point initial, - des moyens de vérification de la signature dudit message à partir dudit premier élément et dudit deuxième élément. Par exemple, la vérification peut se faire à partir de ladite coordonnée dudit deuxième point et de ladite coordonnée dudit premier point. Par exemple, le système comporte un premier dispositif et un deuxième dispositif, pour un déchiffrement par le premier dispositif d'un message chiffré par le deuxième dispositif. Par exemple, il s'agit d'un chiffrement de type ECIES. Les échanges entre le premier dispositif et le deuxième dispositif 15 peuvent par exemple être effectués au moyen de messages type APDU. Par exemple : - ledit premier point est reçu par ledit premier dispositif, de la part dudit deuxième dispositif, - ladite génération du premier élément comporte la mise en oeuvre, 20 par ledit premier dispositif, d'une multiplication scalaire dudit premier point par ledit nombre sélectionné par lesdits moyens de sélection aléatoire, et - ledit premier dispositif met en oeuvre une fonction de dérivation de clé cryptographique symétrique à partir dudit deuxième élément cryptographique pour déchiffrer ledit message. 25 Un deuxième aspect de l'invention concerne un procédé pouvant être mis en oeuvre par un système selon le premier aspect. Un troisième aspect de l'invention concerne un programme d'ordinateur ainsi qu'un produit programme d'ordinateur et un support de stockage pour de tels programme et produit, permettant la mise en oeuvre d'un 30 procédé selon le deuxième aspect lorsque le programme est chargé et exécuté par un processeur d'un dispositif informatique. Un quatrième aspect concerne un dispositif informatique configuré pour la mise en oeuvre d'un procédé selon le deuxième aspect. Par exemple, un dispositif selon le troisième aspect est une entité électronique portable. Le dispositif selon le troisième aspect peut être une carte à puce. D'autres types de dispositifs peuvent être envisagés, notamment les documents de sécurité (passeport électronique, cartes d'identité électronique ou autre), les clés USB, les téléphones mobiles ou « smartphones ». D'autres avantages, buts et caractéristiques de la présente invention ressortent de la description détaillée qui suit, faite à titre d'exemple non limitatif, au regard des dessins annexés dans lesquels: - la figure 1 illustre schématiquement un échange de clés de type ECDH selon des modes de réalisation ; - la figure 2 illustre schématiquement un échange de clés de type 15 ECMQV selon des modes de réalisation ; - la figure 3 illustre schématiquement un mécanisme de signature numérique de type ECDSA selon des modes de réalisation ; - la figure 4 illustre schématiquement un mécanisme de signature numérique selon la norme GOST selon des modes de réalisation ; 20 - la figure 5 illustre schématiquement un mécanisme de déchiffrement de type ECIES selon des modes de réalisation ; - la figure 6 illustre schématiquement un dispositif selon des modes de réalisation. Dans la suite, il est décrit de manière schématique des procédés 25 d'échange de clés cryptographiques, des procédés de signature numérique et un procédé de déchiffrement selon des modes de réalisation. La présente invention ne se limite toutefois pas à ces types de procédé cryptographiques. D'autres procédés cryptographiques sur courbes elliptiques tirant avantage de l'invariance d'une coordonnée par passage à l'opposé d'un point d'une courbe 30 peuvent être mis en oeuvre à partir des enseignements de la présente invention. Dans la suite de la description, la notation « -d » est une notation pour 0(G)-d où G est le groupe additif défini sur une courbe elliptique et 0(G) est l'ordre de G. La figure 1 illustre schématiquement un échange de clés de type ECDH (acronyme de « Elliptic Curve Diffie-Hellman ») selon des modes de réalisation. Deux dispositifs 100 et 101 partagent une courbe elliptique sur laquelle ils peuvent calculer des points. A l'initialisation du procédé, chaque dispositif connaît un point initial P de la courbe. Lors d'une étape 102, un entier a compris entre 1 et n-1 (n étant l'ordre du point P) est déterminé au sein du dispositif 100 en tant que clé cryptographique privée. Parallèlement, lors d'une étape 103, un entier b compris entre 1 et n-1 est déterminé au sein du dispositif 101 en tant que clé cryptographique privée. Alternativement, les entiers déterminés par les dispositifs servent à générer des clés cryptographiques privées, par exemple par chiffrement de ces entiers. Les entiers a et b peuvent aussi être chacun issu d'une étape d'initialisation (ou personnalisation) respective des dispositifs lors de laquelle un tirage aléatoire est effectué et suivi d'un stockage en mémoire. Dans ce cas, les étapes 102 et 103 peuvent être des étapes d'accès aux entiers a et b. Par exemple un dispositif de personnalisation (extérieur au dispositif 100 ou 101) génère l'entier a ou b et le communique au dispositif 100 ou 101 qui le mémorise. Lors d'une étape 104, une sélection aléatoire est opérée au sein du dispositif 100 entre l'entier a et son opposé -a, un entier a' est ainsi obtenu. En parallèle, au sein du dispositif 101, un entier b' est obtenu au cours d'une étape 105 par sélection aléatoire entre l'entier b et son opposé -b. La sélection aléatoire peut se faire par génération d'un nombre aléatoire puis par sélection de l'entier ou de son opposé en fonction de la valeur du bit de poids faible (ou de poids fort) du nombre aléatoire tiré. Ensuite, il est calculé au sein de chaque dispositif une clé cryptographique publique respective à partir des entiers a' et b' (obtenus à partir des clés cryptographiques privées) et du point P initial. Ainsi, lors de l'étape 106, il est calculé au sein du dispositif 100 un point A par multiplication scalaire du point P par l'entier a' (A = [a'].P). Parallèlement, lors de l'étape 107, il est calculé au sein du dispositif 101 un point B par multiplication scalaire du point P par l'entier b' (B = [b'].P). Les dispositifs 100 et 101 échangent ensuite leurs clés publiques A et B ainsi calculées dans des messages respectifs. Après réception de la clé publique de l'autre dispositif, chaque dispositif calcul une clé cryptographique partagée secrète à partir de la clé publique reçue et d'un entier obtenu à partir de sa clé cryptographique privée. De manière aléatoire, chaque dispositif utilise soit la clé privée en tant que telle ou soit son opposé. Ainsi, lors de l'étape 108, le dispositif 100 effectue une sélection aléatoire entre l'entier a et son opposé -a, un entier a" est ainsi obtenu. En parallèle, au sein du dispositif 101, un entier h" est obtenu au cours d'une étape 109 par sélection aléatoire entre l'entier b et son opposé -b. La sélection aléatoire peut se faire par génération d'un nombre aléatoire puis par sélection de l'entier ou de son opposé en fonction de la valeur du bit de poids faible (ou de poids fort, ou d'un autre bit) du nombre aléatoire tiré. Ensuite, lors de l'étape 110, il est calculé au sein du dispositif 100 un point CA de la courbe elliptique par multiplication scalaire du point B par l'entier a" (CA = [a"].B). Parallèlement, lors de l'étape 111, il est calculé au sein du dispositif 101 un point Cg de la courbe elliptique par multiplication scalaire du point A par l'entier b" (CB = [b"].A). Les points CA et Cg calculés par les dispositifs 100 et 101 ont la même abscisse car selon les propriétés de la multiplication scalaire des points d'une courbe elliptique [a].([b].P) = [b].([a].P) et en outre, la coordonnée X des points de la courbe elliptique est invariante par passage à l'opposé (c'est-à-dire que pour chaque point P de coordonnées affines (X,Y) de la courbe le point - P a pour coordonnées affines (X,-Y)). Ainsi, la clé partagée secrète K est déterminé par chaque dispositif lors des étapes 112 et 113 en gardant la coordonnée X des points CA et Cg calculés qui est invariante par passage à l'opposé du point (K = Cg I x et K = CA I x). La coordonnée invariante est par exemple l'abscisse du point. Comme la coordonnée X des points de la courbe elliptique est invariante par passage à l'opposé (c'est-à-dire que pour chaque point P de coordonnées affines (X,Y) de la courbe le point - P a pour coordonnées affines (X,-Y)) l'utilisation aléatoire des clés privées ou de leurs opposés par les dispositifs est transparent pour le calcul de la clé partagée secrète K. L'échange de clés permet de déterminer la clé partagée secrète de manière sécurisée moyennant une opération non complexe de multiplication scalaire par un entier de signe aléatoire. Une fois la clé partagée secrète déterminée, chaque dispositif peut en déduire une clé cryptographique commune (par exemple une portion déterminée de la clé K comme ses N derniers bits ou autre) pour mettre en oeuvre, lors d'une étape 114, un algorithme de cryptographie pour échanger des messages (par exemple un algorithme symétrique tel que DES ou triple DES (acronyme de « Data Encryption Standard»). La figure 2 illustre schématiquement un échange de clés de type 20 ECMQV (acronyme de « Elliptic curve Menenzes Qu Vanstone») selon des modes de réalisation. Deux dispositifs 200 et 201 partagent une courbe elliptique sur laquelle ils peuvent calculer des points. A l'initialisation du procédé, chaque dispositif connaît un point initial P de la courbe. 25 En outre, le dispositif 200 dispose d'une paire de clés cryptographiques (A, a), A (un point de la courbe elliptique) étant sa clé cryptographique publique et a (un entier) sa clé cryptographique privée. Par exemple, le point A est obtenu à partir du point initial P selon : A = [a].P. Le dispositif 201 dispose quant à lui d'une paire de clés cryptographiques (B, b), B 30 (un point de la courbe elliptique) étant sa clé cryptographique publique et b (un entier) sa clé cryptographique privée. Par exemple, le point B est obtenu à partir du point initial P selon : B = [b].P. Lors d'une étape 202, le dispositif 200 génère un entier x compris entre 1 et n-1 (n étant l'ordre du point P). Le dispositif 200 calcule ensuite le point X de la courbe elliptique par multiplication scalaire du point P par l'entier x (X = [x]. P ). Parallèlement, lors d'une étape 204, le dispositif 201 génère un entier y compris entre 1 et n-1 (n étant l'ordre du point P). Le dispositif 201 calcule ensuite le point Y de la courbe elliptique par multiplication scalaire du point P par l'entier y (Y = [y].P). Lors d'une étape 206, une sélection aléatoire est opérée au sein du dispositif 100 entre l'entier a et son opposé -a, un entier a' est ainsi obtenu. En parallèle, au sein du dispositif 201, un entier b' est obtenu au cours d'une étape 207 par sélection aléatoire entre l'entier b et son opposé -b. La sélection aléatoire peut se faire par génération d'un nombre aléatoire puis par sélection de l'entier ou de son opposé en fonction de la valeur du bit de poids faible (ou de poids fort, ou d'un autre bit) du nombre aléatoire tiré. Ensuite, lors d'une étape 208, le dispositif 200 calcule une valeur Sa à partir de l'entier x, du point X et de l'entier a' obtenu à partir de sa clé privée a. La valeur de Sa est donnée par : Sa = + g. a', avec r=L X = (X I x mod 2L) + 2L , où XI x est l'abscisse du point X, og2n I+11 , et 2 x' = +x si a' = a ou -x si a' = -a Le dispositif 200 envoie ensuite le point X au dispositif 201 dans un 25 message 209. Parallèlement, lors d'une étape 210, le dispositif 200 calcule une valeur Sb à partir de l'entier y, du point Y et de l'entier b' (obtenu à partir de sa clé privée b). La valeur de Sb est donnée par : Sb = y' + Y .bt, avec 30 Y = x mod 2L) + 2L , où Y I x est l'abscisse du point Y, L = 11/og2 n 1+11, et I 2 I y' = +y si b' = b ou -y si b' = -b. Le dispositif 201 envoie ensuite le point Y au dispositif 200 dans un message 211. Après réception du point Y, le dispositif 200 calcule, lors d'une étape 212, un point CA à partir du point Y, de la clé cryptographique publique B du dispositif 201 pour former un point de la courbe elliptique (Y + B) d'une part et à partir d'un facteur calculé en fonction de la valeur Sa (h.Sa) d'autre part. Le point CA est calculé selon : C = [h. S a]. (Y + V.B), où h est le cofacteur de la courbe elliptique. Le calcul du point CA fait intervenir le facteur h.Sa qui vaut aléatoirement l'un de la somme h.( x+ . a ) ou de son opposé h.( -x + Y. (-a) ) en fonction de l'entier a' sélectionné. Une clé partagée secrète K est ensuite déterminée lors d'une étape 213 en gardant la coordonnée X du point CA calculé qui est invariante par passage à l'opposé du point (K = CA I x). La coordonnée invariante est ici l'abscisse du point. Parallèlement, après réception du point X, le dispositif 201 calcule le point Cg à partir du point X, de la clé cryptographique publique A du dispositif 200 pour former un point de la courbe elliptique (X + . A) d'une part et à partir d'un facteur (h.Sb) calculé en fonction de la valeur Sb d'autre part. Le point Cg est calculé selon : C = [h. S b]. (X + LA), A), où h est le cofacteur de la courbe elliptique. Le calcul du point Cg fait intervenir le facteur h.Sb qui vaut aléatoirement l'un de la somme h. (y + V. bou de son opposé h. (-y + V. (-b))en fonction de l'entier b' sélectionné. La clé partagée secrète K est ensuite déterminée lors d'une étape 215 en gardant la coordonnée X du point Cg calculé qui est invariante pas passage à l'opposé du point (K = CB I x). La coordonnée invariante est ici l'abscisse du point. Comme l'abscisse des points de la courbe elliptique est invariante par passage à l'opposé (c'est-à-dire que pour chaque point P de coordonnées (X,Y) de la courbe le point - P a pour coordonnées (X,-Y)) le calcul aléatoire facteurs h.Sa et h.Sb en fonction de a, x, b ou y ou de leurs opposés par les dispositifs est transparent pour le calcul de la clé partagée secrète K. L'échange de clés permet de déterminer la clé partagée secrète de manière sécurisée moyennant une opération non complexe de multiplication scalaire par un entier de signe aléatoire. Une fois la clé partagée secrète déterminée, chaque dispositif peut en déduire une clé cryptographique commune (par exemple une portion déterminée de la clé K comme ses N derniers bits ou autre) pour mettre en oeuvre, lors d'une étape 216, un algorithme de cryptographie pour échanger des messages (par exemple un algorithme symétrique tel que DES ou triple DES (acronyme de « Data Encryption Standard»). La figure 3 illustre schématiquement un mécanisme de signature numérique de type ECDSA (acronyme de « Elliptic curve digital signature algorithm ») selon des modes de réalisation. Deux dispositifs 300 et 301 partagent une courbe elliptique sur laquelle ils peuvent calculer des points. A l'initialisation du procédé, chaque dispositif connaît un point initial P de la courbe. Les dispositifs partagent aussi une fonction de hachage H. Lors d'une étape 302, un entier d compris entre 1 et n-1 (n étant l'ordre de P) est déterminé au sein du dispositif 300 en tant que clé cryptographique privée. Alternativement, la clé cryptographique privée est générée à partir de l'entier déterminé. L'entier d peut aussi être issu d'une étape d'initialisation (ou personnalisation) du dispositif lors de laquelle un tirage aléatoire est effectué et suivi d'un stockage en mémoire. Dans ce cas, l'étape 302 peut être une étape d'accès à l'entier d. Par exemple un dispositif de personnalisation (extérieur au dispositif 300) génère l'entier d et la clé publique Q associée et le communique au dispositif 300 qui le mémorise. Ensuite, il est calculé au sein du dispositif 300 une clé cryptographique publique Q à partir de sa clé cryptographique privée et du point P initial. Ainsi, lors de l'étape 303, il est calculé au sein du dispositif 300 un point Q par multiplication scalaire du point P par l'entier d (Q = [d].P). Lorsque l'entier d est issu de l'étape d'initialisation, la clé publique Q peut aussi être issue de cette étape d'initialisation. Dans ce cas, la clé publique Q est déjà calculée et l'étape 303 peut être une étape d'accès à la clé publique Q. Lors d'une étape 304, une sélection aléatoire est opérée au sein du dispositif 300 entre l'entier d et son opposé -d, un entier d' est ainsi obtenu. La sélection aléatoire peut se faire par génération d'un nombre aléatoire puis par sélection de l'entier ou de son opposé en fonction de la valeur du bit de poids faible (ou de poids fort) du nombre aléatoire tiré. Ensuite, il est calculé, lors de l'étape 305, un élément h déterminé en fonction du tirage aléatoire effectué à l'étape 304. Si l'entier d est tiré, l'élément h est le haché du message m à signer : h = H(m). En revanche, si l'entier -d est tiré, l'élément h est l'opposé du haché du message m à signer : h = - H(m). Il est ensuite mis en oeuvre un ensemble de calculs lors de l'étape 306 pour déterminer la signature d'un message m à transmettre au dispositif 301, à partir de la fonction de hachage, de la clé cryptographique privée et du point initial P. Ainsi, lors de l'étape 306, il est déterminé au sein du dispositif 300 un entier k compris entre 1 et n-1. Une multiplication scalaire du point P par l'entier k est ensuite effectuée donnant ainsi un point de la courbe elliptique de coordonnées (x,y). Un nombre r est ensuite déterminé comme l'abscisse du point C modulo p (r = x mod p), p étant le nombre d'éléments du corps sur lequel est définie la courbe elliptique (par exemple un corps de Gallois). La signature du message, définie par un couple (r,$) est calculée comme il suit : r = x mod p, s = k-1.( h + r.d')) mod n. La valeur r représente la coordonnée x (par exemple l'abscisse), invariante par passage à l'opposé, du point obtenu par la multiplication scalaire de P par k. La valeur r est calculée modulo n, l'ordre du point P. La valeur s est obtenue par une multiplication modulaire entre l'inverse de l'entier k (modulo l'ordre du point P) et un facteur calculé à partir du haché H(m) du message m par la fonction de hachage et la clé cryptographique privée (+/-H(m) + r.(+/-d)). De manière aléatoire, la multiplication modulaire fait intervenir aléatoirement la valeur H(m) + r.d ou son opposé. La valeur s est calculée modulo n, l'ordre du point P. Une fois la signature calculée, le dispositif 300 envoie le message signé par le couple (r,$) dans un message 307. Le dispositif 300 fait par ailleurs parvenir le point Q au dispositif 301. Une fois le message signé reçu, le dispositif 301 effectue une étape de calcul 308 en vue de la vérification de la signature du message. Le dispositif 200 calcule des valeurs u, y selon : u = H(m).s-1 mod n, = r.s-1 mod n. Ensuite, le dispositif 301 détermine la coordonnée t, invariante par passage à l'opposé, d'un point de la courbe elliptique calculé à partir de multiplications scalaires des points P et Q (t = ([u].P + [v].Q) I x). Le dispositif vérifie ensuite lors d'une étape 309 si les valeurs t et r sont égales modulo n. Comme t est la coordonnée invariante par passage à l'opposé du point [u].P + [v].Q, l'utilisation aléatoire du facteur (H(m) + r.d) ou (-H(m) +r.(-d)) par le dispositif 300 n'a pas d'incidence sur l'étape de vérification 309 (([u].P Ix + [v]. Q) Ix = ([-u].P + [-v]. Q) Ix). En fonction de l'étape de vérification 309, le dispositif 301 peut déterminer si le message m provient bien du dispositif 300 ou non. La figure 4 illustre schématiquement un mécanisme de signature numérique selon la norme GOST selon des modes de réalisation, par exemple la norme GOST-R34.10. Deux dispositifs 400 et 401 partagent une courbe elliptique sur laquelle ils peuvent calculer des points. A l'initialisation du procédé, chaque dispositif connaît un point initial P de la courbe. Les dispositifs partagent aussi une fonction de hachage H. Lors d'une étape 402, un entier d compris entre 1 et n-1 (n étant l'ordre de P) est déterminé au sein du dispositif 400 en tant que clé cryptographique privée. Alternativement, la clé cryptographique privée est générée à partir de l'entier déterminé, par exemple par chiffrement de cet entier. L'entier d peut aussi être issu d'une étape d'initialisation (ou personnalisation) du dispositif lors de laquelle un tirage aléatoire est effectué et suivi d'un stockage en mémoire. Dans ce cas, l'étape 302 peut être une étape d'accès à l'entier d. Par exemple un dispositif de personnalisation (extérieur au dispositif 400) génère l'entier d et le communique au dispositif 400 qui le mémorise. Ensuite, il est calculé au sein du dispositif 400 une clé cryptographique publique Q à partir de sa clé cryptographique privée et du point P initial. Ainsi, lors de l'étape 403, il est calculé au sein du dispositif 400 un point Q par multiplication scalaire du point P par l'entier d (Q = [d].P). Lorsque l'entier d est issue de l'étape d'initialisation, la clé publique Q peut aussi être issue de cette étape d'initialisation. La clé publique Q peut aussi être issue de l'étape d'initialisation. Dans ce cas, la clé publique Q est déjà calculée et l'étape 403 peut être une étape d'accès à la clé publique Q. Lors de l'étape 404, le dispositif 400 calcule le haché h d'un message m à signer avec la fonction de hachage H partagée (h = H(m)). Il est ensuite déterminé lors d'une étape 405 un nombre a dont la représentation binaire (bin(a)) est égale au haché h (bin(a) = h). Il est aussi déterminé un nombre e tel que e = a modulo n. Lors d'une étape 406, une sélection aléatoire est opérée au sein du dispositif 400 entre l'entier d et son opposé -d, un entier d' est ainsi obtenu. Il est ensuite mis en oeuvre un ensemble de calculs lors des étapes 407 à 409 pour déterminer la signature d'un message m à transmettre au dispositif 401, à partir de la fonction de hachage, de la clé cryptographique privée de la valeur e et du point initial P. Ainsi, lors de l'étape 407, il est déterminé au sein du dispositif 300 un entier k compris entre 1 et n-1. Une multiplication scalaire du point P par l'entier k est ensuite effectuée donnant ainsi un point C de la courbe elliptique de coordonnées (x,y). Un nombre r est ensuite déterminé comme l'abscisse du point C modulo n (r = x mod p) , p étant le nombre d'éléments du corps sur lequel est définie la courbe elliptique (par exemple un corps de Gallois). Lors de l'étape 408, il est déterminé, en fonction du tirage aléatoire de l'étape 406, un nombre k' dont la valeur est k si d' = d et dont la valeur est - k si d' = -d. Selon des modes de réalisation, l'étape 408 peut être omise. Ensuite, lors de l'étape 409, un nombre s est déterminé comme il suit : s = ( r.d' + k'.e) mod n. La signature du message m est obtenue par le couple (r, s) ou (-r, s) selon qu'il a été utilisé + ( r.d + k.e) mod n ou - ( r.d + k.e) mod n pour définir s. Si l'étape 408 est omise, s s'écrit r.d' + k.e et la signature du message m est obtenue par le couple (r, s) ou (-r, s) selon qu'il a été utilisé ( r.d + k.e) mod n ou (r.(-d) + k.e) mod n pour définir s. Le calcul de la valeur s fait intervenir une multiplication modulaire entre l'abscisse r du point P et la clé cryptographique privée d. De manière aléatoire, la signature comporte le résultat de cette opération de calcul ou son opposé. Une fois la signature calculée, le dispositif 400 envoie le message signé par le couple (r,$) ou (-r,$) dans un message 410 suivant la valeur obtenue en 406. Le dispositif 400 fait par ailleurs parvenir le point Q au dispositif 401. Une fois le message signé reçu, le dispositif 401 effectue des étapes de calcul en vue de la vérification de la signature du message. Le dispositif 400 calcule tout d'abord le haché h lors d'une étape 411, et la valeur e lors d'une étape 412. Ensuite, il est déterminé lors de l'étape 413, l'inverse y de la valeur e modulo n (y = e-1 mod n). Cette valeur est ensuite utilisée pour déterminer les valeurs ziet z2 lors de l'étape 414 selon : z1 = s.v mod n et z2 = r.v mod n (on utilise + r ou -r en fonction de ce qui est reçu dans le message 410, ainsi le dispositif vérificateur n'a pas à être modifié). Ensuite, le dispositif 401 détermine la coordonnée r, invariante par passage à l'opposé, d'un point C de la courbe elliptique calculé à partir de multiplications scalaires des points Pet Q (r = C I x et C = [z1].P + [z2].Q). Le dispositif vérifie ensuite lors d'une étape 416 si les valeurs R et r sont égales modulo n. Comme r est la coordonnée invariante par passage à l'opposé du point C = [u].P + [v].Q, l'utilisation aléatoire des valeurs ( r.d + k.e) mod n et + r ou -( r.d + k.e) mod n et -r par le dispositif 400 n'a pas d'incidence sur l'étape de vérification 416. En fonction de l'étape de vérification 416, le dispositif 401 peut déterminer si le message m provient bien du dispositif 400 ou non. La figure 5 illustre schématiquement un mécanisme de déchiffrement de type ECIES (acronyme de « Elliptic curve integrated encryption scheme ») selon des modes de réalisation. Deux dispositifs 500 et 501 partagent une courbe elliptique sur laquelle ils peuvent calculer des points. A l'initialisation du procédé, chaque dispositif connaît un point initial G de la courbe. Lors d'une étape 502, un entier kB compris entre 1 et n-1 (n étant l'ordre du point G) est déterminé au sein du dispositif 501 en tant que clé cryptographique privée. Alternativement, la clé cryptographique privée est générée à partir de l'entier déterminé, par exemple par chiffrement de cet entier. L'entier kB peut aussi être issu d'une étape d'initialisation (ou personnalisation) du dispositif lors de laquelle un tirage aléatoire est effectué et suivi d'un stockage en mémoire. Dans ce cas, l'étape 502 peut être une étape d'accès à l'entier kB. Par exemple un dispositif de personnalisation (extérieur au dispositif 501) génère l'entier kB et le communique au dispositif 501 qui le mémorise. Ensuite, il est calculé au sein du dispositif 501 une clé cryptographique publique Kg à partir de la clé cryptographique privée et du point G initial. Ainsi, lors de l'étape 503, il est calculé un point Kg par multiplication scalaire du point P par l'entier kB (KB = [kB].G). La clé publique Kg peut aussi être issue de l'étape d'initialisation. Dans ce cas, la clé publique Kg est déjà calculée et l'étape 503 peut être une étape d'accès à la clé publique Kg. Le dispositif 501 transmet ensuite la clé publique Kg au dispositif 500 dans un message 504. Pour chiffrer un message m à envoyer au dispositif 501, le dispositif 500 met en oeuvre les étapes de calcul suivantes. Dans une étape 505, un entier r compris entre 1 et n-1 est déterminé (n est l'ordre du point G). Ensuite, lors de l'étape 506, un point R est calculé par multiplication scalaire du point G par l'entier r (R = [r].G). Un secret partagé S est ensuite calculé lors de l'étape 507 comme l'abscisse du point obtenu par multiplication scalaire du point de la clé publique Kg par l'entier r (S = [r]. KB I x). Le secret partagé est ensuite utilisé pour dériver des clés cryptographiques symétriques kE, kM, par exemple de type MAC (acronyme de « Message authentication code») selon : kE II kM = KDF(S II 51), où KDF est une fonction de dérivation de clés et 51 est une information partagée par les dispositifs 500 et 501. Lors de l'étape 509, le dispositif 500 chiffre le message m à partir de la clé kE en utilisant une fonction de chiffrement E (c = E(kE ; m)). Une valeur de vérification d est ensuite calculée lors de l'étape 510 à partir de la clé kM, du message chiffré c et d'une information S2 partagée par les dispositifs 500 et 501. Le message chiffré est ensuite transmis au dispositif 501 avec le point R et la valeur de vérification. Par exemple ces éléments sont concaténés dans un message 511. A réception du message 511, le dispositif 501, lors de l'étape 512 opère une sélection aléatoire entre l'entier kB et son opposé - kB, un entier kB' est ainsi obtenu. Ensuite, le dispositif 501 calcule, lors de l'étape 513, un point C par multiplication scalaire du point R avec l'entier kB', et donc aléatoirement avec la clé privée kB ou son opposé. Ensuite, lors de l'étape 514, le secret partagé S est obtenu comme l'abscisse du point C. Ainsi, S =Clx= [kB1R I x). Ensuite, lors de l'étape 515, le secret partagé est utilisé pour dériver les clés de cryptage symétrique kE, kM selon : kE II kM = KDF(S II Si). Lors de l'étape 516, le dispositif vérifie ensuite que la valeur de vérification d est correcte. Si c'est le cas, le message c est déchiffré lors de l'étape 517 à partir de la clé kM, du message chiffré c et de l'information S2 partagée par les dispositifs 500 et 501 en utilisant la fonction de déchiffrement E1 inverse à la fonction de chiffrement E (m = El(kE ; c)). Comme l'abscisse est invariante par passage à l'opposé du point [kB].R, l'utilisation de la valeur kB ou -kB dans la multiplication scalaire pour obtenir le secret S est transparente. Le secret S obtenu est le même. Dans tous les procédé décrits ci-dessus, la propriété d'invariance de la coordonnée affine X des points de la courbe elliptique est utilisée de manière à rendre plus complexe une observation des dispositifs pour percer un secret de cryptographie. Cette protection est mise en oeuvre sans coût excessif en termes de calculs puisqu'il est utilisé aléatoirement des valeurs ou leurs opposés. Un programme d'ordinateur pour la mise en oeuvre d'un procédé cryptographique selon des modes de réalisation de l'invention peut être réalisé par la personne du métier à la lecture des figures 1 à 5 et de la présente description détaillée. La figure 6 illustre schématiquement un dispositif selon des modes de réalisation. Un système selon des modes de réalisation peut comporter un ou plusieurs dispositifs tels que schématisés par la figure 6. Les dispositifs présentés en référence aux figures 1 à 5 peuvent avoir la structure présentée ci-après. Le dispositif 600 de la figure 6 comporte une unité de mémoire 601 (MEM). Cette unité de mémoire comporte une mémoire vive pour stocker de manière non durable des données de calcul utilisées lors de la mise en oeuvre d'un procédé conforme à l'invention, selon divers modes de réalisation. L'unité de mémoire comporte par ailleurs une mémoire non volatile (par exemple du type EEPROM) pour stocker par exemple un programme d'ordinateur, selon un mode de réalisation, pour son exécution par un processeur (non représenté) d'une unité de traitement 602 (PROC) du dispositif. La mémoire non volatile peut aussi stocker le premier nombre utilisé pour la génération du premier élément cryptographique. La mémoire non volatile peut en particulier stocker des clés cryptographiques. Le dispositif comporte par ailleurs une unité de communication 603 (COM), par exemple pour échanger des données avec un autre dispositif conformément à des modes de réalisation. Les échanges de données entre dispositifs peuvent se faire selon le protocole APDU. L'unité de communication peut ainsi comporter une interface entrée/sortie apte à échanger selon ce protocole. Les données échangées peuvent se faire par des commandes APDU et des réponses à ce type de commandes. Un dispositif selon des modes de réalisation peut être conforme à la norme 1S07816. Il peut par exemple s'agir d'une carte à puce ou d'un élément sécurisé. Un dispositif selon des modes de réalisation est par exemple un circuit intégré. La présente invention a été décrite et illustrée dans la présente description détaillée en référence aux figures jointes. Toutefois la présente invention ne se limite pas aux formes de réalisation présentées. D'autres variantes, modes de réalisation et combinaisons de caractéristiques peuvent être déduits et mis en oeuvre par la personne du métier à la lecture de la présente description et des figures annexées. Dans les revendications, le terme "comporter" n'exclut pas d'autres éléments ou d'autres étapes. L'article indéfini « un » n'exclut pas le pluriel. Un seul processeur ou plusieurs autres unités peuvent être utilisées pour mettre en oeuvre l'invention. Les différentes caractéristiques présentées et/ou revendiquées peuvent être avantageusement combinées. Leur présence dans la description ou dans des revendications dépendantes différentes, n'exclut pas en effet la possibilité de les combiner. Les signes de référence ne sauraient être compris comme limitant la portée de l'invention. REVENDICATIONS1. Système de cryptographie sur courbe elliptique comportant: - des moyens de sélection aléatoire (108, 206, 304, 406, 512) de l'un parmi un premier nombre et de l'opposé dudit premier nombre ; - des moyens de génération (110, 212, 308, 415, 513) de l'un parmi un premier élément cryptographique, comportant un point de la courbe elliptique, et de l'opposé dudit premier élément, au moins en fonction d'une multiplication scalaire d'un premier point de ladite courbe elliptique par un nombre, dans lesquels, l'un au moins parmi le premier point et le nombre est obtenu à partir du nombre sélectionné par lesdits moyens de sélection aléatoire, - des moyens de génération (112, 213, 308, 415, 514), à partir dudit premier élément cryptographique, d'un deuxième élément cryptographique comportant au moins une coordonnée d'un deuxième point de ladite courbe elliptique, ladite coordonnée étant invariante par rapport à la sélection opérée par lesdits moyens de sélection aléatoire. 2. Système selon la revendication 1, comportant en outre des moyens de génération de nombre aléatoire pour générer ledit premier nombre. 3. Système selon la revendication 1 ou 2, dans lequel ledit premier nombre est une clé cryptographique. 25 4. Système selon l'une des revendications précédentes, comportant en outre : - des moyens de génération d'une donnée intermédiaire ou de son opposé, en fonction du nombre sélectionné par lesdits moyens de 30 sélection aléatoire, - des moyens de transmission de ladite donnée intermédiaire vers lesdits moyens de génération dudit premier élément cryptographique,dans lequel ledit premier nombre ou ledit premier point est obtenu à partir de ladite donnée intermédiaire. 5. Système selon la revendication 4, dans lequel, ledit nombre de ladite multiplication scalaire est obtenu à partir de ladite donnée intermédiaire. 6. Système selon l'une des revendications précédentes comportant un premier dispositif (100, 200) et un deuxième dispositif (101, 202), dans lequel ledit premier point (B, (Y + 17.B) ) de ladite courbe est déterminé par le premier dispositif à partir d'un point de ladite courbe elliptique reçu (107, 211) de la part dudit deuxième dispositif. 7. Système selon l'une des revendications précédentes, comportant un premier dispositif (100, 200) et un deuxième dispositif (101, 201), pour un échange de clés cryptographiques (A, B). 8. Système selon l'une des revendications précédentes, comportant un premier dispositif (100, 200) et un deuxième dispositif (101, 201), et 20 comportant en outre: - des moyens de détermination (106, 203), au sein du premier dispositif, d'un troisième point (A, X) de ladite courbe elliptique par multiplication scalaire d'un quatrième point (P) connu dudit deuxième dispositif, et - moyens de transmission (106, 209), au sein du premier dispositif, 25 dudit troisième point vers ledit deuxième dispositif, pour une détermination par ledit deuxième dispositif dudit deuxième élément cryptographique (K) à partir dudit troisième point et du nombre sélectionné par lesdits moyens de sélection. 30 9. Système selon la revendication 1, comportant un premier dispositif (300, 400) et un deuxième dispositif (301, 401), pour une signature numérique par ledit premier dispositif d'un message (m) à destination dudit deuxième dispositif. 35 10. Système selon la revendication 9, dans lequel:- ledit premier dispositif comporte des moyens (303, 403) de génération d'une clé cryptographique publique (Q) à partir dudit premier nombre (d) et d'un point initial (P) de ladite courbe, - ledit premier dispositif, comporte des moyens de multiplication de ladite coordonnée (x) dudit premier point ([k].P) par ledit nombre (+/-d) sélectionné par lesdits moyens de sélection aléatoire, et - ledit premier dispositif comporte des moyens de transmission (307) d'au moins ledit premier élément cryptographique à destination dudit deuxième dispositif. 11. Système selon la revendication 10, dans lequel, ledit premier dispositif (400) transmet en outre ladite coordonnée dudit premier point ou son opposé (+/-r), en fonction du nombre sélectionné par lesdits moyens de sélection aléatoire. 12. Système selon l'une des revendications 9 à 11, comportant en outre: - des moyens de réception (307, 410), au sein du deuxième dispositif (301, 401), dudit premier élément cryptographique, - des moyens de génération (308, 415), au sein du deuxième dispositif dudit deuxième élément cryptographique (t, r) à partir dudit premier élément cryptographique, de ladite clé cryptographique publique (Q) et dudit point initial (P), - des moyens de vérification (309, 416) de la signature dudit message à partir dudit premier élément et dudit deuxième élément. 13. Système selon la revendication 1, comportant un premier dispositif (501) et un deuxième dispositif (500), pour un déchiffrement par le premier dispositif d'un message chiffré par le deuxième dispositif. 14. Système selon la revendication 13, dans lequel:- ledit premier point (R) est reçu (511) par ledit premier dispositif, de la part dudit deuxième dispositif, - ladite génération du premier élément comporte la mise en oeuvre, par ledit premier dispositif, d'une multiplication scalaire dudit premier point par ledit nombre (+/-kB) sélectionné par lesdits moyens de sélection aléatoire, et - ledit premier dispositif met en oeuvre (515) une fonction de dérivation de clé cryptographique symétrique à partir dudit deuxième élément cryptographique pour déchiffrer ledit message. 15. Procédé de cryptographie sur courbe elliptique comportant les étapes suivantes de : - sélection aléatoire (108, 206, 304, 406, 512) de l'un parmi un premier nombre et de l'opposé dudit premier nombre ; - de génération (110, 212, 308, 415, 513) de l'un parmi un premier élément cryptographique, comportant un point de la courbe elliptique, et de l'opposé dudit premier élément, au moins en fonction d'une multiplication scalaire d'un premier point de ladite courbe elliptique par un nombre, l'un au moins parmi le premier point et le nombre est obtenu à partir du nombre sélectionné lors de l'étape de sélection aléatoire, et - de génération (112, 213, 308, 415, 514), à partir dudit premier élément cryptographique, d'un deuxième élément cryptographique comportant au moins une coordonnée d'un deuxième point de ladite courbe elliptique, ladite coordonnée étant invariante par rapport à la sélection opérée par lesdits moyens de sélection aléatoire. 16. Programme d'ordinateur comportant des instructions pour la mise en oeuvre d'un procédé selon la revendication 15, lorsqu'il est chargé et exécuté par un processeur d'un dispositif de cryptographie sur courbe elliptique.30