Protecting ECC against fault attacks

10601578 ยท 2020-03-24

Assignee

Inventors

Cpc classification

International classification

Abstract

A method for protecting against faults in a computation of a point multiplication Q=[k]P on an elliptic curve E defined over a prime field custom character.sub.p, including: defining an integer r and a group custom character={(custom character)|custom charactercustom character/rcustom character} represented with elements having a group law that coincides with a group law used in the representation for E(custom character.sub.p) and isomorphic to an additive group (custom character/rcustom character).sup.+ through isomorphism ; forming a combined group E(custom character.sub.p)custom charactercustom characterE(custom character.sub.p)(custom character/rcustom character).sup.+ which is isomorphic to a cross product of the groups E(custom character.sub.p) and (custom character/rcustom character).sup.+; selecting an element custom character in custom character/rcustom character and defining an element P=(custom character) in group custom character; forming a combined element {circumflex over (P)}=CRT(P,P) in the group E(custom character.sub.p)custom character; calculating {circumflex over (Q)}=[k]{circumflex over (P)} in the combined group E(custom character.sub.p)custom character; calculating kcustom character in custom character/rcustom character; and checking whether {circumflex over (Q)}Q(mod r) where Q=(kcustom character).

Claims

1. A method for protecting against faults in a computation of a point multiplication Q=[k]P on an elliptic curve E defined over a prime field custom character.sub.p for an elliptic curve cryptographic function in a cryptographic system, comprising: receiving, by the cryptographic system, input data; performing, by the cryptographic system, the elliptic curve cryptographic function on the input data wherein the cryptographic function is one of encryption, decryption, digital signatures, secure key exchange, and generation of public certificates and the elliptic curve cryptographic function includes the computation of the point multiplication Q=[k]P on the elliptic curve E, the point multiplication further comprising: defining an integer r and a group custom character={(custom character)|custom charactercustom character/rcustom character} represented with elements having a group law that coincides with a group law used in the representation for E(custom character.sub.p) and isomorphic to an additive group (custom character/rcustom character).sup.+ through isomorphism ; forming a combined group E(custom character.sub.p)custom characterE(custom character.sub.p)(custom character/rcustom character).sup.+ which is isomorphic to a cross product of the groups E(custom character.sub.p) and (custom character/rcustom character).sup.+; selecting an element custom character in custom character/rcustom characterand defining an element P=(custom character) in group custom character; forming a combined element {circumflex over (P)}=CRT(P,P) in the group E(custom character.sub.p)custom character; calculating {circumflex over (Q)}=[k]{circumflex over (P)} in the combined group E(custom character.sub.p)custom character; calculating kcustom character in custom character/rcustom character; and checking whether {circumflex over (Q)}Q(mod r) where Q=(kcustom character) to indicate a fault in a point multiplication in the cryptographic function in the cryptographic system; and producing, by the cryptographic system, an output of the elliptic curve cryptographic function when no fault in the point multiplication is indicated.

2. The method of claim 1, wherein when {circumflex over (Q)}Q(mod r) output Q={circumflex over (Q)} mod p and otherwise return an error.

3. The method of claim 1, wherein custom character is a set of points (custom character,1) on a twisted Edwards curve.

4. The method of claim 1, wherein custom character is a set of points (custom character,1) on a Jacobi quartic curve.

5. The method of claim 1, wherein custom character is a set of points (custom character,1,1) on a Jacobi quadratics intersection curve.

6. The method of claim 1, wherein custom character is a set of points (custom character,1) on a Hessian curve.

7. The method of claim 1, wherein custom character is a set of points (custom character,ccustom character) on a Huff curve, where c is any value in custom character/rcustom character.

8. The method of claim 1, wherein custom character is a set of points (custom character:1:custom character.sup.3) on a Weierstrass curve.

