Claims
- 1. A method of encoding and decoding a digital message communicated between a first entity and a second entity, wherein the first entity and the second entity both know a non-interactive shared secret, comprising:
selecting a first random secret that is known to the first entity and unknown to the second entity; determining a first intermediate shared secret component using the first random secret and a system parameter; communicating the first intermediate shared secret component to the second entity; selecting a second random secret that is known to the second entity and unknown to the first entity; determining a second intermediate shared secret component using the second random secret and a system parameter; communicating the second intermediate shared secret component to the first entity; confirming that the first entity knows the non-interactive shared secret; confirming that the second entity knows the non-interactive shared secret; determining an interactive shared secret using the first random secret, the second random secret, and the system parameter; determining a symmetric key using at least the interactive shared secret; encoding the digital message using the symmetric key; and decoding the digital message using the symmetric key.
- 2. A method of authenticating the content of a digital message communicated between a first entity and a second entity, wherein the first entity and the second entity both know a non-interactive shared secret, comprising:
selecting a first random secret that is known to the first entity and unknown to the second entity; determining a first intermediate shared secret component using the first random secret and a system parameter; communicating the first intermediate shared secret component to the second entity; selecting a second random secret that is known to the second entity and unknown to the first entity; determining a second intermediate shared secret component using the second random secret and a system parameter; communicating the second intermediate shared secret component to the first entity; confirming that the first entity knows the non-interactive shared secret; confirming that the second entity knows the non-interactive shared secret; determining an interactive shared secret using the first random secret, the second random secret, and the system parameter; determining a symmetric key using at least the interactive shared secret; generating a message authentication code using the symmetric key; and confirming the message authentication code using the symmetric key.
- 3. A method of determining a shared secret between a first entity and a second entity in a cryptosystem, wherein the first entity and the second entity both know a non-interactive shared secret, comprising:
selecting a first random secret that is known to the first entity and unknown to the second entity; determining a first intermediate shared secret component using the first random secret and a system parameter; communicating the first intermediate shared secret component to the second entity; selecting a second random secret that is known to the second entity and unknown to the first entity; determining a second intermediate shared secret component using the second random secret and a system parameter; communicating the second intermediate shared secret component to the first entity; determining an interactive shared secret using the first random secret, the second random secret, and the system parameter; confirming that the first entity knows the non-interactive shared secret; confirming that the second entity knows the non-interactive shared secret; and determining the shared secret using at least the interactive shared secret.
- 4. A method of determining a shared secret as in claim 3, wherein:
the first entity's knowledge of the non-interactive shared secret is confirmed by determining the shared secret using both the interactive shared secret and the non-interactive shared secret; and the second entity's knowledge of the non-interactive shared secret is confirmed by determining the shared secret using both the interactive shared secret and the non-interactive shared secret.
- 5. A method of determining a shared secret as in claim 3, wherein:
the first entity's knowledge of the non-interactive shared secret is confirmed by:
determining a first message authentication code for the first intermediate shared secret using the non-interactive shared secret; communicating the first message authentication code to the second entity; and confirming the first message authentication code using the non-interactive shared secret; and the second entity's knowledge of the non-interactive shared secret is confirmed by:
determining a second message authentication code for the second intermediate shared secret using the non-interactive shared secret; communicating the second message authentication code to the first entity; and confirming the second message authentication code using the non-interactive shared secret.
- 6. A method of determining a shared secret between a first entity and a second entity in a cryptosystem, wherein a first public key PA in a first cyclic group is associated with the first entity, a second public key PB in the first group is associated with the second entity, a master secret s in the ring is associated with a private key generator, a first private key SA=sPA is associated with the first entity, a second private key SB=sPB is associated with the second entity, and both the first entity and the second entity know a non-interactive shared secret SAB=ê(PA, SB)=ê(SA, PB), wherein e is a bilinear function and SAB is an element in the second cyclic group the method comprising:
selecting a first random integer a; calculating a first intermediate shared secret component ga, wherein g is a predetermined element of a second cyclic group ; communicating the first intermediate shared secret component ga to the second entity; selecting a second random integer b; calculating a second intermediate shared secret component gb; communicating the second intermediate shared secret component gb to the first entity; calculating an interactive shared secret gab=(ga)b; =(gb)a; confirming that the first entity knows the non-interactive shared secret SAB; confirming that the second entity knows the non-interactive shared secret SAB; and determining the shared secret using at least the interactive shared secret gab.
- 7. A method of determining a shared secret as in claim 6, wherein the first cyclic group is an additive group of points on a supersingular elliptic curve, and the second cyclic group is a multiplicative subgroup of a finite field.
- 8. A method of determining a shared secret as in claim 6, wherein the first cyclic group is an additive group of points on a supersingular abelian variety, and the second cyclic group is a multiplicative subgroup of a finite field.
- 9. A method of determining a shared secret as in claim 6, wherein the first cyclic group and the second cyclic group both are of a large prime order l.
- 10. A method of determining a shared secret as in claim 6, wherein:
the first entity's knowledge of the non-interactive shared secret SAB is confirmed by determining the shared secret using both the interactive shared secret gab and the non-interactive shared secret SAB; and the second entity's knowledge of the non-interactive shared secret SAB is confirmed by determining the shared secret using both the interactive shared secret gab and the non-interactive shared secret SAB.
- 11. A method of determining a shared secret as in claim 6, wherein:
the first entity's knowledge of the non-interactive shared secret is confirmed by:
determining a first message authentication code for the first intermediate shared secret ga using the non-interactive shared secret SAB; communicating the first message authentication code to the second entity; and confirming the first message authentication code using the non-interactive shared secret SAB; and the second entity's knowledge of the non-interactive shared secret is confirmed by:
determining a second message authentication code for the second intermediate shared secret gb using the non-interactive shared secret SAB; communicating the second message authentication code to the first entity; and confirming the second message authentication code using the non-interactive shared secret SAB.
- 12. A method of determining a shared secret between a first entity and a second entity in a cryptosystem, wherein a first public key PA in a first cyclic group is associated with the first entity, a second public key PB in the first group is associated with the second entity, a master secret s in the ring is associated with a private key generator, a first private key SA=sPA is associated with the first entity, a second private key SB=sPB is associated with the second entity, and both the first entity and the second entity know a non-interactive shared secret SAB=ê(PA, SB)=ê(SA, PB), wherein e is a bilinear function and SAB is an element in the second cyclic group , the method comprising:
selecting a first random integer a; calculating a first intermediate shared secret component aP, wherein P is a predetermined element of a second cyclic group communicating the first intermediate shared secret component aP to the second entity; selecting a second random integer b; calculating a second intermediate shared secret component bP; communicating the second intermediate shared secret component bP to the first entity; calculating an interactive shared secret abP=a(bP)=b(aP); and confirming that the first entity knows the non-interactive shared secret SAB; confirming that the second entity knows the non-interactive shared secret SAB; and determining the shared secret using at least the interactive shared secret abP.
- 13. A method of determining a shared secret as in claim 12, wherein the first cyclic group is an additive group of points on a supersingular elliptic curve, and the second cyclic group is a multiplicative subgroup of a finite field.
- 14. A method of determining a shared secret as in claim 12, wherein the first cyclic group G is an additive group of points on a supersingular abelian variety, and the second cyclic group is a multiplicative subgroup of a finite field.
- 15. A method of determining a shared secret as in claim 12, wherein the first cyclic group G and the second cyclic group both are of a large prime order l.
- 16. A method of determining a shared secret as in claim 6, wherein:
the first entity's knowledge of the non-interactive shared secret SAB is confirmed by determining the shared secret using both the interactive shared secret abP and the non-interactive shared secret SAB; and the second entity's knowledge of the non-interactive shared secret SAB is confirmed by determining the shared secret using both the interactive shared secret abP and the non-interactive shared secret SAB.
- 17. A method of determining a shared secret as in claim 6, wherein:
the first entity's knowledge of the non-interactive shared secret is confirmed by:
determining a first message authentication code for the first intermediate shared secret aP using the non-interactive shared secret SAB; communicating the first message authentication code to the second entity; and confirming the first message authentication code using the non-interactive shared secret SAB; and the second entity's knowledge of the non-interactive shared secret is confirmed by:
determining a second message authentication code for the second intermediate shared secret bP using the non-interactive shared secret SAB; communicating the second message authentication code to the first entity; and confirming the second message authentication code using the non-interactive shared secret SAB.
- 18. A system for encoding and decoding a digital message communicated between a first entity and a second entity, wherein the first entity and the second entity both know a non-interactive shared secret, comprising:
a first memory associated with the first entity, the first memory operable to store at least a first random secret that is not known to the second entity, a system parameter, a first intermediate shared secret component, a second intermediate shared secret component, an interactive shared secret, and a symmetric key; a second memory associated with the second entity, the second memory operable to store at least a second random secret that is not known to the first entity, the system parameter, the first intermediate shared secret component, the second intermediate shared secret component, the interactive shared secret, and the symmetric key; a first processor associated with the first entity, the first processor operable to select the first random secret, to determine the first intermediate shared secret component using the first random secret and the system parameter, to communicate the first intermediate shared secret component to the second entity, to receive the second intermediate shared secret component from the second entity, to determine the interactive shared secret using the first random secret and the second intermediate shared secret component, to confirm that the second entity knows the non-interactive shared secret, to determine the symmetric key using at least the interactive shared secret, to encode the message using the symmetric key, and to communicate the encoded message to the second entity; and a second processor associated with the second entity, the second processor operable to select the second random secret, to determine the second intermediate shared secret component using the second random secret and the system parameter, to communicate the second intermediate shared secret component to the first entity, to receive the first intermediate shared secret component from the first entity, to determine the interactive shared secret using the second random secret and the first intermediate shared secret component, to confirm that the first entity knows the non-interactive shared secret, to determine the symmetric key using at least the interactive shared secret, to receive the encoded message from the first entity; and to decode the encoded message using the symmetric key.
- 19. A system for authenticating a digital message communicated between a first entity and a second entity, wherein the first entity and the second entity both know a non-interactive shared secret, comprising:
a first memory associated with the first entity, the first memory operable to store at least a first random secret that is not known to the second entity, a system parameter, a first intermediate shared secret component, a second intermediate shared secret component, an interactive shared secret, and a symmetric key; a second memory associated with the second entity, the second memory operable to store at least a second random secret that is not known to the first entity, the system parameter, the first intermediate shared secret component, the second intermediate shared secret component, the interactive shared secret, and the symmetric key; a first processor associated with the first entity, the first processor operable to select the first random secret, to determine the first intermediate shared secret component using the first random secret and the system parameter, to communicate the first intermediate shared secret component to the second entity, to receive the second intermediate shared secret component from the second entity, to determine the interactive shared secret using the first random secret and the second intermediate shared secret component, to confirm that the second entity knows the non-interactive shared secret, to determine the symmetric key using at least the interactive shared secret, to generate a message authentication code using the symmetric key, and to communicate the message authentication code to the second entity; and a second processor associated with the second entity, the second processor operable to select the second random secret, to determine the second intermediate shared secret component using the second random secret and the system parameter, to communicate the second intermediate shared secret component to the first entity, to receive the first intermediate shared secret component from the first entity, to determine the interactive shared secret using the second random secret and the first intermediate shared secret component, to confirm that the second entity knows the non-interactive shared secret, to determine the symmetric key using at least the interactive shared secret, to receive the message authentication code from the first entity; and to confirm the message authentication code using the symmetric key.
RELATED APPLICATIONS
[0001] Applicants hereby claim priority under 35 U.S.C. §119(e) to provisional U.S. patent applications Ser. No. 60/366,292, filed on Mar. 21, 2002, and Ser. No. 60/366,196, filed on Mar. 21, 2002, both of which are incorporated herein by reference.
Provisional Applications (2)
|
Number |
Date |
Country |
|
60366292 |
Mar 2002 |
US |
|
60366196 |
Mar 2002 |
US |