信息处理装置的制作方法

文档序号:2403465阅读:218来源:国知局
专利名称:信息处理装置的制作方法
技术领域
本发明涉及加密(cryptographic)处理装置、加密处理方法和计算机程序。更具体地,本发明涉及对基于线性密码分析或差分密码分析的密码分析或攻击具有改进抵抗性的加密处理装置、加密处理方法和计算机程序。

背景技术
由于最近几年中网络通信和电子商务的发展和普及,实现通信时的高安全性变得非常重要。实现高安全性的一种方法是在通信中使用加密,并且许多加密的技术被用于实际的通信系统中。
例如,存在一种已知系统,在该系统中加密处理模块设置在小尺寸装置(如IC卡)中,由此,当在IC卡与数据读/写器之间传输数据时,执行包括数据鉴权和加密/解密的处理。
已知多种加密算法。可以将它们大致分为公开密钥加密技术(cryptography)和公用密钥加密技术。在公开密钥加密技术中,对于加密和解密使用不同的密钥。例如,对于加密使用公开密钥,而对于解密使用私有密钥。在公用密钥加密技术中,对于加密和解密使用相同的密钥。
已知公用密钥加密技术的多个算法。在这样的算法之一中,基于公用密钥产生多个密钥,并且使用产生的密钥以块(每个块包括例如64比特或128比特)为单位重复执行数据转换。公用密钥加密技术是使用如下算法的典型示例,该算法包括产生密钥并执行数据转换。
典型的公用密钥加密方案依照被采用作为联邦信息处理标准之一的DES(数据加密标准),并且广泛用于多个领域中。
由DES算法代表的公用密钥块加密算法包括两个主要部分。一部分是转换输入数据的轮次函数,而另一部分是密钥调度表,该密钥调度表产生由轮次函数(F函数)在各个轮次中使用的密钥。用于轮次函数的各个轮次的轮次密钥(子密钥)由密钥调度表部分基于输入到密钥调度表部分中的单一主密钥而产生,并且用于轮次函数的各个轮次。
公用密钥加密技术的一个问题在于利用密码分析而泄漏密钥。在典型的攻击或密码分析方法中,分析大量具有特别差分的输入数据(明文)和对应的输出数据(密文),来查找用于各个轮次函数的密钥(已知该方法为差分密码分析或差分攻击)。还已知基于明文和密文来执行密码分析(已知该方法为线性密码分析或线性攻击)。
如果通过密码分析可以容易地查找到用于产生密码的密钥,那么该密码不可能是高安全性的。在常规的DES算法中,轮次函数的线性转换部分执行的处理对于所有轮次是相同的(即,对于所有轮次使用相同的转换矩阵)。这使得能够容易地分析该算法,由此容易查找到密钥。