9. A non-transitory machine-readable storage medium encoded with instructions for protecting against faults in a computation of a point multiplication Q=[k]P on an elliptic curve E defined over a prime field custom character.sub.p for an elliptic curve cryptographic function in a cryptographic system, comprising: instructions for receiving input data; instructions for performing the elliptic curve cryptographic function on the input data wherein the cryptographic function is one of encryption, decryption, digital signatures, secure key exchange, and generation of public certificates and the elliptic curve cryptographic function includes the computation of the point multiplication Q=[k]P on the elliptic curve E, the point multiplication further comprising: instructions for defining an integer r and a group custom character={(custom character)custom charactercustom character/rcustom character} represented with elements having a group law that coincides with a group law used in the representation for E(custom character.sub.p) and isomorphic to an additive group (custom character/rcustom character).sup.+ through isomorphism ; instructions for forming a combined group E(custom character.sub.p)custom characterE(custom character.sub.p)(custom character/rcustom character).sup.+ which is isomorphic to a cross product of the groups E(custom character.sub.p) and (custom character/rcustom character).sup.+; instructions for selecting an element custom character in custom character/rcustom characterand defining an element P=(custom character) in group custom character; instructions for forming a combined element {circumflex over (P)}=CRT(P,P) in the group E(custom character.sub.p)custom character; instructions for calculating {circumflex over (Q)}=[k]{circumflex over (P)} in the combined group E(custom character.sub.p)custom character; instructions for calculating kcustom character in custom character/rcustom character; and instructions for checking whether {circumflex over (Q)}Q(mod r) where Q=(kcustom character) to indicate a fault in a point multiplication in the cryptographic system; and instructions for producing an output of the elliptic curve cryptographic function when no fault in the point multiplication is indicated.

10. The non-transitory machine-readable storage medium of claim 9, wherein when {circumflex over (Q)}Q(mod r) output Q={circumflex over (Q)} mod p and otherwise return an error.

11. The non-transitory machine-readable storage medium of claim 9, wherein custom character is a set of points (custom character,1) on a twisted Edwards curve.

12. The non-transitory machine-readable storage medium of claim 9, wherein custom character is a set of points (custom character,1) on a Jacobi quartic curve.

13. The non-transitory machine-readable storage medium of claim 9, wherein custom character is a set of points (custom character,1,1) on a Jacobi quadratics intersection curve.

14. The non-transitory machine-readable storage medium of claim 9, wherein custom character is a set of points (custom character,1) on a Hessian curve.

15. The non-transitory machine-readable storage medium of claim 9, wherein custom character is a set of points (custom character,ccustom character) on a Huff curve, where c is any value in custom character/rcustom character.

16. The non-transitory machine-readable storage medium of claim 9, wherein custom character is a set of points (custom character:1:custom character.sup.3) on a Weierstrass curve.

17. A device for protecting against faults in a computation of a point multiplication Q=[k]P on an elliptic curve E defined over a prime field custom character.sub.p for an elliptic curve cryptographic function in a cryptographic system, comprising: a memory; and a processor in communication with the memory, the processor configured to: receive input data; perform the elliptic curve cryptographic function on the input data wherein the cryptographic function is one of encryption, decryption, digital signatures, secure key exchange, and generation of public certificates and the elliptic curve cryptographic function includes the computation of the point multiplication Q=[k]P on the elliptic curve E, the processor further configured to: define an integer r and a group custom character={(custom character)custom charactercustom character/rcustom character} represented with elements having a group law that coincides with a group law used in the representation for E(custom character.sub.p) and isomorphic to an additive group (custom character/rcustom character).sup.+ through isomorphism ; form a combined group E(custom character.sub.p)custom characterE(custom character.sub.p)(custom character/rcustom character).sup.+ which is isomorphic to a cross product of the groups E(custom character.sub.p) and (custom character/rcustom character).sup.+; select an element custom character in custom character/rcustom characterand defining an element P=(custom character) in group custom character; form a combined element {circumflex over (P)}=CRT(P,P) in the group E(custom character.sub.p)custom character; calculate {circumflex over (Q)}=[k]{circumflex over (P)} in the combined group E(custom character.sub.p)custom character; calculate kcustom character in custom character/rcustom character; and check whether {circumflex over (Q)}Q(mod r) where Q=(kcustom character) to indicate a fault in a point multiplication in the cryptographic system; and produce an output of the elliptic curve cryptographic function when no fault in the point multiplication is indicated.

18. The device of claim 17, wherein when {circumflex over (Q)}Q(mod r) output Q={circumflex over (Q)} mod p and otherwise return an error.

19. The device of claim 17, wherein custom character is a set of points (custom character,1) on a twisted Edwards curve.

