IP Library Granted Patent US 8,675,869
Granted Patent B2
US 8,675,869 · App. 13/070,226 · Granted Mar 18, 2014

Incorporating data into an ECDSA signature component

Inventors: Herbert Anthony Little (Waterloo, CA); Matthew John Campagna (Ridgefield, CT); Scott Alexander Vanstone (Campbellville, CA); Daniel Richard L. Brown (Mississauga, CA)
Assignees: BlackBerry Limited; Certicom Corp.
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,675,869
App. No.
13/070,226
Granted
Mar 18, 2014
Kind
B2
Abstract

During generation of a signature on a message to create a signed message, a signer determines one of the signature components such that particular information can be extracted from the signature component. The particular information may be related to one or more of the signer and the message to be signed. After receiving a signed message purported to be signed by the signer, a verifier can extract the particular information from the signature component.

Claims (119)

1. A computer-implemented method for forming a signed message comprising a signature, the method comprising:

a processor selecting particular information [V A ] to be incorporated in a first signature component [r] of the signature on a message [M] to be signed;

the processor performing an iterative process of generating the first signature component [r] and applying a known function [F] to the first signature component [r], wherein the iterative process is repeated by the processor until applying the known function [F] to the first signature component [r] extracts the particular information [V A ];

the processor calculating a second signature component [s] of the signature from the first signature component [r], from a private key [k A ], from a private integer value [d A ], and from a message-dependent value that is dependent on the message [M]; and

the processor forming the signed message from the first signature component [r], from the second signature component [s], and from one of the message [M] and the message-dependent value.

2. The method as claimed in claim 1 , wherein the particular information [V A ] comprises information related to one or more of the message [M] and a signer of the message [M].

3. The method as claimed in claim 1 , wherein the message-dependent value comprises a hash of the message [Hash(M)].

4. The method as claimed in claim 1 , wherein the iterative process comprises:

the processor selecting the private integer value [d A ] and computing a public value [R] from the private integer value [d A ] and from a generator [G] of a finite cyclic group such that the public value [R] is included in the finite cyclic group;

the processor calculating the first signature component [r] from the public value [R]; and

the processor determining whether applying the known function [F] to the first signature component [r] extracts the particular information [V A ].

5. The method as claimed in claim 4 , wherein in the event that applying the known function [F] to the first signature component [r] does not result in the particular information [V A ], the method further comprises:

the processor selecting a new private integer value [new d A ] and computing a new public value [R] from the new private integer value [new d A ] and from the generator [G] of the finite cyclic group such that the new public value [new R] is included in the finite cyclic group;

the processor calculating a new first signature component [new r] from the new public value [new R]; and

the processor determining whether applying the known function [F] to the new first signature component [new r] extracts the particular information [V A ].

6. The method as claimed in claim 4 , wherein in the event that applying the known function [F] to the first signature component [r] does not result in the particular information [V A ], the method further comprises:

the processor calculating an incremented private integer value [d A +c] as a sum of the private integer value [d A ] and a constant integer [c];

the processor calculating an incremented public value [R+cG] as a sum of the public value [R] and a product of the constant integer [c] and the generator [G], wherein the incremented public value [R+cG] is included in the finite cyclic group; and

the processor determining whether applying the known function [F] to the incremented public value [R+cG] extracts the particular information [V A ].

7. A computer-implemented method for forming a signed message comprising a signature, the method comprising:

a processor selecting particular information [V A ] to be incorporated in a second signature component [s] of the signature on a message [M] to be signed;

the processor performing an iterative process of generating a first signature component [r] of the signature, calculating the second signature component [s] from the first signature component [r], from a private key [k A ], from a private integer value [d A ], and from a message-dependent value that is dependent on the message [M], and applying a known function [F] to the second signature component [s], wherein the iterative process is repeated by the processor until applying the known function [F] to the second signature component [s] extracts the particular information [V A ]; and

the processor forming the signed message from the first signature component [r], from the second signature component [s], and from one of the message [M] and the message-dependent value.