发明内容
本发明要解决的问题 由于上述问题,本发明的目的是基于公用密钥块加密算法来提供加密处理装置、加密处理方法和计算机程序,该公用密钥块加密算法向基于线性密码分析和/或差分密码分析的密码分析或攻击提供高抵抗性。
解决问题的方法 根据本发明的第一个方面,提供了一种适合执行Feistel加密处理的加密处理装置,包括 非线性转换部分,包括多个非线性转换层,每个非线性转换层具有多比特的输入和输出;以及 线性转换部分,包括适合执行线性转换处理的线性转换层,其中 线性转换部分使用满足限制条件的矩阵来执行线性转换处理。
在依照本发明的加密处理装置的一个实施例中,对用于线性转换处理的矩阵施加的限制条件如下 对于在r个轮次中的每一个轮次中使用F函数在线性转换部分中执行映射θ{0,1}na→{0,1}nb的矩阵Mi,其中该映射执行从n×a比特数据到n×b比特数据的线性转换,分支数目B(θ)被定义为 B(θ)=minα≠0{hwn(α)+hwn(θ(α))} 其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是将给出的比特串Y拆分为n比特元素并且返回包括至少一个非零比特的非零元素的数目的函数, 满足B(θ)=b+1的映射θ被定义为最优扩散映射,其中B(θ)是上文定义的分支数目,并且 BD1和BD2被定义为 BD1=min{B(Mi)|1≤i≤r} BD2=min{B(Mi|Mi+2)|1≤i≤r-2} 其中B(M)表示矩阵M的分支数目,且A|B表示连接矩阵A和B而得到的矩阵, 在如上定义各参数的情况下,矩阵Mi被确定为使得BD1和BD2二者都等于或大于3。
根据本发明的第二个方面,提供了 一种加密处理装置,该加密处理装置被配置为使用包括SPN型F函数的r轮次Feistel公用密钥块密码结构来执行加密处理,所述SPN型F函数包括非线性转换部分和线性转换部分, 其中,在r个轮次中每一个轮次中的F函数的线性转换部分使用满足下述条件的矩阵Mi 对于映射θ{0,1}na→{0,1}nb,该映射执行从n×a比特数据到n×b比特数据的线性转换,分支数目B(θ)被定义为 B(θ)=minα≠0{hwn(α)+hwn(θ(α))} 其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是将给出的比特串Y拆分为n比特元素且返回包括至少一个非零比特的非零元素的数目的函数, 满足B(θ)=b+1的映射θ被定义为最优扩散映射,其中B(θ)是上文定义的分支数目,并且 BD1、BD2和BD3被定义为 BD1=min{B(Mi)|1≤i≤r}, BD2=min{B(Mi|Mi+2)|1≤i≤r-2},并且 BD3=min{B(Mi|Mi+2|Mi+4)|1≤i≤r-4} 其中B(M)表示矩阵M的分支数目,且A|B表示连接矩阵A和B得到的矩阵, 在如上定义各参数的情况下,矩阵Mi被确定为使得BD1、BD2和BD3都等于或大于3。
根据本发明的第三个方面,提供了 一种加密处理装置,该加密处理装置被配置为使用包括SPN型F函数的r轮次Feistel公用密钥块密码结构来执行加密处理,SPN型F函数包括非线性转换部分和线性转换部分, 其中,r个轮次中的每一个轮次中的F函数的线性转换部分使用满足下述条件的矩阵Mi 对于映射θ{0,1}na→{0,1}nb,该映射执行从n×a比特数据到n×b比特数据的线性转换,分支数目B(θ)被定义为 B(θ)=minα≠0{hwn(α)+hwn(θ(α))} 其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是将给出的比特串Y拆分为n比特元素且返回包括至少一个非零比特的非零元素的数目的函数, 满足B(θ)=b+1的映射θ被定义为最优扩散映射,其中B(θ)是上文定义的分支数目,并且 BL2被定义为 BL2=min{B(tM-1i|tM-1i+2|1≤i≤r-2} 其中B(M)表示矩阵M的分支数目,且tM表示M的转置矩阵, 在如上定义各参数的情况下,将矩阵Mi确定为使得BL2等于或大于3。
根据本发明的第四个方面,提供了 一种使用Feistel公用密钥块结构来执行加密处理的加密处理方法,包含步骤 将包括非线性转换部分和线性转换部分的SPN型F函数重复执行r个轮次, 其中在每个轮次中,线性转换部分根据满足下述条件的矩阵Mi使用F函数来执行线性转换 对于映射θ{0,1}na→{0,1}nb,该映射执行从n×a比特数据到n×b比特数据的线性转换,分支数目B(θ)被定义为 B(θ)=minα≠0{hwn(α)+hwn(θ(α))} 其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是将给出的比特串Y拆分为n比特元素并且返回包括至少一个非零比特的非零元素的数目的函数, 满足B(θ)=b+1的映射θ被定义为最优扩散映射,其中B(θ)是上文定义的分支数目,并且 BD1、BD2和BD3被定义为 BD1=min{B(Mi)|1≤i≤r} BD2=min{B(Mi|Mi+2)|1≤i≤r-2},并且 BD3=min{B(Mi|Mi+2|Mi+4)|1≤i≤r-4} 其中B(M)表示矩阵M的分支数目,且A|B表示连接矩阵A和B得到的矩阵, 在如上定义各参数的情况下,矩阵Mi被确定为使得BD1、BD2和BD3都等于或大于3。
根据本发明的第五个方面,提供了 一种使用Feistel公用密钥块结构来执行加密处理的加密处理方法,包含步骤 将包括非线性转换部分和线性转换部分的SPN型F函数重复执行r个轮次, 其中在每个轮次中,线性转换部分根据满足下述条件的矩阵Mi使用F函数来执行线性转换 对于映射θ{0,1}na→{0,1}nb,该映射执行从n×a比特数据到n×b比特数据的线性转换,分支数目B(θ)被定义为 B(θ)=minα≠0{hwn(α)+hwn(θ(α))} 其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是将给出的比特串Y拆分为n比特元素且返回包括至少一个非零比特的非零元素的数目的函数, 满足B(θ)=b+1的映射θ被定义为最优扩散映射,其中B(θ)是上文定义的分支数目,并且 BL2被定义为 BL2=min{B(tM-1i|tM-1i+2|1≤i≤r-2} 其中B(M)表示矩阵M的分支数目,且tM表示M的转置矩阵, 在如上定义各参数的情况下,矩阵Mi被确定为使得BL2等于或大于3。
根据本发明的第六个方面,提供了 一种可在计算机上执行的计算机程序,该计算机程序使用Feistel公用密钥块结构来执行加密处理,包含步骤 将包括非线性转换部分和线性转换部分的SPN型F函数重复执行r个轮次, 其中在每个轮次中,线性转换部分根据满足下述条件的矩阵Mi使用F函数来执行线性转换 对于映射θ{0,1}na→{0,1}nb,该映射执行从n×a比特数据到n×b比特数据的线性转换,分支数目B(θ)被定义为 B(θ)=minα≠0{hwn(α)+hwn(θ(α))} 其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是将给出的比特串Y拆分为n比特元素且返回包括至少一个非零比特的非零元素的数目的函数, 满足B(θ)=b+1的映射θ被定义为最优扩散映射,其中B(θ)是上文定义的分支数目,并且 BD1、BD2和BD3被定义为 BD1=min{B(Mi)|1≤i≤r}, BD2=min{B(Mi|Mi+2)|1≤i≤r-2},并且 BD3=min{B(Mi|Mi+2|Mi+4)|1≤i≤r-4} 其中B(M)表示矩阵M的分支数目,且A|B表示连接矩阵A和B得到的矩阵, 在如上定义各参数的情况下,将矩阵Mi确定为使得BD1、BD2和BD3都等于或大于3。
根据本发明的第七方面,提供了 一种可在计算机上执行的计算机程序,该计算机程序使用Feistel公用密钥块结构来执行加密处理,包含步骤 将包括非线性转换部分和线性转换部分的SPN型F函数重复执行r个轮次, 其中在每个轮次中,线性转换部分根据满足下述条件的矩阵Mi使用F函数来执行线性转换 对于映射θ{0,1}na→{0,1}nb,该映射执行从n×a比特数据到n×b比特数据的线性转换,分支数目B(θ)被定义为 B(θ)=minα≠0{hwn(α)+hwn(θ(α))} 其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是将给出的比特串Y拆分为n比特元素且返回包括至少一个非零比特的非零元素的数目的函数, 满足B(θ)=b+1的映射θ被定义为最优扩散映射,其中B(θ)是上文定义的分支数目,并且 BL2被定义为 BL2=min{B(tM-1i|tM-1i+2|1≤i≤r-2} 其中B(M)表示矩阵M的分支数目,且tM表示M的转置矩阵, 在如上定义各参数的情况下,矩阵Mi被确定为使得BL2等于或大于3。
由下列参照附图的示例实施例的描述,本发明的其它目的、特点和优势将变得显而易见。应注意,在本说明书中,术语“系统”用于描述多个设备的逻辑集合,且不必要求所述多个器件被安置在单个箱体中。
优势 本发明提供Feistel公用密钥块加密算法。在该算法中,重复执行包括非线性转换部分和线性转换部分的SPN型F函数多个轮次。在该算法中,依照使用为满足相对宽松的限制而确定的矩阵的F函数,在多个轮次的每个轮次中执行线性转换处理,由此实现公用密钥块密码对差分攻击和/或线性攻击的高抵抗性。该相对宽松的限制允许增加候选可用矩阵数,并且能够使有效S盒的数目保持到足够大等级。这使得能够增加有效S盒的最小数目,该有效S盒的最小数目是在加密函数的所有轮次上计数得到的,并且该有效S盒的最小数目是公用密钥块密码对攻击的抵抗程度的度量之一,因此能够以高安全方式实现对数据加密的算法,以实现对线性攻击和差分攻击的高抵抗性。
附图简述

图1是说明使用Feistel结构的典型公用密钥块密码的图解。
图2是说明用作轮次函数的F函数的图解。
图3是说明应用于由线性转换部分所执行的线性转换处理的方阵示例的图解。
图4是说明在m=8和n=8的128比特块密码中通过三个轮次消除差分的图解。
图5是说明通过由F函数的线性转换部分执行的线性转换产生输入差分ΔYi的具体示例的图解。
图6是说明在m=8和n=8的128比特块密码中通过五个轮次消除差分的图解。
图7是说明在公用密钥块密码中通过任意数目轮次消除差分的定义的图解。
图8是说明MDS方阵(square MDS matrix)的示例的图解。
图9是说明设置MDS方阵作为在公用密钥块加密算法中应用到各个轮次的F函数的线性转换矩阵的示例的图解。
图10是说明设置MDS方阵作为在公用密钥块加密算法中应用到各个轮次的F函数的线性转换矩阵的过程的流程图。
图11是说明模式a1的流程图,模式a1是产生用作线性转换矩阵的MDS方阵的过程,该线性转换矩阵被应用到各个轮次的F函数以使得对差分攻击的抵抗性得到改进。
图12是说明模式a2的流程图,模式a2是产生用作线性转换矩阵的MDS方阵的过程,该线性转换矩阵被应用到各个轮次的F函数以使得对差分攻击的抵抗性得到改进。
图13是说明模式a3的流程图,模式a3是产生用作线性转换矩阵的MDS方阵的过程,该线性转换矩阵被应用到各个轮次的F函数以使得对差分攻击的抵抗性得到改进。
图14是说明模式a3具体示例的图解,该模式a3是产生用作线性转换矩阵的MDS方阵的过程,该线性转换矩阵被应用到各个轮次的F函数。
图15是说明模式b1的流程图,模式b1是产生用作线性转换矩阵的MDS方阵的过程,该线性转换矩阵被应用到各个轮次的F函数以使得对线性攻击的抵抗性得到改进。
图16是说明模式b2的流程图,模式b2是产生用作线性转换矩阵的MDS方阵的过程,该线性转换矩阵被应用到各个轮次的F函数以使得对线性攻击的抵抗性得到改进。
图17是说明产生用作线性转换矩阵的MDS方阵的过程示例的流程图,该线性转换矩阵被应用到各个轮次的F函数以使得对差分攻击和线性攻击的抵抗性得到改进。
图18是说明作为依照本发明的加密处理装置的IC模块的配置示例的图解,该加密处理装置适合于执行加密处理。

具体实施例方式 下文描述依照本发明的加密处理装置、加密处理方法和计算机程序的细节。在下列说明中,将讨论以下列出的几个主题。
1.公用密钥块加密算法的差分密码分析 2.公用密钥块加密算法的线性密码分析 3.对密码分析具有改进抵抗性的加密算法的示例 (3-a)产生MDS方阵且将其应用到F函数以实现对差分攻击的高抵抗性。
(3-b)产生MDS方阵且将其应用到F函数以实现对线性攻击的高抵抗性。
(3-c)产生MDS方阵且将其应用到F函数以实现对差分攻击和线性攻击的高抵抗性。
4.依照本发明的加密算法 (4a)模式1 (4a.1)模式1中实现的对差分攻击抵抗性的改进 (4a.2)模式1中实现的对线性攻击抵抗性的改进 (4b)模式1 (4b.1)模式2中实现的对差分攻击抵抗性的改进 (4b.2)模式2中实现的对线性攻击抵抗性的改进 [1.公用密钥块加密算法的差分密码分析] 首先,针对使用广义公用密钥块加密模型的情况,对DES(数据加密标准)算法所代表的公用密钥块加密算法的差分密码分析进行评论。
公用密钥块密码算法包括两个主要部分转换输入数据的轮次函数部分;和密钥调度表部分,该密钥调度表部分产生在轮次函数部分的各个轮次中使用的密钥。应用到轮次函数部分的各个轮次的密钥(子密钥)由密钥调度表部分基于单一主密钥而产生,且用于各个轮次。典型公用密钥加密方案是依照选定为联邦信息处理标准之一的DES(数据加密标准)的方案。
参照图1描述称作Feistel结构的典型公用密钥块密码结构。
在Feistel结构中,通过简单地重复转换函数,将明文转换为密文。在此,假设明文具有2mn比特的长度,其中m和n为整数。首先,将长度为2mn比特的明文分为每部分具有mn比特长度的两部分PL(明文-左端)数据101和PR(明文-右端)数据102,它们为转换函数的输入。
Feistel结构由称为轮次函数的基础函数的一系列轮次表示。每个轮次中的数据转换函数称为F函数120。图1显示了Feistel结构的一个示例,在该示例中将F函数(轮次函数)120重复采用r次。
例如,在第一个轮次中,将长度为mn比特的输入数据X和从密钥发生器(没有显示)提供的轮次密钥K1103输入到F函数120中。F函数120转换输入数据且输出长度为mn比特的结果数据Y。将输出数据Y输入到异或单元104中,且与从在先轮次的另一侧提供的输入数据(在第一轮次的情况下,给出PL作为该输入数据)进行异或运算。将作为该操作的结果而获得的长度为mn比特的数据输出到下一个轮次函数。如果上述过程包括预定的F函数重复次数(r),那么完成了加密处理。输出包括CL(密文-左端)数据和CR(密文-右端)数据的结果密文。应注意,上述结构允许简单地通过使用相同的F函数以倒序采用轮次密钥来解密密文,因此无需另外的反函数。
参照图2,下文描述用于每个轮次的F函数120结构。图2(a)说明在单一轮次中输入到F函数120以及从F函数120输出的数据。图2(b)说明F函数120的结构细节。在图2(b)所示的结构中,F函数120具有包括非线性转换层和线性转换层的级联的所谓SPN结构。
如图2(b)所示,SPN型F函数120具有多个S盒(S-box)121用于执行非线性转换过程。从轮次函数的在先轮次提供的长度为mn比特的输入值X与从密钥调度表部分提供的轮次密钥Ki进行异或运算,并将结果输出输入到多(m)个S盒121,每个S盒对于输入的每个n比特执行非线性转换处理。每个S盒使用例如转换表来执行非线性转换处理。
给出为来自S盒121的输出数据的mn比特输出值Z被输入到线性转换部分122,该线性转换部分122被配置为执行线性转换处理。线性转换部分122例如通过交换比特位置对输入的mn比特的值Z执行线性转换处理。结果被输出为mn比特的值Y。输出值Y然后与在先轮次给出的输入数据进行异或运算,并且结果被应用为下一个轮次中的F函数的输入值。
在图2所示的F函数120的示例中,输入/输出的长度是m×n比特(m和n是整数),非线性转换层包括由m个S盒121组成的并行阵列(parallel array),每个S盒具有n比特的输入和输出,并且用作线性转换层的线性转换部分122依照m×m方阵来执行线性转换处理,该方阵的元素在2次方扩展域GF(2n)上,该2次方扩展域GF(2n)由n次方不可约多项式定义。
图3显示了一个方阵的示例,该方阵用于由线性转换部分122执行的线性转换处理。在图3所示的方阵125的示例中,n=8且m=8。在图3中,从非线性转换部分(S盒121)输出的mn比特数据Z[1],Z[2],...,Z[m]依照预定方阵1 25进行线性转换。作为结果,确定Y[1],Y[2],...,Y[m]并且将其从F函数(轮次函数)输出。在该过程中,在预定2次方扩展域GF.(2n)上由矩阵执行对每个数据的元素的线性操作。
在根据常规技术的Feistel密码中,相同的线性转换层被用作对于所有轮次的F函数。这能够使得在差分传播期间消除多个差分。如背景技术部分中所描述的,在典型的攻击方法或密码分析方法中,分析大量具有特别差分的输入数据(明文)和对应的输出数据(密文),来查找用于各个轮次函数的密钥(已知该方法为差分密码分析或差分攻击)。在如DES算法的常规公用密钥块加密算法中,由F函数部分120的线性转换部分122执行的处理(转换矩阵)对于所有轮次是相同的。这使得能够容易地分析该算法,因此容易查找到密钥。
参照图4,下文描述在差分传播期间消除多个差分的示例。应注意在本说明书中,通过在变量之前放置符号Δ(delta)来表示变量差分。
在图4所示的示例中,对于m=8且n=8的128比特块密码经由三个轮次精细差分消除。在图4中,将64比特数据分为多个部分,每部分具有一个字节的长度,并且以向量的形式表示该64比特数据,以十六进制表示该数据的元素。
如下文描述的,例如经由数据状态从1到4的转变,可以经由三个轮次的F函数发生差分消除。注意,在此讨论的该数据状态可以发生在差分密码分析的过程中,在该过程中测试大量差分输入数据来查找到密钥(轮次密钥)。
(状态1) 应用到第i个轮次的输入差分的左侧部分的元素(ΔXi-1=(00,00,00,00,00,00,00,00))都为零,并且除了输入到S盒的一个元素之外的输入差分的右侧部分的元素(ΔXi=(34,00,00,00,00,00,00,00))全为零。应注意,在第i个轮次中的该数据状态可以发生在测试大量差分输入数据的密码分析的过程中。
将ΔXi=(34,00,00,00,00,00,00,00)的八个元素分别输入到F函数的m(m=8)个S盒中。更具体地,将差分(34)输入到第一个S盒(图4中的S1)中,并且将这些(00)输入到第二到第八个S盒中。
当将(00)输入到任何S盒中时,来自该S盒的输出始终是(00)。因此,只要考虑差分数据,则任何接收(00)作为输入差分的S盒对该操作不产生任何作用。因此,在该状态下的S盒称作无效的,并且这样的S盒称作无效S盒。相反,接收到非零输入差分(图4所示示例中的34)的S盒产生对应于该非零输入差分的输出差分,以作为非线性转换的结果。因此,这样的S盒称作有效S盒。
在图4中所示示例中,一个有效S盒(S1)响应于非零输入差分(34),产生输出差分(b7),并且其他无效S盒S2到S8响应零输入差分(00)产生输出差分(00)。将这些输出差分输入到线性转换部分。
(状态2) 接收非零输入差分(图4中所示示例中的34)的S盒(有效S盒)在第i个轮次中产生的输出差分被非线性转换层扩散并且从F函数输出(如输出值ΔYi)。该输出值被直接转换为下个轮次的输入差分ΔXi+1。
在图4所示的示例中,使用如图5中所示的特殊方阵125来执行线性转换,该方阵被共同用于所有轮次的F函数,且输出ΔYi=(98,c4,b4,d3,ac,72,0f,32)作为第i个轮次中来自F函数的输出差分。如从说明线性转换的图5中可以看到的,所确定的输出差分ΔYi=(98,c4,b4,d3,ac,72,0f,32)的值仅依赖输出元素Z[1]=b7,该输出元素由一个有效S盒(S1)给出。
为图4中所示的异或(XOR)单元131提供作为第i个轮次中F函数的输出差分而输出的ΔYi=(98,c4,b4,d3,ac,72,0f,32),并且将其与所有元素均等于零的输入差分ΔXi-1=(00,00,00,00,00,00,00,00)进行异或(XOR)操作。提供操作结果作为下个轮次(第(i+1)个轮次)的输入差分ΔXi+1。
从第i个轮次中的F函数输出的输出差分ΔYi=(98,c4,b4,d3,ac,72,0f,32)和所有元素均为零的输入差分ΔXi-1=(00,00,00,00,00,00,00,00)之间的异或(XOR)与ΔYi相等,因此提供ΔXi+1=ΔYi=(98,c4,b4,d3,ac,72,0f,32)作为对于下个轮次(第(i+1)个轮次)的输入差分。
(状态3) 从第(i+1)个轮次中的F函数给出的输出差分ΔYi+1仅在与第i个轮次中有效的S盒对应的位置上具有非零元素。应注意这个数据状态可以在测试大量差分输入数据的密码分析的过程中发生。
更具体地,作为输出差分获得ΔYi+1=(ad,00,00,00,00,00,00,00),如在第i个轮次中,该输出差分在与应用非零差分值(图4所示示例中的34)的S盒(图4所示示例中的第一个S盒(S1))对应的位置上具有非零值。应注意ad≠00。
(状态4) 由第(i+2)个轮次中的有效S盒(S1)提供的输出差分可以与由第i个轮次中的有效S盒(S1)提供的输出差分相等。在图4所示示例中,b7被作为来自第(i+2)个轮次中有效S盒(S1)的输出差分而输出,并且这与由第i个轮次中有效S盒(S1)输出的输出差分(b7)相等。应注意,这个数据状态可以在测试大量差分输入数据的密码分析的过程中发生。
在这样的数据状态中,由第(i+2)个轮次中的F函数输出的输出差分ΔYi+2=(98,c4,b4,d3,ac,72,0f,32)与从第i个轮次中的F函数输出的输出差分ΔYi=(98,c4,b4,d3,ac,72,0f,32)相等,该第i个轮次比第(i+2)个轮次提前两个轮次。
结果,异或单元133计算如下两个相等值之间的XOR,即 ΔXi+1=ΔYi=(98,c4,b4,d3,ac,72,0f,32)并且 ΔYi+2=(98,c4,b4,d3,ac,72,0f,32) 结果,自异或单元133输出这样的值,该值的所有元素皆等于零。
因此,从在先轮次(第(i+2)个轮次)的左侧提供ΔXi+3=(00,00,00,00,00,00,00,00)作为下个轮次(第(i+3)个轮次)的输入差分。
如输入到第i个轮次的左侧输入ΔXi-1=(00,00,00,00,00,00,00,00),输入到第(i+3)个轮次的左侧输入ΔXi+3=(00,00,00,00,00,00,00,00)的元素皆等于零。这意味了可能按照与第i个到第(i+2)个轮次相似的方式在第(i+3)个轮次之后的轮次中执行处理。
由上面导致的问题在于有效S盒数目没有随轮次数目增加,因此对差分攻击的鲁棒性没有增加。
一个指示公用块密码对差分攻击的鲁棒性的已知度量是加密函数在所有轮次上计数得到的有效S盒的最小数目。有效S盒的最小数目越大,对差分攻击的鲁棒性越大。
如上所述,在差分密码分析(差分攻击)中,对于大量具有一定差分的输入数据来分析输入数据(明文)与输出数据(密文)之间的对应关系,并且,基于该对应关系分析各个轮次所应用的密钥。在差分密码分析中,有效S盒数目越小,分析越容易,由此需要的分析处理越简单。
在上文参照图4描述的示例中,仅第一个S盒(S1)是有效的。依赖于对应用于差分密码分析中的输入数据的设置,仅仅其它S盒(S2到S8)之一可以是有效。通过以这种方式执行密码分析,能够分析由每个S盒执行的非线性转换处理,因此能够分析输入到F函数的轮次密钥。
为了增加对差分分析的抵抗性,有必要维持足够大数目的有效S盒,即要求有效S盒的最小数目足够大。
在图4中所示的示例中,在从右至左将输入应用到F函数的第i个轮次和第(i+2)个轮次中,仅仅总的存在两个有效S盒。尽管在从左至右将输入应用到F函数的第(i+1)个轮次中存在八个有效S盒,但是差分消除的发生导致在第(i+3)个轮次中有效S盒数目减小到0。这使得在差分密码分析中容易分析由每个S盒执行的非线性转换处理。
在图4中所示的公用密钥块加密算法中,相同的线性转换矩阵用于所有轮次的线性转换。这造成可能仅经由从右到左进行输入的F函数中的两个有效S盒进行差分消除。结果,有效S盒的最小数目没有随轮次数目而增加,因此对差分攻击的抵抗性没有增加。
现在参照图6,描述经由五个轮次(轮次)的操作进行差分消除的示例,在这些轮次中F函数使用相同线性转换矩阵。
在图6中所示的示例中,对于m=8且n=8的128比特块密码经由五个轮次进行差分消除。在图6中,将64比特数据分为多个部分,每部分具有一个字节的长度,并且以向量的形式表示该64比特数据,以十六进制表示该向量的元素。
如下文所描述的,例如经由数据状态从1到7的转变,可以经由五个轮次的F函数进行消除差分。应注意在此讨论的此数据状态可以发生在差分密码分析的过程中,在该过程中测试大量差分输入数据来查找到密钥(轮次密钥)。
(状态1) 应用到第i个轮次的输入差分的左侧部分的元素(ΔXi-1=(00,00,00,00,00,00,00,00))全为零,并且除了输入到S盒的一个元素之外的输入差分的右侧部分的元素(ΔXi=(34,00,00,00,00,00,00,00))全为零。应注意,在第i个轮次中的该数据状态可以发生在测试大量差分输入数据的密码分析的过程中。
ΔXi=(34,00,00,00,00,00,00,00)的八个元素分别输入到F函数的m(m=8)个S盒中。更具体地,差分(34)输入到第一个S盒(图6中的S1)中,并且这些(00)输入到第二到第八个S盒中。
如上所述,当(00)输入到任何S盒中,来自该S盒的输出始终是(00)。因此,只要考虑差分数据,则接收(00)作为输入差分的任何S盒对该操作不产生任何作用。因此,在此状态下的S盒被认为是无效的,并且这样的S盒称作无效S盒。相反,接收到非零输入差分(图6所示示例中的34)的S盒(S1)产生对应于该非零输入差分的输出差分,以作为非线性转换的结果。因此,该S盒是有效的。
在图6所示示例中,一个有效S盒(S1)响应于非零输入差分(34)产生输出差分(b7),并且其他无效S盒S2到S8响应于零输入差分(00)产生输出差分(00)。这些输出差分被输入到线性转换部分。
(状态2) 接收非零输入差分(图4中所示示例中的34)的S盒(有效S盒)在第i个轮次中产生的输出差分被非线性转换层扩散并且从F函数输出(如输入值ΔYi)。该输出值被直接转换为下个轮次的输入差分ΔXi+1。
在图6所示示例中,使用如图5中所示的特别方阵125来执行线性转换,该方阵共同用于所有轮次,且输出ΔYi=(98,c4,b4,d3,ac,72,0f,32)作为来自第i个轮次中的F函数的输出差分。
从第i个轮次中的F函数输出的输出差分ΔYi=(98,c4,b4,d3,ac,72,0f,32)被提供给图6中所示的异或(XOR)单元141,且将其与所有元素均等于零的输入差分ΔXi-1=(00,00,00,00,00,00,00,00)进行异或(XOR)操作。提供操作结果作为下一个轮次(i+1)的输入差分ΔXi+1。
从第i个轮次中的F函数输出的输出差分ΔYi=(98,c4,b4,d3,ac,72,0f,32)与所有元素都为零的输入差分ΔXi-1=(00,00,00,00,00,00,00,00)之间的异或(XOR)等于ΔYi,由此提供ΔXi+1=ΔYi=(98,c4,b4,d3,ac,72,0f,32)作为对于下个轮次(第(i+1)个轮次)的输入差分。
(状态3) 从第(i+1)个轮次中的F函数输出的输出差分ΔYi+1仅在对应于第i个轮次中有效的S盒的位置处具有非零元素。应注意,这个数据状态可以在测试大量差分输入数据的密码分析的过程中发生。
更具体地,作为输出差分获得ΔYi+1=(34,00,00,00,00,00,00,00),如在第i个轮次中,该输入差分在对应于应用了非零差分值(图6所示示例中的34)的S盒(图6所示示例中的第一个S盒(S1))的位置上具有非零值。
(状态4) ΔXi=(34,00,00,00,00,00,00,00)和ΔYi+1=(34,00,00,00,00,00,00,00)之间的异或由异或单元142确定,并且将结果输入到第(i+2)个轮次中的F函数。在该情况下,对两个相等数据执行异或运算,由此该结果的所有元素都等于零。因此,将ΔXi+2=(00,00,00,00,00,00,00,00)输入到第(i+2)个轮次。结果,由第(i+2)个轮次的F函数提供的输出差分的所有元素都等于零。因此,第(i+2)个轮次中输出ΔYi+2=(00,00,00,00,00,00,00,00)。
(状态5) ΔXi+1=(98,c4,b4,d3,ac,72,0f,32)与作为来自第(i+2)个轮次的F函数的输出差分的、所有元素都等于零的ΔYi+2=(00,00,00,00,00,00,00,00)之间的异或由异或单元143确定,并且将该结果输入到第(i+3)个轮次的F函数。因此,将ΔXi+3=ΔXi+1=(98,c4,b4,d3,ac,72,0f,32)输入到第(i+3)个轮次的F函数。
(状态6) 输出ΔYi+3=(43,00,00,00,00,00,00,00)作为来自第(i+3)个轮次的F函数的输出差分,并且该输出差分与所有元素都等于零的ΔXi+2=(00,00,00,00,00,00,00,00)进行异或运算,该异或运算由异或单元144执行。作为异或运算的结果而获得ΔXi+4=ΔYi+3=(43,00,00,00,00,00,00,00),并且该结果被输入为第(i+4)个轮次的F函数的输入差分。
(状态7) 由第(i+4)个轮次中的有效S盒(S1)提供的输出差分可以与第i个轮次中的有效S盒(S1)提供的输出差分相等。在图6中所示的示例中,输出b7作为第(i+4)个轮次中的有效S盒(S1)的输出差分,并且这与由第i个轮次中有效S盒(S1)输出的输出差分(b7)相等。应注意,这个数据状态可以在测试大量差分输入数据的密码分析过程中发生。
在这样的数据状态中,由第(i+4)个轮次中的F函数输出的输出差分ΔYi+4=(98,c4,b4,d3,ac,72,0f,32)与由第(i+2)个轮次中异或单元143输出的输出差分ΔXi+3=(98,c4,b4,d3,ac,72,0f,32)相等,该第(i+2)个轮次比第(i+4)个轮次提前两个轮次。
结果,异或单元145在两个相等值之间计算异或,即 ΔXi+3=(98,c4,b4,d3,ac,72,0f,32)并且 ΔYi+4=(98,c4,b4,d3,ac,72,0f,32) 结果,自异或单元145输出的值的所有元素皆等于零。
因此,输入ΔXi+5=(00,00,00,00,00,00,00,00)作为对于下一个轮次(第(i+5)个)的输入差分。
如对于第i个轮次提供的的左侧输入ΔXi+5=(00,00,00,00,00,00,00,00),输入到第(i+5)个轮次的左侧输入ΔXi-1=(00,00,00,00,00,00,00,00)的元素均等于零。这意味了将按照与第i个到第(i+4)个轮次相似的方式在第(i+5)个轮次之后的轮次中执行处理。
由上面导致的问题在于有效S盒的数目没有随轮次数目增加,因,此对差分攻击的抵抗性没有增加。
如上所述,在差分密码分析(差分攻击)中,对于大量具有一定差分的输入数据来分析输入数据(明文)与输出数据(密文)之间的对应关系,并且,基于该对应关系分析对各个轮次应用的密钥。在差分密码分析中,有效S盒数目越小,分析越容易,因此所需要的分析处理越简单。
在上文参照图6描述的示例中,在从右到左将输入应用到F函数的第i个、第(i+2)个和第(i+4)个轮次中,在第i个轮次中存在一个有效S盒,在第(i+2)个轮次中没有有效S盒,并且在第(i+4)个轮次中存在一个有效S盒。因此,在这些轮次中总共仅存在两个有效S盒。尽管在第(i+1)个轮次和第(i+3)个轮次中存在八个有效的S盒,在该两个轮次中从左到右将输入应用到F函数,差分消除的进行使得在第(i+5)个轮次中有效S盒数目减少到0。这使得在差分分析中,容易分析每个S盒执行的非线性转换处理,因此可能容易分析输入到F函数的轮次密钥。
在上文参照图6描述的示例中,仅第一个S盒(S1)是有效的。依赖于对应用于差分密码分析中的输入数据的设置,仅仅其它S盒(S2到S8)之一可以有效。通过以这种方式执行密码分析,能够分析由每个S盒执行的非线性转换处理,由此能够分析输入到F函数的轮次密钥。
上文参照图4和图6描述了,对于经由三个轮次进行消除的情况和经由五个轮次进行消除的情况,进行差分消除的示例。上述的讨论可以扩展到通常的情况,在该情况下通过任意数目的轮次进行消除。参照图7,定义了通过任意数目的轮次进行差分的消除。应注意,对于包括在用于公用密钥块加密的Feistel结构中的所有轮次,图7中仅显示了每隔一个的轮次(i,i+2,i+4,...,i+2i)。
定义 在Feistel结构中,当输入到第i个轮次的输入差分的一半(PL或PR)等于0时(在图7中所示的示例中,ΔXi=(00,00,00,00,00,00,00,00)),如果由F函数的第(i+2j)个(j=0,1,2,...)轮次给出的输出差分与由在先轮次给出的输入差分之间的异或在某个轮次(i+2k)(在图7中所示的示例中,ΔXi+2j+1=(00,00,00,00,00,00,00,00))变为等于零时,那么称为通过多个轮次进行了消除。
当进行这样的消除时,在F函数的第i个、第(i+2)个、第(i+4)个、...、第(i+2k)个轮次中的有效S盒称作“对消除构成影响的有效S盒”。如果定义向量A的非零元素的数目为humming权重hw(A),那么对消除构成影响的有效S盒的数目a可以由下面的公式给出 在上述的通过三个或五个轮次发生了消除的示例中,通过多个轮次对消除构成影响的有效S盒的数目等于2,即a=2。
如上所述,指示公用密钥块密码对差分攻击的鲁棒性的度量之一是在加密函数的所有轮次上计数得到的有效S盒的最小数目。有效S盒的最小数目越大,对差分攻击的鲁棒性越大。
然而,在如上文参照图4和6所描述结构的情况下,其中在该结构中,对于所有轮次的F函数使用与DES算法相同的线性转换矩阵,仅仅两个有效S盒可以引起通过多个轮次发生消除。这个性质引发了有效S盒的最小数目不随轮次数目增加,因此对差分攻击的抵抗性没有增加。
[2.公用密钥块加密算法的线性分析] 如上所述,在差分分析中,分析的操作人员准备了多个具有特别差分的输入数据(明文),并且分析对应于各个输入数据的输出数据(密文)。相反地,在线性分析中,准备多个具有特别差分的输入数据(明文)不是必需的,而是基于输出数据(密文)来执行分析,该输出数据对应于特定数目或更多的输入数据(明文)。
如上所述,在公用密钥块加密算法中,S盒用作非线性转换部分,并且在输入数据(明文)与输出数据(密文)之间不存在线性关系。在线性分析中,S盒的输入和输出之间的对应关系近似为线性表达式,并且对于大量数据分析输入数据(明文)的比特值和对应输出数据(密文)之间的近似线性关系。基于分析结果,减少了候选的密钥。在线性分析中,输入数据不需要具有特别差分,并且能够简单地基于大量明文和对应的密文容易地执行分析。
3.对密码分析具有改进抵抗性的加密算法的示例 接下来,根据由本申请人以专利申请No.2003-339634或专利申请No.2004-256465在先提出的发明描述了加密算法。该加密算法对基于线性分析或差分分析的攻击提供了更好的鲁棒性。即,难以分析依照这些加密算法的密码,因此改进了安全性。
与常规DES算法不同,该加密算法的一个特征是由F函数的线性转换部分执行的处理(根据转换矩阵)对于所有轮次是不同的,而是使用多个不同MDS(最大距离分隔)方阵来不同地执行处理。更具体地,根据MDS方阵执行线性转换,该MDS方阵至少在紧邻的偶数轮次之间不同并且在紧邻的奇数轮次间不同。
在该加密算法中,MDS(最大距离分隔)方阵的性质用于实现完全地或接近完全地阻止经由小数目的有效S盒通过多个轮次而发生差分消除的结构。该公用密钥块加密算法的结构允许增加有效S盒的最小数目,由此提供对差分攻击的高抵抗性。该加密算法还对基于已知明文而执行的线性密码分析具有高抵抗性。
该加密算法基于广泛使用的称为Feistel结构的公用块密码结构,该Feistel结构包括上文参照图1和2描述的SPN型F函数。即,在此结构中,通过简单地重复包括非线性转换部分和线性转换部分的SPN型F函数多个轮次,将明文转换到密文,或将密文转换到明文。
例如,当给出长度为2mn比特(其中m和n是整数)的明文时,将该给出的2mn比特明文分为两个mn比特部分PL(明文-左端)部分和PR(明文-右端)部分。给出这两个部分作为F函数的输入值,并且在多个轮次的每个轮次中执行F函数。如上文参照图2所描述的,F函数具有包括级联的两个部分的SPN形式,该两个部分是包括多个S盒的非线性转换部分,以及线性转换部分。
在这个加密算法中,依照线性转换矩阵来执行F函数的线性转换部分,该线性转换矩阵是在每个轮次中从多个不同MDS(最大距离分隔)方阵中选择的。更具体地,进行该选择使得选择的MDS方阵至少在紧邻的偶数轮次之间不同且同样在紧邻的奇数轮次间不同。
下文进一步详细描述MDS方阵。当给出的矩阵满足下列两个条件(a)和(b)时,称该矩阵为MDS方阵。
(a)该矩阵呈方阵的形式。
(b)包括在该矩阵中的任何子矩阵的行列式不等于0,即,det(子矩阵)≠0。
满足上面条件(a)和(b)的矩阵称作MDS方阵。
图8说明了在公用密钥块加密处理中使用的MDS方阵的一种示例,在公用密钥块加密处理中,每个轮次中的输入/输出到/自F函数的数据都具有m×n比特(其中m和n是整数)的长度,F函数的非线性转换部分包括m个S盒,每个S盒具有大小为n比特的输入/输出,并且F函数的线性转换部分根据秩为m的方阵执行线性转换处理,该方阵的元素在2次方扩展域GF(2n)上,该2次方扩展域GF(2n)由n次方的不可约多项式定义。在图8所示的此MDS方阵示例中,n=8且m=8。
在满足如上所述的条件(a)和(b)的MDS方阵中,如果由humming权重hw(A)表达向量A的非零元素数目,由M表示秩为m的MDS方阵,并且由x表示MDS方阵的输入向量,那么满足下列不等式(公式1) hw(x)+hw(Mx)≥m+1(公式1) 公式1表示根据MDS方阵(M)进行线性转换的输入数据x的非零元素数目hw(x),和根据MDS方阵(M)作为线性转换结果而产生的输出数据Mx的非零元素数目hw(Mx)之和等于或大于MDS方阵的秩m。
应注意,名称“MDS方阵”来自这样的事实标准形式的MDS码(最大距离分割码)的生成矩阵满足上述条件。
已知即使在常规结构中(在该常规结构中相同线性转换矩阵用于F函数执行的所有轮次),使用MDS方阵作为线性转换矩阵可使得与使用非MDS矩阵的情况相比能够增加有效S盒的最小数目。
在本算法中,满足MDS方阵所需要求的矩阵用于F函数的每个轮次中,同时每次执行一个轮次时选择不同的矩阵。更具体地,进行该选择使得选择的MDS方阵至少在紧邻的偶数轮次之间不同且同样在紧邻的奇数轮次之间不同。
现在,下文描述了2r轮次(r为整数)Feistel公用密钥块密码结构的一些示例,这些Feistel公用密钥块密码结构提供了对差分攻击的改进抵抗性。
在下列解释中,标识MLTj用于表示应用到2r轮次Feistel公用密钥块密码结构中的第j个轮次的F函数的线性转换矩阵。
在与2r轮次Feistel公用密钥块密码结构相关联的本算法中,依照在每个轮次中从多个不同MDS(最大距离分隔)方阵选择的线性转换矩阵,来执行F函数的线性转换部分。更具体地,进行该选择使得选择的MDS方阵至少在紧邻的偶数轮次之间不同且同样在紧邻的奇数轮次之间不同。
更具体地,为在2r轮次Feistel公用密钥块加密处理中的使用而产生q个MDS方阵L1、L2、...、Lq(其中q≤r),并且在每个轮次中选择这些MDS方阵之一作为用于F函数线性转换部分的线性转换矩阵,使得对各个奇数轮次的F函数从上到下依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...,同时对各个偶数轮次从下到上依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...。
图9显示了此结构的具体示例。在图9中所示的示例中,Feistel公用密钥块密码结构具有12个轮次(即,2r=12或r=6),并且设置q为3使得由F函数的线性转换部分在各个轮次中依次使用三个不同的MDS方阵(L1、L2、和L3)。
在图9中所示的算法中,将给出的2mn比特明文分为两个mn比特部分PL(明文-左端)部分和PR(明文-右端)部分,给出这两个部分作为F函数的输入值,并且在多个轮次的每个轮次中执行F函数。如上文参照图2所描述的,在第一个轮次中且同样在任何其他轮次中的F函数401具有包括级联的两个部分的SPN形式,该两部分为包括S盒的非线性转换部分,以及线性转换部分。
应注意在图9所示的结构中,r=6并且q=3,且每个F函数盒中的符号“Ln”表示MDS方阵402。更具体地,由F函数的线性转换部分在各个轮次中执行的线性转换处理中依次使用三个不同的MDS方阵L1、L2、和L3。
下文参照图10描述设置线性转换矩阵MLTj的过程。
[步骤S21] 设置数目q等于或小于轮次数目2r的一半r。即,选择q的值满足下列条件 q≤r 其中q是等于或大于2的整数。
[步骤S22] 产生多至q个的GF(2n)上的秩为m的MDS方阵L1、L2、...、Lq。随后将描述产生q个的GF(2n)上的秩为m的MDS方阵L1、L2、...、Lq的方法的细节。
在步骤S22中产生了q个的GF(2n)上的秩为m的MDS方阵L1、L2、...、Lq之后,如下文描述来设置MDS方阵。
[步骤S23] 为在第(2i-1)个轮次(1≤i≤r)中的使用设置L(i-1modq)+1为线性转换矩阵MLT2i-1。
[步骤S24] 为在第2i个轮次(1≤i≤r)中的使用设置MLT2r2i+1为线性转换矩阵MLT2i。
在图9所示的示例中,存在十二个轮次(r=6)且q=3,设置矩阵如下 MLT1=L1,MLT2=L3 MLT3=L2,MLT4=L2 MLT5=L3,MLT6=L1 MLT7=L1,MLT8=L3 MLT9=L2,MLT10=L2 MLT11=L3,MLT12=L1 如上所述,在使用本算法的加密处理装置中,为在2r轮次Feistel公用密钥块加密处理中的使用产生q个MDS方阵L1、L2、...、Lq(其中q≤r)。对F函数的各个奇数轮次从上到下依次应用所产生的q个MDS方阵L1、L2、...、Lq、L1、L2、...,同时对各个偶数轮次从下到上依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...。
下文进一步详细地解释图10中所示的流程图中的步骤22中的产生GF(2n)上的秩为m的q个MDS方阵L1、L2、...、Lq的过程,和为F函数分配所产生的矩阵的过程,下文列出了下列三种情况, (3-a)产生MDS方阵且将它们应用到F函数,使得实现对差分攻击的高抵抗性。
(3-b)产生MDS方阵且将它们应用到F函数,使得实现对线性攻击的高抵抗性。
(3-c)产生MDS方阵且将它们应用到F函数,使得实现对差分攻击和线性攻击的高抵抗性。
(3-a)产生MDS方阵且将它们应用到F函数,使得实现对差分攻击的高抵抗性。
首先,通过举例的方式,描述了三个模式a1、a2和a3,在这些模式中产生MDS方阵且将其分配给F函数,使得实现对差分攻击的高抵抗性。
(模式a1) 作为第一个示例,描述了模式a1。在此模式中,如下文所描述的,产生MDS方阵且将其分配到F函数,使得实现对差分攻击的高抵抗性。首先,参照图11中所示的流程图,描述了产生MDS方阵的过程。
[步骤S101] 首先,输入数目为q的必需MDS方阵、扩展域的次数n,以及大小为m的矩阵。
随机产生多至q个的GF(2n)上的秩为m的MDS方阵L1、L2...、Lq。应注意,在图11中所示的流程中,假定设置MDS方阵的数目q为6,设置扩展域的次数n为8,且设置矩阵的大小m为8。
[步骤S102] 关于从q个秩为m的MDS方阵L1、L2、...、Lq所包括的全部qm个列中任意选择的任何m列是否线性不相关而执行检查。如果成功通过了上述检查,那么处理流程进行到步骤S103,否则处理流程返回到步骤S101。
[步骤S103] 为用作应用到2r轮次Feistel公用密钥块加密的MDS方阵,输出得到的q个秩为m的MDS方阵L1、L2、...、Lq。
产生q个秩为m的MDS方阵L1、L2、...、Lq,作为上述的处理结果。应注意,q≤r。
依照上文参照图10描述的[步骤S23]和[步骤S24],设置以上述的方式产生的q个秩为m的MDS方阵L1、L2、...、Lq作为应用到2r轮次Feistel公用密钥块加密处理的各个轮次中的F函数的线性转换部分的矩阵。更具体地,对F函数的各个奇数轮次从上到下依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...,同时对各个偶数轮次从下到上依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...。
以上述的方式,通过分配MDS方阵,使得为偶数轮次分配矩阵的顺序与为奇数轮次分配矩阵的顺序是相反的,这保证除了以相反的顺序应用密钥以外,可以以相似的方式执行加密和解密。
在本模式中,保证满足下列条件(a)到(c) (a)用于每个F函数的线性转换矩阵应该是MDS方阵; (b)从任何线性转换矩阵中任意选择的任何m个列向量是不相关的,该线性转换矩阵用于加密函数中奇数轮次中的至少q个连续的F函数。
(c)从任何线性转换矩阵中任意选择的任何m个列向量是不相关的,该线性转换矩阵用于偶数轮次中的至少q个连续的F函数。
因此,在根据本模式的具有多个轮次的Feistel公用密钥块密码结构中,保证了不会因m个或更小数目的有效S盒通过连续(2q-1)个轮次操作而发生差分消除。这导致有效S盒的最小数目增加,如在整个轮次的F函数上所计数的。
如上所述,在本模式中,能够增加有效S盒的最小数目,该有效S盒的最小数目是在所有轮次的加密函数上计数得到的,有效S盒的最小数目是指示公用密钥块密码对差分攻击的鲁棒性的度量之一。因此,能够增加进行差分密码分析(差分攻击)的有效S盒,并且由此能够增加密码分析的难度。因此,根据本模式的加密算法具有高安全性,并且不能经由密码分析容易地查找到密钥。
(模式a2) 作为第二个示例,下文描述模式a2。同样在此模式中,产生MDS方阵且将其分配到F函数,使得实现对差分攻击的高抵抗性。首先,参照图12中所示流程图,描述产生MDS方阵的过程。
[步骤S201] 首先,输入必需的MDS方阵的数目q、扩展域的次数n,以及矩阵的大小m。
随机产生多至q个的GF(2n)上的秩为m的MDS方阵L1、L2...、Lq。应注意,在图12中所示的流程中,假定设置MDS方阵的数目q为6、设置扩展域的次数n为8,且设置矩阵的大小m为8。
[步骤S202] 关于从q个秩为m的MDS方阵L1、L2、...、Lq中包括的全部qm列中任意选择的任何m列是否形成MDS方阵而执行检查。如果成功通过了上述检查,那么处理流程进行到步骤S203,否则处理流程返回到步骤S201。
如上所述,当给出的矩阵满足下列两个条件(a)和(b)时,称该矩阵为MDS方阵。
(a)该矩阵呈方阵的形式。
(b)包括在该矩阵中的任何子矩阵的行列式不等于0,即,det(子矩阵)≠0。
[步骤S203] 为用作应用到2r轮次Feistel公用密钥块加密的MDS方阵,输出得到的q个秩为m的MDS方阵L1、L2、...、Lq。
产生q个秩为m的MDS方阵L1、L2、...、Lq作为上述处理的结果。应注意,q≤r。
如上文参照图11所描述的,在根据上述模式a1产生MDS方阵的过程中,在步骤S102中,关于从q个秩为m的MDS方阵L1、L2...、Lq中包括的全部qm列中任意选择的任何m列是否线性不相关,执行检查。相反地,在根据本模式a2产生MDS方阵的过程中,关于从q个秩为m的MDS方阵L1、L2、...、Lq中包括的全部qm列中任意选择的任何m列是否形成MDS方阵,执行检查。即,在本模式中,以更为严格的方式执行检查。
依照上文参照图10描述的[步骤S23]和[步骤S24],如在上述的模式a1的情况下,设置如图12中所示的MDS方阵产生过程中产生的q个秩为m的MDS方阵L1、L2、...、Lq为应用到2r轮次Feistel公用密钥块加密处理的各个轮次中的F函数的线性转换部分的矩阵。更具体地,对F函数的各个奇数轮次从上到下依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...,同时对各个偶数轮次从下到上依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...。
以上述的方式,通过分配MDS方阵,使得为偶数轮次分配矩阵的顺序与为奇数轮次分配矩阵的顺序是相反的,这保证除了以相反的顺序应用密钥以外,可以以相似的方式执行加密和解密。
在本模式中,保证满足下列条件(a)到(c) (a)用于每个F函数的线性转换矩阵应该是MDS方阵; (b)从任何线性转换矩阵中任意选择的任何m个列向量形成MDS方阵,该线性转换矩阵用于加密函数中奇数轮次中的至少q个连续的F函数。
(c)从任何线性转换矩阵中任意选择的任何m个列向量形成MDS方阵,该线性转换矩阵用于偶数轮次中的至少q个连续的F函数。
因此,在根据本模式的具有多个轮次的Feistel公用密钥块密码结构中,保证了不会因m个或更小数目的有效S盒通过连续(2q-1)个轮次的操作而发生差分消除。
在本模式中,进一步保证了还满足下列条件。
(d)依照MDS方阵的性质,作为由a(a≤m)个有效S盒的操作结果而获得的差分值中的非零元素数目等于或大于m+1-a。这导致增加了在F函数的所有轮次上计数得到的有效S盒的最小数目。
如上所述,在本模式中,能够增加有效S盒的最小数目,该有效S盒的最小数目是在加密函数的所有轮次上计数得到的,有效S盒的最小数目是指示公用密钥块密码对差分攻击的鲁棒性的度量之一。因此,能够增加进行差分密码分析(差分攻击)的有效S盒,并且由此能够增加密码分析的难度。因此,根据本模式的加密算法具有高安全性,并且不能经由密码分析容易地查找到密钥。
(模式a3) 作为第三个示例,下文描述模式a3。同样在此模式中,如下文所描述的,产生MDS方阵且将其分配到F函数,使得实现对差分攻击的高抵抗性。首先,参照图13中所示的流程图,描述产生MDS方阵的过程。
[步骤S301] 首先,输入必需的MDS方阵的数目q、扩展域的次数n、以及矩阵的大小m。
产生GF(2n)上的秩为qm的一个MDS方阵M。应注意,在图13中所示的流程中,假定设置MDS方阵的数目q为6、设置扩展域的次数n为8,且设置矩阵的大小m为8。
[步骤S302] 从秩为qm的MDS方阵中任意选取m行,并且从选取的行产生m×qm矩阵M'。
[步骤S303] 将该m×qm矩阵M'任意分为q组,每组包括m列,这些m列是从m×qm矩阵M'中包括的总共qm个列中选取的,且不产生重叠,并且从各个组的列向量产生方阵L1、L2、...、Lq。为用于2r轮次Feistel公用密钥块加密处理,输出结果方阵L1、L2、...、Lq作为MDS方阵。
产生q个秩为m的MDS方阵L1、L2、...、Lq作为上述处理的结果。应注意,q≤r。
下文参照图14进一步详细地描述根据模式a3产生MDS方阵的过程。
[步骤S301] 如图14中所示,产生GF(2n)上的秩为qm的一个MDS方阵M。应注意,在此步骤S301中产生的矩阵M的秩可能大于qm。
[步骤S302] 如图14中所示,从产生的秩为qm的MDS方阵M中任意选取m行,并且从选取的行产生m×qm矩阵M'。尽管在图14中所示的示例中,选取了m个连续的行来形成m×qm方阵M',但并不需要选取连续多行,而可以选取任意m行。
[步骤S303] 将该m×qm矩阵M'任意分为x组,每组包括所提取的m列,这些m列是从m×qm矩阵M'中包括的总的qm列中选取的,且不产生重叠,并且从各个组的列向量产生方阵L1、L2、...、Lx。
依照上文参照图10描述的[步骤S23]和[步骤S24],如在上述的模式a1或a2的情况下,设置在上文参照图13和14描述的MDS方阵产生过程中产生的q个秩为m的MDS方阵L1、L2、...、Lq为应用到2r轮次Feistel公用密钥块加密处理的各个轮次中的F函数的线性转换部分的矩阵。更具体地,对F函数的各个奇数轮次从上到下依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...,同时对各个偶数轮次从下到上依次应用q个MDS方阵L1、L2...、Lq、L1、L2...。
以上述的方式,通过分配MDS方阵,使得为偶数轮次分配矩阵的顺序与为奇数轮次分配矩阵的顺序是相反的,这保证除了以相反的顺序应用密钥外,可以以相似的方式执行加密和解密。
在本模式中,保证满足下列条件(a)到(c) (a)用于每个F函数的线性转换矩阵应该是MDS方阵; (b)从任何线性转换矩阵中任意选择的任何m个列向量是不相关的,该线性转换矩阵用于加密函数中奇数轮次中的至少q个连续的F函数。
(c)从任何线性转换矩阵中任意选择的任何m个列向量是不相关的,该线性转换矩阵用于偶数轮次中的至少q个连续F函数。
因此,在根据本模式的具有多个轮次的Feistel公用密钥块密码结构中,保证不会因m个或更小数目的有效S盒通过连续(2q-1)个轮次的操作而发生差分消除。
在本模式中,进一步保证还满足下列条件。
(d)依照MDS方阵的性质,作为由a(a≤m)个有效S盒的操作结果而获得的差分值中的非零元素的数目等于或大于m+1-a。这导致增加了在F函数的所有轮次上计数得到的有效S盒的最小数目。
模式a3是有利的,特别地,当m和r非常大,使得模式a1或a2需要长时间来确定矩阵,并且不能在实际允许的短时间内确定矩阵的时候。即使在这样的情况下,模式a3也允许在允许的短时间内产生MDS方阵。
这是由于在模式a3中,能够使用例如Reed-Solomon码产生方法的方法,即使对于大的m或r也能够在实际允许的时间内执行该方法。
如上所述,在本模式a3中,能够增加在加密函数的所有轮次上计数得到的有效S盒的最小数目,有效S盒的最小数目是指示公用密钥块密码相对于差分攻击的鲁棒性的度量之一。因此,能够增加被进行差分密码分析(差分攻击)的有效S盒,并且由此能够增加密码分析的难度。因此,根据本模式的加密算法具有高安全性,并且不能经由密码分析容易地查找到密钥。
(3-b)产生MDS方阵且将它们应用到F函数,使得实现对线性攻击的高抵抗性。
接下来,通过举例的方式,描述两个模式b1和b2,在这些模式中产生MDS方阵且将其分配到F函数,使得实现对线性攻击的高抵抗性。
(模式b1) 作为第一个示例,描述模式b1,在模式b1中产生MDS方阵且将其分配到F函数,使得实现对线性攻击的高抵抗性。首先,参照图15中所示流程图,描述产生MDS方阵的过程。
[步骤S401] 首先,输入必需的MDS方阵的数目q、扩展域的次数n,以及矩阵的大小m。
随机产生多至q个的GF(2n)上的秩为m的MDS方阵M1、M2、...、Mq。应注意,在图14中所示的流程中,假定设置MDS方阵的数目q为6、设置扩展域的次数n为8,且设置矩阵的大小m为8。
[步骤S402] 分别计算q个秩为m的MDS方阵M1、M2、...、Mq的逆矩阵M1-1、M2-1、...、Mq-1,并且关于在任意两个相邻的逆矩阵中包括的总的2m个行向量中任意选择的任何m个列向量是否线性不相关,执行检查。在图15中,tR表示行向量的转置向量。如果成功通过了上述检查,那么处理流程进行到步骤S403,否则处理流程返回到步骤S401。应注意,认为M1-1和Mq-1是彼此相邻的。
[步骤S403] 为用作应用到2r轮次Feistel公用密钥块加密的MDS方阵,输出得到的q个秩为m的MDS方阵L1、L2、...、Lq。
产生q个秩为m的MDS方阵L1、L2、...、Lq作为上述处理的结果。应注意,q≤r。
依照上文参照图10描述的[步骤S23]和[步骤S24],设置以上述方式产生的q个秩为m的MDS方阵L1、L2、...、Lq为应用到2r轮次Feistel公用密钥块加密处理的各个轮次中的F函数的线性转换部分的矩阵。更具体地,对F函数的各个奇数轮次从上到下依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...,同时对各个偶数轮次从下到上依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...。
以上述的方式,通过分配MDS方阵,使得为偶数轮次分配矩阵的顺序与为奇数轮次分配矩阵的顺序是相反的,这保证除了以相反的顺序应用密钥外,可以以相似的方式执行加密和解密。
在本模式中,保证满足下列条件(a)到(b) (a)用于每个F函数的线性转换矩阵应该是MDS方阵; (b)连续奇数轮次和偶数轮次的加密函数中包含的任何线性转换矩阵的逆矩阵中任意包括的任何m个列向量是不相关的。
这使得能够增加线性攻击中使用线性近似进行密码分析的难度,由此能够实现具有高安全性的加密算法,该算法使得难以经由密码分析查找到密钥。
(模式b2) 作为第二个示例,描述模式b2。同样在此模式中,产生MDS方阵且将其分配到F函数,使得实现对线性攻击的高抵抗性。首先,参照图16中所示流程图,描述产生MDS方阵的过程。
[步骤S501] 首先,输入必需的MDS方阵的数目q、扩展域的次数n、以及矩阵的大小m。
随机产生多至q个的GF(2n)上的秩为m的MDS方阵M1、M2、...、Mq。应注意,在图16中所示的流程中,假定设置MDS方阵的数目q为6、设置扩展域的次数n为8,且设置矩阵的大小m为8。
[步骤S502] 分别计算q个秩为m的MDS方阵M1、M2、...、Mq的逆矩阵M1-1、M2-1、...、Mq-1,并且关于在任何两个相邻的逆矩阵中包括的总共2m个行向量中任意选择的任何m列是否形成MDS方阵而执行检查。在图16中,tR表示行向量的转置向量。如果成功通过了上述检查,那么处理流程进行到步骤S503,否则处理流程返回到步骤S401。应注意,认为M1-1和Mq-1是彼此相邻的。
如上所述,当给出的矩阵满足下列两个条件(a)和(b)时,称该矩阵为MDS方阵 (a)该矩阵呈方阵的形式。
(b)包括在该矩阵中的任何子矩阵的行列式不等于0,即,det(子矩阵)≠0。
[步骤S503] 为用作应用到2r轮次Feistel公用密钥块加密的MDS方阵,输出得到的q个秩为m的MDS方阵L1、L2、...、Lq。
产生q个秩为m的MDS方阵L1、L2、...、Lq作为上述的处理结果。应注意,q≤r。
如上文参照图15所描述的,在根据上述模式b1产生MDS方阵的过程中,在步骤S402中关于从q个秩为m的MDS方阵M1、M2...、Mq的逆矩阵M1-1、M2-1、...、Mq-1中所包括的全部qm列中任意选择的任何m列是否线性不相关而执行检查。相反地,在本模式b2中,关于从q个秩为m的MDS方阵M1、M2、...、Mq的逆矩阵M1-1、M2-1、...、Mq-1所包括的全部qm列中任意选择的任何m列是否形成MDS方阵而执行检查。即,在本模式中,以更为严格的方式执行检查。
依照上文参照图10描述的[步骤S23]和[步骤S24],如在上述的模式b1的情况下,设置如图16中所示的MDS方阵产生过程中产生的q个秩为m的MDS方阵L1、L2、...、Lq为应用到2r轮次Feistel公用密钥块加密处理的各个轮次中的F函数的线性转换部分的矩阵。更具体地,对F函数的各个奇数轮次从上到下依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...,同时对各个偶数轮次从下到上依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...。
以上述的方式,通过分配MDS方阵,使得为偶数轮次分配矩阵的顺序与为奇数轮次分配矩阵的顺序是相反的,这保证除了以相反的顺序应用密钥外,可以以相似的方式执行加密和解密。
在本模式中,保证满足下列条件(a)到(b) (a)用于每个F函数的线性转换矩阵应该是MDS方阵; (b)连续奇数轮次和偶数轮次的加密函数中包括的任何线性转换矩阵的逆矩阵中任意包括的任何m个列向量形成MDS方阵。
这使得能够在线性攻击中增加使用线性近似进行密码分析的难度,因此能够实现具有高安全性的加密算法,该算法使得难以通过密码分析查找到密钥。
[(3-c)产生MDS方阵且将它们应用到F函数,使得实现对差分攻击和线性攻击的高抵抗性] 下文描述了一种模式的示例,在该模式中产生MDS方阵且将其分配到F函数,使得实现对差分攻击和线性攻击的高抵抗性。
在加密算法中,通过产生MDS方阵可以实现对差分攻击的高抵抗性,该MDS方阵用于以上文参照图10到13描述的方式由三个模式a1(图11)到a3(图13)之一中的F函数的线性转换部分所执行的线性转换处理。在加密算法中,通过产生MDS方阵可以实现对线性攻击的高抵抗性,该MDS方阵用于以上文参照图10和图14、15描述的方式由两个模式b1(图14)和b2(图15)之一中的F函数的线性转换部分所执行的线性转换处理。
依照上文参照图10描述的[步骤S23]和[步骤S24],可以通过如下方式实现对差分攻击和线性攻击两者的高抵抗性根据模式a1(图11)到a3(图13)之一以及模式b1(图14)和b2(图15)之一的组合产生MDS方阵;且使用该MDS方阵,该MDS方阵由在2r轮次Feistel公用密钥块密码处理的各个轮次中的F函数的线性转换部分执行的线性转换处理中产生。
更具体地,q个MDS方阵产生于下面描述的组合之一。
模式a1和模式b1的组合 模式a1和模式b2的组合 模式a2和模式b1的组合 模式a2和模式b2的组合 模式a3和模式b1的组合 模式a3和模式b2的组合 结果矩阵用于线性转换处理,该线性转换处理由2r轮次Feistel公用密钥块密码处理的各个轮次中的F函数的线性转换部分来执行。更具体地,对F函数的各个奇数轮次从上到下依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...,同时对各个偶数轮次从下到上依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...。以上述方式设置MDS方阵使得能够实现对差分攻击和线性攻击两者都具有高抵抗性的加密处理。
现在参照图17,描述产生MDS方阵并将它们应用到F函数使得实现对差分攻击和线性攻击的高抵抗性的示例。在此示例中,依照上述的模式a2和模式b2的组合执行处理。
[步骤S601] 首先,输入必需的MDS方阵的数目q、扩展域的次数n、以及矩阵的大小m。
随机产生多至q个的GF(2n)上的秩为m的MDS方阵M1、M2、...、Mq。应注意,在图1 7中所示的流程中,假定设置MDS方阵的数目q为6、设置扩展域的次数n为8,且设置矩阵的大小m为8。
[步骤S602] 关于从q个秩为m的MDS方阵M1、M2、...、Mq中包括的全部qm列中任意选择的任何m列是否形成MDS方阵而执行检查。如果成功通过了上述检查,那么处理流程进行到步骤S603,否则处理流程返回到步骤S601。
如上所述,当给出的矩阵满足下列两个条件(a)和(b)时,称该矩阵为MDS方阵。
(a)该矩阵呈方阵的形式。
(b)包括在该矩阵中的任何子矩阵的行列式不等于0,即,det(子矩阵)≠0。
[步骤S603] 分别计算q个秩为m的MDS方阵M1、M2、...、Mq的逆矩阵M1-1、M2-1、...、Mq-1,并且关于在任意两个相邻逆矩阵中包括的总的2m个行向量中任意选择的任何m列是否形成MDS方阵而执行检查。在图1 7中,tR表示行向量的转置向量。如果成功通过了上述检查,那么处理流程进行到步骤S604,否则处理流程返回到步骤S601。应注意,认为M1-1和Mq-1是彼此相邻的。
[步骤S604] 为用作应用到2r轮次Feistel公用密钥块加密的MDS方阵,输出得到的q个秩为m的MDS方阵L1、L2、...、Lq。
产生q个秩为m的MDS方阵L1、L2、...、Lq作为上述处理的结果。应注意,q≤r。
依照上文参照图10描述的[步骤S23]和[步骤S24],设置如图17中所示的MDS方阵产生过程中产生的q个秩为m的MDS方阵L1、L2、...、Lq为应用到2r轮次Feistel公用密钥块加密处理的各个轮次中的F函数的线性转换部分的矩阵。更具体地,对F函数的各个奇数轮次从上到下依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...,同时对各个偶数轮次从下到上依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...。
以上述的方式,通过分配MDS方阵,使得为偶数轮次分配矩阵的顺序与为奇数轮次分配矩阵的顺序是相反的,这保证除了以相反的顺序应用密钥外,可以以相似的方式执行加密和解密。
在本模式中,保证了满足下列条件(a)到(c) (a)用于每个F函数的线性转换矩阵应该是MDS方阵; (b)从任何线性转换矩阵中任意选择的任何m个列向量形成MDS方阵,该线性转换矩阵用于加密函数中的奇数轮次中的至少q个连续F函数。
(c)从任何线性转换矩阵中任意选择的任何m个列向量形成MDS方阵,该线性转换矩阵用于偶数轮次中的至少q个连续F函数。
因此,在根据本模式的具有多个轮次的Feistel公用密钥块密码结构中,保证不会因m个或更小数目的有效S盒通过连续(2q-1)个轮次的操作而发生差分消除。
在本模式中,进一步保证还满足下列条件。
(d)依照MDS方阵的性质,作为由a(a≤m)个有效S盒的操作结果而获得的差分值中,非零元素的数目等于或大于m+1-a。这导致增加了在F函数的所有轮次上计数得到的有效S盒的最小数目。
在本模式中,进一步保证了还满足下列条件。
(e)连续奇数轮次和偶数轮次中的加密函数中包含的任何线性转换矩阵的逆矩阵中任意包括的任何m个列向量形成MDS方阵。这使得能够在线性攻击中增加使用线性近似进行密码分析的难度,因此能够实现具有高安全性的加密算法,该算法使得难以经由密码分析查找到密钥。
如上所述,根据本模式的算法使得能够实现高安全密码,该密码对差分和线性攻击两者都具有高抵抗性,因此难以通过密码分析查找到密钥。如上所述,在图17中所示的示例中,依照模式a2和模式b2的组合产生MDS方阵。应注意,该组合不限于此,而是模式组合可以选自模式a1和b1的组合、模式a1和b2的组合、模式a2和b1的组合、模式a3和b1的组合、以及模式a3和b2的组合。根据所选择的模式组合,可以产生q个MDS方阵,并且可以为2r轮次Feistel公用密钥块加密处理中的F函数的线性转换部分执行的线性转换处理的轮次分配产生的MDS方阵,以使得,更具体地,对各个奇数轮次从上到下依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...,同时为各个偶数轮次从下到上依次应用q个MDS方阵L1、L2、...、Lq、L1、L2、...,因此能够实现对差分和线性攻击两者都具有高安全性的加密处理,因此不容易经由密码分析查找到密钥。
在上述的示例中,为了容易理解,假定每个线性转换矩阵是在GF(2n)上定义的m×m矩阵,并且依照该矩阵执行从mn比特到mn比特的数据转换。可选地,在GF(2n)上定义的mn×mn矩阵可以用于实现对差分和线性密码分析的类似高抵抗性。应注意,GF(2n)上的任意矩阵以一对一方式对应于代表等效变换的GF(2)上的矩阵。因此,GF(2)上的矩阵提供了更通用的表达式。在GF(2)上,矩阵具有mn行和mn列,这些矩阵是比GF(2n)上的矩阵的行数和列数多n倍。GF(2n)上的矩阵的第一行对应于GF(2)上的矩阵的第一和第n行,并且第一列对应于第一到第n列。更通用地,第i行对应于第((i-1)+1)到第((i-1)+n)行,且第i列对应于第((i-1)+1)到第((i-1)+n)列。因此,从GF(2n)上的矩阵选取1行或1列的操作对应于从GF(2)上的矩阵选取n行或n列的操作。从GF(2n)上的矩阵选取m行或m列的操作对应于m次从GF(2)上的矩阵选取n行或n列的操作,直到最终获得mn×mn矩阵。根据上述对应关系,能够容易地将该操作扩展到使用GF(2)上的矩阵的操作。
[4.依照本发明的加密算法] 现在,描述一种依照本发明的加密算法。
如上文在“3.对密码分析具有改进抵抗性的加密算法的示例”部分中所描述的,当重复执行包括非线性转换部分和线性转换部分的SPN型F函数多个轮次时,如果使用满足特定条件的MDS(最大距离分隔)方阵来执行线性转换,那么能够增加对密码分析或攻击(例如线性密码分析或差分密码分析)的抵抗性。
然而,上述算法的问题在于可用矩阵是有限的。即,为了在a1到a3模式之一中实现对差分攻击的高抵抗性,应用到F函数的线性转换矩阵需要满足下列条件。
(A1)用于每个F函数的线性转换矩阵应该是MDS方阵; (A2)从任何线性转换矩阵中任意选择的任何m个列向量是不相关的或形成MDS方阵,该线性转换矩阵用于加密函数中奇数轮次中的至少q个连续F函数。
(A3)从任何线性转换矩阵中任意选择的任何m个列向量是不相关的或形成MDS方阵,该线性转换矩阵用于偶数轮次中的至少q个连续F函数。
为了在b1和b2模式之一中实现对线性攻击的高抵抗性,应用到F函数的线性转换矩阵需要满足下列条件 (B1)用于每个F函数的线性转换矩阵应该是MDS方阵; (B2)连续奇数轮次和偶数轮次的加密函数中包含的任何线性转换矩阵的逆矩阵中任意包括的任何m个列向量形成MDS方阵。
为了实现对差分和线性攻击两者的高抵抗性,有必要满足(A1)到(A3)以及(B1)和(B2)的所有条件,因此进一步限制了候选的可用矩阵。
如上文参照图1和2所描述的,在使用Feistel结构的加密中,通过简单地重复转换函数来转换明文到密文。首先,将长度为2mn比特的明文分为每部分具有mn比特长度的两部分PL(明文-左端)数据101和PR(明文-右端)数据102,并且给出这两部分作为F函数(轮次函数)120的输入值。对于给出的输入值,将F函数120重复执行r个轮次。
在图1所示的示例中,在第一个轮次中,长度为mn比特的输入数据X和从密钥发生器(没有显示)提供的轮次密钥K1103被输入到F函数120。F函数120转换输入数据且输出长度为mn比特的结果数据Y。将输出数据Y输入到异或单元104中,且与从在先轮次的另一侧提供的输入数据(在第一轮次的情况下,该输入数据为PL)进行异或运算。将作为该操作的结果而获得的长度为mn比特的数据输出到下一轮次函数。如果上述过程包括预定重复数目(r)的F函数,那么完成加密处理。输出包括CL(密文-左端)数据和CR(密文-右端)数据的结果密文。应注意,上述结构允许简单地通过使用相同的F函数以倒序应用轮次密钥来解密密文,由此反函数不是必需的。
如上文参照图2所描述的,用于每个轮次的F函数120具有包括级联的非线性转换层和线性转换层的所谓SPN结构。如图2(b)所示,SPN型F函数120具有用于执行非线性转换的多个S盒121。自轮次函数的在先轮次提供的长度为mn比特的输入值X与从密钥调度表部分提供的轮次密钥Ki进行异或运算,并且结果输出被输入到多(m)个S盒121,每个S盒对于输入的每n个比特执行非线性转换处理。每个S盒例如使用转换表来执行非线性转换处理。
给出为来自S盒121的输出数据mn的比特输出值Z被输入到线性转换部分122,该线性转换部分122被配置为执行线性转换处理。线性转换部分122对输入的mn比特的值Z例如通过交换比特位置来执行线性转换处理。该结果被输出为mn比特的值Y。输出值Y然后与在先轮次给出的输入数据进行异或运算,并且该结果被应用作为下个轮次中的F函数的输入值。
在图2中所示的F函数120的示例中,输入/输出的长度是m×n(m和n是整数)比特,非线性转换层包括由m个S盒121组成的并行阵列,每个S盒具有n比特的输入和输出,并且用作线性转换层的线性转换部分122依照m×m方阵来执行线性转换处理,该方阵的元素在2次方扩展域GF(2n)上,其由n次方的不可约多项式定义。
每个用于由线性转换部分122执行的线性转换处理的方阵具有如图3中所示的结构。在图3中,从非线性转换部分(S盒121)输出的mn比特数据Z[1],Z[2],...,Z[m]依照预定方阵125进行线性转换。作为结果,确定了Y[1],Y[2],...,Y[m]并且将其从F函数(轮次函数)输出。在该过程中,在预定的2次方扩展域GF(2n)上执行该方阵对每个数据的元素的线性操作。
如上文在“3.对密码分析具有改进抵抗性的加密算法的示例”部分中所描述的,如果使用满足特定条件的MDS方阵(最大距离分隔)来执行线性转换,那么能够增加对密码分析或攻击(例如线性密码分析或差分密码分析)的抵抗性。然而,如上所述,问题在于可用矩阵的候选是有限的。
为了解决上面的问题,下面公开了两个Feistel公用密钥块加密算法的模式示例,在这些示例中,作用于用于线性转换的矩阵的限制条件变弱,使得可用矩阵的候选数增加,同时使有效S盒数目保持到足够高等级。
(4a)模式1 首先,下面描述依照本发明的Feistel公用密钥块加密算法模式1。
首先,如下定义线性转换的特殊(special)形式最优扩散映射 当给出映射[θ]时 θ{0,1}na→{0,1}nb 该映射将n×a比特数据线性转换到n×b比特数据,定义分支数目B(θ)为 B(θ)=minα≠0{hwn(α)+hwn(θ(α))} 其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是将给出的比特串Y拆分为n比特元素且返回非零元素数目的函数,该非零元素包括至少一个非零比特, 当B(θ)=b+1用于映射θ时,该映射θ称作最优扩散映射。为了方便,矩阵M的分支数目由B(M)表示。
在包括SPN型F函数的r轮次Feistel密码结构中,定义BD1到BD3如下 BD1=min{B(Mi)|1≤i≤r} BD2=min{B(Mi|Mi+2)|1≤i≤r-2} 其中A|B表示连接矩阵A和B得到的矩阵。
此外,定义BL2如下 BL2=min{B(tM-1i|tM-1i+2|1≤i≤r-2} 其中tM表示M的转置矩阵。
根据本发明的Feistel加密算法模式1具有如下特征 (1)选择矩阵Mi使得BD1和BD2等于或大于3,从而增加对差分攻击的抵抗性。
(2)选择矩阵Mi使得BL2等于或大于3,从而增加对线性攻击的抵抗性。
在根据本发明的Feistel公用密钥块加密算法中,对于用于线性转换的矩阵的限制仅是上述的那些条件(1)和(2)。应注意这些限制与对于上文在“3.对密码分析具有改进抵抗性的加密算法的示例”部分中描述的算法中的矩阵的限制条件相比较不严格。该较不严格的限制允许增加在Feistel公用密钥块加密算法中可用的候选矩阵的数目,同时使有效S盒的数目保持到足够高等级。这使得能够增加有效S盒的最小数目,该有效S盒的最小数目是在加密函数的所有轮次上计数得到的,并且该有效S盒的最小数目是公用密钥块密码对攻击的抵抗程度的度量之一,由此能够以高安全方式实现对数据加密的算法,以实现对线性攻击和差分攻击的高抵抗性。
接下来,下文给出了原因和证据条件(1)允许增加对差分攻击的抵抗性;条件(2)允许增加对线性攻击的抵抗性。
(4a.1)在模式1中实现的对差分攻击抵抗性的改进 首先,描述通过满足上述条件(1)能够实现对差分攻击的高抵抗性的原因,条件(1)是选择矩阵Mi使得BD1和BD2等于或大于3。
在基于SPN型F函数的r轮次Feistel密码中,定义BD1到BD3如下 BD1=min{B(Mi)|1≤i≤r} BD2=min{B(Mi|Mi+2)|1≤i≤r-2} 其中A|B表示连接矩阵A和B得到的矩阵。
在此,下列条件成立。
条件0)BD1≥BD2 如果存在于第k个轮次的具有非零输入和输出的S盒(差分有效S盒)的数目由Dk所代表,那么下列成立。
当将非零输入差分给出到具有SPN型F函数的Feistel密码时,下列条件成立。
条件1)如果Di=0,那么Di-2≠0,Di-1≠0,Di+1≠0,且Di+2≠0 条件2)如果Di=0,那么Di-1=Di+1 条件3)如果Di+1≠0,那么Di+Di+1+Di+2≥BD1 条件4)如果Di=0,那么Di+1+Di+2≥BD1 条件5)如果Di+2=0,那么Di+Di+1≥BD1 条件6)如果Di=0,那么Di+1+Di+3+Di+4≥BD2 条件7)如果Di+4=0,那么Di+Di+1+Di+3≥BD2 下面讨论包括在连续六个轮次中的差分有效S盒的总数目T6(即T6=Di+Di+1+Di+2+Di+3+Di+4+Di+5)。
情况1)当Di+1≠0且Di+4≠0时,由条件3下列成立。
Di+Di+1+Di+2≥BD1且Di+3+Di+4+Di+5≥BD1 因此, T6≥2BD1 情况2)当Di+1=0时, T6=Di+Di+1+Di+2+Di+3+Di+4+Di+5 因此由条件2, T6=2Di+2+Di+3+Di+4+Di+5 此外,由条件4和6,有 T6=(Di+2+Di+3)+(Di+2+Di+4+Di+5)≥BD1+BD2 情况3)当Di+4=0时,能够以与情况(2)相似的方式导出下列 T6≥BD1+BD2 由于上文以及条件(0),有 T6≥BD1+BD2 根据6的倍数(即6R(R≥2))能够被分为R份6的性质,能够从六个轮次中所保证的上述差分有效S盒的数目计算在6R个轮次重的差分有效S盒的最小数目。
即,可以使用BD1和BD2来表示具有非零差分输入/输出的S盒(差分有效S盒)的最小数目。作为设计原理,已知要实现尽量大的BD1。然而,对于所有轮次使用相同的矩阵导致BD2=2,因此没有实现差分有效S盒的最小数目的增加。
相反地,如上所述,在依照本发明当前模式的算法中,条件BD1≥BD2成立,因此能够通过设置BD2到足够大来增加具有非零差分输入/输出的S盒(差分有效S盒)的最小数目。
上文在“3.对密码分析具有改进抵抗性的加密算法的示例”部分描述的算法中,为了实现对差分攻击的高抵抗性,用于F函数各个轮次的线性转换矩阵需满足下列条件 (A1)用于每个F函数的线性转换矩阵应该是MDS方阵; (A2)从任何线性转换矩阵中任意选择的任何m个列向量是不相关的或形成MDS方阵,该线性转换矩阵用于加密函数中的奇数轮次中的至少q个连续F函数。
(A3)从任何线性转换矩阵中任意选择的任何m个列向量是不相关的或形成MDS方阵,该线性转换矩阵用于偶数轮次中的至少q个连续F函数。
使用下列表达式 BD1=min{B(Mi)|1≤i≤r},且 BD2=min{B(Mi|Mi+2)|1≤i≤r-2} 上面的条件(A1)到(A3)与下列条件相等 BD1=BD2=m+1 在依照本发明当前模式的上述算法中,由于条件BD1≥BD2成立,因此能够通过设置BD2到足够大来增加差分有效S盒的最小数目。这产生一种优势,即,在由F函数执行的线性转换中使用的候选矩阵的数目和具有非零差分输入/输出的差分有效S盒的数目保持到足够大的等级。这使得能够增加有效S盒的最小数目,该有效S盒的最小数目是在加密函数的所有轮次上计数得到的,有效S盒的最小数目是公用密钥块密码对攻击的抵抗程度的度量之一,因此能够以高安全方式实现对数据加密的算法,以实现对差分攻击的高抵抗性。
(4a.2)在模式1中实现的对线性攻击抵抗性的改进 现在,描述通过满足条件(2)能够实现对线性攻击的高抵抗性的原因,即,通过选择矩阵Mi使得BL2等于或大于3。
定义BL2如下 BL2=min{B(tM-1i|tM-1i+2|1≤i≤r-2} 其中tM表示M的转置矩阵, 如果存在于第k个轮次中的具有非零线性输入/输出掩码的S盒(线性有效S盒)的数目由Lk代表,那么下列成立。
当将非零输入线性掩码给出到具有SPN型F函数的Feistel密码时,下列条件成立。
条件1)Li+Li+1+Li+2≥BL2 任何3的倍数,即3R(R≥1),能够被分为多份3。所以,确保了3R个轮次上的线性有效S盒的最小数目由R×BL2给出。因此,能够通过设置BL2到足够大来增加有效S盒的最小数目。
上文在“3.对密码分析具有改进抵抗性的加密算法的示例”部分描述的算法中,为了实现对线性攻击的高抵抗性,用于F函数各个轮次的线性转换矩阵需满足下列条件 (B1)用于每个F函数的线性转换矩阵应该是MDS方阵; (B2)连续奇数轮次和偶数轮次的加密函数中包括的任何线性转换矩阵的逆矩阵中任意包括的任何m个列向量形成MDS方阵。
使用下列表达式定义BL2 BL2=min{B(tM-1i|tM-1i+2|1≤i≤r-2} 上面的条件(B1)到(B2)可以由以下等价表达式表示 BL2=m+1 在依照本发明当前模式的上述算法中,唯一的限制为应选择矩阵Mi使得BL2等于或大于3。
由此,保证了3R个轮次上的线性有效S盒的最小数目由R×BL2给出。因此,能够通过将BL2设置到足够大来增加线性有效S盒的最小数目。这使得能够增加有效S盒的最小数目,该有效S盒的最小数目是在加密函数的所有轮次上计数得到的,有效S盒的最小数目是公用密钥块密码对攻击的抵抗程度的度量之一,因此能够以高安全方式实现对数据加密的算法,以实现对线性攻击的高抵抗性。
应注意上述的条件,即 (1)选择矩阵Mi使得BD1和BD2等于或大于3 (2)选择矩阵Mi使得BL2等于或大于3 是彼此独立定义的。能够通过满足条件(1)来增加对差分攻击的抵抗性,同时能够通过满足条件(2)来增加对线性攻击的抵抗性。
上述的“用于确保对差分攻击高抵抗性的条件(1)”和“用于确保对线性攻击高抵抗性的条件(2)”是彼此独立定义的。通常,选择矩阵使得对于两种类型的攻击实现近似的抵抗度。然而,依赖于密码使用的情况,可以选择矩阵使得实现对差分攻击的高抵抗性而不考虑对线性攻击的抵抗性,反之亦然。
(4b)模式2 接下来,下文描述依照本发明的Feistel公用密钥块加密算法的模式2。对照上述的模式1,对矩阵施加严格限制。
首先,如下定义线性转换的特殊形式最优扩散映射 当给出映射[θ] θ{0,1}na→{0,1}nb 该映射将n×a比特数据线性转换到n×b比特数据,定义分支数目B(θ)为 B(θ)=minα≠0{hwn(α)+hwn(θ(α))} 其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是拆分给出的比特串Y为n比特元素且返回非零元素数目的函数,该非零元素包括至少一个非零比特, 当B(θ)=b+1用于映射θ时,该映射θ称作最优扩散映射。为了方便,矩阵M的分支数目由B(M)表示。
在包括SPN型F函数的r轮次Feistel密码结构中,定义BD1到BD3如下 BD1=min{B(Mi)|1≤i≤r} BD2=min{B(Mi|Mi+2)|1≤i≤r-2} BD3=min{B(Mi|Mi+2|Mi+4)|1≤i≤r-4} 其中A|B表示连接矩阵A和B得到的矩阵。
在此,BL2定义如下 BL2=min{B(tM-1i|tM-1i+2|1≤i≤r-2} 其中tM表示M的转置矩阵。
如上所述,在根据本发明的Feistel加密算法中,选择矩阵如下 (1)选择矩阵Mi使得BD1、BD2和BD3等于或大于3,从而增加对差分攻击的抵抗性,和/或 (2)选择矩阵Mi使得BL2等于或大于3,从而增加对线性攻击的抵抗性。
在根据本发明的Feistel公用密钥块加密算法中,对用于线性转换的施加的限制仅是上述的条件(1)和(2)。应注意这些限制与对于上文在“3.对密码分析具有改进抵抗性的加密算法的示例”部分描述的算法中的矩阵施加的限制条件相比较不严格。该较不严格的限制允许增加在Feistel公用密钥块加密算法中可用的候选矩阵的数目,同时保持有效S盒的数目到足够高等级。这使得能够增加有效S盒的最小数目,该有效S盒的最小数目是在加密函数的所有轮次上计数得到的,并且该有效S盒的最小数目是公用密钥块密码对攻击的抵抗程度的度量之一,因此能够以高安全方式实现对数据加密的算法,以实现对线性攻击和差分攻击的高抵抗性。
接下来,下文给出了原因和证据条件(1)允许增加对差分攻击的抵抗性;条件(2)允许增加对线性攻击的抵抗性。
(4b.1)在模式2中实现对差分攻击抵抗性的改进 首先,描述通过满足上述的条件(1)能够实现对差分攻击的高抵抗性的原因,条件(1)是选择矩阵Mi使得BD1、BD2和BD3等于或大于3。
在基于SPN型F函数的r轮次Feistel密码中,定义BD1到BD3如下 BD1=min{B(Mi)|1≤i≤r} BD2=min{B(Mi|Mi+2)|1≤i≤r-2} BD3=min{B(Mi|Mi+2|Mi+4)|1≤i≤r-4} 其中A|B表示连接矩阵A和B得到的矩阵。
在此,下列条件成立。
条件0)BD1≥BD2≥BD3 如果存在于第k个轮次中的具有非零输入和输出的S盒(差分有效S盒)的数目由Dk所代表,那么下列成立。
当将非零输入差分给出到具有SPN型F函数的Feistel密码时,下列条件成立。
条件1)如果Di=0,那么Di-2≠0,Di-1≠0,Di+1≠0且Di+2≠0 条件2)如果Di=0,那么Di-1=Di+1 条件3)如果Di+1≠0,那么Di+Di+1+Di+2≥BD1 条件4)如果Di=0,那么Di+1+Di+2≥BD1 条件5)如果Di+2=0,那么Di+Di+1≥BD1 条件6)如果Di=0,那么Di+1+Di+3+Di+4≥BD2 条件7)如果Di+4=0,那么Di+Di+1+Di+3≥BD2 条件8)如果Di=Di+6=0,那么Di+1+Di+3+Di+5≥BD3 下面讨论包括在连续六个轮次中的差分有效S盒的总数目T6(即T6=Di+Di+1+Di+2+Di+3+Di+4+Di+5)。
情况1)当Di+1≠0且Di+4≠0时,由条件(3)以下成立 Di+Di+1+Di+2≥BD1且Di+3+Di+4+Di+5≥BD1。
因此, T6≥2BD1 情况2)当Di+1=0时, T6=Di+Di+1+Di+2+Di+3+Di+4+Di+5。
此外,由条件2,有 T6=2Di+2+Di+3+Di+4+Di+5。
由条件4和6,有 T6=(Di+2+Di+3)+(Di+2+Di+4+Di+5)≥BD1+BD2。
情况3)当Di+4=0时,能够以与情况2相似的方式导出以下 T6≥BD1+BD2。
由于上文和条件0,有 T6≥BD1+BD2 接下来,讨论在连续9个轮次上计数得到的差分有效S盒的总数目。给出总数目为 T9=(Di+Di+1+Di+2+Di+3+Di+4+Di+5+Di+6+Di+7+Di+8) 情况1)当Di+1≠0时,由条件3导出下列 Di+Di+1+Di+2≥BD1 从在六个轮次上差分有效S盒的总数目导出下列 Di+3+Di+4+Di+5+Di+6+Di+7+Di+8≥BD1+BD2 因此 T9≥2BD1+BD2 情况2)当Di+7≠0时,可以以情况1相似的方式导出如下 T9≥2BD1+BD2 情况3)当Di+1=Di+7=0时,计算T9为T9=Di+Di+1+Di+2+Di+3+Di+4+Di+5+Di+6+Di+7+Di+8 由条件2,导出如下 T9=2Di+2+Di+3+Di+4+Di+5+Di+6。
此外,由条件4和8,导出如下 T9=(Di+2+Di+3)+(Di+2+Di+4+Di+6)+(Di+5+Di+6){>}=2BD1+BD3 由上文和条件(0)可以导出如下 T9≥2BD1+BD3 任何等于或大于6的3的倍数,即3R(R≥2)可以被分为多个6加多个9。下面显示了一些示例。
示例)6=6,9=9,12=6+6,15=6+9,18=6+6+6=9+9, 21=6+6+9,24=6+6+6+6=9+9+6,... 由于上述的任何等于或大于6的3的倍数,即3R(R≥2),可以被分为多个6加多个9的性质,在3R个轮次上的差分有效S盒的最小数目可以由在6个轮次和在9个轮次上计数得到的差分有效S盒的数目确定。
即,能够使用BD1、BD2和BD3来表示具有非零差分输入/输出的S盒(差分有效S盒)的最小数目。作为设计原理,已知要实现尽量大的BD1。然而,对于所有轮次使用相同的矩阵导致BD2=BD3=2,由此没有实现差分有效S盒最小数目的增加。
在上述的证据中,假定满足下列限制条件 BD1≥BD2≥BD3 因此,能够通过设置BD3到足够大来增加具有非零差分输入/输出的S盒(差分有效S盒)的最小数目。
上文在“3.对密码分析具有改进抵抗性的加密算法的示例”部分描述的算法中,为了实现对差分攻击的高抵抗性,用于各个轮次的F函数的线性转换矩阵需满足下列条件 (A1)用于每个F函数的线性转换矩阵应该是MDS方阵; (A2)从任何线性转换矩阵中任意选择的任何m个列向量是不相关的或形成MDS方阵,该线性转换矩阵用于加密函数中的奇数轮次中的至少q个连续F函数。
(A3)从任何线性转换矩阵中任意选择的任何m个列向量是不相关的或形成MDS方阵,该线性转换矩阵用于偶数轮次中的至少q个连续F函数。
使用下列表达式定义BD1到BD3 BD1=min{B(Mi)|1≤i≤r} BD2=min{B(Mi|Mi+2)|1≤i≤r-2} BD3=min{B(Mi|Mi+2|Mi+4)|1≤i≤r-4} 上面的条件(A1)到(A3)可以重写为等价表达式如下 BD1=BD2=BD3=m+1 在上述的依照本发明当前模式的算法中,由于条件BD1≥BD2≥BD3成立,因此能够通过设置BD3到足够大来增加差分有效S盒的最小数目。这导致一种优势,即,用于由F函数执行线性转换的候选矩阵数目和具有非零差分输入/输出的差分有效S盒哦数目保持到足够大的等级。这使得能够增加有效S盒的最小数目,该有效S盒的最小数目是在加密函数的所有轮次上计数得到的,有效S盒的最小数目是公用密钥块密码对攻击的抵抗程度的度量之一,因此能够以高安全方式实现对数据加密的算法,以实现对差分攻击的高抵抗性。
(4b.2)在模式2中实现对线性攻击抵抗性的改进 现在,描述通过满足条件(2)能够实现对线性攻击的高抵抗性的原因,即,通过选择矩阵Mi使得BD2等于或大于3。
定义BL2如下 BL2=min{B(tM-1i|tM-1i+2|1≤i≤r-2} 其中tM表示M的转置矩阵, 如果存在于第k个轮次中的具有非零线性输入/输出掩码的S盒(线性有效S盒)的数目由Lk代表,那么下列成立。
当将非零输入线性掩码给出到具有SPN型F函数的Feistel密码时,下列条件成立。
条件1)Li+Li+1+Li+2≥BL2 任何3的倍数,即3R(R≥1),能够被分为多份3。所以,确保了3R个轮次上的线性有效S盒的最小数目由R×BL2给出。因此,能够通过将BL2设置到足够大来增加有效S盒的最小数目。
上文在“3.对密码分析具有改进抵抗性的加密算法的示例”部分描述的算法中,为了实现对线性攻击的高抵抗性,用于各个轮次的F函数的线性转换矩阵需满足下列条件 (B1)用于每个F函数的线性转换矩阵应该是MDS方阵。
(B2)连续奇数轮次和偶数轮次的加密函数中包含的任何线性转换矩阵的逆矩阵中任意包括的任何m个列向量形成MDS方阵。
使用下列表达式定义BL2 BL2=min{B(tM-1i|tM-1i+2|1≤i≤r-2} 上面的条件(B1)到(B2)可以重写为如下等价表达式 BL2=m+1 在依照本发明当前模式的上述算法中,对矩阵的选择施加下列限制。
应该选择矩阵Mi使得BL2等于或大于3。
所以,保证3R个轮次上的线性有效S盒的最小数目由R×BL2给出。因此,能够通过将BL2设置到足够大来增加线性有效S盒的最小数目。这使得能够增加有效S盒的最小数目,该有效S盒的最小数目是在加密函数的所有轮次上计数得到的,并且该有效S盒的最小数目是公用密钥块密码对攻击的抵抗程度的度量之一,因此能够以高安全方式实现对数据加密的算法,以实现对线性攻击的高抵抗性。
应注意上述的条件,即 (1)选择矩阵Mi使得BD1、BD2和BD3等于或大于3 (2)选择矩阵Mi使得BL2等于或大于3 是彼此独立定义的。能够通过满足条件(1)来增加对差分攻击的抵抗性,同时能够通过满足条件(2)来增加对线性攻击的抵抗性。
上述的“用于确保对差分攻击高抵抗性的条件(1)”和“用于确保对线性攻击高抵抗性的条件(2)”是彼此独立定义的。通常,选择矩阵使得对于两种类型的攻击实现近似的抵抗度。然而,依赖于密码使用的情况,可以选择矩阵使得实现对差分攻击的高抵抗性而不考虑对线性攻击的抵抗性,反之亦然。
图18说明了配置IC模块600的一个示例,IC模块600用作适合于执行密码处理的密码处理装置。可以在多种信息处理装置中执行上述的处理,例如PC、IC卡和读写器。可以配置图18中所示的IC模块600来提供预期的一个或多个这样的功能。
在图18中,CPU(中央处理单元)601是一种处理器,该处理器被配置为对密码处理的开始/结束、发送/接收数据的操作、在多个单元中转换数据进行控制,并且执行多种其它程序。存储器602包括ROM(只读存储器)和RAM(随机存取存储器)。ROM用于存储由CPU 601执行的程序。ROM还被用于存储操作参数的固定数据。RAM被用作工作区域或存储区域以用于存储由CPU 601执行的程序和用于存储在程序执行期间变化的参数。存储器602还可以被用作存储区域以用于存储密码处理中必要的密钥数据等。期望将数据存储区域配置为保护其不被篡改。
密码处理单元603根据上述的Feistel公用密钥块加密算法来执行加密/解密处理。尽管在本示例中,以独立模块的形式实现密码处理装置,但也可以以不同的方式实现该密码处理装置。例如,存储在ROM中的密码处理程序可由CPU 601读取且执行,从而实现密码处理装置。
随机数字发生器604产生密码处理中用以产生密钥所必需的随机数。
发送/接收单元605是数据通信处理单元,该发送/接收单元605被配置为执行IC模块与外部装置(例如读写器)之间的数据通信。更具体地,发送/接收单元605输出IC模块中产生的加密数据且接收来自外部装置(例如读/写器)的数据。
上文参照具体实施例对本发明进行了描述。本领域的技术人员应清楚的是,在不背离本发明的主旨和范围的情况下,可能存在多种修改和替代,即,上文通过示例而非限制方式描述了这些实施例。本发明的范围完全由权利要求书决定。
在上述的实施例中,限制条件由两个或三个行列式给出。限制条件可以由任意数目的行列式给出,且通过满足限制条件可以增加对差分攻击和线性攻击的抵抗性。
可以通过硬件、软件或硬件和软件的结合来执行本说明书中的任何公开的处理。在使用软件执行处理的情况下,可以将处理的程序安装在存储器中,将该存储器安置在嵌入到硬件中的专用计算机中,并且可以由计算机执行该程序,或者可以将该程序安装在能够执行多种处理的通用计算机上,且可以在通用计算机上执行该程序。
可以将该程序预先存储在例如硬盘或ROM(只读存储器)的存储介质中。还可以将该程序临时或永久地存储在可移动存储介质中,例如软盘、CD-ROM(致密光盘只读存储器)、MO(磁光)盘、DVD(数字通用光盘)、磁盘或半导体存储器。以所谓的成套软件的形式提供存储在这样的可移动存储介质上的程序。
除了将程序从可移动存储介质安装到计算机上,还可以将程序从下载站点经由无线传输或经由网络(例如LAN(局域网)或借助有线通信的因特网)传送到计算机。在此情况下,计算机接收以上述方式发送的程序,并且将该程序安装在安置于计算机中的存储介质(例如硬盘)上。
本说明书中公开的处理可以依赖于计算机的处理能力按与程序中描述的相同顺序在时间上顺次地执行,或并行地执行,或单独地执行。在本说明书中,术语“系统”用于描述多个器件的逻辑集合,且不必要求所述多个器件被安置在单一箱体中。
工业应用性 如上所述,本发明提供Feistel公用密钥块加密算法。在此算法中,将包括非线性转换部分和线性转换部分的SPN型F函数重复执行多个轮次。在该算法中,依照使用为满足相对宽松限制而确定的矩阵的F函数,在多个轮次的各自轮次中执行线性转换处理,由此实现公用密钥块密码对差分攻击和/或线性攻击的高抵抗性。该相对宽松的限制允许增加候选可用矩阵数,并且能够使有效S盒的数目保持到足够大等级。这使得能够增加有效S盒的最小数目,该有效S盒的最小数目是在加密函数的所有轮次上计数得到的,并且该有效S盒的最小数目是公用密钥块密码对攻击的抵抗程度的度量之一,因此能够以高安全方式实现对数据加密的算法,以实现对线性攻击和差分攻击的高抵抗性。
权利要求
1.一种适合执行Feistel加密处理的加密处理装置,包括
非线性转换部分,包括多个非线性转换层,每个非线性转换层具有多比特的输入和输出;以及
线性转换部分,包括适合执行线性转换处理的线性转换层,其中线性转换部分使用满足限制条件的矩阵来执行线性转换处理。
2.根据权利要求1的加密处理装置,其中对用于线性转换处理的矩阵施加的限制条件如下
对于在r个轮次中的每一个轮次中使用F函数在线性转换部分中执行映射θ{0,1}na→{0,1}nb的矩阵Mi,其中该映射执行从n×a比特数据到n×b比特数据的线性转换,分支数目B(θ)被定义为
B(θ)=minα≠0{hwn(α)+hwn(θ(α))}
其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是将给出的比特串Y拆分为n比特元素并且返回包括至少一个非零比特的非零元素的数目的函数,
满足B(θ)=b+1的映射θ被定义为最优扩散映射,其中B(θ)是上文定义的分支数目,并且
BD1和BD2被定义为
BD1=min{B(Mi)|1≤i≤r}
BD2=min{B(Mi|Mi+2)|1≤i≤r-2}
其中B(M)表示矩阵M的分支数目,且A|B表示连接矩阵A和B而得到的矩阵,
在如上定义各参数的情况下,矩阵Mi被确定为使得BD1和BD2二者都等于或大于3。
3.一种加密处理装置,该加密处理装置被配置为使用包括SPN型F函数的r轮次Feistel公用密钥块密码结构来执行加密处理,所述SPN型F函数包括非线性转换部分和线性转换部分,
其中,在r个轮次中每一个轮次中的F函数的线性转换部分使用满足下述条件的矩阵Mi
对于映射θ{0,1}na→{0,1}nb,该映射执行从n×a比特数据到n×b比特数据的线性转换,分支数目B(θ)被定义为
B(θ)=minα≠0{hwn(α)+hwn(θ(α))}
其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是将给出的比特串Y拆分为n比特元素且返回包括至少一个非零比特的非零元素的数目的函数,
满足B(θ)=b+1的映射θ被定义为最优扩散映射,其中B(θ)是上文定义的分支数目,并且
BD1、BD2和BD3被定义为
BD1=min{B(Mi)|1≤i≤r},
BD2=min{B(Mi|Mi+2)|1≤i≤r-2},并且
BD3=min{B(Mi|Mi+2|Mi+4)|1≤i≤r-4}
其中B(M)表示矩阵M的分支数目,且A|B表示连接矩阵A和B得到的矩阵,
在如上定义各参数的情况下,矩阵Mi被确定为使得BD1、BD2和BD3都等于或大于3。
4.一种加密处理装置,该加密处理装置被配置为使用包括SPN型F函数的r轮次Feistel公用密钥块密码结构来执行加密处理,SPN型F函数包括非线性转换部分和线性转换部分,
其中,r个轮次中的每一个轮次中的F函数的线性转换部分使用满足下述条件的矩阵Mi
对于映射θ{0,1}na→{0,1}nb,该映射执行从n×a比特数据到n×b比特数据的线性转换,分支数目B(θ)被定义为
B(θ)=minα≠0{hwn(α)+hwn(θ(α))}
其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是将给出的比特串Y拆分为n比特元素且返回包括至少一个非零比特的非零元素的数目的函数,
满足B(θ)=b+1的映射θ被定义为最优扩散映射,其中B(θ)是上文定义的分支数目,并且
BL2被定义为
BL2=min{B(tM-1i|tM-1i+2|1≤i≤r-2}
其中B(M)表示矩阵M的分支数目,且tM表示M的转置矩阵,
在如上定义各参数的情况下,将矩阵Mi确定为使得BL2等于或大于3。
5.一种使用Feistel公用密钥块结构来执行加密处理的加密处理方法,包含步骤
将包括非线性转换部分和线性转换部分的SPN型F函数重复执行r个轮次,
其中在每个轮次中,线性转换部分根据满足下述条件的矩阵Mi使用F函数来执行线性转换
对于映射θ{0,1}na→{0,1}nb,该映射执行从n×a比特数据到n×b比特数据的线性转换,分支数目B(θ)被定义为
B(θ)=minα≠0{hwn(α)+hwn(θ(α))}
其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是将给出的比特串Y拆分为n比特元素并且返回包括至少一个非零比特的非零元素的数目的函数,
满足B(θ)=b+1的映射θ被定义为最优扩散映射,其中B(θ)是上文定义的分支数目,并且
BD1、BD2和BD3被定义为
BD1=min{B(Mi)|1≤i≤r}
BD2=min{B(Mi|Mi+2)|1≤i≤r-2},并且
BD3=min{B(Mi|Mi+2|Mi+4)|1≤i≤r-4}
其中B(M)表示矩阵M的分支数目,且A|B表示连接矩阵A和B得到的矩阵,
在如上定义各参数的情况下,矩阵Mi被确定为使得BD1、BD2和BD3都等于或大于3。
6.一种使用Feistel公用密钥块结构来执行加密处理的加密处理方法,包含步骤
将包括非线性转换部分和线性转换部分的SPN型F函数重复执行r个轮次,
其中在每个轮次中,线性转换部分根据满足下述条件的矩阵Mi使用F函数来执行线性转换
对于映射θ{0,1}na→{0,1}nb,该映射执行从n×a比特数据到n×b比特数据的线性转换,分支数目B(θ)被定义为
B(θ)=minα≠0{hwn(α)+hwn(θ(α))}
其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是将给出的比特串Y拆分为n比特元素且返回包括至少一个非零比特的非零元素的数目的函数,
满足B(θ)=b+1的映射θ被定义为最优扩散映射,其中B(θ)是上文定义的分支数目,并且
BL2被定义为
BL2=min{B(tM-1i|tM-1i+2|1≤i≤r-2}
其中B(M)表示矩阵M的分支数目,且tM表示M的转置矩阵,
在如上定义各参数的情况下,矩阵Mi被确定为使得BL2等于或大于3。
7.一种可在计算机上执行的计算机程序,该计算机程序使用Feistel公用密钥块结构来执行加密处理,包含步骤
将包括非线性转换部分和线性转换部分的SPN型F函数重复执行r个轮次,
其中在每个轮次中,线性转换部分根据满足下述条件的矩阵Mi使用F函数来执行线性转换
对于映射θ{0,1}na→{0,1}nb,该映射执行从n×a比特数据到n×b比特数据的线性转换,分支数目B(θ)被定义为
B(θ)=minα≠0{hwn(α)+hwn(θ(α))}
其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是将给出的比特串Y拆分为n比特元素且返回包括至少一个非零比特的非零元素的数目的函数,
满足B(θ)=b+1的映射θ被定义为最优扩散映射,其中B(θ)是上文定义的分支数目,并且
BD1、BD2和BD3被定义为
BD1=min{B(Mi)|1≤i≤r},
BD2=min{B(Mi|Mi+2)|1≤i≤r-2},并且
BD3=min{B(Mi|Mi+2|Mi+4)|1≤i≤r-4}
其中B(M)表示矩阵M的分支数目,且A|B表示连接矩阵A和B得到的矩阵,
在如上定义各参数的情况下,将矩阵Mi确定为使得BD1、BD2和BD3都等于或大于3。
8.一种可在计算机上执行的计算机程序,该计算机程序使用Feistel公用密钥块结构来执行加密处理,包含步骤
将包括非线性转换部分和线性转换部分的SPN型F函数重复执行r个轮次,
其中在每个轮次中,线性转换部分根据满足下述条件的矩阵Mi使用F函数来执行线性转换
对于映射θ{0,1}na→{0,1}nb,该映射执行从n×a比特数据到n×b比特数据的线性转换,分支数目B(θ)被定义为
B(θ)=minα≠0{hwn(α)+hwn(θ(α))}
其中,minα≠0{Xα}表示满足α≠0的所有Xα值的最小值,且hwn(Y)是将给出的比特串Y拆分为n比特元素且返回包括至少一个非零比特的非零元素的数目的函数,
满足B(θ)=b+1的映射θ被定义为最优扩散映射,其中B(θ)是上文定义的分支数目,并且
BL2被定义为
BL2=min{B(tM-1i|tM-1i+2|1≤i≤r-2}
其中B(M)表示矩阵M的分支数目,且tM表示M的转置矩阵,
在如上定义各参数的情况下,矩阵Mi被确定为使得BL2等于或大于3。
全文摘要
提供了一种高安全性抗密码分析加密处理设备和密码处理方法。在多个轮次上重复执行包括非线性部分和线性部分的SPN型F函数,来产生Feistel公用密钥块密码。在每个轮次中,依照使用为满足相对宽松的限制而确定的矩阵的F函数来执行线性转换处理,由此实现对差分攻击和/或线性攻击的高抵抗性。该相对宽松的限制允许增加候选可用矩阵数,并且能够使有效S盒的数目保持到足够大等级。这使得能够增加有效S盒的最小数目,该有效S盒的最小数目是指示密码鲁棒程度的度量之一,由此能够以高安全方式实现对数据加密的算法,以实现对攻击的高抵抗性。
文档编号G09C1/00GK101176134SQ20068001677
公开日2008年5月7日 申请日期2006年3月2日 优先权日2005年3月25日
发明者白井太三 申请人:索尼株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1