20. The device of claim 17, wherein custom character is a set of points (custom character,1) on a Jacobi quartic curve.

21. The device of claim 17, wherein custom character is a set of points (custom character,1,1) on a Jacobi quadratics intersection curve.

22. The device of claim 17, wherein custom character is a set of points (custom character,1) on a Hessian curve.

23. The device of claim 17, wherein custom character is a set of points (custom character,ccustom character) on a Huff curve, where c is any value in custom character/rcustom character.

24. The device of claim 17, wherein custom character is a set of points (custom character:1:custom character.sup.3) on a Weierstrass curve.

Description

BRIEF DESCRIPTION OF THE DRAWINGS

(1) In order to better understand various exemplary embodiments, reference is made to the accompanying drawings, wherein:

(2) FIG. 1 illustrates a method for protecting against faults in the computation of a point multiplication Q=[k]P on an elliptic curve E defined over the prime field custom character.sub.p.

(3) To facilitate understanding, identical reference numerals have been used to designate elements having substantially the same or similar structure and/or substantially the same or similar function.

DETAILED DESCRIPTION

(4) The description and drawings illustrate the principles of the invention. It will thus be appreciated that those skilled in the art will be able to devise various arrangements that, although not explicitly described or shown herein, embody the principles of the invention and are included within its scope. Furthermore, all examples recited herein are principally intended expressly to be for pedagogical purposes to aid the reader in understanding the principles of the invention and the concepts contributed by the inventor(s) to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions. Additionally, the term, or, as used herein, refers to a non-exclusive or (i.e., and/or), unless otherwise indicated (e.g., or else or or in the alternative). Also, the various embodiments described herein are not necessarily mutually exclusive, as some embodiments can be combined with one or more other embodiments to form new embodiments.

(5) Elliptic curve cryptography (ECC) is an interesting alternative to Rivest-Shamir-Adleman (RSA) cryptography because the keys are much shorter for a same conjectured security level. Given a point P on an elliptic curve E and an integer k, the basic operation includes computing the scalar multiplication [k]P, that is, PP . . . P (k times) where denotes the group operation on E. The goal of an attacker is to recover the value of k (or a part thereof) by inducing faults.

(6) For RSA cryptographic systems, Shamir's countermeasure was developed. Shamir's countermeasure generalizes to elliptic curve scalar multiplication and is known as the Blomer-Otto-Seifert (BOS) countermeasure. The BOS countermeasure method is as follows.

(7) Suppose one has to compute Q=[k]P on an elliptic curve E defined over the prime field custom character.sub.p and given by the Weierstra equation y.sup.2=x.sup.3+ax+b. 1. For a (small) prime r, define an elliptic curve E over custom character.sub.r and a point P on E; 2. Form the combined curve =CRT(E,E) over custom character/rpcustom character and the combined point {circumflex over (P)}=CRT(P,P) (where CRT is the Chinese remainder theorem; whose application is defined below); 3. Compute {circumflex over (Q)}=[k]{circumflex over (P)} on ; 4. Compute Q=[k]P on E; 5. Check whether {circumflex over (Q)}Q (mod r), and if so, output Q={circumflex over (Q)} mod p; if not, return error.

(8) The following observations of the BOS countermeasure method are noted. If y.sup.2=x.sup.3+ax+b is the equation defining the elliptic curve E over custom character.sub.r, CRT(E,E) denotes the elliptic curve over custom character/rpcustom character given by the equation y.sup.2=x.sup.3+x+{circumflex over (b)} where =CRT(a(mod.sub.p), a(mod r)) and {circumflex over (b)}=CRT(b(mod p), b(mod r)); i.e., such that a(mod p) and a(mod r), and the same for {circumflex over (b)}. Point {circumflex over (P)} is defined similarly from the coordinates of points P and P.

(9) In a concrete implementation, prime r, curve E and point P are precomputed so that the order of point P on E, ord.sub.E(P), is maximal. The value of n:=ord.sub.E(P) together with r, the curve parameters, and point P may be stored in non-volatile memory. This presents the further advantage in that the calculation of Q in Step 4 of the BOS countermeasure method may be performed more efficiently as Q=[k mod n]P.

