一种加解密一致的新型动态分组密码HFSP的加解密实现方法

文档序号:35438057发布日期:2023-09-13 23:14阅读:47来源:国知局
一种加解密一致的新型动态分组密码HFSP的加解密实现方法

本发明属于信息安全加密,具体涉及一种加解密一致的新型动态分组密码hfsp的加解密实现方法。


背景技术:

1、随着计算机和网络技术的飞速发展,各行各业信息化建设对网络安全整体解决方案的需求逐渐不断需求的增加,对称密码已成为构建安全信息系统的核心基础。分组密码作为对称加密的一个重要分支,在信息安全方面具有极其重要的作用,一直是研究的热点。分组密码的设计也一直遵循香农提出的“混淆”与“扩散”原则。

2、自线性攻击和相关密钥攻击被提出之后,密码算法都采用不同的方式来抵抗这两种攻击,它们的核心思想大致可以分为两类:第一类它们采用分组密码的线性逼近式来实现密钥恢复攻击,是已知明文攻击。利用线性区分器可以转化为对r轮密码的密钥恢复攻击。在这一原则的指导下,算法要谨慎地选择复杂的密钥编排操作以及与其密切相关的加密函数操作。而且密钥编排作为现代密码算法中重要的组成操作,要选择线性概率低的密钥,在加密流程中与明文进行异或,使得算法的线性相关性降低。

3、另一类攻击是在攻击者不知道密钥的前提下,但攻击者可以选择与当前密钥具有特定关系的其它密钥,并访问由原始密钥及其相关密钥加密获得的明密文。利用密钥编排方案的弱点,选择合适的密钥关系,从而获得原密钥与相关密钥下分别对应的密码算法之间的关联,恢复出原始密钥。如果密钥编排方案非线性程度很高,则满足差分链要求的主密钥差分可能是未知的,这就增大了攻击者的攻击难度。所以无论是线性攻击还是相关密钥攻击,都需要对密钥编排进行具体的分析,因此该类密码算法可以通过采用复杂的密钥编排方案来抵抗线性攻击和相关密钥攻击。

4、在分组密码算法当中,有三种密码结构,feistel网络结构、sp网络结构及lai-massey网络结构,在这三种结构当中,其中,feistel网络结构与sp网络结构是最为常用两种密码结构。但是sp网络结构的分组密码得到了广大分组密码设计者的青睐,因为sp网络结构相比feistel网络结构的分组密码能够更加快速的实现混淆和扩散。对于传统的feistel网络结构密码,每次只有一部分经过混淆和扩散,以至于要经过两轮的变换才能使得每一位都发生变换,而sp网络结构密码只需要一轮,所有的位都发生了变化,但是解密时需要对每个部件进行求逆,消耗了额外的硬件资源。


技术实现思路

1、本发明的目的是提供一种加解密一致的新型动态分组密码hfsp的实现方法,利用增大密钥编排的复杂度,即通过判断轮数是否为素数来采用不同的2种方式生成子密钥,使密钥在整个加密流程中呈现动态的形式,从而增加了算法整体的安全性,并通过构造加解密一致的算法结构frx,不仅能一轮改变所有的位,还能降低算法在硬件上的资源消耗。其中hfsp中的h是代表本发明的运算结构类似字母h,f是指本发明中使用的frx结构,frx结构是指f函数(function)、循环移位(rotation)、逐位比特异或(bitwise xor)的缩写)。hfsp中的sp则是指frx结构中包含s盒和p置换的操作。

2、为了实现上述技术目的,本发明的技术方案是,

3、一种加解密一致的新型动态分组密码hfsp的加密实现方法,包括以下步骤:

4、步骤一,设置128位的密钥key,并进行移位操作得到ka。

5、步骤二,根据当前迭代的轮数,对ka执行两种不同的分轮操作。其中第一种分轮操作为:将ka进行s盒替换,得到128位的数据ks,然后对ks进行p置换得到key。

6、第二种分轮操作为:将ka进行s盒替换,得到128位的数据ks,再根据当前迭代的轮数是否大于预设值,进行两种不同的子分轮操作:当不大于预设值时的子分轮操作为:将ks与当前迭代轮数的数字进行异或得到kx。当大于预设值时的子分轮操作为:将ks与生成数x进行异或得到kx。最后将kx进行p置换得到key。

7、然后保存key,并将key作为ka以用于下一轮迭代,再以key作为本轮迭代中所使用的密钥。

8、步骤三,基于key,对待加密的64位明文依次执行包括高轮密钥异或、第一次循环移位、第一次轮常量异或、f函数、第二次轮常量异或、第二次循环移位和低轮密钥异或在内的frx结构变换,然后将得到的结果作为下一轮迭代中待加密的明文。其中f函数包括依次执行的初始置换、s盒替换和初始逆置换。

9、步骤四,核对当前迭代次数,若未达到预设的迭代次数,则返回步骤二继续迭代。否则将步骤三的结果作为加密后的密文输出。

