Multiple hashing in a cryptographic scheme
View Patent ↗Methods, systems, and computer programs for producing hash values are disclosed. A first hash value is obtained by applying a first hash function to a first input. The first input can be based on an implicit certificate, a message to be signed, a message to be verified, or other suitable information. A second hash value is obtained by applying a second hash function to a second input. The second input is based on the first hash value. The second hash value is used in a cryptographic scheme. In some instances, a public key or a private key is generated based on the second hash value. In some instances, a digital signature is generated based on the second hash value, or a digital signature is verified based on the second hash value, as appropriate.
1. A computer-implemented method comprising:
accessing an implicit certificate associated with an entity;
obtaining a first input by concatenating a κ-bit constant with the implicit certificate;
obtaining a first hash value by applying a first hash function to a first input, the first input based on the implicit certificate, the first hash function being configured to produce a κ-bit output;
obtaining a second hash value by applying a second hash function to a second input, the second input based on the first hash value; and
generating, by data processing apparatus, a public key associated with the entity based on the second hash value.
2. The method of claim 1 , wherein the first hash function and the second hash function are the same hash function.
3. The method of claim 1 , wherein the first hash function and the second hash function are two different hash functions.
4. The method of claim 3 , wherein the second input is the first hash value.
5. The method of claim 3 , wherein the second hash function is configured to produce a κ-bit output.
6. The method of claim 1 , wherein the public key associated with the entity is an elliptic curve point Q U , and generating the public key associated with the entity includes:
extracting from the implicit certificate an elliptic curve point P U that represents a public key reconstruction value;
accessing an elliptic curve point Q CA that represents a public key of a certificate authority that issued the implicit certificate; and
computing the elliptic curve point Q U =eP U +Q CA , where e is the second hash value.
7. The method of claim 1 , further comprising using the public key to encrypt a message to the entity.
8. The method of claim 1 , further comprising using the public key to authenticate a message from the entity.
9. The method of claim 1 , wherein the method is performed by data processing apparatus associated with the entity.
10. The method of claim 1 , wherein the method is performed by data processing apparatus associated with a certificate authority that issued the implicit certificate.
11. The method of claim 1 , wherein the method is performed by data processing apparatus associated with a correspondent, other than the entity, that validates the public key based on the implicit certificate.
12. The method of claim 1 , wherein the public key is generated based on the second hash value by:
obtaining a third hash value by applying a third hash function to the second hash value; and
generating the public key based directly on the third hash value and additional values.
13. A computing system comprising:
a hash module operable to:
obtain a first input by concatenating a κ-bit constant with an implicit certificate associated with an entity;
obtain a first hash value by applying a first hash function to a first input, the first input based on the implicit certificate, the first hash function being configured to produce a κ-bit output; and
obtain a second hash value by applying a second hash function to a second input, the second input based on the first hash value; and
a key generation module operable to generate a public key associated with the entity based on the second hash value.
14. The computing system of claim 13 , wherein the κ-bit constant comprises a κ-bit string of zeros.
15. The computing system of claim 13 , wherein the first hash function and the second hash function are the same hash function.
16. The computing system of claim 13 , wherein the first hash function and the second hash function are two different hash functions, and the second input is the first hash value.
17. A non-transitory computer-readable medium storing instructions that are operable when executed by data processing apparatus to perform operations comprising:
obtaining a first input by concatenating a κ-bit constant with an implicit certificate associated with an entity;
obtaining a first hash value by applying a first hash function to a first input, the first input based on the implicit certificate, the first hash function being configured to produce a κ-bit output;
obtaining a second hash value by applying a second hash function to a second input, the second input based on the first hash value; and
generating a public key associated with the entity based on the second hash value.
18. The computer-readable medium of claim 17 , wherein the κ-bit constant comprises a κ-bit string of zeros.
19. The computer-readable medium of claim 17 , wherein the first hash function and the second hash function are the same hash function.
20. The computer-readable medium of claim 17 , wherein the first hash function and the second hash function are two different hash functions, and the second input is the first hash value.