SM4算法的实现方法与装置与流程


sm4算法的实现方法与装置
技术领域
1.本发明涉及信息安全技术领域,具体而言,涉及一种sm4算法的实现方法与装置。


背景技术:



2.近年来随着信息技术的高速发展,物联网成为新一代信息化浪潮的典型代表,然而,使用传统对称密码算法解决物联网领域日益突出的数据安全问题遇到了困难,其主要原因是物联网上使用的应用组件不同于传统的台式机和高性能计算机,它采用计算能力相对较弱的微型计算处理设备,而这类设备的运算存储能力有限。在这种情况下,轻量级对称密码算法受到人们的广泛关注。
3.与此同时,增强轻量级密码算法的抗旁路攻击的能力也变得越来越重要。通过对设备的功耗进行分析发现,密码设备在执行相同指令的情况下,功耗与参与运算的密钥有一定的关系。攻击者利用这种关系对采集到的能量迹进行dpa攻击,可以分析出密钥,这就给密码算法造成了极大的安全威胁。此外,cpu的执行时间与cpu内部运行状态也有很大的相关关系,因此,攻击者可以利用这些泄露信息来破解和恢复密钥,这也给密码算法造成了极大的威胁。


技术实现要素:



4.本技术实施例提供了一种sm4算法的实现方法与装置,该实现方法与装置可应用于物联网应用环境,既能满足资源消耗小的要求,又能有效的抵抗时间攻击。
5.第一方面,本技术实施例提供了一种sm4算法的实现方法,所述方法应用于sm4算法的实现装置,所述实现装置包括第一计数器,所述方法包括;
6.获取第一随机数,判断轮函数的第n轮迭代运算是否结束;
7.当所述轮函数的第n轮迭代运算结束时,所述第一计数器从零开始计数;
8.判断所述第一计数器是否等于所述第一随机数;
9.若所述第一计数器不等于所述第一随机数,则所述第一计数器加1;
10.若所述第一计数器等于所述第一随机数,则所述第一计数器归零,获取第二随机数,并根据所述第二随机数进行下一轮迭代运算。
11.优选地,所述实现装置还包括第二计数器,所述第二计数器用于对所述轮函数的第n轮迭代运算的运算时间周期进行计数,所述判断轮函数的第n轮迭代运算是否结束,包括;
12.判断所述第二计数器是否等于预设周期,
13.若所述第二计数器等于预设周期,则确定所述轮函数的第n轮迭代运算结束,所述第二计数器归零。
14.优选地,所述预设周期为8,所述第n轮迭代运算的运算过程包括:
15.在所述第二计数器为0-3的计数周期内,对第n-1轮密钥进行轮函数运算得到第n轮密钥;
16.在所述第二计数器为4-7的计数周期内,利用所述第n轮密钥对第n-1轮密文进行轮函数运算得到第n轮密文。
17.优选地,所述在所述第二计数器为0-3的计数周期内,对第n-1轮密钥进行轮函数运算得到第n轮密钥,包括:
18.按照预设比特位顺序,将所述第n-1轮密钥分成4组子第n-1轮密钥,其中,所述4组子第n-1轮密钥的比特位数相同;
19.在所述第二计数器由0累加计数到3的周期内,依次对所述4组子第n-1轮密钥进行合成置换运算,其中,每完成1组子第n-1轮密钥的合成置换运算时,所述第二计数器加1;
20.根据所述4组子第n-1轮密钥的合成置换运算结果,得到所述第n轮密钥。
21.优选地,所述在所述第二计数器为4-7的计数周期内,利用所述第n轮密钥对第n-1轮密文进行轮函数运算得到第n轮密文,包括:
22.按照预设比特位顺序,将所述第n-1轮密文分成4组子第n-1轮密文,将所述第n轮密钥分成4组子第n轮密钥,其中,所述4组子第n-1轮密文的比特位数和所述4组子第n轮密钥的比特位数相同;
23.在所述第二计数器由4累加计数到7的周期内,依次利用所述4组子第n轮密钥对所述4组子第n-1轮密文和进行合成置换运算,其中,每完成1组子第n-1轮密文和所述4组子第n轮密钥的合成置换运算时,所述第二计数器加1;
24.根据所述4组子第n-1轮密文和所述4组子第n轮密钥的合成置换运算结果,得到所述第n轮密文。
25.优选地,所述实现装置还包括第三计数器,所述第三计数器用于对所述轮函数的迭代运算轮次数进行计数,所述方法还包括:
26.当所述第一计数器等于所述第一随机数时,所述第三计数器加1。
27.优选地,所述方法还包括:
28.根据所述轮函数依次进行32轮迭代运算,得到第32轮密文后,所述第三计数器归零,其中,所述根据所述轮函数依次进行32轮迭代运算的过程中,所述第三计数器由0累加计数到32。
29.优选地,进行所述轮函数运算之前,所述方法还包括:
30.获取数据明文,明文掩码,加密密钥和密钥掩码;
31.将所述数据明文和明文掩码进行异或运算得到带掩码的数据明文,将所述加密密钥和所述密钥掩码进行异或运算得到带掩码的加密密钥;
32.根据所述带掩码的数据明文和所述带掩码的加密密钥进行所述轮函数运算的第1轮迭代运算。
33.第二方面,本技术实施例提供一种sm4算法的实现装置,所述实现装置包括第一计数器和周期控制模块;
34.所述周期控制模块,用于获取第一随机数,判断轮函数的第n轮迭代运算是否结束,当所述轮函数的第n轮迭代运算结束时,所述第一计数器从零开始计数;判断所述第一计数器是否等于所述第一随机数;若所述第一计数器不等于所述第一随机数,则所述第一计数器加1,若所述第一计数器等于所述第一随机数,则所述第一计数器归零,获取第二随机数,并根据所述第二随机数进行下一轮迭代运算。
35.本技术实施例提供的sm4算法的实现方法与装置,通过获取第一随机数,判断轮函数的第n轮迭代运算是否结束;当轮函数的第n轮迭代运算结束时,第一计数器从零开始计数;判断第一计数器是否等于第一随机数;若第一计数器不等于第一随机数,则第一计数器加1;若第一计数器等于第一随机数,则第一计数器归零,获取第二随机数,并根据第二随机数进行下一轮迭代运算。本发明方法通过设置的第一计数器为每一轮迭代运算加入随机冗余周期,并通过对第一计数器计数进行周期控制,使得sm4算法的32轮运算中的每一轮运行时间不断发生变化,运行周期都不固定,从而使得整个实现装置可以有效抵抗计时攻击,增强了sm4算法加密的安全性,达到了在传统循环结构的基础上进一步减小了电路的面积资源消耗的目的,进而解决了应用于物联网应用环境,既能满足资源消耗小的要求,又能有效的抵抗时间攻击的技术问题。
附图说明
36.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
37.图1是根据本技术实施例的sm4算法的实现方法的流程图;
38.图2是根据本技术实施例的sm4算法的实现装置的示意图。
具体实施方式
39.为了使本技术领域的人员更好地理解本发明方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
40.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
41.实施例1
42.根据本技术实施例,提供了一种sm4算法的实现方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
43.图1是本技术实施例的sm4算法的实现方法的流程图,所述方法应用于sm4算法的实现装置,所述实现装置包括第一计数器,所述方法包括如下步骤s101-s105:
44.s101、获取第一随机数,判断轮函数的第n轮迭代运算是否结束。
45.s102、当所述轮函数的第n轮迭代运算结束时,所述第一计数器从零开始计数。
46.s103、判断所述第一计数器是否等于所述第一随机数。
47.s104、若所述第一计数器不等于所述第一随机数,则所述第一计数器加1。
48.s105、若所述第一计数器等于所述第一随机数,则所述第一计数器归零,获取第二随机数,并根据所述第二随机数进行下一轮迭代运算。
49.具体地,在进行sm4算法的轮函数迭代运算时,先获取第一随机数作为轮函数第n轮迭代运算的冗余周期,然后判断轮函数的第n轮迭代运算是否结束,当所述轮函数的第n轮迭代运算结束时,第一计数器从零开始计数,并判断所述第一计数器是否等于所述第一随机数,若所述第一计数器不等于所述第一随机数,则所述第一计数器加1,若所述第一计数器等于第一随机数,则将第一计数器归零,并获取第二随机数作为下一轮迭代运算的冗余周期,并根据所述第二随机数进行下一轮迭代运算,第一随机数和第二随机数为根据随机数生成技术产生的任意数据。
50.本技术实施例的sm4算法的实现方法通过设置的第一计数器为每一轮迭代运算加入随机冗余周期,通过上述第一计数器相关的控制步骤,使得sm4算法的32轮运算中的每一轮运行时间不断发生变化,运行周期都不固定,因此使得整个实现装置可以有效抵抗计时攻击,增强了sm4算法加密的安全性。
51.在一些实施例中,所述实现装置还包括第二计数器,所述第二计数器用于对所述轮函数的第n轮迭代运算的运算周期进行计数,所述判断轮函数的第n轮迭代运算是否结束的步骤,包括:
52.判断所述第二计数器是否等于预设周期,若所述第二计数器等于预设周期,则确定所述轮函数的第n轮迭代运算结束,所述第二计数器归零。
53.具体地,第二计数器用于对轮函数运算的每一轮迭代运算的运算周期进行计数,通过对第二计数器是否等于预设周期可以判断轮函数运算的每一轮迭代运算是否结束,当所述第二计数器等于预设周期内,则确定所述轮函数的第n轮迭代运算结束,将所述第二计数器归零。
54.在具体的实施例中,所述预设周期为8,所述第n轮迭代运算的运算过程包括:
55.在所述第二计数器为0-3的计数周期内,对第n-1轮密钥进行轮函数运算得到第n轮密钥;
56.在所述第二计数器为4-7的计数周期内,利用所述第n轮密钥对第n-1轮密文进行轮函数运算得到第n轮密文。
57.具体地,每一轮迭代运算的运算周期为8,在前4个周期内,即在所述第二计数器为0-3的计数周期内,进行轮密钥的扩展运算,通过对第n-1轮密钥进行轮函数运算即可得到第n轮密钥;在后4个周期内,即在所述第二计数器为4-7的计数周期内,利用轮密钥对数据明文和/或第n-1轮密文进行轮函数运算得到第n轮密文。
58.例如,第1轮迭代运算的运算过程包括:获取数据明文和加密密钥,在所述第二计数器为0-3的计数周期内,对加密密钥进行轮函数运算得到第1轮密钥;在所述第二计数器为4-7的计数周期内,利用所述第1轮密钥对数据明文进行轮函数运算得到第1轮密文,第1轮迭代运算结束。
59.在具体的实施例中,在所述第二计数器为0-3的计数周期内,对第n-1轮密钥进行轮函数运算得到第n轮密钥,包括:按照预设比特位顺序,将所述第n-1轮密钥分成4组子第
n-1轮密钥,其中,所述4组子第n-1轮密钥的比特位数相同;在所述第二计数器由0累加计数到3的周期内,依次对所述4组子第n-1轮密钥进行合成置换运算,其中,每完成1组子第n-1轮密钥的合成置换运算时,所述第二计数器加1;根据所述4组子第n-1轮密钥的合成置换运算结果,得到所述第n轮密钥。
60.在实际sm4算法加密运算中,待加密数据的数据明文长度为128比特,分为4个字,每个字长度为32位,例如数据明文表示为x(x0,x1,x2,x3),加密密钥长度也为128比特,同样分为4个字,每个字长度为32位,例如加密密钥表示为mk(mk0,mk1,mk2,mk3)。sm4加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(32比特)为单位进行加密运算,每一次迭代运算均为一轮函数变换。轮函数运算包括合成置换运算,合成置换运算包括非线性运算和线性运算。sm4算法的加密和解密算法的结构相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序。
61.轮密钥是根据加密密钥扩展生成的,轮密钥rk的长度为1个字(32比特),按照比特位从高到低或者从低到高的顺序,将32比特的轮密钥rk分成4组8比特的子轮密钥。所述在所述第二计数器由0累加计数到3的周期内,依次对所述4组子第n-1轮密钥进行合成置换运算可以包括:
62.当第二计数器为0时,对第1组子第n-1轮密钥进行合成置换运算;当第二计数器为1时,对第2组子第n-1轮密钥进行合成置换运算;当第二计数器为2时,对第3组子第n-1轮密钥进行合成置换运算;当第二计数器为3时,对第4组子第n-1轮密钥进行合成置换运算。
63.最后,将4组子第n-1轮密钥的合成置换运算按照对应比特位分别进行异或运算,即可得到第n轮密钥。
64.同理,在具体的实施例中,在所述第二计数器为4-7的计数周期内,利用所述第n轮密钥对第n-1轮密文进行轮函数运算得到第n轮密文,包括:
65.按照预设比特位顺序,将所述第n-1轮密文分成4组子第n-1轮密文,将所述第n轮密钥分成4组子第n轮密钥,其中,所述4组子第n-1轮密文的比特位数和所述4组子第n轮密钥的比特位数相同;
66.在所述第二计数器由4累加计数到7的周期内,依次利用所述4组子第n轮密钥对所述4组子第n-1轮密文和进行合成置换运算,其中,每完成1组子第n-1轮密文和所述4组子第n轮密钥的合成置换运算时,所述第二计数器加1;
67.根据所述4组子第n-1轮密文和所述4组子第n轮密钥的合成置换运算结果,得到所述第n轮密文。
68.具体的,第n轮密文是利用第n轮密钥对数据明文和/或第n-1轮密文进行加密运算生成的,其长度也为1个字(32比特)。因此,可按照比特位从高到低或者从低到高的顺序,将32比特的第n-1轮密文分成4组8比特的子第n-1轮密文,将32比特的第n轮密钥分成4组8比特的子第n轮密钥。在所述第二计数器由4累加计数到7的周期内,依次利用所述4组子第n轮密钥对所述4组子第n-1轮密文和进行合成置换运算,例如:
69.当第二计数器为4时,对第1组子第n-1轮密文进行合成置换运算;当第二计数器为5时,对第2组子第n-1轮密文进行合成置换运算;当第二计数器为6时,对第3组子第n-1轮密文进行合成置换运算;当第二计数器为7时,对第4组子第n-1轮密文进行合成置换运算。
70.最后,将4组子第n-1轮密文的合成置换运算按照对应比特位分别进行异或运算,
即可得到第n轮密文。
71.在本实施例中,所述实现装置可以只包括一个s盒即可实现以上合成置换运算,大大减小了电路面积。
72.在一些实施例中,所述实现装置还包括第三计数器,所述第三计数器用于对所述轮函数的迭代运算轮次数进行计数,第三计数器的计数周期为0-32。sm4算法加密运算过程中,当所述第一计数器等于所述第一随机数时,所述第三计数器加1,所述第三计数器由0累加计数到32,当根据所述轮函数依次进行32轮迭代运算,得到第32轮密文后,根据所述第32轮密文可以计算得到最终的数据密文,所述第三计数器归零。
73.在一些实施例中,进行所述轮函数运算之前,所述方法还包括对数据明文和加密密钥进行掩码运算,从而抵抗攻击,提高加密算法的安全性,具体包括以下步骤:
74.获取数据明文,明文掩码,加密密钥和密钥掩码;将所述数据明文和明文掩码进行异或运算得到带掩码的数据明文,将所述加密密钥和所述密钥掩码进行异或运算得到带掩码的加密密钥;根据所述带掩码的数据明文和所述带掩码的加密密钥进行所述轮函数运算的第1轮迭代运算。
75.明文掩码和密钥掩码可以是随机数生成器生成的随机数,其长度对应于数据明文和加密密钥,为128比特。将相同比特位的数据明文和明文掩码进行异或运算可得到带掩码的数据明文,将加密密钥和密钥掩码进行异或运算可得到带掩码的加密密钥,其中带掩码的加密密钥可作为用于后续进行密钥扩展生成轮密钥。
76.在本实施例中,所述实现装置包括并行的第一s盒和第二s盒,在利用第一s盒进行轮密钥运算和轮密文运算时,同时利用并行的第二s盒进行密钥掩码的轮函数运算,以便最后根据密文运算结果和掩码运算结果进行异或,从而去除掩码得到最后的加密结果。
77.本技术实施例提供的sm4算法的实现方法,达到了在传统循环结构的基础上有效的抵抗旁路攻击,提高算法的安全性的技术效果,又能满足资源消耗小的要求。
78.实施例2
79.根据本技术实施例的另一方面,还提供了一种sm4算法的实现装置,图2是根据本技术实施例的sm4算法的实现装置的示意图,如图2所示,该sm4算法的实现装置201包括第一计数器201和周期控制模块202。
80.所述周期控制模块202,用于获取第一随机数,判断轮函数的第n轮迭代运算是否结束,当所述轮函数的第n轮迭代运算结束时,所述第一计数器201从零开始计数;判断所述第一计数器201是否等于所述第一随机数;若所述第一计数器201不等于所述第一随机数,则所述第一计数器201加1,若所述第一计数器201等于所述第一随机数,则所述第一计数器201归零,获取第二随机数,并根据所述第二随机数进行下一轮迭代运算。
81.在一些实施例中,所述实现装置还包括第二计数器,所述第二计数器用于对所述轮函数的第n轮迭代运算的运算时间周期进行计数,所述周期控制模块202,还用于判断所述第二计数器是否等于预设周期,若所述第二计数器等于预设周期,则确定所述轮函数的第n轮迭代运算结束,所述第二计数器归零。
82.在一些实施例中,所述实现装置还包括迭代运算模块,所述迭代运算模块,用于在所述第二计数器为0-3的计数周期内,对第n-1轮密钥进行轮函数运算得到第n轮密钥;在所述第二计数器为4-7的计数周期内,利用所述第n轮密钥对第n-1轮密文进行轮函数运算得
到第n轮密文。
83.在一些实施例中,所述实现装置还包括第三计数器,所述第三计数器用于对所述轮函数的迭代运算轮次数进行计数,所述周期控制模块202,还用于当所述第一计数器201等于所述第一随机数时,控制所述第三计数器加1。
84.需要说明的是,上述各个模块是可以通过软件或硬件来实现的,上述各个模块可以位于同一处理器中;和/或,上述各个模块以任意组合的方式位于不同的处理器中。
85.在本实施例中,该sm4算法的实现装置通过第一计数器与周期控制模块进行控制实现sm4算法加密,可以大大减小sm4算法面积资源的消耗,同时能够抵抗dpa攻击与计时攻击,提高算法的安全性,能够在物联网iot领域更安全的使用。
86.此处需要说明的是,上述sm4算法的实现装置200中的上述模块与实施例1对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。
87.在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
88.在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
89.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
90.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
91.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
92.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

