一种应用于格密码的串行参数可配快速数论变换硬件加速器

文档序号:26503504发布日期:2021-09-04 06:27阅读:453来源:国知局
一种应用于格密码的串行参数可配快速数论变换硬件加速器

1.本发明涉及一种应用于格密码的串行参数可配快速数论变换硬件加速器,特别是涉及信息安全芯片设计技术领域。


背景技术:

2.为了解决量子计算对非对称加密算法的安全威胁,后量子密码成为了密码领域的前沿研究热点。美国nist第2轮候选算法和中国cacr公钥密码竞赛第2轮的候选算法中有基于格、基于编码、基于哈希、基于多变量等多种后量子密码算法。
3.现有技术中,后量子密码通过数学证明保证了算法的安全性,但在实际实现及应用时基于格的密码算法存在计算复杂度高,计算效率较低的问题。这些问题的存在严重的影响了前沿算法在生产生活中的应用。除此之外,各类公布出的ntt硬件加速器的设计方案设计一般都是基于通用计算平台的软件实现,虽然有一定的效果,但加速性能较差且能效较低,实际应用价值不高。一些学者针对某一种特定格密码算法设计了特定的ntt硬件加速器,此类设计加速效果好,能效高,对于特定的格密码算法有着一定的应用价值。但此类设计通用性较差,几乎没有可移植性,无法应对格密码算法的快速迭代。


技术实现要素:

