CN116743353A - 一种新型flm结构的分组密码算法实现方法及系统 - Google Patents
一种新型flm结构的分组密码算法实现方法及系统 Download PDFInfo
- Publication number
- CN116743353A CN116743353A CN202310691339.XA CN202310691339A CN116743353A CN 116743353 A CN116743353 A CN 116743353A CN 202310691339 A CN202310691339 A CN 202310691339A CN 116743353 A CN116743353 A CN 116743353A
- Authority
- CN
- China
- Prior art keywords
- round
- key
- flm
- encryption
- novel
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 96
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 61
- 125000004122 cyclic group Chemical group 0.000 claims abstract description 26
- 238000006243 chemical reaction Methods 0.000 claims abstract description 24
- 238000013461 design Methods 0.000 claims abstract description 5
- 230000006870 function Effects 0.000 claims description 34
- 238000006467 substitution reaction Methods 0.000 claims description 34
- 230000009466 transformation Effects 0.000 claims description 32
- 230000008569 process Effects 0.000 claims description 27
- 239000011159 matrix material Substances 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 6
- 238000009792 diffusion process Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 4
- 230000007547 defect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013478 data encryption standard Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- OUXCBPLFCPMLQZ-WOPPDYDQSA-N 4-amino-1-[(2r,3s,4s,5r)-4-hydroxy-5-(hydroxymethyl)-3-methyloxolan-2-yl]-5-iodopyrimidin-2-one Chemical group C[C@H]1[C@H](O)[C@@H](CO)O[C@H]1N1C(=O)N=C(N)C(I)=C1 OUXCBPLFCPMLQZ-WOPPDYDQSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- 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/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种新型FLM结构的分组密码算法实现方法及系统,该方法包括:获取明文或者密文并均分为四分支;基于子密钥以及新型FLM结构,对明文或密文执行Nr轮加密运算或解密运算得到密文或明文,即新型FLM结构加密运算中每一轮运算均包括循环移位变换、轮常数异或、轮密钥加变换、F函数和P1置换;解密操作增设两个P2置换,且在解密操作中所使用的子密钥和轮常数与加密操作中使用的顺序相反。本发明设计所述密码算法通过在加密操作基础上增加两个不占用硬件资源的P2置换就能解密,能够实现加解密高度一致,降低了算法硬件资源消耗;还实现一轮改变所有分支数据,提高了算法的扩散性。
Description
技术领域
本发明属于信息安全加密技术领域,具体涉及一种新型FLM结构的分组密码算法的实现及系统。
背景技术
随着通信、计算机等信息技术迅速发展,传统工业系统+互联网,已经发展形成集信息物理、传感、控制、网络和计算一体的综合系统,物联网技术已经应用到各个领域。但是,如此广泛的物联网设备和无时不在的通讯需求,会对当今网络中的数据和隐私安全构成潜在的威胁,因此需要采取更加有效的安全措施来保障网络和数据的安全性。分组密码算法作为对称密码的一个重要分支,由于其加密速度快、易于标准化和便于软硬件实现等特点,成为保障信息机密性和完整性的重要手段,且已在计算机通信和信息系统安全领域有着广泛应用。物联网传感通信设备,往往处于硬件资源受限的环境下,只能贡献出小部分资源用于数据安全的保障。于是,在资源受限环境下去追求分组密码算法在性能和安全性的平衡是一个值得深入研究的问题,一方面这涉及到分组密码结构的设计和实现,另一方面这也需要考虑到密码部件潜在的安全性问题。
近年来出现了大量的性能优良的分组密码,这些算法大多采用三种典型的结构:SPN结构、Feistel结构和Lai-Massey结构。以高级加密标准AES为代表的SPN结构具有快速的混淆扩散能力,且采用该结构的算法轮数通常很短,在实现过程中具有很高的吞吐量,但是他们在加密和解密方面存在着不一致性的问题。与之相比,Feistel结构的加密和解密具有一致性,但也正是由于这一结构特性,该类结构的密码算法如数据加密标准算法DES、NSA设计的Simon算法等,扩散性较差,每轮只能处理一半的数据,因此该类算法迭代轮数较高,随着轮数的增加,消耗也将会成倍增加。而Lai-Massey结构,以IDEA算法为代表,其混淆扩散速度很快,并且软件实现的速度快,但是轮函数比较复杂,在以轮为基础的硬件实现时占用了大量面积,此外该结构加解密的不一致也使得其在解密时需要消耗额外的资源。
发明内容
本发明为了解决上述现有技术问题,提供一种新型FLM结构的分组密码算法实现方法及系统。本发明技术方案提出了一种新型FLM结构,由于该结构具有对称性,所述方法以新型FLM结构为基础,通过在加密操作基础上增加两个不占用硬件资源的P2置换就能解密,实现解密可以高度复用加密的结构,不仅使得算法能够实现加解密高度一致,减少硬件资源消耗,同时新型FLM结构通过采用循环移位变换和异或运算的线性操作使各分支相互关联,达到一轮改变所有分支数据的效果,大大改善了算法的扩散性,提高了算法的安全性。进一步的,本发明技术方案所述方法还提出了一种新S盒,在不占用较多的资源面积的同时达到了良好的密码学性质,进一步确保了算法的安全性。
为此,本发明技术方案提供一种新型FLM结构的分组密码算法实现方法,包括以下步骤:
设置初始密钥Key,并确定最大轮数Nr;
获取明文或者密文,并将所述明文或所述密文均分为四分支;
基于所述初始密钥Key进行轮密钥扩展操作得到每一轮加密运算或解密运算的子密钥;
基于新型FLM结构,并利用所述子密钥对所述明文或所述密文执行Nr轮加密运算或解密运算得到密文或明文;
若是加密运算,对明文执行Nr轮新型FLM结构加密运算,所述新型FLM结构加密运算包括循环移位变换、轮常数异或、轮密钥加变换、F函数和P1置换;
若是解密运算,对密文执行Nr轮新型FLM结构解密运算,且第一轮解密运算之前以及第Nr轮解密运算之后均执行P2置换,所述解密运算中第1至Nr轮新型FLM结构解密运算的子密钥和轮常数与第Nr至1轮新型FLM结构加密运算的子密钥和轮常数是一一对应的,其中,所述P2置换是依据P1置换过程中分支置换规则设计。
本发明技术方案提供的解密操作依次采用P2置换、新型FLM结构解密运算、P2置换,即解密操作在加密操作的基础上增加了两个P2置换。其中,P1盒是考虑到新型FLM结构中第2分支和第3分支的数据不能与第1分支和第4分支的数据相互影响而设计的,而P2盒是根据新型FLM结构的对称性,为实现解密高度复用加密结构而设计的。本发明技术方案结合Feistel和Lai-Massey结构的优势,设计了对称的新型FLM结构,其中,第2分支和第3分支数据所执行的操作、顺序均完全相同,而第1分支和第4分支数据所执行的操作完全相同,但顺序相反。因此,可以根据P1盒中分支的置换规律来设计得到P2盒,从而实现加解密高度一致。
进一步可选地,P1置换以及P2置换的规则如下:
P1置换:若对64位中间数据Z3||W2||W3||Z1进行P1置换,得到从高位到低位排列为W2||Z3||Z1||W3的64位数据;
P2置换:若对64位中间数据从高位到低位排列为Z′3||W′2||W′3||Z′1进行P2置换,得到从高位到低位排列为W′3||Z′1||Z′3||W′2的64位数据。
进一步可选地,所述明文的长度为64位,所述新型FLM结构加密运算的执行过程如下:
B1:将64位的明文由高位到低位分成四个部分pl0、pl1、pr0、pr1,即pl0=p63||p62…p49||p48,pl1=p47||p46…p33||p32,pr0=p31||p30…p17||p16,pr1=p15||p14…p1||p0;其中,||表示字符串连接符,pi表示明文中i位置数据;
B2:将pl0循环左移7位得到Z0,再将Z0与pr1和当前轮的轮常数RCi进行异或操作得Z1,即
B3:将Z1循环左移7位得到Z2,再将Z2与pl0和当前轮的轮常数RCi进行异或操作得Z3,即
B4:将Z1与pl0进行异或逻辑运算,运算结果再与轮密钥Ki进行异或逻辑运算得到W0,即
B5:将W0进行F函数操作得到W1,再将W1分别与pl1和pr0进行异或逻辑运算得到W2和W3,即:
B6:将64位中间数据从高位到低位排列为Z3||W2||W3||Z1,再对Z3||W2||W3||Z1执行P1置换。
进一步可选地,所述F函数操作包括S盒替换和列混淆操作,其中,步骤B5中将W0进行F函数操作得到W1的过程为:
首先对W0进行S盒替换操作得到Y0;
再对Y0进行列混淆操作得到W1。
进一步可选地,所述列混淆操作的执行过程如下:
选择piccolo算法中的列混淆变换矩阵M,表示如下:
再在GF(24)上进行所述列混淆变换矩阵M与S盒替换后得到的数据Y0进行乘法运算,其中,GF(24)为有限域,表示该有限域总共只有24个元素。
进一步可选地,所述轮密钥扩展操作包括循环移位、S盒替换、轮常数异或;
其中,每一轮的所述轮密钥扩展操作的执行过程如下:
C1:将前一轮的轮密钥扩展后的80位密钥循环左移61位,其中,第一轮轮密钥扩展运算的80位密钥为所述初始密钥Key;
C2:将步骤C1所得数据的最高4位进行S盒替换操作,更新所述密钥;
C3:将步骤C2所得的密钥中从低位到高位的第16位至第20位的5位数据与当前轮的轮数进行异或操作;
C4:在步骤C3操作后,得到新的80位密钥作为下一轮的轮密钥扩展的输入,取数据中最高的16位作为当前轮所使用的子密钥。
进一步可选地,所述S盒替换对应替换规则如下:
x:{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}
S[x]:{E,F,C,8,4,3,7,2,D,5,9,1,0,B,6,A}
其中,x以及S[x]分别为S盒替换前、后的数据。
本发明技术方案还提供一种基于所述方法的系统,包括:
设置模块,用于设置初始密钥Key,并确定最大轮数Nr;
明文或密文处理模块,用于获取明文或者密文,并将所述明文或所述密文均分为四分支;
轮密钥扩展模块,用于基于所述初始密钥Key进行轮密钥扩展操作得到每一轮加密运算或解密运算的子密钥;
加解密模块,用于基于新型FLM结构,并利用所述子密钥对所述明文或所述密文执行Nr轮加密运算或解密运算得到密文或明文;
若是加密运算,每一轮加密运算是对明文进行新型FLM结构加密操作,所述新型FLM结构加密操作包括循环移位变换、轮常数异或、轮密钥加变换、F函数和P1置换;
若是加密运算,对明文执行Nr轮新型FLM结构加密运算,所述新型FLM结构加密运算包括循环移位变换、轮常数异或、轮密钥加变换、F函数和P1置换;
若是解密运算,对密文执行Nr轮新型FLM结构解密运算,且第一轮解密运算之前以及第Nr轮解密运算之后均执行P2置换,所述解密运算中第1至Nr轮新型FLM结构解密运算的子密钥和轮常数与第Nr至1轮新型FLM结构加密运算的子密钥和轮常数是一一对应的。
本发明技术方案还提供一种电子终端,至少包含:
一个或多个处理器;
以及存储了一个或多个计算机程序的存储器;
其中,所述处理器调用所述计算机程序以执行:
一种新型FLM结构的分组密码算法实现方法的步骤。
本发明技术方案还提供一种计算机可读存储介质,存储了计算机程序,所述计算机程序被处理器调用以执行:
一种新型FLM结构的分组密码算法实现方法的步骤。
有益效果
本发明技术方案提供的新型FLM结构的分组密码算法实现方法是结合Feistel和Lai-Massey结构的优势提出了一种新型FLM结构,由于新型FLM结构具有对称性,通过在加密操作基础上增加两个不占用硬件资源的P2置换就能解密,实现解密可以高度复用加密的结构,解决了Lai-Massey结构加解密不一致的缺陷,降低了算法硬件资源消耗;同时本发明通过循环移位和异或的线性操作使算法中使各分支相互关联,实现一轮改变所有分支数据,解决了传统Feistel结构一次只能处理一半明文数据、扩散速度慢的问题,提高了算法的扩散性。从而既满足了扩散要求、满足加解密对称性,降低了硬件资源消耗。
本发明进一步的优选方案中,还提供了一种新的S盒,该S盒具有低资源面积的特点,达到了良好的密码学性质,有效保障了算法的安全性。
综上所述,本分组密码算法实现方法具备低资源、高性能、高安全的优点,能够为数据安全提供保护。
附图说明
图1为本发明所述的分组密码算法加密流程图;
图2为本发明所述的轮密钥扩展图;
图3为本发明所述的P1置换和P2置换流程图;
图4为本发明所述的加密算法结构中F函数流程图。
图5为本发明所述的分组密码算法解密流程图;
具体实施方式
本发明技术方案提供一种新型FLM结构的分组密码算法实现方法,所述方法结合Feistel和Lai-Massey结构的优势,提出了一种新型FLM结构,既克服了Lai-Massey结构加解密的不一致缺陷,又克服了Feistel结构扩展性差、消耗高的缺陷。其中,如图1所示,新型FLM结构的加密运算包括对分组的数据进行循环移位变换、轮常数异或、轮密钥加变换、F函数和P1置换操作;如图5所示,新型FLM结构的解密运算包括为依次执行P2置换、Nr轮新型FLM结构解密运算、P2置换,其中,解密运算中第1至Nr轮新型FLM结构解密运算的子密钥和轮常数与第Nr至1轮新型FLM结构加密运算的子密钥和轮常数是一一对应的;如图2所示,轮密钥扩展包括依次对密钥进行循环移位、S盒替换和轮常数异或操作。如图4所示,F函数包括S盒替换和列混淆变换。
下面将结合实施例对本发明做进一步的说明。
实施例1:
本实施例提供的一种新型FLM结构的分组密码算法实现方法,以明文/密文长度为64位,初始密钥80位以及轮函数的迭代次数为16,每一轮都执行新型FLM结构加密运算以及轮密钥扩展运算为例进行说明,具体执行过程如下:
StepA1:由高位到低位获取64位明文作为待加密数据Plaintext=p63||p63…p1||p0,将64位的明文均分成四组,确定最大轮数Nr为16,且当前轮数表示为i,其中,所述分组的具体过程如下:
设这四组分别表示为pl0、pl1、pr0和pr1,具体表示为pl0=p63||p62…p49||p48,pl1=p47||p46…p33||p32,pr0=p31||p30…p17||p16,pr1=p15||p14…p1||p0。
StepA2:设置80位的初始密钥Key=k79||k78…k1||k0,将80位的密钥Key进行轮密钥扩展操作,包括循环移位、S盒替换、轮常数异或。具体操作如下:
循环移位:将初始密钥Key循环左移61位得到key1,key1=k18||k17||k16…k21||k20||k19,公式如下:
key1[k79||k78||k77…k2||k1||k0]=Key[k18||k17||k16…k21||k20||k19]
S盒替换:将key1的最高4比特进行S盒替换操作更新密钥key1,公式如下:
key1[k79||k78||k77||k76]=S[k79||k78||k77||k76]
其中S盒替换操作按照下表进行查表替换:
表1算法S盒元素
轮常数异或:将key1中从低位到高位的第16位至第20位共5位数据与当前轮的轮常数RCi进行异或操作更新密钥key1,公式如下:
取执行完轮密钥扩展后的key1的最高16位作为本轮轮密钥加操作所需的子密钥K1,其中,80位密钥key1保留作为下一轮轮密钥扩展的密钥。
K1=key1[k79||k78||k77…k67||k66||k65]
最后,重复StepA2过程,迭代16轮,最终得到加密过程所需的全部子密钥。其中,将得到的所有子密钥存储起来,用于加密运算和解密运算中对应每一轮的轮密钥加变换。
StepA3:将pl0循环左移7位得到Z0,Z0与pr1和当前轮的轮常数RCi进行异或操作得Z1,即:将Z1循环左移7位得到Z2,Z2与pl0和当前轮的轮常数RCi进行异或操作得Z3,即:/>
StepA4:将Z1与pl0进行异或逻辑运算,运算后的结果再与轮密钥Ki进行异或逻辑运算得到W0,即:
StepA5:将W0进行F函数操作得到W1,其中,F函数依次包括S盒替换、列混淆操作;具体过程如下:
S盒替换:按照表1,以查表方式对轮密钥加运算得到的结果进行S盒替换操作,是通过完成S盒替换:
列混淆变换:采用piccolo算法中的列混淆变换矩阵M,在GF(24)上进行列混淆变换矩阵M与S盒替换后得到的数据(16位)的乘法运算,其中,GF(24)表示为一个不可约多项式x4+x+1。GF(2n)是在分组密码中常用的有限域,它表示该域总共只有2n个元素。列混淆变换矩阵M表示如下:
StepA6:将StepA5变换后的结果分别与Pl1和Pr0进行异或逻辑运算得到W2和W3,即:
StepA7:对从高位到低位排列的64位数据Z3||W2||W3||Z1进行P1置换操作,即Z3与W2,W3与Z1进行互换,得到结果可以表示为中间状态Gi,其中,Gi=W2||Z3||Z1||W3。
StepA8:对得到的中间状态Gi继续重复StepA1-A7操作,共计16轮,得到从高位到低位依次输出的Ciphertext密文G16。
至此,采用上述方法将64位的明文加密为密文。应当理解,其他可行的实施例中,轮密钥扩展运算以及加解密运算中局部步骤可以同步执行或者不完全局限于上述实例中的先后执行顺序。
需要说明的是,除了加密过程,本发明技术方案所述方法还包括解密过程,因为之前在加密过程对16轮产生的子密钥进行了存储,所以解密时只需以逆序的方式对16个子密钥(K16、K15……K2、K1)进行复用即可,即第1→Nr轮解密过程中的密钥对应第Nr→1轮加密过程得到的密钥,同时逆序使用轮常数,并且在执行新型FLM结构的运算之前以及执行完新型FLM结构的运算之后均增加一个P2置换。所述解密过程包括如下步骤:
StepB1:获取由高位到低位的64位密文作为待解密数据Ciphertext=c63||c63…c1||c0,将64位的密文均分成四组,确定轮数Nr为16,当前轮数表示为i,其中,所述分组的具体过程如下:
对待解密数据Ciphertext进行分组,设这四组分别表示为cl0、cl1、cr0和cr1,具体表示为cl0=c63||c62…c49||c48,cl1=c47||c46…c33||c32,cr0=c31||c30…c17||c16,cr1=c15||c14…c1||c0。
StepB2:将从高位到低位排列为cl0||cl1||cr0||cr1的64位数据进行P2置换操作,即cl0与cr0,cl1与cr1进行互换,得到的数据从高位到低位排列为cr0||cr1||cl0||cl1。
StepB3:获取16位的加密时存储的密钥K16=k15||k14||k13…k2||k1||k0,参与本轮的轮密钥加变换。
StepB4:将cr0循环左移7位得到Z′0,Z′0与cl1和轮常数RCi进行异或操作得Z′1,即: 将Z′1循环左移7位得到Z′2,Z′2与cr0和轮常数RCi进行异或操作得Z′3,即:/>
StepB5:将Z′1与cr0进行异或逻辑运算,运算后的结果再与轮密钥K17-i进行异或逻辑运算得到W′0,即:
StepB6:将W′0进行F函数操作得到W′1,其中,F函数依次包括S盒替换、列混淆操作;具体过程如下:
S盒替换:以查表的方式对轮密钥加运算得到的结果进行S盒替换,其中S盒替换表如由表1给出。
列混淆变换:采用piccolo算法中的列混淆变换矩阵M,在GF(24)上进行列混淆变换矩阵M与S盒替换后得到的数据(16位)的乘法运算,其中,GF(24)表示为一个不可约多项式x4+x+1。GF(2n)是在分组密码中常用的有限域,它表示该域总共只有2n个元素。
StepB7:将StepB6变换后的结果分别与cr1和cl0进行异或逻辑运算得到W′2和W′3,即:
StepB8:将从高位到低位排列为Z′3||W′2||W′3||Z′1的64位中间数据进行P1置换操作,即Z′3与W′2,W′3与Z′1进行互换,得到中间状态G′i从高位到低位排列为W′2||Z′3||Z′1||W′3,并将数据W′2||Z′3||Z′1||W′3记为cr0||cr1||cl0||cl1。
StepB9:对得到的中间状态cr0||cr1||cl0||cl1继续重复stepB3-B7操作。共计15轮,将G′16从高位到低位排列记为pr0||pr1||pl0||pl1的64位数据进行P2置换操作,即pl0与pr0,pl1与pr1进行互换,得到的数据从高位到低位排列为pl0||pl1||pr0||pr1作为明文Plantertext依次输出。本实例中将该算法的命名为ASC,算法分组长度为64位,密钥长度为80位,迭代轮数为16轮。算法采用新型FLM结构,F函数包括S盒替换、列混淆操作。其中,轮密钥扩展包括依次对密钥进行循环移位操作、S盒替换、轮常数异或。因为前面已经对算法中的循环移位模块、轮常数异或模块、轮密钥加模块和P1置换和P2置换模块进行了详细描述,因此在这不在一一赘述。以下对F函数的各个模块和轮密钥扩展中S盒替换模块进行详细描述。
如图2所示,轮密钥扩展包括循环移位、S盒替换、轮常数异或。
S盒替换:采用逻辑运算或查表完成,逻辑运算主要包括以下步骤:其中a、b、c、d分别代表0~15二进制数从高位到低位的4位,每1位按照如下的替换公式,经过变换得到a′、b′、c′、d′,再重新排列组合,逻辑公式如下,S盒元素如表1所示。
如图4所示,F函数包括S盒替换、列混淆操作。F函数中的S盒替换操作与轮密钥扩展中的S盒替换操作相同。
关于列混淆变换:采用piccolo算法中的列混淆变换矩阵M,在GF(24)上进行列混淆变换矩阵M与S盒替换后得到的数据(16位)的乘法运算,其中,GF(24)表示为一个不可约多项式x4+x+1。GF(2n)是在分组密码中常用的有限域,它表示该域总共只有2n个元素。16位数据以每四位为一单元从高位到低位依次表示为x0,x1,x2,x3,列混淆变换更新数据可表示公式如下:
(x0(4),x1(4),x2(4),x3(4))T←M·(x0(4),x1(4),x2(4),x3(4))T
综上所述,本发明的主要思想是构造了一种加解密高度一致且高扩散的新型FLM结构,P1置换和P2置换只需要消耗很少的逻辑控制资源就能使得算法实现加解密高度一致,极大降低解密所需的面积资源,同时通过线性变换使各分支数据相互关联,实现一轮改变所有分支数据,提高了算法的扩散性。即新型FLM结构变换中采用循环移位、异或操作以及P1置换使四分支分组数据相互影响,加解密中的P1置换和P2置换,只需要消耗较少逻辑控制资源便实现了算法实现加解密高度一致,解密操作在加密操作的基础上增加了两个P2置换,并且在解密操作中所使用的子密钥和轮常数与加密操作中使用的顺序相反。此外,本发明自主设计的S盒具有良好的密码学性质,保证了算法的混淆性以及安全性。同时,密钥扩展中轮常数异或消除了对称性。
测试:
对本发明实例提供的方法进行测试,密码算法结果数据以十六进制的方式表示在表2:
表2实验测试数据
本发明所述的密码算法在ASIC硬件实现时,综合工艺库为SMIC 0.18。算法所占用的资源面积为1469GE。其中,表3对一些典型分组密码算法ASIC硬件实现进行了比较。
ASC分组密码硬件占用资源具体描述如下:64位明文保存在寄存器中需要384GE;在异或变换模块需要192.24GE;S盒替换模块需要98.72GE;列混淆变换模块需要104GE;轮密钥加变换模块需要85.44GE;P1置换和P2置换模块的硬件实现是通过连线操作,从而不需要花费硬件资源。密钥扩展模块各个组件占用具体资源描述如下:80位密钥保持在寄存器中需480GE;S盒替换模块需要74.04GE;轮计数器异或模块需要13.5GE。算法实现中,控制逻辑单元以及计数器共需要37GE。算法所需硬件资源总和为1468.9GE,表3为各分组密码算法ASIC实现列表。
表3各分组密码算法ASIC实现
通过表3中数据对比表明,ASC相对于目前的分组密码,占用面积资源相对较小。
实施例2:
本实施例提供一种基于新型FLM结构的分组密码算法实现方法的系统,其包括:设置模块、明文或密文处理模块、轮密钥扩展模块、加解密模块。
其中,设置模块用于设置初始密钥Key,并确定最大轮数Nr;明文或密文处理模块用于获取明文或者密文,并将所述明文或所述密文均分为四分支;轮密钥扩展模块用于基于所述初始密钥Key进行轮密钥扩展操作得到每一轮加密运算或解密运算的子密钥;加解密模块用于基于新型FLM结构,并利用所述子密钥对所述明文或所述密文执行Nr加密运算或解密运算得到密文或明文。
进一步地,加解密模块至少包括:循环移位变换单元、轮常数异或单元、轮密钥加变换单元、F函数执行单元和P1置换单元。
若是加密运算,循环移位变换单元、轮常数异或单元、轮密钥加变换单元、F函数执行单元和P1置换单元对明文分别对应执行循环移位变换、轮常数异或、轮密钥加变换、F函数和P1置换。
若是解密运算,该加解密模块还包括P2置换单元,P2置换单元、循环移位变换单元、轮常数异或单元、轮密钥加变换单元、F函数执行单元和P1置换单元对密文分别对应执行P2置换、循环移位变换、轮常数异或、轮密钥加变换、F函数和P1置换。其中,解密操作与所述加密操作的区别为:解密操作在加密操作的基础上增加了两个P2置换,并且在解密操作中所使用的子密钥和轮常数与加密操作中使用的顺序相反。
应当理解,各个模块的实现过程可以参照前述方法的内容陈述,上述功能模块的划分仅仅是一种逻辑功能的划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。同时,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
实施例3:
本实施例提供一种电子终端,至少包含:一个或多个处理器;以及存储了一个或多个计算机程序的存储器;其中,所述处理器调用所述计算机程序以执行:一种新型FLM结构的分组密码算法实现方法的步骤。
应用加密时,具体执行:
StepA1:由高位到低位获取64位明文作为待加密数据Plaintext=p63||p63…p1||p0,将64位的明文均分成四组,确定最大轮数Nr为16,且当前轮数表示为i。
StepA2:设置80位的初始密钥Key=k79||k78…k1||k0,将80位的密钥Key进行轮密钥扩展操作,包括循环移位、S盒替换、轮常数异或。其中,重复StepA2过程,迭代16轮,最终得到加密过程所需的全部子密钥。
StepA3:将pl0循环左移7位得到Z0,Z0与pt1和当前轮的轮常数RCi进行异或操作得Z1,即:将Z1循环左移7位得到Z2,Z2与pl0和当前轮的轮常数RCi进行异或操作得Z3,即:/>
StepA4:将Z1与pl0进行异或逻辑运算,运算后的结果再与轮密钥Ki进行异或逻辑运算得到W0,即:
StepA5:将W0进行F函数操作得到W1。
StepA6:将StepA5变换后的结果分别与Pl1和Pr0进行异或逻辑运算得到W2和W3,即:
StepA7:对从高位到低位排列的64位数据Z3||W2||W3||Z1进行P1置换操作,即Z3与W2,W3与Z1进行互换,得到结果可以表示为中间状态Gi,其中Gi=W2||Z3||Z1||W3。
StepA8:对得到的中间状态Gi继续重复StepA1-A7操作。共计16轮,得到从高位到低位依次输出的Ciphertext密文G16。
应用于解密时,具体执行:
StepB1:获取由高位到低位的64位密文作为待解密数据Ciphertext=c63||c63…c1||c0,将64位的密文均分成四组,确定轮数Nr为16,当前轮数表示为i。
StepB2:将从高位到低位排列为cl0||cl1||cr0||cr1的64位数据进行P2置换操作,即cl0与cr0,cl1与cr1进行互换,得到的数据从高位到低位排列为cr0||cr1||cl0||cl1。
StepB3:获取16位的加密时存储的密钥K16=k15||k14||k13…k2||k1||k0,参与本轮的轮密钥加变换。
StepB4:将cr0循环左移7位得到Z′0,Z′0与cl1和轮常数RCi进行异或操作得Z′1,即: 将Z′1循环左移7位得到Z′2,Z′2与cr0和轮常数RCi进行异或操作得Z′3,即:/>
StepB5:将Z′1与cr0进行异或逻辑运算,运算后的结果再与轮密钥K17-i进行异或逻辑运算得到W′0,即:
StepB6:将W′0进行F函数操作得到W′1。
StepB7:将StepB6变换后的结果分别与cr1和cl0进行异或逻辑运算得到W′2和W′3,即:
StepB8:将从高位到低位排列为Z′3||W′2||W′3||Z′1的64位中间数据进行P1置换操作,即Z′3与W′2,W′3与Z′1进行互换,得到中间状态G′i从高位到低位排列为W′2||Z′3||Z′1||W′3,并将数据W′2||Z′3||Z′1||W′3记为cr0||cr1||cl0||cl1。
StepB9:对得到的中间状态cr0||cr1||cl0||cl1继续重复stepB3-B7操作。共计15轮,将G′16从高位到低位排列记为pr0||pr1||pl0||pl1的64位数据进行P2置换操作,即pl0与pr0,pl1与pr1进行互换,得到的数据从高位到低位排列为pl0||pl1||pr0||pr1作为明文Plantertext依次输出。各个步骤的具体实现过程请参照前述方法的阐述。
其中,存储器可能包含高速RAM存储器,也可能还包括非易失性除颤器,例如至少一个磁盘存储器。
如果存储器、处理器独立实现,则存储器、处理器和通信接口可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构总线,外部设备互联总线或扩展工业标准体系结构总线等。所述总线可以分为地址总线、数据总线、控制总线等。
可选的,在具体实现上,如果存储器、处理器集成在一块芯片上,则存储器、处理器可以通过内部接口完成相互之间的通信。
应当理解,在本发明实施例中,所称处理器可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
实施例4:
本实施例提供一种计算机可读存储介质,存储了计算机程序,所述计算机程序被处理器调用以执行:一种新型FLM结构的分组密码算法实现方法的步骤。
应用加密时,具体执行:
StepA1:由高位到低位获取64位明文作为待加密数据Plaintext=p63||p63…p1||p0,将64位的明文均分成四组,确定最大轮数Nr为16,且当前轮数表示为i。
StepA2:设置80位的初始密钥Key=k79||k78…k1||k0,将80位的密钥Key进行轮密钥扩展操作,包括循环移位、S盒替换、轮常数异或。其中,重复StepA2过程,迭代16轮,最终得到加密过程所需的全部子密钥。
StepA3:将pl0循环左移7位得到Z0,Z0与pr1和当前轮的轮常数RCi进行异或操作得Z1,即:将Z1循环左移7位得到Z2,Z2与pl0和当前轮的轮常数RCi进行异或操作得Z3,即:/>
StepA4:将Z1与pl0进行异或逻辑运算,运算后的结果再与轮密钥Ki进行异或逻辑运算得到W0,即:
StepA5:将W0进行F函数操作得到W1。
StepA6:将StepA5变换后的结果分别与Pl1和Pr0进行异或逻辑运算得到W2和W3,即:
StepA7:对从高位到低位排列的64位数据Z3||W2||W3||Z1进行P1置换操作,即Z3与W2,W3与Z1进行互换,得到结果可以表示为中间状态Gi,其中Gi=W2||Z3||Z1||W3。
StepA8:对得到的中间状态Gi继续重复StepA1-A7操作。共计16轮,得到从高位到低位依次输出的Ciphertext密文G16。
应用于解密时,具体执行:
StepB1:获取由高位到低位的64位密文作为待解密数据Ciphertext=c63||c63…c1||c0,将64位的密文均分成四组,确定轮数Nr为16,当前轮数表示为i。
StepB2:将从高位到低位排列为cl0||cl1||cr0||cr1的64位数据进行P2置换操作,即cl0与cr0,cl1与cr1进行互换,得到的数据从高位到低位排列为cr0||cr1||cl0||cl1。
StepB3:获取16位的加密时存储的密钥K16=k15||k14||k13…k2||k1||k0,参与本轮的轮密钥加变换。
StepB4:将cr0循环左移7位得到Z′0,Z′0与cl1和轮常数RCi进行异或操作得Z′1,即: 将Z′1循环左移7位得到Z′2,Z′2与cr0和轮常数RCi进行异或操作得Z′3,即:/>
StepB5:将Z′1与cr0进行异或逻辑运算,运算后的结果再与轮密钥K17-i进行异或逻辑运算得到W′0,即:
StepB6:将W′0进行F函数操作得到W′1。
StepB7:将StepB6变换后的结果分别与cr1和cl0进行异或逻辑运算得到W′2和W′3,即:
StepB8:将从高位到低位排列为Z′3||W′2||W′3||Z′1的64位中间数据进行P1置换操作,即Z′3与W′2,W′3与Z′1进行互换,得到中间状态G′i从高位到低位排列为W′2||Z′3||Z′1||W′3,并将数据W′2||Z′3||Z′1||W′3记为cr0||cr1||cl0||cl1。
StepB9:对得到的中间状态cr0||cr1||cl0||cl1继续重复stepB3-B7操作。共计15轮,将G′16从高位到低位排列记为pr0||pr1||pl0||pl1的64位数据进行P2置换操作,即pl0与pr0,pl1与pr1进行互换,得到的数据从高位到低位排列为pl0||pl1||pr0||pr1作为明文Plantertext依次输出。各个步骤的具体实现过程请参照前述方法的阐述。
所述可读存储介质为计算机可读存储介质,其可以是前述任一实施例所述的控制器的内部存储单元,例如控制器的硬盘或内存。所述可读存储介质也可以是所述控制器的外部存储设备,例如所述控制器上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述可读存储介质还可以既包括所述控制器的内部存储单元也包括外部存储设备。所述可读存储介质用于存储所述计算机程序以及所述控制器所需的其他程序和数据。所述可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的可读存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要强调的是,本发明所述的实例是说明性的,而不是限定性的,因此本发明不限于具体实施方式中所述的实例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,不脱离本发明宗旨和范围的,不论是修改还是替换,同样属于本发明的保护范围。
Claims (10)
1.一种新型FLM结构的分组密码算法实现方法,其特征在于:包括以下步骤:
设置初始密钥Key,并确定最大轮数Nr;
获取明文或者密文,并将所述明文或所述密文均分为四分支;
基于所述初始密钥Key进行轮密钥扩展操作得到每一轮加密运算或解密运算的子密钥;
基于新型FLM结构,并利用所述子密钥对所述明文或所述密文执行Nr轮加密运算或解密运算得到密文或明文;
若是加密运算,对明文执行Nr轮新型FLM结构加密运算,所述新型FLM结构加密运算包括循环移位变换、轮常数异或、轮密钥加变换、F函数和P1置换;
若是解密运算,对密文执行Nr轮新型FLM结构解密运算,且第一轮解密运算之前以及第Nr轮解密运算之后均执行P2置换,所述解密运算中第1至Nr轮新型FLM结构解密运算的子密钥和轮常数与第Nr至1轮新型FLM结构加密运算的子密钥和轮常数是一一对应的,其中,所述P2置换是依据P1置换过程中分支置换规则设计。
2.根据权利要求1所述的方法,其特征在于:P1置换以及P2置换的规则如下:
P1置换:若对64位中间数据Z3||W2||W3||Z1进行P1置换,得到从高位到低位排列为W2||Z3||Z1||W3的64位数据;
P2置换:若对64位中间数据从高位到低位排列为Z′3||W′2||W′3||Z′1进行P2置换,得到从高位到低位排列为W′3||Z′1||Z′3||W′2的64位数据。
3.根据权利要求1所述的方法,其特征在于:所述明文的长度为64位,所述新型FLM结构加密运算的执行过程如下:
B1:将64位的明文由高位到低位分成四个部分pl0、pl1、pr0、pr1,即pl0=p63||p62…p49||p48,pl1=p47||p46…p33||p32,pr0=p31||p30…p17||p16,pr1=p15||p14…p1||p0;其中,||表示字符串连接符,pi表示明文中i位置数据;
B2:将pl0循环左移7位得到Z0,再将Z0与pr1和当前轮的轮常数RCi进行异或操作得Z1,即
B3:将Z1循环左移7位得到Z2,再将Z2与pl0和当前轮的轮常数RCi进行异或操作得Z3,即
B4:将Z1与pl0进行异或逻辑运算,运算结果再与轮密钥Ki进行异或逻辑运算得到W0,即
B5:将W0进行F函数操作得到W1,再将W1分别与pl1和pr0进行异或逻辑运算得到W2和W3,即:
B6:将64位中间数据从高位到低位排列为Z3||W2||W3||Z1,再对Z3||W2||W3||Z1执行P1置换。
4.根据权利要求3所述的方法,其特征在于:所述F函数操作包括S盒替换和列混淆操作,其中,步骤B5中将W0进行F函数操作得到W1的过程为:
首先对W0进行S盒替换操作得到Y0;
再对Y0进行列混淆操作得到W1。
5.根据权利要求4所述的方法,其特征在于:所述列混淆操作的执行过程如下:
选择piccolo算法中的列混淆变换矩阵M,表示如下:
再在GF(24)上进行所述列混淆变换矩阵M与S盒替换后得到的数据Y0进行乘法运算,其中,GF(24)为有限域,表示该有限域总共只有24个元素。
6.根据权利要求1所述的方法,其特征在于:所述轮密钥扩展操作包括循环移位、S盒替换、轮常数异或;
其中,每一轮的所述轮密钥扩展操作的执行过程如下:
C1:将前一轮的轮密钥扩展后的80位密钥循环左移61位,其中,第一轮轮密钥扩展运算的80位密钥为所述初始密钥Key;
C2:将步骤C1所得数据的最高4位进行S盒替换操作,更新所述密钥;
C3:将步骤C2所得的密钥中从低位到高位的第16位至第20位的5位数据与当前轮的轮数进行异或操作;
C4:在步骤C3操作后,得到新的80位密钥作为下一轮的轮密钥扩展的输入,取数据中最高的16位作为当前轮所使用的子密钥。
7.根据权利要求4或6所述的方法,其特征在于:所述S盒替换对应替换规则如下:
x:{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F},S[x]:{E,F,C,8,4,3,7,2,D,5,9,1,0,B,6,A};
其中,x以及S[x]分别为S盒替换前、后的数据。
8.一种基于权利要求1-7任一项所述方法的系统,其特征在于:包括:
设置模块,用于设置初始密钥Key,并确定最大轮数Nr;
明文或密文处理模块,用于获取明文或者密文,并将所述明文或所述密文均分为四分支;
轮密钥扩展模块,用于基于所述初始密钥Key进行轮密钥扩展操作得到每一轮加密运算或解密运算的子密钥;
加解密模块,用于基于新型FLM结构,并利用所述子密钥对所述明文或所述密文执行Nr轮加密运算或解密运算得到密文或明文;
若是加密运算,每一轮加密运算是对明文进行新型FLM结构加密操作,所述新型FLM结构加密操作包括循环移位变换、轮常数异或、轮密钥加变换、F函数和P1置换;
若是加密运算,对明文执行Nr轮新型FLM结构加密运算,所述新型FLM结构加密运算包括循环移位变换、轮常数异或、轮密钥加变换、F函数和P1置换;
若是解密运算,对密文执行Nr轮新型FLM结构解密运算,且第一轮解密运算之前以及第Nr轮解密运算之后均执行P2置换,所述解密运算中第1至Nr轮新型FLM结构解密运算的子密钥和轮常数与第Nr至1轮新型FLM结构加密运算的子密钥和轮常数是一一对应的。
9.一种电子终端,其特征在于:至少包含:
一个或多个处理器;
以及存储了一个或多个计算机程序的存储器;
其中,所述处理器调用所述计算机程序以执行:
权利要求1-7任一项所述方法的步骤。
10.一种计算机可读存储介质,其特征在于:存储了计算机程序,所述计算机程序被处理器调用以执行:
权利要求1-7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310691339.XA CN116743353A (zh) | 2023-06-12 | 2023-06-12 | 一种新型flm结构的分组密码算法实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310691339.XA CN116743353A (zh) | 2023-06-12 | 2023-06-12 | 一种新型flm结构的分组密码算法实现方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116743353A true CN116743353A (zh) | 2023-09-12 |
Family
ID=87903941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310691339.XA Pending CN116743353A (zh) | 2023-06-12 | 2023-06-12 | 一种新型flm结构的分组密码算法实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116743353A (zh) |
-
2023
- 2023-06-12 CN CN202310691339.XA patent/CN116743353A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DK1686722T3 (en) | Block encryption device and block encryption method comprising rotation key programming | |
US8855298B2 (en) | Table lookup operation on masked data | |
JP5272417B2 (ja) | データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム | |
TW201826162A (zh) | 用於藉由位元混合器來產生保密器回合金鑰的方法和系統 | |
US8787563B2 (en) | Data converter, data conversion method and program | |
US8504845B2 (en) | Protecting states of a cryptographic process using group automorphisms | |
CN109768854B (zh) | 一种轻量级分组密码算法的实现方法 | |
KR20090094086A (ko) | 암호 처리 장치, 암호 처리 방법과 컴퓨터 프로그램 | |
CN106487498B (zh) | 电子电路对边信道攻击的抵抗的检验 | |
CN106487497B (zh) | 对rijndael算法的dpa保护 | |
Gueron | Advanced encryption standard (AES) instructions set | |
CN110784307B (zh) | 轻量级密码算法scenery实现方法、装置及存储介质 | |
JP2012215813A (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
TW201545524A (zh) | 用於以第二密文編密演算法之運算修改第一密文編密演算法的技術 | |
CN111431697A (zh) | 一种新型轻量级分组密码corl的实现方法 | |
Teng et al. | Cube attacks on round-reduced TinyJAMBU | |
CN112287333B (zh) | 一种轻量级可调分组密码实现方法、系统、电子设备以及可读存储介质 | |
CN114826560B (zh) | 一种轻量级分组密码cref实现方法及系统 | |
CN116743353A (zh) | 一种新型flm结构的分组密码算法实现方法及系统 | |
JP6890589B2 (ja) | 計算デバイス及び方法 | |
CN110071927B (zh) | 一种信息加密方法、系统及相关组件 | |
CN112134691B (zh) | 一种部件可重复的nlcs分组密码实现方法、装置及介质 | |
US11750369B2 (en) | Circuit module of single round advanced encryption standard | |
CN116866038B (zh) | 动态掩码加密方法及动态掩码加密装置 | |
JP5510587B2 (ja) | データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |