Method and apparatus for computing a shared secret key
A method of generating a key by a first correspondent. The key is computable by a second correspondent. The method comprises the steps of: a) making available to the second correspondent a first short term public key; b) obtaining a second short term public key from the second correspondent; c) computing a first exponent derived from the first short term private key, the first short term public key, and the first long term private key; d) computing a second exponent derived from the first short term private key, the first long short term public key, the second short term public key and the first long term private key; e) computing a simultaneous exponentiation of the first exponent with the second short term public key and the second exponent with the second long term public key.
Latest Certicom Corp. Patents:
- Generating cryptographic function parameters based on an observed astronomical event
- SYSTEM AND METHOD FOR OPERATING PSEUDORANDOM GENERATORS
- Elliptic Curve Random Number Generation
- Method and Apparatus for Providing an Adaptable Security Level in an Electronic Communication
- Implicitly Certified Digital Signatures
This application is a reissue of U.S. Pat. No. 7,512,233, which issued from U.S. Ser. No. 11/519,207, which is a continuation of U.S. patent application Ser. No. 10/058,213 filed on Jan. 29, 2002 now U.S. Pat. No. 7,127,063 which claims priority from U.S. Provisional Application No. 60/343,224, filed on Dec. 31, 2001 the contents of which are incorporated herein by reference.
BACKGROUND OF THE INVENTION1. Field of the Invention
The present invention relates to cryptographic systems, and more particularly to a method for computing a shared secret key.
2. Description of the Prior Art
Public key cryptography is used to provide security for information transmitted over public networks. Numerous cryptographic protocols are available to provide security, integrity and authentication. Their security is based on the apparent intractability of certain mathematical problems, such as integer factorization and the discrete logarithm problem. Public key schemes sometimes require more computing power than is generally available in constrained environments. Devices such as cellular phones, pagers, and smart cards usually have limited computing power and battery power available. In such environments, elliptic curve cryptography is particularly appealing since it provides security with parameters having a smaller number of bits. Computations are correspondingly faster because of the smaller amount of data that must be manipulated. In most cryptographic systems, parameters with a larger number of bits provide greater security at the cost of speed. Accordingly, there is a continual need to optimize cryptographic operations to run as quickly as possible, to make higher security implementations of the protocols feasible.
Digital signatures are a class of cryptographic protocols used to provide authentication. As in all public key systems, a sender has a private key and a public key. The public key is made available and authenticated to other users through a certificate or a directory. The sender signs a message using their private key, and a recipient is able to verify the signature by using the authentic public key. The mathematics of the scheme provides assurance that only the owner of the private key could generate a signature that will verify using the public key.
It is often of interest to share a key between two users of a public key cryptosystem. This key can be used to secure future communications using a symmetric key cryptosystem. The MQV (Menezes, Qu, Vanstone) protocol provides a method of sharing a key between two users of a public key cryptosystem that provides authentication of the key. This protocol is described in U.S. Pat. Nos. 5,761,305, 5,889,865, 5,896,455, and 6,122,736.
The following notation is used for the MQV protocol in a group G with a generator g
An early version of the MQV protocol for sharing a key between a pair of correspondents Alice and Bob proceeds as follows in the multiplicative group of a finite field having group order q.
1. Alice selects x at random from the interval 1 to q−1.
2. Alice computes RA=gx and sends it to Bob.
3. Bob selects y at random from the interval 1 to q−1.
4. Bob computes RB=gy and sends it to Alice.
5. Alice computes sA=(x+aRA)mod q and the shared secret K=(RB(YB)R
6. Bob computes sB=(y+bRB)mod q and the shared secret K=(RA(YA)R
The computationally intense parts of the key agreement protocol are the exponentiations that must be performed to determine K.
When the MQV protocol was standardized in the ANSI X9.62 and IEEE P1363 standards, a truncation operation was introduced to make the protocol more efficient. The MQV protocol as standardized uses a truncation operation to reduce the bit length of an exponent. The truncation operation is denoted by
1. Alice selects x at random from the interval 1 to q−1.
2. Alice computes RA=gx and sends it to Bob.
3. Bob selects y at random from the interval 1 to q−1.
4. Bob computes RB=gy and sends it to Alice.
5. Alice computes sA=(x+a
6. Bob computes sB=(y+b
The use of the truncation operation speeds up computations since the exponent is shorter. However, this means that only half of the bits of the truncated values are used. It is believed that this truncation does not affect the security of the protocol, however it is generally preferable in the design of cryptographic methods to use as many bits of the random values and private values as possible.
A version of the MQV protocol uses an elliptic curve group as the underlying group G. The group generator is normally written as a point P, and additive notation is usually used instead of multiplication notation. In the Elliptic Curve MQV protocol, the value RA is then equal to xP, and the value RB is equal to yP. Each value RA, RB is thus a point on the elliptic curve. Since an elliptic curve point consists of two finite field elements, it is necessary to define a function π to convert an elliptic curve point into an integer. One typical function that is used is to interpret the bit string representing the first coordinate of the elliptic curve point as a bit string representing an integer. The component sA is equal to sA=(X+aπ(RA))mod q and the component sB is equal to sB=(y+bπ(RB))mod q. The shared key may then be expressed as K=sA(RB+π(RB)YB). The shared key K is an elliptic curve point, and usually it will be converted into another format for use in another protocol. The conversion often involves interpreting the bit string representing K as an integer. The corresponding two point multiplications are therefore necessary to compute the shared key and are also computationally intensive.
Accordingly, there is a need for a method of computing a shared key using the MQV protocols that obviates or mitigates at least some of the above disadvantages.
SUMMARY OF THE INVENTIONIn general terms, it has been recognized that the computation of the MQV shared key may be optimized by using simultaneous multiplication techniques.
In accordance with one aspect of the present invention, there is provided a method of generating a key by a first correspondent. The key is computable by a second correspondent. The method comprises the steps of:
-
- a) making available to the second correspondent a first short term public key,;
- b) obtaining a second short term public key from the second correspondent;
- c) computing a first exponent derived from the first short term private key, the first short term public key, and the first long term private key;
- d) computing a second exponent derived from the first short term private key, the first long short term public key, the second short term public key and the first long term private key,;
- e) computing a simultaneous exponentiation of the fist exponent with the second short term public key and the second exponent with the second long term public key.
These and other features of the preferred embodiments of the invention will become more apparent in the following detailed description in which reference is made to the appended drawings wherein:
Referring to
It is desired to share a key between the correspondents using the MQV protocol. It is recognized that the MQV equations can be reorganized to provide efficient computations without necessarily using the truncation operation. The reorganization proceeds as follows.
The formula K=(RB(YB)R
To compute the multiple K=RBs
Referring to
Referring
It will be noted that in this embodiment one simultaneous multiple exponentiation is used instead of two separate exponentiations. Accordingly, the number of squaring operations required corresponds to the number required for one exponentiation instead of that required for two separate exponentiations. It will be recognized that using the method of this embodiment, truncating the first exponent in an attempt to save squarings is not effective, since these squaring can be shared with the second multiplication. The truncation then saves only multiplications, not squarings, when applied to this embodiment since this embodiment uses simultaneous multiple exponentiation.
Referring to
Referring to
Referring to
In use, the pointer 603 is an input to the switch 606 which controls multiplier 610 so that when the corresponding bit of sA is set, the quantity RB is multiplied into the accumulator 514. Similarly, the pointer 605 is an input to the switch 608 which operates the multiplier 612. The quantity YB is multiplied into the accumulator 614 when the corresponding bit of register 604 is set. After considering each exponent, the accumulator is squared 616, and the control 618 operates to set the pointers 603, 605 to the next bits of registers 602, 604. The process repeats until all the bits have been considered. In this way, the bits of the two exponents are considered simultaneously, and only one set of squares is performed.
The above methods can be implemented in any group where the discrete logarithm problem is believed to be intractable. One example of such a group is an elliptic curve group, where the method is very similar however, the additive notation is usually used instead of multiplicative notation. In the elliptic curve setting, group multiplication corresponds to addition of elliptic curve points, and group exponentiation corresponds to scalar multiplication. In this case, the tables will contain a column possible bit combinations of the scalar (e.g. 10012), and a column of corresponding point multiplications (e.g. 10012P).
Referring therefore to
Referring to
Although the invention has been described with reference to certain specific embodiments, various modifications thereof will be apparent to those skilled in the art without departing from the spirit and scope of the invention as outlined in the claims appended hereto.
Claims
1. A cryptographic system for generating a shared key in an a Menezes-Qu-Vanstone (MQV) key generation protocol, said system comprising a first correspondent having a first cryptographic unit configured for:
- a) making a first short term public key available to a second correspondent over a communication channel;
- b) obtaining a second short term public key from said second correspondent;
- c) computing a first exponent derived from a first short term private key, said first short term public key, and a first long term private key;
- d) computing a second exponent derived from said first short term private key, said first short term public key, a second short term public key, and said first long term private key;
- e) computing a first simultaneous exponentiation of, by said first exponent with, of said second short term public key and, by said second exponent with, of a second long term public key; and
- f) generating said shared key using a result of said first simultaneous exponentiation.
2. The cryptographic system of claim 1 comprising a second correspondent having a second cryptographic unit configured for:
- g) making said second short term public key available to said first correspondent over said communication channel;
- h) obtaining said first short term public key from said first correspondent;
- i) computing a one exponent derived from a second short term private key, said second short term public key, and a second long term private key;
- j) computing another exponent derived from said second short term private key, said second short term public key, said second long term private key, and said first short term public key;
- k) computing a second simultaneous exponentiation of, by said one exponent with, of said first short term public key and, by said another exponent with, of a first long term public key; and
- l) generating said shared key using a result of said second simultaneous exponentiation.
3. The cryptographic system of claim 2 configured for performing a) and g) in parallel, for performing b)and h)in parallel, for performing c)and d)in parallel with i) And j), and for performing k) and l) in parallel with e) and f).
4. The cryptographic system of claim 1 wherein said first cryptographic unit is configured for performing said first simultaneous exponentiation by:
- establishing a window of width w;
- establishing a table of small exponentiations of said second short term public key, and a table of small exponentiations of said second long term public key to provide a series of potential exponentiations representing said first and second exponents; and
- examining said tables using said window w until said shared key is computed.
5. The cryptographic system of claim 4 wherein said examining said tables includes retrieving the corresponding powers of values of said second short term public key and said second long term public key within said window w, accumulating the product of corresponding entries from said tables and squaring said product w times, and examining further windows repeatedly until said shared key is computed.
6. The cryptographic system of claim 1 wherein said first cryptographic unit is configured for performing said first simultaneous exponentiation by:
- storing values of said first and second exponents in first and second registers respectively, each register having an associated pointer;
- using said pointers to selectively accumulate and multiply corresponding values stored in said registers; and
- repeatedly multiplying said values until said shared key is computed.
7. The cryptographic system of claim 1 wherein said first cryptographic unit is configured for performing elliptic curve operations.
8. The cryptographic system of claim 7 wherein said first cryptographic unit is configured for performing said first simultaneous exponentiation by performing simultaneous multiple scaler scalar multiplication using a window of width w and tables of small exponentiations scalar multiples of said second short term public key and said second long term public key.
9. The cryptographic system of claim 1 wherein said first cryptographic unit is configured for implementing cryptographic protocols from instructions provided by software, said software being stored on a memory.
10. A cryptographic unit for generating a shared key in an a Menezes-Qu-Vanstone (MQV) key generation protocol, said cryptographic unit configured for:
- a) providing a first short term public key;
- b) obtaining a second short term public key;
- c) computing a first exponent derived from a first short term private key, said first short term public key, and a first long term private key;
- d) computing a second exponent derived from said first short term private key, said first short term public key, a second short term public key, and said first long term private key;
- e) computing a simultaneous exponentiation of, by said first exponent with, of said second short term public key and, by said second exponent with, of a second long term public key; and
- f) generating said shared key using a result of said simultaneous exponentiation.
11. The cryptographic unit of claim 10 configured for performing a) in parallel with a first corresponding step performed by another cryptographic unit, for performing b) in parallel with a second corresponding step performed by said another cryptographic unit, for performing c) and d) in parallel with third and fourth corresponding steps performed by said another cryptographic unit, and for performing e) and f) in parallel with fifth and sixth corresponding steps performed by said another cryptographic unit.
12. The cryptographic unit of claim 10 wherein said cryptographic unit is configured for performing said simultaneous exponentiation by:
- establishing a window of width w;
- establishing a table of small exponentiations of said second short term public key, and a table of small exponentiations of said second long term public key to provide a series of potential exponentiations representing said first and second exponents; and
- examining said tables using said window w until said shared key is computed.
13. The cryptographic unit of claim 12 wherein said examining said tables includes retrieving the corresponding powers of values of said second short term public key and said second long term public key within said window w, accumulating the product of corresponding entries from said tables and squaring said product w times, and examining further windows repeatedly until said shared key is computed.
14. The cryptographic unit of claim 10 wherein said cryptographic unit is configured for performing said simultaneous exponentiation by:
- storing values of said first and second exponents in first and second registers respectively, each register having an associated pointer;
- using said pointers to selectively accumulate and multiply corresponding values stored in said registers; and
- repeatedly multiplying said values until said shared key is computed.
15. The cryptographic unit of claim 10 wherein said cryptographic unit is configured for performing elliptic curve operations.
16. The cryptographic unit of claim 15 wherein said cryptographic unit is configured for performing said simultaneous exponentiation by performing simultaneous multiple scalar multiplication using a window of width w and tables of small exponentiations scalar multiples of said second short term public key and said second long term public key.
17. The cryptographic unit of claim 10 wherein said cryptographic unit is configured for implementing cryptographic protocols from instructions provided by software, said software being stored on a memory.
18. A non-transitory computer readable medium operable with a cryptographic unit, said computer readable medium having instructions for generating a shared key in an a Menezes-Qu-Vanstone (MQV) key generation protocol, said instructions comprising instructions for:
- a) providing a first short term public key;
- b) obtaining a second short term public key;
- c) computing a first exponent derived from a first short term private key, said first short term public key, and a first long term private key;
- d) computing a second exponent derived from said first short term private key, said first short term public key, a second short term public key, and said first long term private key;
- e) computing a simultaneous exponentiation of, by said first exponent with, of said second short term public key and, by said second exponent with, of a second long term public key; and
- f) generating said shared key using a result of said simultaneous exponentiation.
19. The computer readable medium of claim 18 wherein said instructions are configured for performing said simultaneous exponentiation by:
- establishing a window of width w;
- establishing a table of small exponentiations of said second short term public key, and a table of small exponentiations of said second long term public key to provide a series of potential exponentiations representing said first and second exponents; and
- examining said tables using said window w until said shared key is computed.
20. The computer readable medium of claim 18 wherein said instructions are configured for performing said simultaneous exponentiation by:
- storing values of said first and second exponents in first and second registers respectively, each register having an associated pointer;
- using said pointers to selectively accumulate and multiply corresponding values stored in said registers; and
- repeatedly multiplying said values until said shared key is computed.
5761305 | June 2, 1998 | Vanstone et al. |
5889865 | March 30, 1999 | Vanstone et al. |
5896455 | April 20, 1999 | Vanstone et al. |
5987131 | November 16, 1999 | Clapp |
5999627 | December 7, 1999 | Lee et al. |
6122736 | September 19, 2000 | Vanstone et al. |
6490352 | December 3, 2002 | Schroeppel |
7051200 | May 23, 2006 | Manferdelli et al. |
7062044 | June 13, 2006 | Solinas |
7127063 | October 24, 2006 | Lambert et al. |
7215780 | May 8, 2007 | Lambert et al. |
20020044649 | April 18, 2002 | Gallant et al. |
20030123655 | July 3, 2003 | Lambert et al. |
20050251680 | November 10, 2005 | Brown et al. |
- Möller, Bodo; “Algorithms for Multi-Exponentiation”, Selected Areas in Cryptography—SAC 2001, Springer Verlag LNCS 2259, pp. 165-180, ISBN 3-540-43066-0.
- Yen, S.-M. et al.; “Multi-Exponentiation”, IEEE Proc. Comput. Digit. Tech., vol. 141, No. 6, Nov. 1994; pp. 325-326.
Type: Grant
Filed: Mar 30, 2011
Date of Patent: Nov 6, 2012
Assignee: Certicom Corp. (Mississauga)
Inventors: Robert Lambert (Cambridge), Ashok Vadekar (Rockwood)
Primary Examiner: Kaveh Abrishamkar
Attorney: Blake, Cassels & Graydon LLP
Application Number: 13/075,988
International Classification: H04L 9/00 (20060101); H04L 9/28 (20060101); H04L 9/30 (20060101);