Brevet FR2941798A1 — publié le 20100806

Appareil pour Calculer un Résultat d'une Multiplication Scalaire Historique Les modes de réalisation de l'invention concernent un appareil ou un procédé pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique. 10 L'utilisation de courbes elliptiques remplace de plus en plus le procédé RSA (procédé de Rivest-Shamir-Adleman) dans les systèmes de cryptographie à clé publique. La cryptographie pour courbes elliptiques a été proposée par 15 V. Miller dans "Victor S. Miller. Use of Elliptic Curves in Cryptography. Dans Hugh C. Williams, editor, CRYPTO, volume 218 of Lecture Notes in Computer Science, pages 417-426. Springer, 1985" et N. Koblitz dans "Neil Koblitz. Elliptic Curve Cryptosystems. Mathematics of 20 Computation, 48:203-209, 1987". La litérature d'introduction relative aux courbes elliptiques et leur cryptographie comprend, par exemple, les livres de texte "Henri Cohen and Gerhard Frey, 25 editors. Handbook of Elliptic and Hyperelliptic curve Cryptography. Chapman & Hall/CRC, 2006." et "Ian Blake, Gadiel Seroussi et Nigel Smart. Advances in Elliptic Curve Cryptography (London Mathematical Society Lecture Note Series). Cambridge University Press, New York, NY, 30 USA, 2005," Un bon article d'un bref aperçu est, par exemple, "Alfred Menezes and Scott A. Vanstone. Elliptic Curve Cryptosystems and Their Implementations. J. Cryptology, 6(4):229-224, 1993". Etant donné que les courbes elliptiques ont été étudiées par les 35 mathématiciens déjà au 19ème siècle et avant, la litérature générale dans cette direction est ingérable, mais ne peut le plus souvent être lue que par les mathématiciens.5 Tandis que dans RSA, l'étape cruciale pour le cryptage et le décryptage ou pour la génération d'une signature et la vérification d'une signature est l'élévation à une puissance md mod N d'un message m modulo un grand nombre N qui est le produit de deux grands nombres premiers secrets, le processus crucial de la cryptographie de courbes elliptiques est la multiplication scalaire d'un nombre par un point sur la courbe. Une courbe elliptique E: = E(F) sur un champ fini F est un groupe commutatif (Abélien) fini. Les éléments de ce groupe sont une solution d'une équation du troisième degré dans ce champ, par exemple: E(F) = {(x,y) E FxF : y2=x3+ax+b}U{O} ou, plus généralement, E(F) = { (x,y) e FxF : y2+dxy+ey = x3+ax2+cx+b}U{O} où a, b, c, d, e sont des éléments de F qui doivent remplir certaines propriétés. Par ailleurs, un point artificial O est ajouté. Sur cet ensemble est définie une addition, ce qui signifie que deux points P, Q de E(F) peuvent être ajoutés (et également soustraits), de sorte que soit créé un nouveau point R=P+Q sur cette courbe. Les lois suivantes sont valides: 1. Associativité: (P+Q)+R=P+(Q+R). 2. L'existence d'un élément d'identité: O+P=P, 3. L'existence des éléments inverses (-P) à p, de sorte que: (-P)+P'=0. 4. Commutativité: P+Q=Q+P. Ces lois font de la courbe elliptique un groupe Abélien. Dans un tel groupe, une multiplication scalaire kP est automatiquement définie par:35 kP = P+P+ . . +P (k fois) où k est un nombre entier parmi Z et P est un point sur la courbe. Cette multiplication scalaire est l'opération centrale dans la cryptographie de courbes elliptiques. Le plus souvent, le scalaire k est l'un des secrets. Aussi, la multiplication scalaire doit être mise en œuvre de manière sécurisée, de sorte que la chance de découvrir le scalaire k, par exemple, par attaques par canal latéral telles que SPA ou DPA, par attaques par faute ou attaques par erreur de sauvegarde, soit aussi réduite que possible. Les attaques par canal latéral sont, par exemple, des attaques de mises en œuvre de systems cryptographiques qui utilisent des observations de timings, de consommation d'énergie ou de radiation électromagnétique, pour obtenir les informatios secrètes qui sont originalement supposées être mémorisées de manière sûre. Dans l'analyse d'énergie simple (SPA), un attaqueur observe directement la consommation d'énergie du dispositif. Par exemple, la quantité d'énergie consommée par le dispositif varie en fonction des données opérées sur et des instructions exécutées pendant les différentes parties d'une exécution de l'algorithme. L'analyse d'énergie différentielle (DPA) exploite le comportement caractéristique (par exemple, le comportement de consommation d'énergie de transistors et de portes logiques). La DPA utilise un modèle d'attaque et une analyse statistique pour extraire les informations cachées d'un grand échantillon de traces d'énergie obtenues pendant le calcul cryptographique contrôlé. L'utilisation de procédés statistiques dans un environnement DPA contrôlé permet d'identifier de petites différences de consommation d'énergie qui peuvent être utilisées, par exemple, pour récupérer des informations spécifiques, telles que des bits individuels dans une clé secrète. Les attaques par erreur sont, par exemple, des attaques par erreur de sauvegarde de calcul (attaques par erreur de sauvegarde C) ou des attaques par erreur de sauvegarde en mémoire (attaques par erreur de sauvegarde M). L'attaque par erreur de sauvegarde de calcul peut être développée en induisant toute erreur de calcul aléatoire temporaire dans l'unité logique arithmétique (ALU). Une attaque par erreur de sauvegarde en mémoire requiert d'induire une erreur de mémoire temporaire dans un registre ou un emplacement de mémoire. Une mise en œuvre sécurisée de cette multiplication scalaire dans des systèmes cryptographiques tels que, par exemple, cartes intelligentes, PC ou autres produits de sécurité est d'une grande importance. Cela inclut une protection, par exemple, contre les attaques par canal latéral, telle que SPA (analyse d'énergie simple) et DPA (analyse d'énergie différentielle), les attaques par erreur et les attaques par erreur de sauvegarde. Par exemple, un procédé aisé pour la mise en œuvre d'une multiplication scalaire dP est le soi-disant procédé `Double-and-Add' (= Doubler et Additionner): entrée: d= (dn_1 .. d1 do) 2 nombre entier, P Point sur la courbe sortie: d*P Q:=0; pour (i:=n-1) à 0 par -1 do Q , 2*Q si (di=1), puis Q Q+P // est maintenant (D D i*P, D _ (dn-1 di+1 di) 2 fin fin retour Q C'est le procédé le plus connu. Malheureusement, il n'est pas sécurisé contre SPA et DPA, parce que le doublage est habituellement calculé par des formules autres que l'addition de deux points sur la courbe. Ces deux procédés peuvent habituellement être surveillés par la caractéristique de courant et la clé secrète peut aisément être déterminée. Aussi, un procédé `Double-and-always-Add' (= Doubler et toujours Additionner) est souvent proposé: entrée: d= (dn_1 ... d~ do) 2 nombre entier, P Point sur la courbe sortie: d*P Q:=0; pour (i:=n-1) à 0 par -1 do Q E- 2 * Q si (di=1) , puis QQ+P autrement T F- Q+P fin // est maintenant Q = Di*P, Di= (dä_1 ... di+1 di) 2 fin retour Q La caractéristique de courant est ainsi équilibrée et une telle attaque n'est plus possible. D'autre part, cette mise en oeuvre ouvre la porte pour les attaques par erreur de sauvegarde (voir par exemple "Sung-Ming Yen and Marc Joye. Checking Before Output May Not Be Enough Against Fault-Based Cryptoanalysis. IEEE Trans. Computers, 49(9):967-90, 2000"). Etant donné que le deuxième trajet de l'instruction si/autrement peut être interrompu sans modifier la sortie, un attaqueur peut en extraire des 5 informations su le scalaire secret. Les deux procédés présentent également l'inconvénient de ne pas être sécurisés contre DPA et d'autres attaques par erreur s'ils sont mis en oeuvre de manière naïve. Un autre procédé pour amener le problème de SPA sous contrôle est l'échelle de Montgomery: entrée: d= (dn_1 .. d1 do) 2 nombre entier, P Point sur la courbe sortie: d*P Qo =0 ; Q1 =P; pour (i:=n-1) à 0 par -1 do (Q1-di, Qdi) F- (Qo+Q1, 2*Qdi) // est maintenant Qb = (Di+b) *P, Di= (dn_1 ... di+1 di) 2 fin fin retour Qo Ici, chaque passage consiste également en une addition et un doublage et est, de ce fait, sécurisé contre SPA. Le problème de DPA continue à exister. Ce procédé peut calculer l'addition plus rapidement que les autres algorithmes montrés dans "Wieland Fischer, Christophe Giraud, Erik Woodward Knudsen and Jean-Pierre Seifert. Parallel scalar multiplication on general elliptic curves over Fp hedged against Non-Differential Side-Channel Attacks. IACR, Cryptology ePrint Archive, (007), janvier 2007. Disponible sur http://eprint.iacr.orq/2002/007". "Tetsuya Izu and Tsuyoshi Takagi. A Fast Parallel Elliptic Curve Multiplication Resistant against Side Channel Attacks. Dans David Naccache and Pascal Paillier, editors Public Key Cryptography, volume 2274 de Lecture Notes in Computer Science, pages 280-296. Springer, 2002." et "Marc Joye and Sung.Ming Yen. The Montgomery Powering Ladder. Dans Burton S. Kaliski Jr., C etin Kaya Ko c and Christof Paar, editors. Cryptographic Hardware and Embedded Systems - CHES 2002, 41h International Workshop, Redwood Shores, CA, USA, 13-15 août 2002, Revised Paper, volume 2523 de Lecture Notes in Computer Science. Springer, 2003., pages 291-302.". Brève Description des Dessins Ci-après sont expliqués plus en détail des modes de réalisation selon l'invention, en référence aux figures 10 jointes en annexe, dans lesquelles: la figure 1 est un schéma-bloc d'un appareil pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une 15 courbe elliptique; la figure 2 est un schéma-bloc d'un système cryptographique; 20 la figure 3 est un schéma opérationnel d'un procédé pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique; et 25 la figure 4 est un schéma opérationnel d'un procédé pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique. 30 Description Détaillée de Modes de Réalisation La figure 1 illustre un schéma-bloc d'un appareil 100 pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur 35 une courbe elliptique selon un mode de réalisation de l'invention. L'appareil 100 comprend un sélecteur de point 110 relié à un processeur 120.5 Le sélecteur de point 110 est configuré pour sélectionner de manière aléatoire ou pseudo-aléatoire un point auxiliaire 112 sur la courbe elliptique. Le processeur 120 est configuré pour calculer le résultat de la multiplication scalaire par un processus `doubleand-always-add' à l'aide du point auxiliaire 112. Le point auxiliaire 112 peut être sélectionné indépendamment du point de référence ou peut être sélectionné sur base d'une fonction de mélange appliquée au point de référence. Une fonction de mélange du point de référence peut, par exemple, être une fonction stochastique qui génère un nombre aléatoire sur base du point de référence. Le point auxiliaire 112 peut être basé sur le nombre aléatoire. Alternativement, la fonction de mélange peut être une fonction déterministe du point de référence utilisant un nombre aléatoire ou pseudo-aléatoire. En calculant le résultat de la multiplication scalaire par un processus `double-and-always-add' à l'aide du point auxiliaire 112, le calcul peut être masqué par le point auxiliaire. Le fait de masquer le calcul et du résultat de la multiplication scalaire et d'utiliser un processus `double-and-always-add' peut résulter en une mise en oeuvre résistant à SPA, DPA et à l'attaque par erreur de sauvegarde du calcul du résultat de la multiplication scalaire. Le processeur 120 peut être configuré pour calculer un résultat d'une addition du point auxiliaire 112 avec lui-même et de la soustraction du point auxiliaire 112 d'un point intermédiaire ou d'une addition du point auxiliaire négatif et du point intermédiaire. La soustraction du point auxiliaire ou l'addition du point auxiliaire négatif donne le même résultat, mais la mise en oeuvre peut être différente. 29417.98 9 Par ailleurs, si le processeur 120 est configuré pour calculer le résultat de la multiplication scalaire sans utilisation d'instructions factices, le calcul du 5 résultat peut être protégé contre des attaques par erreur de sauvegarde. Les instructions factices concernent, par exemple, les instructions qui sont basées sur un paramètre secret de la multiplication scalaire (par exemple le nombre de référence) et n'ont pas d'influence 10 sur le résultat de la multiplication scalaire. Le calcul du résultat de la multiplication scalaire peut être immun aux attaques par erreur de sauvegarde. Immun, dans ce cas, signifie que la multiplication est protégée 15 le mieux possible. Il est probable qu'une immunité à 100% ne puisse jamais être obtenue. Par ailleurs, le processeur 120 peut être configuré pour exécuter une boucle. La boucle peut être exécutée N fois, 20 où N est un nombre de bits que le nombre de référence comprend dans une représentation binaire. Par exemple, si le nombre de référence est égal à 9, la représentation binaire du nombre de référence serait 1001 et le nombre de bits que le nombre de référence comprend serait égal à 25 4. Alternativement, le nombre de bits que le nombre de référence comprend peut être défini par les bits pertinents du nombre de référence. Par exemple, si le nombre de référence est égal à 9, la représentation binaire du nombre de référence serait 1001, mais le 30 nombre de référence peut être représenté par 8 bits (par exemple du fait d'une grandeur de registre) et, de ce fait, 00001001. Les zéros initiaux peuvent alors ne pas faire partie des bits pertinents. Par ailleurs, certains bits peuvent être traités pendant un prétraitement et, de 35 ce fait, le nombre de bits que le nombre de référence comprend peut être égal au nombre de bits non prétraités. Par exemple, si le nombre de référence en représentation binaire était 1001 et que le premier bit était traité pendant un prétraitement, le nombre de bits que le nombre de référence comprend serait égal à 3. Un exemple peut consister à initialiser le point intermédiaire par un point obtenu autrement en exécutant la boucle la première fois. De plus, le processeur 120 peut être configuré pour calculer un point intermédiaire actuel en fonction d'une valeur d'un nombre de référence. Par exemple, si la valeur d'un bit du nombre de référence est égale à 1, le point de référence est additionné et le point auxiliaire est soustrait du point intermédiaire, pour obtenir un point intermédiaire actuel. Autrement, si la valeur du bit du nombre de référence est égale à o, seul le point auxiliaire 112 est soustrait du point intermédiaire, pour obtenir le point intermédiaire actuel. Par ailleurs, le processeur 120 peut être configuré pour calculer le point intermédiaire actuel pendant l'exécution de la boucle. Le point intermédiaire calculé peut être basé sur le point auxiliaire 112. En d'autres termes, le point intermédiaire peut être masqué par le point auxiliaire 112. Dans certains modes de réalisation selon l'invention, tous les points intermédiaires calculés pendant l'exécution de la boucle peuvent être basés sur le point auxiliaire 112. En d'autres termes, toute l'exécution de la boucle peut être masquée par le point auxiliaire 112. De plus, le processeur 120 peut être configuré pour régler ou initialiser un point intermédiaire égal au point auxiliaire. Le processeur 120 peut calculer le résultat de la multiplication scalaire su base du point intermédiaire. En d'autres termes, pendant le calcul, il peut être calculé un point intermédiaire qui est égal au résultat masqué de la multiplication scalaire. Sur base de ce résultat masqué peut être déterminé le résultat de la multiplication scalaire. De cette manière, tout le calcul peut être masqué par le point auxiliaire 112 jusqu'à ce que le résultat soit indirectement disponible en termes de résultat masqué. Certains modes de réalisation selon l'invention concernent un appareil pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique comprenant un moyen pour sélectionner de manière aléatoire ou pseudo-aléatoire un point auxiliaire et un moyen pour calculer le résultat de la multiplication scalaire par un processus `double-and-always-add' à l'aide du point auxiliaire. Le moyen pour sélectionner le point auxiliaire peut correspondre au sélecteur de point précité et peut, par exemple, être un processeur, une CPU (central processing unit = unité de traitement centrale) d'un ordinateur, une ALU (arithmetic logic unit = unité logique arithmétique), un processeur cryptographique, un circuit raccordé fixe ou un programme de logiciel à exécuter par une CPU (central processing unit = unité de traitement centrale) d'un ordinateur, une ALU (arithmetic logic unit = unité logique arithmétique) ou un processeur cryptographique d'un système cryptographique. Le moyen pour calculer le résultat de la multiplication scalaire peut correspondre au processeur précité et peut être la CPU (central processing unit = unité de traitement centrale) d'un ordinateur, une ALU (arithmetic logic unit = unité logique arithmétique), un processeur cryptographique, un circuit raccordé fixe ou un programme de logiciel à exécuter par une CPU (central processing unit = unité de traitement centrale) d'un ordinateur, une ALU (arithmetic logic unit = unité logique arithmétique) ou un processeur cryptographique d'un système cryptographique. Le moyen pour sélectionner le point auxiliaire et le moyen pour calculer le résultat de la multiplication scalaire peuvent tous deux être un programme de logiciel à exécuter par la même CPU (central processing unit = unité de traitement centrale) d'un ordinateur, ALU (arithmetic logic unit = unité logique arithmétique) ou processeur cryptographique d'un système cryptographique. La figure 2 illustre un schéma-bloc d'un système cryptographique 200 avec un appareil pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique selon un mode de réalisation de l'invention. Le système cryptographique 200 comprend le sélecteur de point 110, le processeur 120, une mémoire 220, une interface entrée-sortie 230 et un générateur de nombre aléatoire 240. Le système cryptographique 200 peut être mis en œuvre, par exemple, dans une carte intelligente 210, une carte à puce ou un ordinateur. La mémoire 220 est reliée au processeur 120 et configurée pour mémoriser, par exemple, le nombre de référence, le point de référence sur la courbe elliptique, la courbe elliptique elle-même ou les paramètres de la courbe elliptique, le point auxiliaire et/ou le point intermédiaire. L'interface entrée-sortie 230 est reliée au processeur 120 et configurée pour fournir les données de sortie 232 vers l'extérieur et les données d'entrées 232 de l'extérieur au processeur 120. De plus, un générateur de nombre aléatoire 240 peut être relié au sélecteur de point 110. Le générateur de nombre aléatoire 240 peut fournir un nombre aléatoire, par exemple, indépendant du point de référence. Le générateur de nombre aléatoire 240 peut être un générateur de vrai nombre aléatoire déterminant le nombre aléatoire, par exemple sur base d'une propriété d'une boucle à phase verrouillée (PLL) ou d'un trafic de bus dans le système cryptographique, ou un générateur de nombre pseudoaléatoire tel que par exemple un registre à décalage de rétroaction linéaire ou non linéaire. Le sélecteur de point 110 peut sélectionner le point auxiliaire sur base du nombre aléatoire. La figure 3 illustre un schéma opérationnel d'un procédé 300 pour calculer le résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique selon un mode de réalisation de l'invention. Le procédé 300 comprend la sélection 310 de manière aléatoire ou pseudo-aléatoire d'un point auxiliaire sur la courbe elliptique et le calcul 320 du résultat de la multiplication scalaire par un processus `double-and-always-add' à l'aide du point auxiliaire. La figure 4 illustre une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique selon un mode de réalisation de l'invention. Tout d'abord, le point auxiliaire B est sélectionné comme décrit plus haut (illustré au numéro de repère 310) et un point intermédiaire Q est réglé égal au point auxiliaire (illustré au numéro de repère 410). Ensuite, un compteur i est réglé égal au nombre de bits que le nombre de référence comprend dans une représentation binaire (illustré au numéro de repère 420). Dans la boucle, tout d'abord, le compteur i est décrémenté de 1 (illustré au numéro de repère 430), suivi du doublage 440 du point intermédiaire. L'étape suivante dépend de la valeur d'un bit actuel di du nombre de référence (illustré au numéro de repère 450). Un bit actuel est le bit du nombre de référence qui est associé à la valeur actuelle du compteur i. Par exemple, si la représentation binaire du nombre de référence est 1000 et que la boucle est exécutée jusqu'à ce que le compteur i soit égal à 0, le bit à la valeur 1 correspond à un compteur actuel égal à 3. Si la valeur du bit actuel di du nombre de référence est égal à 1, le point intermédiaire est égal au point intermédiaire plus le point de référence moins le point auxiliaire (Q=Q+(P-B), illustré au numéro de repère 460). Autrement, si la valeur du bit actuel di du nombre de référence est égal à 0, le point intermédiaire est réglé au point intermédiaire moins le point auxiliaire (Q=Q+(-B), illustré au numéro de repère 470). Après cela, la boucle est exécutée une nouvelle fois si le compteur i est supérieur à 0 (illustré au numéro de repère 480). Autrement, si le compteur i est égal à 0, le résultat de la multiplication scalaire est calculé par soustraction du point auxiliaire du point intermédiaire (Q-Q+(-B), illustré au numéro de repère 490). L'algorithme du procédé illustré 400 peut également être représenté de la manière suivante: entrée: d= (dn_1 ... d~ do) 2 nombre entier, P Point sur la courbe sortie: d*P choisir le point aléatoire B sur la courbe; Q:=B; pour (i:=n-1) à o par -1 do Q Tel qu'illustré dans cet exemple, tout le calcul est masqué par le point auxiliaire. Ce n'est que lorsque le résultat final de la multiplication scalaire est calculé avec la dernière étape 490 que le masquage est enlevé. Pendant le calcul, un point intermédiaire peut être recouvert par un nouveau point intermédiaire, alternativement, plusieurs points intermédiaires différents peuvent être utilisés. Le procédé décrit peut également être appelé procédé "blended double-and-always-add" (= mélangé doubler et toujours additionner). Certains modes de réalisation selon l'invention concernent un procédé qui utilise le fait que l'inverse additif d'un point sur une courbe elliptique peut être calculé de manière triviale et/ou qu'une soustraction de deux points peut requérir les mêmes efforts qu'une addition. Le procédé décrit peut permettre de réaliser une multiplication scalaire dans laquelle tous les points intermédiaires sont randomisés (du fait du calcul à base d'un point auxiliaire). Aussi, le procédé est, en principe, resistant à DPA. Par ailleurs, le procédé comprend un cours continu "double-and-always-add" qui fournit une sécurité SPA. Par ailleurs, une attaque par erreur de sauvegarde ne peut plus être possible, parce qu'il n'existe pas d'instruction factice. Dans certains modes de réalisation selon l'invention, une sécurité DPA peut être établie en calculant avec un scalaire randomisé ou en calculant en soi-disant coordonnées projectives. Celles-ci peuvent être aisément randomisées. Certains modes de réalisation selon l'invention concernent une mise en œuvre d'une multiplication scalaire sur un dispositif tel que, par exemple, une carte à puce, une carte intelligente, un ordinateur ou un autre système cryptographique par un procédé aussi efficace que possible. Etant que ces puces sont par ailleurs conçues comme unités sécurisées, la multiplication scalaire devrait être protégée contre un 15 20 tas d'attaques par canal latéral différentes telles que, par exemple, SPA et DPA, attaques par erreur et attaques par erreur de sauvegarde. Certains autres modes de réalisation selon l'invention concernent un procédé `double-and-add' dans lequel un point intermédiaire est toujours masqué par un point choisi de manière aléatoire sur la même courbe: Di * P + B, avec di= (dn_1 ... di+1 d di) 2. Un aspect est le fait que, pendant chaque exécution de la boucle, une étape d'addition suit chaque doublage. Du fait du doublage est obtenue la valeur suivante: 2*Di*P + 2*B. Mais, après tout, la valeur suivante devrait être obtenue: (2*Di +b) * P + B, avec = 2 * Di + b, où B est la valeur du bit associé du nombre de référence. Aussi, soit -B (moins le point auxiliaire), soit P - B 25 (le point de référence moins le point auxiliaire) doit être additionné. Ainsi, il n'y a pas de nécessité d'une addition factice et le procédé est sécurisé contre des attaques par erreur de sauvegarde. 30 Certains modes de réalisation selon l'invention concernent une multiplication scalaire sur des courbes elliptiques avec aveuglement additif, sécurisée contre SPA, DPA et attaques par erreur de sauvegarde. 35 En général, les points sur la courbe elliptique, tels que par exemple le point de référence, le point auxiliaire et le point intermédiaire, peuvent être représentés par leurs coordonnées (par exemple coordonnées cartésiennes ou coordonnées projectives) pendant le calcul. Il peut également être possible de représenter un point sur la courbe elliptique par uniquement l'une des coordonnées (par exemple uniquement la coordonnée x du point) pendant le calcul. Dans la présente demande, les mêmes numéros de repère sont partiellement utilisés pour des objets et unités fonctionnelles ayant des propriétés fonctionnelles identiques ou similaires. Bien que certaines revendications ne soient en rapport qu'avec une seule autre revendication, une combinaison avec d'autres revendications peut également être possible. En particulier, il est souligné que, en fonction des conditions, le schéma de l'invention peut également être mis en œuvre en logiciel. La mise en œuvre peut être sur un support de mémoire numérique, en particulier une disquette ou un CD avec des signaux de commande pouvant être lus électroniquement à même de coopérer avec un système d'ordinateur programmable de sorte que soit réalisé le procédé correspondant. En général, l'invention consiste donc également en un programme d'ordinateur avec un code de programme mémorisé sur un support lisible en machine pour réaliser le procédé de l'invention lorsque le programme d'ordinateur est exécuté sur un ordinateur. Dit en d'autres termes, l'invention peut donc également être réalisée comme programme d'ordinateur avec un code de programme pour réaliser le procédé lorsque le programme d'ordinateur est exécuté sur un ordinateur. Certains modes de réalisation selon l'invention concernent un procédé pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique. Le procédé comporte la sélection de manière aléatoire ou pseudo- aléatoire d'un point auxiliaire sur la courbe elliptique, dans lequel le point auxiliaire est sélectionné indépendamment du point de référence; le réglage d'un point intermédiaire égal au point auxiliaire; l'exécution d'une boucle, où la boucle est exécutée N fois, où N est un nombre de bits que le nombre de référence comprend dans une représentation binaire; et le calcul du résultat de la multiplication scalaire sur base d'une soustraction du point auxiliaire du point intermédiaire ou d'une addition du point auxiliaire négatif et du point intermédiaire. L'exécution de la boucle comporte le calcul d'un résultat d'une addition du point intermédiaire avec lui-même; et le calcul d'un point intermédiaire actuel en fonction d'une valeur d'un bit actuel du nombre de référence, où le nombre de référence est représenté de manière binaire, où le point intermédiaire actuel est égal au point intermédiaire plus le point de référence moins le point auxiliaire si la valeur du bit actuel est égale à 1 ou où le point intermédiaire actuel est égal au point intermédiaire actuel moins le point auxiliaire si la valeur du bit actuel est égale à O. Revendications1. Appareil pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique, comprenant: un sélecteur de point configuré pour sélectionner de manière aléatoire ou pseudo-aléatoire un point auxiliaire sur la courbe elliptique; et un processeur configuré pour calculer le résultat de la multiplication scalaire par un processus `double-andalways-add' à l'aide du point auxiliaire. 15 2. Appareil selon la revendication 1, dans lequel le sélecteur de point est configuré pour sélectionner le point auxiliaire indépendamment du point de référence ou dans lequel le point auxiliaire est sélectionné sur base d'une fonction de mélange appliquée au point de 20 référence. 3. Appareil selon la revendication 1, dans lequel le processeur est configuré pour calculer le résultat de la multiplication scalaire d'une manière qui est immune 25 contre les attaques par erreur de sauvegarde. 4. Appareil selon la revendication 1, dans lequel le processeur est configuré pour calculer le résultat de la multiplication scalaire sans utilisation d'une opération 30 factice. 5. Appareil selon la revendication 1, dans lequel le processeur est configuré pour calculer le résultat de la multiplication scalaire sur base d'une boucle qui, par 35 exécution, fonctionne sur un point intermédiaire, et configuré pour régler le point intermédiaire égal au point auxiliaire avant une première exécution de la boucle, où la boucle est exécutée N fois, où N est un 2010nombre de bits que le nombre de référence comprend dans une représentation binaire. 6. Appareil selon la revendication 5, dans lequel le processeur est configuré pour calculer le résultat d'une addition du point intermédiaire avec lui-même, où l'addition du point intermédiaire avec lui-même fait partie de la boucle. 7. Appareil selon la revendication 5, dans lequel le processeur est configuré pour calculer le résultat d'une soustraction du point auxiliaire du point intermédiaire, où la soustraction fait partie de la boucle, ou dans lequel le processeur est configuré pour calculer le résultat d'une addition du point auxiliaire négatif et du point intermédiaire, où l'addition fait partie de la boucle. 8. Appareil selon la revendication 7, dans lequel le processeur est configuré pour calculer le résultat de la multiplication scalaire sur base de l'addition du point auxiliaire auxiliaire l'addition l'addition avec du du du lui-même et la soustraction du point point intermédiaire ou sur base de point auxiliaire avec lui-même et de point auxiliaire négatif et du point intermédiaire. 9. Appareil selon la revendication 5, dans lequel le processeur est configuré pour calculer un point intermédiaire actuel en fonction d'une valeur d'un bit du nombre de référence, où le nombre de référence est représenté de forme binaire. 10. Appareil selon la revendication 5, dans lequel le processeur est configuré pour calculer un point intermédiaire actuel pendant l'exécution de la boucle, ou le point intermédiaire actuel est basé sur le point auxiliaire. 11. Appareil selon la revendication 10, dans lequel tous les points intermédiaires calculés pendant l'exécution de la boucle sont basés sur le point auxiliaire. 12. Appareil selon la revendication 5, dans lequel le processeur est configuré pour calculer le résultat de la multiplication scalaire sur base du point intermédiaire. 10 13. Appareil selon la revendication 1, comprenant: une mémoire couplée au processeur et configurée pour mémoriser le nombre de référence, le point de référence sur la courbe elliptique, le courbe elliptique elle-même 15 ou les paramètres de la courbe elliptique, et/ou le point auxiliaire; et un générateur de nombre aléatoire couplé au sélecteur de point et configuré pour fournir un nombre aléatoire, où 20 le nombre aléatoire est utilisé par le sélecteur de point pour sélectionner le point auxiliaire sur la courbe elliptique. 14. Appareil selon la revendication 5, comprenant par 25 ailleurs: une mémoire couplée au processeur et configurée pour mémoriser le nombre de référence, le point de référence sur la courbe elliptique, la courbe elliptique elle-même 30 ou les paramètres de la courbe elliptique, le point auxiliaire et/ou le point intermédiaire; et un générateur de nombre aléatoire couplé au sélecteur de point et configuré pour fournir un nombre aléatoire, où 35 le nombre aléatoire est utilisé par le sélecteur de point pour sélectionner le point auxiliaire sur la courbe elliptique. 35 15. Appareil pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique, comprenant: un moyen pour sélectionner de manière aléatoire ou pseudo-aléatoire un point auxiliaire sur la courbe elliptique; et un moyen pour calculer le résultat de la multiplication scalaire avec un processus `double-and-always-add' à l'aide du point auxiliaire. 16. Appareil pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique, comprenant: un sélecteur de point configuré pour sélectionner un point auxiliaire aléatoire ou pseudo-aléatoire sur la courbe elliptique, où le point auxiliaire est sélectionné indépendamment du point de référence; et un processeur configuré pour régler un point intermédiaire égal au point auxiliaire et configuré pour exécuter une boucle, où la boucle est exécutée N fois, où N est un nombre de bits que le nombre de référence comprend dans une représentation binaire, et où le processeur est configuré pour calculer le résultat de la multiplication scalaire sur base d'une soustraction du point auxiliaire du point intermédiaire ou d'une addition du point auxiliaire négatif et du point intermédiaire. 17. Apparatus selon la revendicationim 1, dans lequel le processeur est configuré pour calculer le résultat de la multiplication scalaire sur base de l'algorithme suivant: choisir le point aléatoire B sur la courbe; Q:=B; pour (i:=n-l) à 0 par -1 do 24Q4-2*Q si (di=l) Q (- Q+(P-B) autrement Q~-Q+(-B) fin fin Q û Q+ (-B) retour Q, où Q est auxiliaire, actuel du référence. un point intermédiaire, B est le point i est un compteur, di est une valeur d'un bit nombre de référence et P est le point de 18. Système cryptographique, comprenant l'appareil selon la revendication 1. 19. Système cryptographique selon la revendication 18, 20 dans lequel le système cryptographique est une carte intelligente. 20. Procédé pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un 25 point de référence sur une courbe elliptique, comprenant: sélectionner de manière aléatoire ou pseudo-aléatoire un point auxiliaire sur la courbe elliptique; et 30 calculer le résultat de la multiplication scalaire avec un processus `double-and-always-add' à l'aide du point auxiliaire. 21. Programme d'ordinateur avec un code de programme 35 pour réaliser le procédé pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique, comprenant: 10 15sélectionner de manière aléatoire ou pseudo-aléatoire un point auxiliaire sur la courbe elliptique; et calculer le résultat de la multiplication scalaire avec 5 un processus `double-and-always-add' à l'aide du point auxiliaire.