Page 78 - 《软件学报》2025年第10期
P. 78
胡跃 等: 基于 FPGA 的格基数字签名算法硬件优化 4475
70%, 可以看出向量组运算的有效时间利用率明显高于单个向量的对应数据. 最后重点分析 (y+cs 1 ,w−cs 2 ,w−cs 2 +ct 0 )
这 3 个核心的运算过程, 其特点是均由乘法累加、逆向数论变换和模加运算这 3 部分组成, 基于细粒度的分解重
组设计思想可获得 3 个类型统一的运算组 (cs 1 ,cs 2 ,ct 0 )、INTT(∼) 和 (+,−,−,+). 使用脉动阵列单元分别进行点乘
运算、逆向数论变换和模加运算, 分别对应 8、96、8 个时钟周期的延迟时间. 可以看出, 这样的时序设计最大化
地减少了核心运算单元的启动次数及其附带的固定延迟时间, 并且有效分解了单一系数尺度上的无效等待时间,
在确保流水线运算正确性的前提下极大地提升了整体的签名运算效率.
4 性能对比
本文使用 Verilog 硬件描述语言设计并实现统一型电路架构, 可同时支持 Dilithium 算法 3 种安全等级下的数
字签名运算, 通过调整输入端口的片选信号值选择算法实现的参数集. 基于 Xilinx Vivado 2017.4 开发套件对编写
的 Verilog 代码进行仿真、综合和布局布线, 并选择 Xilinx Artix-7 FPGA 平台进行实际的部署和测试, 芯片具体型
号为 xc7a200tfbg484-2, 最终得到完整的性能测试报告, 包括时钟周期数据、最高时钟频率和硬件资源消耗这 3 个
方面. 其中, 时钟周期数对应硬件电路生成正确签名结果情况下的时间, 也就是最高速率. 硬件资源主要关注 4 个
通用的数据, 分别是: 用于实现基础逻辑功能的查找表资源 (LUT)、与数据存储和信号延迟相关的触发器资源
(FF)、用于大量数据存储与缓存相关 BRAM 资源以及用于乘法运算的 DSP 资源.
4.1 硬件资源消耗数据分析
表 2 给出了各子功能模块的硬件资源占用情况.
表 2 功能模块硬件资源占用量
模块 LUT FF BRAM DSP
Keccak_v1 6 569 4 414 0 0
Keccak_v2 5 502 3 308 0 0
ExpandS ×2 113/45 46/46 0 0
ExpandA ×2 179/116 367/367 0 0
ExpandMask ×2 336/366 264/265 0 0
Encode ×2 47/22 38/38 0 0
SampleInBall 40 62 0 0
RAM_C_TAU 0 0 0.5 0
NTT_core 19 664 16 588 18 64
FIFO 0 478 203 0 0
FIFO 1 478 203 0 0
FIFO 2 1 647 154 0 0
Combine 37 943 30 268 18.5 64
在表 2 中, 以脉动阵列为核心的多项式运算模块占用了 51% 的 LUT 资源和 54% 的 FF 资源. 由于乘法器单
元以 18 比特为基准, 在签名算法中 23 比特的多项式系数点乘对应两个 DSP 单元, 因此图 1 所示的整个脉动阵列
模块共消耗 64 个 DSP 单元. 基于面积节约优先的 IP 核设置方式能够节约 50% 的 DSP 单元, 但同时会消耗更多
的 LUT 资源, 在实际的应用环境中可根据具体的需求选择更为合适的设计方式. 基于本文使用的测试平台分析,
Atrix-7 系列 FPGA 芯片包含的 DSP 单元数量可以满足脉动阵列的乘法器资源的消耗. 并行采样单元在硬件层面
共占用了 32% 的 LUT 资源和 26% 的 FF 资源. 对比两个模块可知, 采样型 Keccak 核占用的硬件资源数据明显小
于通用型 Keccak 核, 共节约了 16% 的 LUT 资源和 25% 的 FF 资源. 文献 [26] 提出了一种单核级联式架构的哈希
模块设计方案, 同样可以实现采样过程速率加倍, 共消耗 4 577 个 FF 资源, 与通用型 Keccak 核的对应数据处于同
一数量级, 而经过优化设计的采样型 Keccak 核仅消耗 3 308 个 FF 资源, 与之相比节约了 28% 左右的寄存器资源.
为了实现单时钟周期内遍历两次轮函数运算, 级联式的设计架构需要实例化更多的组合逻辑电路. 从整体上看, 文
献 [26] 设计的 Keccak 核共消耗 15 784 个 LUT 资源, 与之相比, 本文提出的双核结构节约了 23% 左右的硬件资

