SLH-DSA (SPHINCS+)

SLH-DSA
Stateless Hash-Based
Digital Signature Algorithm
设计者
Andreas Hülsing, Daniel J. Bernstein, Christoph Degasner, Jean-Philippe Aumasson, Maria Eichlseder, Scott Fluhrer, Stefan-Lukas Gazdag, Panos Kampanakis, Stefan Kölbl, Tanja Lange, Martin M. Lauridsen, Florian Mendel, Ruben Niederhagen, Christian Rechberger, Joost Rijneveld, Peter Schwabe, John M. Schanck
首次发布
2015 (SPHINCS)
2019 (SPHINCS+)
2024 (FIPS 205)
类别
后量子 · 数字签名
数学基础
哈希函数安全性(无格假设)
标准
FIPS 205
安全状态
安全

SLH-DSA(Stateless Hash-Based Digital Signature Algorithm),原名 SPHINCS+,是由 NIST 于 2024 年发布的后量子数字签名标准(FIPS 205)。与 ML-DSA 不同,SLH-DSA 的安全性 仅依赖于哈希函数的抗碰撞性,不依赖格问题或其他数论假设,提供了极简的安全基础。

背景与意义

后量子签名方案的安全假设可以分为两大类:

  • 格假设:ML-DSA 等方案依赖 Module-LWE/Module-SIS,虽然被广泛研究但仍是较新的数学假设
  • 哈希假设:SLH-DSA 仅依赖哈希函数的抗碰撞性,这是密码学中最成熟、最被信任的安全假设之一

SLH-DSA 的存在意义在于提供一个 「保守安全」的后量子签名备选方案。如果未来格密码学被发现有未知弱点,SLH-DSA 仍然安全。因此 NIST 将其作为 ML-DSA 的补充标准,推荐在对安全性有极高要求的场景中使用。

算法描述

SLH-DSA 是一种 无状态(stateless) 的基于哈希的签名方案,使用 Merkle 树 结构组织大量的一次性签名(OTS)密钥。

  1. KeyGen():生成根密钥种子,通过确定性伪随机函数推导出整棵 Merkle 树的所有 OTS 密钥。
  2. Sign(sk, M):对消息 M 的摘要,随机选择一个 OTS 叶节点索引,生成一次性签名,并附上从叶节点到 Merkle 树根的认证路径。
  3. Verify(pk, M, σ):验证一次性签名和认证路径,确认签名有效且连接到正确的 Merkle 根(即公钥)。

「无状态」意味着签名者不需要记住哪些 OTS 密钥已经使用过——通过随机选择索引 + 超大 Merkle 树(2h 个叶节点),碰撞概率可忽略不计。这与早期有状态的哈希签名方案(如 XMSS、LMS)不同。

SLH-DSA 结构概览: Merkle Root (公钥) / \ Subtree_L Subtree_R / \ / \ ... ... ... ... / \ / \ / \ / \ OTS_0 OTS_1 ... OTS_x ... 签名包含: 1. 消息摘要的 FORS(Forest of Random Subsets)签名 2. Merkle 树认证路径(叶节点到根的哈希链) 3. Hypertree 中各层的 WOTS+(一次性签名) 核心组件: - WOTS+:Winternitz 一次性签名(改进版) - XMSS:扩展 Merkle 签名方案(单层) - Hypertree:多层 XMSS 构成的大规模签名树 - FORS:森林随机子集(用于消息摘要)
参数集与性能

SLH-DSA 提供了「快速」(f)和「小型」(s)两系列参数集:

参数集NIST 安全级别公钥大小签名大小私钥大小特点
SLH-DSA-128fLevel 132 B17,088 B64 B快速签名
SLH-DSA-128sLevel 132 B7,856 B64 B小签名
SLH-DSA-192fLevel 348 B35,664 B96 B快速签名
SLH-DSA-192sLevel 348 B16,224 B96 B小签名
SLH-DSA-256fLevel 564 B49,856 B128 B快速签名
SLH-DSA-256sLevel 564 B29,792 B128 B小签名

SLH-DSA 的公钥非常小(32~64 字节,与经典方案相当),但签名尺寸远大于 ML-DSA(7.8~49.9 KB vs 2.4~4.6 KB),且签名速度较慢。这是哈希签名方案的固有代价。

与其他后量子签名对比
方案安全基础公钥签名签名速度特点
ML-DSA-65格问题1,952 B3,309 B极快NIST 首选签名
SLH-DSA-128f哈希函数32 B17,088 B中等极简安全假设
SLH-DSA-128s哈希函数32 B7,856 B更小签名
Falcon格问题 (NTRU)897 B666 B最小签名,实现复杂
安全性

SLH-DSA 的安全性仅依赖于底层哈希函数的以下性质:

  • 抗碰撞性(Collision Resistance):找到两个不同消息具有相同哈希值在计算上不可行
  • 抗原像性(Preimage Resistance):给定哈希值,找到对应输入在计算上不可行
  • 伪随机性(Pseudorandomness):哈希函数输出与真随机不可区分

SLH-DSA-128 使用 SHA-256 或 SHAKE-256 作为底层哈希函数。即使未来量子计算机出现,只要哈希函数本身没有被攻破(Grover 算法仅将安全强度减半,使用足够长的输出即可应对),SLH-DSA 就保持安全。

与有状态方案(XMSS/LMS)相比,SLH-DSA 无需维护状态,避免了状态同步失败导致的安全灾难(重复使用 OTS 密钥会导致私钥泄露)。

适用场景
  • 高安全需求场景:军事、政府机密通信、根 CA 证书签名
  • 长期归档:需要数十年甚至上百年安全的数字签名
  • 保守策略:对格密码学安全假设持保留态度的组织
  • 固件签名:IoT 设备、硬件模块的固件验证

对于大多数日常应用,ML-DSA 由于签名更小、速度更快,是更实用的选择。SLH-DSA 适合作为「保险方案」在高安全场景中部署。

参考文献
  1. NIST (2024). "Stateless Hash-Based Digital Signature Standard". FIPS 205.
  2. Bernstein, D.J., et al. (2019). "SPHINCS+: Submission to the NIST Post-Quantum Cryptography Standardization Project".
  3. Bernstein, D.J., et al. (2015). "SPHINCS: Practical Stateless Hash-Based Signatures". EUROCRYPT 2015.
  4. Hülsing, A., et al. (2013). "XMSS: Extended Hash-Based Signatures". RFC 8391.
  5. McGrew, D., et al. (2019). "Hash-Based Signatures". RFC 8554 (LMS).