11# Post-Quantum Signatures
22
3- wolfBoot is adding support for post-quantum signatures. At present, support
4- for LMS/HSS (https://www.rfc-editor.org/rfc/rfc8554.html ), and XMSS/XMSS^MT
5- (https://www.rfc-editor.org/rfc/rfc8391.html ) has been added.
3+ wolfBoot is continuously adding support for post-quantum (PQ) signature
4+ algorithms as they mature. At present, support has been added for three NIST
5+ approved PQ signature algorithms:
6+
7+ - ML-DSA: https://csrc.nist.gov/pubs/fips/204/final
8+ - LMS/HSS: https://csrc.nist.gov/projects/stateful-hash-based-signatures
9+ - XMSS/XMSS^MT: https://csrc.nist.gov/projects/stateful-hash-based-signatures
10+
11+ ML-DSA is a PQ lattice-based algorithm, derived from
12+ CRYSTALS-DILITHIUM (a round three NIST finalist).
13+
14+ LMS/HSS and XMSS/XMSS^MT are both PQ stateful hash-based signature (HBS)
15+ schemes, recommended in NIST SP 800-208.
16+
17+ In terms of relative tradeoffs:
18+ - All three methods have fast verifying operations.
19+ - All three methods have variable length signature sizes.
20+ - ML-DSA key generation is much faster than LMS/HSS and XMSS/XMSS^MT.
21+ - ML-DSA public keys are larger than LMS/HSS and XMSS/XMSS^MT, and
22+ variable sized.
23+ - LMS/HSS and XMSS/XMSS^MT have stateful private keys, which requires
24+ more care with key generation and signing operations.
25+
26+ See these config files for simulated target examples:
27+
28+ - ` config/examples/sim-ml-dsa.config `
29+ - ` config/examples/sim-lms.config `
30+ - ` config/examples/sim-xmss.config `
31+
32+ ## Lattice Based Signature Methods
33+
34+ ### ML-DSA
35+
36+ ML-DSA (Module-Lattice Digital Signature Algorithm) was standardized in
37+ FIPS 204 (https://csrc.nist.gov/pubs/fips/204/final ), based on its
38+ round 3 predecessor CRYSTALS-DILITHIUM.
39+
40+ ML-DSA has three standardized parameter sets:
41+
42+ - ` ML-DSA-44 `
43+ - ` ML-DSA-65 `
44+ - ` ML-DSA-87 `
45+
46+ The numerical suffix (44, 65, 87) denotes the dimension of the matrix used
47+ in the underlying lattice construction.
48+
49+ The private key, public key, signature size, and overall security strength
50+ all depend on the parameter set:
51+
52+ ```
53+ #
54+ # Private Key Public Key Signature Size Security Strength
55+ # ML-DSA-44 2560 1312 2420 Category 2
56+ # ML-DSA-65 4032 1952 3309 Category 3
57+ # ML-DSA-87 4896 2592 4627 Category 5
58+ #
59+ ```
60+
61+ ### ML-DSA Config
62+
63+ A new ML-DSA sim example has been added here:
64+
65+ ```
66+ config/examples/sim-ml-dsa.config
67+ ```
68+
69+ The security category level is configured with ` ML_DSA_LEVEL=<num> ` , where
70+ num = 2, 3, 5. Here is an example from the ` sim-ml-dsa.config ` for category
71+ 2:
72+
73+ ```
74+ # ML-DSA config examples:
75+ #
76+ # Category 2:
77+ ML_DSA_LEVEL=2
78+ IMAGE_SIGNATURE_SIZE=2420
79+ IMAGE_HEADER_SIZE?=4840
80+ ```
81+
82+ Note: The wolfcrypt implementation of ML-DSA (dilithium) builds to the
83+ FIPS 204 final standard by default. If you wish to conform to the older
84+ FIPS 204 draft standard, then build with ` WOLFSSL_DILITHIUM_FIPS204_DRAFT `
85+ instead.
86+
87+ ## Stateful Hash-Based Signature Methods
688
789LMS/HSS and XMSS/XMSS^MT are both post-quantum stateful hash-based signature
890(HBS) schemes. They are known for having small public keys, relatively fast
@@ -19,7 +101,7 @@ See these links for more info on stateful HBS support and wolfSSL/wolfCrypt:
19101- https://www.wolfssl.com/documentation/manuals/wolfssl/appendix07.html#post-quantum-stateful-hash-based-signatures
20102- https://github.com/wolfSSL/wolfssl-examples/tree/master/pq/stateful_hash_sig
21103
22- ## Supported PQ Signature Methods
104+ ### Supported PQ HBS Options
23105
24106These four PQ signature options are supported:
25107- LMS: uses wolfcrypt implementation from ` wc_lms.c ` , and ` wc_lms_impl.c ` .
0 commit comments