Page 22 - 《软件学报》2025年第10期
P. 22

杨亚涛 等: SM3-OTS: 基于国密算法      SM3  的紧凑型后量子一次签名方案                                  4419



                 的签名值长度非常大, 若签名时选择的安全参数为                   n, 则私钥的长度为      2×n×n, 公钥的长度同样为        2×n×n,
                 方案最后生成的签名值长度为           n×n. LOTS  方案公私钥及签名值的长度过大造成其不适合在实际中应用. 同年,
                 Merkle [20,21] 在  Lamport-OTS  方案的基础上提出了  Winternitz 一次签名方案  (Winternitz-OTS, WOTS). WOTS  方案
                 中使用了哈希链      (hash chain) 结构来构造签名方案的公钥及私钥, 哈希链是对一个数据重复进行哈希运算生成的
                 链, 哈希链中后一个节点为前一个结点的哈希值. 与               LOTS  方案类似, WOTS  方案的每对密钥同样只能签署一条消
                 息. 对比  LOTS  方案中每个消息摘要位对应         n 字节的哈希值, 在    WOTS  方案中使用    2、4  或  16  个消息摘要位对应
                 n 字节的哈希值, 极大地缩短了        LOTS  方案生成的签名值长度.
                    由于  OTS  方案的每对密钥只能使用一次, Merkle        [20,21] 提出了  Merkle Tree 签名方案  (Merkle signature scheme,
                 MSS). 该方案利用   Merkle Tree 的结构将一次签名方案扩展为少次签名方案, Merkle Tree 本质上是一种二叉哈希
                 树. 在  MSS  方案中使用  Merkle Tree 的叶子节点管理一次签名方案的公钥, 将           Merkle Tree 的根节点作为   MSS  方
                                                                                   h, 则一棵               h
                 案的公钥, 实现将一次签名方案扩展为少次签名方案. 若方案中 Merkle Tree 的高度为                           Merkle Tree 有  2
                 个叶子节点, 这些叶子节点用于存储           OTS  方案公钥的哈希值, 即一棵高度为          h 的  Merkle Tree 可以管理  2  个 h  OTS
                              h
                 密钥, 可以签署    2  条消息. Merkle Tree 签名方案生成的签名值主要包括两个部分: Merkle Tree 叶子节点对应的一
                 次签名方案生成的签名值以及对此叶子节点的身份验证路径. 这两部分数据共同构成了                              Merkle Tree 签名方案的
                 签名值. OTS  方案是所有哈希基签名的核心, 使用哈希树可以将                OTS  方案扩展为多次签名方案.
                            +
                    SPHINCS 中使用了    WOTS+一次签名方案以及         FORS  少次签名方案, 并利用扩展        Merkle Tree 的方式将其
                                                                                       +
                 扩展为无状态的数字签名方案. 2022          年, Zhang  等人  [15] 在  SPHINCS-α  方案中对  SPHINCS 中使用的一次签名方
                 案  WOTS+进行改进, 提出了      Balanced WOTS+, 缩短了  WOTS+一次签名方案生成的签名值并提升了安全性.
                                                               +
                 同年, Kudinov  等人  [16] 在  SPHINCS C +  方案中对  SPHINCS 中使用的一次签名方案    WOTS+进行了改进提出了
                 WOTS+C, WOTS+C  取消了原本的      3  条校验链, 而是在签名前将消息摘要值后串联              n 字节的随机数, 使用哈希
                 函数对串联随机数后的消息摘要值再做哈希运算生成哈希值, 使用后一部分哈希值作为哈希链节点位置的
                 索引.
                                     n =32, 则  WOTS+、Balanced WOTS+、WOTS+C、LMOTS    生成的签名值长度       (Bytes)
                    使用相同的安全参数
                 对比如表   1  所示.

                                     表 1 WOTS+方案与几种变体生成的签名值长度对比 (Bytes)

                                              方案                   生成签名的值长度
                                            WOTS+                       2 144
                                         Balanced WOTS+                 2 112
                                            WOTS+C                      2 080
                                            LMOTS                       2 144

                                                              +
                    Sun  等人  [22] 使用国密哈希算法  SM3  替代了  SPHINCS 数字签名方案所使用的哈希函数, 并给出了               SM3  实例
                          +
                 化  SPHINCS 后的相关实验结果, 表明国密        SM3  算法实现国际标准化的哈希基数字签名方案是切实可行的. 同时,
                 Sun  等人  [23] 利用国产杂凑函数  SM3  替代  LMS (Leighton-Micali signature system) 方案中所使用的哈希函数, 并给
                 出了初步的实验结果. 另外, Li 等人        [24] 系统地总结了基于哈希的签名组件的研究进展, 深入分析了不同类型的基
                 于哈希的签名方案整体设计思路等.
                    文献  [10,14–16] 对  WOTS+方案的优化推动了基于哈希函数的后量子签名方案标准化及可应用化, 也为哈希
                 基签名方案的优化提供了思路. 但优化后的方案生成的签名值长度还是较大, 所以对哈希基数字签名方案的研究
                 及优化工作还需要进一步推进.

                  3   基础知识

                    本节将介绍     SM3-OTS  签名方案的基础知识、表示符号以及哈希函数相关概念.
   17   18   19   20   21   22   23   24   25   26   27