(10) In order to avoid a single point of failure, infective computation is preferred to implement the final test of Step 5 of the BOS countermeasure method. For example, for Step 5, one could perform the following steps instead: 5.1. compute c.sub.x=(x({circumflex over (Q)})+1x({circumflex over (Q)})) mod r and c.sub.y=(y({circumflex over (Q)})+1y(Q)) mod r, where x({circumflex over (Q)}) and y({circumflex over (Q)}) respectively denote the x- and y-coordinate of point {circumflex over (Q)} and similarly for point Q; 5.2. Choose a K-bit random integer and compute

(11) = .Math. c x + ( 2 - ) c y 2 .Math. ;
and 5.3. return Q=[]R on E where R={circumflex over (Q)} (mod p).
It can be checked that when {circumflex over (Q)}Q(mod r), c.sub.x and c.sub.y are both equal to 1, which leads to =1. Otherwise, is a random value and the returned point Q is a random point.

(12) As discussed above, the BOS fault countermeasure method requires the prior generation and storage of a prime r, an elliptic curve E over custom character.sub.r, and a point P on E of large order. For better performance, the order n of P should also be pre-stored.

(13) Another countermeasure is presented in Y.-J. Baek and I. Vasyltsov, How to prevent DPA and fault attacks in a unified way for ECC scalar multiplication: Ring extension method, in E. Dawson and D. Wong, editors, Information Security Practice and ExperienceISPEC 2007, volume 4464 of LNCS, pages 225-237. Springer, Heidelberg, 2006. Compared to J. Blmer, M. Otto, and J.-P. Seifert, Sign change fault attacks on elliptic curve cryptosystems, in L. Breveglieri et al., editors, Fault Diagnosis and Tolerance in CryptographyFDTC 2006, volume 4236 of LNCS, pages 36-52. Springer, Heidelberg, 2006, Baek-Vasyltsov does not require precomputed values and does not assume that the randomizer r is a prime integer. Numerical experiments conducted in M. Joye, On the security of a unified countermeasure, in L. Breveglieri et al., editors, 5th Workshop on Fault Diagnosis and Tolerance in Cryptography (FDTC 2008), pages 87-91. IEEE Computer Society, 2008, however show that a non-negligible proportion of faults is undetected and that larger bit-lengths for r should be used.

(14) More effective countermeasures are given in M. Joye, Edwards curves and fault attack, presented at the rump session of CRYPTO 2012, Santa Barbara, USA, Aug. 21, 2012, available at http://crypto.2012rump.cr.yp.to/ and S. Neves and M. Tibouchi, Degenerate curve attacksextending invalid curve attacks to Edwards curves and other models, in C.-M. Cheng, K.-M. Chung, G. Persiano, and B.-Y. Yang, editors, PKC 2016, Part II, volume 9615 of LNCS, pages 19-35, Springer, Heidelberg, March 2016. They essentially follow the same approach. The idea is to rely on a shortcut for the evaluation of Q=[k]P on E by an appropriate choice for E. In Joye, E is chosen as the subgroup of points on an elliptic curve over custom character/r.sup.2custom character that reduce to 0 modulo r. In Neves-Tibouchi, E is chosen as the group of points on a degenerate curve over custom character.sub.r.

(15) The method in Joye presents the disadvantage that fault attacks whose detection probability depends on the order of point P implies a twice longer value for r. Indeed, the subgroup of points considered in Joye for E has order r whereas the corresponding curve is defined modulo r.sup.2. In turn, the combined curve is defined over custom character/r.sup.2pcustom character, which is more demanding for the evaluation of {circumflex over (Q)} on .

(16) The combined curve in Neves-Tibouchi is defined over custom character/rpcustom character where r is prime. However, most elliptic curve models (the Weierstra model is a notable exception) do not have an additive degeneration: they either degenerate to the (r1)-order multiplicative group custom character.sub.r* or to the (r+1)-order multiplicative subgroup T.sub.2(custom character.sub.r) of elements of norm 1 in custom character.sub.r.sub.2*it is noted that unlike Joye, Neves-Tibouchi assumes that r is prime. The multiplicative degeneration has two drawbacks. First, the shortcut function translates into an exponentiation modulo r (degeneration to custom character.sub.r*) or into the evaluation of Lucas sequences modulo r (degeneration to T.sub.2(custom character.sub.r)). Second, whereas it is easy to obtain a generator of the additive group (custom character/rcustom character).sup.+, for custom character.sub.r* and T.sub.2(custom character.sub.r), the respective factorization of r1 or of r+1 is required. An easy fix is to increase the size of r so as to increase the probability that the order of P as an element of the degenerate curve E is large. The limitation on r being a (large) prime incurs computational complexity as r needs to be tested for primality.

