admin管理员组文章数量:1565790
2024年7月18日发(作者:)
(19)中华人民共和国国家知识产权局
(12)发明专利说明书
(21)申请号 CN2.5
(22)申请日 2013.12.23
(71)申请人 衡阳师范学院
地址 421002 湖南省衡阳市珠晖区衡花路16号
(72)发明人 李浪 贺位位 刘波涛 邹祎 许琼方 刘辉
(74)专利代理机构 长沙市融智专利事务所
代理人 黄美成
(51)
H04L9/06
权利要求说明书 说明书 幅图
(10)申请公布号 CN 103746795 A
(43)申请公布日 2014.04.23
(54)发明名称
一种实现Magpie加解密的方法
(57)摘要
本发明公开了一种实现Magpie加
解密的方法,Magpie密码算法分组长度为
64位,密钥长度为96位,采用SPN结
构,包含32轮运算。Magpie包括两部
分:运算部分和控制部分。运算部分,每
轮运算包括六个基本运算模块。控制部
分,将密钥的第65位到96位作为Magpie
加密算法的控制信号。控制信号用来控制
轮内模块的运算顺序,而控制信号又是由
密钥相应位的值随机决定,从而使加解密
运算过程随机化。解密时将输入明文与初
始密钥换成输入密文与变换后轮密钥,进
行解密;采用密钥控制加解密方法,将密
钥的第65位到96位二进制数作为Magpie
加密算法的控制信号,这是一种新的控制
方式,有效提高密码算法的安全性。
法律状态
法律状态公告日
法律状态信息
法律状态
权 利 要 求 说 明 书
1.一种实现Magpie加解密的方法,其特征在于,包括以下几个步骤:
步骤1:将64位明文或64位密文加载至寄存器;
步骤2:将待加/解密数据与96位密钥前64位进行轮密钥加运算获得中间运算结果,
依
1)依据控制信号对中间运算结果进行轮运算操作;
当控制信号select0为1时,轮运算操作步骤如下:
2)对1)中所述的中间运算结果进行常数加运算;
3)对2)得到的运算结果采用S盒进行字节变换运算;
4)对3)得到的运算结果进行行移位变换运算;
5)对4)得到的运算结果进行列混合变换运算;
6)对5)得到的运算结果进行轮密钥加运算,然后密钥更新;
7)以6)得到的运算结果作为新的中间运算结果进行下一轮运算,如果到达第32
轮运算
回1);
当控制信号select0为0时,轮运算操作步骤如下:
操作,则输出当前运算结果完成加/解密操作,否则返
据控制信号对待加/解密数据进行32轮运算;
8)密钥更新,然后对1)中所述的中间运算结果进行轮密钥加运算;
9)对8)得到的运算结果进行列混合变换运算;
10)对9)得到的运算结果进行行移位变换运算;
11)对10)得到的运算结果采用S盒进行字节变换运算;
12)对11)得到的运算结果进行常数加运算;
13)对12)得到的运算结果作为新的中间运算结果进行下一轮运算,如果到达第
32轮运
1)。
所述的控制信号为96位密钥的第65位到96位二进制数,其中,96位密钥中第65
位到 第80位依次作为S盒变换控制信号select1,96位密钥中第81
列混合以及轮内模块运算顺序的控
轮轮运
算,则输出当前运算结果完成加/解密操作,否则返回
位到第96位均作为行移位、
制信号select0,每个控制信号select1、select0连续控制两
算;
所述密钥更新是将96位密钥前64位在每轮运算中做一次S盒变换,后32位保持
不变;
所述常数加运算是指将待进行常数加运算的数据的第1位到第8位和第56位到第
64位 分别与常数加数组RC[i](0<=i<32)的第i个字节进行异或
同时表示第i轮运算;
运算,i表示数组RC中的第i个元素,
RC[i]=RC[31-i],(0<=i<32),其数组元素如下:
byte RC[32]={
0x02,0x03,0x06,0x0A,
0x3C,0x92,0xA3,0x61,
0xA8,0xCD,0xFE,0x3B,
0x2C,0x6E,0x25,0x6D,
0x6D,0x25,0x6E,0x2C,
0x3B,0xFE,0xCD,0xA8,
0x61,0xA3,0x92,0x3C,
0x0A,0x06,0x03,0x02
};
进行解密操作时,与解密数据进行轮密钥加运算操作的96位密钥是通过将变换后
轮密钥 96位密钥中前64位二进制数不变,后32位二进制数
位中后16位二进制数倒置先全部取反,然后再将取反操作的32
后获得。
2.根据权利要求1所述的实现Magpie加解密的方法,其特征在于,所述行移位变
换运算 操作是指将64位的输入数据以每4位作为一个矩阵元
素构成一个4*4的矩阵state:
如果控制信号select0等于1,矩阵state的第一行循环左移一个半字节,第二行循
环左移
如果控制信号二进制数select0等于0,矩阵state的第一行循环右移一个半字节,
第二行
循环右移1个字节,第三行循环右移半个字节,第四行
1个字节,第三行循环左移半个字节,第四行保持不动;
保持不动。
3.根据权利要求2所述的实现Magpie加解密的方法,其特征在于,所述列混合变
换运算 操作是指将64位的输入数据以每4位作为一个矩阵元
R与矩阵state相乘: 素构成一个4*4的矩阵state,固定矩阵
如果控制信号select0等于0,固定矩阵M为
如果控制信号select0等于1,固定矩阵M’为
4.根据权利要求1-3任一项所述的实现Magpie加解密方法,其特征在于,所述S
盒变换 操作受控于控制信号select1,当控制信号select1为0
7,9,a},当select1为1时,S盒为
时,S盒为{5,e,f,8,c,1,2,d,b,4,6,3,0,
{c,5,6,b,9,0,a,d,3,e,f,8,4,7,1,2},96位密钥中第65
位到第80位依次作为S盒变换控制信号select1。
说 明 书
技术领域
本发明涉及信息安全技术中的密码算法领域,特别是涉及一种实现Magpie加解密
的方法。
背景技术
物联网近几年越来越深入应用到人们的生产生活中,物联网安全也引起了大家的高
度关 注。适合物联网中资源受限的轻量级密码算法近几年不断在研究,特
限的智能卡上,比如在RFID上实现加密。近年
法、PUFFIN加密算法、
算法、
别是如何应用到资源受
出现的轻量级加密算法有:PRESENT加密算
MIBS加密算法、PRINCE加密算法、LED加密算法、EPCBC加密
LBLOCK加密算法、Piccolo加密算法、Klein加密算法、Twine加密算法、PRINT
加
轻量级密码算法一般要满足以下要求:硬件实现面积少,相似的加解密对称过程,
算法 硬件与软件实现性能好,安全性高。现有的轻量级密码算法有些过于
少,降低算法运算轮数,从而导致设计出来的轻
密码算法解密运算复杂,在
码算法
密算法等。
追求硬件实现占用面积
量级密码算法安全性相对较差;有的轻量级
解密运算过程中不能有效复用加密运算模块,还有一些轻量级密
密钥长度过短,导致容易攻击。
发明内容
本发明提供了一种实现Magpie加解密的方法,其目的在于通过由密钥作为控制信
号控制 轮内加密模块的运算顺序,使加密过程随机化,能够有效提高
密码算法的自身安全性。
一种实现Magpie加解密的方法,包括以下几个步骤:
步骤1:将64位明文或64位密文加载至寄存器;
步骤2:将待加/解密数据与96位密钥前64位进行轮密钥加运算获得中间运算结果,
依
1)依据控制信号对中间运算结果进行轮运算操作;
当控制信号select0为1时,轮运算操作步骤如下:
2)对1)中所述的中间运算结果进行常数加运算;
3)对2)得到的运算结果采用S盒进行字节变换运算;
4)对3)得到的运算结果进行行移位变换运算;
5)对4)得到的运算结果进行列混合变换运算;
6)对5)得到的运算结果进行轮密钥加运算,然后更新密钥;
7)以6)得到的运算结果作为新的中间运算结果进行下一轮运算,如果到达第32
轮运算
操作,则输出当前运算结果完成加
据控制信号对待加/解密数据进行32轮运算;
/解密操作,否则返回1);
当控制信号select0为0时,轮运算操作步骤如下:
8)更新密钥,然后对1)中所述的中间运算结果进行轮密钥加运算;
9)对8)得到的运算结果进行列混合变换运算;
10)对9)得到的运算结果进行行移位变换运算;
11)对10)得到的运算结果采用S盒进行字节变换运算;
12)对11)得到的运算结果进行常数加运算;
13)对12)得到的运算结果作为新的中间运算结果进行下一轮运算,如果到达第
32轮运
所述的控制信号为96位密钥的第65位到96位二进制数,其中,96位密钥中第65
位到 第80位依次作为S盒变换控制信号select1,96位密钥中第81位到
列混合以及轮内模块运算顺序的控制信号
轮轮运算;
算,则输出当前运算结果完成加/解密操作,否则返回1);
第96位均作为行移位、
select0,每个控制信号select1、select0连续控制两
所述密钥更新是将96位密钥前64位在每轮运算中做一次S盒变换,后32位保持
不变;
所述常数加运算是指将待进行常数加运算的数据的第1位到第8位和第56位到第
64位 分别与常数加数组RC[i](0<=i<32)的第i个字节进行异或运算,i
同时表示第i轮运算;
表示数组RC中的第i个元素,
RC[i]=RC[31-i],(0<=i<32),其数组元素如下:
byte RC[32]={
0x02,0x03,0x06,0x0A,
0x3C,0x92,0xA3,0x61,
0xA8,0xCD,0xFE,0x3B,
0x2C,0x6E,0x25,0x6D,
0x6D,0x25,0x6E,0x2C,
0x3B,0xFE,0xCD,0xA8,
0x61,0xA3,0x92,0x3C,
0x0A,0x06,0x03,0x02
};
进行解密操作时,与解密数据进行轮密钥加运算操作的96位密钥是通过将变换后
轮密钥 96位密钥中前64位二进制数不变,后32位二进制数先全部
位中后16位二进制数倒置后获得。 取反,然后再将取反操作的32
所述行移位变换运算操作是指将64位的输入数据以每4位作为一个矩阵元素构成
一个
如果控制信号select0等于1,矩阵state的第一行循环左移一个半字节,第二行循
环左移
1个字节,第三行循环左移半个字节,第四行保持不动;
4*4的矩阵state:
如果控制信号二进制数select0等于0,矩阵state的第一行循环右移一个半字节,
第二行
动。
所述列混合变换运算操作是指将64位的输入数据以每4位作为一个矩阵元素构成
一个
如果控制信号select0等于0,固定矩阵M为
如果控制信号select0等于1,固定矩阵M’为
所述S盒变换操作受控于控制信号select1,当控制信号select1为0时,S盒为
{5,e,f,8,c,1, 2,d,b,4,6,3,0,7,9,a},当select1为1时,S盒为
位密钥中第65位到第80位依次作为S盒
4*4的矩阵state,固定矩阵R与矩阵state相乘:
循环右移1个字节,第三行循环右移半个字节,第四行保持不
{c,5,6,b,9,0,a,d,3,e,f,8,4,7,1,2},96
变换控制信号select1。
有益效果
本发明提供了一种实现Magpie加解密的方法,Magpie密码算法分组长度为64位,
密钥 长度设计为96位,采用SPN(Substitution-Permutation Network,替代置
轮。包括两个部分:运算部分和控制部分。运算
钥更新(Updatekey),常数加
换网络)结构,加密32
部分:每轮运算包括六个基本运算模块:密
(AddConstants),S盒变换(SubCells),行移位(ShiftRows),列混合
(MixColumns),轮密钥加(AddRoundKey);将96位密钥的第65位到96位
加密算法的控制信号,利用加密运算模块,只要
后轮密钥,从而密文可以解
快速地
二进制数作为Magpie
将输入明文与初始密钥换成输入密文与变换
密成明文;这种方式在加密模块基础上不增加资源情况下,简单、
实现解密运算;节省算法资源占用;
采用密钥控制加解密方式,将密钥的第65位到96位二进制数作为Magpie加密算
法的控 制信号,其中密钥第65位到第80位二进制数作为S盒变换控
制数值作为行移位变换、列混合变换与每
运算。控制信号由输
制信号,第81位到96位二进
轮运算顺序的控制信号;每一位二进制数控制两轮
入密钥65位到96位的二进制数组成,用密钥控制密码算法加解密,这
附图说明
图1为本发明实现Magpie加/解密的方法流程图;
图2为Magpie密码加密算法的C语言代码;
图3为Magpie密码算法行移位变换运算图;
图4为Magpie密码算法列混合变换运算图。
图5为Magpie密码算法密钥更新图。
具体实施方式
下面将结合附图和实施例对本发明做进一步的说明。
是一种新的控制方式,有效提高密码算法的安全性。
如图1所示,为本发明实现Magpie加密的方法流程图,包括以下几个步骤:
步骤1:将64位明文或64位密文加载至寄存器;
步骤2:将待加/解密数据与96位密钥前64位进行轮密钥加运算获得中间运算结果,
依
1)依据控制信号对中间运算结果进行轮运算操作;
当控制信号select0为1时,轮运算操作步骤如下:
2)对1)中所述的中间运算结果进行常数加运算;
3)对2)得到的运算结果采用S盒进行字节变换运算;
4)对3)得到的运算结果进行行移位变换运算;
5)对4)得到的运算结果列混合变换运算;
6)对5)得到的运算结果进行轮密钥加运算,然后更新密钥;
7)以6)得到的运算结果作为新的中间运算结果进行下一轮运算,如果到达第32
轮运算
当控制信号select0为0时,轮运算操作步骤如下:
8)更新密钥,然后对1)中所述的中间运算结果进行轮密钥加运算;
9)对8)得到的运算结果进行列混合变换运算;
10)对9)得到的运算结果进行行移位变换运算;
操作,则输出当前运算结果完成加/解密操作,否则返回1);
据控制信号对待加/解密数据进行32轮运算;
11)对10)得到的运算结果采用S盒进行字节变换运算;
12)对11)得到的运算结果进行常数加运算;
13)对12)得到的运算结果作为新的中间运算结果进行下一轮运算,如果到达第
32轮运
在实现过程中分为两个部分:运算部分和控制部分。
运算部分中每轮运算包括六个基本运算模块:密钥更新(Updatekey),常数加
(AddConstants),S盒变换(SubCells),行移位(ShiftRows),列混合
加(AddRoundKey)。
算,则输出当前运算结果完成加/解密操作,否则返回1);
(MixColumns),轮密钥
控制部分中所述的控制信号为96位密钥的第65位到96位二进制数,其中,96位
密钥中 第65位到第80位依次作为S盒变换控制信号select1,96位
行移位、列混合以及轮内模块运算顺序的
续控制两轮轮运算;
密钥中第81位到第96位均作为
控制信号select0,每个控制信号select1、select0连
控制信号控制轮内模块的运算顺序,而控制信号又是由密钥最后16位的二进制数
决定, 随输入密钥的更新而随机变化,从而提高了加/解密算法实现
时的安全性。
Magpie密码算法不像AES、Klein等其他的加密算法加密模块运算流程是固定的;
Magpie 加密算法通过密钥第65位到96位的二进制数控制信号来控制
每轮Roundi(0<=i<32)运
轮运算中每个模块运算顺序,
算中五个基本运算的顺序为:
当select0=1,模块运行的顺序为:
AddConstants→SubCells→ShiftRows→MixColumns→AddRoundKey;
当select0=0,模块运行的顺序为:
AddRoundKey→MixColumns→ShiftRows→SubCells→AddConstants。
所述更新密钥是将96位密钥前64位在每轮运算中做一次S盒变换,后32位保持
不变;
密钥更新构造如下,其流程如图5所示:
密钥更新构造:构造分为两个步骤。1.对输入密钥第1位到64位进行S盒
(SubCells) 变换,达到密钥混淆与扩散目的;2.对输入密钥第65位到96
新操作,运算为32轮;
位保持不变;密钥进行密钥更
密钥更新的密钥运算过程:密钥第1位到64位参与轮密钥加运算,密钥第65位到
96位
所述常数加运算是指将待进行常数加运算数据的第1位到第8位和第56位到第64
位分 别与常数加数组RC[i](0<=i<32)的第i个字节进行异或运算,i表
同时表示第i轮运算;
为Magpie密码算法的控制信号来控制算法加解密。
示数组RC中的第i个元素,
RC[i]=RC[31-i],(0<=i<32),其数组元素如下:
byte RC[32]={
0x02,0x03,0x06,0x0A,
0x3C,0x92,0xA3,0x61,
0xA8,0xCD,0xFE,0x3B,
0x2C,0x6E,0x25,0x6D,
0x6D,0x25,0x6E,0x2C,
0x3B,0xFE,0xCD,0xA8,
0x61,0xA3,0x92,0x3C,
0x0A,0x06,0x03,0x02
};
进行加密操作时,其算法用C语言描述如图2所示。
进行解密操作时,与解密数据进行轮密钥加运算操作的96位密钥是通过将变换后
轮密钥 96位密钥中前64位二进制数不变,后32位二进制数先全部
位中后16位二进制数倒置后获得。 取反,然后再将取反操作的32
Magpie密码算法的解密输入变换后轮密钥实现过程:
Magpie解密实现是输入密文与变换后轮密钥;变换后轮密钥是加密32轮后输出的
更新密 钥;输出的更新密钥变换为前64位二进制数不变,后32位二
32位中后16位二进制数倒置; 进制数先全部取反,然后再将
具体操作如下:记k为key;
第1)步:将key第65位到96位二进制数取反(即1变成0,0变成1);
第2)步:再将第1)步结果的后16位二进制数倒置
(k80k81k82......k93k
94k95→k95k94k93......k >82
所述行移位变换运算操作是指将64位的输入数据以每4位作为一个矩阵元素构成
一个
如果控制信号select0等于1,矩阵state的第一行循环左移一个半字节,第二行循
环左移
如果控制信号二进制数select0等于0,矩阵state的第一行循环右移一个半字节,
第二行
动。
所述列混合变换运算操作是指将64位的输入数据以每4位作为一个矩阵元素构成
一个
如果控制信号select0等于0,固定矩阵M为
如果控制信号二进制数select0等于1,固定矩阵M’为
4*4的矩阵state,固定矩阵R与矩阵state相乘,如图4所示:
循环右移1个字节,第三行循环右移半个字节,第四行保持不
1个字节,第三行循环左移半个字节,第四行保持不动;
4*4的矩阵state,如图3所示:
所述S盒变换操作受控于控制信号select1,当控制信号select1为0时,S盒为
{5,e,f,8,c,1, 2,d,b,4,6,3,0,7,9,a},当select1为1时,S盒为
位密钥中第65位到第80位依次作为S盒{c,5,6,b,9,0,a,d,3,e,f,8,4,7,1,2},96
变换控制信号select1;
在Magpie密码算法中S盒构造为4×4的S盒;而4×4的S盒应用实现所需逻辑门
的个 数是8×8的S盒四十分之一;Magpie密码算法S盒构造体现了轻量
用少的特点; 级密码算法面积资源占
Magpie中的S盒构造一个二维数组,举例给出其中Sbox[2][16]数组如下:
Sbox[2][16]={
5,e,f,8,c,1,2,d,b,4,6,3,0,7,9,a,
c,5,6,b,9,0,a,d,3,e,f,8,4,7,1,2
};
S盒::yj=Sbox[1][Sbox[0][xj]];
yj=Sbox[0][Sbox[1][xj]];(0<=j<16)。是 指特征
值为2的二元域上4位端输入,4位端输出的变换运算,具体相关运算由后续公式
确
Magpie密码算法中将运算中间结果state记作:
state=x0||x1||......||x14||x15。每轮运
算中明 文S盒变换运算为:
定。
state=Sbox[key[64+j]][xj];(0<=j<16,j从0-15同时运算);
Magpie密码算法中密钥key分为非控制部分key[0-63]与控制部分key[64-95],其
中非控 制部分key[0-63]记作:key[0-
63]=n0||n1||......||n14||n15。每轮密
钥更新S盒变换定义如下:
key=Sbox[key[64+j]][nj]||key[64-95];(0<=j<16,j从0-15同
换控制信号select1; 时运算),以key[64-80]作为S盒变
上式中,x与n均为4位二进制数。
总结:
将Magpie加密算法每轮加密记做Ri(0<=i<32),则加密过程如下(其
中下面P代表明文规定
密钥):
P→R0(key[80])→R1(key[80])→R2(key[81])→R
3(key[81])……→R28(key[94])→R29(key[94])
将密钥按照如下规则修改后则为解密运算:
获得解密密钥:
1)将原始密钥做32轮密钥更新得到解密密钥;
2)将1)得到密钥最后32位二进制数取反(即1变成0,0变成1);
3)将2)得到密钥最后16位二进制数倒置
(k80k81k82......k93k94
→R30(key[95])→R31(key[95])→C;
Plaintext,C代表密文Ciphertext,key代表原始
>k95)
→(k95k94k93......k82k81 b>k80)。 Magpie解密运算过程如下(其中下面P代表明文Plaintext,C代表密文Ciphertext, key’ C→R0(key’[80])→R1(key’[80])→R2(key’[81]) →R3(key’[81])……→R28(key’[94]) →R29(key’[94])→R30(key’[95])→R31(k ey’[95])→P; Magpie密码算法测试向量如下: 代表解密密钥): 按照本发明所提出的方法,利用给出的测试向量,实现者对给定的明文进行加密处 理, 以上结合具体实施例对本发明进行了详细的说明,这些并非构成对本发明的限制。 在不 脱离本发明原理的情况下,本领域的技术人员还可以作出许多变形和 发明的保护范围。
即可得到测试向量中所述的密文。
改进,这些也应属于本
版权声明:本文标题:一种实现Magpie加解密的方法 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1721297117a870392.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论