一种基于后量子数字签名的MDC-NTT装置转让专利

申请号 : CN202311132711.X

文献号 : CN116865979B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 崔益军徐天宇郭术明李梦雪刘伟强王成华

申请人 : 南京航空航天大学

摘要 :

本发明公开了一种基于后量子数字签名的MDC‑NTT装置,包括:随机数生成模块、采样模块、第一多项式乘法模块、第二多项式乘法模块、计算模块和数据存储模块,随机数生成模块的输出端与采样模块的输入端连接,采样模块的输出端通过数据选择单元与数据存储模块的输入端连接,采样模块的输出端还与stream Out连接;数据存储模块的输出端通过数据选择单元与第一多项式乘法模块的输入端连接连接,第一多项式乘法模块的输出端与计算模块连接,计算模块分别与stream Out、数据存储单元的输入端连接,数据存储单元通过数据选择单元与第二多项式乘法模块连接。本发明对于不同参数、不同乘法位数、不同NTT计算轮数只需增加或减少其中的乘法级数即可。

权利要求 :

1.一种基于后量子数字签名的MDC‑NTT装置,其特征在于,包括:随机数生成模块、采样模块、第一多项式乘法模块、第二多项式乘法模块、计算模块和数据存储模块,所述随机数生成模块的输出端与采样模块的输入端连接,所述采样模块的输出端通过数据选择单元与数据存储模块的输入端连接,所述采样模块的输出端还与stream Out连接;所述数据存储模块的输出端通过数据选择单元与第一多项式乘法模块的输入端连接连接,所述第一多项式乘法模块的输出端与计算模块连接,所述计算模块分别与stream Out、数据存储单元的输入端连接,所述数据存储单元通过数据选择单元与第二多项式乘法模块连接;所述第一多项式乘法模块、第二多项式乘法模块用于处理计算模块产生的系数矩阵,第二多项式乘法模块的输出结果作为最终所需要的数字签名组;

所述第一多项式乘法模块中设有第一MDC‑NTT乘法器,所述第二多项式乘法模块中设有第二MDC‑NTT乘法器,所述第一MDC‑NTT乘法器、第二MDC‑NTT乘法器由八级乘法单元依次连接组成,八个乘法单元组成八级的流水线乘法器,通过外部模式控制信号控制数据选择单元选择预处理和后处理的数据,将第一MDC‑NTT乘法器、第二MDC‑NTT乘法器在NTT和INTT之间相互切换;

所述MDC‑NTT乘法器、第二MDC‑NTT乘法器中均设有高度并行DSP模乘单元,通过对乘数进行截位的预处理,并同时计算两部分乘法,在一个周期内完成一次23位乘23位的乘法。

2.根据权利要求1所述的一种基于后量子数字签名的MDC‑NTT装置,其特征在于,所述随机数生成模块包括:第一随机数生成单元Keccak0、第二随机数生成单元Keccak1、第三随机数生成单元Keccak2,所述第一随机数生成单元Keccak0的输入端、第三随机数生成单元Keccak2的输入端均与stream In连接;所述第一随机数生成单元Keccak0的输出端、第二随机数生成单元Keccak1的输出端、第三随机数生成单元Keccak2的输出端分别与采样模块连接。

3.根据权利要求2所述的一种基于后量子数字签名的MDC‑NTT装置,其特征在于,所述采样模块包括:第一采样单元、第二采样单元、第三采样单元、第四采样单元,所述第一采样单元的输入端分别与第一随机数生成单元Keccak0的输出端、stream Out连接,所述第二采样单元的输入端与第二随机数生成单元Keccak1的输出端连接,所述第三采样单元的输入端、第四采样单元的输入端均与第三随机数生成单元Keccak2的输出端连接;所述第一采样单元的输出端、第二采样单元的输出端均通过第三数据选择单元与数据存储模块连接,所述第三采样单元的输出端、第四采样单元的输出端均通过第四数据选择单元与数据存储模块连接。

4.根据权利要求3所述的一种基于后量子数字签名的MDC‑NTT装置,其特征在于,所述第一采样单元、第二采样单元采用均匀分布采样,第三采样单元、第四采样单元采用二项式采样。

5.根据权利要求3所述的一种基于后量子数字签名的MDC‑NTT装置,其特征在于,所述数据存储模块包括:第一数据存储单元RAM0、第二数据存储单元RAM1、第三数据存储单元RAM2、第四数据存储单元RAM3、第五数据存储单元RAM4、第六数据存储单元RAM5、第七数据存储单元RAM6,所述第一数据存储单元RAM0的输入端通过第三数据选择单元分别与第一采样单元的输出端、第二采样单元的输出端、计算模块连接,所述第一数据存储单元RAM0的输出端通过第十数据处理单元与第一多项式乘法模块的输入端连接;所述第二数据存储单元RAM1的输入端通过第四数据选择单元分别与第三采样单元的输出端、第四采样单元的输出端、第一多项式乘法模块连接;所述第二数据存储单元RAM1的输出端通过第十数据处理单元与第一多项式乘法模块的输入端连接;所述第三数据存储单元RAM2设置于第一多项式乘法模块中,所述第四数据存储单元RAM3的输入端、第六数据存储单元RAM5的输入端、第七数据存储单元RAM6的输入端分别与第二多项式乘法模块的输出端、计算模块连接,所述第四数据存储单元RAM3的输出端、第六数据存储单元RAM5的输出端、第七数据存储单元RAM6的输出端均通过第九数据选择单元与第二多项式乘法模块的输入端连接;所述第五数据存储单元RAM4的输入端与计算模块连接,所述第五数据存储单元RAM4的输出端通过第九数据选择单元与第二多项式乘法模块连接,且所述第五数据存储单元RAM4的输出端与计算模块连接。

