IP Library › Granted Patent US 12,395,350
Granted Patent B2
US 12,395,350 · App. 17/932,013 · Granted Aug 19, 2025

Signature verifications using Merkle signature schemes

Inventors: Maugan Cedric Villatel (Bristol, GB); Thalia May Laing (Bristol, GB); Ilja Siros (Grenoble, FR)
Assignee: Hewlett-Packard Development Company, L.P.
H04L9/3247H04L9/3239
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 12,395,350
App. No.
17/932,013
Granted
Aug 19, 2025
Kind
B2
Abstract

Examples relate to machine readable storage storing instructions arranged, when processed, to realise methods of verifying as valid a received signature, associated with a respective received message, generated using a Merkle Signature Scheme comprising a Merkle Tree, the Merkel Tree comprising a root node, a number of leaf nodes and a number of intermediate nodes disposed between the root node and the leaf nodes; the instructions comprising instructions to: calculate a hash value in response to receiving the respective message; determine that the calculated hash value corresponds to a stored previously verified hash value calculated in response to a previously received message, and verify the received signature as valid based on the stored previously verified hash value.

Claims (55)

1. A non-transitory machine-readable storage storing machine-instructions arranged, when processed by a processor, to

verify as valid a signature generated using a Merkle Signature Scheme comprising a Merkle Tree, the Merkle Tree comprising:

a root node;

a number of leaf nodes; and

a plurality of intermediate nodes disposed between the root node and the leaf nodes;

wherein verifying the signature as valid includes:

receiving the signature and a message associated with the signature;

deriving a candidate public key from the signature and the message;

calculating a hash value in response to receiving the message;

calculating a first hash value using the candidate public key;

determining that the first hash value corresponds to a stored previously verified second hash value, wherein the stored previously verified second hash value was calculated in response to a previously received message; and

verifying the candidate public key as valid based on the stored previously verified second hash value, wherein verifying the candidate public key verifies the signature.

2. The non-transitory machine-readable storage of claim 1 , comprising further instructions that, when executed by the processor, cause the processor to calculate a hash value related to the root node in response to receiving the message.

3. The non-transitory machine-readable storage of claim 1 , comprising further instructions that, when executed by the processor, cause the processor to, in response to receiving the message, calculate a hash value associated with an authentication path related to the message.

4. The non-transitory machine-readable storage of claim 1 , wherein the Merkle Tree is a multi-tree Merkle Tree comprising a number of subtrees, and wherein each subtree comprises an independent subtree root node, and wherein the number of leaf nodes and a number of intermediate nodes are disposed between the subtree root node and leaf nodes, and further wherein the root node is associated with one of the subtrees.

5. The non-transitory machine-readable storage of claim 4 , comprising further instructions that, when executed by the processor, cause the processor to, in response to receiving the message, calculate the hash value associated with a respective root node of a subtree of the number of subtrees.

6. The non-transitory machine-readable storage of claim 1 , wherein the Merkle tree comprises:

2 h one-time key pairs (sk j , pk j ), where 0≤j<2 h , and

wherein the previously stored previously verified second hash value associated with the previously received message comprises:

one or more than one of a plurality of hash values q 1 , . . . , q 2 h+1 −1 where q i =H(q 2i ∥q 2i+1 ) for 1≤i<2 h , q 2 h +j =H(pk (j) ) for 0≤j<2 h and an overall public key is Y=q 1 .

7. The non-transitory machine-readable storage of claim 1 , comprising further instructions that, when executed by the processor, cause the processor to calculate, verify and store the second hash value calculated in response to the previously received message.

8. The non-transitory machine-readable storage of claim 1 , comprising further instructions that, when executed by the processor, cause the processor to terminate traversing of the Merkle Tree at a node of a subtree corresponding to the first hash value that corresponds to the stored previously verified second hash value in response to verifying the received signature as valid based on the stored previously verified second hash value associated with the previously received message.

9. The non-transitory machine-readable storage of claim 1 , comprising further instructions that, when executed by the processor, cause the processor to:

traverse the Merkle Tree from a leaf node associated with the message having a respective authentication path comprising at least respective intermediate nodes, wherein traversing the Merkle Tree includes:

calculating a hash value in response to receiving the message;

determining that the first hash value corresponds to a stored previously verified second hash value calculated in response to the previously received message; and

verify the received signature as valid based on the stored previously verified second hash value calculated in response to the previously received message and

terminate the traversing of the Merkle Tree in response to the verification of the received signature as valid based on the stored previously verified second hash value calculated in response to the previously received message, wherein terminating at a root node of a subtree corresponds to the first hash value corresponding to the stored previously verified second hash value.

