一种实现Magpie加解密的方法

文档序号:7781683阅读:575来源:国知局
一种实现Magpie加解密的方法
【专利摘要】本发明公开了一种实现Magpie加解密的方法,Magpie密码算法分组长度为64位,密钥长度为96位,采用SPN结构,包含32轮运算。Magpie包括两部分:运算部分和控制部分。运算部分,每轮运算包括六个基本运算模块。控制部分,将密钥的第65位到96位作为Magpie加密算法的控制信号。控制信号用来控制轮内模块的运算顺序,而控制信号又是由密钥相应位的值随机决定,从而使加解密运算过程随机化。解密时将输入明文与初始密钥换成输入密文与变换后轮密钥,进行解密;采用密钥控制加解密方法,将密钥的第65位到96位二进制数作为Magpie加密算法的控制信号,这是一种新的控制方式,有效提高密码算法的安全性。
【专利说明】—种实现Magpie加解密的方法
【技术领域】
[0001]本发明涉及信息安全技术中的密码算法领域,特别是涉及一种实现Magpie加解密的方法。
【背景技术】
[0002]物联网近几年越来越深入应用到人们的生产生活中,物联网安全也引起了大家的高度关注。适合物联网中资源受限的轻量级密码算法近几年不断在研究,特别是如何应用到资源受限的智能卡上,比如在RFID上实现加密。近年出现的轻量级加密算法有:PRESENT加密算法、PUFFIN加密算法、MIBS加密算法、PRINCE加密算法、LED加密算法、EPCBC加密算法、LBLOCK加密算法、Piccolo加密算法、Klein加密算法、Twine加密算法、PRINT加密算法等。
[0003]轻量级密码算法一般要满足以下要求:硬件实现面积少,相似的加解密对称过程,算法硬件与软件实现性能好,安全性高。现有的轻量级密码算法有些过于追求硬件实现占用面积少,降低算法运算轮数,从而导致设计出来的轻量级密码算法安全性相对较差;有的轻量级密码算法解密运算复杂,在解密运算过程中不能有效复用加密运算模块,还有一些轻量级密码算法密钥长度过短,导致容易攻击。

【发明内容】

[0004]本发明提供了一种实现Magpie加解密的方法,其目的在于通过由密钥作为控制信号控制轮内加密模块的运算顺序,使加密过程随机化,能够有效提高密码算法的自身安全性。
[0005]—种实现Magpie加解密的方法,包括以下几个步骤:
[0006]步骤1:将64位明文或64位密文加载至寄存器;
[0007]步骤2:将待加/解密数据与96位密钥前64位进行轮密钥加运算获得中间运算结果,依据控制信号对待加/解密数据进行32轮运算;
[0008]I)依据控制信号对中间运算结果进行轮运算操作;
[0009]当控制信号selectO为I时,轮运算操作步骤如下:
[0010]2)对I)中所述的中间运算结果进行常数加运算;
[0011]3)对2)得到的运算结果采用S盒进行字节变换运算;
[0012]4)对3)得到的运算结果进行行移位变换运算;
[0013]5)对4)得到的运算结果进行列混合变换运算;
[0014]6)对5)得到的运算结果进行轮密钥加运算,然后更新密钥;
[0015]7)以6)得到的运算结果作为新的中间运算结果进行下一轮运算,如果到达第32轮运算操作,则输出当前运算结果完成加/解密操作,否则返回I);
[0016]当控制信号selectO为O时,轮运算操作步骤如下:
[0017]8)更新密钥,然后对I)中所述的中间运算结果进行轮密钥加运算;[0018]9)对8)得到的运算结果进行列混合变换运算;
[0019]10)对9)得到的运算结果进行行移位变换运算;
[0020]11)对10)得到的运算结果采用S盒进行字节变换运算;
[0021]12)对11)得到的运算结果进行常数加运算;
[0022]13)对12)得到的运算结果作为新的中间运算结果进行下一轮运算,如果到达第32轮运算,则输出当前运算结果完成加/解密操作,否则返回I);
[0023]所述的控制信号为96位密钥的第65位到96位二进制数,其中,96位密钥中第65位到第80位依次作为S盒变换控制信号selectl, 96位密钥中第81位到第96位均作为行移位、列混合以及轮内模块运算顺序的控制信号selectO,每个控制信号selectl、selectO连续控制两轮轮运算;
[0024]所述密钥更新是将96位密钥前64位在每轮运算中做一次S盒变换,后32位保持不变;
[0025]所述常数加运算是指将待进行常数加运算的数据的第I位到第8位和第56位到第64位分别与常数加数组RC[i] (0〈=i〈32)的第i个字节进行异或运算,i表示数组RC中的第i个元素,同时表示第i轮运算;
[0026]RC[i]=RC[31-1], (0〈=i〈32),其数组元素如下:
[0027]byte RC[32] = {
[0028]0x02, 0x03, 0x06, OxOA,
[0029]0x3C, 0x92, 0xA3, 0x61,
[0030]0xA8, OxCD, OxFE, 0x3B,
[0031]0x2C, 0x6E, 0x25, 0x6D,
[0032]0x6D, 0x25, 0x6E, 0x2C,
[0033]0x3B, OxFE, OxCD, 0xA8,
[0034]0x61, 0xA3, 0x92, 0x3C,
[0035]OxOA, 0x06, 0x03, 0x02
[0036]};
[0037]进行解密操作时,与解密数据进行轮密钥加运算操作的96位密钥是通过将变换后轮密钥96位密钥中前64位二进制数不变,后32位二进制数先全部取反,然后再将取反操作的32位中后16位二进制数倒置后获得。
[0038]所述行移位变换运算操作是指将64位的输入数据以每4位作为一个矩阵元素构成一个4*4的矩阵state:
[0039]如果控制信号selectO等于1,矩阵state的第一行循环左移一个半字节,第二行循环左移I个字节,第三行循环左移半个字节,第四行保持不动;
[0040]如果控制信号二进制数selectO等于O,矩阵state的第一行循环右移一个半字节,第二行循环右移I个字节,第三行循环右移半个字节,第四行保持不动。
[0041]所述列混合变换运算操作是指将64位的输入数据以每4位作为一个矩阵元素构成一个4*4的矩阵state,固定矩阵R与矩阵state相乘:[0042]如果控制信号selectO等于O,固定矩阵M为
【权利要求】
1.一种实现Magpie加解密的方法,其特征在于,包括以下几个步骤: 步骤1:将64位明文或64位密文加载至寄存器; 步骤2:将待加/解密数据与96位密钥前64位进行轮密钥加运算获得中间运算结果,依据控制信号对待加/解密数据进行32轮运算; O依据控制信号对中间运算结果进行轮运算操作; 当控制信号selectO为I时,轮运算操作步骤如下: 2)对I)中所述的中间运算结果进行常数加运算; 3)对2)得到的运算结果采用S盒进行字节变换运算; 4)对3)得到的运算结果进行行移位变换运算; 5)对4)得到的运算结果进行列混合变换运算; 6)对5)得到的运算结果进行轮密钥加运算,然后密钥更新; 7)以6)得到的运算结果作为新的中间运算结果进行下一轮运算,如果到达第32轮运算操作,则输出当前运算结果完成加/解密操作,否则返回I); 当控制信号selectO为O时,轮运算操作步骤如下: 8)密钥更新,然后对I)中所述的中间运算结果进行轮密钥加运算; 9)对8)得到的运算结果进行列混合变换运算; 10)对9)得到的运算结果进行行移位变换运算; 11)对10)得到的运算结果采用S盒进行字节变换运算; 12)对11)得到的运算结果进行常数加运算; 13)对12)得到的运算结果作为新的中间运算结果进行下一轮运算,如果到达第32轮运算,则输出当前运算结果完成加/解密操作,否则返回I)。 所述的控制信号为96位密钥的第65位到96位二进制数,其中,96位密钥中第65位到第80位依次作为S盒变换控制信号seleCtl,96位密钥中第81位到第96位均作为行移位、列混合以及轮内模块运算顺序的控制信号selectO,每个控制信号selectl、selectO连续控制两轮轮运算; 所述密钥更新是将96位密钥前64位在每轮运算中做一次S盒变换,后32位保持不变; 所述常数加运算是指将待进行常数加运算的数据的第I位到第8位和第56位到第64位分别与常数加数组RC[i] (0〈=i〈32)的第i个字节进行异或运算,i表示数组RC中的第i个元素,同时表示第i轮运算; RC[i]=RC[31-1], (0〈=i〈32),其数组元素如下: byte RC[32] = {
0x02, 0x03, 0x06, OxOA,
0x3C, 0x92, 0xA3, 0x61,
0xA8, OxCD, OxFE, 0x3B,
0x2C, 0x6E, 0x25, 0x6D,
0x6D, 0x25, 0x6E, 0x2C,
0x3B, OxFE, OxCD, 0xA8,
0x61, 0xA3, 0x92, 0x3C,OxOAj 0x06,0x03,0x02
}; 进行解密操作时,与解密数据进行轮密钥加运算操作的96位密钥是通过将变换后轮密钥96位密钥中前64位二进制数不变,后32位二进制数先全部取反,然后再将取反操作的32位中后16位二进制数倒置后获得。
2.根据权利要求1所述的实现Magpie加解密的方法,其特征在于,所述行移位变换运算操作是指将64位的输入数据以每4位作为一个矩阵元素构成一个4*4的矩阵state: 如果控制信号selectO等于1,矩阵state的第一行循环左移一个半字节,第二行循环左移I个字节,第三行循环左移半个字节,第四行保持不动; 如果控制信号二进制数selectO等于O,矩阵state的第一行循环右移一个半字节,第二行循环右移I个字节,第三行循环右移半个字节,第四行保持不动。
3.根据权利要求2所述的实现Magpie加解密的方法,其特征在于,所述列混合变换运算操作是指将64位的输入数据以每4位作为一个矩阵元素构成一个4*4的矩阵state,固定矩阵R与矩阵state相乘:

如果控制信号selectO等于O,固定矩阵M为
4.根据权利要求1-3任一项所述的实现Magpie加解密方法,其特征在于,所述S盒变换操作受控于控制信号selectl,当控制信号selectl为O时,S盒为{5,e, f, 8,c, I, 2,d, b,4,6,3,O, 7,9,a},当 selectl 为 I 时,S 盒为{c, 5,6,b, 9,O, a, d, 3,e, f, 8,4,7,I, 2},96 位密钥中第65位到第80位依次作为S盒变换控制信号selectl。
【文档编号】H04L9/06GK103746795SQ201310717294
【公开日】2014年4月23日 申请日期:2013年12月23日 优先权日:2013年12月23日
【发明者】李浪, 贺位位, 刘波涛, 邹祎, 许琼方, 刘辉 申请人:衡阳师范学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1