6.根据权利要求5所述的一种基于后量子数字签名的MDC‑NTT装置,其特征在于,所述第一多项式乘法模块包括:第一移位寄存器FIFO、第二移位寄存器FIFO、第一MDC‑NTT乘法器,所述第一移位寄存器FIFO的输入端通过第十数据选择单元分别与第一数据存储单元RAM0的输出端、第二数据存储单元RAM1的输出端、计算模块连接,所述第一移位寄存器FIFO的输出端与第一MDC‑NTT乘法器的输入端连接,所述第一MDC‑NTT乘法器的输出端与第二移位寄存器FIFO的输入端连接,且所述第一MDC‑NTT乘法器的输出端通过第四数据选择单元与第二输出存储单元RAM1的输入端连接,所述第二移位寄存器FIFO的输出端与第三数据存储单元RAM2的输入端连接,所述第三数据存储单元RAM2的输出端与计算模块连接。

7.根据权利要求6所述的一种基于后量子数字签名的MDC‑NTT装置,其特征在于,所述计算模块包括:分解模块Decomposer、生成提示模块MakeHint、使用提示模块UseHint、编码模块Encoder和解码模块Decoder,所述分解模块Decomposer的输入端与第三数据存储单元RAM2的输出端连接,所述分解模块Decomposer的输出端通过第十数据选择单元与第一移位寄存器FIFO的输入端连接,且所述分解模块Decomposer的输出端通过第五数据选择单元与编码模块Encoder的输入端连接,所述分解模块Decomposer的输出端还与使用提示模块UseHint的输入端、第五数据存储单元RAM4的输入端连接;所述第五数据存储单元RAM4的输出端与生成提示模块MakeHint的输入端连接,所述生成提示模块MakeHint还通过第三数据选择单元与第一数据存储单元RAM0连接,且所述第五数据存储单元RAM4的输出端通过第九数据选择单元与第二多项式乘法模块连接;所述生成提示模块MakeHint的输出端通过第十一数据选择单元与stream Out连接;所述使用提示模块UseHint的输出端通过第五数据选择单元与编码模块Encoder的输入端连接,所述编码模块Encoder的输出端通过第十一数据选择单元与stream Out连接,所述编码模块Encoder的输出端通过第六数据选择单元与第二随机数生成单元Keccak1的输入端连接;所述第六数据选择单元的输入端与stream In连接;所述解码模块Decoder的输入端与第一随机数生成单元Keccak0的输出端连接,所述解码模块Decoder的输出端通过第七数据选择单元与第四数据存储单元RAM3的输入端连接,所述解码模块Decoder的输出端通过第八数据选择单元与第六数据存储单元RAM5的输入端连接;所述第七数据存储单元RAM6的输出端通过第五数据选择单元与编码模块Encoder的输入端连接,所述第四数据存储单元RAM3的输出端、第六数据存储单元RAM5的输出端、第七数据存储单元RAM6的输出端均通过第九数据选择单元与第二多项式乘法模块连接。

8.根据权利要求7所述的一种基于后量子数字签名的MDC‑NTT装置,其特征在于,所述第二多项式乘法模块包括:第三移位寄存器FIFO、第二MDC‑NTT乘法器、第四移位寄存器FIFO,所述第三移位寄存器FIFO的输入端通过第九数据选择单元分别与第一数据存储单元RAM0的输出端、第四数据存储单元RAM3的输出端、第五数据存储单元RAM4的输出端、第六数据存储单元RAM5输出端、第七数据存储单元RAM6的输出端、生成提示模块MakeHint的输出端连接,所述第三移位寄存器FIFO的输出端与第二MDC‑NTT乘法器的输入端连接,所述第二MDC‑NTT乘法器的输出端与第四移位寄存器FIFO的输入端连接,所述第四移位寄存器FIFO的输出端与第七数据存储单元RAM6的输入端连接,所述第四移位寄存器FIFO的输出端通过第七数据选择单元与第四数据存储单元RAM3的输入端连接,所述第四移位寄存器FIFO的输出端通过第八数据选择单元与第六数据存储单元RAM5的输入端连接。

9.根据权利要求6或8所述的一种基于后量子数字签名的MDC‑NTT装置,其特征在于,所述第一MDC‑NTT乘法器、第二MDC‑NTT乘法器由八级乘法单元依次连接组成,前七级乘法单元均包括:两个N位延迟单元、一个二路延迟转换器C2、一个蝶形计算单元BF和一个模乘单元,所述蝶形计算单元BF的上行输出端与二路延迟转换器C2的上行输入端连接,所述二路延迟转换器C2的上行输出端与一个N位延迟单元的输入端连接,所述一个N位延迟单元的输出端与下一级乘法单元的蝶形计算单元BF的上行输入端连接;所述蝶形计算单元BF的下行输出端与模乘单元的输入端连接,所述模乘单元的输出端与另一个N位延迟单元的输入端连接,所述另一个N位延迟单元的输出端与二路延迟转换器C2的下行输入端连接,所述二路延迟转换器C2的下行输出端与下一级乘法单元的蝶形计算单元BF的下行输入端连接;

第八级乘法单元包括:一个蝶形计算单元BF和一个模乘单元,所述蝶形计算单元BF的下行输出端与模乘单元的输入端连接。

10.根据权利要求9所述的一种基于后量子数字签名的MDC‑NTT装置,其特征在于,所述二路延迟转换器C2均包括:N位延迟器、N计数器、第一数据选择单元、第二数据选择单元,所述第一数据选择单元、第二数据选择单元均与N计数器的输入端连接,所述N计数器的输出端与N为延迟器连接;