(17) Embodiments for more efficiently implementing a countermeasure method against faults for ECC versus the BOS countermeasure method will now be described. As aforementioned, obtaining a generator of the additive group (custom character/rcustom character).sup.+ is fairly easy: any non-zero integer co-prime to r generates (custom character/rcustom character).sup.+. Two possible strategies are: 1. Take 1 as a generator or fix a prime g larger that the maximum value for r. Then (custom character/rcustom character).sup.+=custom character1custom character or (custom character/rcustom character).sup.+=custom charactergcustom character. 2. Select r as a prime number. Then any non-zero integer 0<g<r is a generator of (custom character/rcustom character).sup.+.

(18) The idea of the embodiment is to replace the combined curve in the BOS countermeasure by the group
E(custom character.sub.p)custom characterE(custom character.sub.p)(custom character/rcustom character).sup.+
which is isomorphic to the cross product of the groups E(custom character.sub.p) and (custom character/rcustom character).sup.+ and where the group custom character is represented with elements having a group law that coincides (i.e., is compatible) with the group law used in the representation for E(custom character.sub.p). Such a representation for custom character={P=(custom character)|custom charactercustom character/rcustom character} where

(19) : ( / r ) + .fwdarw. �� , { 0 ( 0 ) = 0 ( ) = P
can easily be identified from the group law in E. This is illustrated in the next paragraphs with several elliptic curve models commonly used for cryptographic applications.

(20) Because custom character is selected such that (custom character.sub.1)(custom character.sub.2)=(custom character.sub.1+custom character.sub.2), this means that k(custom character)=(kcustom character)=kP. This means that instead of calculating kP as a series of point additions on an elliptic curve as in the BOS method, the verification for the presence of faults can be performed from the calculation of kcustom character. Because calculating kcustom character is a simple arithmetic multiplication modulo integer r, it is a much more efficient calculation versus the point multiplication in the BOS method. Accordingly, Step 4 of the BOS method may be replaced by a much more efficient operation.

(21) This method is fully generic and can readily be adapted to any elliptic curve model and corresponding addition formulas. Also, although focusing on protecting elliptic curve computations over prime fields for the sake of concreteness, this method can be generalized to elliptic curve computations over arbitrary rings, including over binary fields.

(22) FIG. 1 illustrates a method for protecting against faults in the computation of a point multiplication Q=[k]P on an elliptic curve E defined over the prime field custom character.sub.p. The method 100 starts 105, and then defines an integer r and a group custom character={(custom character)|custom charactercustom character/rcustom character} 110 represented with elements having a group law that coincides with the group law used in the representation for E(custom character.sub.p) and isomorphic to the additive group (custom character/rcustom character).sup.+ through isomorphism . Next, the method 100 forms the combined group E(custom character.sub.p)custom characterE(custom character.sub.p)(custom character/rcustom character).sup.+ which is isomorphic to the cross product of the groups E(custom character.sub.p) and (custom character/rcustom character).sup.+ 115. Then the method 100 selects an element custom character in custom character/rcustom character and defines the element P=(custom character) in group custom character 120. Next, the method 100 forms the combined element {circumflex over (P)}=CRT(P,P) in the group E(custom character.sub.p)custom character 125. The method 100 then calculates {circumflex over (Q)}=[k]{circumflex over (P)} in the combined group E(custom character.sub.p)G 130. Next, the method 100, calculates kcustom character in custom character/rcustom character 135. The method then checks whether {circumflex over (Q)}Q(mod r) where Q=(kcustom character) 140, and if so, output Q={circumflex over (Q)} mod p 145, and if not, return an error 150. The method then ends at 155.

(23) Application of the above method will now be described for various elliptic curves that are used as the basis for ECC.

(24) One elliptic curve to consider is a normal form for elliptic curves in a twisted form that is referred to as the twisted Edwards form. The twisted Edwards form, is given by the equation:
E.sub..sub.a,d:ax.sup.2+y.sup.2=1+dx.sup.2y.sup.2.(1)
The neutral element for this curve is O=(0,1). The addition law is unified. Given two points (x.sub.1,y.sub.1) and (x.sub.2,y.sub.2), their sum (x.sub.3,y.sub.3)=(x.sub.1,y.sub.1)(x.sub.2,y.sub.2) is given by:

(25) ( x 3 , y 3 ) = ( x 1 y 2 + x 2 y 1 1 + dx 1 x 2 y 1 y 2 , y 1 y 2 - ax 1 x 2 1 - dx 1 x 2 y 1 y 2 ) .

(26) Applying the general method above to the twisted Edwards form results in:
(custom character/rcustom character).sup.+custom charactercustom character={(custom character)=(custom character,1)|custom charactercustom character/rcustom character}{(x,y)E.sub..sub.0,0(custom character/rcustom character)}.

(27) In more detail, the group (custom character/rcustom character).sup.+ is viewed as the set custom character of points (x,1) on an Edwards curve (1) with parameters a=d=0, over the ring custom character/rcustom character, equipped with the above addition law. When a=d=0, it is easily verified that:

(28) ( 0 ) = ( 0 , 1 ) = O , and ( 1 ) ( 2 ) = ( 1 , 1 ) ( 2 , 1 ) = ( 1 .Math. 1 + 2 .Math. 1 1 , 1 .Math. 1 1 ) = ( 1 + 2 , 1 ) = ( 1 + 2 )
as desired.

(29) Another elliptic curve to consider is the Jacobi quartic model. The (extended) Jacobi quartic model assumes an element of order 2. Its equation is given by:
E.sub.J.sub.a,d:y.sup.2=dx.sup.4+2ax.sup.2+1(2)
with O=(0,1) as the neutral element. The unified addition of two points (x.sub.1,y.sub.1) and (x.sub.2,y.sub.2), (x.sub.3,y.sub.3)=(x.sub.1,y.sub.1)(x.sub.2,y.sub.2), is given by:

(30) ( x 3 , y 3 ) = ( x 1 y 2 + x 2 y 1 1 - dx 1 2 x 2 2 , ( 1 + dx 1 2 x 2 2 ) ( y 1 y 2 + 2 ax 1 x 2 ) + 2 dx 1 x 2 ( x 1 2 + x 2 2 ) ( 1 - dx 1 2 x 2 2 ) 2 ) .
The original Jacobi quartics correspond to the case d=k.sup.2 and 2a=1+k.sup.2 for some k.

(31) Applying the general method above using the Jacobi quartic model results in:
(custom character/rcustom character).sup.+custom character={(custom character)=(custom charactercustom character,rcustom character}{(x,y)E.sub.J.sub.0,0(custom character/rcustom character)}.
As it was for the Edwards model, it is readily verified for the Jacobi quartic model that (0)=(0,1)=O and, when a=d=0, that

(32) ( 1 ) ( 2 ) = ( 1 , 1 ) ( 2 , 1 ) = ( 1 .Math. 1 + 2 .Math. 1 1 , 1 .Math. 1 1 2 ) = ( 1 + 2 , 1 ) = ( 1 + 2 )
as desired.

(33) Another elliptic curve to consider is the Jacobi quadratics intersection model which represents an elliptic curve as the intersection of two quadrics in custom character.sup.3. The most general form is as follows:

(34) E Q a , b : { ax 2 + y 2 = 1 bx 2 + z 2 = 1 . ( 3 )
The neutral element is O=(0,1,1). The unified sum of two points (x.sub.1,y.sub.1,z.sub.1) and (x.sub.2,y.sub.2,z.sub.2) is given by (x.sub.3,y.sub.2,z.sub.3)=(x.sub.1,y.sub.1,z.sub.1)(x.sub.2,y.sub.2,z.sub.2) where:

(35) ( x 3 , y 3 , z 3 ) = ( x 1 y 2 z 2 + x 2 y 1 z 1 1 - abx 1 2 x 2 2 , y 1 y 2 - ax 1 z 1 x 2 z 2 1 - abx 1 2 x 2 2 , z 1 z 2 - bx 1 y 1 x 2 y 2 1 - abx 1 2 x 2 2 ) .

(36) Applying the general method above using the Jacobi quadrics intersection model results in:
(custom character/rcustom character).sup.+custom character={(custom character)=(custom character,1,1)|custom charactercustom character/rcustom character}{(x,y,z)E.sub.Q.sub.0,0(custom character/rcustom character)}.

(37) A simple calculation shows that (0)=(0,1,1)=O and, when a=b=0, that

(38) ( 1 ) ( 2 ) = ( 1 , 1 , 1 ) ( 2 , 1 , 1 ) = ( 1 .Math. 1 .Math. 1 + 2 .Math. 1 .Math. 1 1 , 1 .Math. 1 1 , 1 .Math. 1 1 ) = ( 1 + 2 , 1 , 1 ) = ( 1 + 2 )
as desired.

(39) Another elliptic curve to consider are the Hessian curves. Hessian curves have been generalized, modified, and extended for cryptographic applications. Using for the neutral element the point O=(0,1), the curve equation is:
custom character:ax.sup.3+y.sup.3+1=dxy.(4)
The unified sum (x.sub.3,y.sub.3)=y.sub.1)(x.sub.2,y.sub.2) of two affine points (x.sub.1,y.sub.1) and (x.sub.2,y.sub.2) is given by:

(40) 0 ( x 3 , y 3 ) = ( x 1 - y 1 2 x 2 y 2 ax 1 y 1 x 2 2 - y 2 , y 1 y 2 2 - ax 1 2 x 2 ax 1 y 1 x 2 2 - y 2 ) .

(41) Applying the general method above using the Hessian curve above results in:

(42) ( / r ) + = { ) = ( , - 1 ) .Math. / r } .Math. { ( x , y ) E 0 , 0 ( / r ) } .

(43) Again, it can be verified that (0)=(0, 1)=0 and that the addition law when a=d=0 yields

(44) ( 1 ) ( 2 ) = ( 1 , - 1 ) ( 2 , - 1 ) = ( 1 - ( - 1 ) 2 2 ( - 1 ) - ( - 1 ) , ( - 1 ) ( - 1 ) 2 - ( - 1 ) ) = ( 1 + 2 , - 1 ) = ( 1 + 2 )
as desired.

(45) Another elliptic curve to consider are the Huff curves. The most general form is given by the equation:
E.sub.H.sub.a,c,d:y(ax.sup.2+1)=cx(dy.sup.2+1)(5)
with neutral element O=(0,0). The unified addition formula of affine points (x.sub.1,y.sub.1) and (x.sub.2,y.sub.2) is given by (x.sub.3,y.sub.3)=y.sub.1)(x.sub.2,y.sub.2) where:

