一种用于高速加密的新型对称型密钥算法的制作方法

文档序号:11147363阅读:934来源:国知局
一种用于高速加密的新型对称型密钥算法的制造方法与工艺

本发明涉及信息加密技术领域,具体地说,是一种用于高速加密的新型对称性密钥算法。



背景技术:

随着计算机性能的提升和大数据的兴起,我们对于数据的处理计算能力要求成几何倍数的提高。同时随着旁路攻击的出现,许多安全性极高的密码算法遭到破坏,原来安全度极高的AES(Advanced Encryption Standard)算法在128位制被破解。人们开始设计寻找加密效率更快、安全性更高的算法。

目前主流的对称密钥算法或者流密码算法比较典型的有RC4算法、RC6算法、AES加密中的Rijndael算法、国密标准SM4算法。

(1)RC4算法:RC4加密算法是RSA三人组中的头号人物Ronald Rivest在1987年设计的密钥长度可变的流加密算法簇。RC4算法的本质就是查找表,该表包含所有可能的256个字节的值的排列。核心部分S-box长度任意,算法速度可以达到DES加密的十倍左右,具有很高级别的非线性。其原理是初始化和伪随机子密码生成算法。每次生成密钥流字节后,查找表就被修改,而查找表总会包含{0,1,2,···,255}的一个排列。因为这种持续更新,该算法的查找表以及相应的加密算法自身都为密码分析者提供了移动靶。而且由于存在弱密钥,使得其子密钥序列在不到100万字节内就出现了完全的重复,在10万字节内出现部分重复。

(2)RC6算法:RC6是作为AES的候选算法提交给NIST(美国国家标准局)的一种新的分组密码,是在RC5算法的基础上设计的。RC5本身因为使用了大量的数据依赖循环,所以算法本身非常简洁。只是在AES候选中,为了满足征集要求,使用4个寄存器并加进了32比特的整数乘法,用于加强扩散的特性。但是正因为使用了32比特的整数乘法,使得RC6的运算速度受到了一定的影响[6]。此外RC6的精准表示为RC6-w/r/b(字长为w位,r为加密轮数,b为加密密钥用字节表示的长度)。RC6是一种安全、架构完整而且简单的区块加密法。它提供了较好的测试结果和参数方面相当大的弹性。RC6可以抵抗所有已知的攻击,能够提供AES所要求的安全性,可以说是近几年来相当优秀的一种加密法。

(3)AES算法:RC6算法尽管是相当优秀的一款算法,但仍然只是AES候选算法之一。目前使用的AES加密使用的是Rijndael算法,AES目前成为对称加密中最重要的国际标准之一。AES加密速度较快,且分组长度灵活,密钥长度比DES大且可以灵活选择,可以有效抵抗差分分析和线性分析,目前仅有旁道攻击是唯一可以成功的攻击方式(上海交通大学郁昱教授使用的便是旁路攻击成功破解AES-128加密)。在加密过程中,AES有十轮,且前九轮都要进行字节代换、行位移、列混淆和轮密钥加四个算法,第十轮只要进行字节代换、行移位、轮密钥加三个算法。对于每个分组明文段的加密步骤相比流密码仍然复杂的多。

(4)国密SM4算法:国家密码管理局于2012年3月21日公布了“GM/T0002-2012《SM4分组密码算法》”,SM4算法分组长度和密钥长度都是128bit,加密算法和密钥扩展算法都采用32轮非线性迭代结构,加解密算法结构相同,只是轮密钥的使用顺序相反。国密SM4的安全性毋庸置疑,但是仍然具备功耗攻击的可能性[12]。同时因为加密和密钥扩展时都采用了32轮,因此理论上加密速度上仍然不如流密码。

目前被密码学界公认的不可攻破的密码算法为“一次一密体制”,Shannon在《保密系统的信息理论》提出了完善保密的概念,并证明了“一次一密体制”具备完善保密性。其算法方案的基准原则是:密钥是随机选取的,并且仅使用一次,使用之后便立即销毁。但是经过论证一次密码本也有两点不足之处:

(1)明文长度暴露:“一次一密制”密钥随机选择生成,该密钥字符串与明文消息具有相同的长度,密钥与明文消息异或运算产生密文。但是对于敌手而言,截获密文的同时便获知了明文的长度,假设发送的明文消息长度为N,则密文长度也为N,那么当N的值小于敌手计算能力时,便毫无保密性可言。此外,因为一次密密钥是随机分布的,而假设明文具有一定的先验概率分布,那么根据密文的后验概率分布也可以对明文产生一定的威胁。

(2)实际使用不便:假设对长消息进行加密,则需要与消息样本本身等长的密码本,因为密码本正是密钥自身,所以必须安全的将密钥发送给接收方。

基于以上两点,一次性密码本并没有大规模的投入使用。但“一次性密码本”的思想却产生设计出一些新型算法,如流密码算法RC4和RC6等算法。但是流密码算法并不是可证明为安全的,只是牺牲了可证明安全性以向实用性妥协。

中国发明专利CN201610467088.7,公开日为2016.09.21,公开了一种基于FPGA的在线生成密钥的AES数据加密方法,但是该加密方法加密轮数过多,加密方式单一,密钥会重复出现,无法保证数据安全。

因此,亟需一种一次一密、加密速度快、密钥不重复出现的高效密钥算法,而目前关于这种算法还未见报道。



技术实现要素:

本发明的目的是针对现有技术中的不足,提供一种用于高速加密的新型对称型密钥算法。

为实现上述目的,本发明采取的技术方案是:

一种用于高速加密的新型对称密钥算法,所述对称密钥算法包括加密算法和解密算法,所述的加密算法的步骤包括:

S11:对明文M进行分组,得到Mi,Mi∈{M0,M1,···,Mn-1};

S12:利用随机数生成器生成n位基础密钥R1和R2

S13:统计明文长度L,并对Mn-1进行明文填充,在明文后首先填充二进制密钥生成器识别码,计算剩余位数,并用随机二进制码填充;

S14:获得密钥偏移生成器G;

S15:对Mn-1明文组进行加密;

S16:获得加密密钥Keyi

S17:对所有明文组进行加密;

S18:对基础密钥R1和R2进行加密,得到密文密钥CR

S19:完成加密,并将密文密钥CR与密文进行传输;

所述的解密算法的步骤包括:

S21:对密文密钥CR进行解密,得到基础密钥R1和R2

S22:解密得到Mn-1

S23:得到密钥偏移生成器G;

S24:对所有密文进行解密,得到明文M。

所述的加密算法的S12步骤中,R1和R2为1024位的二进制序列随机数,R1∈{0,1}1024,R2∈{0,1}1024

所述的加密算法的S13步骤中,如果Mn-1∈(0,1000)时,在明文后首先填充二进制密钥生成器识别码,剩余的位数使用随机二进制码填充,使得Mn-1最终满足1024位;如果Mn-1∈[1000,1024]之间,那么填充需要扩展,即在Mn-1之后首先进行密钥生成器识别码的填充,并在之后的位数填充二进制序列随机数,这样便组成了两段1024位的明文组Mn-1和Mn

所述的二进制密钥生成器识别码位数为24位,该识别码为(0000-1111-1111-1111-1111-0000)。

所述的加密算法的S14步骤中,当Mn-1∈(0,1000)时,模运算的计算公式为G=1024-L mod1024,当Mn-1∈[1000,1024]时,模运算的计算公式为G=2048-L mod1024,所述的密钥偏移生成器G∈[25,1048]。

所述的加密算法的S15步骤中,对Mn-1明文组进行加密时,将基础密钥R1和R2分别根据n的值进行左偏移和右偏移,异或加密得到密文;当Mn-1∈(0,1000)时,计算公式为当Mn-1∈[1000,1024]时,计算公式为

所述的加密算法的S16步骤中,将子明文组i代入密钥偏移生成器G中,计算出偏转量Xj,计算公式为Xj=(G mod512×(i+G)+19)mod512,并将偏移量代入基础密钥R2中进行左循环或右循环产生偏移密钥R2(j),计算公式为R2(j)=R2<<Xj Xj mod2=0或R2(j)=R2>>XjXj mod2≠0;基础密钥R1则每次右偏移i位得到R1(i),计算公式为R1(i)=R1>>(imod1024);将R1(i)和R2(j)进行异或运算得到加密密钥Keyi,计算公式为

所述的加密算法的S17步骤中,从M0开始到Mn-2,将加密密钥Keyi与相对应明文进行异或加密,得到密文Ci,计算公式为

所述的加密算法的S18步骤中,对基础密钥R1和R2进行RSA加密,采用最有非对称加密(RSA-OAEP)方案得到密文密钥CR

所述的对称密钥算法每加密n个明文组时需要更换基础密钥,其步骤如下:

S31:一组基础密钥R1和R2,其加密的明文空间为n×n位,这个加密后的等量空间为密文块(C-Block);

S32:当需要对基础密钥进行重新构造时,新的基础密钥从前一个密文块中选择;

S33:新的基础密钥为R1’和R2’;

在S33步骤中,基础密钥R1’的计算公式为基础密钥R2’的计算公式为或其中,Cx和Cy中的x和y,分别代表加密后的前一密文块内从第一段开始的密文段数(与明文代表的段数相同),其计算公式分别为x=(17×i+G)mod512和y=(13×(i+G)+i)mod512+512,R1’中的R1>>x与Cx中的R1(i)完全相同,R2’中的Xj(y)就是明文段数为y的情况下的R2偏移量,偏移后与R2(j)完全相同;将R1’和R2’进行异或运算得到加密密钥Key,计算公式为

所述的对称密钥算法还包括摘要算法,其步骤如下:

S41:加密前,首先使用摘要算法对明文进行摘要得到哈希值,即Hash(Mess);

S42:将哈希值存储在密文的末尾,并一通进行传输保存;

S43:解密前,将哈希值单独取出;

S44:使用摘要算法对解密后的明文进行摘要得到新的哈希值,即Hash(Mess’);

S45:将Hash(Mess)与Hash(Mess’)进行对比,若Hash(Mess)=Hash(Mess’),则密文未被篡改,证明信息完整性或通信线路安全性与可靠性;;若Hash(Mess)≠Hash(Mess’),则密文篡改,存储环境或通信线路存在隐患,需要及时保护。

本发明优点在于:

1、通过密文块(C-Block)的设计,降低密钥重复的概率至0;

2、每个明文段加密的子密钥为唯一且随机的,提高了安全性;

3、加密速度快,仅需要进行两次偏移、两次模运算、一次乘法、两次加法、一次判断、两次异或共10步基本运算操作。

附图说明

附图1是本发明的一种用于高速加密的新型对称密钥算法的加密算法的明文分组填充的示意图。

附图2是本发明的一种用于高速加密的新型对称密钥算法的加密算法的明文加密的示意图。

附图3是本发明的一种用于高速加密的新型对称密钥算法的加密算法的生成新基础密钥的示意图。

具体实施方式

下面结合附图对本发明提供的具体实施方式作详细说明。

实施例1

本发明的一种用于高速加密的新型对称密钥算法的加密算法具体流程如下:

A1:设明文总体为M,对明文总体M进行分组得到Mi,Mi分组长度为1024bit(或者是1024bit的整数倍),因此有Mi∈{M0,M1,···,Mn-1};

A2:利用随机数生成器生成两串1024位的二进制序列随机数R1和R2,R1和R2为基础密钥,R1∈{0,1}1024,R2∈{0,1}1024

A3:如图1所示,将明文M转化为二进制序列Mess,统计明文长度L,计算公式为(1);最后一组Mn-1可能不满1024位,所以需要对Mn-1进行填充;如果Mn-1∈(0,1000)时,在明文后首先填充二进制密钥生成器识别码,该识别码为24位,识别码为(0000-1111-1111-1111-1111-0000),剩余的位数使用随机二进制码填充,使得Mn-1最终满足1024位,并通过模运算获得密钥偏移生成器G,计算公式为(2);如果Mn-1∈[1000,1024]之间,那么填充需要扩展,即在Mn-1之后首先进行密钥生成器识别码的填充,并在之后的位数填充二进制序列随机数,这样便组成了两段1024位的明文组Mn-1和Mn,并通过模运算获得密钥偏移生成器G,计算公式为(3);密钥偏移生成器G的取值范围为(4);

L=strlen(Mess) (1)

G=1024-L mod1024Mn-1∈(0,1000) (2)

G=2048-L mod1024Mn-1∈[1000,1024] (3)

G∈[25,1048] (4)

A4:如图2所示,对Mn-1明文组进行加密,将基础密钥R1和R2分别根据n的值进行左偏移和右偏移,异或加密得到密文;当Mn-1∈(0,1000)时,计算公式为(5);当Mn-1∈[1000,1024]时,计算公式为(6);

A5:将子明文组i代入密钥偏移生成器G中,计算出偏转量Xj,计算公式为(7),并将偏移量代入基础密钥R2中进行左循环或右循环产生偏移密钥R2(j),计算公式为(8)或(9);基础密钥R1则每次右偏移i位得到R1(i),计算公式为(10);将R1(i)和R2(j)进行异或运算得到加密密钥Keyi,计算公式为(11);

Xj=(G mod512×(i+G)+19)mod512 (7)

R2(j)=R2<<Xj Xjmod2=0 (8)

R2(j)=R2>>Xj Xjmod2≠0 (9)

R1(i)=R1>>(i mod1024) (10)

A6:从M0开始到Mn-2,将加密密钥Keyi与相对应明文进行异或加密,得到密文Ci,计算公式为(12);

A7:对基础密钥R1和R2进行RSA加密,采用最有非对称加密(RSA-OAEP)方案得到密文密钥CR,并将信息传输给信息接收方;

A8:完成加密,设任意一段密文为Ci,则Ci∈{C0,C1,···,Cn-1,(Cn)}。

实施例2

本发明的一种用于高速加密的新型对称密钥算法的解密算法具体流程如下:

B1:接收到密文密钥CR,对其进行RSA-OAEP方案解密,分别得到基础密钥R1和R2

B2:首先截取密文的最后2048位二进制序列,使用解密得到的基础密钥R1和R2进行与加密同向的偏移n位后再进行异或运算,得到2048位包含Mn-1的二进制序列;

B3:对2048位包含Mn-1的二进制序列进行搜索并识别填充时产生的24位密钥生成器识别码,并得到密钥偏移生成器G,之后抛弃随机数序列得到Mn-1明文组,计算公式为(13);

B4:从C0正向开始,根据密文组数量i一次进行运算得到R1(i)和每组密文基础密钥R2的偏移量Xj,并进行密钥偏移后得到R2(j),两者异或运算得到加密密钥Keyi,将加密密钥Keyi与密文结合得到明文,计算公式为(14);依次解密并得到全部明文M,M=M0+M1+…+Mn-1

实施例3

为了更加安全的进行加密,本发明的一种用于高速加密的新型对称密钥算法的基础密钥会进行重新构造。

初始加密产生的一组两串随机数序列R1和R2,首先在对Mn-1进行加密后,再依次从M0开始进行相对应的偏移加密,对于基础密钥R1,每个明文组加密中都相当于向右移一位,因此当加密到M1023时,R1会出现重复,因此,当Mi中i mod 1024-1=0时,需要对基础密钥进行重新构造。

如图3所示,基础密钥重新构造的流程如下:

C1:一组基础密钥R1和R2,其加密的明文空间为1024×1024位,这个加密后的等量空间为密文块(C-Block);

C2:当需要对基础密钥进行重新构造时,新的基础密钥从前一个密文块中选择;

C3:新的基础密钥为R1’和R2’,R1’的计算公式为(15),R2’的计算公式为(16)或(17),

其中,Cx和Cy中的x和y,分别代表加密后的前一密文块内从第一段开始的密文段数(与明文代表的段数相同),其计算公式分别为(18)和(19),

x=(17×i+G)mod512 (18)

y=(13×(i+G)+i)mod512+512 (19)

R1’中的R1>>x与Cx中的R1(i)完全相同,R2’中的Xj(y)就是明文段数为y的情况下的R2偏移量,偏移后与R2(j)完全相同;将R1’和R2’按照A5的步骤进行异或运算得到加密密钥Key,计算公式为(20)。

实施例4

为了保持密文的完整性,本发明的一种用于高速加密的新型对称密钥算法还包括摘要算法,其流程如下:

D1:加密前,首先使用摘要算法对明文进行摘要得到哈希值,即Hash(Mess);

D2:将哈希值存储在密文的末尾,并一通进行传输保存;

D3:解密前,将哈希值单独取出;

D4:使用摘要算法对解密后的明文进行摘要得到新的哈希值,即Hash(Mess’);

D5:将Hash(Mess)与Hash(Mess’)进行对比,若Hash(Mess)=Hash(Mess’),则密文未被篡改,证明信息完整性或通信线路安全性与可靠性;;若Hash(Mess)≠Hash(Mess’),则密文篡改,存储环境或通信线路存在隐患,需要及时保护。

本发明的一种用于高速加密的新型对称密钥算法的优点在于,通过密文块(C-Block)的设计,将密钥重复的概率降低为0;并且密文块内产生的密钥基于前一密文块的明文内容,即要破解加密密钥必须先知道前一密文块内随机明文段的内容,因此保证了每个明文段加密的子密钥是独一无二且随机的,达到了一次性密码本的加密要求,由此保证了算法的绝对安全性,可以有效抵御各种类型的攻击;单明文段加密操作仅有两次偏移、两次模运算、一次乘法、两次加法、一次判断、两次异或共10步基本运算操作,没有AES和SM4的多轮数和其他复杂步骤,对于RC6不存在大整数模乘运算,因此算法加密速度可以更快;

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明方法的前提下,还可以做出若干改进和补充,这些改进和补充也应视为本发明的保护范围。

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