所述模乘单元包括:第一DSP计算单元、第二DSP计算单元、第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器、第六寄存器、第一移位单元、第二移位单元、第三移位单元、第四移位单元、第一模加单元、第二模加单元、第三模加单元、第四模加单元、第五模加单元、第六模加单元、第七模加单元、第八模加单元、第九模加单元、第一模减单元、第二模减单元、第三模减单元、第十二数据选择单元、第十三数据选择单元,所述第一DSP计算单元的输出端与第一寄存器的输入端连接,所述第一寄存器的输出端分别与第一模加单元的输入端、第二模加单元的输入端、第一移位单元的输入端连接,所述第一模加单元的输出端与第二移位单元的输入端连接,所述第二移位单元的输出端与第三模加单元的输入端连接,所述第二模加单元的输出端与第一模减单元的输入端连接,所述第一模减单元的输出端与第三模加单元的输入端连接,所述第三模加单元的输出端与第二寄存器连接,所述第一移位单元的输出端与第一模减单元的输入端连接;所述第二DSP计算单元的输出端与第三寄存器的输入端连接,所述第三寄存器的输出端分别与第四模加单元的输入端、第五模加单元的输入端、第二模减单元的输入端连接,所述第四模加单元的输出端与第三移位单元的输入端连接,所述第三移位单元的输出端与第六模加单元的输入端连接,所述第五模加单元的输出端与第二模减单元的输入端连接,所述第二模减单元的输出端与第六模加单元的输入端连接,所述第六模加单元的输出端与第四寄存器的输入端连接;所述第二寄存器的输出端、第四寄存器的输出端均与第七模加单元的输入端连接,所述第七模加单元的输出端与第五寄存器的输入端连接,所述第五寄存器的输出端分别与第四移位单元的输入端、第三模减单元的输入端、第八模加单元的输入端连接;所述第四移位单元的输出端与第三模减单元的输入端连接,所述第三模减单元的输出端与第八模加单元的输入端连接,所述第八模加单元的输出端与第六寄存器的输入端连接,所述第六寄存器的输出端分别与第九模加单元的输入端、第十二数据选择单元的输入端连接,所述第九模加单元的输出端与第十二数据选择单元的输入端连接,所述第十三数据选择单元的输出端与第九模加单元的输入端连接。

说明书 :

一种基于后量子数字签名的MDC‑NTT装置

技术领域

[0001] 本发明属于硬件安全技术领域,具体地,涉及了一种基于后量子数字签名的MDC‑NTT装置。

背景技术

