SM9数字签名算法作为一种基于标识的密码协议,是构建我国自主的密码体系中至关重要的一环。SM9数字签名算法是在椭圆曲线上进行不同有限域下的计算,以此来完成数字签名的生成和验证过程。SM9数字签名算法计算复杂、计算量大,难以推广。通过设计可编程片上系统(SoPC,System on a Programmable Chip)能有效完成数字签名的快速生成和验证。本文设计了 SM9数字签名算法的SoPC架构,并在现场可编程门阵列(FPGA)上实现,完成了数字签名的生成和验证。首先,充分考虑算法的实现过程,根据软硬件实现的优势对软硬件功能进行划分,根据划分结果设计SoPC架构。然后,对软件实现部分进行算法优化,通过引入雅各比坐标来避免模逆操作、引入基于NAF改进的模幂计算等算法减少软件计算时间;对硬件实现部分设计了素域Fp多倍点计算单元和二次扩域Fp2多倍点计算单元。素域Fp多倍点计算单元采用蒙哥马利阶梯算法提高抗侧信道攻击能力,并通过两个Fp计算单元并行进行计算提升计算速度。二次扩域Fp2多倍点计算单元通过Fp2计算单元进行计算。此外,硬件实现部分还引用了双线性对计算单元,通过复用缩短设计周期。最后,使用硬件描述语言Verilog完成硬件计算单元的实现,搭建以Microblaze CPU为处理器的SoPC,通过C语言完成软件部分的实现。通过SoPC对SM9数字签名算法进行验证和分析,结果显示上述设计有效的完成了 SM9数字签名算法的生成验证和过程。在系统时钟设置为80MHZ的情况下,Fp多倍点计算单元计算时间约为2.93ms,Fp2多倍点计算单元计算时间约为8.27ms,双线性对计算单元计算时间为3.52ms。可使用3.82s完成一次SM9数字签名生成算法,3.83s完成一次SM9数字签名验证算法。
暂无评论