技术特征:


1.一种sm4算法的实现方法,其特征在于,所述方法应用于sm4算法的实现装置,所述实现装置包括第一计数器,所述方法包括;获取第一随机数,判断轮函数的第n轮迭代运算是否结束;当所述轮函数的第n轮迭代运算结束时,所述第一计数器从零开始计数;判断所述第一计数器是否等于所述第一随机数;若所述第一计数器不等于所述第一随机数,则所述第一计数器加1;若所述第一计数器等于所述第一随机数,则所述第一计数器归零,获取第二随机数,并根据所述第二随机数进行下一轮迭代运算。2.根据权利要求1所述的实现方法,其特征在于,所述实现装置还包括第二计数器,所述第二计数器用于对所述轮函数的第n轮迭代运算的运算时间周期进行计数,所述判断轮函数的第n轮迭代运算是否结束,包括;判断所述第二计数器是否等于预设周期,若所述第二计数器等于预设周期,则确定所述轮函数的第n轮迭代运算结束,所述第二计数器归零。3.根据权利要求2所述的实现方法,其特征在于,所述预设周期为8,所述第n轮迭代运算的运算过程包括:在所述第二计数器为0-3的计数周期内,对第n-1轮密钥进行轮函数运算得到第n轮密钥;在所述第二计数器为4-7的计数周期内,利用所述第n轮密钥对第n-1轮密文进行轮函数运算得到第n轮密文。4.根据权利要求3所述的实现方法,其特征在于,所述在所述第二计数器为0-3的计数周期内,对第n-1轮密钥进行轮函数运算得到第n轮密钥,包括:按照预设比特位顺序,将所述第n-1轮密钥分成4组子第n-1轮密钥,其中,所述4组子第n-1轮密钥的比特位数相同;在所述第二计数器由0累加计数到3的周期内,依次对所述4组子第n-1轮密钥进行合成置换运算,其中,每完成1组子第n-1轮密钥的合成置换运算时,所述第二计数器加1;根据所述4组子第n-1轮密钥的合成置换运算结果,得到所述第n轮密钥。5.根据权利要求3所述的方法,其特征在于,所述在所述第二计数器为4-7的计数周期内,利用所述第n轮密钥对第n-1轮密文进行轮函数运算得到第n轮密文,包括:按照预设比特位顺序,将所述第n-1轮密文分成4组子第n-1轮密文,将所述第n轮密钥分成4组子第n轮密钥,其中,所述4组子第n-1轮密文的比特位数和所述4组子第n轮密钥的比特位数相同;在所述第二计数器由4累加计数到7的周期内,依次利用所述4组子第n轮密钥对所述4组子第n-1轮密文和进行合成置换运算,其中,每完成1组子第n-1轮密文和所述4组子第n轮密钥的合成置换运算时,所述第二计数器加1;根据所述4组子第n-1轮密文和所述4组子第n轮密钥的合成置换运算结果,得到所述第n轮密文。6.根据权利要求1所述的实现方法,其特征在于,所述实现装置还包括第三计数器,所述第三计数器用于对所述轮函数的迭代运算轮次数进行计数,所述方法还包括:
当所述第一计数器等于所述第一随机数时,所述第三计数器加1。7.根据权利要求6所述的实现方法,其特征在于,所述方法还包括:根据所述轮函数依次进行32轮迭代运算,得到第32轮密文后,所述第三计数器归零,其中,所述根据所述轮函数依次进行32轮迭代运算的过程中,所述第三计数器由0累加计数到32。8.根据权利要求1所述的实现方法,其特征在于,进行所述轮函数运算之前,所述方法还包括:获取数据明文,明文掩码,加密密钥和密钥掩码;将所述数据明文和明文掩码进行异或运算得到带掩码的数据明文,将所述加密密钥和所述密钥掩码进行异或运算得到带掩码的加密密钥;根据所述带掩码的数据明文和所述带掩码的加密密钥进行所述轮函数运算的第1轮迭代运算。9.一种sm4算法的实现装置,其特征在于,所述实现装置包括第一计数器和周期控制模块;所述周期控制模块,用于获取第一随机数,判断轮函数的第n轮迭代运算是否结束,当所述轮函数的第n轮迭代运算结束时,所述第一计数器从零开始计数;判断所述第一计数器是否等于所述第一随机数;若所述第一计数器不等于所述第一随机数,则所述第一计数器加1,若所述第一计数器等于所述第一随机数,则所述第一计数器归零,获取第二随机数,并根据所述第二随机数进行下一轮迭代运算。

技术总结


本申请实施例公开了一种SM4算法的实现方法与装置,其中,该实现方法通过获取第一随机数,判断轮函数的第N轮迭代运算是否结束;当轮函数的第N轮迭代运算结束时,第一计数器从零开始计数;判断第一计数器是否等于第一随机数;若第一计数器不等于第一随机数,则第一计数器加1;若第一计数器等于第一随机数,则第一计数器归零,获取第二随机数,并根据第二随机数进行下一轮迭代运算。本发明方法通过设置的第一计数器为每一轮迭代运算加入随机冗余周期,并通过对第一计数器计数进行周期控制,使得SM4算法的32轮运算中的每一轮运行时间不断发生变化,运行周期都不固定,从而使得整个实现装置可以有效抵抗计时攻击,增强了SM4算法加密的安全性。加密的安全性。加密的安全性。


技术研发人员:

邓英 华力 袁涛 朱晓伟 王永乐

受保护的技术使用者:

湖南国科微电子股份有限公司

技术研发日:

2022.08.24

技术公布日:

2022/12/5

本文发布于:2024-09-24 19:22:24,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/33682.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   密钥   计数器   随机数
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议