10. The non-transitory machine-readable storage of claim 1 , comprising further instructions that, when executed by the processor, cause the processor to:

traverse the Merkle Tree from a leaf node associated with the message having a respective authentication path comprising at least respective intermediate nodes, wherein traversing the Merkle Tree includes:

calculating a hash value in response to receiving the message;

determining that the first hash value corresponds to a stored previously verified second hash value calculated in response to the previously received message; and

verifying the received signature as valid based on the stored previously verified second hash value; and

terminating traversing of the Merkle Tree in response to verifying the received signature as valid based on the stored previously verified second hash value associated with the previously received message, wherein terminating being at an intermediate node corresponding to the first hash value corresponding to the stored previously verified second hash value.

11. A computing device comprising:

a non-transitory memory storing instructions for verifying code as authentic, wherein the code comprises an associated received signature generated using a hash based signature scheme comprising a tree structure, and wherein the tree structure comprises:

a root node;

a number of leaf nodes; and

a number of intermediate nodes disposed between the root node and the leaf nodes; and

a processor in communication with the non-transitory memory, wherein the processor is to:

receive a portion of data associated with the code and the signature, wherein the portion of data associated with the code is one of a number of portions of data associated with the code;

derive a candidate public key from the signature and the portion of data associated with the code;

calculate a first hash value in response to receiving the portion of data associated with the code;

determine that the first hash value corresponds to a stored previously verified second hash value calculated in response to receiving a previously received portion of data associated with the code; and

verify the candidate public key as valid based on the previously verified second hash value calculated in response to receiving the previously received portion of data associated with the code, wherein verifying the candidate public key verifies the signature.

12. The computing device of claim 11 , wherein the processor is further to verify the code as authentic in response to verifying as authentic each portion of data of the number of portions of data.

13. A non-transitory computer-readable medium comprising instructions that, when executed by a processor, cause the processor to:

verify as valid a current composite signature associated with a currently received message, wherein the current composite signature comprises a number of signatures;

verify as valid a previously received composite signature, comprising a number of previously received signatures, associated with a previously received message including verifying as valid the number of previously received signatures;

verify as valid a signature of the number of signatures of the current composite signature; and

establish that a further signature of the number of signatures of the current composite signature is common to a previously received signature that was previously verified as valid, the previously received signature being one of the number of previously received signatures.

14. The non-transitory computer-readable medium of claim 13 , comprising further instructions that, when executed by the processor, cause the processor to:

verify as valid a previously received composite signature, comprising a number of previously received signatures, associated with the previously received message including instructions to verify as valid the number of previously received signatures; and

verify as valid a previously received signature associated with a root node of a subtree of a Merkle tree used to verify as valid the current composite signature.

15. The non-transitory computer-readable medium of claim 13 , comprising further instructions that, when executed by the processor, cause the processor to store in a data structure a previously received signature that was verified as valid.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2023
From: SIROS, ILJA
To: HP FRANCE SAS
Reel/Frame 062517/0257 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2023
From: HP FRANCE SAS
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 062517/0373 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2023
From: VILLATEL, MAUGAN CEDRIC; LAING, THALIA MAY
To: HP UK DEVELOPMENT LIMITED
Reel/Frame 062517/0613 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2023
From: HP UK DEVELOPMENT LIMITED
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 062517/0634 →
Priority Claims (1)
EP 22315063 · Mar 15, 2022 · regional
Continuity (1)
Related Publication 20230299972A1 · Sep 21, 2023
References Cited (11)
US 20170093579A1 · Maximov et al. · 2017 [cited by applicant]
US 20180091309A1 · Misoczki et al. · 2018 [cited by applicant]
US 20190319797A1 · Suresh et al. · 2019 [cited by applicant]
US 20190319800A1 · Misoczki et al. · 2019 [cited by applicant]
US 20190319802A1 · Misoczki et al. · 2019 [cited by applicant]
US 20190319803A1 · Misoczki et al. · 2019 [cited by applicant]
US 20200220735A1 · Praus · 2020 [cited by examiner]
US 20210067321A1 · Lu · 2021 [cited by examiner]
US 20220376923A1 · Esiner · 2022 [cited by examiner]
EP 3506144A1 · 2019 [cited by examiner]
Berbecaru, D., et al., “On the Performance and Use of a Space-Efficient Merkle Tree Traversal Algorithm in Real-Time Applications for Wireless and Sensor Networks,”, IEEE International Conference on Wireless and Mobile … [cited by applicant]