CN105959107B - 一种新型高安全的轻量级sfn分组密码实现方法 - Google Patents
一种新型高安全的轻量级sfn分组密码实现方法 Download PDFInfo
- Publication number
- CN105959107B CN105959107B CN201610466022.6A CN201610466022A CN105959107B CN 105959107 B CN105959107 B CN 105959107B CN 201610466022 A CN201610466022 A CN 201610466022A CN 105959107 B CN105959107 B CN 105959107B
- Authority
- CN
- China
- Prior art keywords
- data
- wheel
- computing
- round
- carries out
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
- H04L63/0485—Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/083—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
- H04L9/0833—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种新型高安全的轻量级SFN分组密码实现方法,设计了一种新的密码模式,该模式下,包含两种分组密码典型的结构:SP网络结构与Feistel网络结构;通过原始密钥的最后32位作为控制信号,控制选择算法两种结构中一种结构进行加/解密,同时另一种结构进行密钥扩展。算法内实现一个密码结构既可以用于加/解密运算又可以用于密钥扩展运算,有232不同运算方式。相比固定密码结构进行加/解密与密钥扩展迭代运算,对于一些攻击方法而言,可以提高232的防御难度系数,满足不同用户多层次的安全性需求。SFN具有灵活性高,扩展性好,高安全性以及低资源优点,有较好的应用前景。
Description
技术领域
本发明涉及一种新型高安全的轻量级SFN分组密码实现方法。
背景技术
近年来,低端嵌入式设备普及到生活的每一个角落,而这低端嵌入式设备只有有限的计算能力、存储空间和能量来源而被称为资源受限设备,简称受限设备。这类受限设备的应用越来越广泛,而许多应用会涉及一些敏感的金融交易、健康监控或生物统计数据,为了给这类受限设备所存取、传输的信息提供合适的安全保护,轻量级密码运用而生。相关领域的学者也开始对轻量级密码进行大量研究,这些研究主要集中在轻量级密码的设计、安全性分析以及实现性能评估等方面。
分组密码是将明文消息编码序列化分成等长分组,然后每组分别在密钥的作用下变换成等长的输出密文序列。分组密码执行速度快,很适合硬件实现,在密码领域的使用频率最大。分组密码出现较早,设计技术成熟,具有典型的安全结构,分组密码的加解密算法结构非常规整,这使得轻量级分组密码的设计相对较容易。
目前,在轻量级分组密码领域中,已经存在一些轻量级分组密码算法,典型的代表如PRESENT,LBlock,Twine,KLEIN,MIBS,LED,PRINCE,Piccolo,ITUbee,PRINTcipher,RECTANGLE等等。
目前轻量级分组密码算法存在如下的问题:(1)目前轻量级分组算法存在安全性不高的问题。最近很多研究表明轻量级分组密码算法不具备抵抗功耗攻击以及多种攻击技术相结合的旁路攻击方法。另外有一些轻量级分组密码算法为了追求更小的实现资源面积,将密钥扩展运算简单化,或者是不进行密钥扩展运算。这样设计对于算法安全更是存在隐患。(2)现有专用密码芯片中大多只实现了一种固定密码模式的密码算法,这种实现方式难以满足不同用户多层次的安全性需求。虽然对不同密码算法进行重构设计,在设计过程中,提取出不同算法之间的相同或相似的操作,但不同算法之间有很多不同之处,从而会造成很多面积资源的开销,使得硬件实现成本高,并且使性能效率也在很大程度上降低了。(3)在分组密码算法中,具有两种典型的密码结构。一种是SP网络结构,该结构对称性相对较差,加解密不一致;在实现过程中,需要将加密模块与解密模块一起实现,从而实现的资源较多,但该结构算法扩散速度快,一轮迭代可以改变全部分组数据,安全性相对比较高。另一种是Feistel网路结构,该结构加解密一致,加密模块与解密模块是同一个模块,实现资源相对较少;但该结构密码算法扩散速度慢,一轮迭代只能改变一半的分组数据,安全性相对较低。在现有分组密码算法中,将这两种结构合理的组合起来。出现如下几种情况:一是分组加密算法的整体结构是Feistel网络结构,而轮函数是SP网络结构;二是分组加密算法的整体结构是SP网络结构,轮函数是SP网络结构;三是分组加密算法的整体结构是Feistel网络结构,轮函数是Feistel网络结构;四是分组加密算法的整体结构是SP网络结构,轮函数是Feistel网络结构。如果应用不同的场合,只能设计一个密码多个算法,无法做到一个密码一个算法来实现,从而浪费大量的软硬件资源。
发明内容
本发明提供了一种新型高安全的轻量级SFN分组密码实现方法,其目的在于,克服现有轻量级分组密码算法技术存在的安全性不高,密钥扩展运算相对简单;灵活性不高,在专用密码芯片中只能实现一种固定密码模式的密码算法,难以满足不同用户多层次的安全性需求的问题。
一种新型高安全的轻量级SFN分组密码实现方法,首先,将密钥划分成待扩展密钥数据和轮运算过程的控制信号数据;其次,依据轮运算过程控制信号分别对待扩展密钥和待加/解密数据进行密钥扩展和数据加/解密,每一轮扩展后的密钥用于下一轮数据加/解密,直到完成所有轮数的轮运算;最后,输出密文/明文,完成加/解密操作;
所述待扩展密钥数据长度与待加/解密数据长度相同,所述轮运算过程的控制信号数据长度与轮运算次数相同,依次从控制信号数据中选取一位作为一轮轮运算控制信号;
当轮运算过程控制信号为1时,待扩展密钥选择SP网络结构的轮运算函数进行密钥扩展运算,待加/解密数据选择Feistel网络结构的轮运算函数进行加/解密运算;
当轮运算过程控制信号为0时,待扩展密钥选择Feistel网络结构的轮运算函数进行密钥扩展运算,待加/解密数据选择SP网络结构的轮运算函数进行加/解密运算。
在轮运算中对所述待扩展密钥进行密钥扩展的具体过程如下,密钥扩展进行32轮操作:
当轮运算控制信号select为0时,密钥扩展轮运算步骤如下:
1)将64位待扩展密钥数据划分为前32位数据与后32位数据;
2)对1)获得的前32位数据与轮常数进行常数加运算;
3)对2)得到的运算结果进行S1盒字节替换运算;
4)对3)得到的运算结果进行P置换运算;
5)对4)得到的运算结果进行S2盒字节替换运算;
6)对5)得到的运算结果与1)获得的后32位数据进行异或运算;
7)对6)得到的运算结果作为下一轮前32位数据,并将1)获得的前32数据作为下一轮后32位数据,得到轮密钥,即获得下一轮64位待扩展密钥数据,若轮运算的次数达到设定次数,则结束密钥扩展,否则,依据轮运算控制信号,进行下一轮密钥扩展运算;
当轮运算控制信号select为1时,密钥扩展轮运算步骤如下:
8)将64位待扩展密钥数据前后各32位数据相互调换位置;
9)对8)所述调换位置后的待扩展密钥数据与轮常数进行常数加运算;
10)对9)得到的运算结果进行S1盒字节替换运算;
11)对10)得到的运算结果进行行移位变换运算;
12)对11)得到的运算结果进行列混合变换运算,得到轮密钥;
13)对12)得到的运算结果作为下一轮64位待扩展密钥数据,若轮运算的次数达到设定次数,则结束密钥扩展,否则,依据轮运算控制信号,进行下一轮密钥扩展运算。
在轮运算过程中对待加密数据进行加密的具体过程如下,加密进行32轮操作:
当轮运算控制信号select为0时,加密轮运算步骤如下:
14)将64位待加密数据的前后各32位数据相互调换位置;
15)对14)所述调换位置的待加密数据与轮密钥进行轮密钥加运算;
16)对15)得到的运算结果进行S1盒字节替换运算;
17)对16)得到的运算结果进行行移位变换运算;
18)对17)得到的运算结果进行列混合变换运算;
19)对18)得到的运算结果作为下一轮加密轮运算中的64位待加密数据;
若轮运算的次数达到设定次数,则进入步骤27),否则,依据轮运算控制信号,进行下一轮加密操作运算;
当轮运算控制信号select为1时,加密轮运算步骤如下:
20)将64位加密数据分为前32位数据与后32位数据;
21)对20)所述的前32位数据与轮密钥前32位进行轮密钥加运算;
22)对21)得到的运算结果进行S1盒字节替换运算;
23)对22)得到的运算结果进行P置换运算;
24)对23)得到的运算结果进行S2盒字节替换运算;
25)对24)得到的运算结果与20)得到的后32位数据进行异或运算;
26)对25)得到的运算结果作为下一轮加密轮运算的待加密数据的前32位数据,将20)得到的前32数据作为下一轮加密轮运算的待加密数据的后32位数据,得到下一轮64位待加密数据;若轮运算的次数达到设定次数,则进入27),否则,依据轮运算控制信号,进行下一轮加密运算;
27)将所述经过32轮运算待加密64位数据前后各32位数据相互调换位置;
28)对27)所述调换位置后的待加密数据与最后一轮密钥扩展轮运算得到的轮密钥进行轮密钥加运算;
29)对28)得到的运算结果作为密文,则加密运算操作结束;
加密轮运算过程中,第一轮加密轮运算所使用的轮密钥为初始密钥的前64位数据,从第二轮开始依次为每一轮密钥扩展轮运算获得的轮密钥。
将密钥扩展轮运算得到的32个轮密钥逆序用于解密轮运算过程,对待解密数据进行解密,具体过程如下,解密进行32轮操作:
30)将64位待解密数据与最后一轮密钥扩展轮运算得到轮密钥进行轮密钥加运算;
31)将30)得到的结果依据轮运算控制信号进行解密轮运算;
当轮运算控制信号select为0时,解密轮运算步骤如下:
32)将进行轮运算的64位待解密数据前后各32位数据相互调换位置;
33)对32)所述调换位置的待解密数据进行列混合逆运算;
34)对33)得到的运算结果进行行移位逆运算;
35)对34)得到的运算结果进行S1盒字节替换逆运算;
36)对35)得到的运算结果与轮密钥进行轮密钥加运算;
37)对36)得到的运算结果作为下一轮64位待解密数据;若轮运算的次数达到设定次数,则进入步骤45),否则,依据轮运算控制信号,进行下一轮解密轮运算;
当轮运算控制信号select为1时,解密轮运算步骤如下:
38)将进行轮运算的64位待解密数据分为前32位数据与后32位数据;
39)对38)所述的前32位数据与轮密钥前32位进行轮密钥加运算;
40)对39)得到的运算结果进行S1盒字节替换运算;
41)对40)得到的运算结果进行P置换运算;
42)对41)得到的运算结果进行S2盒字节替换运算;
43)对42)得到的运算结果与38)所述的后32位数据进行异或运算;
44)对43)得到的运算结果作为下一轮解密轮运算的待解密数据前32位数据,将38)得到的前32位数据作为下一轮解密轮运算的待解密数据的后32位数据,得到下一轮64位待解密数据;若轮运算的次数达到设定次数,则进入步骤45),否则,依据轮运算控制信号,进行下一轮解密轮运算;
45)将所述经过32轮运算待解密64位数据前后各32位数据相互调换位置;
46)对45)得到的运算结果作为明文,则解密运算操作结束;
解密轮运算过程中,从第一轮到倒数第二轮解密轮运算所使用的轮密钥依次为密钥扩展得到的倒数第二个轮密钥到第一个轮密钥,最后一轮解密轮运算所使用的轮密钥为初始密钥的前64位数据。
加密过程使用的轮密钥与解密过程使用的轮密钥的顺序互为逆序。
即加密过程中使用的第一个轮密钥为解密过程中最后一次使用的轮密钥,均为原始密钥的前64位数据;加密过程中使用的第二个轮密钥为解密过程中倒数第二次使用的轮密钥,以此类推。
所述P置换运算是对数据中每一比特位位置交换操作:
输入32位数据从高位到低位表示为:p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31;
经P置换将数据比特位位置交换;
以p0,p4,p8,p12,p16,p20,p24,p28,p1,p5,p9,p13,p17,p21,p25,p29,p2,p6,p10,p14,p18,p22,p26,p30,p3,p7,p11,p15,p19,p23,p27,p31高位到低位顺序数据输出。
有益效果
本发明提供了一种新型高安全的轻量级SFN分组密码实现方法,设计了一种新的密码运算模式,该模式下,包含两种分组密码典型的结构,一种是SP网络结构,另一种是Feistel网络结构。SFN密码分组长度为64位,密钥长度为96位(其中32位为控制位),迭代32轮。算法中输入的原始密钥最后32位是控制位,控制选择算法两种结构中一种结构进行加/解密,同时另一种结构进行密钥扩展。当一轮控制信号select为1时,选择SP网络结构进行密钥扩展运算,而Feistel网络结构进行加/解密运算。当一轮控制信号select为0时,选择SP网络结构进行加/解密运算,而Feistel网络结构进行密钥扩展运算。本方法实现了一个密码结构既可以用于加/解密又可以进行密钥扩展,从而不会在密码中出现简单的密钥扩展运算,同时在SP网络结构与Feistel网络结构中各含有四个运算模块,保证算法加/解密模块与密钥扩展模块运算速度一致,使得算法具有高安全以及高性能。
算法中通过原始密钥的最后32位为控制位,控制选择算法两种结构中一种结构进行加/解密,同时另一种结构进行密钥扩展,有232=4294697296不同的运算方式,相比固定密码结构进行加/解密与密钥扩展迭代运算,对于一些攻击方法而言,可以提高232的防御难度系数。由于这两种密码结构的扩散速度不同,选择不同的运算方式,出现不同的扩散程度,这种方式可以满足不同用户多层次的安全性需求。
相比SP网络结构与Feistel网络结构两种不同的算法之间进行重构设计,SFN算法设计可以节约很多硬件实现面积资源的开销,而且性能效率方面也比算法之间进行重构设计好很多。SFN算法通过密钥控制,可以在SP网络结构与Feistel网络结构之间相互调换加/解密结构,在算法真正做到整体上既可以用SP网络结构加/解密又可以用Feistel网络结构加/解密;相比目前分组密码算法只是简单将这两种结构组合起来,但整体上只是SP网络结构或者是Feistel网络结构时,如果应用不同的场合,只能设计一个密码多个算法。而SFN密码算法做到将这两种密码结构整合在一起,利用这两种结构的扩散速度不同,做到一个密码一个算法来实现,不需要一个密码算法当中出现多种密钥长度的不同算法,从而节约大量的软硬件资源;并且使得密码算法更有灵活性,扩展性。
附图说明
图1为本发明所述方法的加密过程与密钥扩展过程示意图;
图2为本发明所述行移位变换运算关系图;
图3为本发明所述方法的解密过程示意图;
图4为本发明所述行移位变换逆运算关系图。
具体实施方式
下面将结合附图和实施例对本发明做进一步的说明。
一种新型高安全的轻量级SFN分组密码实现方法,SFN算法分组长度为64位,密钥长度为96位(32位为控制位),包含32轮运算。SFN算法中包含两种结构:一种是SP网络结构,另一种结构是Feistel网络结构。
算法中输入原始密钥的最后32位是控制位,控制选择算法两种结构中一种结构进行加/解密运算,同时另一种结构进行密钥扩展运算。
在SP网络结构中,加密轮函数模块中包含:轮密钥加(AddRoundKey),S1盒替换(SubCells1),行移位(ShiftRows),列混合(MixColumns)四个模块;密钥扩展轮函数模块中包含:常数加(AddConstants),S1盒替换(SubCells1),行移位(ShiftRows),列混合(MixColumns)四个模块。
在Feistel网络结构中,加密轮函数模块中包含:轮密钥加(AddRoundKey),S1盒替换(SubCells1),P置换(Permutation),S2盒替换(SubCells2)四个模块;密钥扩展轮函数模块中包含:常数加(AddConstants),S1盒替换(SubCells1),P置换(Permutation),S2盒替换(SubCells2)四个模块。
SFN算法中32位密钥控制位,选择SP网络结构与Feistel网络结构中一种进行加/解密与密钥扩展,其中每一位为一轮控制信号(select)。具体运算过程描述为:当控制信号select=1时,选择是SP网络结构进行密钥扩展运算,而Feistel网络结构进行加/解密运算。当控制信号select=0时,选择是SP网络结构进行加/解密运算,而Feistel网络结构进行密钥扩展运算。
SFN密码算法各个模块的运算单元为4位,算法中64位每一轮值都可以表示为state(64),分为16个单元,分别表示为state0(4)、state1(4)、……、state15(4)。算法96位密钥,密钥前64位是作为算法轮密钥段,算法中每一轮的轮密钥表示为rkey(64);轮密钥进行密钥扩展运算与加解密运算,则同样分为16个单元,分别为rkey0(4)、rkey1(4)、……、rkey15(4);密钥后32位作为控制段,控制密钥表示为ckey(32),其中每一位为一轮运算的控制信号。
SFN算法中SP网络结构与Feistel网络结构的加密流程与密钥扩展运算流程如图1所示。SFN密码算法加密描述如下算法1所示,其中控制密钥与轮密钥产生见密钥扩展模块描述。
SFN分组密码算法加密伪代码描述:
算法1:SFN密码加密过程
输入:Plaintext(64),rkey(64),ckey(32);
输出:Ciphertext(64);
SFN加密模块中包含两种结构:SP网络结构与Feistel网络结构。以下对这两种结构函数各个模块进行详细描述。
SFN密码算法中Feistel网络结构加密运算模块描述:在Feistel网络结构中,将64位每一轮中间值分为左右等长两半,前半32位标记为SL段,而后半32位标记为SR段。
轮密钥加(AddRoundKey):将32位的SL值与轮密钥前32位进行异或运算,32位的SL段值state0(4)、state1(4)、……、state7(4)与轮密钥前32位值rkey0(4)、rkey1(4)、……、rkey7(4)的运算关系如下公式(1)
S1盒替换(SubCells1)与S2盒替换(SubCells2):在Feistel网络结构中,有两个不同的S盒的替换运算,分别是S1盒替换与S2盒替换运算,SFN算法S1盒替换运算的S1盒采用于PRESENT密码加密的S盒,S1盒元素如表1所示。SFN算法S2盒替换运算的S2盒采用于mCrypton密码加密的第一个S盒,S2盒元素如表2所示。轮函数中的S盒替换变换,将进行S1盒变换的32位数据分为8个4位,记作为a0,a1,a2,a3,a4,a5,a6,a7,替换得到为b0,b1,b2,b3,b4,b5,b6,b7;将进行S2盒变换的32位数据分为8个4位,记作为c0,c1,c2,c3,c4,c5,c6,c7;替换得到为d0,d1,d2,d3,d4,d5,d6,d7,如公式所示(2)。
有限域S:aj→bj=S1(aj) 公式(2)
cj→dj=S2(cj),0≤j≤7
表1 SFN算法S1盒元素
X | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
S1[x] | C | 5 | 6 | B | 9 | 0 | A | D | 3 | E | F | 8 | 4 | 7 | 1 | 2 |
表2 SFN算法S2盒元素
X | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
S2[x] | 4 | F | 3 | 8 | D | A | C | 0 | B | 5 | 7 | E | 2 | 6 | 1 | 9 |
P置换(Permutation):P置换变换是按照表3所示位置规则,将每一比特位的位置进行交换。由表3位置规则得知,将进行P置换的32位数据每一比特位i移动变换到P(i)所表示的位置。
表3 SFN算法P置换
i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
P(i) | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | 1 | 5 | 9 | 13 | 17 | 21 | 25 | 29 |
i | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
P(i) | 2 | 6 | 10 | 14 | 18 | 22 | 26 | 30 | 3 | 7 | 11 | 15 | 19 | 23 | 27 | 31 |
SFN密码算法中SP网络结构加密运算模块描述:在SP网络结构中,轮运算进行将64位数据的操作。
轮密钥加(AddRoundKey):将64位每一轮值与轮密钥64位值进行异或运算,64位每一轮值state0(4)、state1(4)、……、state15(4)与轮密钥64位值rkey0(4)、rkey1(4)、……、rkey15(4)的运算关系如下公式(3)。
S1盒替换(SubCells1):在SP网络结构中,使用的S盒是与Feistel网络结构中S1盒一致都是引用于PRESENT算法加密的S盒;S盒元素见表1。16个单元state0(4)、state1(4)、……、state15(4)。每个单元元素都经过S盒进行替换,运算关系如公式(4)。
statej(4)←S1(statej(4))(0≤j≤15) (4)
行移位变换(ShiftRows):对于16个单元组成的4×4矩阵,矩阵每一行循环左移不同的单元,第零行单元循环左移3个单元,第一行单元循环左移两个单元,第二行单元循环左移一个单元,第三行单元保持不变,行移位变换运算关系如图2所示。该行移位变换模块采用于Surge密码算法中行移位变换。
列混合变换(MixColumns):列混合变换矩阵M如下所示,其中数据以16进制表示。该矩阵M采用于Surge密码算法中列混合矩阵。
列混合变换是将state(64)中元素4×4矩阵与列混合变换矩阵M在有限域GF(24)上的乘法变换,变换公式(5),其中数据以16进制表示。
密钥扩展变换(KeyExpantion):算法的密钥扩展运算与密码算法加/解密方式有着相同的变换网络结构,从而使得算法的密钥扩展与加/解密运算可以在两种结构间变换,算法的随机性增加,提高算法的安全性,并且还能做到减少算法面积实现资源。密钥扩展中的SP与Feistel网络结构与加/解密不同的是将轮函数结构的轮密钥加变换模块替换为常数加变换模块,运算过程如算法2所示:
SFN分组密码算法密钥扩展伪代码描述:
算法2:SFN密码密钥扩展过程
输入:Key(96);
输出:
常数加变换(AddConstants):为了提高算法安全与减少算法寄存器,在保证算法安全方面中,主要是防御滑动攻击等一些攻击方法,选择轮数作为算法的轮常数。表示公式如下(6):
在密钥扩展算法过程中,其他运算组件和加密函数模块一致,这里不再进行描述。
SFN算法中SP网络结构与Feistel网络结构的解密流程如图3所示。SFN密码算法解密描述如下算法3所示,其中控制密钥与轮密钥产生见密钥扩展模块描述。
SFN分组密码算法解密伪代码描述:
算法3:SFN密码解密过程
输入:Ciphertext(64),rkey(64),ckey(32);
输出:Plaintext(64);
SFN算法解密过程中Feistel网络结构不进行任何变化,而SP网络结构使用了加密运算变换模块的四种逆运算变换,并且相对于加密函数中各个运算组件运算顺序,解密函数将逆运算组件的运算顺序变为相反顺序。在变换模块中轮密钥加变换的逆变换是自身。轮密钥以加密运算相反的顺序对密文进行解密,解密过程的与加密过程使用相同的密钥。
S1盒替换逆运算(InvSubCells1):SFN算法中SP结构的解密过程,解密的S1盒是采用PRESENT算法解密过程的逆S-1盒。逆S-1盒如表4所示,其中数据以16进制表示。
表4 SFN算法逆S-1盒元素
X | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
S-1[x] | 5 | E | F | 8 | C | 1 | 2 | D | B | 4 | F | 3 | 0 | 7 | 9 | A |
16个单元为state0(4)、state1(4)、……、state15(4),每一个单元元素都经过逆S-1盒元素进行替换,用公式(7)表示运算方法。
statej←S-1(statej)(0≤j≤15) (7)
行移位逆运算(InvShiftRows):对于16个单元组成的4×4矩阵,矩阵每一行循环右移不同的单元,第零行单元循环右移3个单元,第一行单元循环右移两个单元,第二行单元循环右移一个单元,第三行单元保持不变,行移位变换运算关系如图4所示。
列混合逆运算(InvMixColumns):列混合逆运算矩阵M-1如下所示,其中数据以16进制表示。
列混合逆运算是将state(64)中元素4×4矩阵与列混合逆运算M-1在有限域GF(24)上的乘法变换,变换公式(8),其中数据以16进制表示。
SFN算法测试数据如表5所示:
表5 SFN算法测试数据
本发明所述的SFN密码算法在ModelSim SE 6.1f Evaluation上进行仿真;同时在Synopsys Design Compiler Version B-2008.09进行综合,其中综合工艺库为SMIC 0.18μm CMOS,在综合实验中,面积资源单位为GE。
SFN算法是用96位的密钥加密64位明文,需要是32个循环时钟信号。在频率为100KHz场景下模拟,加/解密速率达到200kbps。
SFN算法各组件硬件实现资源具体描述为:64位的明文保存在寄存器中需要344GE,96位的密钥保存在寄存器中需要为476GE。常数加模块中,轮常数是轮数,不需要寄存器保存轮常数,而常数异或单元需要27GE。轮密钥加模块中,轮密钥异或单元需要170.85GE。两个S盒替换模块,S盒的实现需要384GE。行移位模块与P置换模块,采用连线方式实现,硬件实现不需要消耗资源。列混合模块,将乘法运算转换为异或与移位运算,可以减少实现资源,从而只需要消耗资源为50GE。算法实现中,控制逻辑单元以及计数器共需要40GE。SFN算法硬件实现仅需要1491.85GE。表6是SFN算法ASIC资源面积列表。
表6 SFN面积资源列表
算法模块 | GE |
明文寄存器 | 344 |
常数异或单元 | 21 |
轮密钥异或单元 | 170.85 |
S盒替换层 | 384 |
行移位层 | 0 |
P置换层 | 0 |
列混合层 | 50 |
密钥寄存器 | 476 |
控制逻辑单元与计数器 | 40 |
总和 | 1491.85 |
对一些轻量级分组密码算法进行实现面积比较,由表7数据分析可知,SFN算法具有低资源、高效的特点。
表7 各轻量级密码算法实现面积比较
在算法安全与灵活性上,通过原始密钥的最后32位作为每一轮控制选择,选择算法两种结构中一种结构进行加/解密,同时另一种结构进行密钥扩展。从而有232=4294697296不同运算方式。相比固定密码结构进行加/解密与密钥扩展迭代运算,对于一些攻击而言,可以提高232的防御难度系数。在ASIC实现平台上,算法硬件资源仅需要1491.85GE,同时在频率为100KHz场景下模拟,加/解密速率达到200kbps。
满足不同用户多层次的安全性需求,算法整体结构上既可以用SP网络结构运算又可以用Feistel网络结构运算,充分体现了这两种结构相互之间的优势,从而使得算法更具有灵活性、可扩展性,且具有高安全性以及低资源优点,有较好的应用前景。
以上结合具体实施例对本发明进行了详细的说明,这些并非构成对发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可以作出许多变形和改进,这些也应属于本发明的保护范围。
Claims (3)
1.一种新型高安全的轻量级SFN分组密码实现方法,其特征在于,首先,将密钥划分成待扩展密钥数据和轮运算过程的控制信号数据;其次,依据轮运算过程控制信号分别对待扩展密钥和待加/解密数据进行密钥扩展和数据加/解密,每一轮扩展后的密钥用于下一轮数据加/解密,直到完成所有轮数的轮运算;最后,输出密文/明文,完成加/解密操作;
所述待扩展密钥数据长度与待加/解密数据长度相同,所述轮运算过程的控制信号数据长度与轮运算次数相同,依次从控制信号数据中选取一位作为一轮轮运算控制信号;
当轮运算过程控制信号为1时,待扩展密钥选择SP网络结构的轮运算函数进行密钥扩展运算,待加/解密数据选择Feistel网络结构的轮运算函数进行加/解密运算;
当轮运算过程控制信号为0时,待扩展密钥选择Feistel网络结构的轮运算函数进行密钥扩展运算,待加/解密数据选择SP网络结构的轮运算函数进行加/解密运算;
在轮运算中对所述待扩展密钥进行密钥扩展的具体过程如下,密钥扩展进行32轮操作:
当轮运算控制信号select为0时,密钥扩展轮运算步骤如下:
1)将64位待扩展密钥数据划分为前32位数据与后32位数据;
2)对1)获得的前32位数据与轮常数进行常数加运算;
3)对2)得到的运算结果进行S1盒字节替换运算;
4)对3)得到的运算结果进行P置换运算;
5)对4)得到的运算结果进行S2盒字节替换运算;
6)对5)得到的运算结果与1)获得的后32位数据进行异或运算;
7)对6)得到的运算结果作为下一轮前32位数据,并将1)获得的前32数据作为下一轮后32位数据,得到轮密钥,即获得下一轮64位待扩展密钥数据,若轮运算的次数达到设定次数,则结束密钥扩展,否则,依据轮运算控制信号,进行下一轮密钥扩展运算;
当轮运算控制信号select为1时,密钥扩展轮运算步骤如下:
8)将64位待扩展密钥数据前后各32位数据相互调换位置;
9)对8)所述调换位置后的待扩展密钥数据与轮常数进行常数加运算;
10)对9)得到的运算结果进行S1盒字节替换运算;
11)对10)得到的运算结果进行行移位变换运算;
12)对11)得到的运算结果进行列混合变换运算,得到轮密钥;
13)对12)得到的运算结果作为下一轮64位待扩展密钥数据,若轮运算的次数达到设定次数,则结束密钥扩展,否则,依据轮运算控制信号,进行下一轮密钥扩展运算;
在轮运算过程中对待加密数据进行加密的具体过程如下,加密进行32轮操作:
当轮运算控制信号select为0时,加密轮运算步骤如下:
14)将64位待加密数据的前后各32位数据相互调换位置;
15)对14)所述调换位置的待加密数据与轮密钥进行轮密钥加运算;
16)对15)得到的运算结果进行S1盒字节替换运算;
17)对16)得到的运算结果进行行移位变换运算;
18)对17)得到的运算结果进行列混合变换运算;
19)对18)得到的运算结果作为下一轮加密轮运算中的64位待加密数据;
若轮运算的次数达到设定次数,则进入步骤27),否则,依据轮运算控制信号,进行下一轮加密运算;
当轮运算控制信号select为1时,加密轮运算步骤如下:
20)将64位加密数据分为前32位数据与后32位数据;
21)对20)所述的前32位数据与轮密钥前32位进行轮密钥加运算;
22)对21)得到的运算结果进行S1盒字节替换运算;
23)对22)得到的运算结果进行P置换运算;
24)对23)得到的运算结果进行S2盒字节替换运算;
25)对24)得到的运算结果与20)得到的后32位数据进行异或运算;
26)对25)得到的运算结果作为下一轮加密轮运算的待加密数据的前32位数据,将20)得到的前32数据作为下一轮加密轮运算的待加密数据的后32位数据,得到下一轮64位待加密数据;若轮运算的次数达到设定次数,则进入27),否则,依据轮运算控制信号,进行下一轮加密运算;
27)将所述经过32轮运算待加密64位数据前后各32位数据相互调换位置;
28)对27)所述调换位置后的待加密数据与最后一轮密钥扩展轮运算得到的轮密钥进行轮密钥加运算;
29)对28)得到的运算结果作为密文,则加密运算操作结束;
加密轮运算过程中,第一轮加密轮运算所使用的轮密钥为初始密钥的前64位数据,从第二轮开始依次为每一轮密钥扩展轮运算获得的轮密钥。
2.根据权利要求1所述的方法,其特征在于,将密钥扩展轮运算得到的32个轮密钥逆序用于解密轮运算过程,对待解密数据进行解密,具体过程如下,解密进行32轮操作:
30)将64位待解密数据与最后一轮密钥扩展轮运算得到轮密钥进行轮密钥加运算;
31)将30)得到的结果依据轮运算控制信号进行解密轮运算;
当轮运算控制信号select为0时,解密轮运算步骤如下:
32)将进行轮运算的64位待解密数据前后各32位数据相互调换位置;
33)对32)所述调换位置的待解密数据进行列混合逆运算;
34)对33)得到的运算结果进行行移位逆运算;
35)对34)得到的运算结果进行S1盒字节替换逆运算;
36)对35)得到的运算结果与轮密钥进行轮密钥加运算;
37)对36)得到的运算结果作为下一轮64位待解密数据;若轮运算的次数达到设定次数,则进入步骤45),否则,依据轮运算控制信号,进行下一轮解密轮运算;
当轮运算控制信号select为1时,解密轮运算步骤如下:
38)将进行轮运算的64位待解密数据分为前32位数据与后32位数据;
39)对38)所述的前32位数据与轮密钥前32位进行轮密钥加运算;
40)对39)得到的运算结果进行S1盒字节替换运算;
41)对40)得到的运算结果进行P置换运算;
42)对41)得到的运算结果进行S2盒字节替换运算;
43)对42)得到的运算结果与38)所述的后32位数据进行异或运算;
44)对43)得到的运算结果作为下一轮解密轮运算的待解密数据前32位数据,将38)得到的前32位数据作为下一轮解密轮运算的待解密数据的后32位数据,得到下一轮64位待解密数据;若轮运算的次数达到设定次数,则进入步骤45),否则,依据轮运算控制信号,进行下一轮解密轮运算;
45)将所述经过32轮运算待解密64位数据前后各32位数据相互调换位置;
46)对45)得到的运算结果作为明文,则解密运算操作结束;
解密轮运算过程中,从第一轮到倒数第二轮解密轮运算所使用的轮密钥依次为密钥扩展得到的倒数第二个轮密钥到第一个轮密钥,最后一轮解密轮运算所使用的轮密钥为初始密钥的前64位数据。
3.根据权利要求1或2所述的方法,其特征在于,所述P置换运算是对数据中每一比特位位置交换操作:
输入32位数据从高位到低位表示为:p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31;
经P置换将数据比特位位置交换;
以p0,p4,p8,p12,p16,p20,p24,p28,p1,p5,p9,p13,p17,p21,p25,p29,p2,p6,p10,p14,p18,p22,p26,p30,p3,p7,p11,p15,p19,p23,p27,p31高位到低位顺序数据输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610466022.6A CN105959107B (zh) | 2016-06-24 | 2016-06-24 | 一种新型高安全的轻量级sfn分组密码实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610466022.6A CN105959107B (zh) | 2016-06-24 | 2016-06-24 | 一种新型高安全的轻量级sfn分组密码实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105959107A CN105959107A (zh) | 2016-09-21 |
CN105959107B true CN105959107B (zh) | 2017-03-08 |
Family
ID=56904696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610466022.6A Active CN105959107B (zh) | 2016-06-24 | 2016-06-24 | 一种新型高安全的轻量级sfn分组密码实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105959107B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107707343B (zh) * | 2017-11-08 | 2020-10-16 | 贵州大学 | 加解密一致的sp网络结构轻量级分组密码实现方法 |
CN108123791B (zh) * | 2017-12-26 | 2019-03-08 | 衡阳师范学院 | 一种轻量级分组密码scs的实现方法与装置 |
CN109039586B (zh) * | 2018-08-17 | 2021-06-29 | 贵州大学 | 一种可恢复的保留数字类型轻量级脱敏方法 |
WO2020008446A2 (en) * | 2019-09-25 | 2020-01-09 | Symbiosis International (Deemed University) | A system and method for encryption and decryption of text |
CN110784307B (zh) * | 2019-11-05 | 2020-06-09 | 衡阳师范学院 | 轻量级密码算法scenery实现方法、装置及存储介质 |
CN111211890A (zh) * | 2019-12-31 | 2020-05-29 | 江苏省未来网络创新研究院 | 一种基于sdn的网络安全防御系统及其工作方法 |
CN111478766B (zh) * | 2020-01-21 | 2021-09-28 | 衡阳师范学院 | 一种分组密码meg实现方法、装置及存储介质 |
CN112235098B (zh) * | 2020-09-17 | 2023-02-10 | 成都万江港利科技股份有限公司 | 一种简易快速的通信加解密方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104065474B (zh) * | 2014-07-14 | 2015-04-08 | 衡阳师范学院 | 一种轻量级Surge分组密码实现方法 |
CN104333446B (zh) * | 2014-11-10 | 2016-01-13 | 衡阳师范学院 | 一种新型超轻量级qtl分组密码实现方法 |
CN105391546A (zh) * | 2015-12-16 | 2016-03-09 | 南京航空航天大学 | 基于双伪随机变换和Feistel结构的轻量级分组密码技术VHF |
-
2016
- 2016-06-24 CN CN201610466022.6A patent/CN105959107B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105959107A (zh) | 2016-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105959107B (zh) | 一种新型高安全的轻量级sfn分组密码实现方法 | |
Kumar et al. | Development of modified AES algorithm for data security | |
CN106788974B (zh) | 掩码s盒、分组密钥计算单元、装置及对应的构造方法 | |
CN105051677B (zh) | 用共享随机比特进行掩码 | |
Ye et al. | An efficient chaotic image encryption algorithm based on a generalized Arnold map | |
CN108123791B (zh) | 一种轻量级分组密码scs的实现方法与装置 | |
CN103152168B (zh) | 用于高级加密标准(aes)的处理器和指令 | |
CN107707343B (zh) | 加解密一致的sp网络结构轻量级分组密码实现方法 | |
CN111431697B (zh) | 一种新型轻量级分组密码corl的实现方法 | |
CN104639314A (zh) | 基于aes加密/解密算法的装置和流水控制方法 | |
CN104333446B (zh) | 一种新型超轻量级qtl分组密码实现方法 | |
CN108809626A (zh) | 一种白盒sm4密码算法方案与系统 | |
CN104065474B (zh) | 一种轻量级Surge分组密码实现方法 | |
CN110572255B (zh) | 基于轻量级分组密码算法Shadow的加密方法、装置及计算机可读介质 | |
KR100800468B1 (ko) | 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법 | |
CN110784307B (zh) | 轻量级密码算法scenery实现方法、装置及存储介质 | |
CN103634101A (zh) | 加密处理方法及设备 | |
Jeon et al. | A compact memory-free architecture for the AES algorithm using resource sharing methods | |
Gafsi et al. | High securing cryptography system for digital image transmission | |
CN108206736A (zh) | 一种轻量级密码算法HBcipher实现方法与装置 | |
Dawood et al. | The new block cipher design (Tigris Cipher) | |
CN111614457B (zh) | 基于p置换改进的轻量级分组加解密方法、装置及存储介质 | |
CN112134691B (zh) | 一种部件可重复的nlcs分组密码实现方法、装置及介质 | |
Kotel et al. | Performance evaluation and design considerations of lightweight block cipher for low-cost embedded devices | |
John | Cryptography for resource constrained devices: A survey |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |