掌桥专利:专业的专利平台
掌桥专利
首页

分组密码轮函数的构造方法、装置、电子设备及存储介质

文献发布时间:2024-04-18 19:52:40


分组密码轮函数的构造方法、装置、电子设备及存储介质

技术领域

本申请涉及信息安全技术领域,特别涉及一种分组密码轮函数的构造方法、装置、电子设备及存储介质。

背景技术

分组密码是最重要的一类对称密码算法,广泛的应用于网络通信中,替换-置换网络(SPN)结构是目前广泛采用的分组密码结构,国际上重要的密码算法标准AES、PRESENT等都采用该结构。SPN结构通过多次迭代轮函数实现,轮函数是设计的关键。轮函数包括混淆层和扩散层,混淆层由非线性运算构成如S盒,模加运算,与运算等,扩散层由可逆的线性运算构成。S盒是非线性的,最常用的混淆技术,根据S盒的输入输出长度,8比特和4比特是最常用的两种,其中算法采用8比特的S盒,硬件占用面积较大,软件实现效率较高;而采用4比特的S盒,硬件占用面积小,同时4比特位S盒并行查询可以由SIMD指令实现,从而在现代PC机上具有高的软件实现效率。线性运算需要具有较强扩散性,通常采用MDS矩阵,比特置换,异或和循环移位等操作构成。轮函数要具有强雪崩性,由轮函数迭代生成的算法要可以抵抗差分、线性、中间相遇等分析方法的攻击,还要具有好的实现效率。

轮函数的构造是分组密码设计中最重要的环节,其中结合S盒和线性层最常见的轮函数构造方法,便于进行算法的安全强度评估,提供强的安全性,同时轮函数也是影响算法加解密速度的关键部件。

现代分组密码算法大多遵循轮函数多轮迭代的设计准则,SPN是最常用的一种结构之一,国际标准AES算法就是采用这种结构,但是AES算法基于8比特S盒硬件实现资源占用比较高。基于该类结构,系列轻量级算法被提出,像Midori、Skinny等,这类算法的设计跟AES算法的结构比较相近,根据分组长度划分为16个单元,按照4*4的矩阵排列,分组长度为64比特的分组,划分为16个4比特单元,而分组长度为128比特的分组划分为16个字节单元。非线性层采用4比特或者8比特S盒,由单元大小决定。线性层包括单元位置置换和类MDS码等简单的运算。基于128比特分组的分组密码,采用4比特S盒作为非线性层,这类算法通常具有比较复杂的线性运算,如uBlock,FESH等,从而导致算法的整体硬件资源占用较高。

对于分组长度128比特的分组密码算法,采用4比特S盒,128比特状态可以划分为32个4比特单元,基于32个4比特单元如何设计线性层,即能满足很好的扩散性,同时花费很少的资源。这方面置换Orthros采用4比特S盒和32位的4比特单元设计,但是在设计中引入了128比特的比特置换,这样虽然可以产生强的扩散性,但是对于算法的安全性证明带来了困难,同时对于算法的软件实现也带来了问题,导致软件实现效率很低。

发明内容

本申请提供一种分组密码轮函数的构造方法、装置、电子设备及存储介质,以解决现有的分组密码算法硬件高效实现时资源占用较高,以及软件实现效率较低的问题。

本申请第一方面实施例提供一种分组密码轮函数的构造方法,包括以下步骤:将明文分组逐比特异或白化密钥生成轮函数初始状态,利用多比特的S盒对所述轮函数进的32个S盒单元逐个行替换;将替换后的轮函数进行比特分组后异或多位常量,并对所述轮函数以S盒为单元的32个位置进行位置置换,使得基于所述轮函数的迭代不存在9轮的不可能差分,同时不存在9轮有效差分路线;利用预设矩阵左乘所述轮函数中间状态矩阵的每一列以进行列混合,并将列混合后的轮函数逐比特异或轮密钥,经过多轮迭代后,得到所述轮函数的最终状态。

可选地,在本申请的一个实施例中,对所述轮函数以S盒为单元的32个位置进行位置置换时的运算性质包括:每一行均进行置换,同1列的元素置换后变到不同的列,两次位置置换后同一列的元素变到不同的列,以及分组密码算法迭代4轮后任何一个S盒将影响到输出的32个S盒单元。

可选地,在本申请的一个实施例中,所述多比特的S盒包括4比特的S盒或8比特的S盒;所述S盒的数量为32个。

可选地,在本申请的一个实施例中,所述多位常量为32位常量。

本申请第二方面实施例提供一种分组密码轮函数的构造装置,包括:替换模块,用于将明文分组逐比特异或白化密钥生成轮函数初始状态,利用多比特的S盒对所述轮函数的32个S盒单元逐个进行替换;置换模块,用于将替换后的轮函数进行比特分组后异或多位常量,对所述轮函数以S盒为单元的32个位置进行位置置换,使得基于所述轮函数的迭代不存在9轮的不可能差分,同时不存在9轮有效差分路线;输出模块,用于利用预设矩阵左乘所述轮函数中间状态矩阵的每一列以进行列混合,并将列混合后的轮函数逐比特异或轮密钥,经过多轮迭代后,得到所述轮函数的最终状态。

可选地,在本申请的一个实施例中,对所述轮函数以S盒为单元的32个位置进行位置置换时的运算性质包括:每一行均进行置换,同1列的元素置换后变到不同的列,两次位置置换后同一列的元素变到不同的列,以及分组密码算法迭代4轮后任何一个S盒将影响到输出的32个S盒单元。

可选地,在本申请的一个实施例中,所述多比特的S盒包括4比特的S盒或8比特的S盒;所述S盒的数量为32个。

可选地,在本申请的一个实施例中,所述多位常量为32位常量。

本申请第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以执行如上述实施例所述的分组密码轮函数的构造方法。

本申请第四方面实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以执行如上述实施例所述的分组密码轮函数的构造方法。

本申请的分组密码轮函数的构造方法、装置、电子设备及存储介质,基于SPN结构采用4比特或8比特S盒,对线性扩散层进行了精细化研究,设计提出的轮函数能够提供充分的混淆扩散,4轮可以实现全扩散,同时基于该轮函数构造的分组密码算法便于对抵抗差分和线性攻击的进行安全性证明。算法硬件占用资源少,采用低延时的S盒获得低延时属性,同时算法便于SIMD指令实现,在软件方面具有高实现效率,以及支持多种运行平台,灵活性强。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为根据本申请实施例提供的一种分组密码轮函数的构造方法的流程图;

图2为根据本申请实施例的分组密码轮函数的构造装置的示例图;

图3为申请实施例提供的电子设备的结构示意图。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。

图1为根据本申请实施例提供的一种分组密码轮函数的构造方法的流程图。

如图1所示,该分组密码轮函数的构造方法包括以下步骤:

在步骤S101中,将明文分组逐比特异或白化密钥生成轮函数初始状态,利用多比特的S盒对轮函数进行替换。

其中,多比特的S盒包括4比特的S盒或8比特的S盒。

作为一个具体的实施方式,以4比特的S盒为例,在本申请的轮函数采用替换-置换网络(SPN)结构作为算法整体结构。SPN结构通过多次迭代轮函数实现,轮函数采用128比特分组长度。加密时,首先将明文分组逐比特异或白化密钥RK

128比特的分组可以表示为32个4比特单元,采用如下的矩阵表示:

轮函数包括:S盒替换(SubByte),字节置换(PosPerm)、列混合(MixColumn)和轮密钥加操作,其中RK

X

for i=0to N-1

{

//第r=i+1轮(r=1,2,…,N)

Y

Z

U

W

X

}

C=X

首先,进行S盒替换。查询32个4比特的S盒。S盒安全强度高,S盒是置换、满足平衡性、差分概率达最优、线性偏差概率达最优、代数次数为3,每1个输出比特的表达式都是非线性,S盒可以根据需要,选择面积小的S盒或者延时小的S盒。此处选择的S盒其替换表如表1所示:

表1 S盒替换表

在步骤S102中,将替换后的轮函数进行比特分组后异或多位常量,并对轮函数以S盒为单元进行位置置换,使得基于轮函数的迭代不存在9轮的不可能差分,同时不存在9轮有效差分路线。

上述实施例的轮函数是基于128比特分组,4比特的S盒设计的,如果将S盒扩展位8比特,则分组长度32*8=256,4轮全扩散以及不同时存在9轮不可能差分和9轮差分的现象也可以满足的,相当于对这个轮函数做一个扩展。

作为一种具体的实施方式,本申请利用一个32位较优的常量异或方式,在轮函数的前两列异或32位常量c={c

表2常量加前两个字节取值

当密钥长度为128比特时,(c

(c

表3常量加后两个字节取值

Z=AddConst(Y),其中z

将S盒替换后获得的32个4比特单元的状态,对每一行进行位置置换,对这32个单元的位置置换顺序如表4所示:

表4每行的位置变换

U=PosPerm(Z)={u

可选地,在本申请的一个实施例中,对轮函数以S盒为单元进行位置置换时的运算性质包括:每一行均进行置换,同1列的元素置换后变到不同的列,两次位置置换后同一列的元素变到不同的列,以及分组密码算法迭代4轮后任何一个S盒将影响到输出的32个S盒单元。

可以理解的是,在以S盒为单元的32个位置的位置置换过程中,存在如下运算性质:

1)每一行均进行置换;

2)同1列的元素置换后变到不同的列;

3)两次位置置换后,同一列的元素变到不同的列;

4)使算法4轮后,1个活性盒输入可以影响到输出的32个S盒单元,即4轮产生全扩散。

