一种基于弱关联性的AES密钥扩展方法技术

技术编号:24854122 阅读:31 留言:0更新日期:2020-07-10 19:07
本发明专利技术公开了一种基于弱关联性的AES密钥扩展方法,包括以下步骤:S1.伪随机发生器生成136‑256比特数的随机数,进而得到种子密钥;S2.确定对应的密钥总轮数Q,并初始化q=0;S3.将种子密钥作为RC4算法中的KSA算法的输入,得到一个256位的初始S密钥;S4.将初始S密钥作为RC4算法中的PRGA算法的输入,得到一个256位的密钥流;S5.对得到的256位的密钥流进行相应的截取,得到16字节的轮密钥;S6.对q进行更新,每次更新后q的值加1;S7.判断是否满足条件q不大于Q;若是,将得到的256位的密钥流作为步骤S4的输入,并基于更新后的q值,再次按照步骤S4~S7进行循环迭代;若否,输出最终的轮密钥矩阵。本发明专利技术保证了每一轮密钥流之间的弱关联性,大大提高了AES密钥扩展的安全性。

【技术实现步骤摘要】
一种基于弱关联性的AES密钥扩展方法
本专利技术涉及数据加密,特别是涉及一种基于弱关联性的AES密钥扩展方法。
技术介绍
AES是密码学中的高级加密方法,又称为Rijndael加密法,由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPSPUB197,并于2002年5月26日成为有效的标准,主要用于代替原有的DES(DataEncryptionStandard)到2006年时该算法已称为现代对称密码学中最流行的算法之一。AES是一种迭代的、分组密码,支持128位的明文分组,加密轮数随密钥长度的变化而变化。其密钥长度可以为128位、192位和256位,对应的加密轮数是10轮、12轮和14轮,根据密钥长度的特点,该算法也可被称为AES-128、AES-192和AES-256。AES加密算法中的每轮都包含4个步骤(除最后一轮):字节替换(SubBytes)、行移位(ShiftRows)、列混合(MixColumns)和轮密钥加(AddRoundKey),其中轮密钥加是AES加密算法中的主要内容之一,因此提高轮密钥加的安全性就显得尤为重要。AES加密算法在安全评估过程中发现smartcard具体实现的能量分析可以破解该算法,通过分析发现能量攻击在攻击方式上是利用了AES算法的密钥具有简单扩展的特点。
技术实现思路
本专利技术的目的在于克服现有技术的不足,提供一种基于弱关联性的AES密钥扩展方法,通过基于RC4算法中的KSA算法和PRGA算法的随机性和一定的截取规则保证了每一轮密钥流之间的弱关联性,大大提高了AES密钥扩展的安全性。本专利技术的目的是通过以下技术方案来实现的:一种基于弱关联性的AES密钥扩展方法,包括以下步骤:S1.基于RC4算法密钥长度可变的特点,利用伪随机发生器生成136-256比特数的随机数,进而得到种子密钥,并进行保存;S2.根据待扩展的AES算法密钥长度的不同,确定对应的密钥总轮数Q:对于长度为128位的密钥,Q=10;对于长度为192位的密钥,Q=12;对于长度为256位的密钥,Q=14;初始化参数q=0;S3.将种子密钥作为RC4算法中的KSA算法的输入,得到一个初始S密钥,该初始S密钥具有256位;S4.将初始S密钥作为RC4算法中的PRGA算法的输入,得到一个256位的密钥流;S5.对步骤S4中得到的256位的密钥流进行相应的截取,得到16字节的轮密钥,截取规则为:种子密钥经过KSA和PRGA算法后生成256位的密钥流后,对于128位密钥长度的AES加密算法,选择种子密钥的第q+1个字节与255进行与操作并将操作后的数值与64进行取余运算,将运算结果对应到256位的密钥流的字节上,然后向右循环截取,得到16字节的轮密钥;种子密钥经过KSA和PRGA算法后生成256位的密钥流后,对于192位密钥长度的AES加密算法,选择种子密钥的q+2个字节与255进行与操作并将操作后的数值与64进行取余运算,将运算结果对应到256位的密钥流的字节上,然后向右循环截取,得到16字节的轮密钥;种子密钥经过KSA和PRGA算法后生成256位的密钥流后,对于256位密钥长度的AES加密算法,选择种子密钥的第q+3个字节与255进行与操作并将操作后的数值与64进行取余运算,将运算结果对应到256位的密钥流的字节上,然后向右循环截取,得到16字节的轮密钥;S6.对q进行更新,每次更新后q的值加1;S7.判断是否满足条件q不大于Q;若是,将得到的256位的密钥流作为步骤S4的输入,并基于更新后的q值,再次按照步骤S4~S7进行循环迭代;若否,输出最终的轮密钥矩阵。本专利技术的有益效果是:本专利技术通过RC4算法中的KSA算法和PRGA算法可以得到256位伪随机密钥流序列,经过一定规则的截取,可得到每轮的轮密钥,然后将该轮256位伪随机密钥流序列作为下一次PRGA算法的输入,继续得到256伪随机密钥流序列,这种方式生成的轮密钥其关联性大大降低,已知某轮的某几个密钥或全部密钥甚至知道截取规则,都无法通过该轮密钥获取前后轮的密钥,很大程度上提高了密钥的安全性,从而提高了整个AES加密算法的安全性。附图说明图1为本专利技术的方法流程图。具体实施方式下面结合附图进一步详细描述本专利技术的技术方案,但本专利技术的保护范围不局限于以下所述。本专利技术针对AES的加密轮数随密钥长度的改变而改变,给出了不同情况下的密钥流的获取方法。基于RC4算法中的初始化算法(KSA)和伪随机子密码生成算法(PRGA)生成256个密钥流,按照一定的截取规则在256个密钥流中截取相应的轮密钥。即使攻击者知道了某一轮中的几个或全部密钥甚至某几轮中的全部密钥和截取规则,也需要首先获得PRGA算法生成的256位的密钥流,而暴力破解该密钥流的复杂度高达2^256,明显高于128位和192的密钥复杂度,通过基于RC4算法中的KSA算法和PRGA算法的随机性和一定的截取规则保证了每一轮密钥流之间的弱关联性,大大提高了AES密钥扩展的安全性,具体地:如图1所示,一种基于弱关联性的AES密钥扩展方法,包括以下步骤:S1.基于RC4算法密钥长度可变的特点,利用伪随机发生器生成136-256比特数的随机数,进而得到种子密钥,并进行保存;S2.根据待扩展的AES算法密钥长度的不同,确定对应的密钥总轮数Q:对于长度为128位的密钥,Q=10;对于长度为192位的密钥,Q=12;对于长度为256位的密钥,Q=14;初始化参数q=0;S3.将种子密钥作为RC4算法中的KSA算法的输入,得到一个初始S密钥,该初始S密钥具有256位;其中,所述步骤S3包括以下子步骤:S301.初始化一个一维数组S[i],i=0,1,…,255,其元素值与下标相同且每个元素值为一个字节;S302.初始化一个临时数组T[j],j=0,1,…,255,其元素值为步骤S1中的种子密钥,若种子密钥的长度不足256位,则把种子密钥重复复制给数组T中的余下部分,直至数组T被填满;S303.初始化参数j=0,i=0;A1、对参数j进行更新,得到j′:j′=(j+S[i]+T[j])mod256;其中mod256表示运算结果与256求余数;A2、交换S[i]和T[j′],使S[i]有一定的随机性,其中,T[j′]表示零时数组T[j]中,j取j′时对应的值,交换后:S[i]变为S′[i]:S′[i]=T[j′];T[j′]变为T′[j′]:T′[j′]=S[i];A3、对参数i进行更新,每次更新后i的值加1;A4、判断更新后的i是否满足条件:i不大于255;若是,返回步骤A1,将更新得到的j′作为新的j,与更新后的i一起按照步骤A1~A4进行重复迭代;...

