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

>82k81k80)。

所述行移位变换运算操作是指将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密码算法测试向量如下:

Plaintext

key Ciphertext

0123_4567_89AB_CDEF

0123_4567_89AB_CDEF_0123_4567

6080_CCAF_9A77_9036

6080_CCAF_9A77_9036

9C2B_1467_35A8_EDCF_FEDC_195D

0123_4567_89AB_CDEF

A5DE_14CF_3BB5_8740

0876_7877_CB53_381B_77E6_4B65

5641_00CD_1A54_FDE8

5641_00CD_1A54_FDE8

9B76_7B77_139B_BB48_8819_592D

A5DE_14CF_3BB5_8740

代表解密密钥):

按照本发明所提出的方法,利用给出的测试向量,实现者对给定的明文进行加密处

理,

以上结合具体实施例对本发明进行了详细的说明,这些并非构成对本发明的限制。

在不 脱离本发明原理的情况下,本领域的技术人员还可以作出许多变形和

发明的保护范围。

即可得到测试向量中所述的密文。

改进,这些也应属于本

本文标签: 运算密钥进行结果控制