发明名称 一种轻量级Surge分组密码实现方法
摘要 本发明公开一种新型低资源高效的轻量级Surge分组密码实现方法,Surge分组长度设计为64位,密钥长度有64、80和128位三种,基于SPN结构。密钥采用无扩展方式;轮函数5个模块采用一种新的结合方式,加密顺序依次为常数加、轮密钥加、S盒替换、行移位、列混合变换,最后一轮没有列混合变换。常数加变换模块每轮运算一个轮常数;轮常数选取组合为:高位是0、1、2、3,低位依次选取0到15之间奇、偶、偶、奇数组合,得到的组合数随机固定一个排列。列混合变换模块利用易于硬件实现的(0、1、2、4)组合成矩阵,在有限域GF(2<sup>4</sup>)上构造硬件实现友好型矩阵。实验结果表明相对目前SPN结构的轻量级密码,其占用面积资源更小,同时加密性能好,能抗已知攻击。
申请公布号 CN104065474B 申请公布日期 2015.04.08
申请号 CN201410333577.4 申请日期 2014.07.14
申请人 衡阳师范学院 发明人 李浪;刘波涛;邓运员;余孝忠;杜国权;曾婷
分类号 H04L9/06(2006.01)I 主分类号 H04L9/06(2006.01)I
代理机构 长沙市融智专利事务所 43114 代理人 黄美成
主权项 一种轻量级Surge分组密码实现方法,其特征在于,包括以下步骤:步骤1:将64‑bit明文/密文加载至寄存器,进行加/解密运算;步骤2:将所述待加/解密数据按以下步骤进行N<sub>R</sub>轮轮运算操作,其中密钥长度为64‑bit时,N<sub>R</sub>取值为32;密钥长度为80‑bit时,N<sub>R</sub>取值为36;密钥长度为128‑bit时,N<sub>R</sub>取值为40;若输入待加密数据进行加密运算操作,则在第一轮至第N<sub>R</sub>‑1轮轮运算中的每一轮轮运算中依次对待加密数据进行常数加变换、轮密钥加变换、S盒替换变换、行移位变换及列混合变换,以列混合变换后得到的数据作为下一轮的待加密数据;最后一轮轮运算过程为对上一轮得到的待加密数据依次进行常数加变换、轮密钥加变换、S盒替换变换以及行移位变换,完成加密操作;若输入待解密数据进行解密操作,则第一轮轮运算中对待解密数据依次进行行移位逆变换、S盒替换逆变换、轮密钥加变换及常数加逆变换,以常数加逆变换后得到的数据作为下一轮的待解密数据;在第二轮至第N<sub>R</sub>轮轮运算中的每一轮轮运算中依次对待解密数据进行列混合逆变换、行移位逆变换、S盒替换逆变换、轮密钥加变换及常数加逆变换,以常数加逆变换后得到的数据作为下一轮的待解密数据,完成解密操作;所述列混合变换和列混合逆变换、行移位变换和行移位逆变换、S盒替换变换和S盒替换逆变换以及常数加变换和常数加逆变换均互为逆运算;将所述待加密/解密的64‑bit数据依次从高位到低位分为16个单元,每个单元长度为4‑bit,分别为state<sub>0</sub>、state<sub>1</sub>、……、state<sub>15</sub>;常数加变换操作是将state<sub>0</sub>、state<sub>8</sub>分别与第i轮的轮常数字节高位进行异或运算得到state<sub>0</sub>’、state<sub>8</sub>’,将state<sub>4</sub>、state<sub>12</sub>分别与第i轮的轮常数字节低位进行异或运算得到state<sub>4</sub>’、state<sub>12</sub>’,其中,1≤i≤N<sub>R</sub>;然后将各单元进行异或运算的结果替换各原单元数据,得到运算结果;其中,轮常数RC具体描述如下:每一轮常数固定不变,轮常数RC每个数为一个字节,并以十六进制数表示;1)当密钥长度为64‑bit时,轮常数RC取值有32个数,32个轮常数排列如下:RC[32]={0x 22,0x 35,0x 07,0x 20,0x 0d,0x 39,0x 3d,0x 1e,0x 1a,0x 2e,0x 31,0x 14,0x 37,0x 26,0x 33,0x 12,0x 2a,0x 18,0x 0f,0x 24,0x 05,0x 1c,0x 16,0x 2c,0x 3f,0x 10,0x 03,0x 0b,0x 09,0x 01,0x 28,0x 3b};2)当密钥长度为80‑bit时,轮常数RC取值包括当密钥长度为64‑bit时的32个数,还包括0x 36,0x 30,0x 34,0x 32这4个数,共36个数,36个轮常数排列如下:RC[36]={0x 22,0x 35,0x 07,0x 20,0x 0d,0x 39,0x 3d,0x 1e,0x 1a,0x 2e,0x 31,0x 14,0x 37,0x 26,0x 33,0x 12,0x 2a,0x 18,0x 0f,0x 24,0x 05,0x 1c,0x 16,0x 2c,0x 3f,0x 10,0x 03,0x 0b,0x 09,0x 01,0x 28,0x 3b,0x 36,0x 30,0x 34,0x 32};3)当密钥长度为128‑bit时,轮常数RC取值包括当密钥长度为80‑bit时的36个数,还包括0x 38,0x 3c,0x 3e,0x 3a这4个数,共40个数,40个轮常数排列如下:RC[40]={0x 22,0x 35,0x 07,0x 20,0x 0d,0x 39,0x 3d,0x 1e,0x 1a,0x 2e,0x 31,0x 14,0x 37,0x 26,0x 33,0x 12,0x 2a,0x 18,0x 0f,0x 24,0x 05,0x 1c,0x 16,0x 2c,0x 3f,0x 10,0x 03,0x 0b,0x 09,0x 01,0x 28,0x 3b,0x 36,0x 30,0x 34,0x 32,0x 38,0x 3c,0x 3e,0x 3a};所述轮密钥加变换,是指采用一种无密钥扩展方式得到每一轮的轮密钥,通过如下方法构造实现;密钥为64‑bit时,原始密钥分为16个单元,每一个单元4‑bit,分别为key<sub>0</sub>、key<sub>1</sub>、……、key<sub>15</sub>;密钥为80‑bit时,原始密钥分为20个单元,每一个单元4‑bit,分别为key<sub>0</sub>、key<sub>1</sub>、……、key<sub>19</sub>;密钥为128‑bit时,原始密钥分为32个单元,每一个单元4‑bit,分别为key<sub>0</sub>、key<sub>1</sub>、……、key<sub>31</sub>;轮密钥加变换实现方法:将64‑bit明文或每一轮中间值与每一轮轮密钥64‑bit进行异或运算;其中,所述每一轮的轮密钥构造规则为:1)密钥长为64‑bit时,每一轮的轮密钥就是64‑bit原始密钥,轮密钥Key<sub>i</sub>(1≤i≤N<sub>R</sub>)如公式(1)所示:<img file="FDA0000654760300000021.GIF" wi="1035" he="309" />2)密钥长为80‑bit,当i为奇数次轮运算时,轮密钥为原始密钥前64‑bit;当i为偶数次轮运算时,轮密钥为原始密钥后64‑bit,轮密钥Key<sub>i</sub>(1≤i≤N<sub>R</sub>)如公式(2)与(3)所示:当i为奇数次轮运算时,轮密钥<img file="FDA0000654760300000031.GIF" wi="976" he="310" />当i为偶数次轮运算时,轮密钥<img file="FDA0000654760300000032.GIF" wi="1004" he="310" />3)密钥长为128‑bit,当i为奇数次轮运算时,轮密钥为原始密钥前64‑bit,当i为偶数次轮运算时,轮密钥为原始密钥后64‑bit,轮密钥Key<sub>i</sub>(1≤i≤N<sub>R</sub>)如公式(4)与(5)所示:当i为奇数次轮运算时,轮密钥<img file="FDA0000654760300000033.GIF" wi="1006" he="308" />当i为偶数次轮运算时,轮密钥<img file="FDA0000654760300000034.GIF" wi="992" he="306" />所述列混合变换操作是通过构造硬件实现友好型列混合变换矩阵M,并将需要进行列混合变换的16个单元数据变换为4×4矩阵后,再将友好型列混合变换矩阵M与4×4矩阵在有限域GF(2<sup>4</sup>)上进行乘法变换;其中,友好型列混合变换矩阵M利用易于硬件实现的(0、1、2、4)组合矩阵m,经过有限域GF(2<sup>4</sup>)上4次方运算构造出来,构造公式如公式(6):<img file="FDA0000654760300000035.GIF" wi="1127" he="313" />上式中的数据为16进制数据。
地址 421002 湖南省衡阳市珠晖区衡花路16号