8. The method as claimed in claim 7 , wherein the particular information [V A ] comprises information related to one or more of the message [M] and a signer of the message [M].

9. The method as claimed in claim 7 , wherein the message-dependent value comprises a hash of the message [Hash(M)].

10. The method as claimed in claim 7 , wherein the iterative process comprises:

the processor selecting the private integer value [d A ] and computing a public value [R] from the private integer value [d A ] and from a generator [G] of a finite cyclic group such that the public value [R] is included in the finite cyclic group;

the processor calculating the first signature component [r] from the public value [R];

the processor calculating the second signature component [s] from the first signature component [r], from the private key [k A ], from the private integer value [d A ], and from the message-dependent value; and

the processor determining whether applying the known function [F] to the second signature component [s] extracts the particular information [V A ].

11. The method as claimed in claim 10 , wherein in the event that applying the known function [F] to the second signature component [s] does not result in the particular information [V A ], the method further comprises:

the processor selecting a new private integer value [new d A ] and computing a new public value [R] from the new private integer value [new d A ] and from the generator [G] of the finite cyclic group such that the new public value [new R] is included in the finite cyclic group;

the processor calculating a new first signature component [new r] from the new public value [new R];

the processor calculating a new second signature component [new s] from the new first signature component [new r], from the private key [k A ], from the private integer value [d A ] and from the message-dependent value; and

the processor determining whether applying the known function [F] to the new second signature component [new s] extracts the particular information [V A ].

12. The method as claimed in claim 10 , wherein in the event that applying the known function [F] to the second signature component [s] does not result in the particular information [V A ], the method further comprises:

the processor calculating an incremented private integer value [d A +c] as a sum of the private integer value [d A ] and a constant integer [c];

the processor calculating an incremented public value [R +cG] as a sum of the public value [R] and a product of the constant integer [c] and the generator [G], wherein the incremented public value [R+cG] is included in the finite cyclic group;

the processor calculating a new first signature component [new r] from the incremented public value [R+cG];

the processor calculating a new second signature component [new s] from the new first signature component [new r], from the private key [k A ], from the private integer value [d A ] and from the message-dependent value; and

the processor determining whether applying the known function [F] to the new second signature component [new s] extracts the particular information [V A ].

13. A computer-implemented method for extracting information from a signed message comprising a signature, the method comprising:

a processor receiving the signed message purported to be signed by a signer, the signed message having been formed from a first signature component [r] of the signature, from a second signature component [s] of the signature, and from one of a message [M] and a hash of the message [Hash(M)], wherein Hash is a cryptographic hash function that was used by the signer to calculate the second signature component [s];

the processor extracting the first signature component [r], the second signature component [s], and one of the message [M] and the hash of the message [Hash(M)];

the processor applying a known function [F] to the first signature component [r] or to the second signature component [s] to extract information [V A ]; and

the processor checking the validity of the extracted information [V A ] by:

calculating a first value [u i ] and a second value [u 2 ] using the equations

u 1 =Hash( M ) s −1 (mod n )

u 2 =rs −1 (mod n )

wherein s −1 is the inverse of the second signature component [s], wherein n is the smallest positive prime number such that a product of the prime number [n] and a generator [G] of a finite cyclic group is equal to a point at infinity [O], and wherein Hash(M) has been converted to an integer;

calculating a public value [R] of the signer using the equation

R=u 1 G+u 2 K A

wherein K A is a public key of the signer that forms a key pair with a private key [k A ] of the signer; and

comparing the first signature component [r] to R x (mod n ), wherein R x is the residue of the x-coordinate of the public value [R] of the signer.

14. The method as claimed in claim 13 , wherein the extracted information [V A ] comprises information related to one or more of the signer and the message [M].

15. The method as claimed in claim 13 , wherein checking the validity of the extracted information [V A ] comprises:

the processor checking whether the extracted information [V A ] complies with digital signature management rules accessible by the verifier.

16. A signer device comprising:

a processor;

a communication interface; and

a memory storing code which, when executed by the processor, results in:

