WO2006070092A1 - Procede de traitement de donnees et dispositif associe - Google Patents

Procede de traitement de donnees et dispositif associe Download PDF

Info

Publication number
WO2006070092A1
WO2006070092A1 PCT/FR2005/003170 FR2005003170W WO2006070092A1 WO 2006070092 A1 WO2006070092 A1 WO 2006070092A1 FR 2005003170 W FR2005003170 W FR 2005003170W WO 2006070092 A1 WO2006070092 A1 WO 2006070092A1
Authority
WO
WIPO (PCT)
Prior art keywords
type
key
montgomery
operand
data
Prior art date
Application number
PCT/FR2005/003170
Other languages
English (en)
Inventor
Arnaud Boscher
Robert Naciri
Original Assignee
Oberthur Card Systems Sa
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oberthur Card Systems Sa filed Critical Oberthur Card Systems Sa
Priority to US11/793,673 priority Critical patent/US9524144B2/en
Publication of WO2006070092A1 publication Critical patent/WO2006070092A1/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/728Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction

Definitions

  • the invention relates to data processing methods, for example for the implementation of cryptographic algorithms, as well as devices capable of performing such methods.
  • the invention proposes a storage method (in other words, storage) of key data.
  • cryptographic device in a non-volatile storage unit of an electronic entity, characterized in that it comprises the following steps:
  • the conversion step is performed by a device external to the electronic entity and the key data is transmitted from the external device to the electronic entity before the storage step.
  • the storage step is for example performed during a customization step of the electronic entity.
  • the conversion step comprises a multiplication at Montgomery's meaning of the data from the key portion by the square of the Montgomery radical.
  • the invention also proposes a method of data processing implemented in an electronic entity comprising a non-volatile storage unit and requiring the determination of the result of an operation of a first type involving a operand, characterized in that it comprises the steps of:
  • the operation of the second type can be performed in place of the operation of the first type, without requiring conversion of the data involved in these operations.
  • the invention proposes a system involving a data processing method for determining the result of an operation of a first type involving an operand in an electronic entity comprising a non-volatile storage unit, characterized in that it includes the steps of:
  • the result of said second type operation is equal to the result of the first type operation.
  • the operation of the second type is a multiplication in the Montgomery sense
  • the operation of the first type is a Euclidean multiplication involving the operand and a key, said datum key being equal to Montgomery's product of the key and square of the Montgomery Radical.
  • the method comprises a step of deconversion of the result of the operation of the second type in order to obtain the result of the operation of the first type.
  • the invention can thus be applied to a wider range of operations.
  • the method comprises the following steps:
  • the method comprises a step of Montgomery multiplication of pseudo-random number and operand, which allows a simple way to obtain the Euclidean square of a pseudo-random number.
  • At least one of the aforementioned deconversion steps can be carried out in practice by multiplication by the unit in the Montgomery sense. Such an operation does not require knowledge of Montgomery's radical or its square.
  • Such a method can be implemented within a signature generation method or a signature verification method.
  • the operation of the first type is a Euclidean multiplication and the operation of the second type is a Montgomery multiplication.
  • the operation of the first type is an Euclidean modular exponentiation and the operation of the second type is an exponentiation of Montgomery.
  • the key data may comprise the parameters of an elliptic curve and / or the coordinates of a base point of a elliptic curve.
  • these data do not have to be converted before their use within an operation of the second type, for example a Montgomery operation.
  • the invention is well suited to the case where the electronic entity is a microcircuit card, although other electronic entities can of course be considered.
  • the invention also proposes a device for storing cryptographic key data in a non-volatile storage unit of an electronic entity, characterized in that it comprises:
  • the conversion means are located in a device external to the electronic entity and the means for storing the key data comprise means for transmitting the key data of the external device to the electronic entity for storage.
  • Such a device is for example part of a card personalization device.
  • the invention further proposes a data processing device of an electronic entity comprising a non-volatile storage unit and requiring the determination of the result of an operation of a first type involving an operand characterized in that it comprises reading means in the nonvolatile storage unit of a key data and means performing an operation of a second type with the key data and said operand.
  • the invention proposes a data processing device (for example in the form of a system consisting of a personalization device and an electronic entity) for determining the result of a data processing operation.
  • a first type involving an operand in an electronic entity comprising a non-volatile storage unit, characterized in that it comprises means for converting data, derived from at least one key part and intended to be used with the operand within the operation of the first type, into a key data item that can be used with said operand within an operation of a second type, means for storing the key data in the unit non-volatile storage means, read means in the non-volatile storage unit of the key data and means for performing the second type operation with the key data read and said operand.
  • FIG. 1 shows schematically the main elements of a possible embodiment for a microcircuit card
  • FIG. 2 represents the general physical appearance of the microcircuit card of FIG. 1;
  • FIG. 3 represents a data storage method used in a first embodiment of the invention
  • FIG. 4 represents a processing method according to the first embodiment of the invention
  • FIG. 5 represents a data storage method used in a second embodiment of the invention
  • FIG. 6 represents a treatment method according to the second embodiment of the invention.
  • An example of an electronic entity is a microcircuit card 10, the main electronic elements of which are represented in FIG. 1 and which comprises a microprocessor 2 connected on the one hand to a Random Access Memory (RAM) 4 and on the other hand to a rewritable non-volatile semiconductor memory 6, for example an electrically erasable readable read-only memory (or EEPROM).
  • the non-volatile rewritable semiconductor memory 6 could be a flash memory.
  • the memories 4, 6 are connected to the microprocessor 2 by a bus each in Figure 1; alternatively, it could be a common bus.
  • the microcircuit card 10 also comprises an interface 8 for communication with a user terminal made here in the form of contacts, one of which, for example, provides a bidirectional link with the microprocessor 2.
  • the interface 8 thus enables the establishment of bidirectional communication between the microprocessor 2 and the user terminal in which the microcircuit card 10 will be inserted.
  • the microprocessor 2 will implement a method of operation of the microcircuit card 10, according to a set of instructions, stored for example in a read-only memory. (or ROM of English Read-
  • OnIy Memory - not shown - or in rewritable memory 6, which defines a computer program.
  • This method generally includes the exchange of data with the user terminal via the interface 8 and the data processing within the microcircuit card 10, and precisely within the microprocessor
  • FIG. 2 represents the general physical appearance of the microcircuit card 10 made with the general shape of a rectangular parallelepiped of very small thickness.
  • the communication interface 8 provided with the contacts already mentioned appears clearly on the face of the microcircuit card 10 visible in FIG. 2, in the form of a rectangle inscribed in the upper face of the microcircuit card 10.
  • FIG. 3 shows methods used in a first example of implementation of the invention.
  • the method represented in FIG. 3 is a method for storing a data item c in the non-volatile memory 6 which is for example implemented during the personalization step of the microcircuit card, that is to say say at the step at which the set of basic data that must contain the non-volatile memory 6 are stored in the microcircuit card.
  • This step is for example implemented by a personalization system of cards, operating according to the same principles as a microcomputer, and communicating to the microcircuit card 10, by means of a special procedure, data to be stored in the non-volatile memory 6, generally through the interface 8.
  • the personalization system receives a secret key a, for example from a secure hardware module (or SHM English "Secure Harware Module") such as an IBM4758 PCMCIA card.
  • a secret key ⁇ will be described as Euclidean because it is intended to be used in a cryptographic protocol defined by Euclidean operations.
  • Step E32 is for example performed by the card personalization system.
  • Such devices generally have important calculation and storage means in such a way that the preconversion of the Euclidean secret key a is feasible without difficulty.
  • the pre-converted key c can then be transmitted to the microcircuit card 10 for storage in the non-volatile memory 6 in a step E34.
  • the pre-conversion step E32 can be performed within the microcircuit card 10.
  • the personalization system transmits via the interface 8 the Euclidean secret key a and the Montgomery radical r to the microprocessor 2 which stores these values in the random access memory 4, then performs the pre-conversion in order to obtain the pre-converted key c (step E32) and store it in the non-volatile memory 6 (step E34).
  • the Montgomery radical r is stored in the non-volatile memory 6 during a personalization step of the card as described above; in a subsequent step at which it is desired to store a secret key in the card, the Euclidean secret key a is transmitted to the card via the interface 8 and stored in random access memory 4, the Montgomery radical r is read in non memory -volatile 6 and stored in the RAM 4, then the card calculates the pre-converted key c by means of Montgomery multiplication mentioned above (step E32) and stores the pre-converted key c in the non-converted memory volatile 6 in the zone that until then received the radical Montgomery r (that is to say with overwriting this value).
  • the latter solution is of course usable only when it is determined in advance (for example in view of the planned uses of the map) that future operations will no longer use the radical Montgomery r.
  • a third party seeks to verify that his interlocutor holds the secret key value Euclidean representation (that is to say in practice that he has the microcircuit card memorizing the Euclidean secret key a), without, however, communicating this secret key.
  • the third party transmits data b unknown to the card holder (for example generated pseudo-randomly) and waits in return for the modular product ( Euclidean) of the transmitted data and the secret key has produced that only a person holding the secret key is a priori able to determine.
  • the microcircuit card 10 therefore receives in a step E40 the data b emitted by the third party and stores it in the RAM 4.
  • the microprocessor 2 controls the reading of the pre-converted key c in non-volatile memory 6. (It is recalled that this key has been stored in the non-volatile memory 6 in step E34 described in FIG. reference to Figure 3.)
  • step E44 we then proceed to step E44 to the multiplication in the sense of
  • step E32 the Montgomery arithmetic used during the pre-conversion (step E32) and that used for the Montgomery multiplication in step E44 use the same radical r.
  • FIG. 5 describes the main steps of a method of storing data derived from a key with a view to its subsequent use.
  • an RSA type encryption algorithm for Rivest-Shamir-Adelman.
  • n pq
  • a pq thus comes from the part of the private key formed by the numbers / "and c.
  • step E50 This method starts at step E50 by calculating the parameter A pq which has just been defined. We then proceed to step E52 where we calculate the pre-converted modular inverse A * according to the formula:
  • the calculations carried out to E50 and E52 are stages for example carried out by the card personalization system which then transmits the result, namely the modular inverse pre-converted ⁇ 4 *, to the smart card via the interface 8.
  • the microcircuit card then proceeds to store the pre-converted modular inverse ⁇ * in its non-volatile memory 6.
  • a step E62 is also used to read in the non-volatile memory 6 the value of the parameter r 2 , where r is the Montgomery radical. This parameter is then stored in random access memory (or RAM) 4. It is then possible to proceed to step E63 to partial modular exponentiation using Montgomery's arithmetic according to the formulas:
  • the random access memory therefore has the values of p, q Si, S 2 and r
  • the proposed method no longer uses the value of the parameter r 2 once the results of step E63 are known.
  • step E64 it is thus possible to proceed to step E64 on reading the pre-converted modular inverse A * in the non-volatile memory 6 and store this value in place of the parameter? in the RAM, that is to say with overwriting the value of r 2 .
  • step E65 we then proceed to step E65 to the following calculation, which uses a Montgomery multiplication:
  • the microcircuit card stores a parameter used as one of the operands in a Montgomery multiplication (here the pre-converted modular inverse A * ), the message m, the intermediate results (especially Si and S 2 ), and the result m d are linked by the classical relations in the Euclidean representation and the process which has just been described can therefore very well be used in a system where the other users (for example those who wish to verify the signature made by applying the private key or encrypting the message to the holder of the private key) do not have access to Montgomery's arithmetic.
  • a parameter used as one of the operands in a Montgomery multiplication here the pre-converted modular inverse A *
  • the result m d are linked by the classical relations in the Euclidean representation and the process which has just been described can therefore very well be used in a system where the other users (for example those who wish to verify the signature made by applying the private key or encrypting the
  • the private key is composed of k elements Si, S 2 ,..., SR linked to k elements V 1 , v 2 ,..., Vk which form with the module n the public key by the relation: modn, for all j in 1 and k.
  • a method similar to that shown in FIGS. 3 and 5 can be used.
  • a number p u is chosen for example by drawing pseudorandom numbers (this number will be considered as Montgomery's representation of a pseudo-random number);
  • a fourth example of implementation of the invention falls within the framework of the Guillou-Quisquater (GQ) signature scheme.
  • the principles of such a signature scheme are for example given in the book "Handbook of Applied Cryptography" already mentioned in section 11.4.2.
  • the GQ scheme uses a private key ⁇ and a public key composed of the module n, an integer e and a identifier J A of the holder A of the private key ⁇ .
  • the holder A of the private key ⁇ stored in pre-converted form ⁇ m in the non-volatile memory of a microcircuit card implements the following process within the microcircuit card: choosing a number unknown from the public and preferably variable, for example by pseudo-random number drawing;
  • the signature verification algorithm may however also implement the invention, for example according to the following method which uses pre-converted keys within an electronic entity in which the square is stored.
  • the square r 2 of the Montgomery radical is stored in the non-volatile memory of the electronic entity.
  • the fact of storing the public key (identifier) J A in preconverted form allows the memory RAM squaring r 2 of the Montgomery radical and thus the limitation of the memory size required to perform the operation.
  • the signature generation can then be performed according to the following steps:
  • the signature of the message m according to the DSA protocol with the private keys a and public a is therefore the pair (p, s).
  • the electronic entity used by the prover for example a microcircuit card, stores in its non-volatile memory m secret numbers Q 1 , Q 2 .... Q m in their pre-converted form for operations in the Montgomery sense.
  • the electronic entity held by the prover then implements the following steps: selecting a number p h for example by drawing a pseudo-random number;
  • the storage of the pre-converted secret keys and the deconversion of the pseudo-random number p 1 made it possible to carry out Montgomery operations on data received from an external device and intended for this external device, without that does not necessarily have access to Montgomery's arithmetic, nor that the electronic entity using this arithmetic uses the knowledge of Montgomery's radical r (nor of its square r 2 ).
  • the invention is not limited to use in microcircuit cards, but is instead applicable to any type of electronic entity, for example and in a non-limiting manner to computers, PDAs (also known as acronym PDA), phones and e-passports.
  • PDAs also known as acronym PDA
  • phones and e-passports.

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

Un procédé de traitement de données, pour déterminer le résultat d'une opération d'un premier type impliquant un opérande dans une entité électronique comportant une unité de stockage non volatil, comprend les étapes de : conversion d'une donnée, issue d'au moins une partie de clé et destinée à être utilisée avec l'opérande au sein de l'opération du premier type, en une donnée de clé apte à être utilisée avec ledit opérande au sein d'une opération d'un second type ; stockage de la donnée de clé dans l'unité de stockage non volatil ; lecture dans l'unité de stockage non volatil de la donnée de clé ; réalisation de l'opération du second type avec la donnée de clé lue et ledit opérande. Des dispositifs associés sont également proposés.

Description

Procédé de traitement de données et dispositif associé
L'invention concerne des procédés de traitement de données, par exemple pour la mise en œuvre d'algorithmes cryptographiques, ainsi que des dispositifs aptes à réaliser de tels procédés.
Les procédés de traitement de données couramment mis en œuvre aiϋ sein d'entités électroniques, telles que les cartes à microcircuit et les micro- ordinateurs, ont recours à des opérations parfois complexes. Par exemple, dans le domaine de la cryptographie, de nombreux algorithmes utilisent l'arithmétique modulaire, notamment la multiplication modulaire (qui a deux nombres a et b associe le reste de leur produit modulo un nombre particulier appelé le module n) ou l'opération d'exponentiation modulaire (qui a deux nombres a et e associe le reste modulo n du nombre ae).
Le coût calculatoire de telles opérations peut s'avérer important si l'on effectue les calculs de manière conventionnelle, par exemple du fait de l'utilisation de grands nombres dans les algorithmes cryptographiques par souci d'obtenir un niveau de sécurité correct. II a de ce fait été proposé d'optimiser les calculs à effectuer par la définition de nouvelles opérations qui permettent un allégement des calculs réalisés au sein des algorithmes et qui sont en pratique effectués par des circuits électroniques dédiés.
Dans ce cadre, on a introduit l'arithmétique de Montgomery dont les opérations de base sont les suivantes :
- la multiplication au sens de Montgomery, représentée par le symbole "*", est définie comme suit : a*b mod n≈a.b.f1 mod n, où r est le radical de Montgomery (un entier premier avec n et supérieur à n) et où le symbole "." représente la multiplication classique (généralement dénommée dans ce cadre "multiplication euclidienne") ; - l'exponentiation au sens de Montgomery, représentée en faisant précéder l'exposant du symbole "*" et définie comme suit : a*e mod n=ae.rι'e mod n.
L'avantage procuré par l'utilisation de l'arithmétique de Montgomery est principalement que les algorithmes n'ont alors pas besoin d'effectuer de manière traditionnelle la réduction modulo n, qui implique une opération de division par un grand nombre, particulièrement complexe à réaliser.
L'utilisation de cette arithmétique nécessite toutefois certains calculs complémentaires, qui peuvent dans certains cas diminuer son intérêt, parfois à tel point que la réalisation d'une opération de manière classique est préférable. Par exemple, en remarquant que : a.h tnod n=(a*r2)*b mod n, l'utilisation de la multiplication de Montgomery pour effectuer la multiplication modulaire implique le pré-calcul de la constante {r2 modή) comme cela est par exemple décrit dans la demande de brevet EP 0 704 794.
Dans d'autres cas au contraire, ces calculs complémentaires sont largement compensés par les bénéfices liés à l'utilisation de l'arithmétique de Montgomery. Ainsi par exemple, puisque : ae mod n—(a*r2 mod n)*e * 1 mod n, on ramène le résultat de l'exponentiation de Montgomery au résultat de l'exponentiation modulaire en multipliant, au sens de Montgomery, par 1 le résultat de l'exponentiation au sens de Montgomery.
On comprend que de telles opérations complémentaires sont de manière générale pénalisantes, que ce soit en terme de temps de calcul ou d'espace mémoire nécessaire par exemple pour le stockage de la constante (r2 mod n) nécessaire.
De ce fait, il a récemment été proposé d'utiliser des protocoles cryptographiques modifiés qui ne puissent utiliser que des opérations de
Montgomery, comme par exemple dans la demande de brevet WO 2004/054168. Ainsi, toutes les données utilisent la représentation de
Montgomery et aucune conversion n'est nécessaire. La demande de brevet EP 0 578 059 utilise également une solution de ce type, dans laquelle la modification de la relation entre clés publique et privée (c'est-à-dire par là même du protocole) vise à s'affranchir des constantes qui apparaissent dans les opérations de Montgomery et nécessitent la conversion des données traitées.
Ces solutions ne sont toutefois pas utilisables de manière généralisée puisqu'elles impliquent que l'ensemble des acteurs du système utilisent l'arithmétique de Montgomery et ne sont donc pas compatibles avec les systèmes utilisés antérieurement et travaillant en arithmétique euclidienne. Dans ce contexte, et afin notamment de réduire les besoins en temps de calcul et en espace de mémorisation, sans toutefois compromettre la compatibilité avec les systèmes existants, l'invention propose un procédé de stockage (autrement dit, de mémorisation) de donnée de clé cryptographique dans une unité de stockage non volatil d'une entité électronique, caractérisé en ce qu'il comprend les étapes suivantes :
- conversion d'une donnée, issue d'au moins une partie de clé et destinée à être utilisée avec un opérande au sein d'une opération d'un premier type, en une donnée de clé apte à être utilisée avec ledit opérande au sein d'une opération d'un second type ; - stockage de la donnée de clé dans l'unité de stockage non volatil.
Lors du fonctionnement ultérieur, on peut ainsi directement lire la donnée de clé dans l'unité de stockage non volatil afin de l'utiliser dans l'opération du second type concernée, sans nécessiter l'opération de conversion déjà effectuée. Selon une possibilité de mise en œuvre, l'étape de conversion est réalisée par un dispositif extérieur à l'entité électronique et la donnée de clé est transmise du dispositif extérieur à l'entité électronique avant l'étape de stockage.
L'étape de stockage est par exemple réalisée durant une étape de personnalisation de l'entité électronique.
Dans un mode de réalisation particulièrement pratique lors du fonctionnement ultérieur, l'étape de conversion comprend une multiplication au sens de Montgomery de la donnée issue de la partie de clé par le carré du radical de Montgomery.
Dans le même ordre d'idée, l'invention propose également un procédé de traitement de données mis en œuvre dans une entité électronique comportant une unité de stockage non volatil et nécessitant la détermination du résultat d'une opération d'un premier type impliquant un opérande, caractérisé en ce qu'il comprend les étapes de :
- lecture dans l'unité de stockage non volatil d'une donnée de clé ;
- réalisation d'une opération d'un second type avec la donnée de clé et ledit opérande.
Ainsi, l'opération du second type peut être réalisée en lieu et place de l'opération du premier type, sans nécessiter de conversion des données mises en jeu dans ces opérations.
Autrement dit, l'invention propose un système impliquant un procédé de traitement de données pour déterminer le résultat d'une opération d'un premier type impliquant un opérande dans une entité électronique comportant une unité de stockage non volatil, caractérisé en ce qu'il comprend les étapes de :
- conversion d'une donnée, issue d'au moins une partie de clé et destinée à être utilisée avec l'opérande au sein de l'opération du premier type, en une donnée de clé apte à être utilisée avec ledit opérande au sein d'une opération d'un second type ;
- stockage de la donnée de clé dans l'unité de stockage non volatil ;
- lecture dans l'unité de stockage non volatil de la donnée de clé ; - réalisation de l'opération du second type avec la donnée de clé lue et ledit opérande.
Dans certains modes de réalisation, le résultat de ladite opération du second type est égal au résultat de l'opération du premier type. On obtient ainsi directement le résultat recherché. Dans un mode de réalisation particulier, l'opération du second type est une multiplication au sens de Montgomery et l'opération du premier type est une multiplication euclidienne impliquant l'opérande et une clé, ladite donnée de clé étant égale au produit au sens de Montgomery de la clé et du carré du radical de Montgomery.
On obtient ainsi une solution particulièrement facile à mettre en œuvre pour connaître le résultat d'une multiplication euclidienne au moyen d'une multiplication de Montgomery, sans nécessiter une opération complémentaire de conversion des opérandes de la multiplication.
Selon d'autres modes de réalisations, le procédé comprend une étape de déconversion du résultat de l'opération du second type afin d'obtenir le résultat de l'opération du premier type. On peut ainsi appliquer l'invention à une gamme plus large d'opérations.
Pour certaines applications, le procédé comprend les étapes suivantes :
- tirage d'un nombre pseudo-aléatoire ;
- déconversion du nombre pseudo-aléatoire pour obtenir ledit opérande.
On obtient ainsi de manière simple un nombre pseudo-aléatoire sous forme convertie et non-convertie utilisables pour des calculs ultérieurs.
Par exemple, le procédé comporte une étape de multiplication au sens de Montgomery du nombre pseudo-aléatoire et de l'opérande, ce qui permet de manière simple d'obtenir le carré euclidien d'un nombre pseudoaléatoire.
Une au moins des étapes de déconversion précitées peut être réalisée en pratique par une multiplication par l'unité au sens de Montgomery. Une telle opération ne nécessite pas la connaissance du radical de Montgomery ni de son carré.
Un tel procédé peut être mis en œuvre au sein d'un procédé de génération de signature ou d'un procédé de vérification de signature.
Dans un premier cas envisageable, l'opération du premier type est une multiplication euclidienne et l'opération du second type est une multiplication de Montgomery. Dans un second cas envisageable, l'opération du premier type est une exponentiation modulaire euclidienne et l'opération du second type est une exponentiation de Montgomery.
Dans le cas d'une utilisation de l'invention dans le cadre d'un algorithme utilisant des courbes elliptiques, la donnée de clé peut comprendre les paramètres d'une courbe elliptique et/ou les coordonnées d'un point de base d'une courbe elliptique. Ainsi, ces données n'ont pas à être converties avant leur utilisation au sein d'une opération du second type, par exemple une opération Montgomery. Comme cela ressortira dans la suite, l'invention est bien adaptée au cas où l'entité électronique est une carte à microcircuit, bien que d'autres entités électroniques puissent bien sûr être envisagées.
L'invention propose également un dispositif de stockage de donnée de clé cryptographique dans une unité de stockage non volatil d'une entité électronique, caractérisé en ce qu'il comprend :
- des moyens de conversion d'une donnée, issue d'au moins une partie de clé et destinée à être utilisée avec un opérande au sein d'une opération d'un premier type, en une donnée de clé apte à être utilisée avec ledit opérande au sein d'une opération d'un second type ; - des moyens pour stocker la donnée de clé dans l'unité de stockage non volatil.
Selon un mode de réalisation possible, les moyens de conversion sont situés dans un dispositif extérieur à l'entité électronique et les moyens pour stocker la donnée de clé comprennent des moyens de transmission de la donnée de clé du dispositif extérieur à l'entité électronique pour stockage.
Un tel dispositif fait par exemple partie d'un dispositif de personnalisation de cartes.
L'invention propose en outre un dispositif de traitement de données d'une entité électronique comportant une unité de stockage non volatil et nécessitant la détermination du résultat d'une opération d'un premier type impliquant un opérande caractérisé en ce qu'il comprend des moyens de lecture dans l'unité de stockage non volatil d'une donnée de clé et des moyens de réalisation d'une opération d'un second type avec la donnée de clé et ledit opérande.
Vue sous forme d'un système, l'invention propose un dispositif de traitement de données (par exemple sous forme d'un système composé d'un dispositif de personnalisation et d'une entité électronique) pour déterminer le résultat d'une opération d'un premier type impliquant un opérande dans une entité électronique comportant une unité de stockage non volatil, caractérisé en ce qu'il comprend des moyens de conversion d'une donnée, issue d'au moins une partie de clé et destinée à être utilisée avec l'opérande au sein de l'opération du premier type, en une donnée de clé apte à être utilisée avec ledit opérande au sein d'une opération d'un second type, des moyens de stockage de la donnée de clé dans l'unité de stockage non volatil, des moyens de lecture dans l'unité de stockage non volatil de la donnée de clé et des moyens de réalisation de l'opération du second type avec la donnée de clé lue et ledit opérande.
Les dispositifs proposés par l'invention peuvent éventuellement présenter des caractéristiques correspondant aux caractéristiques optionnelles de procédé précédemment évoquées et bénéficier ainsi des avantages qui en découlent. D'autres caractéristiques et avantages de la présente invention apparaîtront en outre à la lecture de la description qui suit, faite en référence aux dessins annexés, dans lesquels :
- la figure 1 représente schématiquement les éléments principaux d'une forme de réalisation possible pour une carte à microcircuit ; - la figure 2 représente l'allure physique générale de la carte à microcircuit de la figure 1 ;
- la figure 3 représente un procédé de stockage de données utilisé dans un premier mode de réalisation de l'invention ;
- la figure 4 représente un procédé de traitement selon le premier mode de réalisation de l'invention ;
- la figure 5 représente un procédé de stockage de données utilisé dans un second mode de réalisation de l'invention ; - Ia figure 6 représente un procédé de traitement selon le second mode de réalisation de l'invention.
Un exemple d'entité électronique est une carte à microcircuit 10 dont les principaux éléments électroniques sont représentés à la figure 1 et qui comporte un microprocesseur 2 relié d'une part à une mémoire vive (ou RAM de l'anglais Random Access Memory) 4 et d'autre part à une mémoire à semiconducteur non-volatile réinscriptible 6, par exemple une mémoire morte effaçable et programmable électriquement (ou EEPROM de l'anglais Electrically Erasable Programable Read OnIy Memory). En variante, la mémoire non- volatile réinscriptible à semi-conducteur 6 pourrait être une mémoire flash.
Les mémoires 4, 6 sont reliées au microprocesseur 2 par un bus chacune sur la figure 1 ; en variante, il pourrait s'agir d'un bus commun.
La carte à microcircuit 10 comporte également une interface 8 de communication avec un terminal utilisateur réalisée ici sous forme de contacts dont un assure par exemple une liaison bidirectionnelle avec le microprocesseur 2. L'interface 8 permet ainsi l'établissement d'une communication bidirectionnelle entre le microprocesseur 2 et le terminal utilisateur dans lequel la carte à microcircuit 10 sera insérée.
Ainsi, lors de l'insertion de la carte à microcircuit 10 dans un terminal utilisateur, le microprocesseur 2 va mettre en œuvre un procédé de fonctionnement de la carte à microcircuit 10, selon un jeu d'instructions, stockées par exemple dans une mémoire morte (ou ROM de l'anglais Read-
OnIy Memory) - non représentée - ou dans la mémoire réinscriptible 6, qui définit un programme d'ordinateur. Ce procédé inclut en général l'échange de données avec le terminal utilisateur via l'interface 8 et le traitement de données au sein de la carte à microcircuit 10, et précisément au sein du microprocesseur
2 avec utilisation éventuelle de données stockées dans la mémoire réinscriptible 6 et de données stockées temporairement dans la mémoire vive 4.
Des exemples de procédés qui mettent en œuvre l'invention sont donnés dans la suite. La figure 2 représente l'allure physique générale de la carte à microcircuit 10 réalisée avec la forme générale d'un parallélépipède rectangle de très faible épaisseur.
L'interface de communication 8 pourvue des contacts déjà mentionnés apparaît clairement sur la face de la carte à microcircuit 10 visible sur la figure 2, sous forme d'un rectangle inscrit dans la face supérieure de la carte à microcircuit 10.
Sur les figures 3 et 4, on a représenté des procédés utilisés dans un premier exemple de mise en œuvre de l'invention. Le procédé représenté à la figure 3 est un procédé de stockage d'une donnée c dans la mémoire non-volatile 6 qui est par exemple mise en œuvre lors de l'étape de personnalisation de la carte à microcircuit, c'est-à-dire à l'étape à laquelle l'ensemble des données de base que doit contenir la mémoire non-volatile 6 sont stockées dans la carte à microcircuit. Cette étape est par exemple mise en œuvre par un système de personnalisation de cartes, fonctionnant selon les mêmes principes qu'un micro-ordinateur, et communiquant à la carte à microcircuit 10, au moyen d'une procédure spéciale, des données à stocker dans la mémoire non-volatile 6, en général à travers l'interface 8. Lors d'une étape E30, le système de personnalisation reçoit une clé secrète a, par exemple en provenance d'un module matériel sécurisé (ou SHM de l'anglais "Secure Harware Module") tel qu'une carte PCMCIA IBM4758. Dans l'exemple décrit ici, la clé secrète α sera qualifiée d'euclidienne du fait qu'elle est destinée à être utilisée dans un protocole cryptographique défini par des opérations euclidiennes.
On réalise alors à l'étape E32 une opération de pré-conversion de la clé secrète euclidienne α en une clé c utilisable directement dans la représentation de Montgomery et obtenue au moyen de l'opération : c=α*r2 mod n, où r est le radical de Montgomery pour la représentation de
Montgomery choisie. Comme décrit en détail dans la suite, quand la clé c ainsi déterminée est multipliée au sens de Montgomery par un opérande quelconque, le résultat de la multiplication de Montgomery est égal au produit euclidien de la clé secrète euclidienne a et de l'opérande quelconque lui-même. L'étape E32 est par exemple réalisée par le système de personnalisation de cartes. De tels dispositifs possèdent en général des moyens de calcul et de mémorisation importants de telle manière que la préconversion de la clé secrète euclidienne a est réalisable sans difficulté.
La clé pré-convertie c peut alors être transmise à la carte à microcircuit 10 pour stockage dans la mémoire non-volatile 6 dans une étape E34.
En variante, et notamment lorsque la carte à microcircuit 10 comprend des circuits électroniques de calcul en arithmétique de Montgomery, l'étape de pré-conversion E32 peut être réalisée au sein de la carte à microcircuit 10.
Selon une première forme de cette variante, le système de personnalisation transmet via l'interface 8 la clé secrète euclidienne a et le radical de Montgomery r au microprocesseur 2 qui stocke ces valeurs dans la mémoire vive 4, puis effectue la pré-conversion afin d'obtenir la clé pré- convertie c (étape E32) et de la stocker dans la mémoire non-volatile 6 (étape E34).
Selon une seconde forme de la variante, le radical de Montgomery r est stocké dans la mémoire non-volatile 6 lors d'une étape de personnalisation de la carte comme décrit ci-dessus ; lors d'une étape ultérieure à laquelle on souhaite mémoriser une clé secrète dans la carte, la clé secrète euclidienne a est transmise à la carte via l'interface 8 et stockée en mémoire vive 4, le radical de Montgomery r est lu en mémoire non-volatile 6 et stocké dans la mémoire vive 4, puis la carte procède au calcul de la clé pré-convertie c au moyen de la multiplication de Montgomery mentionnée précédemment (étape E32) et stocke la clé pré-convertie c dans la mémoire non-volatile 6 dans la zone qui recevait jusqu'alors le radical de Montgomery r (c'est-à-dire avec écrasement de cette valeur). Cette dernière solution n'est bien sûr utilisable que lorsqu'il est déterminé par avance (par exemple au vu des utilisations prévues de la carte) que les opérations futures n'auront plus recours au radical de Montgomery r.
On va à présent décrire en référence à la figure 4 un exemple » d'utilisation d'une carte à microcircuit préparé conformément au procédé de stockage qui vient d'être décrit.
Selon cet exemple, un tiers cherche à vérifier que son interlocuteur détient bien la clé secrète de valeur a en représentation euclidienne (c'est-à- dire en pratique qu'il possède bien la carte à microcircuit mémorisant la clé secrète euclidienne a), sans toutefois communiquer cette clé secrète.
Selon une procédure relativement simple et présentée ici à titre d'exemple de mise en œuvre de l'invention, le tiers émet une donnée b inconnue du détenteur de la carte (par exemple générée de manière pseudoaléatoire) et attend en retour le produit modulaire (euclidien) de la donnée b émise et de la clé secrète a, produit que seule une personne détentrice de la clé secrète est a priori apte à déterminer.
La carte à microcircuit 10 reçoit donc dans une étape E40 la donnée b émise par le tiers et la stocke en mémoire vive 4.
A l'étape E42 qui suit, le microprocesseur 2 commande la lecture de la clé pré-convertie c en mémoire non-volatile 6. (On rappelle que cette clé c a été stockée dans la mémoire non volatile 6 à l'étape E34 décrite en référence à la figure 3.)
On procède alors à l'étape E44 à la multiplication au sens de
Montgomery de la clé pré-convertie c lue en mémoire non-volatile 6 et de la donnée b reçue du tiers, afin d'obtenir un résultat d. Ce calcul est par exemple réalisé par un circuit électronique de calcul en arithmétique de Montgomery
(non représenté).
Du fait que c=α V modn (par définition : voir l'étape E32 en référence à la figure 3), le résultat de la multiplication au sens de Montgomery de la clé pré-convertie c et de la donnée reçue b est égal au résultat du produit modulaire euclidien de la clé secrète euclidienne a et de la donnée reçue b, selon les formules : c*b mod n=(a*r2 mod n) *b mod n=a.b mod n.
On obtient ainsi, en utilisant l'arithmétique de Montgomery mais sans nécessiter le stockage de son radical r, le résultat de la multiplication modulaire par la clé secrète euclidienne a, ce qui permet d'éviter tout changement de protocole avec le tiers.
On peut ainsi émettre directement la donnée d à destination du tiers dans une étape E46.
On remarque d'ailleurs en ce sens que la représentation euclidienne a et la représentation pré-convertie c (ou représentation de Montgomery) sont bien deux formes de représentation pour une même clé secrète, puisque le détenteur de la carte à microcircuit peut prouver sa connaissance de la clé secrète connue sous sa forme euclidienne par le tiers a alors que seule la clé sous sa forme pré-convertie c est stockée dans la mémoire non volatile 6.
On remarque toutefois que la solution proposée implique que l'arithmétique de Montgomery utilisée lors de la pré-conversion (étape E32) et celle utilisée pour la multiplication de Montgomery à l'étape E44 utilisent le même radical r.
Un second exemple de réalisation de l'invention va à présent être présenté en référence aux figures 5 et 6. La figure 5 décrit les principales étapes d'un procédé de stockage d'une donnée issue d'une clé en vue de son utilisation ultérieure dans un algorithme de chiffrement de type RSA (pour Rivest-Shamir-Adelman).
On rappelle que le système de chiffrement RSA est basé sur l'utilisation d'une clé publique formée de deux entiers (n, e) et d'une clé privée composée de trois entiers (d, p, q), tels que : n = p.q et d.e = 1 mod [(p-1) (q-1)], où p et q sont des nombres premiers.
Dans ce système de chiffrement, l'application de la clé privée à un message m consiste à calculer le produit de l'exponentiation modulaire md modn (avec n=p.q), que ce soit pour signer le message m ou le déchiffrer.
Pour simplifier le calcul de cette exponentiation modulaire et lorsque le détenteur de la clé privée connaît la décomposition n=p.q, on utilise fréquemment le théorème dit des restes chinois (ou CRT de l'anglais "Chinese Reminder Theorem") selon la formule : md= [(S2S i).Apq mod qJ.p+Sj, où Si et S2 sont les résultats des exponentiations modulaires partielles détaillées plus bas et où Apq est l'inverse modulaire de p modulo q (c'est-à-dire ApQ=P'1 mod q). Apq est donc issu de la partie de la clé privée formée par les nombres/» et c.
Lors d'une étape préalable à la réalisation du calcul de l'exponentiation modulaire, par exemple lors de la personnalisation de la carte à microcircuit utilisée (c'est-à-dire lors du stockage des informations nécessaires au fonctionnement de base de cette carte), on met en œuvre le procédé décrit à la figure 5.
Ce procédé commence à l'étape E50 par le calcul du paramètre Apq qui vient d'être défini. On procède ensuite à l'étape E52 où l'on calcule l'inverse modulaire pré-converti A* selon la formule :
A*=Apq*r2 mod q.
Les calculs réalisés aux étapes E50 et E52 sont par exemple effectués par le système de personnalisation de la carte qui transmet alors le résultat, à savoir l'inverse modulaire pré-converti ^4*, à la carte à microcircuit au moyen de l'interface 8.
La carte à microcircuit procède alors au stockage de l'inverse modulaire pré-converti ^* dans sa mémoire non-volatile 6.
On va à présent décrire une solution possible pour l'application de la clé privée selon l'algorithme RSA au sein de la carte à microcircuit préparée selon le procédé qui vient d'être décrit en référence à la figure 5.
Le procédé proposé utilise le théorème des restes chinois et nécessite donc dans une étape E60 le calcul des résidus modulaires du message m auquel on applique la clé privée, selon les formules : mi=m modp et me=m mod q.
De même, on doit déterminer à une étape E61 les exposants utilisés dans le théorème des restes chinois : dp=d mod (p-1) et dq=d mod (q-1).
On procède également à une étape E62 à la lecture dans la mémoire non-volatile 6 de la valeur du paramètre r2, où r est le radical de Montgomery. Ce paramètre est alors stocké en mémoire vive (ou RAM) 4. On peut alors procéder à l'étape E63 aux exponentiations modulaires partielles en utilisant l'arithmétique de Montgomery selon les formules :
S1=(Hi1*/2 mod p)*dp*1 mod p
S2=(Hi2*!2 mod q)*dq*1 mod q
Les valeurs obtenues sont naturellement stockées en mémoire vive 4. Après l'étape E63, la mémoire vive comporte donc les valeurs de p, q Si, S2 et r\
Comme on le verra dans la suite, le procédé proposé n'utilise plus la valeur du paramètre r2 une fois que les résultats de l'étape E63 sont connus.
On peut de ce fait procéder à l'étape E64 à la lecture de l'inverse modulaire pré-converti A* dans la mémoire non-volatile 6 et stocker cette valeur en lieu et place du paramètre ? dans la mémoire vive, c'est-à-dire avec écrasement de la valeur de r2.
On peut ainsi limiter la taille mémoire nécessaire à l'exécution du procédé (ce qui est particulièrement avantageux dans une carte à microcircuit qui dispose typiquement d'une mémoire RAM de 4 Ko ou 8 Ko alors que la mémorisation du paramètre r2 nécessite à elle seule 1024 bits, Le. 1/8 Ko). Sur ce point, on peut remarquer de manière générale que la taille en mémoire vive nécessaire à l'exécution d'un calcul est critique du fait qu'il est nécessaire de limiter au maximum les accès relativement lourds aux mémoires non-volatiles, comme les mémoires EEPROM.
On procède alors à l'étape E65 au calcul suivant, qui utilise une multiplication de Montgomery :
[(S2Sj) * A* mod q].p+Si, qui du fait de la définition de l'inverse modulaire pré-convertie donnée à l'étape E52 vaut précisément : md ^(S2-S1)Ap9 mod qJp+Sj. On obtient ainsi le résultat de l'exponentiation modulaire en utilisant l'arithmétique de Montgomery, mais sans avoir à stocker en permanence le paramètre r2 en mémoire vive, ni à lire ce paramètre en mémoire non-volatile à chaque réalisation d'une opération au sens de Montgomery. En outre, bien que la carte à microcircuit stocke un paramètre employé comme l'un des opérandes dans une multiplication de Montgomery (ici l'inverse modulaire pré-converti A*), le message m, les résultats intermédiaires (notamment Si et S2), et le résultat md sont liés par les relations classiques dans la représentation euclidienne et le procédé qui vient d'être décrit pourra donc très bien être utilisé dans un système où les autres utilisateurs (par exemple ceux qui souhaitent vérifier la signature réalisée par l'application de la clé privée ou chiffrer le message à destination du détenteur de la clé privée) n'ont pas accès à l'arithmétique de Montgomery.
On décrit à présent un troisième exemple de mise en œuvre de l'invention dans le cadre du schéma de signature Feige-Fiat-Shamir (FFS). Les principes généraux de ce schéma de signature sont par exemple expliqués dans l'ouvrage "Handbook of applied cryptography" , de A. Menezes, P. Van
Oorschot et S. Vanstone, CRC Press, 1996, paragraphe 11.4.1.
Selon ce schéma, la clé privée est composée de k éléments Si, S2, ..., SR liés aux k éléments V1, v2, ,.., Vk qui forment avec le module n la clé publique par la relation :
Figure imgf000017_0001
modn, pour tout j en 1 et k.
Pour signer un message m dans le cadre de ce schéma de signature, on utilise une carte à microcircuit du type de celle décrite en référence à la figure 1 , dans laquelle on a stocké les clés pré-converties S*,- définies sur la base des clés sj du schéma de signature choisi selon la relation : S*j=$j*r^ mod n.
Pour le stockage des clés pré-converties S*j, par exemple lors de la personnalisation de la carte à microcircuit, on peut utiliser un procédé similaire à celui présenté aux figures 3 et 5. Pour signer un message m selon l'algorithme FFS avec la clé privée composée des éléments sj au moyen d'une telle carte à microcircuit, on procède aux étapes qui suivent : - on choisit un nombre pu par exemple par tirage de nombres pseudo-aléatoires (ce nombre sera considéré comme la représentation de Montgomery d'un nombre pseudo-aléatoire) ;
- calcul de po≈pi*! mod n (ce qui revient comme expliqué dans la suite à déconvertir le nombre pi de telle sorte que le nombre po est considéré comme la représentation euclidienne du nombre représenté par p} dans la représentation de Montgomery) ;
- calcul de u=pi*p0 mod n (ce qui implique que u=p0 2 mod n conformément au schéma classique FFS) ; - calcul du k-uplet
Figure imgf000018_0001
où h est une fonction de hachage et où les composantes e{ de e valent 0 ou 1 ; k k
- calcul de s=p0* (Y[* S *V) , où le symbole J"J* représente le
7=1 7=1 produit des k éléments par des multiplications au sens de Montgomery.
De par la définition de S1 *,-, le nombre s n'est autre que la signature du k message m dans le schéma FFS : _?= po. γ[ s J .
7=1
On peut remarquer qu'on a ainsi utilisé l'arithmétique de Montgomery pour effectuer les multiplications modulaires requises par le schéma FFS sans toutefois avoir à stocker dans la carte à microcircuit le paramètre de Montgomery r (ni son carré r2). Un quatrième exemple de mise en œuvre de l'invention, qui va être décrit à présent, se place dans le cadre du schéma de signature Guillou- Quisquater (GQ). Les principes d'un tel schéma de signature sont par exemple donnés dans l'ouvrage "Handbook of applied cryptography" déjà mentionné, au paragraphe 11.4.2. Le schéma GQ utilise une clé privée α et une clé publique composée du module n, d'un entier e et d'un identifiant JA du détenteur A de la clé privée α.
Pour obtenir la signature d'un message m, le détenteur A de la clé privée α stockée sous forme pré-convertie αm dans la mémoire non-volatile d'une carte à microcircuit (où αm=α*r2 mod ri) met en œuvre le procédé suivant au sein de la carte à microcircuit : - choix d'un nombre k inconnu du public et de préférence variable, par exemple par tirage de nombre pseudo-aléatoire ;
- calcul au moyen d'une exponentiation de Montgomery puis d'une déconversion, du nombre p : p=k*e*l modn ; - calcul de l=h(m\\p), où h est une fonction de hachage ;
- calcul au moyen d'une multiplication au sens de Montgomery utilisant la clé pré-convertie am de la signature s selon la formule : s=k*(am )*l mod n.
Les calculs sont donc effectués en utilisant l'arithmétique de Montgomery, mais sans nécessiter la mémorisation du radical de Montgomery r (ou de son carré), grâce à l'utilisation de la clé pré-convertie am et à l'organisation des calculs de manière à n'utiliser que des dé-conversions (c'est- à-dire ici des multiplications par l'unité au sens de Montgomery) qui n'ont pas besoin de la connaissance du radical de Montgomery. La signature obtenue (s, I) est ainsi identique à celle qui aurait été obtenue par des calculs euclidiens à partir de la clé privé a et pourra donc être vérifiée au moyen de la clé publique (n, e, JA) précédemment évoquée est liée à la clé privée a selon les relations classiques d'arithmétique euclidienne rappelées par exemple dans l'ouvrage susmentionné à l'algorithme 11.47. L'algorithme de vérification de la signature (s, I) pourra toutefois lui aussi mettre en œuvre l'invention, par exemple selon le procédé suivant qui utilise des clés pré-converties au sein d'une entité électronique dans laquelle sont mémorisés le carré du radical de Montgomery r2 et l'identifiant pré-converti JAm, qui vaut JAm=JA* r2 mod n : - lecture en mémoire non-volatile 6 du carré du radical de
Montgomery r2 et stockage en mémoire vive 4 ;
- conversion de la signature s dans la représentation de Montgomery par le calcul de la signature convertie sm=s * r2 mod n ;
- lecture de la clé pré-convertie JAm en mémoire non-volatile et stockage de cette clé publique pré-convertie en mémoire vive avec écrasement de la valeur du carré du radical de Montgomery r2qui y avait été précédemment stockée ; - calcul de u=sm e * J Am * 1 mod n ;
- calcul de l'=h(m\\u) où h est la fonction de hachage déjà mentionnée ;
- vérification de la validité de la signature par la vérification de l'équation /=/'.
Selon ce dernier mode de réalisation, le carré r2 du radical de Montgomery est stocké dans la mémoire non-volatile de l'entité électronique. Toutefois, le fait de stocker la clé publique (identifiant) JA sous forme préconvertie autorise l'écrasement en mémoire vive du carré r2 du radical de Montgomery et ainsi la limitation de la taille mémoire requise pour effectuer l'opération.
Un cinquième mode de réalisation de l'invention va à présent être décrit dans le cadre du schéma de signature DSA tel qu'il est décrit dans l'ouvrage "Handbook ofapplied crytography" déjà mentionné. L'élément de clé publique α et la clé privée a sont stockés sous leur forme pré-convertie respectivement αm et αm dans la mémoire non-volatile de l'entité électronique qui doit générer la signature, par exemple une carte à microcircuit. On a donc αm=α * r 2 modp où α est la clé publique utilisée dans le protocole considéré et αm=α * r/ mod q où α est la clé privée correspondante. (On utilise un radical de Montgomery ri pour les opérations modulo p et un radical de Montgomery r2 pour les opérations modulo g.)
La génération de signature peut alors être effectuée selon les étapes suivantes :
- sélection d'un nombre ki par exemple par tirage d'un nombre pseudo-aléatoire ;
- calcul de k0 = h * 1 mod q : k0 sera considéré comme un nombre pseudo-aléatoire dont la représentation convertie dans la représentation de Montgomery vaut ki ;
- calcul de p = {α,,*k0 * 1 modp ) mod q - calcul de l'inverse de k} modulo q au sens de Montgomery, ki*("}) mod q, en calculant (par analogie au cas euclidien) : ki*(q'2) mod q ; - calcul de s = (kι ('])) * (h(m) + am *p) mod q, avec h une fonction de hachage.
On remarque kj*('1} mod q = ko1 .r2 mod q, c'est-à-dire que k]*('1} est aussi le résultat de la conversion dans la représentation de Montgomery de l'inverse de k0.
La signature du message m selon le protocole DSA avec les clés privé a et publique a est donc bien la paire (p , s).
Un sixième exemple de réalisation de l'invention va maintenant être décrit dans le cadre du protocole de signature GQ2, décrit par exemple dans l'article "GQ2 une preuve zero-knowledge de connaissance de la factorisation complément essentiel à RSA", de S. Boutiton, F. Daudé et L. Guillou in Actes du Symposium SSTIC04.
L'entité électronique utilisée par le prouveur, par exemple une carte à microcircuit, stocke dans sa mémoire non-volatile m nombres secrets Q1, Q2 .... Qm sous leur forme pré-convertie pour les opérations au sens de Montgomery
(que l'on pourra ainsi dénommer forme de Montgomery) Q1 * , Q2 *, ... Qn *, où
Figure imgf000021_0001
n.
L'entité électronique détenue par le prouveur met alors en œuvre les étapes suivantes : - sélection d'un nombre ph par exemple par tirage d'un nombre pseudo-aléatoire ;
- déconversion du nombre pi considéré sous forme de Montgomery afin d'obtenir un nombre p0, que l'on peut lui aussi considérer comme obtenu par tirage d'un nombre pseudo-aléatoire, selon la formule po=pi*l modn ; - calcul du témoin W=(p1 *v mod n) * 1 mod n, où l'exposant de vérification v est une donnée du protocole, W valant ainsi po v mod n ;
- en réponse à chaque défi du vérifieur consistant en une série de m nombres aléatoire dh d2, .... dm, calcul de la réponse
Figure imgf000021_0002
* (Q2yd2 * ... * (Qmyd m. Grâce à la définition des nombres secrets pré-convertis Q{*, le nombre D vaut p0. Qf1. Q2 2 Qm d m : il s'agit de la réponse à renvoyer au vérifieur sans nécessiter d'autres calculs complémentaires. Comme précédemment, le stockage des clés secrètes pré-converties et la déconversion du nombre pseudo-aléatoire pi ont permis d'effectuer des opérations au sens de Montgomery sur des données reçues d'un dispositif extérieur et destinées à ce dispositif extérieur, sans que celui n'ait nécessairement accès à l'arithmétique de Montgomery, ni que l'entité électronique qui utilise cette arithmétique n'ait recours à la connaissance du radical de Montgomery r (ni de son carré r2).
Les modes de réalisation qui viennent d'être présentés ne sont que des exemples possibles de mise en œuvre de l'invention. Celle-ci pourra s'appliquer à d'autres protocoles que ceux indiqués.
Par exemple, en remarquant qu'il existe un isomorphisme entre une courbe elliptique
EC : y2=x3+a.x+b modp et la courbe de Montgomery associée EC* : y*2=x*3+(a*r2)*x+(b*r2) modp, et par conséquent que si un point P de coordonnées (x, y) appartient à la courbe EC, son image par cet isomorphisme est le point de coordonnées (x*r2, y*r2) de la courbe EC*, on peut utiliser l'invention dans le cadre des algorithmes travaillant sur des courbes elliptiques en stockant dans l'entité électronique les paramètres pré-convertis (a*r2), (b*r2), ainsi que les coordonnées préconverties (χ*r2, y*r2) du point de base et en remplaçant les multiplications euclidiennes par des multiplications de Montgomery.
En effet, les opérations sur les points de la courbe elliptique utilisées dans les algorithmes cryptographiques reviennent à des multiplications, qui pourront ainsi être effectuées en utilisant l'arithmétique de Montgomery.
En outre, lorsque ces opérations utilisent les coordonnées du point de base et que celles-ci sont mémorisées pré-converties dans l'entité électronique, on pourra directement utiliser l'arithmétique de Montgomery sans avoir à mémoriser la valeur du radical de Montgomery r ni son carré /. Comme dans des exemples précités, il pourra toutefois être nécessaire de déconvertir le résultat obtenu en effectuant sur celui-ci une multiplication par l'unité au sens de Montgomery, qui n'implique pas la connaissance du radical de Montgomery.
L'invention n'est pas limitée à une utilisation dans les cartes à microcircuit, mais est au contraire applicable à tout type d'entité électronique, par exemple et de manière non limitative aux ordinateurs, aux assistants personnels numériques (également connus sous l'acronyme anglais PDA), aux téléphones et aux passeports électroniques.

Claims

REVENDICATIONS
1. Procédé de stockage de donnée de clé cryptographique dans une unité de stockage non volatil d'une entité électronique, caractérisé en ce qu'il comprend les étapes suivantes :
- conversion d'une donnée, issue d'au moins une partie de clé et destinée à être utilisée avec un opérande au sein d'une opération d'un premier type, en une donnée de clé apte à être utilisée avec ledit opérande au sein d'une opération d'un second type ; - stockage de la donnée de clé dans l'unité de stockage non volatil.
2. Procédé de stockage selon la revendication 1 , caractérisé en ce que l'étape de conversion est réalisée par un dispositif extérieur à l'entité électronique et en ce que la donnée de clé est transmise du dispositif extérieur à l'entité électronique avant l'étape de stockage.
3. Procédé de stockage selon la revendication 1 ou 2, caractérisé en ce que l'étape de stockage est réalisée durant une étape de personnalisation de l'entité électronique.
4. Procédé de stockage selon l'une des revendications 1 à 3, caractérisé en ce que l'étape de conversion comprend une multiplication au sens de Montgomery de la donnée issue de la partie de clé par le carré du radical de Montgomery.
5. Procédé de traitement de données mis en œuvre dans une entité électronique comportant une unité de stockage non volatil et nécessitant la détermination du résultat d'une opération d'un premier type impliquant un opérande caractérisé en ce qu'il comprend les étapes de :
- lecture dans l'unité de stockage non volatil d'une donnée de clé ; - réalisation d'une opération d'un second type avec la donnée de clé et ledit opérande.
6. Procédé de traitement de données pour déterminer le résultat d'une opération d'un premier type impliquant un opérande dans une entité électronique comportant une unité de stockage non volatil, caractérisé en ce qu'il comprend les étapes de :
- conversion d'une donnée, issue d'au moins une partie de clé et destinée à être utilisée avec l'opérande au sein de l'opération du premier type, en une donnée de clé apte à être utilisée avec ledit opérande au sein d'une opération d'un second type ;
- stockage de la donnée de clé dans l'unité de stockage non volatil ;
- lecture dans l'unité de stockage non volatil de la donnée de clé ;
- réalisation de l'opération du second type avec la donnée de clé lue et ledit opérande.
7. Procédé de traitement de données selon la revendication 5 ou 6, caractérisé en ce que le résultat de ladite opération du second type est égal au résultat de l'opération du premier type.
8. Procédé de traitement de données selon l'une des revendications 5 à 7, caractérisé en ce que l'opération du second type est une multiplication au sens de Montgomery et en ce que l'opération du premier type est une multiplication euclidienne impliquant l'opérande et une clé, ladite donnée de clé étant égale au produit au sens de Montgomery de la clé et du carré du radical de Montgomery.
9. Procédé de traitement de données selon la revendication 5 ou 6, caractérisé en ce qu'il comprend une étape de déconversion du résultat de l'opération du second type afin d'obtenir le résultat de l'opération du premier type.
10. Procédé de traitement de données selon l'une des revendications 5 à 9, caractérisé en ce qu'il comprend les étapes suivantes :
- tirage d'un nombre pseudo-aléatoire ;
- déconversion du nombre pseudo-aléatoire pour obtenir ledit opérande.
11. Procédé de traitement de données selon la revendication 10, caractérisé en ce qu'il comprend en outre une étape de multiplication au sens de Montgomery du nombre pseudo-aléatoire et de l'opérande.
12. Procédé de traitement de données selon l'une des revendications 9 à 11 , caractérisé en ce qu'au moins une étape de déconversion est réalisée par une multiplication par l'unité au sens de Montgomery.
13. Procédé de génération de signature, caractérisé en ce qu'il met en œuvre un procédé de traitement de données selon l'une des revendications 5 à 12.
14. Procédé de vérification de signature, caractérisé en ce qu'il met en œuvre un procédé de traitement de données selon l'une des revendications
5 à 12.
15. Procédé selon l'une des revendications 1 à 14, caractérisé en ce que l'opération du premier type est une multiplication euclidienne et en ce que l'opération du second type est une multiplication de Montgomery.
16. Procédé selon l'une des revendications 1 , 5 et 6, caractérisé en ce que l'opération du premier type est une exponentiation modulaire euclidienne et en ce que l'opération du second type est une exponentiation de Montgomery.
17. Procédé selon l'une des revendications 1 à 16, caractérisé en ce que la donnée de clé comprend les paramètres d'une courbe elliptique.
18. Procédé selon l'une des revendications 1 à 17, caractérisé en ce que la donnée de clé comprend les coordonnées d'un point de base d'une courbe elliptique.
19. Procédé selon l'une des revendications 1 à 18, caractérisé en ce que l'entité électronique est une carte à microcircuit.
20. Dispositif de stockage de donnée de clé cryptographique dans une unité de stockage non volatil d'une entité électronique, caractérisé en ce qu'il comprend :
- des moyens de conversion d'une donnée, issue d'au moins une partie de clé et destinée à être utilisée avec un opérande au sein d'une opération d'un premier type, en une donnée de clé apte à être utilisée avec ledit opérande au sein d'une opération d'un second type ;
- des moyens pour stocker la donnée de clé dans l'unité de stockage non volatil.
21. Dispositif de stockage selon la revendication 20, caractérisé en ce que les moyens de conversion sont situés dans un dispositif extérieur à l'entité électronique et en ce que les moyens pour stocker la donnée de clé comprennent des moyens de transmission de la donnée de clé du dispositif extérieur à l'entité électronique pour stockage.
22. Dispositif de personnalisation de carte caractérisé en ce qu'il comprend un dispositif selon la revendication 20 ou 21.
23. Dispositif selon l'une des revendications 20 à 22, caractérisé en ce que les moyens de conversion sont aptes à mettre en oeuvre une multiplication au sens de Montgomery de la donnée issue de la partie de clé par le carré du radical de Montgomery.
24. Dispositif de traitement de données d'une entité électronique comportant une unité de stockage non volatil et nécessitant la détermination du résultat d'une opération d'un premier type impliquant un opérande caractérisé en ce qu'il comprend :
- des moyens de lecture dans l'unité de stockage non volatil d'une donnée de clé ; - des moyens de réalisation d'une opération d'un second type avec la donnée de clé et ledit opérande.
25. Dispositif de traitement de données pour déterminer le résultat d'une opération d'un premier type impliquant un opérande dans une entité électronique comportant une unité de stockage non volatil, caractérisé en ce qu'il comprend :
- des moyens de conversion d'une donnée, issue d'au moins une partie de clé et destinée à être utilisée avec l'opérande au sein de l'opération du premier type, en une donnée de clé apte à être utilisée avec ledit opérande au sein d'une opération d'un second type ;
- des moyens de stockage de la donnée de clé dans l'unité de stockage non volatil ;
- des moyens de lecture dans l'unité de stockage non volatil de la donnée de clé ; - des moyens de réalisation de l'opération du second type avec la donnée de clé lue et ledit opérande.
26. Dispositif de traitement de données selon la revendication 24 ou 25, caractérisé en ce que le résultat de ladite opération du second type est égal au résultat de l'opération du premier type.
27. Dispositif de traitement de données selon l'une des revendications 24 à 26, caractérisé en ce que l'opération du second type est une multiplication au sens de Montgomery et en ce que l'opération du premier type est une multiplication euclidienne impliquant l'opérande et une clé, ladite donnée de clé étant égale au produit au sens de Montgomery de la clé et du carré du radical de Montgomery.
28. Dispositif de traitement de données selon la revendication 24 ou 25, caractérisé en ce qu'il comprend des moyens de déconversion du résultat de l'opération du second type aptes à d'obtenir le résultat de l'opération du premier type.
29. Dispositif de traitement de données selon l'une des revendications 24 à 28, caractérisé en ce qu'il comprend : - des moyens de tirage d'un nombre pseudo-aléatoire ;
- des moyens de déconversion du nombre pseudo-aléatoire pour obtenir ledit opérande.
30. Dispositif de traitement de données selon la revendication 29, caractérisé en ce qu'il comprend en outre des moyens de multiplication au sens de Montgomery du nombre pseudo-aléatoire et de l'opérande.
31. Dispositif de traitement de données selon l'une des revendications 28 à 30, caractérisé en ce que les moyens de déconversion comprennent des moyens de multiplication par l'unité au sens de Montgomery.
32. Dispositif de génération de signature, caractérisé en ce qu'il comprend un dispositif de traitement de données selon l'une des revendications 24 à 31.
33. Dispositif de vérification de signature, caractérisé en ce qu'il comprend un dispositif de traitement de données selon l'une des revendications 24 à 31.
34. Dispositif selon l'une des revendications 20 à 33, caractérisé en ce que l'opération du premier type est une multiplication euclidienne et en ce que l'opération du second type est une multiplication de Montgomery.
35. Dispositif selon l'une des revendications 20, 24 et 25, caractérisé en ce que l'opération du premier type est une exponentiation modulaire euclidienne et en ce que l'opération du second type est une exponentiation de Montgomery.
36. Dispositif selon l'une des revendications 20 à 35, caractérisé en ce que la donnée de clé comprend les paramètres d'une courbe elliptique.
37. Dispositif selon l'une des revendications 20 à 36, caractérisé en ce que la donnée de clé comprend les coordonnées d'un point de base d'une courbe elliptique.
38. Dispositif selon l'une des revendications 20 à 37, caractérisé en ce que l'entité électronique est une carte à microcircuit.
PCT/FR2005/003170 2004-12-23 2005-12-16 Procede de traitement de donnees et dispositif associe WO2006070092A1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/793,673 US9524144B2 (en) 2004-12-23 2005-12-16 Data processing method and related device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0413839 2004-12-23
FR0413839A FR2880149B1 (fr) 2004-12-23 2004-12-23 Procede de traitement de donnees et dispositif associe

Publications (1)

Publication Number Publication Date
WO2006070092A1 true WO2006070092A1 (fr) 2006-07-06

Family

ID=34954123

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2005/003170 WO2006070092A1 (fr) 2004-12-23 2005-12-16 Procede de traitement de donnees et dispositif associe

Country Status (3)

Country Link
US (1) US9524144B2 (fr)
FR (1) FR2880149B1 (fr)
WO (1) WO2006070092A1 (fr)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE436848B (sv) * 1982-06-28 1985-01-28 Asea Ab Styrsystem for industrirobot
GB0228760D0 (en) * 2002-12-10 2003-01-15 Koninkl Philips Electronics Nv Efficient implementation of zero knowledge protocols
CN102122241A (zh) * 2010-01-08 2011-07-13 复旦大学 一种适用于素域和多项式域的模乘模除器
US10678709B2 (en) 2013-07-15 2020-06-09 Infineon Technologies Ag Apparatus and method for memory address encryption
US10176121B2 (en) * 2013-07-15 2019-01-08 Infineon Technologies Ag Apparatus and method for memory address encryption
US9189617B2 (en) * 2013-09-27 2015-11-17 Intel Corporation Apparatus and method for implementing zero-knowledge proof security techniques on a computing platform
CN114338021B (zh) * 2022-03-15 2022-07-19 阿里云计算有限公司 一种密文混合运算方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0704794A1 (fr) * 1994-09-28 1996-04-03 T.R.T. Telecommunications Radioelectriques Et Telephoniques Dispositif de calculs d'opérations modulaires et carte à puce comportant un tel dispositif
WO1998019231A1 (fr) * 1996-10-31 1998-05-07 Motorola Limited Coprocesseur executant la multiplication modulaire
EP0933695A2 (fr) * 1998-01-28 1999-08-04 Hitachi, Ltd. Carte à puce équipé d'une installation de traitement pour le chiffrage à courbe elliptique
US6088453A (en) * 1997-01-27 2000-07-11 Kabushiki Kaisha Toshiba Scheme for computing Montgomery division and Montgomery inverse realizing fast implementation

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69333121T2 (de) 1992-06-30 2004-04-15 Thomson Multimedia Verfahren zur Ausführung von kryptographischen und/oder fehlerkorrigierenden Protokollen auf dem Gebiet der Zahlentheorie
US5987131A (en) * 1997-08-18 1999-11-16 Picturetel Corporation Cryptographic key exchange using pre-computation
CA2253009C (fr) * 1997-11-04 2002-06-25 Nippon Telegraph And Telephone Corporation Methode et appareil d'inversion modulaire servant a proteger des informations et support d'enregistrement portant un programme d'implantation de cette methode
DE19820605A1 (de) 1998-05-08 1999-11-11 Giesecke & Devrient Gmbh Verfahren zur sicheren Verteilung von Software
JP3542278B2 (ja) * 1998-06-25 2004-07-14 株式会社東芝 モンゴメリ・リダクション装置及び記録媒体
JP2002229445A (ja) * 2001-01-30 2002-08-14 Mitsubishi Electric Corp べき乗剰余演算器
FR2824210B1 (fr) 2001-04-27 2003-05-30 Gemplus Card Int Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme cryptographique du type a cle publique sur une courbe elliptique
FR2845502B1 (fr) 2002-10-04 2005-01-28 Oberthur Card Syst Sa Carte a microcircuit dont les performances peuvent etre modifiees apres personnalisation.
FR2848364B1 (fr) 2002-12-09 2005-03-11 Oberthur Card Syst Sa Procede de personnalisation securisee d'un objet
GB0228760D0 (en) * 2002-12-10 2003-01-15 Koninkl Philips Electronics Nv Efficient implementation of zero knowledge protocols
FR2853785B1 (fr) 2003-04-09 2006-02-17 Oberthur Card Syst Sa Entite electronique securisee avec compteur modifiable d'utilisations d'une donnee secrete
US7380125B2 (en) * 2003-05-22 2008-05-27 International Business Machines Corporation Smart card data transaction system and methods for providing high levels of storage and transmission security
KR100564599B1 (ko) * 2003-12-24 2006-03-29 삼성전자주식회사 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체
FR2875355B1 (fr) 2004-09-15 2008-04-25 Oberthur Card Syst Sa Procede de traitement de donnees, entite electronique et carte a microcircuit, notamment pour dechiffrer ou signer un message de facon securisee
JP4351987B2 (ja) * 2004-11-19 2009-10-28 株式会社東芝 モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0704794A1 (fr) * 1994-09-28 1996-04-03 T.R.T. Telecommunications Radioelectriques Et Telephoniques Dispositif de calculs d'opérations modulaires et carte à puce comportant un tel dispositif
WO1998019231A1 (fr) * 1996-10-31 1998-05-07 Motorola Limited Coprocesseur executant la multiplication modulaire
US6088453A (en) * 1997-01-27 2000-07-11 Kabushiki Kaisha Toshiba Scheme for computing Montgomery division and Montgomery inverse realizing fast implementation
EP0933695A2 (fr) * 1998-01-28 1999-08-04 Hitachi, Ltd. Carte à puce équipé d'une installation de traitement pour le chiffrage à courbe elliptique

Also Published As

Publication number Publication date
FR2880149A1 (fr) 2006-06-30
FR2880149B1 (fr) 2007-03-30
US9524144B2 (en) 2016-12-20
US20080130870A1 (en) 2008-06-05

Similar Documents

Publication Publication Date Title
EP1166494B1 (fr) Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique
EP1151576B1 (fr) Procede cryptographique a cles publique et privee
FR2759226A1 (fr) Protocole de verification d'une signature numerique
EP2791783A1 (fr) Procede de generation de nombres premiers prouves adapte aux cartes a puce
WO2006070092A1 (fr) Procede de traitement de donnees et dispositif associe
EP0795241B1 (fr) Procede de cryptographie a cle publique base sur le logarithme discret
WO2000059157A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique
EP0963638B1 (fr) Procede de signature numerique
FR3005186A1 (fr) Projet de validation d'un parametre cryptographique, et dispositif correspondant
EP1456998A1 (fr) Procede cryptographique permettant de repartir la charge entre plusieurs entites et dispositifs pour mettre en oeuvre ce procede
EP3809627B1 (fr) Procédé de génération d'une clé publique et entité électronique associée
EP1520370B1 (fr) Procédé et dispositifs cryptographiques permettant d'alleger les calculs au cours de transactions
WO1998051038A1 (fr) Generateur pseudo-aleatoire base sur une fonction de hachage pour systemes cryptographiques necessitant le tirage d'aleas
FR3004042A1 (fr) Procedes de generation et d'utilisation de cles cryptographiques privees pour le rsa-crt ou les variantes du rsa-crt
EP1222528B1 (fr) Procede d'amelioration de performance de l'operation de multiplication sur un corps fini de caracteristique 2
WO1998037662A1 (fr) Systeme cryptographique comprenant un systeme de chiffrement et de dechiffrement et un systeme de sequestre de cles, et les appareils et dispositifs associes
EP1642413B1 (fr) Procede de chiffrement/dechiffrement d un message et disposi tif associe
FR3010562A1 (fr) Procede de traitement de donnees et dispositif associe
EP3929726A1 (fr) Procede de traitement cryptographique,dispositif electronique et programme d'ordinateur associes
WO2015132524A2 (fr) Génération de message pour test de génération de clés cryptographiques
FR2837335A1 (fr) Procede et systeme cryptographiques
FR3045253A1 (fr) Procede et dispositif de traitement cryptographique
FR3038473A1 (fr) Procede de traitement cryptographique de donnees et programme d'ordinateur associe
FR2984548A1 (fr) Procede de generation de nombres premiers prouves adapte aux cartes a puce
FR3014582A1 (fr) Procede de test de la condition mov et dispositif associe

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 11793673

Country of ref document: US

122 Ep: pct application non-entry in european phase

Ref document number: 05849283

Country of ref document: EP

Kind code of ref document: A1

WWW Wipo information: withdrawn in national office

Ref document number: 5849283

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 11793673

Country of ref document: US