Brevet FR3083631A1 — publié le 20200110

DOMAINE TECHNIQUE AUQUEL SE RAPPORTE L'INVENTION La présente invention concerne de manière générale le domaine de la cryptographie. Elle concerne plus particulièrement un procédé de traitement cryptographique sur une courbe elliptique et un dispositif de traitement cryptographique. ARRIERE-PLAN TECHNOLOGIQUE On connaît le traitement cryptographique de données sur courbe elliptique par exemple pour l'échange d'un message secret ou dans un cas d'utilisation d'une clé cryptographique de chiffrement. Différentes opérations sur courbe elliptique sont utilisées pour réaliser le traitement cryptographique. La multiplication d'un point de la courbe elliptique par un scalaire est l'une de ces opérations. Pour mettre en oeuvre cette opération de multiplication, il a déjà été proposé d'utiliser des chaînes d'addition, qui sont connues pour constituer une méthode efficace de protection, par exemple contre les attaques par canal auxiliaire (ou « Sicle Channel Attacks » selon l'appellation d'origine anglo-saxonne couramment utilisée). Cette méthode est en outre améliorée en ce qui concerne la rapidité d'exécution grâce à l'utilisation de chaînes d'addition euclidienne dont la longueur des chaînes mises en jeu dans l'opération est un paramètre important. En particulier, l'opération de multiplication d'un point par un scalaire repose sur l'accumulation de multiples de ce point dans un ordre dépendant de la chaîne d'addition euclidienne (et aboutissant au résultat de la multiplication du point par le scalaire). Pour chaque itération, une même opération d'addition est réalisée, la seule différence provenant de l'opérande (parmi deux variables) conservé en mémoire et utilisé pour cette opération d'addition. Cependant, l'utilisation de chaînes d'addition euclidienne courtes est actuellement trop coûteuse pour concurrencer les autres méthodes de protection contre les attaques par canal auxiliaire. OBJET DE L'INVENTION Afin de remédier à l'inconvénient précité de l'état de la technique, la 2 présente invention propose d'améliorer la mise en oeuvre de chaînes d'addition euclidienne et en particulier l'opération de multiplication par un scalaire dans le cas d'un traitement cryptographique sur courbe elliptique. Plus particulièrement, on propose selon l'invention un procédé de 5 traitement cryptographique sur une courbe elliptique comprenant une étape de multiplication d'un point de la courbe elliptique par un scalaire. Le procédé comprend les étapes suivantes : - sélection d'une table de données associée à une partie au moins du scalaire, ladite table de données comprenant une pluralité ordonnée de valeurs, 10 - initialisation d'une première variable à une première valeur multiple du point et d'une deuxième variable à une deuxième valeur multiple du point, puis - pour chaque valeur successive de la table de données, - détermination d'une première variable actualisée par une opération d'addition entre la première variable et la deuxième variable, 15 - détermination d'une deuxième variable actualisée en fonction de la première variable ou de la deuxième variable selon la valeur successive concernée de la table de données, - mise à jour de la première variable en remplaçant la première variable par la première variable actualisée et de la deuxième variable en 20 remplaçant la deuxième variable par la deuxième variable actualisée, caractérisé en ce que pour au moins une des valeurs successives de la table de données, la détermination de la deuxième variable actualisée est effectuée en fonction de l'opposé de la première variable ou de la deuxième variable. 25 Ainsi, le procédé de l'invention permet d'introduire l'opposé d'au moins une valeur dans les chaînes d'addition euclidienne utilisées pour effectuer la multiplication du point de la courbe elliptique par un scalaire. Le procédé de l'invention inclut alors une somme impliquant l'opposé d'une valeur, ce qui correspond à l'introduction d'une notion de soustraction dans la chaîne d'addition 30 euclidienne (on parle alors de chaîne d'addition-soustraction euclidienne). L'utilisation de l'opposé de de cette valeur permet alors en particulier de réduire la taille des chaînes d'addition euclidienne et donc d'accélérer l'opération de multiplication par un scalaire. L'utilisation d'étapes de somme avec au moins l'opposé d'une valeur 3 permet également de disposer de plusieurs suites d'opérations pour chaque valeur de scalaire, et en particulier pour les valeurs de scalaires proches de la valeur d'initialisation de la première variable. La résistance du procédé de traitement cryptographique aux attaques possibles est donc renforcée. 5 De plus, par construction, les différentes chaînes d'addition euclidienne mises en jeu ont toutes la même longueur. Cela permet de conserver la même complexité pour l'opération de multiplication par un scalaire, quelle que soit la valeur de ce scalaire. La sécurité du procédé de traitement cryptographique est donc améliorée. 10 D'autres caractéristiques non limitatives et avantageuses du procédé de traitement cryptographique sur une courbe elliptique conforme à l'invention, prises individuellement ou selon toutes les combinaisons techniquement possibles, sont les suivantes : - pour chaque valeur successive de la table de données, la deuxième 15 variable actualisée est choisie parmi la première variable, l'opposé de la première variable, la deuxième variable et l'opposé de la deuxième variable ; - au moins une desdites première valeur multiple et deuxième valeur multiple est supérieure au double du point ; - au moins une desdites première valeur multiple et deuxième valeur 20 multiple est fonction de la table de données ; - Il est également prévu à l'étape de sélection les étapes suivantes : - détermination d'une pluralité de tables de données associée à ladite partie au moins du scalaire, et - sélection de manière aléatoire d'une table de données parmi 25 ladite pluralité de tables de données déterminée ; - il est également prévu, après la mise en oeuvre des étapes de détermination de la première variable actualisée, de détermination de la deuxième variable actualisée et de mise à jour pour toutes les valeurs successives de la table de données, une étape de détermination dudit produit du point de la courbe 30 elliptique par ledit scalaire au moyen d'une opération d'addition entre la première variable et la deuxième variable ; - le scalaire comprend une pluralité de parties de scalaire ; - chaque partie de scalaire a une longueur comprise entre 2 et 8 éléments binaires ; 4 - le scalaire comprend au moins une première partie de scalaire et une deuxième partie de scalaire, la première partie de scalaire étant de poids plus fort que la deuxième partie de scalaire et dans lequel la table de données sélectionnée est associée à la première partie de scalaire ; 5 - il est également prévu les étapes suivantes : - détermination d'une variable finale par une opération de multiplication entre le terme 2w et la somme de la première variable et la deuxième variable, w étant la longueur de la deuxième partie de scalaire, puis, pour la deuxième partie de scalaire, 10 - sélection d'une autre table de données associée à la deuxième partie de scalaire, ladite autre table de données comprenant une pluralité ordonnée de valeurs, - initialisation de la première variable à une troisième valeur multiple du point et de la deuxième variable à une quatrième valeur multiple du point, puis 15 - pour chaque valeur successive de ladite autre table de données, - détermination d'une nouvelle première variable actualisée par une opération d'addition entre la première variable et la deuxième variable, - détermination d'une nouvelle deuxième variable actualisée en fonction de la première variable ou de la deuxième variable selon la valeur 20 successive concernée de ladite autre table de données, - mise à jour de la première variable en remplaçant la première variable par la nouvelle première variable actualisée et de la deuxième variable en remplaçant la deuxième variable par la nouvelle deuxième variable actualisée, et 25 - détermination d'une variable finale actualisée par une opération d'addition entre la variable finale et la somme de la première variable et de la deuxième variable ; et - il est également prévu une étape de détermination dudit produit du point de la courbe elliptique par ledit scalaire sur la base de ladite variable finale 30 actualisée. L'invention propose également un dispositif de traitement cryptographique sur une courbe elliptique comprenant une étape de multiplication d'un point de la courbe elliptique par un scalaire. Le dispositif comprend : - un bloc de sélection d'une table de données associée à une partie au 5 moins de scalaire, ladite table de données comprenant une pluralité ordonnée de valeurs, - un bloc d'initialisation d'une première variable à une première valeur multiple du point et d'une deuxième variable à une deuxième valeur multiple du 5 point, et - un bloc de traitement conçu pour, pour chaque valeur successive de la table de données : - déterminer une première variable actualisée par une opération d'addition entre la première variable et la deuxième variable, 10 - déterminer une deuxième variable actualisée en fonction de la première variable ou de la deuxième variable selon la valeur successive concernée de la table de données, - mettre à jour la première variable en remplaçant la première variable par la première variable actualisée et la deuxième variable en remplaçant 15 la deuxième variable par la deuxième variable actualisée, caractérisé en ce que le bloc de traitement est conçu pour, pour au moins une des valeurs successives de la table de données, déterminer la deuxième variable actualisée en fonction de l'opposé de la première variable ou de la deuxième variable. 20 DESCRIPTION DETAILLEE D'UN EXEMPLE DE REALISATION La description qui va suivre en regard des dessins annexés, donnés à titre d'exemples non limitatifs, fera bien comprendre en quoi consiste l'invention et comment elle peut être réalisée. Sur les dessins annexés : 25 - la figure 1 représente schématiquement les éléments principaux d'une entité électronique au sein de laquelle est mise en oeuvre l'invention ; - la figure 2 représente, sous forme de logigramme, un premier exemple de procédé conforme à l'invention ; - la figure 3 représente un exemple d'une chaîne d'addition-soustraction 30 euclidienne utilisée dans le procédé conforme à l'invention ; - la figure 4 représente, sous forme de logigramme, un deuxième exemple de procédé conforme à l'invention ; La figure 1 représente schématiquement les éléments principaux d'une entité électronique 100 au sein de laquelle est mise en oeuvre l'invention. Cette 6 entité électronique 100 est par exemple un élément sécurisé (ou SE pour "Secure Element) - par exemple un microcontrôleur sécurisé, d'un dispositif électronique portatif (ou "hand-held electronic device" selon l'appellation anglo-saxonne couramment utilisée) - par exemple un terminal de communication ou un 5 passeport électronique, ou d'un ordinateur. En variante, il pourrait s'agir d'une carte à microcircuit, par exemple une carte à circuit intégré universelle (ou UICC pour "Universal Integrated Circuit Card'). L'entité électronique 100 comprend un processeur 200 (ici un microprocesseur), une mémoire vive 400 et une mémoire non-volatile 10 réinscriptible 600 (par exemple de type EEPROM pour "Electrically Erasable and Programmable Read-Only Memory'). L'entité électronique 100 pourrait éventuellement comprendre en outre une mémoire morte. La mémoire vive 400 et la mémoire non-volatile réinscriptible 600 (ainsi que le cas échéant la mémoire morte) sont chacune liées au processeur 200 de sorte que le processeur 200 peut 15 lire ou écrire des données dans chacune de ces mémoires. Une de ces mémoires, par exemple la mémoire non-volatile réinscriptible 600, mémorise des instructions de programme d'ordinateur qui permettent la mise en oeuvre de l'un au moins des procédés décrits ci-dessous en référence à la figure 2 et à la figure 4 lorsque ces instructions sont exécutées par le processeur 20 200. Les mémoires 400, 600 stockent également des données représentatives de valeurs utilisées lors de la mise en oeuvre des procédés décrits ci-dessous. Par exemple, la mémoire non-volatile réinscriptible 600 mémorise un point P et/ou un scalaire k. 25 La mémoire vive 400 mémorise par ailleurs, par exemple au sein de variables, des données traitées au cours des procédés décrits ci-dessous. L'entité électronique 100 comporte également un ensemble de blocs (non représentés), par exemple un bloc de sélection, un bloc d'initialisation et un bloc de traitement. Ces blocs peuvent en pratique être réalisés par une 30 combinaison d'éléments matériels et d'éléments logiciels. Chaque bloc possède une fonctionnalité décrite dans les procédés conformes à l'invention et exposés ci-après. Ainsi, pour chaque bloc, l'entité électronique 100 mémorise par exemple des instructions de logiciel exécutables par le processeur 200 de l'entité électronique 100 afin d'utiliser un élément matériel (par exemple une interface de 7 communication ou une mémoire) et de mettre ainsi en oeuvre la fonctionnalité offerte par le bloc. Une courbe elliptique est définie par une équation de type : y2 = x3 + ax + b avec x,y appartenant à un corps fini. Un point G est considéré 5 comme le point de base de la courbe elliptique. L'ordre m du point G est défini comme le plus petit entier satisfaisant m.G = 0, avec 0 le point infini de la courbe et l'élément neutre du groupe commutatif défini sur les points de la courbe elliptique et l'opération "." est le produit scalaire entre les deux éléments mis en jeu. 10 Dans le cadre d'un traitement cryptographique sur courbe elliptique, un entier d compris entre 1 et m - 1 peut par exemple définir une clé secrète. Une clé publique H est définie à partir de cette clé secrète d et du point de base G par la relation H = d.G. La figure 2 représente un premier exemple de procédé mis en oeuvre 15 dans l'entité électronique 100 conformément à l'invention. Ce procédé consiste en un procédé de traitement cryptographique sur une courbe elliptique telle que la courbe elliptique définie plus haut. Plus particulièrement, le procédé de l'invention inclut une étape de multiplication par un scalaire dans le cadre d'un traitement cryptographique sur une courbe elliptique. 20 Dans le cadre de ce procédé, on considère dans la suite un point P de la courbe elliptique. Ce point P, par exemple le point de base G de la courbe elliptique ou la clé publique H, est par exemple enregistré dans l'une des mémoires 400, 600 de l'entité électronique 100. Le traitement cryptographique comprend alors une étape de calcul d'un nouveau point issu de la multiplication au 25 sens du produit scalaire du point P par un scalaire k. Ici, le scalaire k pourrait, par exemple dans le cas où d est la clé secrète et G le point de base tels que définis précédemment, être secret. Le scalaire k comporte n éléments binaires : k = kiko) où kn_2, ...k1 et ko sont des éléments binaires ou bits. Les éléments 30 kn_1, kn_2, k1 et Fco sont ordonnés du poids le plus fort au poids le plus faible (les poids sont donc croissants avec l'indice i dans les éléments binaires k1). Ainsi, est l'élément binaire de poids le plus fort et /cc, l'élément binaire de poids le plus faible. En pratique, le scalaire k est supérieur à 1. 8 Comme représenté sur la figure 2, le procédé débute à l'étape E2. Lors de cette étape, le processeur reçoit le point P et le scalaire k. Le scalaire k et le point P sont par exemple mémorisés dans l'une des mémoires comprises dans l'entité électronique 100 pour la mise en oeuvre de la suite du procédé. 5 Le procédé se poursuit à l'étape E4 lors de laquelle un bloc de reconnaissance lit une pluralité de tables de données associées au scalaire k. La pluralité de tables de données associées au scalaire k a été par exemple précalculée au préalable et mémorisée dans l'une des mémoires comprises dans l'entité électronique 100. Une table de données c est associée à une chaîne 10 d'addition-soustraction euclidienne permettant d'obtenir le scalaire k. Chaque table de données c de la pluralité de tables de données générée contient une chaîne d'addition-soustraction euclidienne différente permettant d'obtenir le scalaire k. Dans certains modes de réalisation, plusieurs tables de données peuvent être prévues pour un même scalaire k, chacune des tables de données contenant 15 une chaîne d'addition-soustraction euclidienne différentes de celles des autres tables de données. Une chaîne d'addition-soustraction euclidienne consiste en une succession d'étapes d'addition de données et/ou de données opposées permettant d'obtenir le scalaire k. 20 En pratique, chaque étape de la chaîne d'addition comprend une opération de report d'une variable et une opération de somme de deux opérandes. L'opération de somme utilise en tant qu'arguments le résultat de la somme obtenu à l'étape précédente ainsi que la variable reportée lors de l'étape précédente. Quatre opérations de report peuvent être distinguées : une opération de 25 report d'une première variable, une opération de report d'une deuxième variable, une opération de report de l'opposée de la première variable et une opération de report de l'opposée de la deuxième variable. Le résultat obtenu à l'issue de cette opération de report, c'est-à-dire la première variable ou son opposée ou la deuxième variable ou son opposée, est 30 ensuite utilisé comme l'un des arguments de l'opération de somme de l'étape suivante d'addition. La table de données c est définie comme une transposition en éléments binaires, prenant en compte un signe, de la chaîne d'addition-soustraction euclidienne associée à k. La table de données c comprend une pluralité de 9 valeurs notées ci. Les valeurs ci de la table de données c sont ordonnées selon la position de l'opération de somme (d'une donnée ou de son opposée) qu'elles représentent. Par exemple, cc, correspond à la deuxième opération réalisée dans la chaîne d'addition-soustraction euclidienne pour obtenir le scalaire k, c, 5 correspond à la troisième opération réalisée pour obtenir le scalaire k, etc. On notera que dans les exemples d'implémentations illustrés ici, la première opération consiste systématiquement en la somme de valeurs utilisées pour l'initialisation de variables comme une première variable Ui et une deuxième variable U2 (introduites ci-après). Cette première opération ne dépend donc pas 10 d'une valeur de la table de donnée. Ainsi, le résultat de l'opération dépend des valeurs utilisées pour l'initialisation de la première variable U1 et de la deuxième variable U2 lors des étapes E10 et E54 introduites dans la suite (la première variable Ui et la deuxième variable U2 étant choisies dans le but d'obtenir ce résultat). Cette opération 15 consiste en la somme de la première variable U1 et de la deuxième variable U2 effectuée dans les étapes E14 et E58 décrites ultérieurement et exécutées avec l'indice j prenant la valeur 0. Dans l'exemple illustré sur la figure 3 (présentée ci-après), cette première opération correspond à la somme de la valeur 1 (première valeur située 20 sur la première ligne) et de la valeur 2 (première valeur située sur la deuxième ligne) permettant alors d'obtenir la valeur 3 (deuxième valeur située sur la deuxième ligne). On propose ici que chaque valeur ci de la table de données c soit égale à une valeur parmi quatre valeurs différentes. Chacune des quatre valeurs est 25 associée à l'opération de report réalisée dans la chaîne d'addition-soustraction euclidienne. A l'opération de report de la première variable, on associe par exemple ici la valeur 0. A l'opération de report de la deuxième variable, on associe la valeur 1. A l'opération de report de l'opposée de la première variable, on associe la 30 valeur Ô. Et, à l'opération de report de l'opposée de la deuxième variable, on associe la valeur 1. En d'autres termes, les valeurs possibles pour chaque valeur ci sont ici 0, 1, 0 et 1. 10 A titre d'exemple, la figure 3 représente une chaîne d'addition-soustraction euclidienne permettant d'obtenir un scalaire k égal à 2. Sur cette figure, les chiffres de la ligne du haut sont obtenus en reportant le chiffre ou son opposé qui se trouve à l'autre extrémité de la flèche en pointillés. Chaque chiffre 5 de la ligne du haut correspond à la valeur de la deuxième variable pour l'opération de report qui suit son obtention. Les chiffres de la ligne du bas sont obtenus en additionnant les chiffres se trouvant aux extrémités des deux flèches en train plein. Chaque chiffre de la ligne du bas correspond à la valeur de la première variable pour l'opération de report qui suit son obtention. 10 Au niveau de chaque flèche (c'est-à-dire au niveau de chaque étape) est indiquée, de manière encadrée, la valeur ci correspondante associée à l'opération effectuée (comme décrit ci-dessus). Ainsi par exemple, au niveau de la deuxième étape est indiquée la valeur 0 encadrée signifiant que la valeur 3 (ici la plus grande des deux valeurs 15 présentes au début de l'étape 2), c'est-à-dire la valeur de la première variable, a été reportée sur la première ligne (d'où la valeur 0). Cette valeur est ensuite utilisée pour la somme à l'étape 3. Au niveau de l'avant-dernière étape, l'opposée de la plus grande valeur (la valeur 3), c'est-à-dire l'opposé de la valeur située sur la première ligne, 20 autrement dit l'opposé de la deuxième variable, est reportée sur la première ligne, conduisant ainsi à une somme de l'opposé de cette valeur à la dernière étape. C'est pour cela que la valeur c1 correspondante vaut 1. Finalement, d'après la figure 3, une chaîne d'addition-soustraction euclidienne s'écrit ici sous la forme k = (1,2,3,4,7,3, -1,2,5,2), correspondant à la 25 liste ordonnée, dans l'ordre des différentes opérations réalisées, des chiffres de la ligne du bas. La table de données c associée s'écrit c = (1,0, 0, 1,0,1, 1) avec ici co = 1, = 0, c2 = 0, etc. Comme représenté sur la figure 2, le procédé se poursuit à l'étape E6. Lors de cette étape, un bloc de sélection sélectionne une table de données 30 associée au scalaire k parmi la pluralité de tables de données lues à l'étape E4. La sélection est par exemple effectuée de manière aléatoire. A l'étape E10, le processeur 200 initialise la première variable U1 et la deuxième variable U2. La première variable U1 est initialisée à une première valeur 11 multiple du point P. La première valeur multiple du point P est distincte de l'élément neutre o introduit précédemment. La première valeur multiple du point P s'écrit par exemple sous la forme u.P avec u un entier naturel non nul. En pratique, la première valeur multiple du point P est supérieure ou égale au double 5 du point P. Par exemple ici, la première variable U1 est initialisée à la valeur du double du point P. La deuxième variable U2 est initialisée à une deuxième valeur multiple du point P. La deuxième valeur multiple s'écrit par exemple sous la forme v.P avec /2 10 un entier relatif. Par exemple ici, la deuxième variable U2 est initialisée à la valeur du point P. En variante, la deuxième variable U2 peut être initialisée à une deuxième valeur multiple du point P supérieure ou égale au double du point P et la première variable U1 à une première valeur multiple du point P, par exemple à la valeur du 15 point P. Dans certains modes de réalisation, pour des valeurs différentes de scalaires k, plusieurs tables de données peuvent comprendre une ou plusieurs étapes similaires (parmi les premières étapes). En variante, les valeurs multiples peuvent dépendre de la table de 20 donnée sélectionnée à l'étape E6. Par exemple, pour un scalaire k codé sur 5 bits (et qui varie donc entre 0 et 31), le première étape de la chaîne d'addition-soustraction euclidienne pourrait être toujours associée à une valeur ci, = 1. Cette première étape conduirait alors à l'obtention de la première variable U1 égale au triple du point P, la deuxième 25 variable U2 étant elle égale à la valeur du point P. Dans ce cas, la deuxième étape serait associée à deux possibilités : c, = 1 ou c, = -1 selon la table de données utilisée. La valeur c, = 1 conduirait à une première variable égale à la valeur 4P et une deuxième variable égale à la valeur du point P. La valeur c' = -1 conduirait à une première variable égale à la valeur 4P et une deuxième variable égale à 30 l'opposée de la valeur du point P. Afin d'optimiser le procédé et de réduire la taille de la chaîne d'addition-soustraction euclidienne utilisée, l'initialisation s'effectue alors directement à partir du résultat obtenu à l'issue de la deuxième étape. En d'autres termes, la valeur 4P ainsi que la valeur du point P et l'opposée de la valeur du point P sont 12 mémorisées, par exemple dans l'une des mémoires de l'entité électronique 100. La première variable U1 est alors directement initialisée à la valeur 4P ; la deuxième variable U2 est initialisée à la valeur du point P ou à l'opposée de la valeur du point P selon la table de données utilisée. La taille de la chaîne 5 d'addition-soustraction euclidienne est donc réduite. Le processeur 200 initialise ensuite, à l'étape E12, à la valeur 0 un indice j. Cet indice j désigne le tour courant. Les tours portent sur les valeurs c1 successives de la table de données c. Les tours s'effectuent selon l'ordre défini entre les valeurs ci de la table de donnée c. 10 Le processeur 200 actualise ensuite la première variable U1 et la deuxième variable U2 (étape E14). L'actualisation de la deuxième variable U2 est réalisée selon la valeur c de la table de données c concernée par ce tour (ce qui correspond à l'opération de report mentionnée précédemment). Quatre cas sont distingués en fonction de la 15 valeur ci de la table de donnée. Lorsque ci = 0, la deuxième variable U2 est actualisée avec la valeur de la première variable U1. Lorsque ci = 1, la deuxième variable U2 est actualisée avec la valeur de la deuxième variable U2. Lorsque ci = Ô, la deuxième variable U2 est actualisée avec l'opposé de la valeur de la première variable U1. Enfin, lorsque 20 ci = I, la deuxième variable U2 est actualisée avec l'opposé de la valeur de la deuxième variable U2. La nouvelle valeur de la deuxième variable U2 est mémorisée avec écrasement afin de limiter la mémoire nécessaire à la mise en oeuvre du procédé de traitement cryptographique conforme à l'invention. Dans cette description, on 25 dénomme par « variable actualisée de la deuxième variable U2 » la nouvelle valeur de la deuxième variable U2 qui est mémorisée ensuite avec écrasement. La somme de la première variable U1 et de la deuxième variable U2 (avant écrasement, c'est-à-dire en utilisant les valeurs contenues dans la première variable U1 et dans la deuxième variable U2 en entrée de l'étape E14) est aussi 30 déterminée lors de cette étape. Le résultat est mémorisé dans la première variable U1 avec écrasement afin de limiter la mémoire nécessaire à la mise en oeuvre du procédé de traitement cryptographique conforme à l'invention. Dans cette description, on dénomme « variable actualisée de la première variable U1 » la 13 somme de la première variable U1 et de la deuxième variable U2 qui est mémorisée ensuite avec écrasement. Le processeur 200 détermine ensuite, à l'étape E16, si l'indice j a atteint la valeur s - 1, s représentant la longueur de la table de données c. 5 Dans la négative, l'indice j est incrémenté à l'étape E18 et le procédé boucle à l'étape E14 pour effectuer le tour suivant de l'algorithme cryptographique. Dans l'affirmative à l'étape E16, le procédé se poursuit comme suit à l'étape E20. Le processeur 200 actualise à nouveau la première variable Ui. La 10 somme de la première variable U1 et de la deuxième variable U2 est ainsi déterminée lors de cette étape. Le résultat est mémorisé dans la première variable U1 avec écrasement. Enfin, à l'étape E22, le processeur donne la valeur de la première variable Ut. 15 Les différentes opérations effectuées correspondent à la chaîne d'addition-soustraction associée à la valeur du scalaire k. Par construction, la valeur retournée de la première variable Ui correspond alors au résultat de la multiplication par le scalaire k du point P. Le produit obtenu peut par exemple être utilisé dans le cadre d'un 20 traitement ultérieur afin d'obtenir la signature d'un message ou de vérifier une signature. Le produit obtenu peut également être utilisé pour générer ou échanger une clé secrète dans le cadre d'un traitement cryptographique sur courbe elliptique. La figure 4 représente un deuxième exemple de procédé mis en oeuvre 25 dans l'entité électronique 100 conformément à l'invention Dans ce deuxième exemple, le scalaire k est décomposé en une pluralité de parties de scalaires. Par exemple, le scalaire k peut comporter t parties de scalaire de w éléments binaires, avec w(t - 1) k(o)), km est la partie de scalaire de poids le plus faible et k(t-1) est la partie de scalaire 14 de poids le plus fort. Chaque partie de scalaire kW comprend donc w éléments binaires de ki à k'i_1. De manière similaire à l'étape E2 décrite précédemment, le procédé débute à l'étape E42 pendant laquelle le processeur 200 reçoit le point P et le 5 scalaire k (par l'intermédiaire de la pluralité de parties de scalaire). En variante, le processeur 200 peut également recevoir le point P et le scalaire k et en déduire la pluralité de parties de scalaire. Le procédé se poursuit à l'étape E44 lors de laquelle le bloc de reconnaissance lit une pluralité de tables de données cW associées à chaque 10 partie kW du scalaire k. La pluralité de tables de données c(0 associées à chaque partie kW du scalaire k a été par exemple précalculée au préalable et mémorisée dans l'une des mémoires comprises dans l'entité électronique 100. Dans certains modes de réalisation, plusieurs tables de données peuvent être prévues pour une même partie kW du scalaire k, chacune des tables de 15 données contient une chaîne d'addition-soustraction euclidienne différentes de celles des autres tables de données. Chaque table de données cW comporte des valeurs cr. Les valeurs cr de la table de données c00 sont également ordonnées selon la position de l'opération de somme (de données ou de données opposées) qu'elles 20 représentent. Chaque valeur FCO est égale à une valeur parmi quatre valeurs différentes. Chacune des quatre valeurs est associée à l'opération réalisée dans la chaîne d'addition-soustraction euclidienne. Comme précédemment introduites, les valeurs possibles pour chaque valeur cl`) sont par exemple 0, 1, Ô et I. Comme représenté sur la figure 4, de manière similaire à l'étape E6 25 précédemment décrite, le procédé se poursuit à l'étape E46. Lors de cette étape, le bloc de sélection sélectionne une table de données c(0 associée à chaque partie de scalaire kW parmi la pluralité de tables de données lues à l'étape E44. La sélection est par exemple effectuée de manière aléatoire. A l'étape E48, le processeur initialise un produit Q. Par exemple, la 30 valeur initiale du produit Q est choisie nulle, c'est-à-dire égale à l'élément neutre 0 introduit précédemment : Q = O. Comme représenté sur la figure 4, le procédé se poursuit à l'étape E50. 15 Lors de cette étape, le processeur 200 initialise à la valeur t - 1 un autre indice i. Cet autre indice i désigne le tour courant concernant la partie de scalaire k(i) concernée. Les tours s'effectuent selon les poids décroissants des parties de scalaire k(0. 5 A l'étape E52, le processeur 200 actualise la valeur du produit Q. Une opération de multiplication entre le terme 2w et le produit Q est réalisée. Le résultat est mémorisé dans le produit Q avec écrasement afin de limiter la mémoire nécessaire à la mise en oeuvre du procédé de traitement cryptographique conforme à l'invention. Dans cette description, on dénomme par « variable finale » 10 la nouvelle valeur du produit Q obtenue à l'étape E52 qui est mémorisée ensuite avec écrasement. Lors de cette étape, la table de donnée di) sélectionnée à l'étape E46 et correspondant à l'indice i courant est mémorisée dans la table de donnée c avec écrasement. 15 A l'étape E54 (comme lors de l'étape E10), le processeur 200 initialise une première variable Ui et une deuxième variable U2. La première variable Ui est initialisée à une troisième valeur multiple du point P. La troisième valeur multiple du point P est distincte de l'élément neutre 0 introduit précédemment. La troisième valeur multiple du point P s'écrit par exemple sous la forme u. P avec u un entier 20 naturel non nul. En pratique, la troisième valeur multiple est supérieure ou égale au double du point P. Par exemple ici, la première variable U1 est initialisée à la valeur du double du point P. La deuxième variable U2 est initialisée à une quatrième valeur multiple 25 du point P. La quatrième valeur multiple s'écrit par exemple sous la forme v.P avec y un entier relatif. Par exemple ici, la deuxième variable U2 est initialisée à la valeur du point P. Dans certains modes de réalisation, la deuxième variable U2 peut être 30 initialisée à une quatrième valeur multiple du point P supérieure ou égale au double du point P et la première variable U1 à une troisième valeur multiple de point P, par exemple à la valeur du point P. En variante, les valeurs multiples peuvent dépendre de la table de 16 donnée c@) sélectionnée à l'étape E46 et correspondant à l'indice i courant. Le processeur 200 initialise ensuite, à l'étape E56, à la valeur 0 un indice j. Cet indice j désigne le tour courant concernant les valeurs ci(t) successives de la table de données c(0. Les tours s'effectuent selon l'ordre défini entre les valeurs 5 cf') de la table de donnée c(0. Le processeur 200 actualise ensuite la première variable Ui et la deuxième variable U2 (étape E58). L'actualisation de la deuxième variable U2 est réalisée selon la valeur cil) de la table de données c(i) concernée par ce tour selon l'indice j (ce qui 10 correspond à l'opération de report mentionnée plus haut). Quatre cas sont distingués en fonction de la valeur 5(0 de la table de donnée. Lorsque (0 = 0, la deuxième variable U2 est actualisée avec la valeur de la première variable U1. Lorsque cjçt) = 1, la deuxième variable U2 est actualisée avec la valeur de la deuxième variable U2. Lorsque cit) = Ô, la 15 deuxième variable U2 est actualisée avec l'opposé de la valeur de la première variable U1. Enfin, lorsque cl`) = I, la deuxième variable U2 est actualisée avec l'opposé de la valeur de la deuxième variable U2. La nouvelle valeur de la deuxième variable U2 est mémorisée avec écrasement afin de limiter la mémoire nécessaire à la mise en oeuvre du procédé 20 de traitement cryptographique conforme à l'invention. La somme de la première variable U, et de la deuxième variable U2 (avant écrasement, c'est-à-dire en utilisant les valeurs contenues dans la première variable U1 et dans la deuxième variable U2 en entrée de l'étape E58) est aussi déterminée lors de cette étape. Le résultat est mémorisé dans la première variable 25 U1 avec écrasement. Le processeur 200 détermine ensuite, à l'étape E60, si l'indice j a atteint la valeur s - 1, s représentant la longueur de la table de données c@. Dans la négative, l'indice j est incrémenté à l'étape E62 et le procédé boucle à l'étape E58 pour effectuer le tour suivant selon l'indice j de l'algorithme 30 cryptographique. Dans l'affirmative à l'étape E60, le procédé se poursuit comme suit à 17 l'étape E64. Le processeur 200 actualise à nouveau la première variable U1. La somme de la première variable Ui et de la deuxième variable U2 est ainsi déterminée lors de cette étape. Le résultat est mémorisé dans la première variable 5 U1 avec écrasement. Le processeur 200 actualise également le produit Q à l'étape E66. Pour cela, la somme du produit Q (actualisé à l'étape E52) et la première variable U1 est effectuée. Le résultat est mémorisé dans le produit Q avec écrasement. Dans cette description, on dénomme par « variable finale actualisée » la nouvelle valeur 10 du produit Q obtenue à l'étape E66 qui est mémorisée ensuite avec écrasement. Comme visible sur la figure 4, le processeur 200 détermine ensuite, à l'étape E68, si l'indice i a atteint la valeur 0. Dans la négative, l'indice i est diminué à l'étape E70 et le procédé boucle à l'étape E52 pour effectuer le tour suivant selon l'indice i de l'algorithme 15 cryptographique. Dans l'affirmative à l'étape E68, le procédé se poursuit à l'étape E72. Lors de cette étape E72, le processeur 200 retourne finalement la valeur du produit Q. Les différentes opérations effectuées ici correspondent à la chaîne 20 d'addition-soustraction associée à la valeur du scalaire k. Par construction, REVENDICATIONS1. Procédé de traitement cryptographique sur une courbe elliptique comprenant une étape de multiplication d'un point (P) de la courbe elliptique par un scalaire (k), ledit procédé comprenant les étapes suivantes : - sélection d'une table de données (c) associée à une partie au moins du scalaire (k), ladite table de données (c) comprenant une pluralité ordonnée de valeurs (c1), - initialisation d'une première variable (U1) à une première valeur multiple du point (P) et d'une deuxième variable (U2) à une deuxième valeur multiple du point (P), puis - pour chaque valeur (ci) successive de la table de données (c), - détermination d'une première variable actualisée par une opération d'addition entre la première variable (Ui) et la deuxième variable (U2), - détermination d'une deuxième variable actualisée en fonction de la première variable (Ul) ou de la deuxième variable (U2) selon la valeur (c1) successive concernée de la table de données, - mise à jour de la première variable (U1) en remplaçant la première variable (Ui) par la première variable actualisée et de la deuxième variable (U2) en remplaçant la deuxième variable (U2) par la deuxième variable actualisée, caractérisé en ce que pour au moins une des valeurs (ci) successives de la table de données (c), la détermination de la deuxième variable actualisée est effectuée en fonction de l'opposé de la première variable (Ui) ou de la deuxième variable (U2). 2. Procédé de traitement cryptographique selon la revendication 1, dans lequel, pour chaque valeur (c1) successive de la table de données (c), la deuxième variable actualisée est choisie parmi la première variable (U1), l'opposé de la première variable, la deuxième variable (U2) et l'opposé de la deuxième variable. 3. Procédé de traitement cryptographique selon la revendication 1 ou 2, dans lequel au moins une desdites première valeur multiple et deuxième valeur multiple est supérieure au double du point (P). 4. Procédé de traitement cryptographique selon l'une quelconque des revendications 1 à 3, dans lequel au moins une desdites première valeur multiple et deuxième valeur multiple est fonction de la table de données (c). 19 5. Procédé de traitement cryptographique selon l'une quelconque des revendications 1 à 4, dans lequel l'étape de sélection comprend également les étapes suivantes : - détermination d'une pluralité de tables de données associée à ladite 5 partie au moins du scalaire (k), et - sélection de manière aléatoire d'une table de données parmi ladite pluralité de tables de données déterminée. 6. Procédé de traitement cryptographique selon l'une quelconque des revendications 1 à 5, comprenant également, après la mise en oeuvre des étapes 10 de détermination de la première variable actualisée, de détermination de la deuxième variable actualisée et de mise à jour pour toutes les valeurs (ci) successives de la table de données (c), une étape de détermination dudit produit (Q) du point (P) de la courbe elliptique par ledit scalaire (k) au moyen d'une opération d'addition entre la première variable (U1) et la deuxième variable (U2). 15 7. Procédé de traitement cryptographique selon l'une quelconque des revendications 1 à 6, dans lequel le scalaire comprend une pluralité de parties de scalaire. 8. Procédé de traitement cryptographique selon la revendication 7, dans lequel chaque partie de scalaire a une longueur comprise entre 2 et 8 éléments 20 binaires. 9. Procédé de traitement cryptographique selon la revendication 7 ou 8, dans lequel le scalaire (k) comprend au moins une première partie de scalaire (0)) et une deuxième partie de scalaire (km), la première partie de scalaire (0) étant de poids plus fort que la deuxième partie de scalaire (kM) et dans lequel la 25 table de données sélectionnée est associée à la première partie de scalaire (km). 10. Procédé de traitement cryptographique selon la revendication 9, comprenant également les étapes suivantes : - détermination d'une variable finale par une opération de multiplication entre le terme 2" et la somme de la première variable (U1) et la deuxième variable 30 (U2), w étant la longueur de la deuxième partie de scalaire (kM), puis, pour la deuxième partie de scalaire (km), - sélection d'une autre table de données (cM) associée à la deuxième partie de scalaire (0)), ladite autre table de données (cM) comprenant une pluralité ordonnée de valeurs (cMi), 20 - initialisation de la première variable (U1) à une troisième valeur multiple du point (P) et de la deuxième variable (U2) à une quatrième valeur multiple du point (P), puis - pour chaque valeur (e)j) successive de ladite autre table de données 5 (e), - détermination d'une nouvelle première variable actualisée par une opération d'addition entre la première variable (U1) et la deuxième variable (U2), - détermination d'une nouvelle deuxième variable actualisée en fonction de la première variable (Ul) ou de la deuxième variable (U2) selon la 10 valeur (c(°)1) successive concernée de ladite autre table de données (cM), - mise à jour de la première variable (Ui) en remplaçant la première variable (Ui) par la nouvelle première variable actualisée et de la deuxième variable (U2) en remplaçant la deuxième variable (U2) par la nouvelle deuxième variable actualisée, 15 - détermination d'une variable finale actualisée par une opération d'addition entre la variable finale et la somme de la première variable (Ul) et de la deuxième variable (U2). 11. Procédé de traitement cryptographique selon la revendication 10, comprenant également une étape de détermination dudit produit (Q) du point (P) 20 de la courbe elliptique par ledit scalaire (k) sur la base de ladite variable finale actualisée. 12. Dispositif de traitement cryptographique sur une courbe elliptique comprenant une étape de multiplication d'un point (P) de la courbe elliptique par un scalaire (k), ledit dispositif comprenant : 25 - un bloc de sélection d'une table de données (c) associée à une partie au moins de scalaire, ladite table de données (c) comprenant une pluralité ordonnée de valeurs (ci), - un bloc d'initialisation d'une première variable (Ui) à une première valeur multiple du point (P) et d'une deuxième variable (U2) à une deuxième valeur 30 multiple du point (P), et - un bloc de traitement conçu pour, pour chaque valeur (ci) successive de la table de données (c) : - déterminer une première variable actualisée par une opération d'addition entre la première variable (U1) et la deuxième variable (U2), 21 - déterminer une deuxième variable actualisée en fonction de la première variable (Ui) ou de la deuxième variable (U2) selon la valeur (ci) successive concernée de la table de données, - mettre à jour la première variable (U-1) en remplaçant la première 5 variable (Ui) par la première variable actualisée et la deuxième variable (U2) en remplaçant la deuxième variable (U2) par la deuxième variable actualisée, caractérisé en ce que le bloc de traitement est conçu pour, pour au moins une des valeurs successives de la table de données, déterminer la deuxième variable actualisée en fonction de l'opposé de la première variable (1_11) 10 ou de la deuxième variable (U2).