基于FPGA的SM4密码算法的高效实施系统及方法

    专利2025-03-31  24


    本发明属于密码学,具体涉及一种基于fpga的sm4密码算法的高效实施系统及方法。


    背景技术:

    1、基于fpga的sm4算法实现方法可分为两种类型:循环型、流水线型。对于循环型,jin等人在xilinx virtex-4 fpga设备上实现了循环型sm4密码算法,每36个时钟完成一次加密,其中4个时钟用于缓存数据,32个时钟用于加密。gao等人采用moore型状态机控制加密操作流程,其使用寄存器存储提前计算好的轮密钥,节省了密钥扩展所需的时间。guan等人和何等人使用moore型状态机来控制数据处理过程,加密模块和轮密钥扩展模块并行运行,轮密钥生成模块产生的轮密钥直接传递给加密模块使用,不需要使用额外的寄存器来存储轮密钥,且加密模块无需等待。另一方面,针对流水线型,jin等人使用128个双端口bram存储轮密钥和数据加密过程中所需用到的查表式s盒。gao等人使用32级流水线实现sm4密码算法,提高了加密的吞吐率和速度。guan等人将32级流水线中流水线的规模缩减一半,结合2轮迭代运算,实现32次数据加密的轮操作。

    2、s盒置换是sm4密码算法中用于实现混淆的重要步骤,确保了sm4密码算法的安全性,s盒置换操作的实现方式也影响着sm4密码算法在fpga上实现的效率。目前,s盒置换的方法分为查表式和代数式两种,而基于fpga实现sm4密码算法的方式包括循环型、流水线型设计架构,均采用查表方式实现s盒置换,即给定某个输入后,通过查表得到相应的输出。但是,查表的方式占用芯片面积大,且效率较低。liu等分析了sm4密码算法s盒的性质,提出了基于有限域求逆构造s盒的理论,与传统的查表法相比较,该方法采用代数运算计算s盒的输出结果,占用的芯片面积更加紧凑,适合用于芯片面积约束较严格的场景。王等提出了基于有限域求逆构造s盒的实现方法,该方法减少了硬件资源的消耗,但是在fpga上实现时,由于计算量较大,组合逻辑复杂,导致电路延迟高,将其运用于基于fpga实现sm4密码算法的方案时很大程度上影响了方案的整体频率。

    3、通过分析可知,现有技术中基于fpga的sm4密码算法的实施方法主要存在两个问题:其一是现有加密架构不能权衡好资源消耗和性能,循环架构适用于资源受限的场景,吞吐量和效率低,而流水线架构吞吐量高,但消耗过多的资源;另一个问题是现有技术中s盒置换的实现方式硬件资源的消耗较高、占用芯片面积较大、效率低。


    技术实现思路

    1、为了解决现有技术中存在的上述问题,本发明提供了一种基于fpga的sm4密码算法的高效实施系统及方法。本发明要解决的技术问题通过以下技术方案实现:

    2、第一方面,本发明提供一种基于fpga的sm4密码算法的高效实施系统,包括:轮密钥扩展模块和加密模块,所述加密模块包括级联的32个轮操作子模块;其中,

    3、所述轮密钥扩展模块,用于根据用户输入的密钥生成32个轮密钥,并将所述32个轮密钥分别输入至所述加密模块中的32个轮操作子模块;

    4、所述加密模块,用于根据所述32个轮操作子模块分别利用自身的轮密钥对输入数据进行轮操作后得到的处理结果,生成密文。

    5、在本发明的一个实施例中,所述加密模块还包括与各个轮操作子模块对应的多个寄存器,各所述轮操作子模块包括:轮操作单元和代数式s盒;其中,

    6、所述轮操作单元,用于将输入数据按位分成块ki、块ki+1、块ki+2和块ki+3后,利用自身的轮密钥rki、块ki+1、块ki+2和块ki+3进行异或操作,并将得到的第一数据按位分成块li、块li+1、块li+2和块li+3,进一步将块li、块li+1、块li+2和块li+3分别输入代数式s盒,并对各个代数式s盒的置换数据进行循环移位后,基于循环移位后的置换数据和所述块ki进行异或操作,将得到的第i个轮操作子模块的处理结果存入对应的寄存器;i=0,1,2……,31;

    7、其中,所述轮操作子模块的输入数据为上一个轮操作子模块的处理结果,第0个轮操作子模块的输入数据为待加密的明文,第31个轮操作子模块的处理结果为所述明文加密完成后的密文。

    8、第二方面,本发明提供一种基于fpga的sm4密码算法的高效实施方法,应用于上述系统;

    9、所述基于fpga的sm4密码算法的高效实施方法包括:

    10、获取用户输入的密钥以及待加密的明文;

    11、基于所述密钥生成32个轮密钥rki,i=0,1,2……,31;

    12、利用所述32个轮密钥rki对所述待加密的明文进行32轮轮操作,获得所述明文加密完成后的密文。

    13、在本发明的一个实施例中,每轮轮操作均按照如下步骤处理输入数据:

    14、将第i轮轮操作的输入数据按位分成块ki、块ki+1、块ki+2和块ki+3;

    15、利用第i轮轮操作对应的轮密钥rki以及块ki+1、块ki+2和块ki+3进行异或操作,得到第一数据;

    16、将所述第一数据按位分成块li、块li+1、块li+2和块li+3后,将块li、块li+1、块li+2和块li+3分别输入代数式s盒,得到置换数据;

    17、拼接各个代数式s盒的所述置换数据并进行循环移位;

    18、基于循环移位后的置换数据和所述块ki进行异或操作,并将得到的第i轮轮操作的处理结果存入对应的寄存器。

    19、在本发明的一个实施例中,将第i轮轮操作的输入数据按位分成块ki、块ki+1、块ki+2和块ki+3的步骤之前,还包括:

    20、从第i-1个轮操作子模块对应的寄存器中获取第i-1轮轮操作的处理结果,作为第i轮轮操作的输入数据;

    21、其中,第0轮轮操作的输入数据为所述待加密的明文,第31轮轮操作的处理结果为所述明文加密完成后的密文。

    22、在本发明的一个实施例中,利用第i轮轮操作对应的轮密钥rki以及块ki+1、块ki+2和块ki+3进行异或操作,得到第一数据的步骤,包括:

    23、对块ki+1、块ki+2和块ki+3进行异或操作,得到第一异或结果;

    24、将所述第一异或结果与第i轮轮操作对应的轮密钥rki进行异或操作,得到第一数据。

    25、在本发明的一个实施例中,将所述第一数据按位分成块li、块li+1、块li+2和块li+3后,将块li、块li+1、块li+2和块li+3分别输入代数式s盒,得到置换数据的步骤,包括:

    26、将所述第一数据按位分成块li、块li+1、块li+2和块li+3;

    27、将块li、块li+1、块li+2和块li+3分别输入代数式s盒,得到块li对应的第一置换数据、块li+1对应的第二置换数据、块li+2对应的第三置换数据以及块li+3对应的第四置换数据。

    28、在本发明的一个实施例中,拼接各个代数式s盒的所述置换数据并进行循环移位的步骤,包括:

    29、将所述第一置换数据、所述第二置换数据、所述第三置换数据和所述第四置换数据按位拼接后,分别得到的拼接数据向左循环移位2位、向左循环移位10位、向左循环移位18位、向左循环移位24位,得到第一移位数据、第二移位数据、第三移位数据和第四移位数据。

    30、在本发明的一个实施例中,基于循环移位后的置换数据和所述块ki进行异或操作,并将得到的第i轮轮操作的处理结果存入寄存器的步骤,包括:

    31、将所述第一移位数据与所述第二移位数据进行异或操作,得到第二数据;

    32、将所述第三移位数据与所述第四移位数据进行异或操作,得到第三数据;

    33、将所述第二数据、所述第三数据与所述拼接数据进行异或操作,得到第四数据;

    34、将所述第四数据与所述块ki进行异或操作,得到第i轮轮操作的处理结果块ki+4;

    35、存储所述第i轮轮操作的处理结果块ki+4至寄存器。

    36、在本发明的一个实施例中,将第i轮轮操作的输入数据按位分成块ki、块ki+1、块ki+2和块ki+3的步骤,包括:

    37、获取第i轮轮操作的输入数据,所述输入数据为32位;

    38、将所述输入数据的0~7位作为块ki、将8~15位作为块ki+1、将16~23位作为块ki+2、将24~32位作为块ki+3。

    39、与现有技术相比,本发明的有益效果在于:

    40、本发明提供一种基于fpga的sm4密码算法的高效实施系统及方法,该系统采用循环型密钥扩展架构结合查表式s盒,流水线型加密架构结合流水线式代数式s盒,本发明采用的加密架构具有更快的加密频率、更高的加密吞吐率以及更低的硬件资源消耗,克服了现有技术加密效率低、硬件资源消耗高的不足,使低资源的硬件设备能够拥有更快的加密效率。

    41、以下将结合附图及实施例对本发明做进一步详细说明。


    技术特征:

    1.一种基于fpga的sm4密码算法的高效实施系统,其特征在于,包括:轮密钥扩展模块和加密模块,所述加密模块包括级联的32个轮操作子模块;其中,

    2.根据权利要求1所述的基于fpga的sm4密码算法的高效实施系统,其特征在于,所述加密模块包括与各个轮操作子模块对应的多个寄存器,各所述轮操作子模块包括:轮操作单元和代数式s盒;其中,

    3.一种基于fpga的sm4密码算法的高效实施方法,其特征在于,应用于权利要求1-2任一所述的系统;

    4.根据权利要求3所述的基于fpga的sm4密码算法的高效实施方法,其特征在于,每轮轮操作均按照如下步骤处理输入数据:

    5.根据权利要求4所述的基于fpga的sm4密码算法的高效实施方法,其特征在于,将第i轮轮操作的输入数据按位分成块ki、块ki+1、块ki+2和块ki+3的步骤之前,还包括:

    6.根据权利要求4所述的基于fpga的sm4密码算法的高效实施方法,其特征在于,利用第i轮轮操作对应的轮密钥rki以及块ki+1、块ki+2和块ki+3进行异或操作,得到第一数据的步骤,包括:

    7.根据权利要求6所述的基于fpga的sm4密码算法的高效实施方法,其特征在于,将所述第一数据按位分成块li、块li+1、块li+2和块li+3后,将块li、块li+1、块li+2和块li+3分别输入代数式s盒,得到置换数据的步骤,包括:

    8.根据权利要求7所述的基于fpga的sm4密码算法的高效实施方法,其特征在于,拼接各个代数式s盒的所述置换数据并进行循环移位的步骤,包括:

    9.根据权利要求8所述的基于fpga的sm4密码算法的高效实施方法,其特征在于,基于循环移位后的置换数据和所述块ki进行异或操作,并将得到的第i轮轮操作的处理结果存入对应的寄存器的步骤,包括:

    10.根据权利要求4所述的基于fpga的sm4密码算法的高效实施方法,其特征在于,将第i轮轮操作的输入数据按位分成块ki、块ki+1、块ki+2和块ki+3的步骤,包括:


    技术总结
    本发明公开了一种基于FPGA的SM4密码算法的高效实施系统及方法,该系统包括:轮密钥扩展模块和加密模块,加密模块包括级联的32个轮操作子模块;其中,轮密钥扩展模块用于根据用户输入的密钥生成32个轮密钥,并将32个轮密钥分别输入至加密模块中的32个轮操作子模块;加密模块中,第i个轮操作子模块用于利用自身的轮密钥对输入数据进行加密后,输出密文。该系统采用循环型密钥扩展架构结合查表式S盒,流水线型加密架构结合流水线式代数式S盒,本发明采用的加密架构具有更快的加密频率、更高的加密吞吐率以及更低的硬件资源消耗,克服了现有技术加密效率低、硬件资源消耗高的不足,使低资源的硬件设备能够拥有更快的加密效率。

    技术研发人员:袁浩楠,张宏科,闫峥,丁文秀
    受保护的技术使用者:西安电子科技大学
    技术研发日:
    技术公布日:2024/4/29
    转载请注明原文地址:https://wp.8miu.com/read-84808.html

    最新回复(0)