10、所述的加密实现方法,所述的步骤一中,移位操作包括以下步骤:

11、将128位的密钥key分为16个8位的字节,并依次排列构成4×4的矩阵,然后将矩阵的第1行与第3行互换,第2行与第4行互换,从而实现移位操作。

12、所述的加密实现方法,所述的步骤二中,根据当前迭代的轮数来执行分轮操作,是将迭代轮数设定为从第0轮开始的多轮迭代,并在迭代轮数为合数时执行第一种分轮操作,为素数时执行第二种分轮操作,且第0轮和第1轮均执行第一种分轮操作。

13、所述的加密实现方法,所述的步骤二和步骤三中,s盒替换包括:

14、s盒替换采用逻辑运算或查表完成,其中逻辑运算的运算公式为:

15、

16、

17、

18、

19、其中a、b、c和d分别表示4位二进制数的从高位到低位的4位,经过变换得到a'、b'、c'和d',并再组合为4位的二进制数,二进制数转化为十进制的范围为0~15。

20、查表则是根据预设的s盒替换表执行,其中s盒替换表是基于逻辑运算的结果获得的。

21、所述的加密实现方法,所述的步骤二中,p置换是对128位数据采用以每一位为一个单元进行置换运算,其中置换是根据预设的p置换表执行。所述的加密实现方法,所述的步骤二中,生成数x通过以下过程得到:

22、

23、其中rd表示当前迭代的轮数,mod表示求余运算。

24、所述的加密实现方法,所述的步骤三为:

25、首先将key以高64位作为密钥左分支k0,低64位作为密钥右分支k1。并将待加密的64位明文以高32位作为明文左分支p0,低32位作为右分支p1。

26、然后将明文左分支p0与密钥左分支k0的高32位进行异或得到lp1,同时将明文右分支p1与密钥左分支k0的高32位进行异或得到rp1,从而完成高轮密钥异或。

27、再将lp1进行循环左移9位得到ls1,右分支rp1循环右移9位得到rs1,从而完成第一次循环移位。

28、再执行第一次轮常量异或,将迭代轮数设定为从第0轮开始,当前迭代的轮数为奇数时,则ls1与轮常量r3进行异或得到lp2,rs1与轮常量r4进行异或得到rp2。当前迭代的轮数为偶数时,则ls1与轮常量r1进行异或得到lp2,rs1与轮常量r2进行异或得到rp2。其中轮常量为预设值。

29、再对lp2执行包括初始置换、s盒替换和初始逆置换的f函数得到lp3,rp2同样执行f函数得到rp3。

30、再执行第二次轮常量异或,将迭代轮数设定为从第0轮开始,当前迭代的轮数为奇数时,则lp3与轮常量r3进行异或得到lp4,rp3与轮常量r4进行异或得到rp4;当前迭代的轮数为偶数时,则lp3与轮常量r1进行异或得到lp4,rp3与轮常量r2进行异或得到rp4;其中轮常量为预设值;

31、再对lp4进行循环右移9位得到ls2,rp4循环左移9位得到rs2,从而完成第二次循环移位。

32、最后将ls2与密钥右分支k1的高32位进行异或得到lp5,将rs2与密钥右分支k1的高32位进行异或得到rp5。

33、将得到的lp5和rp5作为下一轮迭代中的p0和p1,完成步骤三。

34、所述的加密实现方法,所述的包括初始置换、s盒替换和初始逆置换的f函数为:

35、初始置换:采用类des算法中的初始置换表,lp2通过查询初始置换表完成扩散操作得到lp2′,将rp2通过查询初始置换表完成扩散操作得到rp2′。

36、s盒替换:采用逻辑运算或查表的s盒替换方式,对初始置换运算得到的结果lp2′和rp2′分别进行变换。

37、初始逆置换:采用类des算法中的初始逆置换表,将完成s盒替换运算的lp2′和rp2′分别查询初始逆置换表完成扩散操作得到lp3和rp3。

38、一种加解密一致的新型动态分组密码hfsp的解密实现方法,以前述加密实现方法所输出的加密后的密文作为解密对象,并对密文迭代执行如加密实现方法中的步骤三,且迭代轮数与加密实现方法相同,但迭代过程中的轮数是从后向前倒数,并将对应轮数的key前后颠倒来使用以进行解密。

39、本发明的技术效果在于,本发明设计了一种新型的密码结构frx,是区别3大主流密码结构的另外一种能够达到加解密一致效果的新型密码结构,其能够实现加解密一致的关键在于frx中上下结构成对称的形式,而其中的psp结构中的初始置换与初始逆置换并不会抵消,采用的s盒也能够达到密码学性质,使算法的安全性得到了保证。动态密钥编排部分的设计,通过采用与轮计数器有关的随机数异或操作以及素数轮、合数轮的分轮操作,从而动态生成子密钥,这样可以大大降低每轮密钥之间的线性相关性,提高算法的安全性,降低硬件实现的面积。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1