可重构硬件上实现Dilithium及防止硬件时序信息泄露
可重构硬件上实现Dilithium
在可重构硬件上实现Dilithium算法时,有几个关键的技术点值得关注。
首先是系数处理与内存访问。在计算过程中,每个系数都要进行处理,选择正确的值后,将其移入缓冲区寄存器进行采样,最终用于计算值 ˜c 并在验证时与签名值进行比较。而内存访问方面,原地NTT通常需要根据位反转排列对多项式进行重新排序。这里采用的带有两个BFU的NTT需要同时读写四个系数,通过特定的系数分布方式确保了这一点,同时也使得位置为 br(i), br(i + 1), br(i + 2), br(i + 3) (4|i)的四个系数位于不同的内存中,这样就可以按位反转顺序或正常顺序访问多项式,避免了显式的重新排序操作。
其次是单任务核心的创建。为了创建仅支持部分操作(如密钥生成、签名或验证)的单任务核心,需要进行以下操作:
1. 调整顶层模块中的操作码解码器,并删除所有不必要的模块实例化。
2. 调整加载模块,使其仅能打包和加载由相应单任务核心生成的值。
3. 调整存储模块,使其仅能解包和存储相应单任务核心所需的值。通过对三个文件进行微小更改,即可生成一组单任务核心。而且,只需进行单行更改就可以调整安全级别。此外,还为每个单任务核心生成内存映射,排除该核心未使用的所有多项式,从而降低BRAM的使用量。
在资源利用和性能方面,使用Vivado 2020.1工具套件在Xilinx XC7A100T Artix - 7 FPGA上进行布局布线(PnR)后得到了相关结果。资源利用方面,LUT、FF和BRAM的利用率随参数集的增加而增加,而由NTT和MACC模块控制的DSP利用
超级会员免费看
订阅专栏 解锁全文

800

被折叠的 条评论
为什么被折叠?