selecting particular information [V A ] to be incorporated in a first signature component [r] of a signature on a message [M] to be signed;

performing an iterative process of generating the first signature component [r] and applying a known function [F] to the first signature component [r], wherein the iterative process is repeated until applying the known function [F] to the first signature component [r] extracts the particular information [V A ];

calculating a second signature component [s] of the signature from the first signature component [r], from a private key [k A ], from a private integer value [d A ], and from a message-dependent value that is dependent on the message [M]; and

forming a signed message from the first signature component [r], from the second signature component [s], and from one of the message [M] and the message-dependent value.

17. The signer device as claimed in claim 16 , wherein the particular information [V A ] comprises information related to one or more of the message [M] and a signer of the message [M].

18. The signer device as claimed in claim 16 , wherein the iterative process comprises:

selecting the private integer value [d A ] and computing a public value [R] from the private integer value [d A ] and from a generator [G] of a finite cyclic group such that the public value [R] is included in the finite cyclic group;

calculating the first signature component [r] from the public value [R]; and

determining whether applying the known function [F] to the first signature component [r] extracts the particular information [V A ].

19. The signer device as claimed in claim 18 , wherein in the event that applying the known function [F] to the first signature component [r] does not result in the particular information [V A ], the code, when executed by the processor, further results in:

selecting a new private integer value [new d A ] and computing a new public value [R] from the new private integer value [new d A ] and from the generator [G] of the finite cyclic group such that the new public value [new R] is included in the finite cyclic group;

calculating a new first signature component [new r] from the new public value [new R]; and

determining whether applying the known function [F] to the new first signature component [new r] extracts the particular information [V A ].

20. The signer device as claimed in claim 18 , wherein in the event that applying the known function [F] to the first signature component [r] does not result in the particular information [V A ], the code, when executed by the processor, further results in:

calculating an incremented private integer value [d A +c] as a sum of the private integer value [d A ] and a constant integer [c];

calculating an incremented public value [R +cG] as a sum of the public value [R] and a product of the constant integer [c] and the generator [G], wherein the incremented public value [R+cG] is included in the finite cyclic group; and

determining whether applying the known function [F] to the incremented public value [R+cG] extracts the particular information [V A ].

21. A signer device comprising:

a processor;

a communication interface; and

a memory storing code which, when executed by the processor, results in:

selecting particular information [V A ] to be incorporated in a second signature component [s] of a signature on a message [M] to be signed;

performing an iterative process of generating a first signature component [r] of the signature, calculating the second signature component [s] from the first signature component [r], from a private key [k A ], from a private integer value [d A ], and from a message-dependent value that is dependent on the message [M], and applying a known function [F] to the second signature component [s], wherein the iterative process is repeated until applying the known function [F] to the second signature component [s] extracts the particular information [V A ]; and

forming a signed message from the first signature component [r], from the second signature component [s], and from one of the message [M] and the message-dependent value.

22. The signer device as claimed in claim 21 , wherein the particular information [V A ] comprises information related to one or more of the message [M] and a signer of the message [M].

23. The signer device as claimed in claim 21 , wherein the iterative process comprises:

selecting the private integer value [d A ] and computing a public value [R] from the private integer value [d A ] and from a generator [G] of a finite cyclic group such that the public value [R] is included in the finite cyclic group;

calculating the first signature component [r] from the public value [R];

calculating the second signature component [s] from the first signature component [r], from the private key [k A ], from the private integer value [d A ], and from the message-dependent value; and

determining whether applying the known function [F] to the second signature component [s] extracts the particular information [V A ].

24. The signer device as claimed in claim 23 , wherein in the event that applying the known function [F] to the second signature component [s] does not result in the particular information [V A ], the code, when executed by the processor, further results in:

selecting a new private integer value [new d A ] and computing a new public value [R] from the new private integer value [new d A ] and from the generator [G] of the finite cyclic group such that the new public value [new R] is included in the finite cyclic group;

calculating a new first signature component [new r] from the new public value [new R];

