Brevet FR3014582A1 — publié le 20150612

L'invention concerne un procédé de traitement, de préférence cryptographique, de données, par exemple mis en oeuvre au sein d'une entité électronique, et un dispositif associé (par exemple cette entité électronique). Beaucoup de systèmes cryptographiques ont été bâtis sur la difficulté de résoudre le problème du logarithme discret dans de grands groupes ou sous- groupes associés à une courbe elliptique. Cette solution est maintenant largement adoptée par les gouvernements et les standards. Dans ces systèmes, la clé secrète est un scalaire choisi aléatoirement tandis que la clé publique correspondante est un multiple d'un point donné par ce scalaire. Ces calculs sont utilisés, entre autres, pour le chiffrement et le déchiffrement de messages, la signature d'un message, la mise en accord de 20 clé, la mise en accord de clés à base de mots de passe. Les courbes elliptiques utilisées dans les systèmes cryptographiques sont définies par des paramètres, typiquement un sextuplet : T = (p, a, b, G, a, h) (1) p est un entier, dans la pratique un nombre premier, qui spécifie le corps 25 fini IFp. a et b spécifient la courbe elliptique E(IFp) définie par l'équation : E:y2 E X3 + a - x + b (mod p) (2) G est un point de base G =(xG,yG) sur E(IFp). a est un nombre premier qui est l'ordre de G et h est le cofacteur h = #E(IFp)/q. Toutes ces courbes ne représentent pas la même résistance à certaines attaques et ne sont donc pas également robustes dans le contexte des systèmes cryptographiques. Certaines familles de courbes doivent donc être évitées car elles conduisent à des systèmes cryptographiques faibles susceptibles d'être facilement attaqués. Il en découle que lorsqu'un système cryptographique se voit proposer une courbe particulière, ce système conduit une série de tests visant à vérifier que la courbe proposée est suffisamment robuste et vérifie certains critères. Les courbes passant avec succès ces tests sont déclarées valides pour une utilisation cryptographique, tandis que les autres sont déclarées invalides. Une des attaques connues contre les systèmes cryptographiques basés sur l'utilisation d'une courbe elliptique est l'attaque connue sous le nom d'attaque MOV, du nom des chercheurs l'ayant identifiée : Alfred J. Menezes, Tatsuaki Okamoto et Scott A. Vanstone dans l'article intitulé « Reducing Elliptic Curve Logarithms to Logarithms in a Finite Field » publié dans « IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 39, NO. 5, SEPTEMBER 1993 ». L'un des tests effectués pour valider une courbe elliptique dans le cadre d'une utilisation par un système cryptographique consiste à vérifier que la courbe proposée n'est pas vulnérable à une attaque MOV. Ce test est appelé la condition MOV et est définie dans le standard IEEE Std 1363-2000 intitulé « IEEE Standard Specifications for Public-Key Cryptography » à la section A.12.1. Cette condition consiste à vérifier que l'ordre a du sous-groupe générateur G possède un ordre supérieur à une constante prédéterminée B dans le groupe de taille p. Nous rappelons que l'ordre d'une valeur a, notée ord(a), est le plus petit entier i tel que ai E 1 mod p. La condition revient donc à vérifier que ord(q)> B dans IFp. L'algorithme proposé consiste à calculer successivement al pour i de 2 à B et à vérifier que chacune de ces valeurs est différente de 1. Les seuils envisagés pour la condition MOV sont aujourd'hui de l'ordre de 10 000. De ce fait, le calcul de la condition MOV pour la validation d'une courbe elliptique dans un système cryptographique se révèle très coûteux. La présente invention a pour but de résoudre les inconvénients précités. Selon l'invention, il est proposé une méthode de validation d'une courbe elliptique dans un système cryptographique qui permet de gagner de l'ordre d'un facteur 2 sur le nombre d'opérations nécessaires à la vérification de la condition de MOV. L'invention concerne un procédé de traitement cryptographique par un dispositif de traitement de donnée comprenant les étapes suivantes pour tester la condition MOV d'une courbe elliptique : une étape d'obtention d'un entier p spécifiant un corps fini IFpet d'un entier q spécifiant l'ordre d'un sous-groupe générateur d'une courbe elliptique sur le corps fini ; une étape d'obtention d'un entier pair B définissant une borne ; et une étape de vérification que l'ordre de q dans le corps fini IFp est au moins égal à la borne B ; et qui comprends également l'étape suivante : une étape de détermination que l'ordre de q dans le corps fini IFp est au moins égal à la borne B uniquement sur la base de la vérification que l'ordre de q est différent de j pour tout j E K + 1,4 Selon un mode particulier de réalisation de l'invention, le procédé comporte les étapes suivantes pour la validation d'une courbe elliptique : une étape d'obtention d'un ensemble de paramètres définissant une courbe elliptique incluant les entiers p et q ; une étape de test d'un ensemble de conditions sur les paramètres obtenus incluant un test de la condition MOV selon la revendication 1 ; et une étape de validation de ladite courbe elliptique si l'ensemble des tests est positif. L'invention concerne également un procédé de personnalisation d'une carte à puce qui comprend un procédé de validation d'une courbe elliptique selon l'invention. L'invention concerne également un procédé d'établissement d'un secret commun avec un second dispositif de traitement de données, qui comprend un procédé de validation d'une courbe elliptique reçue du second dispositif de traitement de données selon l'invention. L'invention concerne également un dispositif de traitement de données comprenant des moyens cryptographiques qui comprennent pour tester la condition MOV d'une courbe elliptique : des moyens d'obtention d'un entier p spécifiant un corps fini IFp et d'un entier q spécifiant l'ordre d'un sous-groupe générateur d'une courbe elliptique sur le corps fini ; des moyens d'obtention d'un entier pair B définissant une borne ; et des moyens de vérification que l'ordre de q dans le corps fini IFp est au moins égal à la borne B ; et qui comprend également : des moyens de détermination que l'ordre de q dans le corps fini IFp est au moins égal à la borne B uniquement sur la base de la vérification que l'ordre de q est différent de j pour tout j E r + 1, 4 Selon un mode particulier de réalisation de l'invention, le dispositif comporte pour la validation d'une courbe elliptique : des moyens d'obtention d'un ensemble de paramètres définissant une courbe elliptique incluant les entiers p et q ; des moyens de test d'un ensemble de conditions sur les paramètres obtenus incluant un dispositif pour le test de la condition MOV selon l'invention ; et des moyens de validation de ladite courbe elliptique si l'ensemble des tests est positif. L'invention concerne également un dispositif de traitement de données comportant des moyens d'établissement d'un secret commun avec un second dispositif de traitement de données, caractérisé en ce qu'il comprend un dispositif de validation d'une courbe elliptique reçue du second dispositif de traitement de données selon l'invention. L'invention concerne également un programme d'ordinateur comprenant 5 des instructions adaptées à la mise en oeuvre de chacune des étapes du procédé selon l'invention lorsque ledit programme est exécuté sur un ordinateur. L'invention concerne également un moyen de stockage d'informations, 10 amovible ou non, partiellement ou totalement lisible par un ordinateur ou un microprocesseur comportant des instructions de code d'un programme d'ordinateur pour l'exécution de chacune des étapes du procédé selon l'invention. 15 D'autres particularités et avantages de l'invention apparaîtront encore dans la description ci-après. Aux dessins annexés, donnés à titre d'exemples non limitatifs : - la Figure 1 représente schématiquement les éléments principaux d'une forme de réalisation possible pour une carte à microcircuit ; 20 - la Figure 2 représente l'allure physique générale de la carte à microcircuit de la Figure 1 ; - La Figure 3 illustre l'algorithme de validation d'une courbe elliptique dans un système de cryptographie selon un exemple de réalisation de l'invention ; 25 - La Figure 4 illustre l'algorithme du test de la condition MOV selon un exemple de réalisation de l'invention. La Figure 1 représente schématiquement un dispositif de traitement de données 40 dans lequel la présente invention peut être mise en oeuvre. Ce 30 dispositif 40 comprend un microprocesseur 10, auquel est associée d'une part une mémoire vive 60, par exemple au moyen d'un bus 70, et d'autre part une mémoire non volatile 20 (par exemple du type EEPROM), par exemple à travers un bus 50. Le dispositif de traitement de données 40, et précisément le microprocesseur 10 qu'il incorpore, peuvent échanger des données avec des dispositifs extérieurs au moyen d'une interface de communication 30. On a schématiquement représenté sur la figure 1 la transmission d'une donnée d'entrée X reçue d'un dispositif extérieur (non représenté) et transmise de l'interface de communication 30 au microprocesseur 10. De manière similaire, on a représenté la transmission d'une donnée de sortie Y du microprocesseur 10 vers l'interface de communication 30 à destination d'un dispositif extérieur. Cette donnée de sortie Y est issue d'un traitement de données par le microprocesseur 10, généralement sur la donnée d'entrée X à l'aide d'une donnée secrète 80 interne au système, par exemple une clé privée. Bien que, pour l'illustration, les données d'entrée et les données de sortie figurent sur deux flèches différentes, les moyens physiques qui permettent la communication entre le microprocesseur 10 et l'interface 30 pourront être réalisés par des moyens uniques, par exemple un port de communication série ou un bus. Le microprocesseur 10 est apte à exécuter un logiciel (ou programme d'ordinateur) qui permet au dispositif de traitement de données 40 d'exécuter un procédé conforme à l'invention dont des exemples sont donnés dans la suite. Le logiciel est composé d'une série d'instructions de commande du microprocesseur 10 qui sont par exemple stockées dans la mémoire 20. En variante, l'ensemble microprocesseur 10 - mémoire non-volatile 20 - mémoire vive 60 peut être remplacé par un circuit à application spécifique qui comprend alors des moyens de mise en oeuvre des différentes étapes du procédé de traitement de données. La Figure 2 représente une carte à microcircuit qui constitue un exemple de dispositif de traitement de données conforme à l'invention tel que représenté à la Figure 1. L'interface de communication 30 est dans ce cas réalisée au moyen des contacts de la carte à microcircuit. La carte à microcircuit incorpore un microprocesseur 10, une mémoire vive 60 et une mémoire non volatile 20 comme cela est représenté sur la Figure 1. Cette carte à microcircuit est par exemple conforme à la norme ISO 7816 et munie d'un microcontrôleur sécurisé qui regroupe le microprocesseur (ou CPU) 20 et la mémoire vive 60. En variante, le dispositif de traitement de données peut être une clef USB, un document ou un support d'informations papier comportant dans l'une de ses feuilles un microcircuit associé à des moyens de communication sans contact. Il s'agit de manière préférée d'une entité électronique portable ou de poche. Il peut également s'agir d'un circuit dédié à la sécurité (secure element en anglais) pouvant être intégré directement au sein d'un appareil, par exemple soudé dans un téléphone mobile. La Figure 3 illustre l'algorithme de validation d'une courbe elliptique dans un système de cryptographie selon un exemple de réalisation de l'invention. Lors d'une première étape 300, un ensemble de paramètres définissant une courbe elliptique est obtenue par le dispositif de traitement de données. Ces paramètres sont obtenus par exemple dans deux circonstances particulières. Un premier exemple est la personnalisation d'une carte à puce. Les cartes à puce généralement fabriquées sont génériques. Une carte à puce est notamment caractérisée en ce qu'elle est conforme à la norme ISO 7816. L'épaisseur du corps de carte en matière plastique est généralement inférieur à 0,8 mm. Elles peuvent être utilisées pour divers services ou lorsqu'elles sont fabriquées pour un service donné, elles sont génériques dans le sens où elles ne sont pas personnalisées pour leur utilisateur final. Typiquement ces cartes génériques ne sont pas utilisables directement. Leur utilisation nécessite au moins une étape de personnalisation qui consiste à inscrire dans la puce de la carte les paramètres spécifiques à l'utilisation envisagée. Par exemple, une carte de paiement bancaire doit être personnalisée pour contenir les données spécifiques de la banque et du client final destinataire de cette carte. Dans certains cas, cette personnalisation peut se faire en plusieurs étapes. Une première étape, par exemple, peut consister à personnaliser la carte avec les paramètres de l'établissement bancaire, tandis qu'une seconde étape de personnalisation consiste alors à personnaliser la carte avec les paramètres relatifs à l'utilisateur final. Lors d'une telle étape de personnalisation, parmi les paramètres qui sont inscrits dans la carte peut figurer les paramètres du système cryptographique devant être utilisé. Dans ce cadre, une opération de personnalisation de la carte peut vouloir définir la courbe elliptique servant de référence pour le chiffrement et/ou la signature numérique. Un second exemple où la carte peut être amenée à recevoir un ensemble de paramètres définissant une courbe elliptique devant être utilisée par le système cryptographique peut se retrouver lors de certains échanges entre une carte personnalisée et un pair. Nous entendons par pair dans le présent contexte, un second dispositif de traitement de données communiquant avec le dispositif de traitement de données implémentant l'invention. Ce dispositif peut être également une carte à puce, par exemple, mais aussi un serveur hébergeant un service auquel l'utilisateur de la carte veut accéder ou tout autre dispositif communiquant avec la carte. Par exemple, dans un contexte d'établissement d'un canal de communication chiffré avec un pair, une procédure est engagée entre le pair et le dispositif pour échanger un secret commun. Cette procédure se traduit par l'envoi d'un message comprenant une clé cryptographique. Cette clé est ensuite utilisée par les deux dispositifs pour sécuriser, typiquement crypter et décrypter, leurs communications. Lors de cet échange, le dispositif et le pair doivent s'accorder sur les paramètres du système cryptographique devant être utilisé dans les échanges. Le pair peut alors proposer une courbe elliptique pour servir de référence au système cryptographique. Ces exemples décrits pour une carte à puce sont tout aussi applicables à un élément sécurisé (secure element en anglais). Ces éléments sécurisés sont des composants dédiés à la sécurité pouvant être intégrés à un dispositif électronique comme un téléphone mobile par exemple. Dans ces exemples, la courbe proposée doit être validée par le dispositif de traitement de données afin d'être validée pour une utilisation par le système cryptographique. D'autres exemples encore peuvent être identifiés ou un dispositif de traitement de données peut être amené à recevoir un ensemble de paramètres définissant une courbe elliptique devant être validée pour une utilisation par le système cryptographique. Les paramètres obtenus sont typiquement le sextuplet déjà décrit. Dans certains modes de réalisation, la courbe elliptique peut être définie par un jeu de paramètres légèrement différents selon le contexte. Lors de l'étape 301, ces paramètres subissent un ensemble de tests afin de vérifier la validité de la courbe elliptique proposée. Il s'agit typiquement des tests tels que proposés par le standard IEEE 1363-200 déjà cité. Mais l'invention ne se limite pas à ces tests. Cette procédure de test inclut le test connu sous le nom de test de la condition MOV. Lors de l'étape 302, le résultat de ces tests est vérifié. Dans le cas où l'ensemble des tests se révèlent positifs, la courbe proposée est déclarée valide, lors de l'étape 303, pour une utilisation par le système cryptographique. Dans le cas contraire, elle est déclarée invalide par l'étape 304. Le test de la condition MOV revient à tester les paramètres p et a d'une courbe elliptique où p est un entier, dans la pratique un nombre premier, qui spécifie le corps fini IFp et a est l'ordre du sous-groupe générateur G. Ce test nécessite un paramètre B que nous appelons paramètre de MOV. Le test consiste à vérifier que l'ordre de a est inférieur à B dans le corps fini IFp. Il s'agit donc de vérifier que pour tout entier i E [1, /3], l'ordre de a est différent de i, et donc que la valeur ai mod p est différente de 1. Les inventeurs ont remarqué que si ai est égal à 1 pour une valeur i E [1,B/2], alors il existe une valeur j = a. i, tel que j E + 1, Bi avec qj = qa.i = (ai)a = la E 1 mod p. Il est à noter que B est considéré comme étant pair, si B est impair il est possible de considérer B + 1. Alternativement, le calcul vérifiant que l'ordre de a est différent de i peut se faire en vérifiant, par exemple, l'égalité suivante : qi+k mod p # ak mod p . A contrario, s'il n'existe aucune valeur j E + 1,B] pour laquelle qj E 1 mod p, il est possible d'en déduire qu'il n'existe aucune valeur i E [1,B /2] pour laquelle ai E 1 mod p. En conséquence, il est possible de ramener le test de la condition de MOV à la seule vérification que pour tout j E + 1, Bi il n'existe aucune valeur de j pour laquelle l'ordre de a soit égal à j, c'est-à-dire pour laquelle qj 1 mod p, cette condition étant suffisante. Selon le procédé, il y a une étape de vérification que pour tout j E + 1, Bi le test que l'ordre de a est différent de j est vérifié alors dans ce cas, nécessairement, le procédé détermine toujours que l'ordre de a est au moins égal à B. Cette détermination est faite sans tester l'ordre de a pour les valeurs de j E [1,)12]. Il est donc possible d'économiser la moitié des calculs utilisés dans l'art antérieur pour tester la condition de MOV.30 La Figure 4 illustre l'algorithme du test de la condition MOV selon un exemple de réalisation de l'invention. Lors d'une étape 400, le dispositif obtient les paramètres p, q et B tel que déjà définis. Lors d'une première étape 401, la valeur j est initialisée à la valeur B/2 + 1. Ensuite la valeur u E qj est calculée lors d'une étape 402. Lors de la première itération, il est possible de calculer u = q7+1 selon la méthode dite « square-and-multiply » telle que décrite dans le livre de A.J. Menezes, P.C. van Oorschot, S.A. Vanstone intitulé « Handbook of Applied Cryptography » CRC Press. Alternativement la méthode dite des chaînes d'addition décrite dans la même référence peut être utilisée. Les itérations suivantes de l'étape 402, peuvent être calculées avantageusement en multipliant simplement la valeur précédente de u par q. Cette opération est faite dans le corps finis et donc modulo p. Lors d'une étape 403, la valeur de u est testée pour vérifier si elle est égale à 1. Si le test est vrai, il est constaté lors de l'étape 404 que la condition de MOV n'est pas remplie. Dans le cas contraire, la valeur de j est incrémentée lors de l'étape 405. La valeur de j est testée pour lors de l'étape 406. si j > B on déduit lors de l'étape 407 que l'ordre de q est au moins égal à B et que donc la condition de MOV est remplie. Dans le cas contraire le contrôle retourne à l'étape 402 pour calculer la nouvelle valeur de u. Une telle méthode de test de la condition de MOV permet d'économiser la moitié des calculs en ne testant que les valeurs de la moitié supérieure de l'intervalle [1, /3]. Une telle méthode peut être mise en oeuvre par un dispositif tel que celui illustré par la Figure 1 comme suit. Lorsqu'une nouvelle courbe elliptique est soumise au dispositif 40, les paramètres de la courbe, comprenant le paramètre q sont reçus par l'interface d'entrée sortie 30 du dispositif 40. Sur réception de ces paramètres, le dispositif 40 vérifie la condition MOV conformément à l'invention. En cas de résultat négatif, le dispositif 40 retourne un message d'erreur par l'interface d'entrée sortie 30. En cas de résultat positif, le dispositif 40 mémorise les paramètres de la courbe. Il peut alors utiliser la courbe elliptique pour encrypter, typiquement avec une clé publique mémorisée dans la mémoire volatile du dispositif, ou décrypter une donnée, typiquement avec une clé privée mémorisée dans la mémoire non volatile du dispositif 40. Cette donnée est soit obtenue à partir d'un message reçu par l'interface d'entrée sortie 30 et/ou complètement engendrée par le dispositif 40, par exemple s'il s'agit d'un nombre aléatoire. Un message obtenu à partir du résultat de cet encryptage ou décryptage est envoyé, éventuellement retourné, via l'interface d'entrée sortie ou bien est mémorisé en mémoire non volatile. Dans le cas de la personnalisation, les paramètres sont généralement mémorisés en mémoire non volatile en cas de succès de la vérification de la condition MOV. Sinon, les paramètres peuvent être mémorisés seulement en mémoire volatile. En cas de résultat négatif de la vérification de la condition MOV, les paramètres ne sont pas mémorisés et/ou sont effacés. Les messages échangés ci-dessus sont préférentiellement au format APDU. Le dispositif électronique 40 est généralement sécurisé, car il est par exemple conforme à la norme FIPS ou aux critères communs. Naturellement, pour satisfaire des besoins spécifiques, une personne compétente dans le domaine de l'invention pourra appliquer des modifications dans la description précédente. Bien que la présente invention ait été décrite ci-dessus en référence à des modes de réalisation spécifiques, la présente invention n'est pas limitée aux modes de réalisation spécifiques, et les modifications qui se trouvent dans le corps d'application de la présente invention seront évidentes pour une personne versée dans l'art. REVENDICATIONS1. Procédé de traitement cryptographique par un dispositif de traitement de donnée comprenant les étapes suivantes pour tester la condition MOV d'une courbe elliptique : une étape d'obtention d'un entier p spécifiant un corps fini IFpet d'un entier q spécifiant l'ordre d'un sous-groupe générateur d'une courbe elliptique sur le corps fini ; une étape d'obtention d'un entier pair B définissant une borne ; et une étape de vérification que l'ordre de q dans le corps fini IFp est au moins égal à la borne B ; caractérisé en ce que l'étape de vérification comprends l'étape suivante : une étape de détermination que l'ordre de q dans le corps fini IFp est au moins égal à la borne B uniquement sur la base de la vérification que l'ordre de q est différent de j pour tout j E [iî + 1, B]. 2. Procédé selon la revendication 1, caractérisé en ce qu'il comporte les étapes suivantes pour la validation d'une courbe elliptique : une étape d'obtention d'un ensemble de paramètres définissant une courbe elliptique incluant les entiers p et q ; une étape de test d'un ensemble de conditions sur les paramètres obtenus incluant un test de la condition MOV selon la revendication 1 ; une étape de validation de ladite courbe elliptique si l'ensemble des tests est positif. 3. Procédé de personnalisation d'une carte à puce caractérisé en ce qu'il comprend un procédé de validation d'une courbe elliptique selon la revendication 2. 4. Procédé d'établissement d'un secret commun avec un second dispositif de traitement de données, caractérisé en ce qu'il comprend un procédé de validation d'une courbe elliptique reçue du second dispositif de traitement de données selon la revendication 2. 5. Dispositif de traitement de données comprenant des moyens cryptographiques qui comprennent pour tester la condition MOV d'une courbe elliptique : des moyens d'obtention d'un entier p spécifiant un corps fini IFpet d'un entier q spécifiant l'ordre d'un sous-groupe générateur d'une courbe elliptique sur le corps fini ; des moyens d'obtention d'un entier pair B définissant une borne ; et des moyens de vérification que l'ordre de q dans le corps fini IFp est au moins égal à la borne B ; caractérisé en ce que l'étape de vérification comprends : des moyens de détermination que l'ordre de q dans le corps fini IFp est au moins égal à la borne B uniquement sur la base de la vérification que l'ordre de q est différent de j pour tout j E r + 1, Bi. 6. Dispositif selon la revendication 5, caractérisé en ce qu'il comporte pour la validation d'une courbe elliptique : des moyens d'obtention d'un ensemble de paramètres définissant une courbe elliptique incluant les entiers p et q ; des moyens de test d'un ensemble de conditions sur les paramètres obtenus incluant un dispositif pour le test de la condition MOV selon la revendication 5 ; des moyens de validation de ladite courbe elliptique si l'ensemble des tests est positif. 7. Dispositif de traitement de données comportant des moyens d'établissement d'un secret commun avec un second dispositif de traitement de données, caractérisé en ce qu'il comprend un dispositif de validation d'une courbe elliptique reçue du second dispositif de traitement de données selon la revendication 6. 8. Programme d'ordinateur comprenant des instructions adaptées à la mise en oeuvre de chacune des étapes du procédé selon l'une quelconque des revendications 1 à 4 lorsque ledit programme est exécuté sur un ordinateur. 9. Moyen de stockage d'informations, amovible ou non, partiellement ou totalement lisible par un ordinateur ou un microprocesseur comportant des instructions de code d'un programme d'ordinateur pour l'exécution de chacune des étapes du procédé selon l'une quelconque des revendications 1 à 4.20