Brevet FR2819078A1 — publié le 20020705

PROCEDE DE PROTECTION CONTRE LES ATTAQUES- PAR MESURE DE COURANT OU PAR MESURE DE RAYONNEMENT ELECTROMAGNETIQUE L'invention concerne un procédé permettant d'introduire un aléa dans le multiplicande lors d'une multiplication scalaire sur une courbe elliptique de Koblitz. L'invention concerne également un procédé permettant d'appliquer de manière non déterministe la méthode d'expansion selon le Frobenius à un entier opérant sur une courbe elliptique de Koblitz. L'invention concerne enfin un procédé de protection contre les attaques par mesure de courant ou par mesure de rayonnement électromagnétique contre des dispositifs électroniques utilisant des algorithmes cryptographiques basés sur les courbes elliptiques de Koblitz. Les courbes elliptiques interviennent aujourd'hui dans de nombreux algorithmes cryptographiques, du fait qu'elles requièrent moins de temps de calcul, et un espace mémoire moins important que les algorithmes basés sur des calculs dans le groupe des entiers modulaires, tout en offrant un niveau de sécurité identique. Une catégorie particulière de courbes elliptiques, celle des courbes dites anomales ou de Koblitz, présente des avantages accrus en terme de temps de calcul, et de mémoire requise. Ces courbes sont définies dans un corps de base de caractéristique 2 à 2An éléments, où n est un entier positif. On note GF (2An) un tel corps. Une courbe de Koblitz est définie par l'ensemble des points (x, y) solutions dans GF (2^n) de l'équation x'2+xy=xA3+axA2+1, où a est un paramètre valant soit 0 soit 1. Pour chaque valeur de n, c'est-à- dire pour chaque corps GF (2 An) il existe donc exactement deux courbes de Koblitz, l'une correspondant au paramètre a=l, l'autre à a=0. Dans GF (2'n), le frobenius est l'application qui à x fait correspondre xA2. Cette application peut être étendue à une courbe de Koblitz, par l'application notée f, qui à un point (x, y) d'une courbe de Koblitz fait correspondre le point f (x, y) = (xi2, y2). Si Q= (x, y) est un point de la courbe, le calcul de f (Q) est très rapide, du fait que l'opération x- > x^2, c'est-à-dire x associe x^2 est elle-même très rapide dans GF (2An). L'action du frobenius sur une courbe de Koblitz peut également être vue comme une multiplication par un nombre complexe qui est la solution de l'équation xi2+2= (-l) (l-a) x. On note par la suite T ce nombre complexe. On note maintenant Z [T] l'anneau des nombres complexes pouvant s'écrire u+vT, u et v étant de nombres entiers. Une des propriétés de l'anneau Z [T] est qu'il peut être muni d'une division euclidienne, comme les entiers naturels. Par conséquent, et en particulier, tout élément x de Z [T] peut s'écrire sous une forme Taddique non adjacente (non-adjacent form ou NAF, en anglais), c'est-à-dire qu'on peut toujours écrire x sous la forme x=a~l T^l+ a~{l-1} T^{l-1}+...+a~1 T+a~0, 1 étant la longueur de la forme T-addique avec la propriété que les ai valent-1, 0 ou 1, et que deux nombres ai consécutifs ne sont jamais tous les deux non-nuls. On appelle également cette forme une expansion selon le Frobenius (frobenius expansion, en anglais). De plus, 1 dépend de x de sorte que si x est un entier naturel, 1 est égal à deux fois la partie entière du logarithme en base 2 de Ixl. Ceci signifie que si x est un entier de b bits, sa décomposition T- addique non adjacente admet 2b termes. La propriété fondamentale des courbes elliptiques, et en particulier des courbes de Koblitz, est qu'on peut les munir d'une structure de groupe additif, c'est-à-dire qu'on peut faire des opérations semblables à des additions entre des éléments de la courbe. L'opération la plus couramment utilisée sur les courbes elliptiques, et en particulier sur les courbes de Koblitz dans un contexte cryptographique, est la multiplication scalaire. Cette opération est définie comme suit : si Q est un point de la courbe, et k un entier positif, on définit kQ comme le point obtenu en additionnant Q k fois à lui-même. De nombreuses techniques peuvent être utilisées pour accélérer cette opération. En particulier, sur une courbe de Koblitz, on peut tirer partie des propriétés énoncées précédemment concernant le Frobenius de la courbe, et la multiplication complexe par T. L'algorithme de multiplication scalaire le plus efficace connu à ce jour consiste à décomposer le multiplicande k selon une forme T addique non-adjacente dans l'anneau Z [T], puis à effectuer la multiplication scalaire en utilisant comme multiplicande cette décomposition T addique. L'accélération provient d'une part que dans une décomposition non adjacente, deux coefficients consécutifs ne sont pas tous les deux non-nuls, ce qui diminue en moyenne de 3/2 le nombre de coefficients non-nuls, et donc le nombre d'additions de points, et d'autre part, que la multiplication par le complexe T est très rapide, du fait qu'elle correspond à une application du frobenius sur la courbe. L'algorithme complet inclut en fait une étape supplémentaire, pour réduire la longueur de la forme non-adjacente, qui serait de 2b bits si on appliquait directement l'algorithme de production d'une forme non adjacente au multiplicande. On réduit la taille de cette forme non adjacente en calculant préalablement le reste de la division de k par TAn-1 dans Z [T], et en appliquant au résultat l'algorithme produisant une forme nonadjacente. On obtient ainsi une forme non-adjacente de même longueur que la décomposition binaire de k. L'algorithme exact est détaillé comme suit, une entrée et une sortie étant définie : Entrée : un entier k, un point Q de la courbe Sortie : le point kQ ; Algorithme 1 : Etape 1 : calcul de k'dans Z [T] tel que k'soit le reste de la division de k par TAn-l ; Etape 2 : calcul de k'', la forme T-addique non adjacente correspondant à k' ; Etape 3 : calcul de k''Q. Cet algorithme est décrit dans les actes de la conférence intitulée Advances in Cryptology CRYPTO'97 , tenue en août 1997, Santa Barbara, Californie, Etats-Unis d'Amérique. Lors d'une multiplication scalaire de k par Q au cours d'un algorithme cryptographique, on cherche souvent à faire en sorte que la multiplication scalaire soit un algorithme non déterministe, c'est-à-dire que son exécution soit différente à chaque fois qu'il est appelé. Ceci est en particulier utile pour se protéger contre les attaques par mesure de courant (differential power analysis, DPA en anglais, et SPA, signal power analysis, en anglais), lorsque cet algorithme est programmé dans un dispositif électronique comme une carte à puce. L'une des techniques qui peuvent être utilisées consiste à masquer le multiplicande par un entier aléatoire. Le point Q étant un élément du groupe de la courbe, il existe un entier p tel que pQ=O (p est appelé l'ordre du point Q). Par conséquent, on peut modifier l'algorithme de multiplication scalaire de k par Q, en effectuant à la place de kQ, (k+rp) Q, où r est un aléa choisi arbitrairement à chaque exécution de l'algorithme de multiplication scalaire. L'inconvénient de cette méthode est que pour être efficace, ce brouillage doit faire intervenir un grand nombre de choix possibles de r, et donc des grandes valeurs de r, ce qui impose un ralentissement d'autant de l'algorithme de multiplication scalaire. De plus, le nombre de valeurs prises par rp modulo TAn-l est en général très petit, de l'ordre d'une dizaine de valeurs. Cette différence sera l'objet d'une publication lors de la conférence CHES'2001 , qui se tiendra à Paris en mai 2001. Par conséquent, on ne peut utiliser ce procédé pour rendre non déterministe de façon fiable la multiplication scalaire si on utilise l'algorithme 1 : le nombre d'exécutions différentes de l'algorithme de multiplication scalaire pour un même exposant k serait beaucoup trop faible, et ne fournirait pas une protection suffisante. Par conséquent, on ne connaît pas à ce jour de moyen efficace pour coder de manière aléatoire le multiplicande d'une multiplication scalaire sur une courbe de Koblitz. L'invention concerne un procédé permettant de coder de manière aléatoire un multiplicande lors d'une multiplication scalaire d'un point appartenant à une courbe de Koblitz. Le procédé est composé de deux sous-procédés indépendants, mais qui peuvent être utilisés conjointement pour obtenir les meilleurs résultats, c'est-à-dire une entropie maximale de l'exposant, à un surcoût de calcul minimal. Le premier sous-procédé de l'invention consiste à généraliser la méthode de masquage du multiplicande exposée plus haut. On note E une courbe de Koblitz sur le corps GF (2'n), et Q un point engendrant le sousgroupe de E de cardinal égal à la moitié du cardinal de la courbe. On note p l'ordre de Q dans le groupe multiplicatif de la courbe. On note également N (E) l'ensemble des éléments x de Z [T] tels que xQ=O. En particulier, N (E) contient p, ainsi que l'élément (T^n- 1)/ (T-1). Si l'algorithme doit multiplier Q par un scalaire k, selon l'invention, l'algorithme procède comme exposé précédemment, mais donne comme entrée à l'algorithme 1 Q et k'=k+r, où r est un aléa tiré dans N (E), au lieu de Q et k. Ainsi, après encodage (division par T n-l, détermination de la forme T addique non-adjacente associée), le multiplicande sera déterminé de manière aléatoire, en fonction de l'aléa r, mais le résultat ne sera pas affecté, du fait que kQ=k'Q, par définition de l'ensemble N (E). L'algorithme d'encodage est détaillé ci-dessous : Algorithme 2 : Entrée : un entier k, 0 Sortie : une forme T addique non-adjacente 1 telle que ! Q=kQ ; Etape 1 : Tirer un élément aléatoire ri dans Z [T] et un second élément aléatoire r2 dans Z [T] et Calculer dans Z [T] r=rl*p+r2* (TAn-l)/ (T-1) Etape 2 : calculer k'=k+r ; Etape 3 : calculer k'', le reste de la division euclidienne de k'par (TN-1)/ (T-1) dans Z [T] ; Etape 4 : Calculer la forme T addique non adjacente k'''correspondant à k''dans Z [T] ; Etape 5 : Retourner k'''. L'avantage de ce procédé est de pouvoir effectivement introduire un caractère aléatoire, tel que par exemple un premier aléa ri et un second r2 comme ci-dessus, dans le multiplicande devant être utilisé dans un algorithme de multiplication scalaire. Cette méthode peut être utilisée dans tout algorithme cryptographique requerrant une multiplication scalaire au cours de son exécution, en particulier, tout algorithme de signature, dont le schéma ECDSA est un exemple, ou de chiffrement basé sur un schéma semblable au schéma ElGamal appliqué aux courbes elliptiques. Le deuxième sous-procédé (procédé 2) permet d'introduire un aléa dans l'encodage du multiplicande en faisant varier la valeur de l'élément de Z [T] utilisé pour réduire la longueur de la forme T addique non adjacente lors de l'encodage du multiplicande. Au cours de l'algorithme 1, on effectue en effet une division euclidienne du multiplicande k par T^n-1 dans Z [T]. Cette division a pour effet de ramener la longueur de la forme T addique non adjacente à une valeur égale à la longueur de décomposition en base 2 de k. D'autre part, cette opération ne change pas la valeur du résultat de la multiplication scalaire, du fait que (TN-1) Q=0. On peut généraliser le procédé, en ne faisant plus seulement une division par TAN-1, mais par tout élément x de N (E). Le procédé est résumé par l'algorithme 3 : Algorithme 3 : Entrée : un entier k, 0 Sortie : une forme T addique non-adjacente 1 telle que ! Q=kQ ; Etape 1 : Tirer un élément aléatoire x dans N (E) comme indiqué dans l'algorithme 2 ; Etape 2 : Calculer k', le reste de la division euclidienne de k par x dans Z [T] ; Etape 3 : Calculer k'', la forme T addique non adjacente correspondant à k' ; Etape 4 : Retourner k''. Les deux premiers sous-procédés peuvent être utilisés conjointement pour former un troisième sous- procédé (procédé 3), résumé par l'algorithme 4. Nous introduisons quelques notations. Si x=u+vT est un élément de Z [T], on note nu (x) la norme de x dans Z [T], définie par nu (x) =u^2+ (-1) ^ {1-a} uv+2v^2. Cette norme vérifie la propriété que la longueur de la décomposition T addique non adjacente de x est égale à log~2 (nu (x) ). Avec cette notation, l'algorithme 4 s'écrit comme suit : Algorithme 4 Paramètre a : un entier a tel que n Entrée : un entier k, 0 Sortie : une forme T addique non-adjacente 1 telle que lQ=kQ et telle que 1 soit de longueur égale à a ; Etape 1 : Choisir au hasard un élément ri de Z [T] tel que log~2 (nu (rai)) =a-n ; Etape 2 : Choisir au hasard un élément r2 de Z [T] tel que log~2 (nu (r2) ) =a ; Etape 3 : Calculer k', le reste de la division euclidienne de k+r2* (TAn-l)/ (T-1) par rl* (TAn-1) ; Etape 4 : Calculer k'', la forme T addique non adjacente de k' ; Etape 5 : Retourner k''. Ce troisième sous-procédé peut être utilisé dans tout schéma cryptographique requerrant une multiplication scalaire sur courbe elliptique, et en particulier sur courbe de Koblitz, pour protéger ces schémas contre des attaques par mesure de courant ou de rayonnement. Ce procédé peut en particulier être utilisé pour protéger des schémas de signature numérique ou de chiffrement utilisant des courbes elliptiques contre ces attaques. Par ailleurs, l'invention concerne également des dispositifs électroniques mettant en oeuvre les trois procédés décrits ci-dessus. Plus précisément, les dispositifs électroniques sont des objets portables comme une carte à puce. REVENDICATIONS 1. Procédé de protection contre les attaques par mesure de courant ou par mesure de rayonnement électromagnétique dans un dispositif électronique mettant en oeuvre un algorithme cryptographique basé sur les courbes elliptiques de Koblitz E définies par l'ensemble des points (x, y), solutions de l'équation xA2+xy=xA3+axA2+1 dans le corps de base de caractéristique 2 à 2An noté GF (2An), n étant un entier positif, a un paramètre valant 1 ou 0, Q étant un point engendrant le sous-groupe de E de cardinal égal à la moitié du cardinal de la courbe E, p étant l'ordre de Q dans le groupe additif de la courbe, N (E) étant l'ensemble des éléments x de Z [T], solutions de l'équation xQ=O, T étant un nombre complexe solution de l'équation x2+2= (-1) (l-a) x, Z [T] étant l'anneau des complexes pouvant s'écrire u+vT, u et v étant des nombres entiers, ledit algorithme permettant de coder de manière aléatoire un multiplicande lors d'une multiplication scalaire d'un point appartenant à une courbe de Koblitz caractérisé en ce que ledit procédé pose comme conditions l'entrée et la sortie suivantes : Entrée : choisir un entier k, 0 Sortie : choisir une forme T addique non-adjacente 1 telle que ! Q=kQ ; et en ce qu'il comprend les étapes de fonctionnement suivantes : Etape 1 : Tirer un élément aléatoire ri dans Z [T] et un second élément aléatoire r2 dans Z [T] et Calculer dans Z [T] r=rl*p+r2* (Tn-l)/ (T-l) ; Etape 2 : calculer k'=k+r ; Etape 3 : calculer k'', le reste de la division euclidienne de k'par (TN-1)/ (T-1) dans Z [T] ; Etape 4 : Calculer la forme T addique non adjacente k'''correspondant à k''dans Z [T] Etape 5 : Retourner k'''. 2. Procédé de protection contre les attaques par mesure de courant ou par mesure de rayonnement électromagnétique utilisant un algorithme cryptographique basé sur les courbes elliptiques de Koblitz E définies par l'ensemble des points (x, y), solutions de l'équation x^2+xy=x^3+ax^2+1 dans le corps de base de caractéristique 2 à 2An noté GF (2An), n étant un entier positif, a un paramètre valant 1 ou 0, Q étant un point engendrant le sous-groupe de E de cardinal égal à la moitié du cardinal de la courbe E, p étant l'ordre de Q dans le groupe additif de la courbe, N (E) étant l'ensemble des éléments x de Z [T], solutions de l'équation xQ=0, T étant un nombre complexes solution de l'équation x^2+2= (-l) (l-a) x, Z [T] étant l'anneau des complexes pouvant s'écrire u+vT, u et v étant des nombres entiers, ledit algorithme permettant de coder de manière aléatoire un multiplicande lors d'une multiplication scalaire d'un point appartenant à une courbe de Koblitz caractérisé en ce que ledit procédé pose comme conditions l'entrée et la sortie suivantes : Entrée : choisir un entier k tel que 0 Sortie : choisir une forme T addique non-adjacente 1 telle que ! Q=kQ ; et en ce qu'il comprend les étapes de fonctionnement suivantes : Etape 1 : Tirer un élément aléatoire x dans N (E) comme indiqué dans l'algorithme 2 ; Etape 2 : Calculer k', le reste de la division euclidienne de k par x dans Z [T] ; Etape 3 : Calculer k'', la forme T addique non adjacente correspondant à k' ; Etape 4 : Retourner k''. 3. Procédé de protection contre les attaques par mesure de courant ou par mesure de rayonnement électromagnétique utilisant un algorithme cryptographique basé sur les courbes elliptiques de Koblitz E définies par l'ensemble des points (x, y) solutions de l'équation x^2+xy=x^3+ax^2+1 dans le corps de base de caractéristique 2 à 2^n noté GF (2An), a un paramètre valant 1 ou 0, n étant un entier positif, Q étant un point engendrant le sous-groupe de E de cardinal égal à la moitié du cardinal de la courbe E, p étant l'ordre de Q dans le groupe multiplicatif de la courbe, N (E) étant l'ensemble des éléments x de Z [T], solutions de l'équation xQ=O, T étant un nombre complexe solution de l'équation x2+2= (-1)' (1-a) x, Z [T] étant l'anneau des complexes pouvant s'écrire u+vT, u et v étant des nombres entiers, ledit algorithme permettant de coder de manière aléatoire un multiplicande lors d'une multiplication scalaire d'un point appartenant à une courbe de Koblitz caractérisé en ce que ledit procédé pose comme conditions l'entrée, la sortie, les notations et le paramètre a suivants : Notations : Si x=u+vT est un élément de Z [T], on note nu (x) la norme de x dans Z [T], définie par nu (x) =u^2+(-1)^{1-a} uv+2v^2, norme vérifiant la propriété que la longueur de la décomposition T addique non adjacente de x est égale à log~2 (nu (x)) ; Paramètre a : un entier a tel que n Etape 1 : Choisir au hasard un élément ri de Z [T] tel que log~2 (nu (rl)) =a-n ; Etape 2 : Choisir au hasard un élément r2 de Z [T] tel que log~2 (nu (r2) ) =a ; Etape 3 : Calculer k', le reste de la division euclidienne de k+r2* (T^n-l)/ (T-l) par rl* (TAn-1) ; Etape 4 : Calculer k'', la forme T addique non adjacente de k' ; Etape 5 : Retourner k''. 4. Dispositif électronique mettant en oeuvre les procédés de protection contre les attaques par mesure de courant ou par mesure de rayonnement selon l'une quelconque des revendications 1 à 3. 5. Dispositif électronique selon la revendication 4 caractérisé en ce qu'il s'agit d'un objet portable électronique. 6. Dispositif électronique selon la revendication 5 caractérisé en ce qu'il s'agit d'une carte à puce.