[0002] 随着科学技术的发展,信息在传输过程中的安全受到了越来越大的威胁。当今信息安全领域广泛使用的公钥密码加密方案主要是基于难以求解的数学难题所构造的,例如,李维斯特‑萨尔曼‑阿德曼算法(Rivest‑ Shamir‑Adleman,RSA)是基于大整数分解难题,Diffie‑Hellman和ElGamal是基于离散对数问题,椭圆曲线密码(Elliptic Curve Cryptography,ECC)是基于椭圆曲线离散对数问题。在经典的计算机架构下,这些加密技术所依赖的底层数学问题是足够困难而无法在有效时间内求解的。然而,随着量子计算机技术的不断发展,这些非多项式时间复杂度问题很容易受到量子计算机的攻击。其中,舒尔算法(Shor's algorithm)对这些问题的威胁最大,该算法可以解决离散对数和整数分解问题。虽然目前能够运行Shor算法的量子计算机性能远不能满足完成攻击的要求,专家认为,满足要求的量子计算机可以在未来十年内建成,并对当前的公钥密码系统构成威胁。
[0003] 2016年12月,美国国家标准技术研究院(National Institute of Standards and Technology,NIST)宣布开展后量子密码标准征集工作,计划通过几轮的标准化竞争过程选择出新能够抗量子攻击的公钥加密方案。2022年7月,NIST公布了被采纳使用的后量子密码方案,其中基于格的密码加密方案有Crystals‑Kyber和Crystals‑Dilithium,前者是基于公钥加密机制而后者是基于数字签名。至此,NIST的后量子密码标准化进程基本宣告完成。
[0004] 基于数字签名的后量子密码算法依靠独特的加密机制——即用私钥加密发送者的信息,成为了后量子身份验证的研究热点。其中,后量子数字签名Dilithium是一种高度不可伪造性(EUF‑CMA)安全数字签名算法,在操作过程中只需更改几个参数即可实现安全级别的转换。针对Dilithium的高性能硬件实现方案,现有的设计使用迭代型乘法单元——单个蝶形单元的重复流水调用既可以节约大量硬件资源,也可以获得不错的频率性能。缺点是重复调用需要严格的调用规则和内存访问逻辑,设计的灵活性也受到了限制,这在一些追求灵活性以及更高性能的应用场景中是一个问题。

发明内容

[0005] 针对现有技术中存在的问题,本发明提供了一种基于后量子数字签名的MDC‑NTT装置,使用了流水线型MDC的乘法架构,获得了更高的计算频率性能,同时省略了大量逻辑控制单元和中间数据寄存单元,在一些内存有限的设备上表现十分出色。本发明使用了全流水设计,提高了设计灵活度,对于不同参数、不同乘法位数、不同NTT计算轮数只需增加或减少其中的乘法级数即可。
[0006] 为了实现上述技术目的,本发明的技术方案为:一种基于后量子数字签名的MDC‑NTT装置,包括:随机数生成模块、采样模块、第一多项式乘法模块、第二多项式乘法模块、计算模块和数据存储模块,所述随机数生成模块的输出端与采样模块的输入端连接,所述采样模块的输出端通过数据选择单元与数据存储模块的输入端连接,所述采样模块的输出端还与stream Out连接;所述数据存储模块的输出端通过数据选择单元与第一多项式乘法模块的输入端连接连接,所述第一多项式乘法模块的输出端与计算模块连接,所述计算模块分别与stream Out、数据存储单元的输入端连接,所述数据存储单元通过数据选择单元与第二多项式乘法模块连接。
[0007] 进一步地,所述随机数生成模块包括:第一随机数生成单元Keccak0、第二随机数生成单元Keccak1、第三随机数生成单元Keccak2,所述第一随机数生成单元Keccak0的输入端、第三随机数生成单元Keccak2的输入端均与stream In连接;所述第一随机数生成单元Keccak0的输出端、第二随机数生成单元Keccak1的输出端、第三随机数生成单元Keccak2的输出端分别与采样模块连接。
[0008] 进一步地,所述采样模块包括:第一采样单元、第二采样单元、第三采样单元、第四采样单元,所述第一采样单元的输入端分别与第一随机数生成单元Keccak0的输出端、stream Out连接,所述第二采样单元的输入端与第二随机数生成单元Keccak1的输出端连接,所述第三采样单元的输入端、第四采样单元的输入端均与第三随机数生成单元Keccak2的输出端连接;所述第一采样单元的输出端、第二采样单元的输出端均通过第三数据选择单元与数据存储模块连接,所述第三采样单元的输出端、第四采样单元的输出端均通过第四数据选择单元与数据存储模块连接。
[0009] 进一步地,所述第一采样单元、第二采样单元采用均匀分布采样,第三采样单元、第四采样单元采用二项式采样。
[0010] 进一步地,所述数据存储模块包括:第一数据存储单元RAM0、第二数据存储单元RAM1、第三数据存储单元RAM2、第四数据存储单元RAM3、第五数据存储单元RAM4、第六数据存储单元RAM5、第七数据存储单元RAM6,所述第一数据存储单元RAM0的输入端通过第三数据选择单元分别与第一采样单元的输出端、第二采样单元的输出端、计算模块连接,所述第一数据存储单元RAM0的输出端通过第十数据处理单元与第一多项式乘法模块的输入端连接;所述第二数据存储单元RAM1的输入端通过第四数据选择单元分别与第三采样单元的输出端、第四采样单元的输出端、第一多项式乘法模块连接;所述第二数据存储单元RAM1的输出端通过第十数据处理单元与第一多项式乘法模块的输入端连接;所述第三数据存储单元RAM2设置于第一多项式乘法模块中,所述第四数据存储单元RAM3的输入端、第六数据存储单元RAM5的输入端、第七数据存储单元RAM6的输入端分别与第二多项式乘法模块的输出端、计算模块连接,所述第四数据存储单元RAM3的输出端、第六数据存储单元RAM5的输出端、第七数据存储单元RAM6的输出端均通过第九数据选择单元与第二多项式乘法模块的输入端连接;所述第五数据存储单元RAM4的输入端与计算模块连接,所述第五数据存储单元RAM4的输出端通过第九数据选择单元与第二多项式乘法模块连接,且所述第五数据存储单元RAM4的输出端与计算模块连接。
[0011] 进一步地,所述第一多项式乘法模块包括:第一移位寄存器FIFO、第二移位寄存器FIFO、第一MDC‑NTT乘法器,所述第一移位寄存器FIFO的输入端通过第十数据选择单元分别与第一数据存储单元RAM0的输出端、第二数据存储单元RAM1的输出端、计算模块连接,所述第一移位寄存器FIFO的输出端与第一MDC‑NTT乘法器的输入端连接,所述第一MDC‑NTT乘法器的输出端与第二移位寄存器FIFO的输入端连接,且所述第一MDC‑NTT乘法器的输出端通过第四数据选择单元与第二输出存储单元RAM1的输入端连接,所述第二移位寄存器FIFO的输出端与第三数据存储单元RAM2的输入端连接,所述第三数据存储单元RAM2的输出端与计算模块连接。
[0012] 进一步地,所述计算模块包括:分解模块Decomposer、生成提示模块MakeHint、使用提示模块UseHint、编码模块Encoder和解码模块Decoder,所述分解模块Decomposer的输入端与第三数据存储单元RAM2的输出端连接,所述分解模块Decomposer的输出端通过第十数据选择单元与第一移位寄存器FIFO的输入端连接,且所述分解模块Decomposer的输出端通过第五数据选择单元与编码模块Encoder的输入端连接,所述分解模块Decomposer的输出端还与使用提示模块UseHint的输入端、第五数据存储单元RAM4的输入端连接;所述第五数据存储单元RAM4的输出端与生成提示模块MakeHint的输入端连接,所述生成提示模块MakeHint还通过第三数据选择单元与第一数据存储单元RAM0连接,且所述第五数据存储单元RAM4的输出端通过第九数据选择单元与第二多项式乘法模块连接;所述生成提示模块MakeHint的输出端通过第十一数据选择单元与stream Out连接;所述使用提示模块UseHint的输出端通过第五数据选择单元与编码模块Encoder的输入端连接,所述编码模块Encoder的输出端通过第十一数据选择单元与stream Out连接,所述编码模块Encoder的输出端通过第六数据选择单元与第二随机数生成单元Keccak1的输入端连接;所述第六数据选择单元的输入端与stream In连接;所述解码模块Decoder的输入端与第一随机数生成单元Keccak0的输出端连接,所述解码模块Decoder的输出端通过第七数据选择单元与第四数据存储单元RAM3的输入端连接,所述解码模块Decoder的输出端通过第八数据选择单元与第六数据存储单元RAM5的输入端连接;所述第七数据存储单元RAM6的输出端通过第五数据选择单元与编码模块Encoder的输入端连接,所述第四数据存储单元RAM3的输出端、第六数据存储单元RAM5的输出端、第七数据存储单元RAM6的输出端均通过第九数据选择单元与第二多项式乘法模块连接。
[0013] 进一步地,所述第二多项式乘法模块包括:第三移位寄存器FIFO、第二MDC‑NTT乘法器、第四移位寄存器FIFO,所述第三移位寄存器FIFO的输入端通过第九数据选择单元分别与第一数据存储单元RAM0的输出端、第四数据存储单元RAM3的输出端、第五数据存储单元RAM4的输出端、第六数据存储单元RAM5输出端、第七数据存储单元RAM6的输出端、生成提示模块MakeHint的输出端连接,所述第三移位寄存器FIFO的输出端与第二MDC‑NTT乘法器的输入端连接,所述第二MDC‑NTT乘法器的输出端与第四移位寄存器FIFO的输入端连接,所述第四移位寄存器FIFO的输出端与第七数据存储单元RAM6的输入端连接,所述第四移位寄存器FIFO的输出端通过第七数据选择单元与第四数据存储单元RAM3的输入端连接,所述第四移位寄存器FIFO的输出端通过第八数据选择单元与第六数据存储单元RAM5的输入端连接。
[0014] 进一步地,所述第一MDC‑NTT乘法器、第二MDC‑NTT乘法器由八级乘法单元依次连接组成,前七级乘法单元均包括:两个N位延迟单元、一个二路延迟转换器C2、一个蝶形计算单元BF和一个模乘单元,所述蝶形计算单元BF的上行输出端与二路延迟转换器C2的上行输入端连接,所述二路延迟转换器C2的上行输出端与一个N位延迟单元的输入端连接,所述一个N位延迟单元的输出端与下一级乘法单元的蝶形计算单元BF的上行输入端连接;所述蝶形计算单元BF的下行输出端与模乘单元的输入端连接,所述模乘单元的输出端与另一个N位延迟单元的输入端连接,所述另一个N位延迟单元的输出端与二路延迟转换器C2的下行输入端连接,所述二路延迟转换器C2的下行输出端与下一级乘法单元的蝶形计算单元BF的下行输入端连接;
[0015] 第八级乘法单元包括:一个蝶形计算单元BF和一个模乘单元,所述蝶形计算单元BF的下行输出端与模乘单元的输入端连接。
[0016] 进一步地,所述二路延迟转换器C2均包括:N位延迟器、N计数器、第一数据选择单元、第二数据选择单元,所述第一数据选择单元、第二数据选择单元均与N计数器的输入端连接,所述N计数器的输出端与N为延迟器连接;
[0017] 所述模乘单元包括:第一DSP计算单元、第二DSP计算单元、第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器、第六寄存器、第一移位单元、第二移位单元、第三移位单元、第四移位单元、第一模加单元、第二模加单元、第三模加单元、第四模加单元、第五模加单元、第六模加单元、第七模加单元、第八模加单元、第九模加单元、第一模减单元、第二模减单元、第三模减单元、第十二数据选择单元、第十三数据选择单元,所述第一DSP计算单元的输出端与第一寄存器的输入端连接,所述第一寄存器的输出端分别与第一模加单元的输入端、第二模加单元的输入端、第一移位单元的输入端连接,所述第一模加单元的输出端与第二移位单元的输入端连接,所述第二移位单元的输出端与第三模加单元的输入端连接,所述第二模加单元的输出端与第一模减单元的输入端连接,所述第一模减单元的输出端与第三模加单元的输入端连接,所述第三模加单元的输出端与第二寄存器连接,所述第一移位单元的输出端与第一模减单元的输入端连接;所述第二DSP计算单元的输出端与第三寄存器的输入端连接,所述第三寄存器的输出端分别与第四模加单元的输入端、第五模加单元的输入端、第二模减单元的输入端连接,所述第四模加单元的输出端与第三移位单元的输入端连接,所述第三移位单元的输出端与第六模加单元的输入端连接,所述第五模加单元的输出端与第二模减单元的输入端连接,所述第二模减单元的输出端与第六模加单元的输入端连接,所述第六模加单元的输出端与第四寄存器的输入端连接;所述第二寄存器的输出端、第四寄存器的输出端均与第七模加单元的输入端连接,所述第七模加单元的输出端与第五寄存器的输入端连接,所述第五寄存器的输出端分别与第四移位单元的输入端、第三模减单元的输入端、第八模加单元的输入端连接;所述第四移位单元的输出端与第三模减单元的输入端连接,所述第三模减单元的输出端与第八模加单元的输入端连接,所述第八模加单元的输出端与第六寄存器的输入端连接,所述第六寄存器的输出端分别与第九模加单元的输入端、第十二数据选择单元的输入端连接,所述第九模加单元的输出端与第十二数据选择单元的输入端连接,所述第十三数据选择单元的输出端与第九模加单元的输入端连接。
[0018] 与现有技术相比,本发明具有如下有益效果:本设计使用高并行度DSP模乘单元,通过对乘数进行预处理,分为高11位和低12位并行计算乘法,有效地将串联的两个DSP单元转变成两个并行的DSP单元,将计算所需周期数从两个时钟周期变为一个时钟周期。使用高并行度DSP模乘单元,使得整体模乘运算的频率可以达到400MHz以上,且有效降低了计算复杂度,提高了模乘单元在计算不同位数乘法时的灵活性。本设计使用MDC‑NTT乘法器,通过对计算过程进行高度流水化处理,有效提高多项式乘法阶段的频率性能,省略了大量逻辑控制单元和中间数据寄存单元,在内存有限的设备上表现十分出色。本发明基于后量子数字签名的MDC‑NTT架构提高了设计灵活度,对于不同应用场景只需增加或减少乘法级数就可以满足计算要求。

附图说明

[0019] 图1为本发明基于后量子数字签名的MDC‑NTT装置的示意图;
[0020] 图2为本发明中MDC‑NTT乘法器的示意图;
[0021] 图3为本发明中二路延迟转换器的示意图;
[0022] 图4为本发明中模乘单元中乘法计算与约简的示意图;
[0023] 图5为本发明中模乘单元中复合和约简的示意图。

具体实施方式

[0024] 以下将结合附图,对本发明的技术方案进行详细说明。
[0025] 如图1为本发明基于后量子数字签名的MDC‑NTT装置的示意图,该MDC‑NTT装置包括:随机数生成模块、采样模块、第一多项式乘法模块、第二多项式乘法模块、计算模块和数据存储模块,随机数生成模块的输出端与采样模块的输入端连接,采样模块的输出端通过数据选择单元与数据存储模块的输入端连接,采样模块的输出端还与stream Out连接;数据存储模块的输出端通过数据选择单元与第一多项式乘法模块的输入端连接连接,第一多项式乘法模块的输出端与计算模块连接,计算模块分别与stream Out、数据存储单元的输入端连接,数据存储单元通过数据选择单元与第二多项式乘法模块连接。本发明使用了全流水设计,提高了设计灵活度,对于不同参数、不同乘法位数、不同NTT计算轮数只需增加或减少其中的乘法级数即可。
[0026] 本发明中随机数生成模块包括:第一随机数生成单元Keccak0、第二随机数生成单元Keccak1、第三随机数生成单元Keccak2,第一随机数生成单元Keccak0的输入端、第三随机数生成单元Keccak2的输入端均与stream In连接;第一随机数生成单元Keccak0的输出端、第二随机数生成单元Keccak1的输出端、第三随机数生成单元Keccak2的输出端分别与采样模块连接。随机数生成模块用于生成随机数,其中,一随机数生成单元Keccak0内置shake256单元,产生256个随机数,第二随机数生成单元Keccak1、第三随机数生成单元Keccak2内置shake512单元,产生512个随机数,使得生成的随机数用于满足下一采样阶段的输入需求。
[0027] 本发明中采样模块包括:第一采样单元、第二采样单元、第三采样单元、第四采样单元,第一采样单元的输入端分别与第一随机数生成单元Keccak0的输出端、stream Out连接,第二采样单元的输入端与第二随机数生成单元Keccak1的输出端连接,第三采样单元的输入端、第四采样单元的输入端均与第三随机数生成单元Keccak2的输出端连接;第一采样单元的输出端、第二采样单元的输出端均通过第三数据选择单元3与数据存储模块连接,第三采样单元的输出端、第四采样单元的输出端均通过第四数据选择单元4与数据存储模块连接。第一采样单元、第二采样单元采用均匀分布采样,第一采样单元还具有数据验证的功能,当采样结果验证为真时,输出会将采样结果分为高位和低位输出;第三采样单元、第四采样单元采用二项式采样。
[0028] 本发明中数据存储模块包括:第一数据存储单元RAM0、第二数据存储单元RAM1、第三数据存储单元RAM2、第四数据存储单元RAM3、第五数据存储单元RAM4、第六数据存储单元RAM5、第七数据存储单元RAM6,第一数据存储单元RAM0的输入端通过第三数据选择单元3分别与第一采样单元的输出端、第二采样单元的输出端、计算模块连接,第一数据存储单元RAM0的输出端通过第十数据处理单元与第一多项式乘法模块的输入端连接;第二数据存储单元RAM1的输入端通过第四数据选择单元4分别与第三采样单元的输出端、第四采样单元的输出端、第一多项式乘法模块连接;第二数据存储单元RAM1的输出端通过第十数据处理单元与第一多项式乘法模块的输入端连接;第三数据存储单元RAM2设置于第一多项式乘法模块中,所述第四数据存储单元RAM3的输入端、第六数据存储单元RAM5的输入端、第七数据存储单元RAM6的输入端分别与第二多项式乘法模块的输出端、计算模块连接,第四数据存储单元RAM3的输出端、第六数据存储单元RAM5的输出端、第七数据存储单元RAM6的输出端均通过第九数据选择单元9与第二多项式乘法模块的输入端连接;第五数据存储单元RAM4的输入端与计算模块连接,第五数据存储单元RAM4的输出端通过第九数据选择单元9与第二多项式乘法模块连接,且第五数据存储单元RAM4的输出端与计算模块连接。
[0029] 本发明中第一多项式乘法模块包括:第一移位寄存器FIFO、第二移位寄存器FIFO、第一MDC‑NTT乘法器,第一移位寄存器FIFO的输入端通过第十数据选择单元10分别与第一数据存储单元RAM0的输出端、第二数据存储单元RAM1的输出端、计算模块连接,第一移位寄存器FIFO的输出端与第一MDC‑NTT乘法器的输入端连接,第一MDC‑NTT乘法器的输出端与第二移位寄存器FIFO的输入端连接,且第一MDC‑NTT乘法器的输出端通过第四数据选择单元4与第二输出存储单元RAM1的输入端连接,第二移位寄存器FIFO的输出端与第三数据存储单元RAM2的输入端连接,第三数据存储单元RAM2的输出端与计算模块连接。通过第一多项式乘法模块处理上一阶段采样结果,生成后续计算所使用的多项式系数矩阵。
[0030] 本发明中计算模块包括:分解模块Decomposer、生成提示模块MakeHint、使用提示模块UseHint、编码模块Encoder和解码模块Decoder,分解模块Decomposer的输入端与第三数据存储单元RAM2的输出端连接,分解模块Decomposer的输出端通过第十数据选择单元10与第一移位寄存器FIFO的输入端连接,且分解模块Decomposer的输出端通过第五数据选择单元5与编码模块Encoder的输入端连接,分解模块Decomposer的输出端还与使用提示模块UseHint的输入端、第五数据存储单元RAM4的输入端连接;第五数据存储单元RAM4的输出端与生成提示模块MakeHint的输入端连接,生成提示模块MakeHint还通过第三数据选择单元3与第一数据存储单元RAM0连接,且第五数据存储单元RAM4的输出端通过第九数据选择单元与第二多项式乘法模块连接;生成提示模块MakeHint的输出端通过第十一数据选择单元
11与stream Out连接;使用提示模块UseHint的输出端通过第五数据选择单元5与编码模块Encoder的输入端连接,编码模块Encoder的输出端通过第十一数据选择单元11与stream Out连接,编码模块Encoder的输出端通过第六数据选择单元6与第二随机数生成单元Keccak1的输入端连接;第六数据选择单元6的输入端与stream In连接;解码模块Decoder的输入端与第一随机数生成单元Keccak0的输出端连接,解码模块Decoder的输出端通过第七数据选择单元7与第四数据存储单元RAM3的输入端连接,解码模块Decoder的输出端通过第八数据选择单元8与第六数据存储单元RAM5的输入端连接;第七数据存储单元RAM6的输出端通过第五数据选择单元5与编码模块Encoder的输入端连接,第四数据存储单元RAM3的输出端、第六数据存储单元RAM5的输出端、第七数据存储单元RAM6的输出端均通过第九数据选择单元9与第二多项式乘法模块连接。通过计算模块对乘法结果进一步处理,生成算法计算过程中的中间计算数据,由于解码模块等每个计算模块体量都较小,并且部分电路可复用。
[0031] 本发明中第二多项式乘法模块包括:第三移位寄存器FIFO、第二MDC‑NTT乘法器、第四移位寄存器FIFO,第三移位寄存器FIFO的输入端通过第九数据选择单元9分别与第一数据存储单元RAM0的输出端、第四数据存储单元RAM3的输出端、第五数据存储单元RAM4的输出端、第六数据存储单元RAM5输出端、第七数据存储单元RAM6的输出端、生成提示模块MakeHint的输出端连接,第三移位寄存器FIFO的输出端与第二MDC‑NTT乘法器的输入端连接,第二MDC‑NTT乘法器的输出端与第四移位寄存器FIFO的输入端连接,第四移位寄存器FIFO的输出端与第七数据存储单元RAM6的输入端连接,第四移位寄存器FIFO的输出端通过第七数据选择单元7与第四数据存储单元RAM3的输入端连接,第四移位寄存器FIFO的输出端通过第八数据选择单元8与第六数据存储单元RAM5的输入端连接。第二多项式乘法模块和第一多项式模块功能相同,用以处理中间计算模块产生的系数矩阵,输出的结果为最终所需要的数字签名组。由于两个阶段在计算周期上存在大量重叠,所以设置两个多项式乘法模块并行计算,提高系统的计算速度和频率性能。
[0032] 如图2,第一MDC‑NTT乘法器、第二MDC‑NTT乘法器由八级乘法单元依次连接组成,八个乘法单元组成八级的流水线乘法器,通过外部模式控制信号控制数据选择单元选择预处理和后处理的数据,使得乘法器可以在NTT和INTT之间相互切换。前七级乘法单元均包括:两个N位延迟单元、一个二路延迟转换器C2、一个蝶形计算单元BF和一个模乘单元,蝶形计算单元BF的上行输出端与二路延迟转换器C2的上行输入端连接,二路延迟转换器C2的上行输出端与一个N位延迟单元的输入端连接,一个N位延迟单元的输出端与下一级乘法单元的蝶形计算单元BF的上行输入端连接;蝶形计算单元BF的下行输出端与模乘单元的输入端连接,模乘单元的输出端与另一个N位延迟单元的输入端连接,另一个N位延迟单元的输出端与二路延迟转换器C2的下行输入端连接,二路延迟转换器C2的下行输出端与下一级乘法单元的蝶形计算单元BF的下行输入端连接;第八级乘法单元包括:一个蝶形计算单元BF和一个模乘单元,蝶形计算单元BF的下行输出端与模乘单元的输入端连接。
[0033] 对于MDC‑NTT乘法器,整个计算过程高度流水化,由于使用了流水线结构,在整个乘法器中不需要RAM进行中间数据的存储,当输入了256个23位的数据时,先通过串并转换器和逻辑控制单元将一路输入前128个和后128个分组调整为两路输入同时输入到乘法器的预处理单元中。此时,整个MDC‑NTT乘法器的计算过程如下:
[0034] (1)正向NTT阶段:外部控制模块给出模式选择信号m为1,预处理模块选择通过模乘单元后的数据,后处理模块选择直接输出NTT变换结果;同时模式控制信号控制所有ROM中的旋转因子地址,在正向NTT计算时选择相应正确的旋转因子表;
[0035] (2)逆向NTT阶段:外部控制模块给出模式选择信号m为0,预处理模块选择通直接输入数据,后处理模块选择经过模乘单元后的NTT变换结果;同时模式控制信号控制所有ROM中的旋转因子地址,在逆向NTT计算时选择相应正确的旋转因子表。
[0036] 在第n级乘法单元中,N位延迟单元的 ,例如:第一级乘法单元的N=64,由于预处理后的输入数据按照128个为一组进行分类,整体结构可以省去N=128延迟翻转环节。上行数据在蝶形计算单元BF之后直接输入到二路延迟转换器C2的上行通道中,下行数据在蝶形计算单元BF之后,首先通过模乘单元与ROM中相应旋转因子相乘,接着通过一个N位延迟单元输入到二路延迟转换器C2的下行通道中,二路延迟转换器C2中内置一个与前一个延迟单元相同位数的N计数器,使能信号由前一个蝶形计算单元BF给出。当蝶形计算单元BF上行通道的数据输出时,也就是二路延迟转换器C2的上行通道接收到输入数据时,计数器使能。当计数器计到N时,上下通道的数据翻转,此时二路延迟转换器C2的输出数据以N/2对这一级的二路输入数据进行分组,然后再输出给下一级进行计算,以此满足NTT所需的蝶形计算顺序。需要注意的是二路延迟转换器C2的上行数据在输出之后需要通过一个相同的N位延迟单元再输入到下一级蝶形单元的上行通道中,以保证上下两路数据同时输入到下一级蝶形单元中。
[0037] 如图3,本发明中二路延迟转换器C2均包括:N位延迟器、N计数器、第一数据选择单元1、第二数据选择单元2,第一数据选择单元1、第二数据选择单元2均与N计数器的输入端连接,N计数器的输出端与N为延迟器连接。第一数据选择单元1、第二数据选择单元2的选择信号sel由N计数器的计数信号给出:当计数到N时,计数器清零,同时sel信号取反,且初始状态为低电平信号0,达到数据翻转的效果。
[0038] 如图4‑5,模乘单元包括:第一DSP计算单元、第二DSP计算单元、第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器、第六寄存器、第一移位单元、第二移位单元、第三移位单元、第四移位单元、第一模加单元、第二模加单元、第三模加单元、第四模加单元、第五模加单元、第六模加单元、第七模加单元、第八模加单元、第九模加单元、第一模减单元、第二模减单元、第三模减单元、第十二数据选择单元12、第十三数据选择单元13,第一DSP计算单元的输出端与第一寄存器的输入端连接,第一寄存器的输出端分别与第一模加单元的输入端、第二模加单元的输入端、第一移位单元的输入端连接,第一模加单元的输出端与第二移位单元的输入端连接,第二移位单元的输出端与第三模加单元的输入端连接,第二模加单元的输出端与第一模减单元的输入端连接,第一模减单元的输出端与第三模加单元的输入端连接,第三模加单元的输出端与第二寄存器连接,第一移位单元的输出端与第一模减单元的输入端连接;第二DSP计算单元的输出端与第三寄存器的输入端连接,第三寄存器的输出端分别与第四模加单元的输入端、第五模加单元的输入端、第二模减单元的输入端连接,第四模加单元的输出端与第三移位单元的输入端连接,第三移位单元的输出端与第六模加单元的输入端连接,第五模加单元的输出端与第二模减单元的输入端连接,第二模减单元的输出端与第六模加单元的输入端连接,第六模加单元的输出端与第四寄存器的输入端连接;第二寄存器的输出端、第四寄存器的输出端均与第七模加单元的输入端连接,第七模加单元的输出端与第五寄存器的输入端连接,第五寄存器的输出端分别与第四移位单元的输入端、第三模减单元的输入端、第八模加单元的输入端连接;第四移位单元的输出端与第三模减单元的输入端连接,第三模减单元的输出端与第八模加单元的输入端连接,第八模加单元的输出端与第六寄存器的输入端连接,第六寄存器的输出端分别与第九模加单元的输入端、第十二数据选择单元12的输入端连接,第九模加单元的输出端与第十二数据选择单元12的输入端连接,第十三数据选择单元13的输出端与第九模加单元的输入端连接。在高度并行DSP模乘单元中,通过对乘数进行截位的预处理,使得所使用的两个DSP计算单元可以同时计算两部分乘法,完成一次23位乘23位的乘法只需要一个周期。约简算法使用了一种类似于巴雷特约简算法的变体,通过对DSP的两个计算结果进行分别约简,约简到选定位数后按照乘法分配律中高位和低位的顺序再组合得到整体乘法结果,再对此乘法结果进行一次约简就能得到符合设计位数规定的乘法结果数据。对于这个结果还需要用一个数据选择器和一个加法器完成校准,就能得到需要的约简结果,整体计算过程通过高度并行化DSP,只需三个周期就能够完成一次约简计算:在第一个周期中,分别去乘数y的高11位和低12位与被乘数x进行相乘,这个过程采用两个DSP 计算单元并行计算;在第二个计算周期中,两个乘法结果通过截位、移位和加减法单元,分别完成约简;两路数据在第三个计算周期进行复合,并通过一个数据选择器进行最后的数据校准过程。
[0039] 本发明基于后量子数字签名的MDC‑NTT装置包含了Dilithium数字签名的三个环节,计算过程由状态机Dilithium_S控制,具体计算过程如下:首先由三个随机数生成模块Keccak0、.Keccak1和Keccak2生成随机数,再分别由四个二项式采样模块进行采样,电路的整体数据流采用24位线宽,所以采样后的数据在进入MDC‑NTT乘法器前后需要通过一个由移位寄存器FIFO和128周期的延迟器组成的串并转换器转换为二路输入或者是一路输出;计算的中间数据存储在7个RAM中,每一个RAM都进行了严格的地址管理,使得每一个RAM的利用率都提高,同时,采样后的数据以及NTT计算后的数据需要在RAM中整理顺序后按照需要的顺序再输出,数据在NTT正变换后需要通过编码解码等其他电路完成数字签名的密钥生成、签名生成等阶段,计算后的数据再通过流水线乘法器完成逆向NTT变换。当Dilithium_S为00时,整体为密钥生成环节;当Dilithium_S为01时,整体为签名生成环节;
当Dilithium_S为10时,整体为签名验证环节。不同环节之间的转换依靠状态机输出的控制信号控制数据选择单元选择不同的数据,使得电路的数据流改变,电路的功能同时发生改变。同时,不同安全等级的切换则只需要修改Dilithium所用的系数。
[0040] 以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。