[发明专利]一种基于弱关联性的AES密钥扩展方法有效
| 申请号: | 202010166116.8 | 申请日: | 2020-03-11 |
| 公开(公告)号: | CN111400730B | 公开(公告)日: | 2022-03-08 |
| 发明(设计)人: | 廖浩德;田培培 | 申请(专利权)人: | 西南石油大学 |
| 主分类号: | G06F21/60 | 分类号: | G06F21/60 |
| 代理公司: | 成都方圆聿联专利代理事务所(普通合伙) 51241 | 代理人: | 宋红宾 |
| 地址: | 610500 四*** | 国省代码: | 四川;51 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 关联性 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]有一定的随机性:
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进行重复迭代;
若否,输出数组S′[i],i=0,1,…,255,即初始S密钥;
S4.将初始S密钥作为RC4算法中的PRGA算法的输入,得到一个256位的密钥流;
所述步骤S4包括以下子步骤:
S401.初始化参数:t=0,p=0,r=0;
S402.对参数t进行更新,得到t′:
t′=(t+1)mod 256;
对参数p进行更新,得到p′:
p′=(p+S′[t′])mod 256
S403.交换S′[t′],S′[p′]的值:
S′[t′]变为S″[t′]:
S″[t′]=S′[p′];
S′[p′]变为S″[p′]:
S″[p′]=S′[t′]
S404.计算中间参数h:
h=(S″[t′]+S″[p′])mod 256;
S405.确定参数K[r]:
K[r]=S′[h];
K表示的是一个中间数组,K[r]的意思是数组K的下标为r的对应的元素;
S406.对参数r进行更新,每次更新后r的值加1;
S407.判断更新后的r是否满足条件:r不大于255;
若是,返回步骤S402,将更新得到的t′、p′作为新的t、p,与更新得到的r一起按照步骤S402~S407进行重复迭代;
若否,输出K[r],r=0,1,…,255,即最终的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密钥扩展方法,其特征在于:所述步骤S5中,利用选择的字节作为基础进行轮密钥截取的具体过程如下:
S501.根据选择的字节,从ASCII码对照表中找到对应的十进制数值,将该十进制数值表示为二进制,并与255的二进制按照二进制位进行“与”运算,“与”运算的规则为:
00=0;01=0;10=0;11=1;
S502.将“与”运算得到的二进制数转换为十进制数,并除以64取余,得到余数m;
S503.将取余运算结果对应到256位密钥流的字节上,截取轮密钥:从256位密钥流的第m个字节开始,向右循环截取,得到16字节的轮密钥。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西南石油大学,未经西南石油大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010166116.8/1.html,转载请声明来源钻瓜专利网。





