一种新型低资源高效的轻量级Surge分组密码实现方法

文档序号:7808811阅读:290来源:国知局
一种新型低资源高效的轻量级Surge分组密码实现方法
【专利摘要】本发明公开一种新型低资源高效的轻量级Surge分组密码实现方法,Surge分组长度设计为64位,密钥长度有64、80和128位三种,基于SPN结构。密钥采用无扩展方式;轮函数5个模块采用一种新的结合方式,加密顺序依次为常数加、轮密钥加、S盒替换、行移位、列混合变换,最后一轮没有列混合变换。常数加变换模块每轮运算一个轮常数;轮常数选取组合为:高位是0、1、2、3,低位依次选取0到15之间奇、偶、偶、奇数组合,得到的组合数随机固定一个排列。列混合变换模块利用易于硬件实现的(0、1、2、4)组合成矩阵,在有限域GF(24)上构造硬件实现友好型矩阵。实验结果表明相对目前SPN结构的轻量级密码,其占用面积资源更小,同时加密性能好,能抗已知攻击。
【专利说明】一种新型低资源高效的轻量级Surge分组密码实现方法

【技术领域】
[0001] 本发明涉及一种新型低资源高效的轻量级Surge分组密码实现方法。

【背景技术】
[0002] 分组密码算法使用同一个密钥来进行加解密,运行速度快且易于实现,容易实现 同步,一个密码组的传输错误不会影响到其它分组,丢失一个密文组不会对随后组的解密 产生影响,即传输错误不会扩散,因此广泛运用于各种软硬件安全系统。随着物联网技术的 发展与普及,由于物联网中许多设备的计算能力较低,存储空间小,资源有限,比如智能卡、 RFID标签、传感器节点、付费电视卡、智能电表卡等;在这些设备中传统的分组加密算法不 能得到很好的应用。
[0003] 目前分组密码主要有两种结构:分别是以DES为代表的Feistel结构和以AES为 代表的SPN结构。DES为早期的分组加密标准,Feistel结构由于DES的公布而广为人知, 已被许多分组密码所采用。Feistel结构的最大优点是容易保证加解密相似,这一点在实现 中尤其重要。随着计算能力的快速发展,DES已不再安全。由此,1997年9月,美国国家标 准与技术研究所公开征集高级加密算法(AES)以替代DES。2000年10月比利时密码学家 Daemen和Ri jmen设计的Ri jndael算法最终胜出。它采用了结构非常清晰的代替-置换 SPN结构,每一轮有混淆层和扩散层组成。SPN结构的最大优点是能够从理论上给出最低差 分特征概率和最佳线性逼近优势的界,即密码对差分分析和线性分析是可证明安全的。SPN 结构的扩散性好。
[0004] 目前已有一些轻量级分组密码算法,典型代表如PRESENT、LED、KLEIN、LBlock、 PRINCE等。目前轻量级分组密码算法存在的问题包括个方面:一是为了保证安全性而资源 占用仍然过大、加密性能较低,不便于在资源约束的智能卡、传感器等设备上实现;二是为 了降低资源占用而牺牲安全性和加密效率,因此设计出来的轻量级加密算法过于简单,容 易被成功攻击。


【发明内容】

[0005] 本发明提供了一种新型低资源高效的轻量级Surge分组密码实现方法,其目的在 于,克服现有技术中的轻量级分组密码算法资源占用多、效率低且加密性能低且易受攻击 的问题。
[0006] 一种新型低资源高效的轻量级Surge分组密码实现方法,包括以下步骤:
[0007] 步骤1 :将64-bit明文/密文加载至寄存器,进行加/解密运算;
[0008] 步骤2:将所述待加/解密数据按以下步骤进行Νκ轮轮运算操作,其中密钥长度 为64-bit时,Ν κ取值为32 ;密钥长度为80-bit时,Νκ取值为36 ;密钥长度为128-bit时, Νκ取值为40 ;
[0009] 若输入待加密数据进行加密运算操作,则在第一轮至第NK_1轮轮运算中的每一轮 轮运算中依次对待加密数据进行常数加变换、轮密钥加变换、S盒替换变换、行移位变换及 列混合变换,以列混合变换后得到的数据作为下一轮的待加密数据;
[0010] 最后一轮轮运算过程为对上一轮得到的待加密数据依次进行常数加变换、轮密钥 加变换、S盒替换变换以及行移位变换,完成加密操作;
[0011] 若输入待解密数据进行解密操作,则第一轮轮运算中对待解密数据依次进行行移 位逆变换、S盒替换逆变换、轮密钥加变换及常数加逆变换,以常数加逆变换后得到的数据 作为下一轮的待解密数据;
[0012] 在第二轮至第Νκ轮轮运算中的每一轮轮运算中依次对待解密数据进行列混合逆 变换、行移位逆变换、S盒替换逆变换、轮密钥加变换及常数加逆变换,以常数加逆变换后得 到的数据作为下一轮的待解密数据,完成解密操作;
[0013] 所述列混合变换和列混合逆变换、行移位变换和行移位逆变换、S盒替换变换和S 盒替换逆变换以及常数加变换和常数加逆变换均互为逆运算。
[0014] 所述加密过程具体如下:
[0015] 步骤2. 1 :将待加密的数据进行常数加变换;
[0016] 步骤2. 2 :对步骤2. 1得到的运算结果与输入轮密钥进行轮密钥加变换;
[0017] 步骤2. 3 :对步骤2. 2得到的运算结果进行S盒替换变换;
[0018] 步骤2. 4 :对步骤2. 3得到的运算结果进行行移位变换;
[0019] 步骤2. 5 :对步骤2. 4得到的运算结果进行列混合变换;
[0020] 步骤2. 6 :对步骤2. 5得到的运算结果作为下一轮的待加密数据,如果到达第Νκ-1 轮运算,则进入步骤3,否则返回步骤2. 1 ;
[0021] 步骤3 :进行最后一轮加密运算;
[0022] 步骤3. 1将待加密的数据进行常数加变换;
[0023] 步骤3. 2对步骤3. 1得到的运算结果与输入轮密钥进行轮密钥加变换;
[0024] 步骤3. 3对步骤3. 2得到的运算结果进行行移位变换;
[0025] 步骤3. 4对步骤3. 3得到结果输出,完成加密操作。
[0026] 将所述待加密/解密的64-bit数据依次从高位到低位分为16个单元,每个单元 长度为 4-bit,分别为 state。、state" ......、state15 ;
[0027] 将states state8分别与第i (K i < Νκ)轮的轮常数字节高位进行异或运算得 到stated、state8',将state 4、state12分别与第i轮的轮常数字节低位进行异或运算得到 state/、state12',然后将各单元进行异或运算的结果替换各原单元数据,得到运算结果;
[0028] 其中,轮常数RC具体描述如下:
[0029] 每一轮常数固定不变,轮常数RC每个数为一个字节,并以十六进制数表示。
[0030] 1)当密钥长度为64-bit时,轮常数RC取值有32个数,32个轮常数排列如下:
[0031] RC[32] = {0x22,0x35,0x07,0x20,OxOd,0x39,0x3d,Oxle,Oxla,0x2e,0x31, 0x14, 0x37, 0x26,0x33,0x12,0x2a,0x18, OxOf,0x24, 0x05, Oxlc,0x16,0x2c,0x3f,0x10, 0x03,0x0b,0x09,0x01,0x28,0x3b}〇
[0032] 2)当密钥长度为80-bit时,轮常数RC取值包括当密钥长度为64-bit时的32个 数,还包括0x36,0x30,0x34,0x32这4个数,共36个数,36个轮常数排列如下:
[0033] RC[36] = {0x22,0x35,0x07,0x20,0x0d,0x39,0x3d,Oxle,Oxla,0x2e,0x31, 0x14, 0x37,0x26,0x33,0x12,0x2a,0x18,0x0f,0x24, 0x05, Oxlc,0x16,0x2c,0x3f,0x10, 0x03,OxOb,0x09,0x01,0x28,0x3b,0x36,0x30,0x34,0x32}。
[0034] 3)当密钥长度为128-bit时,轮常数RC取值包括当密钥长度为80-bit时的36个 数,还包括0x38,0x3c,0x3e,0x3a这4个数,共40个数,40个轮常数排列如下:
[0035] RC[40] = {0x22,0x35,0x07,0x20,OxOd,0x39,0x3d,Oxle,Oxla,0x2e,0x31, 0x14,0x37,0x26,0x33,0x12,0x2a,0x18,OxOf,0x24,0x05,Oxlc,0x16,0x2c,0x3f,0x10, 0x03,0x0b,0x09,0x01,0x28,0x3b,0x36,0x30,0x34,0x32,0x38,0x3c,0x3e,0x3a}〇
[0036] 所述轮密钥加变换,是指采用一种无密钥扩展方式得到每一轮的轮密钥,通过如 下方法构造实现;
[0037] 密钥为64-bit时,原始密钥分为16个单元,每一个单元4-bit,分别为key。、 key!、......> key15 ;
[0038] 密钥为80-bit时,原始密钥分为20个单元,每一个单元4-bit,分别为key。、 key!、......、key19;
[0039] 密钥为128-bit时,原始密钥分为32个单元,每一个单元4-bit,分别为key。、 key!、......> key31 ;
[0040] 轮密钥加变换实现方法:将64-bit明文或每一轮中间值与每一轮轮密钥64-bit 进行异或运算;其中,所述每一轮轮密钥构造规则为:
[0041] 1)密钥长为64-bit时,每一轮的轮密钥就是64-bit原始密钥,轮密钥 Keyjl彡i彡Νκ)如公式(1)所示:

【权利要求】
1. 一种新型低资源高效的轻量级Surge分组密码实现方法,其特征在于,包括以下步 骤: 步骤1 :将64-bit明文/密文加载至寄存器,进行加/解密运算; 步骤2 :将所述待加/解密数据按以下步骤进行Νκ轮轮运算操作,其中密钥长度为 64-bit时,Νκ取值为32 ;密钥长度为80-bit时,Νκ取值为36 ;密钥长度为128-bit时,Νκ 取值为40 ; 若输入待加密数据进行加密运算操作,则在第一轮至第Νκ-1轮轮运算中的每一轮轮运 算中依次对待加密数据进行常数加变换、轮密钥加变换、S盒替换变换、行移位变换及列混 合变换,以列混合变换后得到的数据作为下一轮的待加密数据; 最后一轮轮运算过程为对上一轮得到的待加密数据依次进行常数加变换、轮密钥加变 换、S盒替换变换以及行移位变换,完成加密操作; 若输入待解密数据进行解密操作,则第一轮轮运算中对待解密数据依次进行行移位逆 变换、S盒替换逆变换、轮密钥加变换及常数加逆变换,以常数加逆变换后得到的数据作为 下一轮的待解密数据; 在第二轮至第Νκ轮轮运算中的每一轮轮运算中依次对待解密数据进行列混合逆变换、 行移位逆变换、S盒替换逆变换、轮密钥加变换及常数加逆变换,以常数加逆变换后得到的 数据作为下一轮的待解密数据,完成解密操作; 所述列混合变换和列混合逆变换、行移位变换和行移位逆变换、S盒替换变换和S盒替 换逆变换以及常数加变换和常数加逆变换均互为逆运算。
2. 根据权利要求1所述的新型低资源高效的轻量级Surge分组密码实现方法,其特征 在于,将所述待加密/解密的64-bit数据依次从高位到低位分为16个单元,每个单元长度 为 4_bit,分另lj为 state0、state" ......、state15 ; 常数加变换操作是将stat%、state8分别与第i轮的轮常数字节高位进行异或运算得 到stated、state8',将state4、state12分别与第i轮的轮常数字节低位进行异或运算得到 state/、state12',其中,1彡i彡Νκ ;然后将各单元进行异或运算的结果替换各原单元数 据,得到运算结果; 其中,轮常数RC具体描述如下: 每一轮常数固定不变,轮常数RC每个数为一个字节,并以十六进制数表示。 1) 当密钥长度为64-bit时,轮常数RC取值有32个数,32个轮常数排列如下: RC[32] = {0x22,0x35,0x07,0x20,OxOd,0x39,0x3d,Oxle,Oxla,0x2e,0x31,0x14, 0x37,0x26,0x33,0x12,0x2a,0x18,OxOf,0x24,0x05,Oxlc,0x16,0x2c,0x3f,0x10,0x03, 0x0b,0x09,0x01,0x28,0x3b}。 2) 当密钥长度为80-bit时,轮常数RC取值包括当密钥长度为64-bit时的32个数,还 包括0x36,0x30,0x34,0x32这4个数,共36个数,36个轮常数排列如下: RC [36] = {0x22,0x35,0x07,0x20,0x0d,0x39,0x3d,Oxle,Oxla,0x2e,0x31,0x14, 0x37,0x26,0x33, 0x12,0x2a,0x18,0x0f,0x24, 0x05, Oxlc,0x16,0x2c,0x3f,0x10,0x03, 0x0b,0x09,0x01,0x28,0x3b,0x36,0x30,0x34,0x32}? 3) 当密钥长度为128-bit时,轮常数RC取值包括当密钥长度为80-bit时的36个数, 还包括0x38,0x3c,0x3e,0x3a这4个数,共40个数,40个轮常数排列如下:

4.根据权利要求1所述的新型低资源高效的轻量级Surge分组密码实现方法,其特征 在于,所述列混合变换操作是通过构造硬件实现友好型列混合变换矩阵M,并将需要进行列 混合变换的16个单元数据变换为4 X 4矩阵后,再将友好型列混合变换矩阵Μ与4 X 4矩阵 在有限域GF(24)上进行乘法变换; 其中,友好型列混合变换矩阵Μ利用易于硬件实现的(0、1、2、4)组合矩阵m,经过有限 域GF(24)上4次方运算构造出来,构造公式如公式(6):
【文档编号】H04L9/06GK104065474SQ201410333577
【公开日】2014年9月24日 申请日期:2014年7月14日 优先权日:2014年7月14日
【发明者】李浪, 刘波涛, 邓运员, 余孝忠, 杜国权, 曾婷 申请人:衡阳师范学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1