版权说明 操作指南
首页 > 成果 > 详情

轻量级密码算法SCENERY实现方法、装置及存储介质

认领
导出
Link by 万方专利
反馈
分享
QQ微信 微博
成果类型:
专利
发明/设计人:
李浪;冯景亚
申请/专利权人:
衡阳师范学院
专利类型:
发明专利
语种:
中文
申请时间:
2019-11-05
申请/专利号:
CN201911070142.4
公开时间:
2020-02-11
公开号:
CN110784307A
主申请人地址:
421002 湖南省衡阳市珠晖区衡花路16号衡阳师院
代理人:
龚燕妮
机构署名:
本校为其他完成单位
主权项:
1.一种轻量级密码算法SCENERY实现方法,其特征在于,包括以下步骤: 步骤A1:获取64位明文作为待加密数据P,进行加密运算; 其中,待加密数据P从高位到低位每16位一组依次排序形成4×16的数据矩阵,记作P=P0P1P2P3; 步骤A2:对步骤A1所述的数据P进行IP1初始置换,并依据密钥位数确定轮数Nr,轮数控制信号初始值为1; 步骤A3:将步骤A2的运算结果划分为左右两部分,即4×8的矩阵数据块Lr、Rr; 其中,r表示当前轮数,数据块Lr由步骤A2的运算结果的每行的前8位从高位到低位依次排列获得,数据块Rr由步骤A2的运算结果的每行的后8位从高位到低位依次排列获得; 步骤A4:将步骤A3中32位数据块Lr和Rr按照Feistel结构进行F轮函数运算,每一轮F轮函数运算包括: a)对Rr进行轮密钥加运算; b)对a)得到的运算结果进行S盒置换; c)对b)得到的运算结果进行M矩阵置换; d)将c)得到的结果与Lr进行异或运算,并将异或结果作为下一轮参与F轮函数运算的Rr;同时将本轮参与F轮函数运算的输入数据块Rr作为下一轮参与F轮函数运算的Lr; 步骤A5:根据当前轮密钥和轮数控制信号,进行下一轮密钥扩展运算,包括: e)对当前轮密钥进行S盒置换; f)对e)得到的运算结果循环左移x位; g)对f)得到的运算结果进行轮常量加运算; h)对g)中的结果进行DP动态置换,得到的结果作为下一轮的轮密钥; 其中,F轮函数运算过程中,第一轮运算所使用的轮密钥为初始密钥的前32位数据,从第二轮开始依次为上一轮密钥扩展运算获得的轮密钥的前32位数据;DP动态置换是由当前轮数r和步骤g)的结果作为控制信号,动态地对步骤g)的结果进行置换; 步骤A6:判断当前轮数信号r是否小于轮数Nr,若小于,令r=r+1,将步骤A4、A5的结果作为新一轮运算的输入数据,返回步骤A4;否则,对步骤A4中d)得到的下一轮Lr、Rr进行IP2置换,然后输出加密结果。 2.根据权利要求1所述的轻量级密码算法SCENERY实现方法,其特征在于,所述步骤A2中的IP1初始置换过程如下: 将4×16的数据矩阵P按每行4位为一小单元构成一个4×4的矩阵,该4×4的矩阵表示为N={P00,P01,P02,P03,P10,P11,P12,P13,P20,P21,P22,P23,P30,P31,P32,P33}; 将矩阵N依次划分为4个2×2的矩阵N0、N1、N2、N3;N0={P00,P01,P10,P11},N1={P02,P03,P12,P13},N2={P20,P21,P30,P31},N3={P22,P23,P32,P33}; 分别取N0、N3的对角线(P00,P11)和(P23,P32)构成IP1置换的第一列数据,即(P00,P11,P23,P32)T; 分别取N1、N2的对角线(P12,P03)和(P31,P20)构成IP1置换的第二列数据,即(P12,P03,P31,P20)T; 分别取N3、N0的对角线(P33,P22)和(P10,P01)构成IP1置换的第三列数据,即(P33,P22,P10,P01)T; 分别取N2、N1的对角线(P21,P30)和(P02,P13)构成IP1置换的第四列数据,即(P21,P30,P02,P13)T; 将上述4×4的矩阵N经IP1初始置换后以{P00,P12,P33,P21,P11,P03,P22,P30,P23,P31,P10,P02,P32,P20,P01,P13}顺序输出,得到经IP1初始置换后的数据P′。 3.根据权利要求1所述的轻量级密码算法SCENERY实现方法,其特征在于,所述步骤A3中将步骤A2的运算结果划分为4×8的矩阵数据块Lr、Rr,其划分过程如下: 将步骤A2的运算结果即4×16的矩阵,第一行16位数据前8位划分给Lr数据块第一行,后8位划分给Rr数据块第一行,第二、三、四行依次类推,得到4×8的矩阵Lr、Rr,如下所示: 4.根据权利要求1所述的轻量级密码算法SCENERY实现方法,其特征在于,所述步骤A4中F轮函数运算的M矩阵置换采用分支数为4的32×32的二进制矩阵M实现,矩阵M表示为: 其中,M0和M1为16×16的二进制矩阵,且M0与M1分支数为4,即M0与M1每行每列1的个数为3; 矩阵M0用于置换b)得到的运算结果的前16位,矩阵M1用于置换b)得到的运算结果的后16位。 5.根据权利要求1所述的轻量级密码算法SCENERY实现方法,其特征在于,所述步骤A5中密钥扩展运算具体包括如下步骤: 将长度为64位的初始密钥从高位至低位依次排列形成4×16的密钥矩阵,记作K=K0K1K2K3, K0={k63,k62,……,k49,k48},K1={k47,k46,……,k33,k32}, K2={k31,k30,……,k17,k16},K3={k15,k14,……,k1,k0}; e)对K0的低4位(k51,k50,k49,k48)和K1的低4位(k35,k34,k33,k32)交替构成两个4位数据(k51,k35,k50,k34)和(k49,k33,k48,k32),并分别进行S盒置换; f)对e)运算结果循环左移11位; g)对f)运算结果的从高位到低位的前16位进行轮常量加运算; h)对g)的运算结果进行DP动态置换,得到的结果作为下一轮的轮密钥。 6.根据权利要求5所述的轻量级密码算法SCENERY实现方法,其特征在于,所述对g)中的结果进行DP动态置换具体包括: 对当前轮数r除4求余,设余数为m,0≤m≤3,获取g)的运算结果矩阵K′的第m行数据K′m对应的{k′61-m*16,k′60-m*16},{k′57-m*16,k′56-m*16},{k′53-m*16,k′52-m*16},{k′49-m*16,k′48-m*16},并将其对应的值依次定义为v0,v1,v2,v3,0≤v0,v1,v2,v3≤3,即: v0={k′61-m*16,k′60-m*16}; v1={k′57-m*16,k′56-m*16}; v2={k′53-m*16,k′52-m*16}; v3={k′49-m*16,k′48-m*16}; 将K′0、K′1、K′2、K′3以4比特为一单元进行划分,形成4×4的矩阵,如下所示: v0,v1,v2,v3值则依次表示为4×4的矩阵K′0、K′1、K′2、K′3中对应的位置,所以v0,v1,v2,v3位置对应的值依次为K′0v0、K′1v1、K′2v2、K′3v3; 通过一个顺序置换,将{K′0v0、K′1v1、K′2v2、K′3v3}置换为{K′2v2、K′3v3、K′0v0、K′1v1},最后获得结果即为扩展后的轮密钥。 7.根据权利要求1所述的轻量级密码算法SCENERY实现方法,其特征在于,所述步骤A6中IP2置换包括: 利用步骤A4中d)得到的下一轮Lr、Rr构造4×16的矩阵,将Lr的每行数据赋值给矩阵对应行的高八位,将Rr每行数据赋值给矩阵对应行的低8位; 然后将4×16矩阵每行的高8位与低8位进行互换; 最后将互换后的4×16矩阵进行IP1逆初始置换。 8.根据权利要求1至7任一项所述的轻量级密码算法SCENERY实现方法,其特征在于,还包括解密过程,所述解密过程包括如下步骤: 步骤B1:获取64位密文作为待解密数据C,进行解密运算; 其中,待解密数据C从高位到低位每16位一组依次排序形成4×16的数据矩阵,记作C=C0C1C2C3; 步骤B2:对步骤B1所述的待解密数据C进行IP1初始置换,并依据密钥位数确定轮数Nr,轮数控制信号初始值为1; 步骤B3:将步骤B2的运算结果划分为左右两部分,即4×8的矩阵数据块Lr、Rr; 其中,r表示当前轮数,数据块Lr由步骤B2的运算结果的每行的前8位从高位到低位依次排列获得,数据块Rr由步骤B2的运算结果的每行的后8位从高位到低位依次排列获得; 步骤B4:将步骤B3中32位数据块Lr和Rr按照Feistel结构进行F轮函数运算,每一轮F轮函数运算包括: i)对Rr进行轮密钥加运算; j)对i)得到的运算结果进行S盒置换; k)对j)得到的运算结果进行M矩阵置换; l)将k)得到的结果与Lr进行异或运算,并将异或结果作为下一轮参与F轮函数运算的Rr;同时将本轮参与F轮函数运算的输入数据块Rr作为下一轮参与F轮函数运算的Lr; 其中,每一轮F轮函数运算中的轮密钥复用加密过程中的轮密钥,解密过程中轮密钥使用顺序与加密过程中轮密钥使用顺序相反; 步骤B5:判断当前轮数信号r是否小于轮数Nr,若小于,令r=r+1,将步骤B4、B5的结果作为新一轮运算的输入数据,返回步骤B4;否则,对步骤B4中l)得到的下一轮Lr、Rr进行IP2置换,然后输出解密结果。 9.一种轻量级密码算法SCENERY实现装置,其特征在于,包括: 初始化单元:用于获取64位明文作为待加密数据P,进行加密运算; IP1置换单元:用于对待加密数据P进行IP1置换,并依据密钥位数确定轮数Nr,轮数控制信号初始值为1; F轮函数处理单元:用于将经IP1置换后的数据划分为左右两部分,即4×8的矩阵数据块Lr、Rr; 其中,r表示当前轮数,数据块Lr由IP1置换单元的运算结果的每行的前8位从高位到低位依次排列获得,数据块Rr由IP1置换单元的运算结果的每行的后8位从高位到低位依次排列获得; 然后将数据块Lr和Rr按照Feistel结构进行F轮函数运算,每一轮F轮函数运算包括: a)对Rr进行轮密钥加运算; b)对a)得到的运算结果进行S盒置换; c)对b)得到的运算结果进行M矩阵置换; d)将c)得到的结果与Lr进行异或运算,并将异或结果作为下一轮参与F轮函数运算的Rr;同时将本轮参与F轮函数运算的输入数据块Rr作为下一轮参与F轮函数运算的Lr; 轮密钥扩展单元:用于根据当前轮密钥和轮数控制信号,进行下一轮密钥扩展运算,包括: e)对当前轮密钥进行S盒置换; f)对e)得到的运算结果循环左移x位; g)对f)得到的运算结果进行轮常量加运算; h)对g)中的结果进行DP动态置换,得到的结果作为下一轮的轮密钥; 其中,F轮函数运算过程中,第一轮运算所使用的轮密钥为初始密钥的前32位数据,从第二轮开始依次为上一轮密钥扩展运算获得的轮密钥的前32位数据;DP动态置换是由当前轮数r和步骤g)的结果作为控制信号,动态地对步骤g)的结果进行置换; 密文生成单元:用于判断当前轮数信号r是否小于轮数Nr,若小于,令r=r+1,将F轮函数处理单元、轮密钥扩展单元的结果作为新一轮运算的输入数据,返回F轮函数处理单元的F轮函数过程和轮密钥扩展单元的轮密钥扩展过程;否则,对F轮函数处理单元最后的结果进行IP2置换,然后输出加密结果。 10.一种计算机可读存储介质,其特征在于,所述存储介质包括存储的程序,所述程序适于处理器加载并执行权力要求1至8任一项所述的轻量级密码算法SCENERY实现方法。
摘要:
本发明公开了一种轻量级密码算法SCENERY实现方法、装置及存储介质,其中方法包括获取待加密明文,并依此进行IP1初始置换,轮函数、密钥扩展、IP2置换,其中轮函数包括依次对数据进行轮密钥加运算、S盒置换、M矩阵置换,密钥扩展包括依次对密钥进行S盒置换、循环左移、轮常量加运算、DP动态置换。轮函数采用SPN结构的F函数,设计F函数线性层时以实现高依赖性为目的构造了一种二进制矩阵M;密钥扩展选用轮常量和密钥扩展中间结果作为控制信号,对当前轮密钥扩展中间结果进行DP动态置换获取轮密钥,这是一种新密钥扩展方式,其降低了单一密钥迭代对前轮输入的关联性,增加了破译难度,提高了安全...

反馈

验证码:
看不清楚,换一个
确定
取消

成果认领

标题:
用户 作者 通讯作者
请选择
请选择
确定
取消

提示

该栏目需要登录且有访问权限才可以访问

如果您有访问权限,请直接 登录访问

如果您没有访问权限,请联系管理员申请开通

管理员联系邮箱:yun@hnwdkj.com