IP Library Granted Patent US 8,850,199
Granted Patent B2
US 8,850,199 · App. 13/458,357 · Granted Sep 30, 2014

Hashing prefix-free values in a signature scheme

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,850,199
App. No.
13/458,357
Granted
Sep 30, 2014
Kind
B2
Abstract

Methods, systems, and computer programs for producing hash values are disclosed. A prefix-free value is obtained based on input data. The prefix-free value can be based on an implicit certificate, a message to be signed, a message to be verified, or other suitable information. A hash value is obtained by applying a hash function to the prefix-free value. The hash value is used in a cryptographic scheme. In some instances, a public key or a private key is generated based on the hash value. In some instances, a digital signature is generated based on the hash value, or a digital signature is verified based on the hash value, as appropriate.

Claims (59)

1. A computer-implemented method comprising:

accessing a message from an entity, the message comprising an encoded message part C and a second message part V;

accessing a signature associated with the message;

converting the message to a prefix-free value, wherein converting the message to a prefix-free value includes converting C∥V to a prefix-free value, where C∥V represents the encoded message part C concatenated with the second message part V;

obtaining a hash value by applying a hash function to the prefix-free value; and

verifying, by data processing apparatus, the signature based on the hash value, wherein verifying the signature comprises:

computing an elliptic curve point Q′=sG+eG A , where s is an integer that represents the signature, G is an elliptic curve point that represents a base point generator, e is an integer that represents the hash value, and G A is an elliptic curve point that represents a public key of the entity;

using a key derivation function to derive a key K′ based on the elliptic curve point Q′;

using a decoding function to compute a recovered message M′ based on the key K′ and the encoded message part C; and

verifying that the recovered message M′ is valid.

2. The method of claim 1 , wherein converting the message to a prefix-free value comprises:

generating a first value that indicates a length of the message; and

producing the prefix-free value by prepending the first value to the message.

3. The method of claim 2 , further comprising dividing the message into a plurality of blocks, wherein the first value indicates a length of the message in units of blocks.

4. The method of claim 2 , wherein the first value indicates a length of the message in units of bytes.

5. The method of claim 1 , wherein converting the message to a prefix-free value comprises:

dividing the message into a plurality of blocks, the plurality of blocks including a first plurality of blocks and a last block;

appending a zero bit to each of the first plurality of blocks; and

appending a one bit to the last block.

6. The method of claim 1 , wherein converting the message to a prefix-free value comprises converting the message to a format in which the message has a predetermined length.

7. The method of claim 1 , wherein the message from the entity includes one or more encoded message parts, and verifying the signature associated with the message includes recovering one or more unencoded message parts from the encoded message parts.

8. A computing system comprising:

memory;

a hash module comprising computer-readable instructions stored on the memory and operable to:

convert a message, associated with an entity, to a prefix-free value, the message comprising an encoded message part C and a second message part V, wherein converting the message to a prefix-free value includes converting C∥V to a prefix-free value, where C∥V represents the encoded message part C concatenated with the second message part V; and

obtain a hash value by applying a hash function to the prefix-free value; and

a verification module comprising computer-readable instructions stored on the memory and operable to:

access a signature associated with the message; and

verify the signature based on the hash value, wherein verifying the signature comprises:

computing an elliptic curve point Q′=sG+eG A , where s is an integer that represents the signature, G is an elliptic curve point that represents a base point generator, e is an integer that repsresents the hash value and G A is an elliptic curve point that represents a public key of entity

using a key derivation function to derive a key K′ based on the elliptic curve point Q′;

using a decoding function to compute a recovered message M′ based on the key K′ and the encoded message part C; and

verifying that the recovered message M′ is valid.

9. The computing system of claim 8 , wherein the hash module comprises computer-readable instructions that are operable to convert the message to a prefix-free value by:

generating a first value that indicates a length of the message; and

producing the prefix-free value by prepending the first value to the message.

10. The computing system of claim 8 , wherein the hash module comprises computer-readable instructions that are operable to convert the message to a prefix-free value by:

dividing the message into a plurality of blocks, the plurality of blocks including a first plurality of blocks and a last block;

appending a zero bit to each of the first plurality of blocks; and

appending a one bit to the last block.

11. The computing system of claim 8 , wherein the hash module comprises computer-readable instructions that are operable to convert the message to a prefix-free value by converting the message to a format in which the message has a predetermined length.

12. A non-transitory computer-readable medium storing instructions that are operable when executed by data processing apparatus to perform operations comprising:

converting a message, associated with an entity, to a prefix-free value, the message comprising an encoded message part C and a second message part V, converting the message to a prefix-free value includes converting C∥V to a prefix-free value, where C∥V represents the encoded message part C concatenated with the second message part V;

accessing a signature associated with the message;

obtaining a hash value by applying a hash function to the prefix-free value; and

verifying the signature based on the hash value, wherein verifying the signature comprises:

computing an elliptic curve point Q′=sG+eG A , where s is an integer that represents the signature, G is an elliptic curve point that represents a base point generator, e is an integer that represents the hash value, and G A is an elliptic curve point that represents a public key of the entity;

using a key derivation function to derive a key K′ based on the elliptic curve point Q′;

using a decoding function to compute a recovered message M′ based on the key K′ and the encoded message part C; and

verifying that the recovered message M′ is valid.

13. The computer-readable medium of claim 12 , wherein converting the message to a prefix-free value comprises:

generating a first value that indicates a length of the message; and

producing the prefix-free value by prepending the first value to the message.

14. The computer-readable medium of claim 12 , wherein converting the message to a prefix-free value comprises:

dividing the message into a plurality of blocks, the plurality of blocks including a first plurality of blocks and a last block;

appending a zero bit to each of the first plurality of blocks; and

appending a one bit to the last block.

15. The computer-readable medium of claim 12 , wherein converting the message to a prefix-free value comprises converting the message to a format in which the message has a predetermined length.

16. The computer-readable medium of claim 12 , wherein the message from the entity includes one or more encoded message parts, and verifying the signature associated with the message includes recovering one or more unencoded message parts from the encoded message parts.

Assignments (9)
CORRECTIVE ASSIGNMENT TO CORRECT 12817157 APPLICATION NUMBER PREVIOUSLY RECORDED AT REEL: 064015 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 5, 2023
From: OT PATENT ESCROW, LLC
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064807/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE COVER SHEET AT PAGE 50 TO REMOVE 12817157 PREVIOUSLY RECORDED ON REEL 063471 FRAME 0474. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 5, 2023
From: BLACKBERRY LIMITED
To: OT PATENT ESCROW, LLC
Reel/Frame 064806/0669 →
NUNC PRO TUNC ASSIGNMENT Recorded Jun 19, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064066/0001 →
NUNC PRO TUNC ASSIGNMENT Recorded Jun 16, 2023
From: OT PATENT ESCROW, LLC
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064015/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 27, 2023
From: BLACKBERRY LIMITED
To: OT PATENT ESCROW, LLC
Reel/Frame 063471/0474 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 2, 2019
From: CERTICOM CORP.
To: BLACKBERRY LIMITED
Reel/Frame 050610/0937 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2012
From: CERTICOM (U.S.) LIMITED
To: CERTICOM CORP.
Reel/Frame 029106/0660 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2012
From: ZAVERUCHA, GREGORY MARC
To: CERTICOM CORP.
Reel/Frame 028866/0505 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2012
From: KRAVITZ, DAVID WILLIAM
To: CERTICOM (U.S.) LIMITED
Reel/Frame 028866/0598 →