calculating a new second signature component [new s] from the new first signature component [new r], from the private key [k A ], from the private integer value [d A ] and from the message-dependent value; and

determining whether applying the known function [F] to the new second signature component [new s] extracts the particular information [V A ].

25. The signer device as claimed in claim 23 , wherein in the event that applying the known function [F] to the second signature component [s] does not result in the particular information [V A ], the code, when executed by the processor, further results in:

calculating an incremented private integer value [d A +c] as a sum of the private integer value [d A ] and a constant integer [c];

calculating an incremented public value [R+cG] as a sum of the public value [R] and a product of the constant integer [c] and the generator [G], wherein the incremented public value [R +cG] is included in the finite cyclic group;

calculating a new first signature component [new r] from the incremented public value [R+cG];

calculating a new second signature component [new s] from the new first signature component [new r], from the private key [k A ], from the private integer value [d A ] and from the message-dependent value; and

determining whether applying the known function [F] to the new second signature component [new s] extracts the particular information [V A ].

26. A verifier device comprising:

a processor;

a communication interface able to receive a signed message purported to be signed by a signer, the signed message having been formed from a first signature component [r] of a signature, from a second signature component [s] of the signature, and from one of a message [M] and a hash of the message [Hash(M)], wherein Hash is a cryptographic hash function that was used by the signer to calculate the second signature component [s]; and

a memory storing code which, when executed by the processor, results in:

extracting the first signature component [r], the second signature component [s], and one of the message [M] and the hash of the message [Hash(M)];

applying a known function [F] to the first signature component [r] or to the second signature component [s] to extract information [V A ]; and

checking the validity of the extracted information [V A ] by:

calculating a first value [u i ] and a second value [u 2 ] using the equations

u 1 =Hash( M ) s −1 (mod n )

u 2 =rs −1 (mod n )

wherein s 1 is the inverse of the second signature component [s], wherein n is the smallest positive prime number such that a product of the prime number [n] and a generator [G] of a finite cyclic group is equal to a point at infinity [O], and wherein Hash(M) has been converted to an integer;

calculating a public value [R] of the signer using the equation

u 1 =Hash( M ) s −1 (mod n )

wherein K A is a public key of the signer that forms a key pair with a private key [k A ] of the signer; and

comparing the first signature component [r] to R x (mod n ), wherein R x is the residue of the x-coordinate of the public value [R] of the signer.

27. The verifier device as claimed in claim 26 , wherein checking the validity of the extracted information [V A ] comprises:

checking whether the extracted information [V A ] complies with digital signature management rules accessible by the verifier.

Assignments (12)
CORRECTIVE ASSIGNMENT TO CORRECT THE ADDED PATENT NUMBER TO REMOVE PATENT NO. 8,873,407 AT PREVIOUSLY RECORDED ON REEL 64066 FRAME 1. ASSIGNOR(S) HEREBY CONFIRMS THE NUNC PRO TUNC ASSIGNMENT EFFECTIVE DATE MARCH 20, 2023. Recorded Feb 2, 2026
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 074921/0001 →
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 →
CHANGE OF NAME Recorded Jan 22, 2014
From: RESEARCH IN MOTION LIMITED
To: BLACKBERRY LIMITED
Reel/Frame 032113/0594 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 24, 2012
From: CERTICOM (U.S.) LIMITED
To: CERTICOM CORP.
Reel/Frame 028099/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 8, 2011
From: CAMPAGNA, MATTHEW JOHN
To: CERTICOM (U.S.) LIMITED
Reel/Frame 026411/0337 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 8, 2011
From: LITTLE, HERBERT ANTHONY
To: RESEARCH IN MOTION LIMITED
Reel/Frame 026411/0329 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 8, 2011
From: VANSTONE, SCOTT ALEXANDER; BROWN, DANIEL RICHARD L.
To: CERTICOM CORP.
Reel/Frame 026411/0281 →
Continuity (2)
Related Publication 20120243680A1 · Sep 27, 2012
Related Publication 20130064363A2 · Mar 14, 2013