【技术保护点】
1.一种基于弱关联性的AES密钥扩展方法,其特征在于:包括以下步骤:/nS1.基于RC4算法密钥长度可变的特点,利用伪随机发生器生成136-256比特数的随机数,进而得到种子密钥,并进行保存;/nS2.根据待扩展的AES算法密钥长度的不同,确定对应的密钥总轮数Q:/n对于长度为128位的密钥,Q=10;/n对于长度为192位的密钥,Q=12;/n对于长度为256位的密钥,Q=14;/n初始化参数q=0;/nS3.将种子密钥作为RC4算法中的KSA算法的输入,得到一个初始S密钥,该初始S密钥具有256位;/nS4.将初始S密钥作为RC4算法中的PRGA算法的输入,得到一个256位的密钥流;/nS5.对步骤S4中得到的256位的密钥流进行相应的截取,得到16字节的轮密钥,截取规则为:/n种子密钥经过KSA和PRGA算法后生成256位的密钥流后,对于128位密钥长度的AES加密算法,选择种子密钥的第q+1个字节作为基础进行轮密钥截取:将选择的字节与255进行与操作并将操作后的数值与64进行取余运算,将运算结果对应到256位的密钥流的字节上,然后向右循环截取,得到16字节的轮密钥;/n种子密钥经过KSA和PRGA算法后生成256位的密钥流后,对于192位密钥长度的AES加密算法,选择种子密钥的q+2个字节,作为基础进行轮密钥截取:将选择的字节与255进行与操作并将操作后的数值与64进行取余运算,将运算结果对应到256位的密钥流的字节上,然后向右循环截取,得到16字节的轮密钥;/n种子密钥经过KSA和PRGA算法后生成256位的密钥流后,对于256位密钥长度的AES加密算法,选择种子密钥的第q+3个字节作为基础进行轮密钥截取:将选择的字节与255进行与操作并将操作后的数值与64进行取余运算,将运算结果对应到256位的密钥流的字节上,然后向右循环截取,得到16字节的轮密钥;/nS6.对q进行更新,每次更新后q的值加1;/nS7.判断是否满足条件q不大于Q;/n若是,将得到的256位的密钥流作为步骤S4的输入,并基于更新后的q值,再次按照步骤S4~S7进行循环迭代;/n若否,输出最终的轮密钥矩阵。/n...

