SLH-DSA is a stateless, hash-based signature scheme that protects data against quantum computing attacks. It is based on the hardness of finding preimages of hash functions. The hardness assumption is well studied and trusted, leading SLH-DSA and the most conservative choice for digital signing algorithms.
SLH-DSA is a special-purpose digital signature scheme that can be used in systems with low throughput and high memory footprints. An example of usage would be in code signing, where long signing times and large signature sizes are not prohibitive. Due to the small public key sizes, it is also an attractive solution for systems that are agnostic to timings and signature sizes but have little space for public keys. SLH-DSA is not meant as a general replacement for protocols like TLS.
SLH-DSA has 12 parameter sets. The large number of
parameter sets are broken down into three different security levels.
At each level there is a choice of the hash function (SHA2 or SHAKE)
and small or fast signatures. Small signatures have an _s_ suffix
while the larger, faster signatures have an _f_ suffix.
Parameter Set |
Security Level |
AES Equivalent |
RSA Equivalent |
---|---|---|---|
SLH-DSA-SHA2-128s
|
1 |
AES-128 |
RSA3072 |
SLH-DSA-SHA2-192
|
3 |
AES-192 |
RSA7680 |
SLH-DSA-SHA2-256s
|
5 |
AES-256 |
RSA15360 |
```
SLH-DSA's high security assurances come with a tradeoff. It is much slower and much larger than traditional primitives. When designing a system, it is important to make sure the signatures will properly fit. The good news is that SLH-DSA public and private keys are smaller than RSA keys. Below is a list of the sizes of SLH-DSA with comparisons with its RSA and ECC counterparts. RSA 2048 and Ed25519 are used as the comparison since they are the most widely used RSA and ECC signature schemes for certificates.
Private Key |
Public Key |
Signature |
|
---|---|---|---|
SLH-DSA-SHA2-128s
|
64 |
32 |
7856 |
SLH-DSA-SHA2-128f
|
64 |
32 |
17088 |
SLH-DSA-SHA2-192s
|
96 |
48 |
16224 |
SLH-DSA-SHA2-192f
|
96 |
48 |
35664 |
SLH-DSA-SHA2-256s
|
128 |
64 |
29792 |
SLH-DSA-SHA2-256f
|
128 |
64 |
49856 |
Table 1 – SLH-DSA key and signature sizes in bytes.
Private Key |
Public Key |
Signature |
|
---|---|---|---|
RSA 2048 |
1060 |
256 |
256 |
Ed25519 |
32 |
32 |
64 |
Table 2 – RSA and ECC key and signature sizes in bytes.
RSA 2048 |
Private Key
|
Public Key
|
Signature
|
---|---|---|---|
SLH-DSA-SHA2-128s
|
0.06 |
0.13 |
31 |
SLH-DSA-SHA2-128f
|
0.06 |
0.13 |
67 |
SLH-DSA-SHA2-192s
|
0.09 |
0.19 |
63 |
SLH-DSA-SHA2-192f
|
0.09 |
0.19 |
139 |
SLH-DSA-SHA2-256s
|
0.12 |
0.25 |
116 |
SLH-DSA-SHA2-256f
|
0.12 |
0.25 |
195 |
Table 3 – Normalized RSA 2048 compared to SLH-DSA key and signature sizes.
Ed25519 |
Private Key
|
Public Key
|
Signature
|
---|---|---|---|
SLH-DSA-SHA2-128s
|
2.00 |
1.00 |
123 |
SLH-DSA-SHA2-128f
|
2.00 |
1.00 |
267 |
SLH-DSA-SHA2-192s
|
3.00 |
1.50 |
254 |
SLH-DSA-SHA2-192f
|
3.00 |
1.50 |
557 |
SLH-DSA-SHA2-256s
|
4.00 |
2.00 |
466 |
SLH-DSA-SHA2-256f
|
4.00 |
2.00 |
779 |
Table 4 – Normalized Ed25519 compared to SLH-DSA key and signature sizes.
In Autust 2024, the United States National Institute of Standards and Technology (NIST) standardized SLH-DSA in their FIPS 205 (link to: https://csrc.nist.gov/pubs/fips/205/final) document. They assert that SLH-DSA is usable by US government organizations for sensitive information.
Further, NIST has given guidance that organizations should switch to PQC by 2030. They have also commented that after 2035 PQC cryptography will be mandatory for government agencies.