(46) ( x 3 , y 3 ) = ( ( x 1 + x 2 ) ( 1 - dy 1 y 2 ) ( 1 - ax 1 x 2 ) ( 1 + dy 1 y 2 ) , ( y 1 + y 2 ) ( 1 - ax 1 x 2 ) ( 1 + ay 1 y 2 ) ( 1 - dx 1 x 2 ) )

(47) Applying the general method above using the Huff curve above and by fixing ccustom character/rcustom character. results in:
(custom character/rcustom character).sup.+custom charactercustom character={(custom character)=(custom character,c.Math.custom character)|custom charactercustom character/rcustom character}={(x,y)E.sub.H.sub.0,c,0(custom character/rcustom character)}.

(48) The correctness is verified by observing that (0)=(0,0)=0 and, when (a,c,d)=(0,c, 0), the addition law leads to (custom character.sub.1)(custom character.sub.2)=(custom character.sub.1,c.Math.custom character.sub.1)(custom character.sub.2,c.Math.custom character.sub.2)=(custom character.sub.1+custom character.sub.2,c.Math.custom character.sub.1+c.Math.custom character.sub.2)=(custom character.sub.1+custom character.sub.2) as desired.

(49) The Weierstrass model is the most common way to represent an elliptic curve. It is given by the equation:
E.sub.W.sub.a,b:y.sup.2=x.sup.3+ax+b,(6)
or using projective coordinates it is given as:
E.sub.W.sub.a,b:Y.sup.2Z=X.sup.3aXZ.sup.2+bZ.sup.3.(7)
The neutral element is the point at infinity O=(0:1:0). Unified addition formulas are given by

