CN103427986A - 获取分组密码活跃s盒个数下界的方法 - Google Patents
获取分组密码活跃s盒个数下界的方法 Download PDFInfo
- Publication number
- CN103427986A CN103427986A CN2013103685788A CN201310368578A CN103427986A CN 103427986 A CN103427986 A CN 103427986A CN 2013103685788 A CN2013103685788 A CN 2013103685788A CN 201310368578 A CN201310368578 A CN 201310368578A CN 103427986 A CN103427986 A CN 103427986A
- Authority
- CN
- China
- Prior art keywords
- box
- bit
- difference
- input
- variable
- 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.)
- Granted
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种获取比特级置换线性扩散层分组密码活跃S盒个数下界的方法,包括:对使用比特级置换作为扩散层的分组密码中的每个S盒的每个输入比特和每个输出比特引入差分变量,并对所述每个S盒引入活跃变量;针对所述每个S盒,分析S盒操作和位置换操作对差分模式传播的限制,并以最小化所述分组密码中所有S盒的活跃变量之和为目标对所述每个S盒的每个输入比特和每个输出比特的差分变量以及每个S盒的活跃变量赋予所述限制,以建立一混合整数的线性规划问题;求解所述混合整数线性规划问题,以获得活跃S盒的下界。本发明大大降低了密码设计工作量和出错概率,填补了本领域空白,同样适用于采用非极大距离可分码构造的线性扩散层。
Description
技术领域
本发明涉及信息安全分组密码设计与分析领域,特别涉及一种获取分组密码中活跃S盒个数下界的方法。
背景技术
对称密码是指加密和解密使用同一密钥的密码算法,主要用于数据加密。其中分组密码是一种广泛使用的对称密码。分组密码的加密是指在长度为m比特主密钥的控制下将固定长度(如n比特)的明文变为相同长度(如果明文长度是n,则密文长度也为n)的密文,解密则是指将密文在同一密钥的控制下恢复出明文。其中,n为明文的分组长度,m为主密钥长度,m为正整数,n为正整数。
分组密码不仅可以用于数据加密,还可用于构造杂凑函数(Hash Function)和消息认证码(MAC,Message Authentication Code)等,这使得分组密码的应用非常广泛。设计一个安全高效的分组密码,是信息安全研究领域一个至关重要的课题。
SPN(替换置换网络)结构,是设计分组密码最常采用的结构之一。设计一个SPN结构分组密码的核心在于设计一个合适的轮函数,并将轮函数迭代数次以达到足够的安全性。一个将轮函数迭代r次的SPN分组密码,我们称该分组密码有r轮,其中r为正整数。一个分组长度为n的r轮SPN分组密码,每轮需要使用一个n比特子密钥,每轮用到的子密钥是由该分组密码的主密钥通过一个确定的密钥扩展算法得到的。
分组长度为n的SPN结构分组密码的轮函数结构通常包括三个操作,如图1所示。这三个操作依次为
(1)、轮密钥异或操作。将轮函数的n个输入比特(图1中箭头表示)与相应轮的子密钥进行异或操作,并输出n个输出比特。
(2)、分组S盒操作。将操作(1)中的n个输出比特分成n/w组输出比特,其中w为正整数,n被w整除,从而每组输出比特均为w比特;每组输出比特经过一个S盒后得到新的输出比特,其中所述S盒的输入和输出都为w比特,共有n/w个S盒分别处理经过步骤1的异或操作之后并分组的输出比特。
如图2所示,为一个S盒的输入输出示意图。一个输入和输出都为w比特的S盒本质上是一个映射:
x | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
S(x) | 1100 | 0101 | 0110 | 1011 | 1001 | 0000 | 1010 | 1101 | 0011 | 1110 | 1111 | 1000 | 0100 | 0111 | 0001 | 0010 |
由表1可知:S(0000)=1100、S(0001)=0101、S(0010)=0110、S(0011)=1011、S(0100)=1001、S(0101)=0000、S(0110)=1010、S(0111)=1101、S(1000)=0011、S(1001)=1110、S(1010)=1111、S(1011)=1000、S(1100)=0100、S(1101)=0111、S(1110)=0001、S(1111)=0010。
(3)、线性扩散层操作。将操作(2)中S盒输出的输出比特经过一个线性变换得到输出比特作为下一个轮函数的输入比特。
图1中,操作(2)和操作(3)也分别称为非线性替换层和线性扩散层。
现代信息社会中微型计算设备的广泛使用,使得对轻量级分组密码的需求越来越迫切。如何设计一个实现后电路面积小,功耗低又安全的轻量级分组密码,已在密码学界和工业界引起了广泛兴趣。使用硬件实现成本极低的比特级置换线性扩散层来构造轮函数,是得到轻量级SPN分组密码的方法之一。如PRESENT(一种轻量级分组密码的名称)这个已成为国际标准的轻量级分组密码,便使用该方法设计其线性扩散层。比特级置换线性扩散层的作用是把所输入的比特的位置打乱,如在图1中,可给出一个输入和输出长度都为16比特的比特级置换线性扩散层。
图3所示为一个输入和输出长度都为16比特的比特级置换线性扩散层的示意图。其中,可设置:位置1的比特、位置6的比特、位置11的比特和位置16的比特保持原位置,将位置2的比特置换到位置5,将位置3的比特置换到位置8,将位置4的比特置换到位置13,将位置5的比特置换到位置2,将位置7的比特置换到位置10,将位置8的比特置换到位置3,将位置9的比特置换到位置14,将位置10的比特置换到位置7,将位置12的比特置换到位置15,将位置13的比特置换到位置4,将位置14的比特置换到位置9,将位置15的比特置换到位置12。图3所示的置换线性扩散层中各个位置关系也可参照表2所示。
表2:输入和输出长度都为16比特的置换线性扩散层的置换表
j | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
Q(j) | 1 | 5 | 8 | 13 | 2 | 6 | 10 | 3 | 14 | 7 | 11 | 15 | 4 | 9 | 12 | 16 |
虽然以比特级置换作为线性扩散层构造的轮函数可以大大降低轮函数的硬件实现成本,但更需要注意的是,这种设计的轮函数需要迭代多少轮,才能抵抗所有已知攻击。
差分攻击是所有已知攻击中的一种重要方法,它通过分析特定明文对的差值对应于密文对的差值的影响来获得某些密钥比特。它可以用来攻击和分析任何由迭代一个固定的轮函数构造的密码体制,包括SPN分组密码,其中包括DES(Data EncryptionStandard,数据加密算法),AES(Advanced Encryption Standard,高级加密标准)。差分攻击涉及选择具有某种特殊差分模式的明文对,使得具有某种特殊差分模式的密文对出现的概率较高,差分攻击用这些特征来计算可能的密钥。差分攻击很大程度上依赖于S盒的结构。
因此,为了抵抗差分攻击,新设计的所有分组密码,都必须证明其对差分攻击的安全性。2001年美国国家标准技术研究所(NIST,National Institute of Standards andTechnology)推出了新的数据加密算法标准AES(Advanced Encryption Standard,高级加密标准)。AES基于SPN结构,其设计采用了字节置换和极大距离可分码作为其线性扩散层,该设计可以证明AES能够抵抗差分攻击。
由于差分攻击的有效性依赖于选定的差分特征的概率,概率越高,攻击越有效,因此需要证明AES的差分特征概率非常低,低于某一个安全界。在差分传播过程中,线性操作对其影响是确定的,而非线性部件对其影响是不确定的。AES中唯一的非线性部分是S盒。对于S盒而言,输入差分为0,则输出差分一定为0;输入差分非0,则输出差分不确定,但满足一定的分布。通常,输入差分为非0的S盒称为活跃S盒。在AES的安全性证明中,通过计算连续r轮密码的活跃S盒数目的下界来给出最佳差分特征概率的上界,以此证明AES抵抗差分攻击的能力。此后,计算活跃S盒数目的下界成为证明分组密码抗差分攻击的一种有效方法。
目前,关于如何计算活跃S盒数目的下界方面,已有许多工作,这些工作可以分为两大类:第一类通过数学证明的方法确定下界,例如证明5轮AES至少有25个活跃S盒,以及证明5轮的PRESENT至少有10个活跃S盒,这类方法需要一定技巧,有时需要枚举差分传播的各类情况,因此比较复杂;第二类通过设计程序并用程序自动化搜索,例如使用Matsui(一种算法名称)算法计算Camellia(一种分组密码)的活跃S盒数目的下界,用基于字的截断差分搜索广义Feistel(一种密码结构)结构的活跃S盒数目的下界,以及用混合整数线性规划(MILP,Mixed-Integer LinearProgramming)的方法来确定SPN结构的密码和Feistel结构的密码(Feistel结构的轮函数为SPN结构)的活跃S盒数目的下界。
这些计算活跃S盒数目的下界的方法中,基于MILP(混合整数线性规划)的方法是最易使用、自动化最高的,因为唯一需要做的工作是把要分析的分组密码描述成带差分传播限制的MILP问题,剩下的工作,即计算活跃S盒数目的下界,可由高度优化的求解MILP问题求解器来完成。
但是,已有的基于MILP求解活跃S盒个数下界方法,仅适用于基于字的线性扩散层,且要求此线性扩散层是由极大距离可分码构造的。近年来所提出的一批轻量级分组密码,如PRESNT、PRINTCIPHER、PRINCE,由于这些分组密码要获得轻量级的硬件实现或软件实现,其置换层往往是比特级置换或者是非极大距离可分码。因此已有的方法不能计算这些分组密码活跃S盒个数的下界。
发明内容
有鉴于此,本发明提供一种方法以获取使用比特级置换作为线性扩散层分组密码活跃S盒个数的下界,该方法也同样适用于线性扩散层是非极大距离可分码的情况。
本申请的技术方案是这样实现的:
一种获取使用比特级置换作为线性扩散层的分组密码活跃S盒个数下界的方法,包括:
对使用比特级置换作为扩散层的分组密码中的每一个S盒的每个输入比特和每个输出比特,引入差分变量,并对所述每一个S盒引入活跃变量;
针对所述每一个S盒,分析S盒操作、轮密钥异或操作和比特级换操作对差分模式传播的限制,并以最小化所述分组密码中所有S盒的活跃变量之和为目标对所述每一个S盒的每个输入比特和每个输出比特的差分变量以及每一个S盒的活跃变量赋予所述限制,以建立一混合整数的线性规划问题;
求解所述混合整数线性规划问题,以获得活跃S盒个数的下界。
进一步:
所述分组密码的分组长度为B比特,所述分组密码共有R轮,每一轮中具有T个S盒,所述分组密码中共有G个S盒,每个S盒具有P个输入比特和P个输出比特;
其中,G=T×R,P=B/T,B、R、T、G、P均为正整数,且B能够被T整除。
进一步:
所述分组密码中,任意一个S盒的任意一个输入比特位置所引入的差分变量表示为x[r,t,p],任意一个S盒的任意一个输出比特位置所引入的差分变量表示为y[r,t,p],每个x[r,t,p]变量以及每个y[r,t,p]变量只取0和1其中的一个值;
若x[r,t,p]=1,则表示该x[r,t,p]所代表的S盒的输入比特位置有差分;
若x[r,t,p]=0,则表示该x[r,t,p]所代表的S盒的输入比特位置没有差分;
若y[r,t,p]=1,则表示该x[r,t,p]所代表的S盒的输出比特位置有差分;
若y[r,t,p]=0,则表示该x[r,t,p]所代表的S盒的输出比特位置没有差分;
其中,r的取值范围为从1到R的整数,t的取值范围为从1到T的整数,p的取值范围为从1到P的整数。
进一步:
所述分组密码中,任意一个S盒所引入的活跃变量表示为A[r,t],每个A[r,t]变量只取0和1其中的一个值;
若A[r,t]=1,则表示该A[r,t]所代表的S盒为活跃S盒;
若A[r,t]=0,则表示该A[r,t]所代表的S盒为不活跃S盒;
其中,r的取值范围为从1到R的整数,t的取值范围为从1到T的整数。
进一步,所述限制包括:
对于A[r,t]变量所代表的S盒,对所述差分模式传播具有如下限制:
限制一,保证当A[r,t]变量所代表的S盒为活跃S盒时,该S盒的输入差分中,至少有一个输入比特变量的值为1,即:
x[r,t,1]+…+x[r,t,P]-A[r,t]≥0
限制二,保证当A[r,t]变量所表示的S盒的输入差分中有一个非零比特时,该S盒必须是活跃S盒,即:
x[r,t,p]-A[t]≤0
限制三:
非零输入差分一定导致非零输出差分,且非零输出差分一定导致非零输入差分,即:
Py[r,t,1]+…+Py[r,t,P]-x[r,t,1]-…-x[r,t,P]≥0
且
Px[r,t,1]+…+Px[r,t,P]-y[r,t,1]-…-y[r,t,P]≥0
限制四:
保证当A[r,t]变量所代表的S盒的输入差分中有1比特非零时,输出差分中至少有B比特非零,即:
x[r,t,1]+…+x[r,t,P]+y[r,t,1]+…+y[r,t,P]≥B×d
其中,d≥x[r,t,1]、…、d≥x[r,t,P]、d≥y[r,t,1]、…、d≥y[r,t,P],B为A[r,t]变量所代表的S盒的极大分支数。
进一步,所述限制包括:
所述分组密码的每一轮中,轮密钥异或操作的输入输出差分限制为:
所述轮密钥异或操作的两个输入比特和一个输出比特之和大于等于2倍的d⊕,且d⊕大于等于所述轮密钥异或操作的两个输入比特和一个输出比特,即
z[1]+z[2]+z[3]≥2d⊕
d⊕≥z[1]
d⊕≥z[2]
d⊕≥z[3]
其中,z[1]、z[2]为所述异或操作的两个输入比特,z[3]为所述异或操作的输出比特,d⊕为差分标记变量,其值只取0和1,当z[1],z[2],z[3]中有任意一个变量取1时,d⊕取1,否则d⊕取0。
进一步,所述限制包括:
限制所述分组密码的输入差分不全为0。
进一步,所述分组密码中所有S盒的活跃变量之和为:
从上述方案可以看出,本发明所提供的方法,将一个分组密码体制的差分传播性质描述成一个混合整数线性规划问题,然后求解该混合整数线性规划问以获得活跃S盒个数的下界,进而大大降低了密码设计工作量和出错概率。与现有技术相比,本发明的方法实现了对于使用比特级置换作及非极大距离可分码作为扩散层的分组密码,计算其活跃S盒个数的下界,而现有技术中尚没有能够计算使用比特级置换作及非极大距离可分码作为扩散层的分组密码中活跃S盒个数的下界的方法,因此本发明填补了这一空白。同时,本发明的方法也同样适用于采用非极大距离可分码构造的线性扩散层。
附图说明
图1为SPN结构分组密码的轮函数结构图;
图2为一个S盒的输入输出示意图;
图3为一个输入和输出长度都为16比特的置换线性扩散层的示意图;
图4为本发明的获取比特级置换线性扩散层分组密码活跃S盒个数下界的方法流程图;
图5为分组长度为16比特的使用比特级置换作为线性扩散层的分组密码结构实施例示意图;
图6为分组密码中任意一个S盒的输入输出示意图;
图7为图5中任意一个S盒的输入输出示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
参见图4所示,本发明的获取分组密码活跃S盒个数下界的方法主要包括以下过程。
步骤1、对使用比特级置换作为扩散层的分组密码中的每一个S盒的每个输入比特和每个输出比特,引入差分变量,并对所述每一个S盒引入活跃变量;
步骤2、针对所述每一个S盒,分析S盒操作、轮密钥异或操作和比特级置换操作对差分模式传播的限制,并以最小化所述分组密码中所有S盒的活跃变量之和为目标对所述每一个S盒的每个输入比特和每个输出比特的差分变量以及每一个S盒的活跃变量赋予所述限制,以建立一混合整数的线性规划问题;
步骤3、求解所述混合整数线性规划问题,以获得活跃S盒个数的下界。
以下结合图5、图6、图7对上述方法进行进一步说明。
步骤1、对使用比特级置换作为扩散层的分组密码中的每一个S盒的每个输入比特和每个输出比特,引入差分变量,并对所述每一个S盒引入活跃变量。
其中,所述使用比特级置换作为扩散层的分组密码的分组长度为B比特,所属分组密码共有R轮,每一轮中具有T个S盒,所述分组密码中共有G个S盒,每个S盒具有P个输入比特和P个输出比特;其中,G=T×R,P=B/T,B、R、T、G、P均为正整数,且B能够被T整除。
例如图5所示,为本步骤1所提供的一使用比特级置换作为扩散层的分组密码实施例示意图,图5所示的分组密码中B=16,即图5所示为分组长度为16比特的使用比特级置换作为扩散层的分组密码,以下结合图5所示实施例,对本发明各个步骤进行详细说明。
图5所示实施例的分组密码中,R=4,即共有4轮,每一轮均有三步操作,参见图1和背景技术的介绍,即:
(1)、轮密钥抑或操作;
(2)、分组S盒操作;
(3)、线性扩散层操作。
每一轮中T=4,即每一轮中具有4个S盒,对于每个S盒来说P=4,即每个S盒具有4个输入比特和4个输出比特。
经过每一轮的操作(3)之后,进入下一轮的操作(1),即16比特明文经过图5所示的分组密码进行加密,在经过第1轮的操作(3)之后进入第2轮的操作(1),在经过第2轮的操作(3)之后进入第3轮的操作(1),在经过第3轮的操作(3)之后进入第4轮的操作(1)。
如图5所示,每轮中的线性扩散层的输入输出置换关系如表3所示。
表3:图5所示的线性扩散层的置换表
j | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
P(j) | 1 | 5 | 9 | 13 | 2 | 6 | 10 | 14 | 3 | 7 | 11 | 15 | 4 | 8 | 12 | 16 |
图5中的线性扩散层中:位置1的比特、位置6的比特、位置11的比特和位置16的比特保持原位置,将位置2的比特置换到位置5,将位置3的比特置换到位置9,将位置4的比特置换到位置13,将位置5的比特置换到位置2,将位置7的比特置换到位置10,将位置8的比特置换到位置14,将位置9的比特置换到位置3,将位置10的比特置换到位置7,将位置12的比特置换到位置15,将位置13的比特置换到位置4,将位置14的比特置换到位置8,将位置15的比特置换到位置12。
参见图6所示,所述分组密码中,任意一个S盒的任意一个输入比特位置所引入的差分变量表示为x[r,t,p],任意一个S盒的任意一个输出比特位置所引入的差分变量表示为y[r,t,p],每个x[r,t,p]变量以及每个y[r,t,p]变量只取0和1其中的一个值;若x[r,t,p]=1,则表示该x[r,t,p]所代表的S盒的输入比特位置有差分;若x[r,t,p]=0,则表示该x[r,t,p]所代表的S盒的输入比特位置没有差分;若y[r,t,p]=1,则表示该x[r,t,p]所代表的S盒的输出比特位置有差分;若y[r,t,p]=0,则表示该x[r,t,p]所代表的S盒的输出比特位置没有差分;其中,r的取值范围为从1到R的整数,t的取值范围为从1到T的整数,p的取值范围为从1到P的整数。
图6中,若x[r,t,1]=1,则表示该x[r,t,1]所代表的S盒的输入比特位置有差分;若x[r,t,2]=1,则表示该x[r,t,2]所代表的S盒的输入比特位置有差分;……;若x[r,t,P]=1,则表示该x[r,t,P]所代表的S盒的输入比特位置有差分;若x[r,t,1]=0,则表示该x[r,t,1]所代表的S盒的输入比特位置没有差分;若x[r,t,2]=0,则表示该x[r,t,2]所代表的S盒的输入比特位置没有差分;……;若x[r,t,P]=0,则表示该x[r,t,P]所代表的S盒的输入比特位置没有差分。
图6中,若y[r,t,1]=1,则表示该y[r,t,1]所代表的S盒的输出比特位置有差分;若y[r,t,2]=1,则表示该y[r,t,2]所代表的S盒的输出比特位置有差分;……;若y[r,t,P]=1,则表示该y[r,t,P]所代表的S盒的输出比特位置有差分;若y[r,t,1]=0,则表示该y[r,t,1]所代表的S盒的输出比特位置没有差分;若y[r,t,2]=0,则表示该y[r,t,2]所代表的S盒的输出比特位置没有差分;……;若y[r,t,P]=0,则表示该y[r,t,P]所代表的S盒的输出比特位置没有差分。
如图6所示,所述分组密码中,任意一个S盒所引入的活跃变量表示为A[r,t],每个A[r,t]变量只取0和1其中的一个值;若A[r,t]=1,则表示该A[r,t]所代表的S盒为活跃S盒;若A[r,t]=0,则表示该A[r,t]所代表的S盒为不活跃S盒;其中,r的取值范围为从1到R的整数,t的取值范围为从1到T的整数。本发明中,S盒为活跃S盒的标准为:若S盒的P个输入比特的差分不全为0,则该S盒为活跃S盒。
图6所示的任意一个S盒具体到图5所示实施例中,可参照图7所示。该实施例中,任意一个S盒引入活跃变量A[r,t]表示其是否为活跃S盒,其中r为从1到4的整数,t为从1到4的整数,该S盒中,共有4个输入比特位置,该4个输入比特位置所引入的差分变量分别表示为x[r,t,1]、x[r,t,2]、x[r,t,3]、x[r,t,4],共有4个输出比特位置,该4个输出比特位置所引入的差分变量分别表示为y[r,t,1]、y[r,t,2]、y[r,t,3]、y[r,t,4]。
图5中,若A[1,1]=1,则表示A[1,1]所代表的S盒为活跃S盒;若A[1,1]=0,则表示A[1,1]所代表的S盒为不活跃S盒;若A[1,2]=1,则表示A[1,2]所代表的S盒为活跃S盒;若A[1,2]=0,则表示A[1,2]所代表的S盒为不活跃S盒;……;若A[4,4]=1,则表示A[4,4]所代表的S盒为活跃S盒;若A[4,4]=0,则表示A[4,4]所代表的S盒为不活跃S盒。
步骤2、针对所述每一个S盒,分析S盒操作、轮密钥抑或操作和比特级置换操作对差分模式传播的限制,并以最小化所述分组密码中所有S盒的活跃变量之和为目标对所述每一个S盒的每个输入比特和每个输出比特的差分变量以及每一个S盒的活跃变量赋予所述限制,以建立一混合整数的线性规划问题。
步骤2中涉及两个运算:S盒操作和比特级置换操作。
A、关于S盒操作:
对于一个P比特输入和P比特输出的S盒来说,它对输入、输出差分模式和S盒活跃状态标识变量具有以下限制:
限制一:
x[r,t,1]+…+x[r,t,P]-A[r,t]≥0
该限制一是为了保证当A[r,t]变量所代表的S盒为活跃S盒时,该S盒的输入差分中,至少有一个输入比特变量的值为1。
例如,对于图5所示的实施例中,共有16个S盒,对于其中任意一个S盒来说,参照图7所示,均具有4个输入比特和4个输出比特,4个输入比特分别为x[r,t,1]、x[r,t,2]、x[r,t,3]、x[r,t,4],4个输出比特分别设为y[r,t,1]、y[r,t,2]、y[r,t,3]、y[r,t,4],则
x[r,t,1]+x[r,t,2]+x[r,t,3]+x[r,t,4]-A[r,t]≥0
对于图5所示的实施例,该限制一是为了保证当A[r,t]变量所代表的S盒为活跃S盒时(即A[r,t]=1时),x[r,t,1]、x[r,t,2]、x[r,t,3]、x[r,t,4]中,至少有一个变量的值为1。
更具体的例子,对于图5中,A[2,3]变量所表示的S盒的4个输入比特分别为x[2,3,1]、x[2,3,2]、x[2,3,3]、x[2,3,4],4个输出比特分别设为y[2,3,1]、y[2,3,2]、y[2,3,3]、y[2,3,4],则
x[2,3,1]+x[2,3,2]+x[2,3,3]+x[2,3,4]-A[2,3]≥0
对于图5所示的实施例,该限制一是为了保证当A[2,3]变量所代表的S盒为活跃S盒时(即A[2,3]=1时),x[2,3,1]、x[2,3,2]、x[2,3,3]、x[2,3,4]中,至少有一个变量的值为1。
图5中,除了A[2,3]变量所代表的S盒外,本领域技术人员可参照上述限制一的一般性描述和具体的A[2,3]变量所代表的S盒限制一的描述,获得其他S盒的限制一,此处不再赘述。
限制二:
x[r,t,p]-A[t]≤0
该限制二是为了保证当A[r,t]变量所代表的S盒输入差分有一个非零比特时,该S盒必须是活跃的(即A[r,t]=1)。
例如,对于图5所示的实施例中,对于A[r,t]变量所代表的S盒来说:
x[r,t,1]-A[r,t]≤0、x[r,t,2]-A[r,t]≤0、x[r,t,3]-A[r,t]≤0、x[r,t,4]-A[r,t]≤0
对于图5所示的实施例,该限制二是为了保证当输入差分x[r,t,1]、x[r,t,2]、x[r,t,3]、x[r,t,4]中有一个非零比特时,A[r,t]变量所代表的S盒必须是活跃S盒(即A[r,t]=1)。
更具体的例子,对于图5中,A[2,3]变量所代表的S盒来说:
x[2,3,1]-A[2,3]≤0、x[2,3,2]-A[2,3]≤0
x[2,3,3]-A[2,3]≤0、x[2,3,4]-A[2,3]≤0
对于图5所示的实施例,该限制二是为了保证当输入差分x[2,3,1]、x[2,3,2]、x[2,3,3]、x[2,3,4]中有一个非零比特时,A[2,3]变量所代表的S盒必须是活跃S盒(即A[2,3]=1)。
图5中,除了A[2,3]变量所代表的S盒外,本领域技术人员可参照上述限制二的一般性描述和具体的A[2,3]变量所代表的S盒限制二的描述,获得其他S盒的限制二,此处不再赘述。
限制三:
非零输入差分一定导致非零输出差分,且非零输出差分一定导致非零输入差分:
Py[r,t,1]+…+Py[r,t,P]-x[r,t,1]-…-x[r,t,P]≥0
并且
Px[r,t,1]+…+Px[r,t,P]-y[r,t,1]-…-y[r,t,P]≥0
例如,对于图5所示的实施例中,对于A[r,t]变量所表示S盒来说:
4y[r,t,1]+4y[r,t,2]+4y[r,t,3]+4y[r,t,4]-x[r,t,1]-x[r,t,2]-x[r,t,3]-x[r,t,4]≥0
并且
4x[r,t,1]+4x[r,t,2]+4x[r,t,3]+4x[r,t,4]-y[r,t,1]-y[r,t,2]-y[r,t,3]-y[r,t,4]≥0
更具体的例子,对于图5中,A[2,3]变量所代表的S盒来说:
4y[2,3,1]+4y[2,3,2]+4y[2,3,3]+4y[2,3,4]-x[2,3,1]-x[2,3,2]-x[2,3,3]-x[2,3,4]≥0
并且
4x[2,3,1]+4x[r2,3,2]+4x[2,3,3]+4x[2,3,4]-y[2,3,1]-y[2,3,2]-y[2,3,3]-y[2,3,4]≥0
图5中,除了A[2,3]变量所代表的S盒外,本领域技术人员可参照上述限制三的一般性描述和具体的A[2,3]变量所代表的S盒限制三的描述,获得其他S盒的限制三,此处不再赘述。
限制四:
保证当A[r,t]变量所代表的S盒的输入差分中有1比特非零时,输出差分中至少有B比特非零:
x[r,t,1]+…+x[r,t,P]+y[r,t,1]+…+y[r,t,P]≥B×d
其中,d≥x[r,t,1]、…、d≥x[r,t,P]、d≥y[r,t,1]、…、d≥y[r,t,P]。
其中d为输入输出差分标记变量,当x[r,t,1]、…、x[r,t,P]、y[r,t,1]、…、y[r,t,P]中任意一个变量取1时,d取1,否则取0。B为A[r,t]变量所代表的S盒的极大分支数。
例如,对于图5所示的实施例中,对于A[r,t]变量所表示S盒来说:
x[r,t,1]+x[r,t,2]+x[r,t,3]+x[r,t,4]+y[r,t,1]+y[r,t,2]+y[r,t,3]+y[r,t,4]≥4×d
其中,d≥x[r,t,1]、d≥x[r,t,2]、d≥x[r,t,3]、d≥x[r,t,4]、d≥y[r,t,1]、d≥y[r,t,2]、d≥y[r,t,3]、d≥y[r,t,4]。
其中,极大分支数的定义为:
其中,Bs为S盒的极大分支数,wt为一二进制数据串的汉明重量,即非零数据位的个数,a、b分别为S盒的输入变量,S(a)表示此S盒以a为输入时的输出值,S(b)表示此S盒以b为输入时的输出值。
更具体的例子,对于图5中,A[2,3]变量所代表的S盒来说:
x[2,3,1]+x[2,3,2]+x[2,3,3]+x[2,3,4]+y[2,3,1]+y[2,3,2]+y[2,3,3]+y[2,3,4]≥4×d
其中,d≥x[2,3,1]、d≥x[2,3,2]、d≥x[2,3,3]、d≥x[2,3,4]、d≥y[2,31]、d≥y[2,3,2]、d≥y[2,3,3]、d≥y[2,3,4]。
图5中,除了A[2,3]变量所代表的S盒外,本领域技术人员可参照上述限制四的一般性描述和具体的A[2,3]变量所代表的S盒限制四的描述,获得其他S盒的限制四,此处不再赘述。
B、关于轮密钥异或操作
对于轮密钥异或操作的输入输出差分,具有如下限制:
轮密钥异或操作的两个输入比特和一个输出比特之和大于等于2倍的d⊕,且d⊕大于等于异或操作的两个输入比特和一个输出比特。用数学公式表示,设z[1]、z[2]为异或操作的两个输入比特,z[3]为异或操作的输出比特,则满足如下约束:
z[1]+z[2]+z[3]≥2d⊕
d⊕≥z[1]
d⊕≥z[2]
d⊕≥z[3]
其中,d⊕为差分标记变量,其值只取0和1,当z[1],z[2],z[3]中有任意一个变量取1时,d⊕取1,否则d⊕取0。为排除0输入差分导致0个活跃S盒的平凡情况的发生,限制使用比特级置换作为扩散层的分组密码的密码体制的输入差分不全为0。在数学中,平凡表示显而易见或没有实质意义。
至此,以最小化所述分组密码中所有S盒的活跃变量之和为目标,对每一个S盒的每个输入比特和每个输出比特的差分变量以及每一个S盒的活跃变量赋予上述限制,建立一个混合整数的线性规划问题。
其中,所述分组密码中所有S盒的活跃变量之和表示为:
例如,对于图5所示的实施例,至此,便以最小化:
即
A[1,1]+A[1,2]+A[1,3]+A[1,4]+A[2,1]+A[2,2]+A[2,3]+A[2,4]+
A[3,1]+A[3,2]+A[3,3]+A[3,4]+A[4,1]+A[4,2]+A[4,3]+A[4,4]
为目标,对所有变量赋予上述约束,建立一个混合整数的线性规划问题。
步骤4、求解上述混合整数线性规划问题,以获得活跃S盒的下界。
关于混合整数线性规划问题,即是在满足如下不等式的前提下
寻找当一组xj的赋值,满足当1≤j≤t时,使得式
达到最小值。
其中,i、j、N、M均为正整数,aij为任意实数,cj为任意实数,xj为整数,t为大于等于2且小于N的整数。求解该问题的方法包括分支定界法,分支切割法,切割平面法等等。
关于求解混合整数线性规划问题为本领域已有技术,此处不再赘述。
本发明的上述方法,将一个分组密码体制的差分传播性质描述成一个混合整数线性规划问题,然后求解该混合整数线性规划问以获得活跃S盒个数的下界,进而大大降低了密码设计工作量和出错概率。与现有技术相比,本发明的上述方法实现了对于使用比特级置换作及非极大距离可分码作为扩散层的分组密码,计算其活跃S盒个数的下界,而现有技术中尚没有能够计算使用比特级置换作及非极大距离可分码作为扩散层的分组密码中活跃S盒个数的下界的方法,因此本发明填补了这一空白。同时,本发明的方法也同样适用于采用非极大距离可分码构造的线性扩散层。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (8)
1.一种获取使用比特级置换作为线性扩散层的分组密码活跃S盒个数下界的方法,其特征在于,包括:
对使用比特级置换作为扩散层的分组密码中的每一个S盒的每个输入比特和每个输出比特,引入差分变量,并对所述每一个S盒引入活跃变量;
针对所述每一个S盒,分析S盒操作、轮密钥异或操作和比特级置换操作对差分模式传播的限制,并以最小化所述分组密码中所有S盒的活跃变量之和为目标对所述每一个S盒的每个输入比特和每个输出比特的差分变量以及每一个S盒的活跃变量赋予所述限制,以建立一混合整数的线性规划问题;
求解所述混合整数线性规划问题,以获得活跃S盒个数的下界。
2.根据权利要求1所述的方法,其特征在于:
所述分组密码的分组长度为B比特,所述分组密码共有R轮,每一轮中具有T个S盒,所述分组密码中共有G个S盒,每个S盒具有P个输入比特和P个输出比特;
其中,G=T×R,P=B/T,B、R、T、G、P均为正整数,且B能够被T整除。
3.根据权利要求2所述的方法,其特征在于:
所述分组密码中,任意一个S盒的任意一个输入比特位置所引入的差分变量表示为x[r,t,p],任意一个S盒的任意一个输出比特位置所引入的差分变量表示为y[r,t,p],每个x[r,t,p]变量以及每个y[r,t,p]变量只取0和1其中的一个值;
若x[r,t,p]=1,则表示该x[r,t,p]所代表的S盒的输入比特位置有差分;
若x[r,t,p]=0,则表示该x[r,t,p]所代表的S盒的输入比特位置没有差分;
若y[r,t,p]=1,则表示该x[r,t,p]所代表的S盒的输出比特位置有差分;
若y[r,t,p]=0,则表示该x[r,t,p]所代表的S盒的输出比特位置没有差分;
其中,r的取值范围为从1到R的整数,t的取值范围为从1到T的整数,p的取值范围为从1到P的整数。
4.根据权利要求3所述的方法,其特征在于:
所述分组密码中,任意一个S盒所引入的活跃变量表示为A[r,t],每个A[r,t]变量只取0和1其中的一个值;
若A[r,t]=1,则表示该A[r,t]所代表的S盒为活跃S盒;
若A[r,t]=0,则表示该A[r,t]所代表的S盒为不活跃S盒;
其中,r的取值范围为从1到R的整数,t的取值范围为从1到T的整数。
5.根据权利要求4所述的方法,其特征在于,所述限制包括:
对于A[r,t]变量所代表的S盒,对所述差分模式传播具有如下限制:
限制一,保证当A[r,t]变量所代表的S盒为活跃S盒时,该S盒的输入差分中,至少有一个输入比特变量的值为1,即:
x[r,t,1]+…+x[r,t,P]-A[r,t]≥0
限制二,保证当A[r,t]变量所表示的S盒的输入差分中有一个非零比特时,该S盒必须是活跃S盒,即:
x[r,t,p]-A[r,t]≤0
限制三:
非零输入差分一定导致非零输出差分,且非零输出差分一定导致非零输入差分,即:
Py[r,t,1]+…+Py[r,t,P]-x[r,t,1]-…-x[r,t,P]≥0
且
Px[r,t,1]+…+Px[r,t,P]-y[r,t,1]-…-y[r,t,P]≥0
限制四:
保证当A[r,t]变量所代表的S盒的输入差分中有1比特非零时,输出差分中至少有B比特非零,即:
x[r,t,1]+…+x[r,t,P]+y[r,t,1]+…+y[r,t,P]≥B×d
其中,d≥x[r,t,1]、…、d≥x[r,t,P]、d≥y[r,t,1]、…、d≥y[r,t,P],B为A[r,t]变量所代表的S盒的极大分支数。
6.根据权利要求4所述的方法,其特征在于,所述限制包括:
所述分组密码的每一轮中,轮密钥异或操作的输入输出差分限制为:
所述轮密钥异或操作的两个输入比特和一个输出比特之和大于等于2倍的d⊕,且d⊕大于等于所述轮密钥异或操作的两个输入比特和一个输出比特,即
z[1]+z[2]+z[3]≥2d⊕
d⊕≥z[1]
d⊕≥z[2]
d⊕≥z[3]
其中,z[1]、z[2]为所述异或操作的两个输入比特,z[3]为所述异或操作的输出比特,d⊕为差分标记变量,其值只取0和1,当z[1],z[2],z[3]中有任意一个变量取1时,d⊕取1,否则d⊕取0。
7.根据权利要求4所述的方法,其特征在于,所述限制包括:
限制所述分组密码的输入差分不全为0。
8.根据权利要求4所述的方法,其特征在于,所述分组密码中所有S盒的活跃变量之和为:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310368578.8A CN103427986B (zh) | 2013-08-22 | 2013-08-22 | 获取分组密码活跃s盒个数下界的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310368578.8A CN103427986B (zh) | 2013-08-22 | 2013-08-22 | 获取分组密码活跃s盒个数下界的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103427986A true CN103427986A (zh) | 2013-12-04 |
CN103427986B CN103427986B (zh) | 2016-08-24 |
Family
ID=49652198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310368578.8A Expired - Fee Related CN103427986B (zh) | 2013-08-22 | 2013-08-22 | 获取分组密码活跃s盒个数下界的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103427986B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104065474A (zh) * | 2014-07-14 | 2014-09-24 | 衡阳师范学院 | 一种新型低资源高效的轻量级Surge分组密码实现方法 |
CN104158796A (zh) * | 2014-07-11 | 2014-11-19 | 中国科学院信息工程研究所 | 分组密码抗线性攻击安全性的评估方法 |
CN111756521A (zh) * | 2020-06-25 | 2020-10-09 | 桂林电子科技大学 | 基于Feistel-SP结构的密码S盒设计方法 |
CN112532375A (zh) * | 2020-11-17 | 2021-03-19 | 华东师范大学 | 一种基于大状态s盒的自动化搜索差分路径的方法及应用 |
CN112953703A (zh) * | 2021-01-28 | 2021-06-11 | 华东师范大学 | 一种基于MILP的Tweakable GOST2差分路线搜索方法 |
CN114024663A (zh) * | 2021-11-24 | 2022-02-08 | 中国电子科技集团公司第三十研究所 | 基于smt的线性扩散层分支数测评方法、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1879138A (zh) * | 2004-09-03 | 2006-12-13 | 索尼株式会社 | 密码处理装置、密码处理方法及其计算机程序 |
CN101176134A (zh) * | 2005-03-25 | 2008-05-07 | 索尼株式会社 | 信息处理装置 |
CN103051442A (zh) * | 2012-10-16 | 2013-04-17 | 中国科学院软件研究所 | 采用Feistel-PG结构的密码装置及加密方法 |
-
2013
- 2013-08-22 CN CN201310368578.8A patent/CN103427986B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1879138A (zh) * | 2004-09-03 | 2006-12-13 | 索尼株式会社 | 密码处理装置、密码处理方法及其计算机程序 |
CN101176134A (zh) * | 2005-03-25 | 2008-05-07 | 索尼株式会社 | 信息处理装置 |
CN103051442A (zh) * | 2012-10-16 | 2013-04-17 | 中国科学院软件研究所 | 采用Feistel-PG结构的密码装置及加密方法 |
Non-Patent Citations (1)
Title |
---|
何远等: "基于混沌S盒的无线传感器网络分组加密算法", 《计算机应用》, 1 April 2013 (2013-04-01) * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104158796A (zh) * | 2014-07-11 | 2014-11-19 | 中国科学院信息工程研究所 | 分组密码抗线性攻击安全性的评估方法 |
CN104158796B (zh) * | 2014-07-11 | 2017-07-21 | 中国科学院信息工程研究所 | 分组密码抗线性攻击安全性的评估方法 |
CN104065474A (zh) * | 2014-07-14 | 2014-09-24 | 衡阳师范学院 | 一种新型低资源高效的轻量级Surge分组密码实现方法 |
CN104065474B (zh) * | 2014-07-14 | 2015-04-08 | 衡阳师范学院 | 一种轻量级Surge分组密码实现方法 |
CN111756521A (zh) * | 2020-06-25 | 2020-10-09 | 桂林电子科技大学 | 基于Feistel-SP结构的密码S盒设计方法 |
CN111756521B (zh) * | 2020-06-25 | 2022-05-27 | 桂林电子科技大学 | 基于Feistel-SP结构的密码S盒设计方法 |
CN112532375A (zh) * | 2020-11-17 | 2021-03-19 | 华东师范大学 | 一种基于大状态s盒的自动化搜索差分路径的方法及应用 |
CN112532375B (zh) * | 2020-11-17 | 2022-12-02 | 华东师范大学 | 一种基于大状态s盒的自动化搜索差分路径的方法及应用 |
CN112953703A (zh) * | 2021-01-28 | 2021-06-11 | 华东师范大学 | 一种基于MILP的Tweakable GOST2差分路线搜索方法 |
CN114024663A (zh) * | 2021-11-24 | 2022-02-08 | 中国电子科技集团公司第三十研究所 | 基于smt的线性扩散层分支数测评方法、设备及介质 |
CN114024663B (zh) * | 2021-11-24 | 2023-06-02 | 中国电子科技集团公司第三十研究所 | 基于smt的线性扩散层分支数测评方法、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103427986B (zh) | 2016-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101496080B (zh) | 密码处理装置、密码处理算法构建方法和密码处理方法 | |
CN101764686B (zh) | 一种用于网络与信息安全的加密方法 | |
CN103427986A (zh) | 获取分组密码活跃s盒个数下界的方法 | |
Mouha et al. | Differential and linear cryptanalysis using mixed-integer linear programming | |
CN101739695B (zh) | 一种基于三维Arnold映射的图像分组加密方法 | |
CN101176134B (zh) | 信息处理装置 | |
EP2240848B1 (de) | Schaltung und verfahren zur generierung einer echten, schaltungsspezifischen und zeitinvarianten zufallszahl | |
CN101496342B (zh) | 加密装置、程序及方法 | |
CN104158796B (zh) | 分组密码抗线性攻击安全性的评估方法 | |
CN103634101A (zh) | 加密处理方法及设备 | |
EP2693681A1 (en) | Encryption processing device, encryption processing method, and programme | |
CN102648600A (zh) | 由定制的掩蔽保护的低复杂度电子电路 | |
Limbong et al. | Testing the classic caesar cipher cryptography using of matlab | |
CN104333446A (zh) | 一种新型超轻量级qtl分组密码实现方法 | |
CN103051442A (zh) | 采用Feistel-PG结构的密码装置及加密方法 | |
CN104851071A (zh) | 一种基于三维混沌系统的数字图像加密方法 | |
CN104639312A (zh) | 一种des算法抗能量攻击的方法及装置 | |
CN104050625B (zh) | 一种明文构建初始密钥的复合混沌图像加密方法 | |
CN102158338B (zh) | 一种针对Twofish加密芯片的DFA分析方法及系统 | |
He et al. | Cryptanalysis and improvement of a block cipher based on multiple chaotic systems | |
CN100534030C (zh) | 输出-密文混和反馈混沌流密码加密解密方法 | |
CN116668003A (zh) | 一种混合差分字节级区分器搜索方法 | |
CN101848079B (zh) | 一种面向字、带记忆的序列扰动方法及加密方法 | |
CN105162580A (zh) | 基于ofb模式和分组密码vh的轻量级流密码技术vho | |
Mishra et al. | A Chaotic encryption algorithm: Robustness against Brute-force attack |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160824 Termination date: 20200822 |
|
CF01 | Termination of patent right due to non-payment of annual fee |