- •Guide to Elliptic Curve Cryptography
- •Contents
- •List of Algorithms
- •List of Tables
- •List of Figures
- •Acronyms
- •Preface
- •1 Introduction and Overview
- •1.1 Cryptography basics
- •1.2.3 Elliptic curve systems
- •1.3 Why elliptic curve cryptography?
- •1.4 Roadmap
- •2 Finite Field Arithmetic
- •2.2.1 Addition and subtraction
- •2.2.2 Integer multiplication
- •2.2.3 Integer squaring
- •2.2.4 Reduction
- •2.2.5 Inversion
- •2.3.1 Addition
- •2.3.2 Multiplication
- •2.3.3 Polynomial multiplication
- •2.3.4 Polynomial squaring
- •2.3.5 Reduction
- •2.4.1 Addition and subtraction
- •2.4.2 Multiplication and reduction
- •2.4.3 Inversion
- •3 Elliptic Curve Arithmetic
- •3.1 Introduction to elliptic curves
- •3.1.2 Group law
- •3.1.3 Group order
- •3.1.4 Group structure
- •3.2.1 Projective coordinates
- •3.3 Point multiplication
- •3.3.1 Unknown point
- •3.3.2 Fixed point
- •3.3.3 Multiple point multiplication
- •3.4 Koblitz curves
- •3.4.1 The Frobenius map and the ring Z[τ ]
- •3.4.2 Point multiplication
- •3.6 Point multiplication using halving
- •3.6.1 Point halving
- •3.6.3 Point multiplication
- •3.7 Point multiplication costs
- •4 Cryptographic Protocols
- •4.1 The elliptic curve discrete logarithm problem
- •4.2.3 Determining the number of points on an elliptic curve
- •4.4 Signature schemes
- •4.4.1 ECDSA
- •4.4.2 EC-KCDSA
- •4.5.1 ECIES
- •4.5.2 PSEC
- •4.6.1 Station-to-station
- •4.6.2 ECMQV
- •5 Implementation Issues
- •5.1 Software implementation
- •5.1.1 Integer arithmetic
- •5.1.5 Timings
- •5.2 Hardware implementation
- •5.3 Secure implementation
- •5.3.1 Power analysis attacks
- •5.3.2 Electromagnetic analysis attacks
- •5.3.4 Fault analysis attacks
- •5.3.5 Timing attacks
- •A.1 Irreducible polynomials
- •A.2 Elliptic curves
- •A.2.2 Random elliptic curves over F2m
- •A.2.3 Koblitz elliptic curves over F2m
- •C.1 General-purpose tools
- •C.2 Libraries
- •Bibliography
- •Index
|
|
|
3.6. Point multiplication using halving |
137 |
Thus, the |
product √ |
|
· codd requires two shift-left operations and one modular |
|
z |
||||
reduction. |
|
|
|
|
Now suppose k is even. Observe that zm ≡ zk + 1 (mod f (z)). Then dividing by
zm−1 and taking the square root, we get |
+ 1) (mod f (z)). |
|||
√z ≡ z− m2−1 |
(z 2 |
|||
|
|
|
k |
|
In order to compute z−s modulo f (z), where s = m2−1 , one can use the congruences z−t ≡ zk−t + zm−t (mod f (z)) for 1 ≤ t ≤ k for writing z−s as a sum of few positive powers of z. Hence, the product √z · codd can be performed with few shift-left operations and one modular reduction.
Example 3.88 (square roots in F2409 ) The reduction polynomial for the NIST recommended finite field F2409 is the trinomial f (z) = z409 + z87 + 1. Then, the new formula
for computing the square root of c F2409 is
√c = ceven + z205 · codd + z44 · codd mod f (z).
Example 3.89 (square roots in F2233 ) The reduction polynomial for the NIST recom-
mended finite field F 233 is the trinomial f (z) = z233 + z74 + 1. Since k = 74 is even,
√ = − 2 · + − ≡ +
we have z z 116 (z37 1) mod f (z). Note that z 74 1 z159 (mod f (z)) and z−42 ≡ z32 + z191 (mod f (z)). Then one gets that z−116 ≡ z32 + z117 + z191
(mod f (z)). Hence, the new method for computing the square root of c F2233 is
√c = ceven + (z32 + z117 + z191)(z37 + 1) · codd mod f (z).
Compared to the standard method of computing square roots, the proposed technique eliminates the need of storage and replaces the required field multiplication by a faster operation. Experimentally, finding a root in Example 3.89 requires roughly 1/8 the time of a field multiplication.
3.6.3Point multiplication
Halve-and-add variants of the point multiplication methods discussed in §3.3 replace most point doublings with halvings. Depending on the application, it may be necessary to convert a given integer k = (kt−1, . . . , k0)2 for use with halving-based methods. If k is defined by
|
|
|
|
k ≡ kt−1/2t−1 + · · · + k2/22 + k1/2 + k0 (mod n) |
||
then k P |
= |
|
t−1 k /2i |
P; i.e., (k |
, . . . , k ) is used by halving-based methods. This |
|
|
|
|
i=0 i |
t−1 |
0 |
|
can be |
generalized to width-w NAF. |
|
||||
|
|
|
|
|
|
138 |
3. Elliptic Curve Arithmetic |
|
|
|
|
|
|
|
|
||||||||
|
|
t |
|
|
|
be the w-NAF representation of 2t−1k mod n. Then |
|
||||||||||
Lemma 3.90 Let i=0 ki 2i |
|
|
|||||||||||||||
|
|
|
|
|
|
|
t−1 |
k |
|
|
|
|
|
|
|
||
|
|
|
|
k |
≡ |
|
|
t−1−i |
+ |
2k |
(mod n). |
|
|||||
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
i=0 |
2i |
t |
|
|
|
|
||||||
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
|||
Proof: We have 2t−1k |
≡ |
= |
0 |
k 2i (mod n). Since n is prime, the congruence can be |
|||||||||||||
|
|
|
i |
i |
|
|
|
|
|
|
|
|
|||||
divided by 2t−1 to obtain |
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
t |
|
k |
t−1 |
|
k |
|
|
|
|
|
|||
|
|
|
|
|
|
|
i |
|
|
|
t−1−i |
|
2k |
|
|
||
|
k |
≡ |
|
|
|
|
|
|
≡ |
|
+ |
(mod n). |
|||||
|
|
|
2t−1−i |
|
|
2i |
t |
|
|||||||||
|
|
|
i=0 |
|
|
|
|
|
i=0 |
|
|
|
|
|
|
|
Algorithm 3.91 presents a right-to-left version of the halve-and-add method with the input 2t−1k mod n represented in w-NAF. Point halving occurs on the input P rather than on accumulators. Note that the coefficient kt is handled separately in step 2 as it corresponds to the special term 2kt in k. The expected running time is approximately
(step 4 cost) + (t/(w + 1) − 2w−2) A + t H |
(3.44) |
where H denotes a point halving and A is the cost of a point addition when one of the inputs is in λ-representation. If projective coordinates are used for Qi , then the additions in steps 3.1 and 3.2 are mixed-coordinate. Step 4 may be performed by conversion of Qi to affine (with cost I + (5 · 2w−2 − 3)M if inverses are obtained by a simultaneous method), and then the sum is obtained by interleaving with appropriate signed-digit representations of the odd multipliers i. The cost of step 4 for 2 ≤ w ≤ 5 is approximately w − 2 point doublings and 0, 2, 6, or 16 point additions, respectively.3
Algorithm 3.91 Halve-and-add w-NAF (right-to-left) point multiplication
INPUT: Window width w, NAFw (2t−1k mod n) |
= |
|
t |
|
k |
2i |
, P |
G |
. |
||||||||||
O |
|
: k P. (Note: k = k0 |
t |
− |
1 |
+ · · · + kt |
|
|
|
i=0 |
|
i |
|
t |
|
|
|||
UTPUT |
/2 |
|
|
2/2 + t |
|
1 + |
2k |
mod n.) |
|||||||||||
|
|
|
|
|
|
− |
|
k |
− |
|
|
|
1.Set Qi ← ∞ for i I = {1, 3, . . . , 2w−1 − 1}.
2.If kt = 1 then Q1 = 2P.
3.For i from t − 1 downto 0 do:
3.1If ki > 0 then Qki ← Qki + P.
3.2If ki < 0 then Q−ki ← Q−ki − P.
3.3P ← P/2.
4.Q ← i I i Qi .
5.Return(Q).
3Knuth suggests calculating Qi ← Qi + Qi+2 for i from 2w−1−3 to 1, and then the result is given by Q1 + 2 i I \{1} Qi . The cost is comparable in the projective point case.
3.6. Point multiplication using halving |
139 |
Consider the case w = 2. The expected running time of Algorithm 3.91 is then approximately (1/3)t A + t H . If affine coordinates are used, then a point halving costs approximately 2M, while a point addition costs 2M + V since the λ-representation of P must be converted to affine with one field multiplication. It follows that the field operation count with affine coordinates is approximately (8/3)t M + (1/3)t V . However, if Q is stored in projective coordinates, then a point addition requires 9M. The field operation count of a mixed-coordinate Algorithm 3.91 with w = 2 is then approximately 5t M + (2M + I ).
Algorithm 3.92 is a left-to-right method. Point halving occurs on the accumulator Q, whence projective coordinates cannot be used. The expected running time is approximately
|
|
|
|
|
(D + (2w−2 − 1) A) + (t/(w + 1) A + t H ). |
|
(3.45) |
||||||||||||||
|
|||||||||||||||||||||
Algorithm 3.92 Halve-and-add w-NAF (left-to-right) point multiplication |
|||||||||||||||||||||
|
|
|
|
|
|
|
|||||||||||||||
INPUT: Window width w, NAFw (2t−1k mod n) |
= |
t |
k |
2i , P |
G |
. |
|||||||||||||||
O |
|
|
|
|
|
|
t |
−1 |
+ · · · + |
|
|
|
i=0 |
i |
|
|
|||||
UTPUT |
: k P. (Note: k = k0/2 |
|
|
|
k |
t 2/2 + t 1 + 2kt mod n.) |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
− |
k |
− |
|
|
|
|
|||
|
1. |
Compute Pi = i P, for i {1, 3, 5, . . . , 2w−1 − 1}. |
|
|
|
|
|||||||||||||||
|
2. |
Q ← ∞. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
3. |
For i from 0 to t − 1 do |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
3.1 Q ← Q/2. |
← |
|
+ |
i |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
3.2 |
If ki |
> 0 then Q |
|
|
Q |
|
|
Pk . |
|
|
|
|
|
|
|
|
|
|
|
|
|
3.3 |
If k |
< 0 then Q |
← |
Q |
− |
P |
. |
|
|
|
|
|
|
|
|
|
|||
|
|
If kt |
i |
|
|
−ki |
|
|
|
|
|
|
|
|
|
|
|||||
|
4. |
= 1 then Q ← Q + 2P. |
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
5. |
Return(Q). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Analysis
In comparison to methods based on doubling, point halving looks best when I/M is small and k P is to be computed for P not known in advance. In applications, the operations k P and k P + l Q with P known in advance are also of interest, and this section provides comparative results. The concrete example used is the NIST random curve over F2163 (§A.2.2), although the general conclusions apply more widely.
Example 3.93 (double-and-add vs. halve-and-add) Table 3.11 provides an operation count comparison between double-and-add and halve-and-add methods for the NIST random curve over F2163 . For the field operations, the assumption is that I/M = 8 and that a field division has cost I + M.
The basic NAF halving method is expected to outperform the w-NAF doubling methods. However, the halving method has 46 field elements of precomputation. In contrast, Algorithm 3.36 with w = 4 (which runs in approximately the same time as with w = 5) requires only six field elements of extra storage.
140 |
3. Elliptic Curve Arithmetic |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
Storage |
|
|
|
|
|
|
|
|
Point |
|
|
Field operations (H = 2M, I/M = 8) |
||||||||
|
Method |
(field elts) |
|
|
|
|
|
operations |
|
affine |
|
projective |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NAF, doubling |
0 |
|
|
|
|
|
163D+54A |
217(M+V )=2173 |
1089M+I =1097 |
|||||||||||||
|
(Algorithm 3.36) |
|
|
|
|
|
|||||||||||||||||
|
NAF, halving |
46 |
|
|
|
|
|
163H 54A |
435M |
54V |
= |
924 |
817M |
I |
= |
825 |
|||||||
|
(Algorithm 3.91) |
|
|
|
|
|
|
|
|
|
|
+ |
|
|
|
+ |
|
|
+ |
|
|||
|
5-NAF, doubling |
14 |
|
[D+7A]+163D+27A |
198(M+V )=1982 |
879M+8V +I = 959 |
|||||||||||||||||
|
(Algorithm 3.36) |
|
|||||||||||||||||||||
|
4-NAF, halving |
55 |
|
3D |
+ |
6A |
|
163H |
30A |
|
— |
|
|
671M |
2I |
= |
687 |
||||||
|
(Algorithm 3.91) |
|
[ |
|
|
|
|
]+ |
|
+ |
|
|
|
|
+ |
|
|||||||
|
5-NAF, halving |
60 |
|
[ |
D |
+ |
7A |
]+ |
163H |
|
27A |
388M |
35V |
= |
705 |
— |
|
|
|||||
|
(Algorithm 3.92) |
|
|
|
|
|
|
+ |
|
+ |
|
|
|
|
|
Table 3.11. Point and field operation counts for point multiplication for the NIST random curve over F2163 . Halving uses 30 field elements of precomputation in the solve routine, and 16 elements for square root. A = A + M, the cost of a point addition when one of the inputs is in λ-representation. Field operation counts assume that a division V costs I + M.
The left-to-right w-NAF halving method requires that the accumulator be in affine coordinates, and point additions have cost 2M + V (since a conversion from λ- representation is required). For sufficiently large I/M, the right-to-left algorithm will be preferred; in the example, Algorithm 3.91 with w = 2 will outperform Algorithm 3.92 at roughly I/M = 11.
For point multiplication k P where P is not known in advance, the example case in Table 3.11 predicts that use of halving gives roughly 25% improvement over a similar method based on doubling, when I/M = 8.
The comparison is unbalanced in terms of storage required, since halving was permitted 46 field elements of precomputation in the solve and square root routines. The amount of storage in square root can be reduced at tolerable cost to halving; significant storage (e.g., 21–30 elements) for the solve routine appears to be essential. It should be noted, however, that the storage for the solve and square root routines is per field. In addition to the routines specific to halving, most of the support for methods based on doubling will be required, giving some code expansion.
Random curves vs. Koblitz curves The τ -adic methods on Koblitz curves (§3.4) share strategy with halving in the sense that point doubling is replaced by a lessexpensive operation. In the Koblitz curve case, the replacement is the Frobenius map τ : (x, y) → (x2, y2), an inexpensive operation compared to field multiplication. Point multiplication on Koblitz curves using τ -adic methods will be faster than those based on halving, with approximate cost for k P given by
2w−2 − 1 + t A + t · (cost of τ ) w + 1
when using a width-w τ -adic NAF in Algorithm 3.70. To compare with Table 3.11, assume that mixed coordinates are used, w = 5, and that field squaring has approximate