PROCEDE DE REALISATION D'UNE OPERATION DE COUPLAGE SUR UNE COURBE ELLIPTIQUE. PAR UN SYSTEME COMPRENANT UNE CARTE A PUCE ET UN LECTEUR DE CARTE METHOD OF PERFORMING A COUPLING OPERATION ON AN ELLIPTICAL CURVE. BY A SYSTEM COMPRISING A CHIP CARD AND A CARD READER
L'invention concerne un procédé cryptographique mis en oeuvre par un module de calcul sécurisé dans un système comprenant également un module de calcul non sécurisé mais disposant de ressources matérielles plus importantes. L'invention est notamment intéressante pour la mise en oeuvre de procédés cryptographiques dans une carte à puce associée à un lecteur, ou plus généralement dans tout module de calcul sécurisé (par exemple un module TMP pour "Trusted Module Platform) installé dans un PC non sécurisé mais disposant de ressources matérielles importantes, ou même dans un PC associé à un serveur distant.The invention relates to a cryptographic method implemented by a secure calculation module in a system also comprising a non-secure calculation module but having more material resources. The invention is particularly advantageous for the implementation of cryptographic methods in a smart card associated with a reader, or more generally in any secure calculation module (for example a TMP module for "Trusted Module Platform") installed in a non-PC secure but with significant hardware resources, or even in a PC associated with a remote server.
Pour sécuriser des données secrètes, une carte est souvent amenée à mettre en oeuvre des protocoles cryptographiques complexes avant dé transmettre des données chiffrées au lecteur de carte, qui ne doit pas avoir accès aux données secrètes. A titre d'exemple, on peut citer le protocole de chiffrement basé sur l'identité, le protocole de chiffrement par clé publique avec recherche de mots clés, le protocole d'échange de clés entre trois utilisateurs, la signature courte, etc.To secure secret data, a card is often required to implement complex cryptographic protocols before transmitting encrypted data to the card reader, which must not have access to the secret data. As an example, we can cite the identity-based encryption protocol, the public key encryption protocol with keyword research, the key exchange protocol between three users, the short signature, etc.
Si ces protocoles ont montré leur efficacité pour la protection de données, ils ont cependant l'inconvénient d'être particulièrement coûteux, en terme de ressources matérielles de calcul nécessaires à leur mise en oeuvre. En particulier, certaines opérations élémentaires utilisées dans ces protocoles sont particulièrement coûteuses comme par exemple les opérations d'inversion
d'un nombre entier ou les opérations de couplage ("pairing" en anglais) sur courbes elliptiques. Une courbe elliptique est un ensemble de points ayant des caractéristiques communes et dont les coordonnées peuvent notamment être calculées à partir des coordonnées de certains points de la courbe, appelés points générateurs, par des opérations simples telles qu'une multiplication par un scalaire. Pour plus de détails sur les courbes elliptiques, on pourra se reporter notamment à la publication FR 2 828 779. La mise en oeuvre classique d'une opération de couplage de type C = <A, B> est détaillée notamment dans le document "Identity based encryption from the Weil pairing" D. Boneh et M. Franklin (http: //crypto. stanford.edu/~dabo/abstracts/ibe.html) . Les points A, B que l'on cherche à coupler sont par exemple une clé, publique ou privée, et un message, à chiffrer ou à déchiffrer, dans le cadre d'un protocole de cryptographie à clés asymétriques.If these protocols have shown their effectiveness for the protection of data, they have however the disadvantage of being particularly expensive, in term of material resources of calculation necessary for their implementation. In particular, certain elementary operations used in these protocols are particularly expensive such as for example the inversion operations. of an integer or the pairing operations on elliptic curves. An elliptical curve is a set of points having common characteristics and whose coordinates can in particular be calculated from the coordinates of certain points of the curve, called generator points, by simple operations such as multiplication by a scalar. For more details on the elliptical curves, reference may be made in particular to the publication FR 2 828 779. The conventional implementation of a coupling operation of type C = <A, B> is detailed in particular in the document "Identity based encryption from the Weil pairing "D. Boneh and M. Franklin (http: // crypto. stanford.edu/~dabo/abstracts/ibe.html). The points A, B that one seeks to couple are for example a key, public or private, and a message, to be encrypted or decrypted, within the framework of a cryptography protocol with asymmetric keys.
Parce que certaines opérations sont coûteuses, les protocoles cryptographiques sont particulièrement difficiles à implémenter dans une carte à puce ou un module de calcul sécurisé car les temps de calcul deviennent prohibitifs, les ressources matérielles de la carte ou du module sécurisé étant nécessairement limitées de par leur taille réduite .Because certain operations are expensive, cryptographic protocols are particularly difficult to implement in a smart card or a secure computing module because the computing times become prohibitive, the hardware resources of the card or of the secure module being necessarily limited by their reduced size.
L'invention a pour but de remédier à cette difficulté, pour permettre l'utilisation de protocoles cryptographiques complexes et coûteux dans un module de calcul sécurisé.The invention aims to remedy this difficulty, to allow the use of complex and costly cryptographic protocols in a secure calculation module.
Ce but est atteint avec un procédé cryptographique selon l'invention mis en oeuvre par un module de calcul sécurisé, et caractérisé en ce que, au cours du procédé, le module sécurisé sous-traite la réalisation d'un
couplage f de deux points A, B d'une courbe elliptique, à un module de calcul non sécurisé disposant de ressources matérielles plus importantes, puis le module sécurisé vérifie l'exactitude du résultat fourni par le module non sécurisé.This object is achieved with a cryptographic method according to the invention implemented by a secure calculation module, and characterized in that, during the process, the secure module subcontracts the production of a coupling f of two points A, B of an elliptical curve, to an insecure calculation module having greater material resources, then the secure module checks the accuracy of the result provided by the unsecured module.
Ainsi, l'idée essentielle de l'invention est de sous- traiter au module non sécurisé la réalisation des opérations les plus coûteuses sur les courbes elliptiques, tout en vérifiant que le résultat fourni par le module non sécurisé est exact.Thus, the essential idea of the invention is to subcontract to the non-secure module the execution of the most expensive operations on the elliptical curves, while verifying that the result provided by the non-secure module is exact.
Dans un même procédé, plusieurs opérations, éventuellement de types différents, peuvent ainsi être sous-traitées, au fur et à mesure du calcul. Le module non sécurisé disposant de moyens de calcul beaucoup plus importants que la carte, la mise en oeuvre des protocoles cryptographiques les plus complexes devient possible avec l'invention. Le module sécurisé quant à lui se limite à des opérations simples, demandant peu de ressources et donc rapides à mettre en oeuvre, comme par exemple des opérations d'adition, de multiplication, etc., comme on le verra mieux par la suite dans des exemples .In the same process, several operations, possibly of different types, can thus be subcontracted, as the calculation proceeds. As the non-secure module has much larger calculation means than the card, the implementation of the most complex cryptographic protocols becomes possible with the invention. The secure module is limited to simple operations, requiring few resources and therefore quick to implement, such as for example operations of addition, multiplication, etc., as will be seen better in examples.
De préférence, et notamment si l'un au moins des points A, B étant un point secret, le module sécurisé : • masque le ou les points secrets par un ou des nombres aléatoires pour produire un ou des points secrets masqués, • sous-traite au module non sécurisé la réalisation du couplage f à partir du ou des points secrets masqués (Al, Bl, etc.), le module non sécurisé produisant un résultat intermédiaire (SI), • déduit le résultat attendu S à partir du résultat intermédiaire (SI) et du ou des nombres aléatoires utilisés pour le masquage du ou des points secrets.
• vérifie l'exactitude du résultat attendu S.Preferably, and in particular if at least one of the points A, B being a secret point, the secure module: • masks the secret point or points by one or more random numbers to produce one or more hidden secret points, • sub- processes the non-secure module to carry out the coupling f from the hidden secret point or points (Al, Bl, etc.), the non-secure module producing an intermediate result (SI), • deduces the expected result S from the intermediate result (SI) and the random number (s) used to hide the secret point (s). • checks the accuracy of the expected result S.
Ainsi, le module non sécurisé n'a jamais accès aux éventuelles données secrètes manipulées au cours du procédé, toutes les données secrètes étant masquées par un ou plusieurs nombres aléatoires.Thus, the non-secure module never has access to any secret data manipulated during the process, all the secret data being masked by one or more random numbers.
Selon un premier mode de réalisation selon l'invention, pour vérifier le résultat S fourni par le module non sécurisé, le module sécurisé : • sous-traite au module non sécurisé la réalisation d'au moins un couplage f supplémentaire à partir d'au moins un point Al obtenu par combinaison linéaire du point A avec un coefficient ri, le module non sécurisé produisant au moins un résultat supplémentaire, puis • vérifie la cohérence entre le résultat intermédiaire précédemment fourni et le ou les résultats supplémentaires en combinant linéairement le résultat intermédiaire précédemment fourni et le ou les résultats supplémentaires.According to a first embodiment according to the invention, to verify the result S provided by the non-secure module, the secure module: • subcontracts to the non-secure module the production of at least one additional coupling f from at minus a point Al obtained by linear combination of point A with a coefficient ri, the unsecured module producing at least one additional result, then • checks the consistency between the intermediate result previously supplied and the additional result (s) by linearly combining the intermediate result previously provided and the additional result (s).
Ce premier mode de réalisation sera privilégié notamment pour la réalisation de toute fonction f présentant des propriétés de linéarité ou de bilinéarité. Si la fonction f prend plusieurs variables d'entrée, il est possible de masquer une ou plusieurs de ces variables d'entrée, par des combinaisons linéaires plus ou moins complexes, en fonction du niveau de sécurité que l'on souhaite pouvoir garantir. Ainsi, si une ou plusieurs variables d'entrée de la fonction f sont des données publiques, il n'est pas indispensable de les masquer, ce qui permet d'alléger les calculs réalisés par le module sécurisé pour vérifier les résultats fournis par le module non sécurisé et
déterminer le résultat initial attendu. Inversement, si un ou plusieurs variables d'entrée de la fonction f sont des données secrètes, on utilisera des combinaisons linéaires plus ou moins complexes pour les masquer. Ces principes font être détaillés ci-dessous dans des exemples .This first embodiment will be favored in particular for the realization of any function f having properties of linearity or bilinearity. If the function f takes several input variables, it is possible to mask one or more of these input variables, by more or less complex linear combinations, depending on the level of security which it is desired to be able to guarantee. Thus, if one or more input variables of the function f are public data, it is not essential to hide them, which makes it possible to lighten the calculations performed by the secure module to verify the results provided by the module unsecured and determine the expected initial result. Conversely, if one or more input variables of the function f are secret data, we will use more or less complex linear combinations to hide them. These principles are detailed below in examples.
Le premier mode de réalisation de l'invention peut être choisi pour la réalisation d'un couplage de deux points A, B d'une courbe elliptique.The first embodiment of the invention can be chosen for the realization of a coupling of two points A, B of an elliptical curve.
Selon une première variante, pour calculer le couplage de deux points A, B d'une courbe elliptique comprenant également deux points générateurs G, H, le module sécurisé : • sous-traite au module non sécurisé le calcul des couplages S = <A, B>, SI = <G, B>, S2 = <A, H> et S3 = <A3, B3>, avec A3 = r3.A+s3.G et B3 = t3.B+u3.H, r3, s3, t3, u3 étant des coefficients entiers, • vérifie l'exactitude du résultat S en vérifiant l'égalité : S3 = r3.t3.S + s3.t3.Sl + r3.u3.S2 + s3.u3.<G, H>According to a first variant, to calculate the coupling of two points A, B of an elliptical curve also comprising two generator points G, H, the secure module: • subcontracts to the non-secure module the calculation of the couplings S = <A, B>, SI = <G, B>, S2 = <A, H> and S3 = <A3, B3>, with A3 = r3.A + s3.G and B3 = t3.B + u3.H, r3, s3, t3, u3 being integer coefficients, • checks the accuracy of the result S by checking the equality: S3 = r3.t3.S + s3.t3.Sl + r3.u3.S2 + s3.u3. <G , H>
Dans cette première variante, on utilise la propriété de bilinéarité de la fonction de couplage sur courbe elliptique.In this first variant, the bilinearity property of the coupling function on the elliptical curve is used.
La propriété permet d'écrire : S3 = <A3, B3> = <r3.A+s3.G, t3.B+u3.H> = r3.t3.<A,B> + s3.t3.<G,B> + r3.u3.<A,H> + s3.u3.<G,H>The property allows to write: S3 = <A3, B3> = <r3.A + s3.G, t3.B + u3.H> = r3.t3. <A, B> + s3.t3. <G, B> + r3.u3. <A, H> + s3.u3. <G, H>
Selon cette propriété, le résultat C = <A, B> du couplage entre deux points A et B est un élément d'un ensemble mathématique possédant une structure de groupe. Pour plus de simplicité, dans la suite du brevet, les opérations effectuées dans cet ensemble seront notées additivement,
c'est à dire que l'on notera par exemple <A+A'> = <A,B> + <A',B> et <A,B+B> = <A, B> + <A,B'> pour exprimer la propriété de bilinéarité de l'opération de couplage entre deux points .According to this property, the result C = <A, B> of the coupling between two points A and B is an element of a mathematical set having a group structure. For simplicity, in the remainder of the patent, the operations carried out in this set will be denoted additively, that is to say that we will note for example <A + A '> = <A, B> + <A', B> and <A, B + B> = <A, B> + <A, B '> to express the bilinearity property of the coupling operation between two points.
On utilise également deux paramètres, à savoir deux points générateurs de la courbe elliptique. Les coordonnées de ces points, ainsi que la valeur du couplage de ces deux points <G, H> sont mémorisées dans le module sécurisé, par exemple au cours d'une phase d'initialisation du procédé.Two parameters are also used, namely two points generating the elliptical curve. The coordinates of these points, as well as the value of the coupling of these two points <G, H> are stored in the secure module, for example during an initialization phase of the process.
Le calcul du résultat S = <A, B> et sa vérification par le module sécurisé est ici très rapide, dans la mesure où l'intervention du module sécurisé est limitée à la réalisation d'additions ou de multiplications par un scalaire entier.The calculation of the result S = <A, B> and its verification by the secure module is here very rapid, insofar as the intervention of the secure module is limited to carrying out additions or multiplications by an integer scalar.
Cette première variante pourra notamment être utilisée lorsque les points A, B sont des données publiques.This first variant may in particular be used when the points A, B are public data.
Dans une deuxième variante, pour calculer le couplage de deux points A, B d'une courbe elliptique comprenant également deux points générateurs G, H, le module sécurisé : • sous-traite au module non sécurisé le calcul des couplages SI = <G, B>, S2 = <A2, B>, S3 = <A2, H> et S4 = <A4, B4> avec : A2 = A+s2.G, A4 = r4.A+s4.G, B4 = t4.B+u4.H, • détermine S = <A, B> en résolvant l'équation S2 = S + s2.<G, B>, • détermine <A, H> en résolvant l'équation S3 = <A, H> + s2.<G, H> • vérifie l'exactitude des calculs de couplages précédents en vérifiant l'équation : S4 = r4.t4.S + s4.t4.Sl + r4.u4.<A, H> + s4.u4.<G, H>
A noter dans ce mode de réalisation, que le module non sécurisé n'a pas accès au point A et ignore ses coordonnées, puisque il reçoit du module sécurisé uniquement les points G, B, A2, A3, H, A4 et B4, nécessaires pour calculer les couplages SI à S4 demandés. Si de plus, les coefficients s2, s3, r4, s4, t4 et u4 sont choisis aléatoirement à chaque mise en oeuvre du procédé, alors le module non sécurisé ne dispose d'aucun moyen de retrouver des informations relatives au point A. Cette variante pourra par exemple être utilisée dans le cas où A est une donnée secrète et B une donnée publique.In a second variant, to calculate the coupling of two points A, B of an elliptical curve also comprising two generator points G, H, the secure module: • subcontracts to the non-secure module the calculation of the couplings SI = <G, B>, S2 = <A2, B>, S3 = <A2, H> and S4 = <A4, B4> with: A2 = A + s2.G, A4 = r4.A + s4.G, B4 = t4. B + u4.H, • determines S = <A, B> by solving the equation S2 = S + s2. <G, B>, • determines <A, H> by solving the equation S3 = <A, H > + s2. <G, H> • checks the accuracy of the previous coupling calculations by checking the equation: S4 = r4.t4.S + s4.t4.Sl + r4.u4. <A, H> + s4 .u4. <G, H> Note in this embodiment, that the non-secure module does not have access to point A and ignores its coordinates, since it receives from the secure module only the points G, B, A2, A3, H, A4 and B4, necessary to calculate the couplings SI to S4 requested. If in addition, the coefficients s2, s3, r4, s4, t4 and u4 are chosen randomly at each implementation of the method, then the non-secure module has no means of retrieving information relating to point A. This variant could for example be used in the case where A is a secret datum and B a public datum.
Dans une troisième variante, pour calculer le couplage de deux points A, B d'une courbe elliptique comprenant également deux points générateurs G, H, le module sécurisé : • sous-traite au module non sécurisé le calcul des couplages SI = <G, B2>, S2 = <A2, H>, S3 = <A2, B2> et S4 = <A4, B4> avec : A2 = A+s2.G, A4 = r4.A+s4.G, B2 = B+u2.H, et B4 = t4.B+u4.H, • détermine <G, B> en résolvant l'équation SI = <G, B>+ul.<G, H> • détermine <A, H> en résolvant l'équation S2 = <A, H> + s2.<G, H> • détermine S = <A, B> en résolvant l'équation S3 = <A, B> + u2.<A, H> + s2.<G, B> + s2.u2.<G, H> • vérifie l'exactitude des calculs de couplages précédents en vérifiant l'équation : S4 = r4.t4.S + s4.t4.Sl + r4.u4.<A, H> + s4.u4.<G, H>In a third variant, to calculate the coupling of two points A, B of an elliptical curve also comprising two generator points G, H, the secure module: • subcontracts to the non-secure module the calculation of the couplings SI = <G, B2>, S2 = <A2, H>, S3 = <A2, B2> and S4 = <A4, B4> with: A2 = A + s2.G, A4 = r4.A + s4.G, B2 = B + u2.H, and B4 = t4.B + u4.H, • determines <G, B> by solving the equation SI = <G, B> + ul. <G, H> • determines <A, H> in solving the equation S2 = <A, H> + s2. <G, H> • determine S = <A, B> by solving the equation S3 = <A, B> + u2. <A, H> + s2 . <G, B> + s2.u2. <G, H> • check the accuracy of the previous coupling calculations by checking the equation: S4 = r4.t4.S + s4.t4.Sl + r4.u4. <A, H> + s4.u4. <G, H>
Dans cette variante, les données A, B ne sont jamais directement accessibles par le module non sécurisé, ce qui est intéressant notamment si A et B sont des données secrètes . chacune Selon une quatrième variante, pour
calculer le couplage de deux points A, B d'une courbe elliptique comprenant également deux points générateurs G, H, le module sécurisé : • sous-traite au module non sécurisé le calcul des couplages SI = <A1, Bl>, S2 = <A2, B2>, S3 = <A3, B3> et S4 = <A4, B4> avec : Al = rl.A+sl.G, A2 = r2.A+s2.G, A3 = r3.A+s3.G, A4 = r4.A+s4.G, Bl = tl.B+ul.H, B2 = t2.B+u2.H, B3 = t3.B+u3.H, B4 = t4.B+u4.H, • détermine <A, B>, <A, H> et <G, B> en résolvant un système de trois équations à 3 inconnues^: Si = rι.ti.<A,B>+Si. ti.<G,B>+rι.Ui.<A,H>+Si.Ui.<G,H>, pour i variant de 1 à 3 • vérifie la cohérence des calculs de couplages précédents en vérifiant l'équation : S4 = r4.t4.<A,B>+s4.t4.<G,B>+r4.u4.<A,H>+s4.u4.<G,H>,In this variant, the data A, B are never directly accessible by the non-secure module, which is advantageous in particular if A and B are secret data. each According to a fourth variant, for calculate the coupling of two points A, B of an elliptical curve also comprising two generator points G, H, the secure module: • subcontracts to the non-secure module the calculation of the couplings SI = <A1, Bl>, S2 = < A2, B2>, S3 = <A3, B3> and S4 = <A4, B4> with: Al = rl.A + sl.G, A2 = r2.A + s2.G, A3 = r3.A + s3. G, A4 = r4.A + s4.G, Bl = tl.B + ul.H, B2 = t2.B + u2.H, B3 = t3.B + u3.H, B4 = t4.B + u4. H, • determines <A, B>, <A, H> and <G, B> by solving a system of three equations with 3 unknowns ^: Si = rι.ti. <A, B> + Si. ti. <G, B> + rι.Ui. <A, H> + Si.Ui. <G, H>, for i varying from 1 to 3 • check the consistency of the previous coupling calculations by checking the equation: S4 = r4.t4. <A, B> + s4.t4. <G, B> + r4.u4. <A, H> + s4.u4. <G, H>,
La quatrième variante décrite précédemment nécessite pour le module sécurisé le calcul de plusieurs inverses modulaires, lors de la résolution du système de trois équations à trois inconnues.The fourth variant described above requires for the secure module the calculation of several modular inverses, when solving the system of three equations with three unknowns.
Selon un deuxième mode de réalisation, le module sécurisé peut sous-traiter le calcul d'un inverse modulaire au module non sécurisé, en procédant de la manière suivante, pour un nombre A dont le module sécurisé doit calculer l'inverse modulaire.According to a second embodiment, the secure module can subcontract the calculation of a modular inverse to the non-secure module, by proceeding as follows, for a number A for which the secure module must calculate the modular inverse.
Ce deuxième mode de réalisation est notamment intéressant pour des opérations sous-traitées f dont l'inverse 1/f est peu coûteuse à calculer pour le module sécurisé.This second embodiment is particularly advantageous for sub-contracted operations f whose inverse 1 / f is inexpensive to calculate for the secure module.
C'est le cas par exemple de l'opération f (A) = 1/A, dont l'inverse 1/f (A) est immédiat. Ainsi, dans cet exemple, pour vérifier l'exactitude du résultat S fourni par le
module non sécurisé, le module sécurisé multiplie simplement le nombre A au résultat fourni par le module non sécurisé.This is the case for example of the operation f (A) = 1 / A, the inverse of which 1 / f (A) is immediate. So, in this example, to check the accuracy of the result S provided by the non-secure module, the secure module simply multiplies the number A to the result provided by the non-secure module.
Si de plus le nombre A doit être masqué au module non sécurisé, alors le module sécurisé : • masque le nombre entier A en le multipliant par un nombre aléatoire a, • sous-traite au module non sécurisé la réalisation de l'inversion du nombre entier masqué a.A, • vérifie l'exactitude du résultat intermédiaire fourni par le module non sécurisé en multipliant le résultat intermédiaire l/(a.A) par le nombre entier A, • calcule le résultat attendu 1/ A en multipliant le résultat intermédiaire l/(a.A) par le nombre aléatoire a.If in addition the number A must be masked from the non-secure module, then the secure module: • masks the integer A by multiplying it by a random number a, • subcontracts to the non-secure module the realization of the inversion of the number masked integer aA, • checks the accuracy of the intermediate result provided by the insecure module by multiplying the intermediate result l / (aA) by the integer A, • calculates the expected result 1 / A by multiplying the intermediate result l / ( aA) by the random number a.
Là encore, l'intervention du module sécurisé est limitée à la réalisation de multiplications de nombres entiers.Here again, the intervention of the secure module is limited to the production of integer multiplications.
Le deuxième mode de réalisation de l'invention, qui permet une réalisation rapide d'une inversion peut être utilisé pour réaliser des opérations plus complexes comme par exemple une division de type B/A : le module sécurisé sous-traite avantageusement la réalisation de l'opération T = 1/A puis réalise ensuite l'opération S = B*T, beaucoup moins coûteuseThe second embodiment of the invention, which allows rapid completion of an inversion, can be used to carry out more complex operations such as, for example, a division of type B / A: the secure module advantageously subcontracts the realization of the operation T = 1 / A then performs the operation S = B * T, much less expensive
La mise en oeuvre d'une telle division peut être utilisée notamment pour résoudre des équations linéaires telles que celles que l'on peut être amené à résoudre lors de la réalisation d'une opération de couplage sur courbe elliptique selon l'invention.
The implementation of such a division can be used in particular for solving linear equations such as those which one may have to solve when carrying out a coupling operation on an elliptical curve according to the invention.