1. 引言 (Introduction)
Stateless Hash-Based Digital Signature Algorithm (SLH-DSA) 是一种抗量子数字签名方案, 由美国国家标准与技术研究院 (NIST) 的后量子密码 (PQC) 项目 [FIPS205] [NIST-PQC] 标准化. 在标准化之前, 该算法称为 SPHINCS+. SLH-DSA 与 SPHINCS+ 不兼容. 本文档定义 ASN.1 对象标识符 (OIDs), 以及在 X.509 公钥基础设施中编码 SLH-DSA 数字签名, 公钥和私钥的约定.
SLH-DSA 提供三个安全级别. 每个安全级别的参数都经过选择, 使其至少与 128, 192 或 256 比特的通用分组密码同等安全. 该算法有 small (s) 和 fast (f) 两种版本, 也可以选择使用 SHA-2 算法族 [FIPS180] 或 SHAKE256 [FIPS202] 作为内部函数. 虽然 fast 版本针对密钥生成和签名速度进行了优化, 但在验证时实际上比 SLH-DSA small 参数集更慢. small 版本针对签名大小进行了优化, 见表 1. 例如, id-slh-dsa-shake-256s 表示 256 比特安全级别, 算法的 small 版本, 并使用 SHAKE256.
NIST [CSOR] 为 SLH-DSA 的每种组合分配了单独的算法标识符: fast 与 small, SHA-2 与 SHAKE256, 以及 pure mode 与 pre-hash mode.
SLH-DSA 签名操作包含一个可选的上下文字符串 (ctx) 作为输入, 该输入在 [FIPS205] 第 10.2 节中定义. 上下文字符串的最大长度为 255 字节. 默认情况下, 上下文字符串为空字符串. 本文档仅规定在 X.509 公钥基础设施中使用空上下文字符串.
SLH-DSA 提供两种签名模式: pure mode, 即直接对完整内容签名; pre-hash mode, 即对内容摘要签名. 本文档使用 SLH-DSA 一词泛指该算法. 当需要区分 pure mode 或 pre-hash mode 时, 使用 Pure SLH-DSA 和 HashSLH-DSA 这两个术语. 本文档规定在公钥基础设施 X.509 (PKIX) 证书和证书吊销列表 (CRLs) 中使用 Pure SLH-DSA 和 HashSLH-DSA.
1.1. 符号 (Notation)
本文档使用以下符号:
-
a || b: a 和 b 的拼接.
-
id-slh-dsa-*: 一种简写, 指代用于指定 Pure SLH-DSA 不同参数组合的全部 12 个 OID.
-
id-hash-slh-dsa-*: 一种简写, 指代用于指定 HashSLH-DSA 不同参数组合的全部 12 个 OID.