Elliptic Curve Cryptosystems (ECCs) constitute a new emerging class of public key cryptosystems, and have been widely applied in applications such as smart cards and embedded systems. The security of most ECCs is based upon the difficulty of solving a discrete logarithm problem based on a group of points on the elliptic curve. Where the elliptic curve is chosen correctly, the best of known methods configured for finding the discrete logarithm are of exponentially increasing difficulty. Thus, ECC exploits the fact that there is no sub-exponential method to solve the discrete logarithm problem on elliptic curves. Compared with other public key cryptosystem such as RSA, ECC uses shorter key sizes for the same level of security. This translates into fewer requirements on storage, memory, and computing power.
Unfortunately, conventional methods of operation in ECC are vulnerable to side-channel attacks. Side channel attacks measure observable parameters such as timings or power consumptions during cryptographic operations to deduce all or part of the secret information within the cryptosystem. For example, the comb method and other efficient point multiplication methods are vulnerable to power-analysis attacks. Power analysis attacks are based on an analysis of power consumed by a system. Information on the power used by a system assists the attacker to make assumptions on the operations performed by the system, and ultimately, to make guesses about secrets contained within the system.
Scalar multiplication, e.g. elliptic curve point multiplication, plays a critical role in ECCs. In fact, the method by which such multiplications are performed has a tremendous influence on whether different side-channel attacks are effective. Therefore, improved methods would result in safer ECCs.
Systems and methods configured for recoding an odd integer and for elliptic curve point multiplication are disclosed, having general utility and also specific application to elliptic curve point multiplication and cryptosystems. In one implementation, the recoding is performed by converting an odd integer k into a binary representation. The binary representation could be, for example, coefficients for powers of two representing the odd integer. The binary representation is then configured as comb bit-columns, wherein every bit-column is a signed odd integer. Another implementation applies this recoding method and discloses a variation of comb methods that computes elliptic curve point multiplication more efficiently and with less saved points than known comb methods. The disclosed point multiplication methods are then modified to be Simple Power Analysis (SPA)-resistant.
The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical items.
Overview
Recoding an odd integer and elliptic curve point multiplication, having general utility and specific application to elliptic curve cryptosystems, are disclosed. In one implementation, a signed odd-only recoding method is presented that converts an odd scalar into a signed, nonzero representation wherein every comb bit-column i is a signed odd integer. Another implementation applies this recoding method and discloses a variation of comb methods that computes elliptic curve point multiplication more efficiently and with less saved points than known comb methods. The disclosed point multiplication methods are then modified to be Simple Power Analysis (SPA)-resistant by exploiting the fact that point addition and point subtraction are virtually of the same computational complexity in elliptic curves systems. The disclosed SPA-resistant comb methods are configured to inherit a comb method's advantage—running much faster than other SPA-resistant window methods when pre-computation points are calculated in advance or elsewhere. Combined with the techniques that convert a SPA-resistant method into a DPA-resistant method, the disclosed SPA-resistant comb embodiments are secure to all side-channel attacks. Accordingly, implementations disclosed herein are of use generally, and are particularly adapted for use in smart card and embedded applications wherein power and computing resources are at a premium.
Preliminaries
Elliptic curve equations are a central feature of Elliptic Curve Cryptosystems (ECCs). An elliptic curve over a field K can be expressed by its Weierstrass form:
E: y+a1xy+a3y=x3+a2x2+a4x+a6, where ai ∈ F.
We denote by E(F) the set of points (x, y) ∈ F2 satisfying the above equation plus the “point at infinity” . With the chord-tangent process, E(F) forms an Ablelian group with the point at infinity as the zero. Let P1(x1, y1) and P2(x2, y2) be two finite points on E. The point addition P3(x3, y3)=P1+P2 is computed as follows:
The group E(F) generated by an elliptic curve over some finite field F meets the public key cryptography requirements that the discrete logarithm problem is very difficult to solve. Therefore, ECCs have been used in many standards and applications. In order to speed up cryptographic operations, projective coordinates are used to represent elliptic curve points. By using the Jacobian projective coordinates, the Weierstrass equation can be written in the form:
E: Y2+a1XYZ+a3YZ3=X3+a2X2Z2+a4XZ4+a6Z6.
The point at infinity is then represented by (θ2, θ3, 0) for all θ ∈ F*. An affine point (x, y) is represented by (θ2x, θ3y, θ) for all θ ∈ F* and a projective point (X, Y, Z)≠ corresponds to an affine point (X/Z2, Y/Z3). Using projective coordinates, point addition can be calculated without costly field inversions at the cost of more field multiplications. A field multiplication is usually much faster than a field inversion, resulting in faster elliptic curve point addition. A special point addition wherein a point is added to itself is called doubling. The cost of point doubling is usually different from the cost of general point addition.
Elliptic curves used in cryptography are elliptic curves defined over fields F2
E: y2+xy=x3+ax2+b
defined over F2
E: y2=x3+ax+b
defined over Fp, where p is a large prime. These equations simplify point addition and doubling, and may be referred to as the “short Weierstrass form”. In practical cryptographic applications, elliptic curves are usually required to have a subgroup of a large prime-order ρ. An elliptic curve cryptosystem typically employs only points in this ρ-order subgroup of E(F).
Adding a point P to itself k times is called scalar multiplication or point multiplication, and is denoted as Q=kP, where k is a positive integer. The simplest efficient method for scalar multiplication is the following double-and-add method that expands k into a binary representation.
with bi ∈ {0,1}. At block 104, the point Q is set initially to the point at infinity, i.e. we set Q=. At block 106, a loop is entered, such as a for-loop with index i. The loop counts down from i=n−1 to 0 by −1. Within the loop: at block 108 set Q=2Q; and at block 110, if (bi=1) then Q=Q+P. At block 112, the exemplary double-and-add method 100 of scalar multiplication returns Q, in the form Q=kP.
An integer k can be represented in a (binary) Signed Digit (SD) representation
where si ∈ {−1,0,1}. A special SD representation called Non-Adjacent Form (NAF) is of particular interest, where there are no adjacent non-zero digits, i.e. si×si+1=0 for all i≧0. Every integer k has a unique NAF, and the NAF has the lowest weight among all SD representations of k. The expected weight of an NAF of length n bits is n/3, as compared with the expected weight of n/2 for the binary representation. Elliptic curve point subtraction has virtually the same cost as point addition. Therefore, the add-and-subtract method 200 of
si ∈ {−1,0,1}. At block 204, the point Q is set initially at the point at infinity, i.e. set Q=. At block 206, a loop is entered, such as a for-loop with index i. The loop counts down from i=n−1 to 0 by −1. Within the loop: at block 208, set Q=2Q; at block 210, if (si==1) then Q=Q+P; and at block 212, if (s1==−1) then Q=Q−P. At block 214, return output Q, wherein Q=kP.
An integer k can be expanded into m-ary representation, where m is usually equal to 2w for some integer w≧2. The m-ary method 300 of
ai ∈ {0,1, . . . , m−1}. Blocks 304-308 represent the pre-computation stage. At block 304, set point P1=P. At block 306, a one-step loop is entered, such as a for-loop with index i. The loop counts from i=2 to m−i. Within the one-step loop: at block 306, set Pi=Pi−1+P. At block 308, the point Q is set initially at the point at infinity, i.e. set Q=. Blocks 310-314 represent an evaluation stage. At block 310, a loop is entered, such as a for-loop with index i. The loop counts down from i=d−1 to 0 by −1. Within the loop: at block 312, set Q=mQ, which requires w doublings; and at block 314, set Q=Q+Pa
The pre-computation stage in the m-ary method needs to store m−1≡2w−1 points, including the storage for the input point P. A storage estimation in this disclosure is made with the input of a point P. An estimate of the time cost for the method may be made. In the cost estimation, operations involving are not counted. The pre-computation stage needs to calculate 2P, 3P, . . . , [2w−1]P. Since the sum of doublings and additions remains the same, and since doubling is more efficient than addition with the projective coordinates that are typically used in applications, use of doubling operations is generally preferred at this stage. An efficient scheme is to calculate in the following way:
Using this scheme, the pre-computation costs (2w−1−1)D+(2w−1−1)A, where D means point doubling and A means point addition. As for the time cost for the evaluation stage, if an assumption is made that the most significant digit is not zero, i.e., ad−1≠0, then the number of doublings in this stage is w(d−1). If ai=0, then the addition in block 314 is not needed. If an assumption is made that k is uniformly distributed, then the average number of additions in the evaluation stage is
Therefore, the average time cost in the evaluation stage is approximately
and the average total time cost is approximately
Modification of m-ary methods can make them more efficient. For example, m-ary methods can also be extended to the sliding window methods. Comb methods are a further category of point multiplication methods. A comb method that can also efficiently calculate scalar multiplication is known. Let an n-bit integer
with bi ∈ {0,1}. For an integer w≧2, set
Then define: [bw−1, bw−2, . . . , b1, b0]≡bw−12(w−1)d+ . . . +b12d+b0, where (bw−1, bw−2, . . . b1, b0) ∈ Z2w. In a manner that is consistent with these calculations, the comb method 400 of
bi ∈ {0,1}, and a window width w≧2. A pre-computational stage is seen in blocks 404-408. At block 404, [bw−1, . . . b1, b0]P are computed for all (bw−1, bw−2, . . . b1, b0) ∈ Z2w. At block 406, determine k=Kw−1∥ . . . ∥K1∥K0, where each Kj is a bit-string of length d. It may be necessary to pad with one or more 0 (zero) on the left in this operation. Let Kij denote the i-th bit of Kj. Define i≡[Kiw−1, . . . , Ki1, Ki0]. At block 408, the point Q is set initially at the point at infinity, i.e. set Q=.
Blocks 410-414 represent an evaluation stage. At block 410 a loop is entered, such as a for-loop with index i. The loop counts down from i=d−1 to 0 by −1. Within the loop: at block 412, set Q=2Q; and at block 414, set Q=Q+i P. At block 416, return Q, wherein Q=kP.
The comb method stores 2w−1 points in the pre-computation stage. An estimate can be made of the time cost of the comb method. In the pre-computation stage, [bw−1, . . . , b1, b0]P needs to be calculated for (bw−1, . . . , b1, b0) ∈ Z2w. To achieve this, 2dP, 22dP, . . . , 2(w−1)dP are first calculated, which costs (w−1)d doubling operations. Then all possible combinations of only two nonzero bits in [bw−1, . . . , b1, b0]P are calculated from the results of doubling operations. There are Cw2 such combinations. Each combination uses one point addition. There are Cw2 point additions in this step. In the next step, all combinations with exactly three nonzero bits are calculated. There are Cw3 such combinations. Each needs one point addition from the previously calculated results. Therefore, this step costs Cw3 point additions. This procedure continues until all bits are nonzero. The total number of point additions in the pre-computation stage is therefore
And therefore, the time cost in the pre-computation stage is
{(w−1)d}D+{(2w−w−1)}A.
To estimate the time cost in the evaluation stage, we assume the most significant column of {i} is not zero, i.e., d−1≠0. Then the number of doubling operations in the evaluation stage is (d−1). If i=0, then the point addition in block 414 is not needed. If we assume k is uniformly distributed, the probability that i≠0 is
and the average number of point additions is
Therefore, the average time cost in the evaluation stage is approximately
This cost is much smaller than the time cost in the evaluation stage for the m-ary method, which is
as derived previously. This gain at the evaluation stage is at the cost of higher time cost at the pre-computation stage for the comb method. The total time cost of the comb method is
Side-Channel Attacks and Countermeasures
Two types of power analysis attacks are the Simple Power Analysis (SPA) and the Differential Power Analysis (DPA). The SPA analyzes a single trace of power consumption in a crypto-device during scalar multiplication. A branch instruction condition can be identified from the recorded power consumption data. This represents continuity of elliptic curve doubling operation. If the double-and-add method is used in calculating scalar multiplication, the value bi of each bit of the secret multiplier k is revealed by this attack. For scalar multiplication methods, though SPA cannot deduce the value for each digit si or ai for add-and-subtract or m-ary methods, or i in the comb method, it can detect if the digit or i is zero or not, which constitutes an information leak.
The DPA records many power traces of scalar multiplications, and uses correlation among the records and error correction techniques to deduce some or all digits of the secret k. DPA is more complex yet powerful than SPA. An SPA-resistant scalar multiplication method is not necessarily resistant to DPA attacks, however, many countermeasures can be used to transform an SPA-resistant method to a DPA-resistant method. A countermeasure is to make execution, and thus power consumption, different for identical inputs. Randomization is usually employed to achieve this effect. A number of randomizing approaches are feasible, including: randomizing input point in projective coordinates; randomizing exponential parameter representation; randomizing elliptic curve equation; and randomizing field representation. Additionally, each of these randomizing approaches can be applied to transform SPA-resistant methods disclosed herein to be resistant to DPA attacks.
To be effective, an ECC must provide countermeasures to SPA attacks. The particular approach of the implementations of the ECC disclosed herein is to make execution of scalar multiplication independent of any specific value of the multiplier k. For example, a simple way to make the double-and-add method resistant to SPA attacks is to remove the branching operation in the method so that the same operations are applied no matter bi is 0 or 1. Accordingly, a double-and-add-always method may be configured.
bi ∈ {0,1}. At block 504, the point Q0 is set initially at the point at infinity, i.e. set Q0=. At block 506, a loop is entered, such as a for-loop with index i. The loop counts down from i=n−1 to 0 by −1. Within the loop: at block 508, set Q0=2 Q0; at block 510, set Q1=Q0+P; and at block 512, set Q0=Qb
Another strategy to protect against SPA attack is to extend i in the comb method 400 of
(′i, si)=(i−1, si−1)
(′i−1, si−1)=(i−1, -si−1)
if Ki=0, and
(z,1 ′i, si)=(i, si−1)
(′i−1, si−1)=(i−1, si−1)
otherwise.
The comb method uses this signed representation to the conventional comb method to calculate (k+1)P for even k and (k+2)P for odd k. The point 2P is then calculated. The point P or 2P is subtracted from the result of the conventional comb method to obtain the desired point kP. The comb method has the same time and space cost as the original comb method has in the pre-computation stage, i.e., storage of 2w−1 points and {(w−1)d}D+{(2w−w−1)}A. The evaluation stage costs d−1 point additions and d−1 doublings. The last stage after the conventional comb method costs one doubling and one subtraction. Therefore the total cost is (w−1)d+(d−1)+1=wd doubling operations and (2w−w−1)+(d−1)+1=2w−w+d−1 adding operations. Compared with the method 400 of
A further SPA-resistant m-ary scalar multiplication method for an integer
with ai ∈ {0,1, . . . , 2w−1} first converts k to another representation
such that a′i ∈ {−2w,±1,±2, . . . ,±(2w−1−1), 2w−1} and d′ is either d or d+1. Intuitively, this recoding method replaces 0 digits by −2w and adjusts the next more significant digit to keep k unchanged. The recoding method is expressed recursively with two auxiliary values ci and ti, 0≦ci≦2 and 0≦ti≦2w+1. Set c0=0. Then, for i=0, . . . , d+1, let ti=ai+ci and
Note that the equation ci+1·2w+a′i=ti always holds.
After the conversion, this scalar multiplication method is exactly the same as the m-ary method 300 of
A further SPA-resistant odd-only m-ary scalar multiplication method is based on the idea of converting an odd integer
with ai ∈ {0,1, . . . , 2w−1} to another representation
such that a′i ∈ {±1,±3, . . . ,±(2w−1)}. This can be achieved with the following recoding method.
with ai ∈ {0,1, . . . , 2w−1}. At block 604, a loop is entered, such as a for-loop with index i. The loop counts from i=0 to d−1 by 1. Within the loop: at block 606, if ai is odd, then set a′i=ai; and at block 608, if ai is even, then set a′i=ai +1 and a′i−1−a′i−1−2w. At block 610, return output
with a′i ∈ {±1,±3, . . . ,±(2w−1)}.
Using this conversion, the m-ary method 300 of
Odd-Only Comb Method
An embodiment of an odd-only comb method includes significant advancements over known comb methods in ECCs. The odd-only comb embodiment transforms all the comb bit-columns {i≡[Kiw−1, . . . , Ki1 Ki1]} of a scalar k into a signed nonzero representation {′i≡[K′iw−1, . . . , K′i0 K′i0]≠0}. In a significant departure from known technology, every ′i generated is a signed odd integer. More specifically, the embodiment generates K′i0 ∈ {1,
Input to the method 700 includes an odd n-bit integer
with bi ∈ {0,1}. Output from the method includes
where each K′j is a binary string of d bits long, and padding with 0 on the left if necessary. Within
Referring to
with bi ∈ {0,1}. At block 704, a loop is entered, such as a for-loop with index i. The loop counts from i=0 to d−1 by 1. Within the loop: at block 706, if bi=1 then set b′i=1; and at block 708, if bi=0 then set b′i=1 and b′i−1=
and i=d. At block 712, a loop is entered, such as a while-loop with index i, configured to continue while i<wd. Within the loop: at block 714, the situation wherein e is odd and b′i mod d=
and at block 716, the alternative situation is addressed by setting b′i=e mod 2, and
At block 718, i is incremented by setting i=i+1. At block 720, the output
where each K′j is a binary string d bits long, having {b′i} as constituent bits, and padding with 0 on the left if necessary, is returned.
The method 700 first converts each bit of the last (i.e., the least significant) d bits to either 1 or
Therefore, the method 700 of
and for z,1 ′r, K′r1, K′r0 ∈ {1,
To prove
we first prove
This can be done by induction to prove
for 0≦j<d. The equation holds for j=0 since k is odd. If the equation is true for j−1<d, then Steps 2 and 3 in method 700 ensures that the equation is also true for j<d. By setting j=d−1, we have the desired equation.
Denote the value of e as ei when it comes into the i-th loop before block 714, where i>d. We assert that
is always true for i≧d. This can be done by induction. By using Eq. 2, we have
This proves that Eq. 3 holds for i=d. Assume Eq. 3 is true for i≧d. If ei is odd and b′i mod d=
and
The same procedure can be used to prove that
when ei is even or b′i mod d=1. This means that Eq. 3 is also true for i+1. Therefore Eq. 3 holds for i≧d.
The last thing we need to prove is ewd=0. Because k is an integer of n bits,
is an integer of n−d bits: ed<2n−d. We would like to use induction to prove that for n≧i≧d
e≦2n−i. (4)
We have already proved when i=d. Suppose it is true for i, n>i≧d. If ei is odd, the inequality implies that ei≦2n−i−1. In this case, blocks 714-716 give
i.e., Eq. 3 is true for i+1 in this case. If ei is even, then from block 716,
Eq. 3 still holds. In other words, Eq. 4 is true for i+1≦n. Therefore, Equation (4) is proved to be true for n≧i≧d. Eq. 4 derives that en≦20=1.
Since
we have n+1≦wd. If n+1=wd, then ewd−1≡en≦1. If n+1<wd, then from blocks 714-716,
Continuing with this process, we also have ewd−1≦1. In other words, we always have ewd−≦1. From blocks 706-708, we have b′d−1=1. When i=wd−1 in the loop of blocks 712-718, since b′wd−1 mod d=b′d−1=1, block 716 is executed, i.e.,
Applying this result to Eq. 3 yields the desired result,
The recoding method 700 of
If the least significant bit of ′i is
In practical ECC applications, only elliptic curve points in a subgroup with a large prime order ρ are actually used. In this case, the signed odd-only comb method 800 can be modified to remove the post-processing block 818 by exploiting that facts that ρ−k is odd for even k, and [ρ−k]P=−kP. This modified method is described in
In the recoding method 700 of
instead of
used in the original fixed base comb method 400 of
But if n is divisible by w, our method's d is one larger than the d used in method 400, i.e.,
Increasing d by one would lead to w−1 additional doublings in the pre-computation stage, and one additional addition and one additional doubling in the evaluation stage. Any additional operations are undesirable. Fortunately, most of the additional operations when n is divisible by w can be eliminated by thoughtful manipulation as described in the following modified comb method.
Due to block 1006, the value of d used in method 1000 is equivalent to
the same as the original comb method 400. Compared with method 800, method 1000 saves w−1 doublings in the pre-computation stage when n is divisible by w. In this case, one addition is also saved in the evaluation stage if k mod 4=2. More performance comparison of various methods will be given later in this specification.
Methods 800 and 1000 are not SPA-resistant. Even though all the comb bit-columns {′i} are nonzero in both methods, the value of the last bit of a scalar k is detectable in block 818 of
As we mentioned previously, in studying SPA-resistant methods a scalar is considered as an integer of ┌log2ρ┐ bits where ρ is the order of the point P. i.e., n=┌log2ρ┐ in method 700 of
then set k*=ρ−k, else set k*=k. At block 1208, if k* is even then set k′=k*+1, else set k′=k*+2. At block 1210, method 700 is applied to k′ to compute the corresponding comb bit-columns ′0, ′1, ′d−1. At block 1212, the point Q is set initially at the point at infinity, i.e. set Q=. An evaluation stage includes blocks 1214-1226. At block 1214, a loop is entered, such as a for-loop with index i. The loop counts down from i=d−1 to 0 by −1. Within the loop: at block 1216 set Q=2Q; and at block 1218, if
then set Q=Q−′iP else set Q=Q+′iP. At block 1220, set P2=2P. At block 1222, if
then set Δ=1 else set Δ=−1. At block 1224, if k* is even set Q=Q+Δ P else set Q=Q+Δ P2 . At block 1226, Q is returned as output where Q=kP.
Note that in method 1200 of
If not, we can set k′ to k*−1 for even k* and k*−2 for odd k* in block 1206 to achieve the desired result. In this case, block 1222 sets Δ to −1 for
and 1 otherwise.
Security of Operation
The security of the disclosed point multiplication methods against power analysis is discussed in this section. Security against SPA is addressed first, followed by description of how to transform the disclosed methods to resist DPA, second-order DPA, and other side channel attacks.
The comb methods 900, 1100, and 1200 exploit the fact that point subtraction is virtually the same as point addition for power analysis. In addition, the disclosed comb methods perform one point addition (or point subtraction) and one doubling at each loop in calculating point multiplication. This means that the same sequences are executed for all scalar k. Therefore SPA cannot extract any information about the secret k by examine the power consumption of the executions. In other words, comb methods 900, 1100, and 1200 are really SPA-resistant.
However, SPA-resistant point multiplication methods are not necessarily resistant to DPA attacks. Randomization projective coordinates or random isomorphic curves can be used to transform the disclosed methods into DPA-resistant methods.
Second-order DPA attacks might still be successfully applied to comb methods 900, 1100, and 1200 when the just-mentioned randomization schemes are used. Such second order attacks exploit the correlation between the power consumption and the hamming weight of the loaded data to determine which ′i is loaded. To thwart such second-order DPA attacks, a scheme to randomize all pre-computed points after getting the point in the table may be used, so that there is no fixed hamming weight.
A recently proposed DPA attack is a refinement attack on many randomization schemes. This attack employs special points with one of coordinates being zero. Such a DPA attack may be addressed by simply choosing elliptic curves E: y2=x3+ax+b defined over Fp (p>3) wherein b is not a quadratic residue of modulo p, and to reject any point (x, 0) as an input point in applications of the disclosed scalar multiplication methods. If the cardinality #E(Fp) is a big prime number, points (x, 0) cannot be eligible input points since they are not on elliptic curves. Combining with the aforementioned randomization techniques and measures, the disclosed comb methods can thwart all power-analysis attacks.
Efficiency of Operation
The comb methods 800-1200 require storage of 2w−1 points. In the pre-computation stage of these comb methods, 2d P, 22d P, . . . , 2(w−1)d P are first calculated. This costs (w−1)d point doublings. Then all possible combinations [bw−1, . . . , b2, b1, 1]P with (bw−1, . . , b2, b1)∈(Z2 )w−1 are calculated in the same way as the pre-computation stage for method 400 of
for method 800 of
for method 1000 of
A comparison can be made between the fixed-base comb methods 800, 900 and 1000 of
A comparison can be made between the disclosed SPA-resistant comb methods 900, 1100, and 1200 of
is one larger than n/w in this case, resulting in higher time cost.
A comparison of the SPA-resistant embodiments disclosed herein with other SPA-resistant point multiplication methods is instructive. The space and time costs for the two SPA-resistant m-ary scalar multiplication methods (one is an extended m-ary method that is SPA-resistant, and the other is an m-ary method using the recoding method 600 of
To make a point multiplication method resistant to SPA attacks, additional operations are needed to remove dependency of the cryptographic execution procedure on the specific value of k. This means that efficiency of a SPA-resistant method is lowered in general as compared to non-SPA-resistant method of a similar approach. The most efficient point multiplication method, if total cost in both pre-computation and evaluation stages combined is considered, is the signed m-ary window method that is not SPA-resistant. The space and time cost for the signed m-ary window method costs is listed in the first column of Table 3. This method requires fewer points to be stored yet runs faster than all SPA-resistant methods. The space and time penalty is of little consequence in many applications wherein security is the top priority. If only the evaluation stage is considered, the disclosed comb methods are faster than the signed m-ary window method.
The methods 800-1200 can be used in many ECC applications. They are particularly efficient if pre-computation can be computed in advance or by somebody else, which is the case in many applications. This section describes a couple of such application scenarios. One example is a system wherein a smart card is used to provide a tamper-resistant and secure environment to store secrets and execute critical cryptographic operations, while a separate, more powerful computing subsystem, is responsible for other operations. Cellular phones and wireless application protocol (WAP) devices are typical examples of such a system. In a cellular phone, the Subscriber Identification Module (SIM) card is a smart card to store securely critical subscriber's information and authentication and encryption methods responsible for providing legitimate access to the wireless network. The phone's CPU, memory, and storage are responsible for other operations. A Wireless Identity Module (WIM) card plays a similar role in a WAP device. In such a system, it may be possible to delegate the pre-computation to the more powerful device's CPU while using the smart card to execute the evaluation stage, if the computed points by the device's CPU are observable but not tamperable. Note that pre-computation does not contain any secrets unless the point itself is a secret.
The Elliptic Curve Digital Signature Algorithm (ECDSA) is another example. ECDSA is the elliptic curve analogue of the Digital Signature Algorithm (DSA) specified in a U.S. government standard called the Digital Signature Standard. ECDSA has been accepted in many standards. It includes signature generation and verification. Let P be a publicly known elliptic curve point and ρ be the prime order of the point P. A signature is generated and verified in the following way: ECDSA Signature Generation: To sign a message m, an entity A associated with a key pair (d, Q) executes the following steps:
For an ECDSA signature, P, ρ and r, s, e are public values. The scalar k has to be kept secret. Otherwise the private key d can be derived from the equation s=k−1(e+dr) mod ρ. Therefore, the private key d and the ECDSA signature generation must be securely stored and executed. This can be conveniently achieved with a smart card, which stores P's pre-computed points and uses a point multiplication method resistant to power analysis to calculate kP. The herein disclosed SPA-resistant comb methods are ideal for this application, since only the evaluation stage is executed in generating a signature. ECDSA signature verification, on the other hand, does not use any secret key. In verifying an ECDSA signature, the herein disclosed SPA-nonresistant comb methods can be used to compute u1P and the signed m-ary window method is used to compute u2Q. This is an efficient combination of point multiplication methods since P's pre-computation points can be calculated in advance, and a comb method is more efficient than other methods in this case. As a contrast, Q's pre-computation points cannot be calculated in advance since the public key Q varies from one entity to another. The signed m-ary window method is appropriate in this case.
Any of the methods described herein may be performed on a smart card, computer system or any digital processing device and/or component. For example, the methods may be performed by execution of instructions defined on a processor- and/or computer-readable medium. A “processor-readable medium,” as used herein, can be any means that can contain or store instructions for use by or execution by a processor, whether on a smart card, computer or any computing or calculating device and/or component. A processor-readable medium can be, without limitation, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or component. More specific examples of a processor-readable medium include, among others, memory components on a smart card, a portable computer diskette, a random access memory (RAM), a read-only memory (ROM), an erasable programmable-read-only memory (EPROM or Flash memory), optical and/or magnetic memory, a rewritable compact disc (CD-RW), and a portable compact disc read-only memory (CDROM).
While one or more methods have been disclosed by means of flow diagrams and text associated with the blocks of the flow diagrams, it is to be understood that the blocks do not necessarily have to be performed in the order in which they were presented, and that an alternative order may result in similar advantages. Furthermore, the methods are not exclusive and can be performed alone or in combination with one another.
Computer 1502 typically includes a variety of computer readable media. Such media can be any available media that is accessible by computer 1502 and includes both volatile and non-volatile media, removable and non-removable media. The system memory 1506 includes computer readable media in the form of volatile memory, such as random access memory (RAM) 1510, and/or non-volatile memory, such as read only memory (ROM) 1512. A basic input/output system (BIOS) 1514, containing the basic routines that help to transfer information between elements within computer 1502, such as during start-up, is stored in ROM 1512. RAM 1510 typically contains data and/or program modules that are immediately accessible to and/or presently operated on by the processing unit 1504.
Computer 1502 can also include other removable/non-removable, volatile/non-volatile computer storage media. By way of example,
The disk drives and their associated computer-readable media provide non-volatile storage of computer readable instructions, data structures, program modules, and other data for computer 1502. Although the example illustrates a hard disk 1516, a removable magnetic disk 1520, and a removable optical disk 1524, it is to be appreciated that other types of computer readable media which can store data that is accessible by a computer, such as magnetic cassettes or other magnetic storage devices, flash memory cards, CD-ROM, digital versatile disks (DVD) or other optical storage, random access memories (RAM), read only memories (ROM), electrically erasable programmable read-only memory (EEPROM), and the like, can also be utilized to implement the exemplary computing system and environment.
Any number of program modules can be stored on the hard disk 1516, magnetic disk 1520, optical disk 1524, ROM 1512, and/or RAM 1510, including by way of example, an operating system 1526, one or more application programs 1528, other program modules 1530, and program data 1532. Each of such operating system 1526, one or more application programs 1528, other program modules 1530, and program data 1532 (or some combination thereof) may include an embodiment of a caching scheme for user network access information.
Computer 1502 can include a variety of computer/processor readable media identified as communication media. Communication media typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
A user can enter commands and information into computer system 1502 via input devices such as a keyboard 1534 and a pointing device 1536 (e.g., a “mouse”). Other input and/or peripheral devices 1538 (not shown specifically) may include a smart card and/or smart card reader, microphone, joystick, game pad, satellite dish, serial port, scanner, and/or the like. These and other input devices are connected to the processing unit 1504 via input/output interfaces 1540 that are coupled to the system bus 1508, but may be connected by other interface and bus structures, such as a parallel port, game port, or a universal serial bus (USB).
A monitor 1542 or other type of display device can also be connected to the system bus 1508 via an interface, such as a video adapter 1544. In addition to the monitor 1542, other output peripheral devices can include components such as speakers (not shown) and a printer 1546 that can be connected to computer 1502 via the input/output interfaces 1540.
Computer 1502 can operate in a networked environment using logical connections to one or more remote computers, such as a remote computing device 1548. By way of example, the remote computing device 1548 can be a personal computer, portable computer, a server, a router, a network computer, a peer device or other common network node, and the like. The remote computing device 1548 is illustrated as a portable computer that can include many or all of the elements and features described herein relative to computer system 1502.
Logical connections between computer 1502 and the remote computer 1548 are depicted as a local area network (LAN) 1550 and a general wide area network (WAN) 1552. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet. When implemented in a LAN networking environment, the computer 1502 is connected to a local network 1550 via a network interface or adapter 1554. When implemented in a WAN networking environment, the computer 1502 typically includes a modem 1556 or other means for establishing communications over the wide network 1552. The modem 1556, which can be internal or external to computer 1502, can be connected to the system bus 1508 via the input/output interfaces 1540 or other appropriate mechanisms. It is to be appreciated that the illustrated network connections are exemplary and that other means of establishing communication link(s) between the computers 1502 and 1548 can be employed.
In a networked environment, such as that illustrated with computing environment 1500, program modules depicted relative to the computer 1502, or portions thereof, may be stored in a remote memory storage device. By way of example, remote application programs 1558 reside on a memory device of remote computer 1548. For purposes of illustration, application programs and other executable program components, such as the operating system, are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computer system 1502, and are executed by the data processor(s) of the computer.
A cellular phone 1560 having an internal smart card 1562 provides a further environment wherein the comb methods 800-1400 could be utilized. The cellular phone may be configured to communicate with the computer 1502, which may be associated with a cellular telephone carrier or service. In such an environment, the ECC methods could be used, for example, to establish the authenticity of the cell phone 1560 as a legitimate customer of the cellular service provider, in this case operating the computer 1502.
A novel signed odd-only comb recoding method 700 of
In closing, although aspects of this disclosure include language specifically describing structural and/or methodological features of preferred embodiments, it is to be understood that the appended claims are not limited to the specific features or acts described. Rather, the specific features and acts are disclosed only as exemplary implementations, and are representative of more general concepts. Furthermore, a number of features were described herein by first identifying exemplary problems that these features can address. This manner of explication does not constitute an admission that others have appreciated and/or articulated the problems in the manner specified herein. Appreciation and articulation of the problems present in the relevant arts are to be understood as part of the present invention. More specifically, there is no admission herein that the features described in the Background section of this disclosure constitute prior art. Further, the subject matter set forth in the Summary section and the Abstract of this disclosure do not limit the subject matter set forth in the claims.