Accelerated verification of digital signatures and public keys
10284370 ยท 2019-05-07
Assignee
Inventors
- Marinus Struik (Toronto, CA)
- Daniel Richard L. Brown (Mississauga, CA)
- Scott Alexander Vanstone (Campbellville, CA)
- Robert Philip Gallant (Corner Brook, CA)
- Adrian Antipa (Brampton, CA)
- Robert John Lambert (Cambridge, CA)
Cpc classification
H04L9/3066
ELECTRICITY
H04L9/30
ELECTRICITY
International classification
H04L9/30
ELECTRICITY
H04L9/32
ELECTRICITY
Abstract
Accelerated computation of combinations of group operations in a finite field is provided by arranging for at least one of the operands to have a relatively small bit length. In a elliptic curve group, verification that a value representative of a point R corresponds the sum of two other points uG and vG is obtained by deriving integers w,z of reduced bit length and that v=w/z. The verification equality R=uG+vQ may then be computed as zR+(uz mod n)G+wQ=O with z and w of reduced bit length. This is beneficial in digital signature verification where increased verification can be attained.
Claims
1. A method performed by a hardware processor of a computing device, comprising: receiving, by a receiver of the computing device and through a network, an electronic message including a signature, wherein the electronic message omits a public key of a signer, and the signature comprises a signature on the electronic message M; receiving, by the receiver of the computing device and through the network, a first elliptic curve point associated with a signature component from the signer, wherein the signature component comprises a first signature component r, the signature includes the first signature component r and a second signature component s, and the first elliptic curve point comprises an elliptic curve point R; recovering, by the hardware processor of the computing device, the omitted public key of the signer based on the received first elliptic curve point and the received signature, wherein the public key comprises a second elliptic curve point in an elliptic curve group different from the first elliptic curve point, wherein the elliptic curve group includes the first and second elliptic curve points, wherein the second elliptic curve point comprises an elliptic curve point Q, wherein recovering the omitted public key of the signer comprises computing Q=r.sup.1 (sReG), wherein G comprises a generator of an elliptic curve group that includes the elliptic curve point R and the elliptic curve point Q, and wherein e is a hash value computed from the electronic message M; and verifying, by the hardware processor of the computing device, the received signature using the recovered public key which provides an accelerated verification of the received signature.
2. The method of claim 1, further comprising verifying that the elliptic curve point Q represents the public key of the signer.
3. The method of claim 1, wherein the elliptic curve point R is generated based on the first signature component r and a cofactor h for an elliptic curve that includes the elliptic curve point R and the elliptic curve point Q.
4. The method of claim 1, wherein the public key of the signer can be used to verify the signature.
5. The method of claim 4, wherein verifying the signature comprises verifying the signature according to an Elliptic Curve Digital Signature Algorithm (ECDSA).
6. A non-transitory computer-readable medium storing instructions that, when executed by one or more hardware processors of a computing device, cause the computing device to perform operations comprising: receiving, by a receiver of the computing device and through a network, an electronic message including a signature, wherein the electronic message omits a public key of a signer, and the signature comprises a signature on the electronic message M; receiving, by the receiver of the computing device and through the network, a first elliptic curve point associated with a signature component from the signer, wherein the signature component comprises a first signature component r, the signature includes the first signature component r and a second signature component s, and the first elliptic curve point comprises an elliptic curve point R; recovering, by the one or more hardware processors of the computing device, the omitted public key of the signer based on the received first elliptic curve point and the received signature, wherein the public key comprises a second elliptic curve point in an elliptic curve group different from the first elliptic curve point, wherein the elliptic curve group includes the first and second elliptic curve points, wherein the second elliptic curve point comprises an elliptic curve point Q, wherein recovering the omitted public key of the signer comprises computing Q=r.sup.1 (sReG), wherein G comprises a generator of an elliptic curve group that includes the elliptic curve point R and the elliptic curve point Q, and wherein e is a hash value computed from the electronic message M; and verifying, by the one or more hardware processors of the computing device, the received signature using the recovered public key which provides an accelerated verification of the received signature.
7. The computer-readable medium of claim 6, the operations further comprising verifying that the elliptic curve point Q represents the public key of the signer.
8. The computer-readable medium of claim 6, wherein the elliptic curve point R is generated based on the first signature component r and a cofactor h for an elliptic curve that includes the elliptic curve point R and the elliptic curve point Q.
9. The computer-readable medium of claim 6, wherein the public key of the signer can be used to verify the signature.
10. A computing device comprising: a receiver configured to receive an electronic message including a signature, wherein the electronic message omits a public key of a signer, and the signature comprises a signature on the electronic message M; a memory; and a hardware processor communicatively coupled with the memory and configured to: receive, from the receiver, a first elliptic curve point associated with a signature component from the signer, wherein the signature component comprises a first signature component r, the signature includes the first signature component r and a second signature component s, and the first elliptic curve point comprises an elliptic curve point R; recover, by the hardware processor of the computing device, the omitted public key of the signer based on the received first elliptic curve point and the received signature, wherein the public key comprises a second elliptic curve point in an elliptic curve group different from the first elliptic curve point, wherein the elliptic curve group includes the first and second elliptic curve points, wherein the second elliptic curve point comprises an elliptic curve point Q, wherein recovering the omitted public key of the signer comprises computing Q=r.sup.1 (sReG), wherein G comprises a generator of an elliptic curve group that includes the elliptic curve point R and the elliptic curve point Q, and wherein e is a hash value computed from the electronic message M; and verify, by the hardware processor of the computing device, the received signature using the recovered public key which provides an accelerated verification of the received signature.
11. The computing device of claim 10, wherein the hardware processor is further configured to verify that the elliptic curve point Q represents the public key of the signer.
Description
(1) Embodiments of the invention will now be described by way of example only with reference to the accompanying drawings in which:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16) The present invention is exemplified by reference to verification of digital signatures, in particular those signatures generated using ECDSA. It will be apparent however that the techniques described are applicable to other algorithms in which verification of a pair of values representative of points on an elliptic curve is required to groups other than elliptic curve groups. Therefore the accompanying description of the embodiments shown is exemplary and not exhaustive.
(17) Referring therefore to
(18) In the present example, the correspondent 12 prepares a message M which it wishes to sign and send to the correspondent 14 using an elliptic curve cryptosystem embodied within the modules 20, 22. The parameters of the system are known to each party including the field over which the curve is defined (in the present example Fp where p is a prime), the underlying curve, E, the generator point G that generates the elements that form the group in which crypto operations are performed and therefore defines the order, n, of the group, and a secure hash function H, generally one of the Secure Hash Algorithms (such as SHA-1 or SHA-256) defined in Federal Information Processing Standard (FIPS) 180-2. Each element is represented as a bit string having a maximum bit length sufficient to represent each element in the group.
(19) The steps taken to sign the message are shown in
(20) In addition to the components r and s, the signature includes information i to permit the co-ordinates representing the point R to be recovered from the component r. This information may be embedded in the message M, or forwarded as a separate component with r and s and will be used by the verifier to compute the value R. If the elliptic curve is defined over a field F of prime order p, and the elliptic curve E is cyclic or prime order n, then i can generally be taken as y mod 2, i.e., a zero or one. The indication i is required during recovery R, where the verifier sets x=r. It is very likely that x=r because n and p are extremely close for typical implementations. Given x, there are exactly two values y such that (x, y) is on the curve, and these two values y and y have different values mod 2. Thus i is just a single bit whose value indicates which of the y's is to be used, and adds relatively little cost to the signature.
(21) Once the message is signed it is forwarded together with the components r,s, and i across the link 16 to the recipient correspondent 14. To verify the signature the steps set out in
(22) The correspondent 14 also computes a pair of integers w and z using an iterative algorithm such that the maximum bit lengths of w and z are each less than the maximum bit length of the elements of the group, and such that v=w/z mod n. The bit lengths of w and z are preferably about one half the bit length of the elements. Such w and z can be found conveniently with the extended Euclidean algorithm and stopping at an appropriate point, typically half-way where w and v are half the bit length of the elements. Such an algorithm is exemplified, for example as Algorithm 3.74 in Guide to Elliptic Curve Cryptography by Henkerson, Menezes and Vanstone published by Springer under ISBN 0-387-95273, which represents a quantity k as k=k.sub.1+k.sub.2 mod n, where the bit lengths of k.sub.1 and k.sub.2 are about half the length of n. This equation can be re-written as =(kk.sub.1)/k.sub.2 mod n. By setting k=1 and =v, then the above referenced Algorithm 3.74 can be used to obtain n established for the system, k set to 1 and the value for v used as the variable input. The output obtained k.sub.1 k.sub.2 can then be used to compute w=1k.sub.1 and k.sub.2 used as w=1k.sub.1 and z=k.sub.2.
(23) Thus, the arithmetic unit 32 is used to implement the following pseudo-code to obtain the values of w and z.
Let r0=n and t0=0.
Let r1=v and t1=1.
(24) For i>1, determine ri, ti as follows:
(25) Use the division algorithm to write r_(i1)=qi r_(i2)+ri, which defines ri.
Let ti=t_(i1)+qi t_(2).
(26) Stop as soon as ri<sqrt(n)=n^(), or some other desired size. Set w=ri and z=ti. Note that ri=ti v mod n, so w=z v mod n, so v=w/z mod n, and both w and z have about half the bit length of n, as desired.
(27) The correspondent 14 also recovers a value corresponding to the point R utilising the information i. In its simplest form this is obtained by substituting the value of r received in the curve and determining which of the two possible values of y correspond to the sign indicated by the bit i.
(28) With the value of R recovered, the verification of the ECDSA, namely that R=uG+vQ, may proceed with a revised verification by confirming that the verification equality zR+(zu mod n)G+wQ=O. The verification equality zR+(zu mod n)G+wQ involves a combination of group operations on each of the ephemeral public key R, generator G and long-term public key Q and can be computed efficiently because z and w are relatively small integers. As will be described below, various of the methods for computing a sum faster than its parts can be used. The multiple (zu mod n) is full size, but within the context of a system such as the ECDSA in which the points have varying longevity, the point G may be considered fixed or recurring. In this case the computation can be accelerated with a precomputed table for G, which may be stored in the memory 28 and accessed by arithmetic unit 32 as needed. The representations of the points zR and wQ which cannot effectively be precomputed have smaller bit lengths and therefore less time consuming computation. Assuming the computation returns a value O, the signature is assumed to be verified.
(29) A number of different known techniques may be utilised to compute the required relationship, each of which may be implemented using the arithmetic processor 32. Each offers different advantages, either in speed or computing resources, and so the technique or combination of techniques will depend to a certain extent on the environment in which the communication system is operating. For the sake of comparison, it will be assumed that u and v are integers of bit length t. Computing uG and vQ separately requires about 3t/2 point operations, assuming no pre-computation, for a total of about 3t point operations. Computing uG+vQ, which is the verification normally used for ECDSA, require t doublings, some of which can be simultaneous. Each of u and v are expected to have about t/2 bits set to one in their binary representation. In basic binary scalar multiplication, each bit of one requires another addition. (In more advanced scalar multiplication, signed binary expansion are used, and the average number of additions is t/3.) The total number of point operations is therefore t+(2(t/2))=2t on average as simultaneous doubling has saved t doublings.) The revised verification instead uses a computation of a combination of the form aG+wQ+zR, where a is an integer of bit length t representative of the value zu mod n and w and z are integers of bit length about (t/2). Organising the verification computation in this way permits a number of efficient techniques to be used to reduce the number of point operations. An efficient way to compute this is to use a simultaneous doubling and add algorithm. For example, if the relationship 15G+20Q+13R is to be computed it can be done in stages as 2Q; G+2Q; G+2Q+R; 2G+4Q+2R; 3G+4Q+2R; 3G+5Q+2R; 3G+5Q+3R; 6G+10Q+6R; 7G+10Q+6R; 14G+20Q+12R; 15G+20Q+13R, for a total of 12 point additions, which is fewer than the method of generic scalar multiplication for each term separately. The main way that this method uses less operations is when it does simultaneous doubling, in steps as going from G+2Q+R to 2G+4Q+2R. In computing each term separately three operations would be used corresponding to this one operation. In fact, three simultaneous doubling were used, each saving two operations, so simultaneous doubling account precisely for all the savings. The number of doublings to compute the combination is governed by the length of the highest multiple, so it is t. The number of additions for a is (t/2), on average, and for Q and R it is (t/4) each on average. The total, on average, is t+(t/2)+(t/4)+(t/4)=2t. The algorithm is further exemplified as Algorithm 3.48 of the Guide to Elliptic Curve Cryptography detailed above.
(30) Although there does not appear to be any savings over the previous method, which also took 2t point operations, advantage can be taken of the fact that in practice, for ECDSA, the generator G is constant. This allows the point J=2^m G to be computed in advance, and stored in memory 28 for future use. If m is chosen to be approximately t/2, then a a+a2^m, where a and a are integers of bit length about (t/2). Accordingly, aG+wQ+zR can be written as aG+aJ+wQ+zR. In this form, all the scalar multiples have bit length (t/2). The total number of doublings is thus (t/2). Each of the four terms contributes on average (t/4) additions. The total number of point operations, on average, is the t/2+4 (t/4)=3t/2.
(31) Accordingly, to verify the signature r,s, as shown schematically in
(32) With the conventional verification equation approach of computing uG+vQ, the multiple v will generally be full length t, so the pre-computed multiple J of G will not help reduce the number of simultaneous doublings.
(33) Therefore, by pre-computing and storing the single point J, verifying using the relationship zR+(zumod n)G+wQ=O allows an ECDSA signature to be verified in 25% less time. In other words, 33% more signatures can be verified in a given amount of time using the embodiment described above.
(34) Alternatively, many implementations have sufficient memory 32 to pre-compute and store essentially all power of two multiples of G, essentially making it unnecessary to apply doubling operations to G. In such situations uG+vQ can be computed with t doublings of Q and (t/2) additions for each of G and Q. The total is still 2t operations. However, as shown in
(35) Accordingly, it will be seen that by reorganizing the verification equation so that signature variables have a reduced bit length, the speed of verification may be increased significantly.
(36) In the above embodiments, the recipient performs computations on the components r,s. To further accelerate signature verification as shown in
(37) Upon receipt, the verifier computes w and z. The verifier then determines c=c+c and b=b+b+b^2. In addition, since G is a fixed parameter, the verifier has pre-computed multiples of G of the form G and ^2G. If n is approximately 2^t, then the verifier needs just t/3 simultaneous doubles to compute aR+bG+cQ. The verification can proceed on the basis aR+(b+b+b^2)G+(c+c)Q=0. The precomputed values for G and Q can then be used and the verification performed. The verifier will need 2t/3 point additions, assuming that signed NAF is used to represent a, b and c. The total number of point operations is thus t, which represents a further significant savings compared to 3t/2 with the present invention and without the pre-computed multiple of Q such as described in
(38) Given a pre-computed multiple of both Q and G, then uG+vQ can be computed with (t/2)+4(t/4)=3t/2 point operations using conventional representations. When pre-computed multiples of Q are feasible, then the signing equation, in the form above, again provide a significant benefit. The analyses above would be slightly modified when signed binary expansions are used.
(39) With yet other known advanced techniques for computing linear combinations of points, some of which are discussed below, the use of the relationship allows signature verification to take up to 40% less time.
(40) When implementing scalar multiplication and combinations, it is common to build a table at run-time of certain multiples. These tables allow signed bits in the representation of scalar multiple to be processed in groups, usually called windows. The table costs time and memory to build, but then accelerates the rest of the computation. Normally, the size of the table and associated window are optimized for overall performance, which usually means to minimize the time taken, except on some hardware implementation where memory is more critical. A full description and implementing algorithms for such techniques is to be found in Guide to Elliptic Curve Cryptography, referenced above at pages 98 et. seq.
(41) Such run-time tables, or windowing techniques, for scalar multiplication techniques can be combined with the revised verification equation in the embodiments described above. When using such tables, the savings are approximately the same as outlined above. The reason the savings are similar is the following simple fact. Tables reduce the number of adds, by pre-computing certain patterns of additions that are likely occur repeatedly, whereas the use of the revised verification relationship reduces the number of doubles by providing for more simultaneous doubling. In fact, when using tables, the number of adds is reduced, so the further reduction of the doubles provided by using the revised verification relationship has even more impact.
(42) By way of an example, a common approach to tables, is to use a signed NAF window of size 5. Building a table for such a NAF requires 11 adds. In the example above where the signer sends a pre-computed multiple uQ of Q, the verifier can build tables for R, Q and uQ, at a cost of 33 adds. It is presumed that verifier already has the necessary tables built for G. Using the pre-computed doubles, the verifier only needs t/6 simultaneous additions for verification. These savings improve as the key size increases. For the largest key size in use today, the savings are in the order of 40%. Such tables do of course require the necessary memory 32 and so selection of the appropriate techniques is governed by the hardware available.
(43) Similarly, computation techniques known as joint sparse forms could be used for computational efficiency.
(44) As described above, the integers w, z were found using the extended Euclidean algorithm. Alternative iterative algorithms may be used, including the continued fractions approach. In the continued fractions approach, which is essentially equivalent to the extended Euclidean algorithm, one finds a partial convergent / to the fraction v/n, such that is approximately n.sup.1/2. A property of the partial convergent is that |/v/n|<1/^2. Multiplying this inequality by n gives |nv<n/, which is approximately n.sup.1/2. Now set z= and w=nv. It is easy to check that v=w/z mod n, and note that w and z have the desired size.
(45) As noted above, a conventional ECDSA signature, does not include the point R but instead, it includes an integer x obtained from r=x mod n, where R=(x, y). The verifier therefore needs to recover R.
(46) The method to recover R discussed above is to supplement the signature (r, s) with additional information i. This information can be embedded in the message, for example. The verifier can use r and i to compute R. When p>n, there is a negligible chance that x>n and consequently r=xn. If however such a case does occur, the verification attempt will fail. Such a negligible failure rate for valid signatures can be accepted, or dealt with in the following manner.
(47) As shown in
(48) Other techniques for determining R can be utilized. In non-cyclic curves, there is a cofactor h, which is usually 2 or 4 in practice. This can lead to multiple possible values of x. The probability that r=x is approximately 1/h. In other situations, we will generally have r=xn (if h=2), or more generally r=xmn where (m is between 0 and h1). Because p is approximately hn, then except in a negligible portion of cases there will be h possible values of x that are associated with r. To make recovery of x, and hence R easier, the signer can compute m and send it to the verifier within the message or as a further signature component. Alternatively, the verifier can make an educated guess for m. This can be illustrated in the case of h=2.
(49) Corresponding to r is a correct x and a false value x.sub.f. The false value x.sub.f has an approximately chance of not corresponding to a value of the x-coordinate on E, and a further 1/h chance of not corresponding to a multiple of G. If one of the two values for x is invalid, either by not being on E or if it is not having order n, both of which can be efficiently checked, then that value can be eliminated. Thus at least of the time, the verifier will easily find the correct x. The remaining of the time at maximum, the verifier will not know which of the two x-values to try. If the verifier can guess one of the x values to verify, half the time, this guess will be right and the signature will verify, and the other half of the time, the first signature attempt will fail and the verifier must try the other x value. Therefore the probability that the verifier must verify two signatures is . Despite this probability of two verifications, the average verification is still improved. This can still provide the verifier time savings on average. If an accelerated verification takes 70% as long as a normal verify, but 12.5% of the verifies require twice as long as an accelerated verify, then the average time is 79% of a normal verify. Furthermore, as outlined further below, the signer can assist by providing m for the verifier or by doing the extra work of trying both values to ensure that only one m is valid.
(50) A similar method may be utilized with a cofactor h=4. In fact, a higher value of h reduces the probability of each of the potential x values from being valid. There are more potential x values, but the analysis shows a similar benefit to the verifier. There are three false values of x, and each has a probability of of appearing valid with a fast check. The chance that no false values appear to be a valid x with a fast check is thus ().sup.3 which is about 77%. Most of the remaining 23% of the time, just one of the false x values will appear valid and potentially require a full signature verification.
(51) The inclusion of i (and of m if necessary) is quite similar to replacing r by a compressed version of R consisting of the x coordinate and the first hit of the y coordinate. This alternative, of sending a compressed value of R instead of r, has the advantage of being somewhat simpler and not even a negligible chance of false recovery. Accordingly, as shown in
(52) To verify the signature, the recipient 14 recovers the point R directly from the component r and uses the verification equality equation zR+(zu mod n)G+wQ=O to confirm it corresponds to the group identity. The transmission of the modified co-ordinate r simplifies the verification but does increase the bandwidth required.
(53) In some situations, no channel may be available for the signer to send extra bits. For example, existing standards may strictly limit both the signature format and the message format leaving no room for the sender to provide additional information. Signers and verifiers can nevertheless coordinate their implementations so that R is recoverable from r. This can be arranged by the signer, as shown in
(54) As an alternative to modifying R as described above, and to maintain strict conformity to the ECDSA standard, the value of s may be modified after computation rather than R. In this case, the signer notes that the value of R does not conform to the prearranged criteria and proceeds to generate r and s as usual. After s is computed, the value is changed to (s) to ensure the verification will be attained with the presumption of the prearranged value of y. When a signer chooses a signature (r, s) such that R is implicitly recovered, an ordinary verifier will accept the signature as usual. Such signatures are perfectly valid. In other words, the revised verification is perfectly compatible with existing implementations of ECDSA verification. An accelerated verifier expecting an implicitly efficient signature but receiving a normally generated signature, will need to try two different values of i. If accelerated verification takes 60% of the time of a normal verify, then in a cyclic curve (cofactor h=1), the average time to needed verify a normal signature is 50% (60%)+50% (120%)=90% of a normal verify. This because 50% of the time a normal signature will have i=0, requiring just one implicitly accelerated verify, and the other 50% of the time, two accelerated verifies are needed. Thus an implicitly accelerated verify will still be faster than a normal verifier, even when the signatures are not implicitly accelerated. Conventional signatures may also be modified, either by the signer or by a third party, to permit fast verification. In this case the signature is forwarded by a requestor to a third party who verifies the signature using the verification equality. In so doing the value of R is recovered. The signature is modified to include the indicator I and returned to the requestor. The modified signature may then be used in subsequent exchanges with recipients expecting fast verify signatures.
(55) The above techniques recover R to permit a revised verification using the relationship zR+(zu mod n)G+wQ=O. However, where the ECDSA is being verified, the integers w and z may be used without recovery of R as shown in
(56) The above examples have verified a signature between a pair of correspondents 12, 14. The technique may also be used to verify an elliptic curve key pair (d, Q) as shown in
(57) Another application is implicit certificate verification. Implicit certificates are pairs (P, I), where P is an elliptic curve point and I is some identity string. An entity Bob obtains an implicit certificate from a CA by sending a request value R which is an elliptic curve point to the CA. The CA returns the implicit certificate (P, I) and in addition a private key reconstruction data value s. Bob can use s to calculate his private key. More generally, any entity can use s to verify that the implicit certificate correctly corresponds to Bob's request value R and the CA public key C. This is done by checking the verification equality H(P, I)R+sG=H(P,I) P+C, where H is a hash function. This equation is equivalent to eQ+sG=C, where e=H(P, I) and Q=RP. The form of this equation is highly similar to the form of the standard ECDSA verification equation. Consequently, the techniques discussed above may be used to provide a means to accelerate verification of this equation. This is done optimally by determining relatively smaller values w and z such that e=w/z mod n, then multiplying the equation through by z to give: wQ+(sz mod n)GzC=O. Again, the multiple of G is this equation is full size, but generally multiples of G can be pre-computed, so this does not represent a problem.
(58) Another variant that takes advantage of this technique is to shorten all three multiples in the ECDSA signing equation. Theoretically, each multiple can be shortened to a length which is the length of n (where n is the order of G). One way to achieve this shortening is by solving the short vector lattice problem in 3 dimensions. Algorithms exist for solving such problems. Shortening all three multiples is most useful when no pre-computed multiples of G can be stored, which makes it more efficient to reduce the length of the multiple of G as much as possible. Such techniques are described more fully in Henri Cohen, A Course in Computational Algebraic Number Theory, Springer, ISBN 0-387-55640-0. Sections 2.6 and 2.6 describe the LLL algorithm, its application to finding short vectors in lattices, and also mentions Vallee's special algorithm for 3 dimensional lattices.
(59) Another application of this technique is the application to a modified version of the Pintsov-Vanstone Signature scheme (PVS) with partial message recovery. A PVS signature is of a triple (r, s, t). Verification of a signature and message recovery from a signature under public Q, with base generator G, is done as follows. The verifier computes e=H(rt), where H is a hash function. The verifier then computes R=sG+eQ. Next, the verifier derives a symmetric encryption key K from R. With this, the verifier decrypts r using K to obtain a recovered message part u. The recovered message is some combination of t and u. The signature is valid only if u contains some redundancy, which is checked by verifying that u conforms to some pre-determined format. The PVS scheme is part of draft standards IEEE P1363a and ANSI X9.92.
(60) In a modified variant of PVS, verification time can be decreased by utilizing integers w and z. The modified variant of PVS is shown in
(61) A method to further accelerate signature verification of digital signature, in elliptic curve groups and similar groups is illustrated as follows. The verification of an ECDSA signature is essentially equivalent to confirmation that a linear combination, such as aR+bQ+cG, of three elliptic curve points, equals the point of infinity. One way to verify this condition is to compute the point aR+bQ+cG and then check if the result is the point O at infinity, which is the identity element of the group as described above. This verification can sometimes be done more quickly than by directly computing the entire sum. For example, if a=b=c, then aR+bQ+cG=0 if and only if the points R, Q and G are collinear. Checking if points are collinear is considerably faster than adding to elliptic curve points. Collinearity can be checked with just two field multiplication, by the equation (x.sub.Rx.sub.G)(y.sub.Qy.sub.G)(x.sub.Qx.sub.G)(y.sub.Ry.sub.G)=0. Adding points requires at least two field multiplication, a field squaring and a field inversion, which is generally equivalent to about 8 field multiplication. When a=b=c, verification is thus possible in about 18% of the time taken by adding the points. As such, this technique may be used as a preliminary step of the verification process where the likelihood of these conditions existing is present.
(62) Similarly, when b=c=0, so that one wishes to verify that aR=O, in principle one does not need to compute aR in its entirety. Instead one could evaluate the a.sup.th division polynomial at the point R. The division polynomial essentially corresponds to a recursive formula for the denominators of coordinates the point aR, when expressed as rational functions of the coordinates of the point R. It is known that aR=O if and only if the denominator is zero. Furthermore, when b=c=0 and the elliptic curve group is cyclic of prime order n, it is known that aR=O only if a=0 mod n or if R=O. This verification is comparably instantaneous, in that zero elliptic curve point operations are needed. When the cofactor is small, such as h=2 or h=4, point operations can replaced by a few very fast field operations. Thus special cases of verification that a sum points is zero can be done very quickly.
(63) Recursive formula exist, similar to the recursive formulae for division polynomials, for the denominators of sums like aR+bQ+cG, and these can be compute more quickly than the computing the full value of the point aR+bQ+cG. Knowledge of the group order n can further improve verification time.
(64) Yet another application of this technique is to provide efficient recovery of the public key Q from only the ECDSA digital signature as shown in
(65) However, since with a significant probability a pair (r, s) will yield some valid public key, the correspondent 14 needs a way to check that Q is correspondent's 12 public key. Correspondent 12 can make available to correspondent 14 the signature, such as another ECDSA signature (r, s), from a CA on correspondent 14 public key. Correspondent 12 can send the CA signature, (r, s), to correspondent 14, or correspondent 14 can look it up in some database. The CA's signature will be on correspondent's 12 name and her public key Q. Correspondent 14 will use the CA's certificate to verify the message which corresponds to the public key Q. If the signature verifies then the correspondent 14 has recovered the correct value for the public key Q. Omitting the public key from the certificate can save on bandwidth and storage and the verification process described above yields reduced verification times.
(66) Correspondent 14 could also verify that Q is correspondent's 12 public key by checking Q against some more compact value derived from Q, such as the half of the bits of Q. The compact version of Q could then stored or communicated instead of Q, again savings on storage and bandwidth.
(67) H will also be appreciated that each of the values used in the verification equality are public values. Accordingly, where limited computing power is available at the verifier it is possible for the signer to compute the values of w and z and forward them with R as part of the message. The recipient then does not need to recover R or compute w and z but can perform the verification with the information available. The verification is accelerated but the bandwidth increased.
(68) Although the descriptions above were for elliptic curve groups, many of the methods described in the present invention applies more generally to any group used in cryptography, and furthermore to any other application that uses exponentiation of group elements. For example, the present invention may be used when the group is a genus 2 hyperelliptic curve, which have recently been proposed as an alternative to elliptic curve groups. The above techniques may also be used to accelerate the verification of the Digital Signature Algorithm (DSA), which is an analogue of the ECDSA. Like ECDSA, a DSA signature consists of a pair of integers (r, s), and r is obtained from an element R of the DSA group. The DSA group is defined to be a subgroup of the multiplicative group of finite field. Unlike ECDSA, however, recovery of R from r is not easy to achieve, even with the help of a few additional bits. Therefore, the present technique applies most easily to DSA if the value is R sent with as part of the signed message, or as additional part of the signature, or as a replacement for the value r. Typically, the integer r is represented with 20 bytes, but the value R is represented with 128 bytes. As a result, the combined signature and message length is about 108 bytes longer. This could be a small price to pay to accelerate verification by 33%, however. In the DSA setup, p is a large prime, and q is smaller prime and q is a divisor of (p1). An integer g is chosen such that g^q=1 mod p, and 1<g<p. (Note that q and g correspond to n and G, respectively, from ECDSA.)
(69) The private key of the signer is some integer x and the public key is Y=g^x mod p.
(70) The signer generates a signature in the form (R,$) instead of the usual (r, s). Here, R=g^k mod p, whereas, r=R mod q. In both cases, s=k^(1) (h(M)+x r) mod q, where x is the private key of the signer, M is the message being signed, and h is the hash function being used to digest the message (as in ECDSA).
(71) In normal DSA, the verifier verifies signature (r, s) by computing u=h(M)/s mod q and v=r/s mod q, much like the u and v in ECDSA embodiments, and then checks that r=(g^u Y^v mod p) mod q.
(72) In this embodiment, the verifier finds w and z of bit length about half that of q, so that each of w and z is approximately sqrt(q), such that v=w/z mod q. This is done by the same method as in ECDSA embodiment above, with n replaced by q. The verifier then computes:
R^z g^(zu mod q)Y^w mod p.
(73) If this quantity equals 1, then verifier accepts the signature, otherwise the signature is rejected.
(74) The verifier computes this quantity using the square-and-multiply algorithm, or some variants thereof, and exploits simultaneous squaring, which is analogous to simultaneous doubling in ECDSA. Many of the methods of ECDSA fast verify may be used for DSA fast verify. A pre-computed multiple of the g, say j, may be used, so that the computation looks like: R^z g^s j^t Y^w mod p
(75) where each of z, s, t and w has bit length about half that of q. If pre-computed powers of the public Y are made available, then the lengths of the exponents can be further reduced, thereby further reducing the number of doublings, making the verification yet faster.