首页> 中国专利> 获取分组密码活跃S盒个数下界的方法

获取分组密码活跃S盒个数下界的方法

摘要

本发明公开了一种获取比特级置换线性扩散层分组密码活跃S盒个数下界的方法,包括:对使用比特级置换作为扩散层的分组密码中的每个S盒的每个输入比特和每个输出比特引入差分变量,并对所述每个S盒引入活跃变量;针对所述每个S盒,分析S盒操作和位置换操作对差分模式传播的限制,并以最小化所述分组密码中所有S盒的活跃变量之和为目标对所述每个S盒的每个输入比特和每个输出比特的差分变量以及每个S盒的活跃变量赋予所述限制,以建立一混合整数的线性规划问题;求解所述混合整数线性规划问题,以获得活跃S盒的下界。本发明大大降低了密码设计工作量和出错概率,填补了本领域空白,同样适用于采用非极大距离可分码构造的线性扩散层。

著录项

  • 公开/公告号CN103427986A

    专利类型发明专利

  • 公开/公告日2013-12-04

    原文格式PDF

  • 申请/专利权人 中国科学院信息工程研究所;

    申请/专利号CN201310368578.8

  • 发明设计人 胡磊;孙思维;解永宏;宋凌;王鹏;

    申请日2013-08-22

  • 分类号H04L9/08;H04L9/30;

  • 代理机构北京德琦知识产权代理有限公司;

  • 代理人牛峥

  • 地址 100195 北京市海淀区闵庄路丙87号

  • 入库时间 2024-02-19 21:36:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-24

    授权

    授权

  • 2013-12-25

    实质审查的生效 IPC(主分类):H04L9/08 申请日:20130822

    实质审查的生效

  • 2013-12-04

    公开

    公开

说明书

技术领域

本发明涉及信息安全分组密码设计与分析领域,特别涉及一种获取分组密码中活 跃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盒 本质上是一个映射:

S:IF2ωIF2ω

其中是有两个元素的有限域,简称二元域。通常S盒由一个表给出其 映射规则,如表1中给出了一个4比特输入4比特输出S盒的映射规则。表1:4比特 输入4比特输出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 Encryption  Standard,数据加密算法),AES(Advanced Encryption Standard,高级加密标准)。差 分攻击涉及选择具有某种特殊差分模式的明文对,使得具有某种特殊差分模式的密文 对出现的概率较高,差分攻击用这些特征来计算可能的密钥。差分攻击很大程度上依 赖于S盒的结构。

因此,为了抵抗差分攻击,新设计的所有分组密码,都必须证明其对差分攻击的 安全性。2001年美国国家标准技术研究所(NIST,National Institute of Standards and  Technology)推出了新的数据加密算法标准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 Linear  Programming)的方法来确定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盒的活跃变量之和为:

Σr=1RΣt=1TA[r,t].

从上述方案可以看出,本发明所提供的方法,将一个分组密码体制的差分传播性 质描述成一个混合整数线性规划问题,然后求解该混合整数线性规划问以获得活跃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=minab{wt((ab)||(S(a)S(b))):a,bF2ω}

其中,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盒的活跃变量之和表示为:

Σr=1RΣt=1TA[r,t]

例如,对于图5所示的实施例,至此,便以最小化:

Σr=14Σt=14A[r,t]

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盒的下界。

关于混合整数线性规划问题,即是在满足如下不等式的前提下

Σj=1Naijxj()01jN1iM

寻找当一组xj的赋值,满足当1≤j≤t时,使得式

Σj=1Ncjxj

达到最小值。

其中,i、j、N、M均为正整数,aij为任意实数,cj为任意实数,xj为整数,t 为大于等于2且小于N的整数。求解该问题的方法包括分支定界法,分支切割 法,切割平面法等等。

关于求解混合整数线性规划问题为本领域已有技术,此处不再赘述。

本发明的上述方法,将一个分组密码体制的差分传播性质描述成一个混合整 数线性规划问题,然后求解该混合整数线性规划问以获得活跃S盒个数的下界, 进而大大降低了密码设计工作量和出错概率。与现有技术相比,本发明的上述方 法实现了对于使用比特级置换作及非极大距离可分码作为扩散层的分组密码,计 算其活跃S盒个数的下界,而现有技术中尚没有能够计算使用比特级置换作及非 极大距离可分码作为扩散层的分组密码中活跃S盒个数的下界的方法,因此本发 明填补了这一空白。同时,本发明的方法也同样适用于采用非极大距离可分码构 造的线性扩散层。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明 的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保 护的范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号