(50) { X 3 = ( Y 1 Z 2 + Y 2 Z 1 ) [ a ( aZ 1 Z 2 - X 1 X 2 ) - 3 b ( X 1 Z 2 + X 2 Z 1 ) ] + ( X 1 Y 2 + X 2 Y 1 ) [ Y 1 Y 2 - a ( X 1 Z 2 + X 2 Z 1 ) - 3 bZ 1 Z 2 ] Y 3 = ( X 1 Z 2 + X 2 Z 1 ) [ 3 b ( 3 X 1 X 2 - aZ 1 Z 2 ) - a 2 ( X 1 Z 2 + X 2 Z 1 ) ] + ( Y 1 Y 2 + 3 bZ 1 Z 2 ) ( Y 1 Y 2 - 3 bZ 1 Z 2 ) - a [ ( aZ 1 Z 2 + 3 X 1 X 2 ) ( aZ 1 Z 2 - X 2 X 2 ) ] Z 3 = ( X 1 Y 2 + X 2 Y 1 ) ( aZ 1 Z 2 + 3 X 1 X 2 ) + ( Y 1 Z 2 + Y 2 Z 1 ) [ Y 1 Y 2 + 3 bZ 1 Z 2 + a ( X 1 Z 2 + X 2 Z 1 ) ] .

(51) Applying the general method above using the Hessian curve above results in:
(custom character/rcustom character).sup.+custom charactercustom character={(custom character)=(custom character:1:custom character.sup.3)|custom charactercustom character/rcustom character}{(X:Y:Z)E.sub.W.sub.0,0(custom character/rcustom character)}.

(52) Here again, it can be verified that (0)=(0:1:0)=O and, when a=b=0, that the above addition formulas yield (custom character.sub.1)(custom character.sub.2)=(custom character.sub.1:1:custom character.sub.1.sup.3)(custom character.sub.2:1:custom character.sub.2.sup.3)=(custom character.sub.1+custom character.sub.2:1:(custom character.sub.1+custom character.sub.2)3custom character.sub.1custom character.sub.2+custom character.sub.1.sup.3+custom character.sub.2.sup.3)=(custom character.sub.1+custom character.sub.2:1:(custom character.sub.1+custom character.sub.2).sup.3)=(custom character.sub.1+custom character.sub.2) as desired.

(53) The above embodiments list unified addition formulas; that is, the formulas remain valid when the input points are equal (point doubling). Depending on certain conditions (e.g., field characteristic or curve parameters), the formulas are even complete; that is, they can be used without any exception. It is worth noting that in all the previous embodiments the addition formulas are complete in custom character. The identity (custom character.sub.1)(custom character.sub.2)=(custom character.sub.1+custom character.sub.2) is always verified. This implies that randomizer r can be used freely in the proposed method; in particular, it is not required to be prime.

(54) The methods described above may be implemented in software which includes instructions for execution by a processor stored on a non-transitory machine-readable storage medium. The processor may include a memory that stores the instructions for execution by the processor.

(55) Any combination of specific software running on a processor to implement the embodiments of the invention, constitute a specific dedicated machine.

(56) As used herein, the term non-transitory machine-readable storage medium will be understood to exclude a transitory propagation signal but to include all forms of volatile and non-volatile memory. Further, as used herein, the term processor will be understood to encompass a variety of devices such as microprocessors, field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), and other similar processing devices. When software is implemented on the processor, the combination becomes a single specific machine.

(57) It should be appreciated by those skilled in the art that any block diagrams herein represent conceptual views of illustrative circuitry embodying the principles of the invention.

(58) Although the various exemplary embodiments have been described in detail with particular reference to certain exemplary aspects thereof, it should be understood that the invention is capable of other embodiments and its details are capable of modifications in various obvious respects. As is readily apparent to those skilled in the art, variations and modifications can be effected while remaining within the spirit and scope of the invention. Accordingly, the foregoing disclosure, description, and figures are for illustrative purposes only and do not in any way limit the invention, which is defined only by the claims.