4.发明目的:提出一种应用于格密码的串行参数可配快速数论变换硬件加速器,以解决现有技术存在的上述问题。
5.技术方案:第一方面,提出了一种应用于格密码的串行参数可配快速数论变换硬件加速器,具体包括:
6.顶层控制模块、数据索引模块、单位根幂次模块、蝶形运算模块、存储模块、蒙哥马利模块。
7.在第一方面的一些可实现方式中,顶层控制模块与数据索引模块、单位根幂次模块和蝶形运算模块均连接;蝶形运算模块还与数据索引模块和单位根幂次模块均连接。
8.其中,顶层控制模块,被设置为接收外部输入的配置信息并解析,以及控制ntt的整体运算流程;数据索引模块,被设置为根据顶层控制模块传入的计算点数生成数据的地址,对数据存储器进行寻址;单位根幂次模块,被设置为根据需求对每一级所需单位根的幂次进行存储地址计算;蝶形运算单元模块,被设置为根据数据存储器中读出的数据进行蝶形运算;蒙哥马利模块,被设置为将输入数据转换为蒙哥马利形式,并将结果转换为正常形式,从而避免发生错误。
9.顶层控制模块根据接收外部输入的配置信息进行解析,并配置蒙哥马利模块、数据索引模块和单位根幂次模块。蒙哥马利模块配置完成后,从外部读取数据并计算转为蒙哥马利表示形式,同时,数据索引模块、单位根幂次模块在得到配置信息后,开始根据顶层控制模块传入的计算点数生成数据的地址,对数据sram进行寻址。蒙哥马利模块转换完成后,开始生产地址读取数据并传输至蝶形运算单元模块。蝶形运算单元模块在接受数据后,
根据ntt/intt选择信号开始计算,每次计算完成后将数据存回至所述存储模块。数据索引模块、单位根幂次模块不断计算对应地址索引,如此往复直至计算结束;计算结束后,所述蒙哥马利模块再将蝶形运算单元模块存储的数据从存储模块中读出,并转换为正常形式,返回外部存储,结束后将结束信号回传至顶层控制模块;顶层控制模块将计算完成信号发送至其上位机。
10.在第一方面的一些可实现方式中,所述蒙哥马利模块与存储模块连接,在接收外部数据后,通过预处理的方式,将数据转换为蒙哥马利形式,并为后续计算需要的蒙哥马利参数提供数据来源。存储模块中所有的数据均使用蒙哥马利形式存储,涉及到所有的乘模运算都使用蒙哥马利算法进行算法优化及加速。
11.蝶形运算单元模块中包含有一个蒙哥马利乘模算法单元,一个模加单元和一个模减单元。其中,蒙哥马利乘模算法单元分别与数据索引模块,单位根幂次模块连接;模加单元和模减单元分别与数据索引模块及蒙哥马利乘模算法单元的结果接口相连。在蝶形运算单元模块计算时,针对一组蝶形输出分别需要与输入数据乘单位根的k次和输入数据乘单位根的k+n/2次相加,通过采用模减单元减少一次乘法,在具体的硬件实现中则是直接计算蒙哥马利乘模单元输出结果的补码取相反数进行两个加法。
12.为了兼容各级运算及intt运算,蝶形运算模块可配置是否使用各级运算资源。在进行intt运算时,会首先进行一步输入数据与n的逆元的乘法。此时蝶形运算模块中仅有蒙哥马利乘模算法单元工作,模加模减单元使用电源门控技术关闭,从而降低功耗。
13.单位根幂次模块对单位根的幂次进行存储地址计算时,若检测到单位根幂次指数为0,则不对数据存储器进行读操作,直接将数据1赋给蝶形计算单元模块,此时单位根幂次的值为1,不读数据直接生成旋转因子的结果,可以减少数据访存引起的功耗;反之,检测到单位根幂次的值为1时,则不进行蒙哥马利乘模运算,直接根据需求执行下一步的模加、模减运算。
14.在第一方面的一些可实现方式中,计算模块之间采用全流水实现,计算过程也是全流水的;数据采用串行计算,每次运算输入两个计算数据和一个单位根的幂,输出两个结果数据。其中,蒙哥马利乘模算法单元中使用cios算法实现流水线,供多个数据同时计算。
15.数据进行流水运算,一级运算完成后执行下一级运算;当运算多批次数据时,所有批次的第一级同时计算,所有批次的一级运算完成后执行所有批次的下一级运算。相比于现有技术采用完成第一批运算后进行第二批运算,直至完成最后一批运算,现有技术由于级间不流水引起的固定延时为n;定义批数为m,本实施例方法的级间中断引起的固定延时仅为n/m。针对计算阶数n小于流水线深度的情况,顶层控制模块会在一级计算完成后,暂时中止数据索引模块、单位根幂次模块生成相关地址以及对sram的读操作,避免读后写数据冲突,保证计算的正确性。
16.在第一方面的一些可实现方式中,存储模块的sram分为多块,且支持不同位宽的读写,对于不同配置使用不同的sram块数,不使用的sram支持电源门控关闭以降低静态功耗,保证在不同配置情况下的能耗最优解。
17.第二方面,提出一种应用于格密码的串行参数可配快速数论变换加速方法,该方法具体包括以下步骤:
18.接收并解析外部输入的配置信息;
19.根据解析出的配置信息配置蒙哥马利模块、数据索引模块和单位根幂次模块;
20.待进行计算的外部数据进入所述蒙哥马利模块,并转换为蒙哥马利形式;同时,数据索引模块、单位根幂次模块计算外部数据的地址索引,并在蒙哥马利模块转换完成后,生产地址读取数据并传输至蝶形运算单元模块;
21.外部数据进入蝶形运算单元模块后,根据ntt/intt选择信号开始计算;每次计算完成后,进入存储模块进行存储;
22.在对应地址索引计算完成后,数据从存储模块读出并进入蒙哥马利模块,转换为正常形式,并返回外部存储;
23.结束信号在计算完成后传输至顶层控制模块,并通过所述顶层控制模块传输至上位机。
24.在第二方面的一些可实现方式中,针对计算阶数n小于流水线深度的情况,顶层控制模块会在一级计算完成后,暂时中止数据索引单元,单位根幂次单元生成相关地址以及对sram的读操作。
25.有益效果:本发明提出了一种应用于格密码的串行参数可配快速数论变换硬件加速器,该加速器具体包括:顶层控制模块、数据索引模块、单位根幂次模块、蝶形运算模块、存储模块、蒙哥马利模块。本发硬件加速器,充分地考虑了硬件的特点,采用硬件友好的cios算法实现蒙哥马利模乘加速计算性能,采用蝶形单元算法降低ntt计算乘法数量,降低计算复杂度。对于计算中涉及到的单位根的n/2次幂乘法改用补码求相反数计算,减少了乘法的次数,并尽可能的减少对于存储单元的访问和乘法计算,提高了整个ntt计算的效率。
26.根据ntt计算算法原理,本发明采用蝶形运算模块进行优化,减少了计算中乘法的数量,同时在乘单位根的0次方时采用了简单的寄存器单元,避免了复杂的乘法计算,在面积和功耗两方面都有着优异的表现。
27.对于大数的乘模运算,本发明采用蒙哥马利模块,利用蒙哥马利乘模算法有效的将硬件实现不友好的除法运算转换成了加法和乘法运算,并使用cios算法进行流水线实现,保证了蒙哥马利乘模算法的时序性能,为后端实现打下了低功耗设计的基础。
28.在顶层模块计算流水线深度与计算阶数的关系,采用数据索引模块、单位根幂次模块生成相关地址以及对sram的读操作,在保证了计算准确性的同时,保证了更低的功耗。
29.另一方面,针对intt计算加入了一个乘n逆元计算单元,避免了增加新的计算资源,有效的减少的硬件资源的使用,减小了整体的实现面积。本发明采用串行计算且支持参数可配置在兼顾了通用性的同时还保证了ntt计算的性能及能效。
附图说明
30.图1为本发明的整体架构图。
31.图2为本发明蝶形运算模块功能示意图。
32.图3为本发明蝶形运算模块实现示意图。
具体实施方式
33.在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本发明可以无需一个或多个这些细节而得以
实施。在其他的例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。
34.实施例一
35.针对现有技术中存在的软件实现ntt计算性能低,能效差,硬件实现的ntt计算通用性差、不可配置,以及现有技术无法针对ntt计算的实现同时兼顾通用性、性能及能效的问题,本发明提出一种应用于格密码的串行参数可配快速数论变换硬件加速器,实现了一种串行的参数可配ntt硬件加速器,在保证了通用性的前提下有效提升了加速性能,且能效较好。
36.具体的,如图1所示,该加速器具体包括:顶层控制模块、数据索引模块、单位根幂次模块、蝶形运算模块、存储模块、蒙哥马利模块。
37.顶层控制模块与数据索引模块、单位根幂次模块和蝶形运算模块均连接;蝶形运算模块还与数据索引模块和单位根幂次模块均连接。
38.所述顶层控制模块,被设置为用于控制状态转换运算;
39.所述数据索引模块,被设置为对数据存储器进行寻址;
40.所述单位根幂次模块,被设置为对单位根的幂次进行存储地址计算;
41.所述蝶形运算单元模块,被设置为根据数据存储器中读出的数据进行蝶形运算。
42.所述蒙哥马利模块,被设置为将输入数据转换为蒙哥马利形式,并将结果转换为正常形式,从而避免发生错误。
43.实施例二
44.利用实施例一中提出硬件加速器进行快速数论变换时,该硬件加速器首先接收外部的配置信息,利用其中的顶层控制模块解析配置信息,并配置蒙哥马利模块、数据索引模块和单位根幂次模块从而实现相关参数初始化。其中,配置信息包括计算的阶数,计算模数及ntt/intt选择信号。其次,蒙哥马利模块开始从外部读取数据并计算转为蒙哥马利表示形式,同时,数据索引模块、单位根幂次模块在得到配置信息后,开始计算对应的地址索引,在蒙哥马利模块转换完成后,开始生产地址读取数据并传输至蝶形运算单元模块。再次,蝶形运算单元模块在接受数据后,根据ntt/intt选择信号开始计算,每次计算完成后将数据存回存储模块。数据索引模块、单位根幂次模块不断计算对应地址索引,如此往复直至计算结束。从次,计算结束后,蒙哥马利模块再将数据从存储模块中读出,并转换为正常形式,返回外部存储,结束后将结束信号回传至顶层控制模块。最后,顶层控制模块将计算完成信号发送至其上位机。
45.实施例三
46.单位根幂次模块对单位根的幂次进行存储地址计算时,若检测到单位根幂次指数为0,则不对数据存储器进行读操作,直接将数据1赋给蝶形计算单元模块,此时单位根幂次的值为1,不读数据直接生成旋转因子的结果,从而减少数据访存引起的功耗;反之,检测到单位根幂次的值为1时,则不进行蒙哥马利乘模运算,直接执行下一步的模加/模减运算,从而减少计算带来的功耗。
47.实施例四
48.选择数据存储器为sram,其大小为128k,可支持最大1024阶,数据最大位宽为128bit的多项式乘法。其中sram分为16块,且支持32、64和128bit位宽读写,且每块sram支
持独立的电源门控,不使用的sram支持电源门控关闭以降低静态功耗,保证了不同配置情况下的能耗最优解。
49.实施例五
50.蝶形运算单元模块支持多种计算,包括乘模计算、模加计算、模减计算,以适应ntt算法的不同级计算。其中乘模、模加、模减计算均支持最高128bit数据位宽。
51.具体的,蝶形运算单元模块设计实现功能如图2所示,在本实施例中其实现方法如图3所示。其中蒙哥马利乘模单元模块带有电源门控,在不使用时可关闭。顶层控制器可根据不同级ntt/intt算法需要快速重构蝶形单元数据流实现不同功能以缩短计算时间,提高计算效率,降低功耗。
52.在计算如下表达式时,
[0053][0054]
式中,x(m)表示待进行计算的输入数据;g
mn
表示单位根的mn次方;q表示格密码中的模数;n表示数论转换的多项式的阶;采用蝶形运算单元模块,可减少乘法运算的次数,减少单位根幂次搬运规模。针对n阶ntt算法,其乘法次数从n*n减少至log
2 n*n/2次。在蝶形运算单元模块计算时,针对一组蝶形输出分别需要与输入数据乘单位根的k次和输入数据乘单位根的k+n/2次相加,本设计采用模减单元减少一次乘法,在具体的硬件实现中则是直接计算蒙哥马利乘模单元输出结果的补码取相反数进行两个加法。
[0055]
蝶形运算单元模块中包含有一个蒙哥马利乘模算法单元,一个模加单元和一个模减单元。蒙哥马利乘模算法单元分别与数据索引模块,单位根幂次模块连接。模加和模减单元分别与数据索引模块及蒙哥马利乘模算法单元的结果接口相连。在进行intt运算时,会首先进行一步输入数据与n的逆元的乘法。此时蝶形运算模块中仅有蒙哥马利乘模算法单元工作,模加模减单元使用电源门控技术关闭,降低功耗。
[0056]
在本实施例中,cios算法选择以32进制计算,使得蒙哥马利乘模算法的流水线深度为16。即蒙哥马利模乘算法的延时为16个时钟周期,同时可进行16组数据的模乘。选择此进制即可保证较大数据的计算性能,也可减少小数字运算时的冗余。在蒙哥马利乘模算法单元中使用cios算法实现流水线,可供多个数据同时计算,保证了整体ntt算法整体的吞吐率和硬件时序。同时,流水线设计使后端实现时可低电压单元,降低了设计的功耗。
[0057]
本实施例的可配置快速数论硬件加速器从减少对存储器的访问和ntt算法简化以及乘模运算加速三个方面对算法的各个模块进行优化,在保证性能的前提下降低硬件功耗,实现低功耗处理。本实施例基于14nm工艺库进行综合,时钟周期可达1ghz,执行1024阶128位数据ntt运算操作时钟周期小于5140,相较于现有技术,本实施例的功耗和性能大幅提升。支持数据8~1024阶8~128bit位宽ntt运算,具有较强的灵活性。
[0058]
实施例六
[0059]
实施例一中提出的硬件加速器,其计算单元采用全流水实现,计算过程也是全流水的。数据采用串行计算,每次运算输入两个计算数据和一个单位根的幂,输出两个结果数据。本发明采用了串行实现,每级运算采用相同运算资源,运算资源消耗少,且对不同点数的ntt具有配置灵活的特点,在兼顾性能与通用性的同时,一定程度上提升了能效。
[0060]
具体的,数据进行流水运算,一级运算完成后执行下一级运算;当运算多批次数据时,所有批次的第一级同时计算,所有批次的一级运算完成后执行所有批次的下一级运算。相比于现有技术采用完成第一批运算后进行第二批运算,直至完成最后一批运算,现有技术由于级间不流水引起的固定延时为n;定义批数为m,本实施例方法的级间中断引起的固定延时仅为n/m。
[0061]
针对计算阶数n小于流水线深度的情况,顶层控制模块会在一级计算完成后,暂时中止数据索引模块,单位根幂次模块生成相关地址以及对sram的读操作,避免读后写数据冲突,保证计算的正确性。
[0062]
存储模块的sram分为多块,且支持不同位宽的读写,对于不同配置使用不同的sram块数,不使用的sram支持电源门控关闭以降低静态功耗,保证在不同配置情况下的能耗最优解。
[0063]
如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上做出各种变化。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1