Page 103 - 《软件学报》2025年第10期
P. 103
4500 软件学报 2025 年第 36 卷第 10 期
|Succ GAME.4 (A)−Succ GAME.3 (A)| ⩽ InSec PQ-SM-TCR (Th;ξ,q 2 ) (15)
其中, InSec PQ-SM-TCR 表示可调整哈希函数 Th 的抗碰撞性度量.
最终, 敌手在整个签名系统中成功伪造签名的概率可以通过公式 (16) 表达, 其中结合了多次抗冲突性和抗第
2 原像攻击的安全性:
Succ GAME.4 ⩽ 3·InSec PQ-SM-TCR (F;ξ,q 3 )+InSec PQ-SM-DSPR (F;ξ,q 3 ) (16)
这表明在理想的安全环境中, 敌手成功伪造签名的概率是被严格限定的.
通过逐步的游戏变换和设计有效的伪签名方案, 使得敌手无法分辨我们在游戏中的签名是否来自真实签名过
程. EQAS 的安全性是基于用到的上述哈希算法, 例如在证明和承诺生成的过程中, 该阶段的安全性主要依赖于
PRF, 因此本文方案的安全性是由这些哈希函数来保证的, 通过
Th、F、PRF 和 H msg , 验证承诺主要依赖于 F 和
定理的证明我们可知基于这些哈希函数的数字签名方案是具有量子安全的, 因此, 本文方案可以抵御量子攻击, 具
有量子安全性.
6 实验分析
在设计 EQAS 方案时, 安全性和效率之间的取舍是关键考量. 系统的安全性主要依赖于哈希签名方案的安全
参数选择, 而效率则涉及计算、存储和通信的优化. 接下来将解释如何选择合适的参数来进行实验, 然后对方案进
行理论分析和性能分析.
6.1 参数选择
n, 决定了抗量子攻击的安全等级. 然而, 选择较大的哈希
哈希签名的安全性直接依赖于哈希函数的输出长度
长度虽然提升了安全性, 却不可避免地增加了签名的大小和生成验证的计算成本. 为了在保证安全性的同时减少
签名长度, 我们引入了 Winternitz 参数 w, 通过增大 w 值来减少签名中的哈希链数量. 这样可以加快签名生成和验
证的速度, 但也会使签名稍大, 导致通信和存储开销的上升. 此外, 较大的 Winternitz 参数也会在一定程度上降低
签名的安全性. 因此, 在不同的安全需求下调整 w 值和哈希函数的输出长度, 权衡了签名的大小与计算复杂度之间
的关系. DFORC (动态随机森林链) 的设计目的是在不牺牲安全性的前提下, 最大化提高系统的存储和认证效率.
树的高度 h 与层数 d 直接影响着存储的效率. 我们通过设置合理的 h 和 d 值, 确保在认证过程中, 只有少数的路径
节点需要更新, 这大幅减少了存储的读写开销. 然而, 较高的树高度虽然减少了更新所需的哈希链长度, 却增加了
每次认证时的验证路径长度. 为了在减少存储开销和加快验证之间取得平衡, 我们通过动态调整超树结构中的层
数来确保系统的高效性. 此外, DFORC 在设计中还需要平衡认证速度与存储开销之间的取舍. 通过降低 Merkle 树
的高度, 我们减少了每次认证需要遍历的节点数量, 从而提高了认证的速度. 然而, 这也意味着需要更多的存储空
间来容纳更多的节点. 因此, 我们采用了多层结构, 每层的树高度适中, 既优化了认证速度, 又确保存储开销在合理
k 和 决定了
t
范围内. 较低的树高度减少了认证路径上的计算复杂度, 但多层设计也增加了实现的复杂性. 参数
DFORC 的性能和安全性. 在 DFORC 中, 树的叶子节点数量必须是 2 的幂次方, 而 k 可以自由选择. 较小的 通常
t
会导致更小、更快的签名. 然而, 对于给定的安全级别, 较小的 t 需要较大的 k, 这会增加签名大小并减慢签名速度.
( )
因此, 平衡这两个参数非常重要. 消息摘要长度 md 是 H msg 的输出长度, 以字节为单位, 长度为 klogt +7 /8+(h−
h/d +7)/8+(h/d +7)/8 字节. BW 密钥对中的哈希链数决定了 BW 签名的大小.
EQAS 的部分参数集设置如表 2 所示 (证明大小单位为 bit). 重要的是, 本文提出的参数集不是只通过在输出
中搜索最小或最快的选项来获得的. 这是对于 256 位安全级别, 签名的大小大约为 15 KB. 然而, 单个签名的计算
需要 20 多分钟, 尽管这种权衡可能对一些特定的应用程序很有吸引力, 但许多应用程序不太可能愿意接受如此大
量的签名时间. 相反, 本文建议的参数集认为是“非极端的”, 这意味着在我们的实现中, 签名时间不超过几秒钟. 因
此, 本文选择 SHA2-128f-simple 算法来实现我们的方案, 使用具有 128 位安全性的哈希函数 SHA-256, 使用快速
参数 (更快的计算, 更大的签名大小), 具有简单的形式 (即在哈希时不使用位掩码). 基于上述设置, 我们用 Python
编程语言实现了 EQAS.