进一步地,上述实施例中的轮函数采用的32个单元的位置置换是基于4个包含8个单元的行置换构造的,可以进一步扩展,任意32位的位置置换,可以采用相同的设计要求筛选新的位置置换。在常量加中,常量可以结合密钥调度算法进行参数替换,本领域人员可以根据实际情况进行设置,不作具体限定。

需要说明的是,在本步骤中,若不增加常量,即不进行常量加的操作,或者常量加不符合条件,本申请的实施例可以在下面步骤中进行常量加的操作,例如,可以在轮密钥RKi中增加常量达到本步骤中同等的效果。

在步骤S103中,利用预设矩阵左乘轮函数中间状态矩阵的每一列以进行列混合,并将列混合后的轮函数逐比特异或轮密钥,经过多轮迭代后,得到轮函数的最终状态。

作为一个具体的实施方式,在列混合中,可以用一个4×4的矩阵M左乘中间状态矩阵的每一列,矩阵M如下所示:

其中矩阵M

W={w

/>

在第r轮(r=1,2,…,N)的加密过程中,将列混合运算后状态W逐比特异或轮密钥RK

根据本申请实施例提出的分组密码轮函数的构造方法,提出了位置置换,位置置换采用行变换的方式,并给出了位置置换构造规则,实现4轮产生全扩散,而且便于SIMD、AVX等指令实现。将常量加放到轮函数中,常量加融合了周期为63的6位LFSR、固定常数和随机数三种,每轮介入少量的常数,如32位避免弱密钥,不变子空间攻击等,可适用于计算机通信网络、物联网、移动通信网络等。

其次参照附图描述根据本申请实施例提出的分组密码轮函数的构造装置。

图2为根据本申请实施例的分组密码轮函数的构造装置的方框示意图。

如图2所示,该分组密码轮函数的构造装置10包括:替换模块100、置换模块200和输出模块300。

其中,替换模块100,用于将明文分组逐比特异或白化密钥生成轮函数初始状态,利用多比特的S盒对轮函数的32个S盒单元逐个进行替换;置换模块200,用于将替换后的轮函数进行比特分组后异或多位常量,并对轮函数以S盒为单元的32个位置进行位置置换,使得基于轮函数的迭代不存在9轮的不可能差分,同时不存在9轮有效差分路线;输出模块300,用于利用预设矩阵左乘轮函数中间状态矩阵的每一列以进行列混合,并将列混合后的轮函数逐比特异或轮密钥,经过多轮迭代后,得到轮函数的最终状态。

可选地,在本申请的实施例中,对轮函数以S盒为单元的32个位置进行位置置换时的运算性质包括:每一行均进行置换,同1列的元素置换后变到不同的列,两次位置置换后同一列的元素变到不同的列,以及分组密码算法迭代4轮后任何一个S盒将影响到输出的32个S盒单元。

可选地,在本申请的实施例中,多比特的S盒包括4比特的S盒或8比特的S盒;S盒的数量为32个。

可选地,在本申请的实施例中,多位常量为32位常量。

需要说明的是,前述对分组密码轮函数的构造方法实施例的解释说明也适用于该实施例的分组密码轮函数的构造装置,此处不再赘述。

根据本申请实施例提出的分组密码轮函数的构造装置,基于SPN结构采用4比特S盒,对线性扩散层进行了精细化研究,设计提出的轮函数能够提供充分的混淆扩散,4轮可以实现全扩散,同时基于该轮函数构造的分组密码算法便于对抵抗差分和线性攻击的进行安全性证明。算法硬件占用资源少,采用低延时的S盒获得低延时属性,同时算法便于SIMD指令实现,在软件方面具有高实现效率,以及支持多种运行平台,灵活性强。

图3为本申请实施例提供的电子设备的结构示意图。该电子设备可以包括:

存储器301、处理器302及存储在存储器301上并可在处理器302上运行的计算机程序。

处理器302执行程序时实现上述实施例中提供的分组密码轮函数的构造方法。

进一步地,电子设备还包括:

通信接口303,用于存储器301和处理器302之间的通信。

存储器301,用于存放可在处理器302上运行的计算机程序。

存储器301可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

如果存储器301、处理器302和通信接口303独立实现,则通信接口303、存储器301和处理器302可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(PeripheralComponent,简称为PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

可选的,在具体实现上,如果存储器301、处理器302及通信接口303,集成在一块芯片上实现,则存储器301、处理器302及通信接口303可以通过内部接口完成相互间的通信。

处理器302可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。

本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上的分组密码轮函数的构造方法。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或N个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“N个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更N个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,N个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

技术分类

06120116335238