【技术特征摘要】
1.一种基于弱关联性的AES密钥扩展方法,其特征在于:包括以下步骤:
S1.基于RC4算法密钥长度可变的特点,利用伪随机发生器生成136-256比特数的随机数,进而得到种子密钥,并进行保存;
S2.根据待扩展的AES算法密钥长度的不同,确定对应的密钥总轮数Q:
对于长度为128位的密钥,Q=10;
对于长度为192位的密钥,Q=12;
对于长度为256位的密钥,Q=14;
初始化参数q=0;
S3.将种子密钥作为RC4算法中的KSA算法的输入,得到一个初始S密钥,该初始S密钥具有256位;
S4.将初始S密钥作为RC4算法中的PRGA算法的输入,得到一个256位的密钥流;
S5.对步骤S4中得到的256位的密钥流进行相应的截取,得到16字节的轮密钥,截取规则为:
种子密钥经过KSA和PRGA算法后生成256位的密钥流后,对于128位密钥长度的AES加密算法,选择种子密钥的第q+1个字节作为基础进行轮密钥截取:将选择的字节与255进行与操作并将操作后的数值与64进行取余运算,将运算结果对应到256位的密钥流的字节上,然后向右循环截取,得到16字节的轮密钥;
种子密钥经过KSA和PRGA算法后生成256位的密钥流后,对于192位密钥长度的AES加密算法,选择种子密钥的q+2个字节,作为基础进行轮密钥截取:将选择的字节与255进行与操作并将操作后的数值与64进行取余运算,将运算结果对应到256位的密钥流的字节上,然后向右循环截取,得到16字节的轮密钥;
种子密钥经过KSA和PRGA算法后生成256位的密钥流后,对于256位密钥长度的AES加密算法,选择种子密钥的第q+3个字节作为基础进行轮密钥截取:将选择的字节与255进行与操作并将操作后的数值与64进行取余运算,将运算结果对应到256位的密钥流的字节上,然后向右循环截取,得到16字节的轮密钥;
S6.对q进行更新,每次更新后q的值加1;
S7.判断是否满足条件q不大于Q;
若是,将得到的256位的密钥流作为步骤S4的输入,并基于更新后的q值,再次按照步骤S4~S7进行循环迭代;
若否,输出最终的轮密钥矩阵。


2.根据权利要求1所述的一种基于弱关联性的AES密钥扩展方法,其特征在于:所述步骤S3包括以下子步骤:
S301.初始化一个一维数组S[i],i=0,1,…,255,其元素值与下标相同且每个元素值为一个字节;
S302.初始化一个临时数组T[j],j=0,1,…,255,其元素值为步骤S1中的种子密钥,若种子密钥的长度不足256位,则把种子密钥分别复制给数组T中的余下部分,直至数组T被填满;
S303.初始化参数j=0,i=0;
A1、对参数j...

【专利技术属性】
技术研发人员:廖浩德田培培
申请(专利权)人:西南石油大学
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1