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

胡跃 等: 基于  FPGA  的格基数字签名算法硬件优化                                                   4471


                 为  184  比特的长寄存器, 可用于脉动阵列单元输入输出端的数据缓存. 同时, 将暂存的操作数按照寄存器的索引值
                 依次进行延迟对齐操作, 在经过固定数量的时钟周期之后, 可确保产生                     8  个满足运算需求的系数组. 使用两组寄存
                 器依次交替进行上述操作, 最终可实现多项式运算及对应的重排序操作的流水线运行模式.
                  3.4   双核哈希模块设计
                    生成随机比特流是采样算法的前置运算, 其性能的差异将直接影响后续的采样模块的运行效率. 如上文所述,
                 在  Dilithium  算法中使用  SHAKE128  和  SHAKE256  两种计算实例生成随机比特流, 其中最核心的          3  个采样运算为
                 ExpandS、ExpandMask  和  ExpandA, 分别对应向量  s、向量   y 和矩阵   A 的多项式系数采样过程, 其余的计算过程
                 主要负责生成数据摘要或生成随机种子. 本文深入研究并总结了这两类运算的特点, 并得到如下结论: 采样算法
                 ExpandS、 ExpandA 和  ExpandMask  的输入参数长度均小于    XOF  计算实例输入数据的分组长度, 这意味着在进行
                 系数采样时, 哈希模块仅在开始阶段需要输入数据, 而在后续的迭代步骤中, 不存在将上一阶段运算结果与新输入
                 数据进行异或操作的运算过程, 这为哈希模块的优化提供了基础条件. 根据上述分析, 本文综合考虑了硬件资源和
                 算法效率两个因素, 设计了两种不同的专用哈希模块, 分别为通用型哈希模块和采样型哈希模块, 如图                              5  所示.

                             seed                             seed
                                      Reg 0: input               Reg 0: input+Keccak-f [1600]

                                   Reg 1: Keccak-f [1600]          Reg 1: Keccak-f [1600]


                                      Reg 2: output                   Reg 1: output



                                               ...    Hash_out[1343:0]  ...
                               R 63  R 63  R 63  R 63                     R 63  R 63  R 63  R 63
                                                            q
                                            23                                       clk
                                                                     46
                                                            q
                                            23                                        Counter
                                                                                    en
                                     EN   EN    EN    EN    EN   EN    EN    EN
                                    R 23  R 23  R 23  R 23  R 23  R 23  R 23  R 23

                                     wen                                     ren
                                  183                 FIFO[183:0]
                                    din                                     dout
                                           图 5 基于双    Keccak  核的拒绝采样硬件设计

                    通用型哈希模块的硬件架构主要由             3  个长度为  1 600  比特的长寄存器构成, 输入输出端口的长度设定为             64  比
                 特, 可满足签名运算中所有的         XOF  实例的运算需求. 与之相对, 采样型哈希模块的硬件架构中仅包含两个长寄存

                 器, 专门用于多项式向量       s、向量   y 和矩阵  A 中的系数采样运算. 两者区别在于, 通用型哈希模块每完成                  24  次轮
                 函数迭代之后, 运算结果在输出的同时暂存入第                3  个长寄存器, 并与第    1  个长寄存器中存放的输入数据进行异或
                 运算, 从而生成下一轮迭代运算的初始状态数据, 此运算过程对应                    H() 函数. 由于采样算法     ExpandS、 ExpandA 和
                 ExpandMask  的输入数据位宽远小于      XOF  计算实例单次输入的最大长度, 因此采样型哈希模块中无需第                    3  个长寄
                 存器的存在即可完成所需要的运算功能, 在实现层面节约了较多的硬件资源. 此外, 基于时钟复用的思路设计上述
                 两个运算模块, 核心的长寄存器分别对应             XOF  实例运算过程中不同的子运算过程, 且彼此之间共享时钟周期资
                 源. 在具体的测试过程中, 仅需        120  个时钟周期即可完成两个矩阵         A 或向量  y 中的多项式系数的采样运算, 而向量
                 s 的多项式系数采样运算的对应数据为            48  个时钟周期.
   69   70   71   72   73   74   75   76   77   78   79