密码处理装置、密码处理算法构建方法和密码处理方法、以及计算机程序的制作方法

文档序号:2411106阅读:253来源:国知局
专利名称:密码处理装置、密码处理算法构建方法和密码处理方法、以及计算机程序的制作方法
技术领域
本发明涉及一种密码处理装置、密码处理算法构建方法和密码处理方法、以及计算机程序。更详细地说,涉及一种执行Feistel型共用密钥块密码处理的密码处理装置、密码处理算法构建方法和密码处理方法、以及计算机程序。

背景技术
最近,随着网络通信、电子商务的发展,确保通信中的安全成为重要的问题。确保安全的方法之一是密码技术,现在实际进行着使用了各种加密方法的通信。
例如实际应用有如下的系统在IC卡等小型装置中嵌入密码处理模块,在IC卡与作为数据读取写入装置的读写器之间进行数据的发送接收,进行认证处理或者发送接收数据的加密、解密。
在密码处理算法中存在各种算法,大致分类为公开密钥密码方式和共用密钥密码方式,其中,上述公开密钥密码方式将加密密钥和解密密钥设定为不同的密钥、例如公开密钥和私人密钥,上述共用密钥密码方式将加密密钥和解密密钥设定为共用的密钥。
在共用密钥密码方式中也存在各种算法,其中之一是如下的方式以共用密钥为基础生成多个密钥,使用所生成的多个密钥来反复执行块单位(64比特、128比特等)的数据变换处理。应用了这种密钥生成方式和数据变换处理的算法的代表方式是共用密钥块密码方式。
作为代表的共用密钥块密码的算法,例如存在作为美国标准密码的DES(Data Encryption Standard数据加密标准)算法,在各种领域中广泛使用。
以DES为代表的共用密钥块密码的算法主要可分为循环函数部和密钥调度部,其中,上述循环函数部执行输入数据的变换,上述密钥调度部生成在循环函数(F函数)部的各循环中应用的密钥。根据一个主密钥(Master key),将其输入到密钥调度部来生成在循环函数部的各循环中应用的,在各循环函数部中应用该循环密钥(副密钥)。
作为执行应用了这种循环函数的算法的具体结构,已知有Feistel结构。Feistel结构具有如下结构通过简单的反复被称为循环函数的变换函数,将明文变换为密文。作为记载有应用了Feistel结构的密码处理的文献,例如存在非专利文献1、非专利文献2。
但是,例如在应用Feistel结构的共用密钥密码处理中,由密码分析引起的密钥的泄漏成为问题。作为密码分析或者攻击方法的代表方法,已知有差分分析(也称为差分解读法或者差分攻击)、线性分析(也称为线性解读法或者线性攻击),其中,上述差分分析通过多次分析具有某个差分的输入数据(明文)及其输出数据(密文)来分析各循环函数中的应用密钥,上述线性分析根据明文和对应的密文进行分析。
利用密码分析容易分析密钥是指其密码处理的安全性较低。在现有的密码算法中,在循环函数(F函数)部的线性变换部中应用的处理(变换矩阵)在各级的循环中相同,因此容易进行分析,其结果导致容易分析密钥。
作为应对这种问题的结构,提出在Feistel结构的循环函数(F函数)部的线性变换部中配置两个以上不同的矩阵的结构。该技术被称为扩散矩阵切换机构(DSMDiffusion SwitchingMechanism,下面为DSM)。通过该DSM能够提高对差分攻击、线性攻击的抵抗性。
该扩散矩阵切换机构(DSM)被表示为对于通常的具有两个数据序列的Feistel结构的应用结构。另一方面,与这种一般的具有两个数据序列的Feistel结构不同,存在具有三个以上数据序列的扩展型Feistel结构。但是,并没有公开在这种具有三个以上数据序列的扩展型Feistel结构中应用上述扩散矩阵切换机构(DSM)来提高对差分攻击、线性攻击的抵抗性的结构。
非专利文献1K.Nyberg,“Generalized Feistel networks”,ASIACRYPT’96,Springer Verlag,1996,pp.91~104. 非专利文献2Yuliang Zheng,Tsutomu Matsumoto,HidekiImaiOn the Construction of Block Ciphers Provably Secure andNot Relying on Any Unproved Hypotheses.CRYPTO 1989461-480

发明内容
发明要解决的问题 本发明是鉴于上述问题点而完成的,其目的在于提供一种实现对线性分析、差分分析的抵抗性较高的共用密钥块密码算法的密码处理装置、密码处理算法构建方法和密码处理方法、以及计算机程序。
更具体地说,本发明的目的在于提供如下的密码处理装置、密码处理算法构建方法和密码处理方法、以及计算机程序在扩展具有两个数据序列的Feistel结构得到的Feistel结构、即例如具有三个、四个等两个以上的任意数据序列的扩展型Feistel结构中,设定应用了多个不同的线性变换矩阵的循环函数部,实现对线性分析、差分分析的抵抗性较高的共用密钥块密码算法。
用于解决问题的方案 本发明的第一侧面在于,一种密码处理装置,其特征在于,具有密码处理部,该密码处理部执行将SP型F函数反复多次循环的Feistel型共用密钥块密码处理,其中,上述SP型F函数执行包括非线性变换处理和线性变换处理的数据变换处理,上述密码处理部是执行应用了将数据序列数d设为d≥2的整数的扩展Feistel结构的密码处理的结构,具有在各循环的F函数中执行的线性变换处理中选择性地应用至少两个以上的多个不同的矩阵的结构,上述两个以上的多个不同的矩阵是满足以下条件的多个不同的矩阵从基于线性变换矩阵的与数据序列对应的最小分支数中选择的全部数据序列中的最小分支数为预先决定的值以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列进行输入的F函数中,具有在对扩展Feistel结构的各数据序列进行输入的F函数中反复配置上述多个不同的矩阵的结构。
并且,在本发明的密码处理装置的一个实施方式中,其特征在于,在上述密码处理部中利用的上述多个不同的矩阵是满足以下条件的多个不同的矩阵从根据线性变换矩阵而算出的与数据序列对应的最小分支数[BkD(s(i))]中选择的全部数据序列中的最小分支数[BkD]为3以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列s(i)进行输入的连续的k个(其中,k为2以上的整数)F函数中。
并且,在本发明的密码处理装置的一个实施方式中,其特征在于,在上述密码处理部中利用的上述多个不同的矩阵是满足以下条件的多个不同的矩阵从根据线性变换矩阵而算出的与数据序列对应的最小分支数[B2D(s(i))]中选择的全部数据序列中的最小分支数[B2D]为3以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列s(i)进行输入的连续的两个F函数中。
并且,在本发明的密码处理装置的一个实施方式中,其特征在于,在上述密码处理部中利用的上述多个不同的矩阵是满足以下条件的多个不同的矩阵从根据线性变换矩阵而算出的与数据序列对应的最小分支数[B2L(s(i))]中选择的全部数据序列中的最小分支数[B2L]为3以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列s(i)进行输入的连续的两个F函数中。
并且,在本发明的密码处理装置的一个实施方式中,其特征在于,上述密码处理部具有如下结构在将上述多个不同的矩阵设为n个(其中,n为2以上的整数)不同的矩阵M0、M1、··Mn-1时,在对扩展Feistel结构的各数据序列进行输入的F函数中依次反复配置这些不同的矩阵M0、M1、··Mn-1。
并且,在本发明的密码处理装置的一个实施方式中,其特征在于,上述密码处理部是执行应用了在一个循环中仅执行一个F函数的扩展Feistel结构的密码处理的结构。
并且,在本发明的密码处理装置的一个实施方式中,其特征在于,上述密码处理部是执行应用了在一个循环中并行地执行多个F函数的扩展Feistel结构的密码处理的结构。
并且,在本发明的密码处理装置的一个实施方式中,其特征在于,上述密码处理部是如下结构在设为a≥2的任意的整数、x≥1的任意的整数时,执行应用了数据序列数d=2ax的扩展Feistel结构的密码处理,所述扩展Feistel结构利用了由上述多个不同的矩阵执行不同的线性变换处理的a种F函数,在一个循环中均等地执行所有种类(a种类)的F函数各x个。
并且,在本发明的密码处理装置的一个实施方式中,其特征在于,上述密码处理部具备F函数执行部,其执行在一个循环中并行地执行的ax个F函数;以及控制部,其执行对上述F函数执行部的数据输入输出控制。
并且,在本发明的密码处理装置的一个实施方式中,其特征在于,上述密码处理部具备多个F函数执行部,其利用上述多个不同的矩阵执行不同的线性变换处理;以及控制部,其根据设定而变更上述多个F函数执行部的利用顺序,其中,上述控制部是选择性地执行(a)、(b1)、(b2)中的任一个的密码处理的结构,其中,上述(a)、(b1)、(b2)为 (a)通过设为数据序列数d=2的Feistel结构进行的密码处理、或者 (b1)是设为数据序列数d≥2的任意数的扩展Feistel结构,在各循环中仅允许执行一个F函数的密码处理、或者 (b2)是设为数据序列数d≥2的任意数的扩展Feistel结构,在各循环中允许并行执行多个F函数的密码处理。
并且,在本发明的密码处理装置的一个实施方式中,其特征在于,上述控制部是根据成为加密或解密处理的对象的数据的比特长度来选择要执行的处理方式的结构。
并且,本发明的第二侧面在于,一种密码处理方法,在密码处理装置中执行密码处理,其特征在于,具有密码处理步骤,在密码处理部中执行将SP型F函数反复多次循环的Feistel型共用密钥块密码处理,其中,上述SP型F函数执行包括非线性变换处理和线性变换处理的数据变换处理,上述密码处理步骤是执行应用了将数据序列数d设为d≥2的整数的扩展Feistel结构的密码处理的步骤,具有运算步骤,在该运算步骤中,执行在各循环的F函数中执行的线性变换处理中选择性地应用了至少两个以上的多个不同的矩阵的运算,在上述运算步骤中应用的多个不同的矩阵是满足以下条件的多个不同的矩阵从基于线性变换矩阵的与数据序列对应的最小分支数中选择的全部数据序列中的最小分支数为预先决定的值以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列进行输入的F函数中,上述运算步骤是在对扩展Feistel结构的各数据序列进行输入的F函数中执行基于上述多个不同的矩阵的线性变换运算的步骤。
并且,在本发明的密码处理方法的一个实施方式中,其特征在于,上述多个不同的矩阵是满足以下条件的多个不同的矩阵从根据线性变换矩阵而算出的与数据序列对应的最小分支数[BkD(s(i))]中选择的全部数据序列中的最小分支数[BkD]为3以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列s(i)进行输入的连续的k个(其中,k为2以上的整数)F函数中。
并且,在本发明的密码处理方法的一个实施方式中,其特征在于,上述多个不同的矩阵是满足以下条件的多个不同的矩阵从根据线性变换矩阵而算出的与数据序列对应的最小分支数[B2D(s(i))]中选择的全部数据序列中的最小分支数[B2D]为3以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列s(i)进行输入的连续的两个F函数中。
并且,在本发明的密码处理方法的一个实施方式中,其特征在于,上述多个不同的矩阵是满足以下条件的多个不同的矩阵从根据线性变换矩阵而算出的与数据序列对应的最小分支数[B2L(s(i))]中选择的全部数据序列中的最小分支数[B2L]为3以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列s(i)进行输入的连续的两个F函数中。
并且,在本发明的密码处理方法的一个实施方式中,其特征在于,在将上述多个不同的矩阵设为n个(其中,n为2以上的整数)不同的矩阵M0、M1、··Mn-1时,上述运算步骤是在对扩展Feistel结构的各数据序列进行输入的F函数中依次反复执行这些不同的矩阵M0、M1、··Mn-1的步骤。
并且,在本发明的密码处理方法的一个实施方式中,其特征在于,上述密码处理步骤是执行应用了在一个循环中仅执行一个F函数的扩展Feistel结构的密码处理的步骤。
并且,在本发明的密码处理方法的一个实施方式中,其特征在于,上述密码处理步骤是执行应用了在一个循环中并行地执行多个F函数的扩展Feistel结构的密码处理的步骤。
并且,在本发明的密码处理方法的一个实施方式中,其特征在于,上述密码处理步骤是如下的步骤在设为a≥2的任意的整数、x≥1的任意的整数时,执行应用了数据序列数d=2ax的扩展Feistel结构的密码处理,所述扩展Feistel结构利用了由上述多个不同的矩阵执行不同的线性变换处理的a种F函数,在一个循环中均等地执行所有种类(a种类)的F函数各x个。
并且,在本发明的密码处理方法的一个实施方式中,其特征在于,上述密码处理步骤是应用F函数执行部,按照控制部的控制来执行密码处理的步骤,其中,上述F函数执行部执行在一个循环中并行地执行的ax个F函数,上述控制部执行对上述F函数执行部的数据输入输出控制。
并且,在本发明的密码处理方法的一个实施方式中,其特征在于,在上述密码处理步骤中,利用由上述多个不同的矩阵执行不同的线性变换处理的多个F函数执行部和根据设定而变更上述多个F函数执行部的利用顺序的控制部来执行密码处理,通过上述控制部的控制,选择性地执行(a)、(b1)、(b2)中的任一个的密码处理,其中,上述(a)、(b1)、(b2)为 (a)通过设为数据序列数d=2的Feistel结构进行的密码处理、或者 (b1)是设为数据序列数d≥2的任意数的扩展Feistel结构,在各循环中仅允许执行一个F函数的密码处理、或者 (b2)是设为数据序列数d≥2的任意数的扩展Feistel结构,在各循环中允许并行执行多个F函数的密码处理。
并且,在本发明的密码处理方法的一个实施方式中,其特征在于,上述控制部根据成为加密或解密处理的对象的数据的比特长度来选择要执行的处理方式。
并且,本发明的第三侧面在于,一种密码处理算法构建方法,在信息处理装置中构建密码处理算法,其特征在于,具有以下步骤矩阵决定步骤,在应用了将数据序列数d设为d≥2的整数的扩展Feistel结构的密码处理算法的结构中,信息处理装置中的控制部决定在各循环的F函数中执行的线性变换处理中应用的至少两个以上的多个不同的矩阵;以及矩阵设定步骤,上述控制部在对扩展Feistel结构的各数据序列进行输入的F函数中反复配置在上述矩阵决定步骤中决定的多个不同的矩阵,其中,上述矩阵决定步骤是执行以下处理的步骤作为上述两个以上的多个不同的矩阵,将满足从基于线性变换矩阵的与数据序列对应的最小分支数中选择的全部数据序列中的最小分支数为预先决定的值以上的条件的多个不同的矩阵决定为应用矩阵,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列进行输入的F函数中。
并且,本发明的第四侧面在于,一种计算机程序,使密码处理装置执行密码处理,其特征在于,具有密码处理步骤,使密码处理部执行将SP型F函数反复多次循环的Feistel型共用密钥块密码处理,其中,上述SP型F函数执行包括非线性变换处理和线性变换处理的数据变换处理,上述密码处理步骤是执行应用了将数据序列数d设为d≥2的整数的扩展Feistel结构的密码处理的步骤,包括运算步骤,在该运算步骤中,执行在各循环的F函数中执行的线性变换处理中选择性地应用了至少两个以上的多个不同的矩阵的运算,在上述运算步骤中应用的多个不同的矩阵是满足以下条件的多个不同的矩阵从基于线性变换矩阵的与数据序列对应的最小分支数中选择的全部数据序列中的最小分支数为预先决定的值以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列进行输入的F函数中,上述运算步骤是在对扩展Feistel结构的各数据序列进行输入的F函数中执行基于上述多个不同的矩阵的线性变换运算的步骤。
并且,本发明的第五侧面在于,一种计算机程序,在信息处理装置中构建密码处理算法,其特征在于,具有以下步骤矩阵决定步骤,在应用了将数据序列数d设为d≥2的整数的扩展Feistel结构的密码处理算法的结构中,使信息处理装置中的控制部决定在各循环的F函数中执行的线性变换处理中应用的至少两个以上的多个不同的矩阵;以及矩阵设定步骤,使上述控制部在对扩展Feistel结构的各数据序列进行输入的F函数中反复配置在上述矩阵决定步骤中决定的多个不同的矩阵,其中,上述矩阵决定步骤是执行以下处理的步骤作为上述两个以上的多个不同的矩阵,将满足从基于线性变换矩阵的与数据序列对应的最小分支数中选择的全部数据序列中的最小分支数为预先决定的值以上的条件的多个不同的矩阵决定为应用矩阵,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列进行输入的F函数中。
此外,本发明的计算机程序例如是以计算机可读形式提供的能够通过存储介质、通信介质、例如CD、FD、MO等记录介质、或网络等通信介质来对可执行各种程序代码的计算机系统提供的计算机程序。通过以计算机可读形式提供这种程序,在计算机系统上实现与程序相应的处理。
通过基于后述的本发明的实施例、附图的更详细的说明,本发明的进一步的其它目的、特征、优点会更清楚。此外,在本说明书中的系统是多个装置的逻辑集合结构,并不限于各结构的装置在同一壳体内。
发明的效果 根据本发明的一个实施例的结构,在将具有非线性变换部和线性变换部的SPN型F函数反复执行多个循环的Feistel型共用密钥块密码处理中,在将具有两个数据序列的Feistel结构扩展得到的Feistel结构、即具有例如三个、四个等两个以上的任意的数据序列的扩展型Feistel结构中,通过设定应用了多个不同的线性变换矩阵的循环函数部来实现扩散矩阵切换机构(DSM),能够构建对线性分析、差分分析的抵抗性较高的共用密钥块密码算法以及执行密码处理。
根据本发明的一个实施例的结构,在执行应用了将数据序列数d设为d≥2的整数的扩展Feistel结构的密码处理的结构中,具有在各循环的F函数中执行的线性变换处理中选择性地应用至少两个以上的多个不同的矩阵的结构,作为两个以上多个不同的矩阵设定为满足从基于线性变换矩阵的与数据序列对应的最小分支数中选择的全部数据序列中的最小分支数为预先决定的值以上的条件的多个不同的矩阵,由此实现扩散矩阵切换机构(DSM),能够构建对线性分析、差分分析的抵抗性较高的共用密钥块密码算法以及执行密码处理,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列进行输入的F函数中。
并且,根据本发明的一个实施例的结构,在利用由多个不同的矩阵执行不同的线性变换处理的a(a≥2)种F函数执行应用了数据序列数d=2ax的扩展Feistel结构(x≥1)的密码处理的结构中,设为在一个循环中均等地执行所有种类(a种类)的F函数各x个的结构,因此实现没有设置多余的电路的小型密码处理装置。
并且,根据本发明的一个实施例的结构,设为构成由多个不同的矩阵执行不同的线性变换处理的多个F函数执行部、并根据设定来变更多个F函数执行部的利用顺序的结构,由此实现能够选择性地执行(a)、(b1)、(b2)中的任一个的密码处理的密码处理装置,其中,上述(a)、(b1)、(b2)为 (a)通过设为数据序列数为d=2的Feistel结构进行的密码处理、或者 (b1)是设为数据序列数为d≥2的任意数的扩展Feistel结构,在各循环中仅允许执行一个F函数的密码处理、或者 (b2)是设为数据序列数为d≥2的任意数的扩展Feistel结构,在各循环中允许并行执行多个F函数的密码处理。



图1是表示具有Feistel结构的代表性的共用密钥块密码的结构的图。
图2是说明作为循环函数部设定的F函数的结构的图。
图3是说明利用了两个不同的线性变换矩阵的Feistel型密码算法的图。
图4是说明利用了三个不同的线性变换矩阵的Feistel型密码算法的图。
图5是说明扩展Feistel结构的定义的图。
图6是表示具有7个数据序列(d=7)的扩展Feistel结构例的图。
图7是说明扩展Feistel结构的各结构部以及各结构部的输入输出数据的定义的图。
图8是说明对于扩展Feistel结构的类型1的DSM应用的图。
图9是说明对于扩展Feistel结构的类型2的DSM应用的图。
图10是说明对于扩展Feistel结构的类型1的DSM应用的图。
图11是说明对于扩展Feistel结构的类型2的DSM应用的图。
图12是说明提高了扩展Feistel结构的安装效率的结构的图。
图13是说明提高了扩展Feistel结构的安装效率的硬件结构例的图。
图14是说明用于有效安装三种F函数的配置例的图。
图15是表示设为数据序列d=2的Feistel结构的2mn比特的块密码结构的图。
图16是表示满足扩散矩阵切换机构(DSM)的数据序列数d=4的扩展Feistel结构的图。
图17是说明能够执行不同比特数的块密码的电路共用结构的图。
图18是说明应用了三种F函数F1、F2、F3的F函数的数据序列d=2的Feistel结构的图。
图19是说明执行三种F函数F1、F2、F3的密码处理装置的结构例的图。
图20是表示作为本发明所涉及的执行密码处理的密码处理装置的IC模决的结构例的图。

具体实施例方式 下面,详细说明本发明的密码处理装置和密码处理方法、以及计算机程序。按照以下项目进行说明。
1.具有SP型F函数的Feistel结构 2.分支数运算函数和抵抗性评价函数 2-1.分支数运算函数Branch() 2-2.对差分攻击的抵抗性评价指标 2-3.对线性攻击的抵抗性评价指标 3.对于具有两个数据序列的Feistel结构的DSM的设定方法 4.扩展Feistel结构中的DSM的设定 4-1.关于扩展Feistel结构 4-2.在扩展Feistel结构中用于提高对差分攻击的抵抗性的结构 4-2-1.使最小分支数B2D的值为3以上的F函数中的矩阵选择结构 4-2-2.使最小分支数BkD的值为3以上的F函数中的矩阵选择结构 4-3.在扩展Feistel结构中用于提高对线性攻击的抵抗性的结构 4-3-1.使最小分支数B2L的值为3以上的F函数中的矩阵选择结构 5.对于具有特定形式的扩展Feistel结构的DSM的利用结构 5-1.对于扩展Feistel结构的类型1的DSM的应用 5-2.对于扩展Feistel结构的类型2的DSM的应用 6.扩展Feistel结构的各类型的有效S-box数与基于F函数中的线性变换矩阵的最小分支数之间的关系式的证明 6-1.扩展Feistel结构的类型1的有效S-box数与基于F函数中的线性变换矩阵的最小分支数之间的关系式的证明 6-2.扩展Feistel结构的类型2的有效S-box数与基于F函数中的线性变换矩阵的最小分支数之间的关系式的证明 7.基于F函数的设定以及利用处理的方法的安装中的改进结构 7-1.扩展Feistel的类型2的有效的F函数配置方法 7-2.Feistel结构与扩展Feistel结构中的部件的共用化 8.本发明的密码处理以及密码算法构建处理的归纳 9.密码处理装置的结构例 [1.具有SP型F函数的Feistel结构] 首先,说明具有SP型F函数的Feistel结构。作为共用密钥块密码的设计,已知有Feistel结构。Feistel结构具有如下结构通过被称为循环函数的基本处理单位的重复,将明文变换为密文。
参照图1说明Feistel结构的基本结构。在图1中示出具有r个循环的循环数=r的具有两个数据序列的Feistel结构的例子。此外,循环数r是在设计阶段决定的参数,例如是能够根据所输入的密钥的长度而改变的值。
在图1所示的Feistel结构中,将作为加密对象而输入的明文的长度设为2mn比特。其中,m、n都是整数。首先,将2mn比特的明文分割为mn比特的两个输入数据PL(Plain-Left左明文)101、PR(Plain-Right右明文)102,并将其设为输入值。
以被称为循环函数的基本处理单位的重复来表现Feistel结构,各循环中所包含的数据变换函数被称为F函数120。在图1的结构中,示出有F函数(循环函数)120重复了r级的结构例。
例如在第一个循环中,将mn比特的输入数据X和从密钥生成部(未图示)输入的mn比特的循环密钥K1 103输入到F函数120,在F函数120中进行数据变换处理之后输出mn比特的数据Y。在异或部104中对输出与来自另一方前级的输入数据(第1级的情况下是输入数据PL)进行异或运算,并向下一个循环函数输出mn比特的运算结果。应用该处理、即仅反复应用F函数决定的循环数(r)来完成加密处理,输出密文的分割数据CL(Cipher-Left左密码)、CR(Cipher-Right右密码)。通过以上结构得出Feistel结构的解密处理只要使插入循环密钥的顺序反转即可、不需要构成反函数。
参照图2说明设定为各循环的函数的F函数120的结构。图2的(a)是表示对一个循环中的F函数120的输入以及输出的图,图2的(b)是表示F函数120的详细结构的图。如图2的(b)所示,F函数120具有连接了非线性变换层(S层)和线性变换层(P层)的所谓的SP型结构。
图2所示的F函数120是输入输出比特长度具有m×n(m、n为整数)比特的设定的函数。在SP型F函数内部中,首先执行密钥数据Ki与数据Xi之间的异或,然后应用非线性变换层(S层),接着应用线性变换层(P层)。
具体地说,在非线性变换层(S层)中排列了m个被称为S盒(S-box)121的n比特输入n比特输出的非线性变换表,将mn比特的数据以每n比特进行分割、并分别输入到对应的S盒(S-box)121来变换数据。在各S盒中例如执行应用了变换表的非线性变换处理。
线性变换层(P层)由线性变换部122构成,对线性变换部122输入来自S盒121的作为输出数据的mn比特的输出值Z,线性变换部122对该输入实施线性变换而输出mn比特的结果。线性变换部122执行输入比特位置的替换处理等线性变换处理,输出mn比特的输出值Y。该输出值Y与来自前级的输入数据进行异或,被设为下一个循环的F函数的输入值。
此外,在下面说明的本实施例的结构中,将在作为线性变换层(P层)的线性变换部122中执行的线性变换定义为应用在GF(2)上定义的mn×mn矩阵而进行的线性变换,另外,将包含在第i个循环中的矩阵称为Mi。此外,将在本发明中说明的结构中的作为非线性变换部的S盒和线性变换都设为双射。
[2.分支数运算函数和抵抗性评价函数] 接着,说明为了理解本发明而需要的分支数运算函数和抵抗性评价函数。
(2-1.分支数运算函数Branch()) 将作为在线性变换部122中执行的线性变换的例子的最优扩散变换(Optimal Diffusion Mappings)的分支数运算函数Branch()定义为如下,其中,上述线性变换部122作为上述F函数内的线性变换层(P层)。
对于进行从n×a比特数据向n×b比特数据的线性变换的映射, θ{0,1}na→{0,1}nb 将分支数Branchn(θ)定义为如下。
Branchn(θ)=minα≠0n{hwn(α)+hwn(θ(α))} 其中,将minα≠0{Xα}设为表示满足α≠0的所有Xα中的最小值的Xα,将hwn(Y)设为在将比特列Y按每n比特进行分割来表示时n比特的数据都返回不是0的(非零)元素的数的函数。
此外,此时,将Branchn(θ)为b+1那样的映射θ定义为最优扩散变换。
(2-2.对差分攻击的抵抗性评价指标) 在应用Feistel结构的共用密钥密码处理中,由密码分析引起的密钥的泄漏成为问题。作为密码分析或者攻击方法的代表方法,已知有差分分析(也称为差分解读法或者差分攻击)、线性分析(也称为线性解读法或者线性攻击),其中,上述差分分析通过多次分析具有某个差分(ΔX)的输入数据(明文)及其输出数据(密文)来分析各循环函数中的应用密钥,上述线性分析根据明文与对应的密文进行分析。
作为实现对差分攻击的抵抗性的指标,能够应用包含在表现差分的连接关系的差分路径中的差分有效S盒的最小数。
差分路径是对除了加密函数中的密钥数据以外的所有数据部分指定特定的差分值而得到的。差分值并不是自由决定的,而是变换处理前后的差分值互相关联。在线性变换处理的前后,一对一地决定输入差分与输出差分之间的关系。在非线性变换的前后,不是一对一地决定输入差分与输出差分之间的关系,而是导入概率的概念。设为能够事先计算对于某个输入差分和输出差分的概率。将对于所有输出的概率全部相加为1。
在具有SP型F函数的Feistel结构中,非线性变换仅为由S盒进行处理的部分。因而,在这种情况下,具有0以外的概率的差分路径是从对明文(输入)的差分值开始直到密文(输出)的差分值为止的差分数据的集合,在所有的S盒前后提供的差分值具有0以外的概率。设为将具有0以外的概率的某个差分路径的输入到S盒的差分值不是0的S盒称为差分有效S盒。已知将具有0以外的概率的所有差分路径的有效S盒数之中最小的数称为最小差分有效S盒数,该数值作为对差分攻击的安全性指标。此外,所有差分值为0那样的差分路径概率为1,作为攻击没有意义,因此以后不予考虑。
在本发明的一个实施例中,具有通过保证该最小差分有效S盒数较大来提高对差分攻击的安全性的结构。
(2-3.对线性攻击的抵抗性评价指标) 并且,作为实现对线性攻击的抵抗性的指标,能够应用包含在表现线性掩模的连接关系的线性路径(多被称为线性近似,但是为了与差分对应,在此使用称为“路径”的词语)中的线性有效S盒的最小数。
线性路径是对除了加密函数中的密钥数据以外的所有数据部分指定特定的线性掩模值而得到的。线性掩模值并不是自由决定的,而是变换处理前后的线性值互相关联。在线性变换处理的前后,一对一地决定输入线性掩模值与输出线性掩模值之间的关系。在非线性变换的前后,不是一对一地决定输入线性掩模值与输出线性掩模值之间的关系,而是导入概率的概念。对于输入线性掩模值,存在能够输出的一个以上的线性掩模值的集合,能够事先计算各线性掩模值被输出的概率。对所有输出的概率全部相加为1。
在具有SP型F函数的Feistel结构中,非线性变换仅为由S盒进行处理的部分。因而,在这种情况下,具有0以外的概率的线性路径是从对明文(输入)的线性值开始直到密文(输出)的线性值为止的线性掩模值数据的集合,在所有的S盒前后提供的线性值是具有0以外的概率的线性值。设为将具有0以外的概率的某个线性路径的输入到S盒的线性值不是0的S盒称为线性有效S盒。将具有0以外的概率的所有线性路径的有效S盒数之中最小的数称为最小线性有效S盒数,已知该数值作为对线性攻击的安全性指标。此外,所有线性掩模值为0那样的线性路径概率为1,作为攻击没有意义,因此以后不予考虑。
在本发明的一个实施例中,通过保证该最小线性有效S盒数较大来提高对线性攻击的安全性。
[3.对于具有两个数据序列的Feistel结构的DSM的设定方法] 如之前所说明的那样,在应用了Feistel结构的密码处理中,作为提高对上述的差分攻击、线性攻击的抵抗性的结构,提出应用扩散矩阵切换机构(DSMDiffusion Switching Mechanism,下面是DSM)的结构。DSM是在Feistel结构的循环函数(F函数)部的线性变换部中配置两个以上不同的矩阵的结构。通过该DSM能够保证最小线性有效S盒数较大,能够提高对差分攻击、线性攻击的抵抗性。
关于该DSM,说明其概要。在Feistel结构中,在应用了扩散矩阵切换机构(DSM)的情况下,在构成Feistel结构的循环函数(F函数)部的线性变换部(P层)中应用的矩阵为多个不同的矩阵。例如,如图1所示的r个循环的Feistel结构的各循环中的应用矩阵不是设定为全部相同的线性变换矩阵,而是按照特定的规则排列至少两种以上的矩阵。
例如,图3示出通过两个线性变换矩阵M0、M1来实现扩散矩阵切换机构(DSM)的Feistel结构例,图4示出通过三个线性变换矩阵M0、M1、M2来实现扩散矩阵切换机构(DSM)的Feistel结构例。
在图3所示的Feistel结构例中,两个线性变换矩阵M0、M1由不同的矩阵构成。另外,在图4所示的Feistel结构例中,三个线性变换矩阵M0、M1、M2由不同的矩阵构成。
为了实现扩散矩阵切换机构(DSM),所应用的矩阵需要满足规定的条件。该条件之一是与上述分支数(Branch)有关的限制。下面,说明该限制。
在Feistel结构中的循环函数部的线性变换所应用的多个不同的矩阵M0~Mn各自的分支数中, 将应用矩阵中的分支数的最小值B1D、 与所应用的多个矩阵的关联矩阵对应的分支数的最小值B2D、B3D、B2L定义为如下。
[数1] 在上式中, Mi表示在Feistel结构中的第i个循环的线性变换处理中应用的线性变换矩阵, [Mi|Mi+2|··]表示通过Mi|Mi+2|··各矩阵关联得到的关联矩阵, tM表示矩阵M的转置矩阵,M-1表示矩阵M的逆矩阵。
在上式中,B2D、B3D、B2L具体表示将在Feistel结构中的一个数据序列中连续的两个循环或者三个循环的F函数所包含的矩阵关联得到的矩阵的分支数的最小值。
可知例如通过设定各矩阵使得上述各分支数满足以下条件、即 B2D≥3、B3D≥3、B2L≥3 上述条件,在Feistel结构中能够提高对差分攻击、线性攻击的抵抗性。
此外,B1D、B2D、B3D、B2L中的各上下标具有下面的意思。
BnD的n表示所关联的矩阵数,BnD的D表示用于具有对差分攻击(Differential Attack)的抵抗性的条件,BnL中的L表示用于具有对线性攻击(Linear Attack)的抵抗性的条件。
[4.扩展Feistel结构中的DSM的设定] 在本发明中,提出对具有例如三个序列、四个序列等两个以上的任意的数据序列的Feistel结构实现扩散矩阵切换机构(DSM)的结构,而不是对具有两个数据序列的Feistel结构实现扩散矩阵切换机构(DSM)的结构。下面,详细说明该结构。
在本发明中要处理的Feistel结构在使用SP型F函数这点上与上述具有两个数据序列的Feistel结构相同,但是以将数据序列数的分割数一般化为d的扩展Feistel结构为对象。其中,d是2以上的整数。
如上所述,提出了对于限定为数据序列数=2的Feistel结构的DSM的应用结构,但是并不知道对于具有将数据序列数d设为d≥2的任意数的d的扩展Feistel结构应用DSM来提高抵抗性的方法。本发明实现对具有设为d≥2的任意数的数据序列数d的扩展Feistel结构应用扩散矩阵切换机构(DSM)来提高对差分攻击、线性攻击的抵抗性的结构。
下面,说明本发明的具体结构以及处理例。
(4-1.关于扩展Feistel结构) 下面,参照图5说明扩展Feistel结构的定义。在本说明书中将扩展Feistel结构定义为如下。
1.具有d个(d是2以上)数据序列,各数据序列的大小是mn比特。
2.F函数的输入输出大小是mn比特。
3.具有称为循环的处理单位,在循环内对一个或多个数据序列实施由F函数进行的变换处理,在其它的数据序列中对其结果进行异或。其中,设为在一个循环内包含两个以上F函数的情况下,在所有的成为F函数的输入输出的数据序列中不存在重复的序列。
参照图5说明由上述定义构建的扩展Feistel结构的例子。
上述定义1.具有d个(d是2以上)数据序列,各数据序列的大小是mn比特。
参照图5说明该定义。在图5中,意味着数据序列1~d的各数据序列的输入输出大小是mn比特,输入输出的总比特数是dmn比特。
上述定义2.F函数的输入输出大小是mn比特。
参照图5说明该定义。例如从数据序列2的上一级的异或(XOR)运算部201对F函数202输入作为运算结果的mn比特,并且输入循环密钥K来执行运算处理。该运算处理是参照图2的(b)所说明的处理,包括S盒中的非线性变换和线性变换部中的应用线性变换矩阵Mi的线性变换处理。F函数202的输出是mn比特,被输入到数据序列4的异或(XOR)运算部203。
上述定义3.具有称为循环的处理单位,在循环内对一个或多个数据序列实施由F函数进行的变换处理,在其它的数据序列中对其结果进行异或。其中,设为在一个循环内包含两个以上的F函数的情况下,在所有成为F函数的输入输出的数据序列中不存在重复的序列。
参照图5说明该定义。图5示出具有r个循环的结构的扩展Feistel结构。在各循环中包含一个以上的F函数,在其它的数据序列中对其结果进行异或。图5所示的循环n,在一个循环内包含多个F函数。是图5所示的F函数211和F函数212。
这样,在一个循环中包含多个F函数的情况下,各F函数的输入输出序列分别是不同的数据序列,设定为重复的数据序列不作为输入输出序列来应用。
图5所示的F函数211的输入数据序列是数据序列1,输出数据序列是数据序列2, F函数212的输入数据序列是数据序列5以上的任一个,输出数据序列是数据序列3, 设定为任意的输入输出数据序列都不重复。
此外,也如图5所示,在本说明书中,F函数表示为[F],循环密钥表示为[K]。对这些各标识符F、K设定的上下标具有下面的意思。
Fin、Kin的i表示循环,n表示同一循环中的F函数或者循环密钥的识别编号。
此外,虽然没有图示,但是在以下的说明中,在各循环的F函数的线性变换部中应用的线性变换矩阵表示为[M],对M设定的上下标也与上述同样地, 设Min的i表示循环,n表示与设定在同一循环中的多个F函数分别对应的线性变换矩阵的识别编号。
图6表示满足上述定义的具有7个数据序列(d=7)的扩展Feistel结构例。此外,在图6中,省略各F函数的输出与各数据序列之间的异或运算(XOR)部的标记,但是是如下的结构各F函数的输出与各数据序列在各交叉点上利用各自的输入执行异或运算(XOR),向同一数据序列的下方向输出该异或运算(XOR)结果。在图6所示的例子中,循环i+4、循环i+5、循环i+9、循环i+10是在一个循环中包含两个以上F函数的循环,在这些循环中示出的F函数[F]和循环密钥[K]的右上方显示表示同一循环中的F函数或循环密钥的识别编号的编号。
当根据上述定义1~3构建将序列数d设为d=2的Feistel结构时,成为由两个数据序列构成的Feistel结构、即之前参照图1所说明的Feistel结构。即,成为F函数交替往来于两个数据序列间那样的结线结构,但是在具有三个以上的数据序列的扩展Feistel结构的情况下,由于存在多个被选为F函数的输入和输出的数据序列,因此无法唯一地确定结线结构。也就是说,在扩展Feistel结构中,d越大F函数的设置位置的自由度呈指数函数增大。
在本发明中,提出在这种扩展Feistel结构中实现提高对差分攻击、线性攻击的抵抗性的扩散矩阵切换机构(DSMDiffusion Switching Mechanism)的结构。
在将序列数d设为d=2的Feistel结构中,例如如图3、图4所示,通过将在构成Feistel结构的循环函数(F函数)部的线性变换部(P层)中应用的矩阵设为两个不同的线性变换矩阵M0、M1、或者三个不同的线性变换矩阵M0、M1、M2等来实现DSM。其中,为了实现DSM,需要所应用的矩阵满足规定的条件。该条件之一是与上述分支数(Branch)有关的限制。
在说明在将数据序列数d设为 dd≥2的任意的整数 的扩展Feistel结构中实现DSM的结构之前,参照图7说明在下面的说明中使用的扩展Feistel结构的各结构部以及各结构部的输入输出数据的定义。
图7是仅提取表示例如构成如图6所示的扩展Feistel结构的一个数据序列的图。如图7所示,可知对某一个数据序列的输入数据与一次以上的F函数的输出进行异或(XOR)而输出。该处理适用于扩展Feistel结构所包含的任意的数据序列。
在图7中,表示对一个数据序列[s(i)]通过异或运算(XOR)将多个F函数[Fs(i),1、Fs(i),2、…]的输出相加的情形。
此外,将扩展Feistel结构中具有d个的数据序列分别设为s(i)(1≤i≤d),将对数据序列s(i)进行输入的F函数从靠近数据序列s(i)的输入起依次命名为Fs(i),1、Fs(i),2、…。
另外,将数据序列s(i)的输入数据设为Ws(i),0, 将对F函数Fs(i),j的输出进行异或之后的数据设为Ws(i),j。
另外,将对F函数Fs(i),j的输入数据设为Xs(i),j。
各Xs(i),j是属于数据序列s(i)以外的其它的序列的数据,在此设为不追究其属于哪个序列。
此时,能够认为扩展Feistel结构是将这种数据序列d个相互连接而构成的结构。
在扩展Feistel结构中用于实现DSM的结构 下面,说明在设为dd≥2的任意的整数的扩展Feistel结构中用于实现DSM的结构。针对 (4-2)在扩展Feistel结构中用于提高对差分攻击的抵抗性的结构 (4-3)在扩展Feistel结构中用于提高对线性攻击的抵抗性的结构 这些各个结构依次进行说明。
(4-2.在扩展Feistel结构中用于提高对差分攻击的抵抗性的结构) 首先,说明在扩展Feistel结构中用于提高对差分攻击的抵抗性的结构。
如上所述,差分攻击是通过多次分析具有某个差分(ΔX)的输入数据(明文)及其输出数据(密文)来分析各循环函数中的应用密钥的攻击,作为实现对差分攻击的抵抗性的指标,应用包含在表现差分的连接关系的差分路径中的差分有效S盒的最小数。差分路径是除了加密函数中的密钥数据之外的数据部分的差分值。在线性变换处理的前后,一对一地决定输入差分与输出差分之间的关系,在非线性变换处理的前后,不是一对一地决定,而是算出对某个输入差分的输出差分的出现概率。将对于所有输出的概率全部相加为1。
在具有SP型F函数的Feistel结构中,非线性变换仅是S盒。在这种情况下,具有0以外的概率的差分路径是从对明文(输入)的差分值开始直到密文(输出)的差分值为止的差分数据的集合,在所有的S盒前后提供的差分值具有0以外的概率。将具有0以外的概率的某个差分路径的输入到S盒的差分值不是0的S盒称为差分有效S盒。将具有0以外的概率的所有差分路径的有效S盒数之中最小的数称为最小差分有效S盒数,使用该数值作为对差分攻击的安全性指标。
使最小差分有效S盒数变大来提高对差分攻击的抵抗性。下面说明在将数据序列数d设为d≥2的任意整数的扩展Fei stel结构中构建使最小差分有效S盒数的数量变大的D SM结构的方法。
将扩展Fei stel结构所包含的F函数[Fs(i),x]中使用的线性变换矩阵设为[Ms(i),x]。此时,将应用了分支数运算函数Branch()的分支数算出式B2D(s(i))定义为如下。
[数2] 上式是求出在对构成扩展Feistel结构的任意的数据序列s(i)进行输入的两个相邻的F函数[Fs(i),j、Fs(i),j+1]中使用的两个线性变换矩阵[Ms(i),j、Ms(i),j+1]的关联矩阵[Ms(i),j |Ms(i),j+1]中的分支数的最小值的式子。
在构成扩展Feistel结构的任意的数据序列s(i)中,将与从上一级输入到数据序列s(i)的F函数的个数相当的[j]设为任意的j,考虑数据序列s(i)上的数据[Ws(i),j]。
针对夹着对数据序列s(i)进行输入的两个F函数[Fs(i),j+1]、[Fs(i),j+2]的对数据序列s(i)的输入部的数据序列s(i)上的输入输出数据[Ws(i),j]和[Ws(i),j+2],考虑 Ws(i),j=0、 Ws(i),j+2=0的情况。
此时, 在向对数据序列s(i)进行输入的F函数中相邻的F函数[Fs(i),j+1]和[Fs(i),j+2]输入的各输入差分值[ΔXs(i),j+1]和[ΔXs(i),j+2]之间, [数3] 的关系式成立。
此外,在上式中,hw是汉明重量,上式的左边表示F函数的输入差分数据中的非零的要素数、即有效S盒数之和。保证该数为较大的值是能够期望提高对差分攻击的抵抗性的条件。因而,如果其以外的条件相同,则得出优选为选择构成扩展Feistel结构的各F函数内的矩阵使得B2D(s(i))尽可能变大。
在目前为止的扩展Feistel型密码中一般为在所有F函数内的线性变换部中利用一个线性变换矩阵的结构。
然而,当对数据序列s(i)进行输入的两个相邻的F函数[Fs(i),j、Fs(i),j+1]中使用的两个线性变换矩阵[Ms(i),j]和[Ms(i),j+1]是相同的矩阵时,导致应用了上述分支数运算函数Branch()的分支数的算出式、即 B2D(s(i)) 一定是最低的值、即2。因此,无法期望得到抵抗性提高的效果。
另外,即使在使用不同的矩阵的情况下,当随意选择两个矩阵时,也存在B2D(s(i))为2的情况。
将由上述分支数算出式定义的B2D(s(i))设为更大的分支数能够保证局部的最小差分有效S盒数较大,从而提高对差分攻击的抵抗性。因而,例如通过选择矩阵使得B2D(s(i))为3以上,能够提高对差分攻击的抵抗性。
对扩展Feistel结构的所有数据序列计算B2D(s(i)),将它们之中最小值的B2D(s(i))设为B2D。下面说明选择F函数中的矩阵使得该B2D为3以上的方法。
(4-2-1.使最小分支数B2D的值为3以上的F函数中的矩阵选择结构) 首先,下面说明只要存在最少两种矩阵就能够实现使扩展Feistel结构的所有数据序列的最小分支数[B2D(s(i))]中最小的分支数[B2D]为3以上的情形。
首先,准备两个不同的矩阵[A0]和[A1]的关联矩阵[A0|A1]的分支数为3以上、即满足 Branchn([A0|A1])≥3 的两个不同的矩阵[A0]和[A1]。
接着,将对扩展Feistel结构的数据序列s(i)进行输入的多个F函数的线性变换部的线性变换矩阵设定为如下。
设定在最初的F函数Fs(i),1的线性变换部中的线性变换矩阵为A0、 设定在第二个F函数Fs(i),2的线性变换部中的线性变换矩阵为A1、 设定在第三个F函数Fs(i),3的线性变换部中的线性变换矩阵为A0、 . . 如上那样,对向数据序列s(i)进行输入的多个F函数从上开始依次交替地配置两个不同的矩阵[A0]和[A1]。
在这样设定线性变换矩阵的情况下,求出对任意的数据序列s(i)进行输入的两个相邻的F函数[Fs(i),j、Fs(i),j+1]中使用的两个线性变换矩阵[Ms(i),j、Ms(i),j+1]的关联矩阵[Ms(i),j|Ms(i),j+1]中的分支数的最小值的上式是 [数4] 即,保证最小分支数为3以上。
当然,即使轮换矩阵[A0]和[A1],效果也相同。另外,如果对扩展Feistel结构的所有数据序列s(i)同样地设定矩阵,则仅使用两个矩阵就能够使B2D的值为3以上。
这样,准备满足Branchn([A0|A1])≥3的两个不同的矩阵[A0]和[A1],通过设定为在对扩展Feistel结构的各数据序列s(i)进行输入的F函数中交替地配置这些各个矩阵,能够使最小分支数B2D的值为3以上,从而实现利用扩散矩阵切换机构(DSM)提高对差分攻击的抵抗性。
上述的说明是应用两个不同的矩阵[A0]和[A1]的例子。
接着,下面说明将不同的矩阵一般化为2以上的任意数[k]的例子。
将在扩展Feistel结构所包含的F函数[Fs(i),j]中使用的线性变换矩阵设为[Ms(i),j]。此时,将应用了分支数运算函数Branch()的分支数的算出式B2D(s(i))定义为如下。
[数5] 上式是求出在对构成扩展Feistel结构的任意数据序列s(i)进行输入的k个相邻的F函数[Fs(i),j、Fs(i),j+1、…、Fs(i),j+k-1]中使用的k个线性变换矩阵[Ms(i),j、Ms(i),j+1、…、Ms(i),j+k-1]的关联矩阵[Ms(i),j|Ms(i),j+1|…|Ms(i),j+k-1]中的分支数的最小值的式子。
在构成扩展Feistel结构的任意数据序列s(i)中,将与从上一级输入到数据序列s(i)的F函数的个数相当的[j]设为任意的j,考虑数据序列s(i)上的数据[Ws(i),j]。
对夹着对数据序列s(i)进行输入的k个F函数[Fs(i),j+1]…[Fs(i),j+k]的对数据序列s(i)的输入部的数据序列s(i)上的输入输出数据[Ws(i),j]和[Ws(i),j+k],考虑 Ws(i),j=0、 Ws(i),j+k=0的情况。
此时, 在向对数据序列s(i)进行输入的F函数中相邻的k个F函数[Fs(i),j+1]…[Fs(i),j+k]输入的各输入差分值[ΔXs(i),j+1]…[ΔXs(i),j+k]之间,得到 [数6] 的关系式。
此外,在上式中,hw是汉明重量,上式的左边表示F函数的输入差分数据中的非零要素数、即有效S盒数之和。保证该数为较大的值是能够期望提高对差分攻击的抵抗性的条件。因而,如果其以外的条件相同,则得出优选为选择构成扩展Feistel结构的各F函数内的矩阵使得BkD(s(i))尽可能大。
然而,即使在向数据序列s(i)进行输入的k个相邻的F函数[Fs(i),j]…[Fs(i),j+k-1]中使用的k个线性变换矩阵[Ms(i),j]…[Ms(i),j+k-1]中存在一个相同的矩阵,也会导致应用了上述分支数运算函数Branch()的分支数的算出式、即 BkD(s(i)) 一定是最低的值、即2。因此,无法期望得到抵抗性提高的效果。
另外,即使在k个线性变换矩阵[Ms(i),j]…[Ms(i),j+k-1]中使用不同的矩阵的情况下,当随意选择矩阵时,也存在BkD(s(i))为2的情况。
将由上述分支数算出式定义的BkD(s(i))设为更大的分支数能够保证局部的最小线性有效S盒数变大,从而提高对差分攻击的抵抗性。因而,例如通过选择矩阵使得BkD(s(i))为3以上,能够提高对差分攻击的抵抗性。
对扩展Feistel结构的所有数据序列计算BkD(s(i)),将它们之中最小值的BkD(s(i))设为BkD。下面说明选择F函数中的矩阵使得该BkD为3以上的方法。
(4-2-2.使最小分支数BkD的值为3以上的F函数中的矩阵选择结构) 下面说明只要存在至少k种矩阵就能够实现使扩展Feistel结构的所有数据序列的最小分支数[BkD(s(i))]中最小的分支数[BkD]为3以上的情形。
首先,准备k个不同的矩阵[A0]、[A1]、[A2]、…[Ak-1]的关联矩阵[A0|A1|…|Ak-1]的分支数为3以上、即满足 Branchn([A0|A1|…|Ak-1])≥3 的k个不同的矩阵[A0]、[A1]、[A2]、…[Ak-1]。
接着,将对扩展Feistel结构的数据序列s(i)进行输入的多个F函数的线性变换部的线性变换矩阵设定为如下。
设定在最初的F函数Fs(i),1的线性变换部中的线性变换矩阵为A0、 设定在第二个F函数Fs(i),2的线性变换部中的线性变换矩阵为A1、 设定在第三个F函数Fs(i),3的线性变换部中的线性变换矩阵为A2、 设定在第k个F函数Fs(i),k的线性变换部中的线性变换矩阵为Ak-1、 设定在第k+1个F函数Fs(i),k+1的线性变换部中的线性变换矩阵为A0、 设定在第k+2个F函数Fs(i),k+2的线性变换部中的线性变换矩阵为A1、 如上那样,对向数据序列s(i)进行输入的多个F函数从上开始依次重复配置k个不同的矩阵[A0]、[A1]、[A2]、…[Ak-1]。
在这样设定线性变换矩阵[A0]、[A1]、[A2]、…[Ak-1]的情况下,求出对任意数据序列s(i)进行输入的k个相邻的F函数[Fs(i),j、Fs(i),j+1…Fs(i),j+k-1]中使用的k个线性变换矩阵[Ms(i),j、Ms(i),j+1…Ms(i),j+k-1]的关联矩阵[Ms(i),j|Ms(i),j+1|…Ms(i),j+k-1]中的分支数的最小值的式子是 [数7] 即,保证最小分支数为3以上。
当然,即使轮换矩阵[A0]、[A1]、[A2]、…[Ak-1],效果也相同。另外,如果对扩展Feistel结构的所有数据序列s(i)同样地设定矩阵,则仅使用k个矩阵就能够使B2D的值为3以上。
这样,准备满足 Branchn([A0|A1|…|Ak-1])≥3 的k个不同的矩阵[A0]、[A1]、[A2]、…[Ak-1],通过设定为在对扩展Feistel结构的各数据序列s(i)进行输入的F函数中依次反复配置这些各矩阵,能够使最小分支数BkD的值为3以上,从而实现利用扩散矩阵切换机构(DSM)提高对差分攻击的抵抗性。
此外,关于k的值的选择,只要k至少为2以上就能够期望得到上述效果。k越大,被保证的范围越大,因此能够进一步期望抵抗性的提高。但是,另一方面,由于所需的矩阵种类的最小数变大,因此有可能不适于有效安装。因此,k的值应该是在设计阶段根据状况而选择的值。
(4-3.在扩展Feistel结构中用于提高对线性攻击的抵抗性的结构) 接着,说明在扩展Feistel结构中提高对线性攻击的抵抗性的结构。
首先,如所说明的那样,作为实现对线性攻击的抵抗性的指标,能够应用表现线性掩模的连接关系的线性路径(多被称为线性近似,但是为了与差分对应,在此使用称为“路径”的词语)所包含的线性有效S盒的最小数。线性路径是对除了加密函数中的密钥数据以外的所有数据部分指定特定的线性掩模值而得到的。在线性变换处理的前后,一对一地决定输入线性掩模值与输出线性掩模值之间的关系,在非线性变换处理的前后,不是一对一地决定,而是算出对某输入线性掩模的输出线性掩模的出现概率。对所有输出的概率全部相加为1。
在具有SP型F函数的Feistel结构中,非线性变换仅为由S盒进行处理的部分。因而,在这种情况下,具有0以外的概率的线性路径是从对明文(输入)的线性值开始直到密文(输出)的线性值为止的线性掩模值数据的集合,在所有S盒前后提供的线性值具有0以外的概率。将具有0以外的概率的某线性路径的输入到S盒的线性值不是0的S盒称为线性有效S盒。将具有0以外的概率的所有线性路径的有效S盒数之中最小的数称为最小线性有效S盒数,使用该数值作为对线性攻击的安全性指标。
使最小线性有效S盒数变大来提高对线性攻击的抵抗性。下面说明在将数据序列数d设为d≥2的任意整数的扩展Feistel结构中构建使最小线性有效S盒数的数量变大的DSM结构的方法。
将在扩展Feistel结构所包含的F函数[Fs(i),x]中使用的线性变换矩阵设为[Ms(i),x]。此时,将应用了分支数运算函数Branch()的分支数的算出式B2L(s(i))定义为如下。
[数8] 上式是求出在对构成扩展Feistel结构的任意数据序列s(i)进行输入的两个相邻的F函数[Fs(i),j、Fs(i),j+1]中使用的两个线性变换矩阵[Ms(i),j]、[Ms(i),j+1]各自的逆矩阵的转置矩阵[tM-1s(i),j]、[tM-1s(i),j+1]的关联矩阵[tM-1s(i),j|tM-1s(i),j+1]中的分支数的最小值的式子。
在构成扩展Feistel结构的任意数据序列s(i)中,将与从上一级对数据序列s(i)进行输入的F函数的个数相当的[j]设为任意的j,对于某j, 对第j个F函数的输入Xs(i),j、 第j个F函数的输出与数据序列s(i)上的数据之间的异或(XOR)结果Ws(i),j、 对第j+1个F函数的输入Xs(i),j+1, 当将这些各数据的线性掩模分别设为 ΓXs(i),j、 ΓWs(i),j、 ΓXs(i),j+1 时,如果它们之中任一个都不为0,则满足下式。
即, [数9] 满足上式。意味着上式左边的值越大,局部的线性有效S盒数越大。因而,可以说优选为选择矩阵以使B2L(s(i))变大。
然而,当在对数据序列s(i)进行输入的两个相邻的F函数[Fs(i)j、Fs(i),j+1]中使用的两个线性变换矩阵[Ms(i),j]、[Ms(i),j+1]是相同的矩阵时,上述的分支数算出式、即 B2L(s(i)) 一定是最低的值、即2。因此无法期望得到抵抗性提高的效果。将B2L(s(i))设为更大的分支数能够保证最小线性有效S盒数变大,从而提高对线性攻击的抵抗性。因而,例如通过选择矩阵使得B2L(s(i))为3以上,能够提高对线性攻击的抵抗性。
对扩展Feistel结构的所有数据序列计算B2L(s(i)),将它们之中最小值的B2L(s(i))设为B2L。下面说明选择F函数中的矩阵使得该B2L为3以上的方法。
(4-3-1.使最小分支数B2L的值为3以上的F函数中的矩阵选择结构) 下面说明只要存在至少两种矩阵就能够实现使扩展Feistel结构的所有数据序列的最小分支数[B2L(s(i))]中最小的分支数[B2L]为3以上的情形。
首先,准备两个不同的矩阵[A0]和[A1]的关联矩阵[tA0-1|tA1-1]的分支数为3以上、即满足 Branchn([tA0-1|tA1-1])≥3 的两个不同的矩阵[A0]和[A1]。
接着,将对扩展Feistel结构的数据序列s(i)进行输入的多个F函数的线性变换部的线性变换矩阵设定为如下。
设定在最初的F函数Fs(i),1的线性变换部中的线性变换矩阵为A0、 设定在第二个F函数Fs(i),2的线性变换部中的线性变换矩阵为A1、 设定在第三个F函数Fs(i),3的线性变换部中的线性变换矩阵为A0、 如上那样,对向数据序列s(i)进行输入的多个F函数从上开始依次交替地配置两个不同的矩阵[A0]和[A1]。
在这样设定线性变换矩阵的情况下,求出在对任意数据序列s(i)进行输入的两个相邻的F函数[Fs(i),j、Fs(i),j+1]中使用的两个线性变换矩阵[Ms(i),j]、[Ms(i),j+1]各自的逆矩阵的转置矩阵[tM-1s(i),j]、[tM-1s(i),j+1]的关联矩阵[tM-1s(i),j|tM-1s(i),j+1]中的分支数的最小值的上式成为 [数10] 即,保证最小分支数为3以上。
当然,即使轮换矩阵[A0]和[A1],效果也相同。另外,如果对扩展Feistel结构的所有数据序列s(i)同样地设定矩阵,则仅使用两个矩阵就能够使B2L的值为3以上。
这样,准备满足Branchn([tA0-1|tA1-1])≥3的两个不同的矩阵[A0]和[A1],通过设定为在对扩展Feistel结构的各数据序列s(i)进行输入的F函数中交替地配置这些各矩阵,能够使最小分支数B2L的值为3以上,从而实现利用扩散矩阵切换机构(DSM)提高对线性攻击的抵抗性。
[5.对于具有特定形式的扩展Feistel结构的DSM的利用结构] 如上所述,通过在将数据序列数d设为d≥2的任意整数的扩展Feistel结构中应用DSM技术,能够提高对差分攻击、线性攻击的抵抗性。下面,说明能够以较高的水平保证对差分攻击、线性攻击的安全性指标的具体的扩展Feistel结构。
如之前参照图5、图6所说明的那样,将数据序列数d设为d≥2的任意整数的扩展Feistel结构是能够进行从其它各种数据序列对一个数据序列的输入、并且能够在一个循环中并行地执行多个F函数等的各种结构。下面,将扩展Feistel结构大致分类为两个类型(类型1、类型2),按每各个类型说明能够以较高的水平保证对差分攻击、线性攻击的安全性指标的具体的扩展Feistel结构。
(5-1.对于扩展Feistel结构的类型1的DSM的应用) 首先,参照图8说明对于扩展Feistel结构的类型1的DSM的应用。
设扩展Feistel结构的类型1具有以下参数。
参数 (a)数据分割数d(d为3以上) (b)输入输出数据长度dmn比特 (c)分割数据长度mn比特 (d)每一个循环的F函数的数量1 如图8所示,在各循环内,对图8所示的左端的数据序列上的mn比特数据应用F函数,将F函数的处理结果输出到紧邻的数据序列并进行异或。此外,在图8中省略异或的运算标记。
如图8所示,采用如下结构在各循环中对F函数进行数据输入的左端的数据序列在下一个循环中移动到右端,其以外的数据序列逐一向左移动。
说明这样在各循环的每一个循环中执行一个F函数的扩展Feistel结构中应用DSM来提高对差分攻击和线性攻击的抵抗性的结构。
在之前所说明的(4-2.在扩展Feistel结构中用于提高对差分攻击的抵抗性的结构)中,说明了以下情形对扩展Feistel结构的所有数据序列计算B2D(s(i)),将它们之中最小值的B2D(s(i))设为B2D,选择F函数中的矩阵使得该B2D为3以上,由此提高对差分攻击的抵抗性。
并且,在之前所说明的(4-3.在扩展Feistel结构中用于提高对线性攻击的抵抗性的结构)中,说明了以下情形对扩展Feistel结构的所有数据序列计算B2L(s(i)),将它们之中最小值的B2L(s(i))设为B2L,选择F函数中的矩阵使得该B2L为3以上,由此提高对线性攻击的抵抗性。
除了该B2D和B2L,还将B1D设为包含在如图8所示的类型1的扩展Feistel结构中的F函数中的线性变换矩阵的分支数中的最小的分支数。
此时,当将包含在如图8所示的类型1的扩展Feistel结构中的连续p个循环中的差分有效S盒数记载为ActD(p)、将线性有效S盒数记载为ActL(p)时,存在下面的关系式。
ActD(3d)≥B1D+B2D ActL(3d)≥2B2L 在上式中, ActD(3d)表示包含在连续的3d个循环中的差分有效S盒数, ActL(3d)表示包含在连续的3d个循环中的线性有效S盒数。
稍后记述这些关系式成立的证明。
根据该内容,通过利用使B1D、B2D、B2L变大那样的矩阵,能够确保有效S盒数变大,其结果,能够提高对差分攻击和线性攻击的抵抗性。
此外,已知这些B1D、B2D、B2L的逻辑上的最大值为m+1。
在上述的式子、即 ActD(3d)≥B1D+B2D ActL(3d)≥2B2L 这些式子的右边包含之前所说明的最小分支数B2D或B2L,使这些最小分支数的值变大有助于确保有效S盒数变大,对提高对差分攻击和线性攻击的抵抗性是有效的。因而,在如图8所示的扩展Feistel结构的类型1的结构中,之前所说明的使最小分支数B2D或B2L为3以上的结构是有效的,通过设为该结构能够保证对差分攻击和线性攻击的抵抗性比以往更高。
(5-2.对于扩展Feistel结构的类型2的DSM的应用) 接着,参照图9说明对于扩展Feistel结构的类型2的DSM的应用。
设扩展Feistel结构的类型2具有以下参数。
参数 (a)数据分割数d(其中,d为4以上的偶数) (b)输入输出数据长度dmn比特 (c)分割数据长度mn比特 (d)每一个循环的F函数的数量d/2 如图9所示,在各循环内,对从左端起处于第奇数个的mn比特的数据序列应用F函数,将F函数的处理结果输出到紧邻的数据序列并进行异或。此外,在图9中省略异或的运算标记。
如图9所示,采用如下结构在各循环中,对F函数进行数据输入的左端的数据序列在下一个循环中移动到右端,其以外的数据序列逐一向左移动。
说明这样在各循环的每一个循环中执行d/2个F函数的扩展Feistel结构中应用DSM来提高对差分攻击和线性攻击的抵抗性的结构。
在之前所说明的(4-2.在扩展Feistel结构中用于提高对差分攻击的抵抗性的结构)中,说明了以下情形对扩展Feistel结构的所有数据序列计算B2D(s(i)),将它们之中最小值的B2D(s(i))设为B2D,选择F函数中的矩阵使得该B2D为3以上,由此提高对差分攻击的抵抗性。
并且,在之前所说明的(4-3.在扩展Feistel结构中用于提高对线性攻击的抵抗性的结构)中,说明了以下情形对扩展Feistel结构的所有数据序列计算B2L(s(i)),将它们之中最小值的B2L(s(i))设为B2L,选择F函数中的矩阵使得该B2L为3以上,由此提高对线性攻击的抵抗性。
除了该B2D和B2L,还将B1D设为如图9所示的类型2的扩展Feistel结构中包含的F函数中的线性变换矩阵的分支数中的最小的分支数。
此时,当将包含在如图9所示的类型2的扩展Feistel结构中的连续p个循环中的差分有效S盒数记载为ActD(p)、将线性有效S盒数记载为ActL(p)时,存在下面的关系式。
ActD(6)≥B1D+B2D ActL(6)≥2B2 在上式中, ActD(6)表示包含在连续的6个循环中的差分有效S盒数, ActL(6)表示包含在连续的6个循环中的线性有效S盒数。
稍后记述这些关系式成立的证明。
根据该内容,通过利用使B1D、B2D、B2L变大那样的矩阵,能够确保有效S盒数变大,其结果,能够提高对差分攻击和线性攻击的抵抗性。
此外,已知这些B1D、B2D、B2L的逻辑上的最大值为m+1。
在上述的式子、即 ActD(6)≥B1D+B2D ActL(6)≥2B2L 这些式子的右边包含之前所说明的最小分支数B2D或B2L,使这些最小分支数的值变大有助于确保有效S盒数变大,对提高对差分攻击和线性攻击的抵抗性是有效的。因而,在如图9所示的扩展Feistel结构的类型2的结构中,之前所说明的使最小分支数B2D或B2L为3以上的结构是有效的,通过设为该结构能够保证对差分攻击和线性攻击的抵抗性比以往更高。
[6.扩展Feistel结构各类型的有效S盒数与基于F函数中的线性变换矩阵的最小分支数之间的关系式的证明] 接着,说明在上述的 (5-1.对于扩展Feistel结构的类型1的DSM的应用) (5-2.对于扩展Feistel结构的类型2的DSM的应用) 中所说明的有效S盒数与基于F函数中的线性变换矩阵的最小分支数之间的关系式的证明。
(6-1.扩展Feistel结构的类型1的有效S盒数与基于F函数中的线性变换矩阵的最小分支数之间的关系式的证明) 首先,说明之前参照图8所说明的扩展Feistel结构的类型1的有效S盒数与基于F函数中的线性变换矩阵的最小分支数之间的关系式的证明。
即,证明将包含在类型1的扩展Feistel结构中的连续的p个循环中的差分有效S盒数记载为ActD(p)、将线性有效S盒数记载为ActL(p)的情况下的关系式、 ActD(3d)≥B1D+B2D ActL(3d)≥2B2L 该关系式成立。
能够如图10那样以其它的形式表示之前参照图8所说明的扩展Feistel结构的类型1的结构。在图8中在每个循环中轮换表示各数据序列的排列使得对F函数进行输入的数据序列位于左端,但是图10不进行数据序列在每个循环中的轮换,而以一条直线表示。在图10中示出循环1~6d。将d个的循环(循环1~d、d+1~2d、…、5d+1~6d)排列在一条横线上来表示,但是它们并不是被并行地执行,而是依次执行各循环、例如循环1~d。
另外,图中省略了在F函数的输出与各数据序列的交点的异或(XOR)运算,但是在F函数的输出与各数据序列的交点上执行异或(XOR)运算,其结果成为下一个循环的F函数的输入。
证明在该扩展Feistel结构的类型1的结构中之前在(5-1.对于扩展Feistel结构的类型1的DSM的应用)中所说明的关系式、 ActD(3d)≥B1D+B2D ActL(3d)≥2B2L 成立。
在上式中, ActD(3d)、ActL(3d)意味着包含在图8或图10所示的类型1的扩展Feistel结构中的连续的3d个循环中的差分有效S盒数和线性有效S盒数。
B1B是包含在类型1的扩展Feistel结构中的F函数中的线性变换矩阵的分支数中的最小的分支数, B2D、B2L是在之前在(4-2)、(4-3)中所说明的对扩展Feistel结构中包含的一个数据序列进行输入的连续的F函数中的线性变换矩阵的关联矩阵的最小分支数、以及逆矩阵的转置矩阵的关联矩阵的最小分支数。
将B1D、B2D、B2L定义为如下。
[数11] 此外,在上述定义中, 的关系成立。
另外,设为用Dk表示包含在图8或图10所示的类型1的扩展Feistel结构中的第k个F函数中的差分有效S盒数,用Lk表示线性有效S盒数。
(证明1.ActD(3d)≥B1D+B2D的证明) 首先证明ActD(3d)≥B1D+B2D。
即,证明包含在图8、图10所示的类型1的扩展Feistel结构中连续的3d个循环中的差分有效S盒的个数为B1D+B2D以上。
考察在类型1的扩展Feistel结构中提供输入不是零的差分(ΔX)的情况。在这种情况下,类型1的扩展Feistel结构具有以下四个性质。
(性质1)在连续的d个循环中至少一个循环中存在不是0的差分有效S盒 (性质2)如果Dk=0,则Dk-d+1=Dk+1 (性质3)如果Dk≠0,则Dk-d+1+Dk+Dk+1≥B1D (性质4)如果Dk+Dk+d≠0,则Dk-d+1+Dk+Dk+d+Dk+d+1≥B2D 利用以上四个性质,进行 ActD(3d)≥B1D+B2D 的证明、即证明“包含在连续的3d个循环中的差分有效S盒的个数为B1D+B2D以上”。
考虑作为对象的循环为从第i+1个到第i+3d个的循环。
情况1假设在从第i+d+2个循环到第i+2d-1个循环中存在不是0的有效S盒的情况。
当将存在不是0的有效S盒的循环设为k时,表示为Dk≠0。
情况1-1除了情况1,在Dk+d-1≠0的情况下, 根据性质3,Dk+Dk+1+Dk-d+1≥B1D 根据性质4,Dk+d-1+Dk-2d+Dk-1+Dk+d≥B2D, 因此得出 [数12] 情况1-2除了情况1,在Dk+1≠0的情况下, 根据性质3,Dk+1+Dk+2+Dk-d+2≥B1D 根据性质4,Dk+Dk-d+1+Dk+d+Dk+d+1≥B2D, 因此得出 [数13] 情况1-3除了情况1,在Dk+d-1=0并且Dk+1=0的情况下, 根据性质2,Dk=Dk+d≠0 根据性质3,Dk+Dk+1+Dk-d+1≥B1D 根据性质3,Dk+d+Dk+d+1+Dk+1≥B2D Dk+1=0,因此得出 [数14] 情况2假设在从第i+d+2个循环到第i+2d-1个循环中不存在不是0的有效S盒的情况。
根据性质1,Di+d+1≠0、或者Di+2d≠0。
情况2-1在Di+d+1≠0而Di+2d=0的情况下, 根据性质2,Di+d+1=Di+2d+1≠0 根据性质3,Di+d+1+Di+d+2+Di+2≥B1D 根据性质3,Di+2d+1+Di+2d+2+Di+d+2≥B1D Di+d+2=0,因此得出 [数15] 情况2-2在Di+d+1=0而Di+2d≠0的情况下, 根据性质2,Di+2d=Di+d≠0 根据性质3,Di+d+Di+d+1+Di+1≥B1D 根据性质3,Di+2d+Di+2d+1+Di+d+1≥B1D Di+d+1=0,因此得出 [数16] 情况2-3在Di+d+1≠0并且Di+2d≠0的情况下, 根据性质3,Di+d+1+Di+d+2+Di+2≥B1D 根据性质3,Di+2d+Di+2d+1+Di+d+Di+1≥B2D,因此得出 [数17] 当综合以上的情况1和情况2时,证明出 [数18] 即, ActD(3d)≥B1D+B2D 成立,证明出包含在图8、图10所示的类型1的扩展Feistel结构中连续的3d个循环中的差分有效S盒的个数为B1D+B2D以上。
(证明2.ActL(3d)≥2B2L的证明) 接着,证明ActL(3d)≥2B2L。
即,证明包含在图8、图10所示的类型1的扩展Feistel结构中连续的3d个循环中的线性有效S盒的个数为2B2L以上。
此外,B2L如上所述那样,定义为 [数19] 另外,设为用Lk表示包含在第k个F函数中的线性有效S盒的数量。
在类型1的扩展Feistel结构中提供了输入不是零的线性掩模的情况下,具有以下两个性质。
(性质5)在连续的d个循环中的至少一个循环中存在不是0的线性有效S盒 (性质6)Lk+Lk+1+Lk+d≥B2L、或者Lk+Lk+1+Lk+d=0。此外,在Lk+Lk+1+Lk+d≥B2L的情况下,左边包含的两个以上的项不会同时为0。
利用以上两个性质,进行 ActL(3d)≥2B2L 的证明、即证明“包含在连续的3d个循环中的线性有效S盒的个数为2B2L以上”。
考虑作为对象的循环为从第i+1个到第i+3d个的循环。
情况1假设在从第i+d+2个循环到第i+2d个循环中存在不是0的有效S盒的情况。
当将存在不是0的有效S盒的循环设为k时,Lk≠0。
情况1-1除了情况1,在Lk+d≠0或者Lk-1≠0的情况下, 根据性质6,Lk+Lk+d+Lk+1≥B2L 根据性质6,Lk-1+Lk-1-d+Lk-d≥B2L, 因此得出 [数20] 情况1-2除了情况1,在Lk+d=0并且Lk-1=0的情况下,根捱性质6,Lk-d+1≠0 根据性质6,Lk+Lk-1+Lk+d-1≥B2L 根据性质6,Lk-d+1+Lk+1+Lk-d+2≥B2L 此时如果d≥4,则得出 [数21] 如果d=3,则虽然Lk-1重复,但是已知Lk-1=0,因此同样得出 [数22] 情况2假设在从第i+d+2个循环到第i+2d-1个循环中不存在不是0的有效S盒的情况。
根据性质1,得出Li+d+1≠0。
根据性质6,Li+d≠0 根据性质6,Li+d+1+Li+d+2+Li+2d+1≥B2L 根据性质6,Li+d+Li+d-1+Li+2d-1≥B2L 此时,如果d≥4,则得出 [数23] 如果d=3,则虽然Li+5重复,但是已知Li+5=0,因此同样得出 [数24] 当综合以上的情况1和情况2时,证明出 [数25] 即, ActL(3d)≥2B2L成立,证明出包含在图8、图10所示的类型1的扩展Feistel结构中连续的3d个循环中的线性有效S盒的个数为2B2L以上。
(6-2.扩展Feistel结构的类型2的有效S盒数与基于F函数中的线性变换矩阵的最小分支数之间的关系式的证明) 接着,说明参照图9所说明的扩展Feistel结构的类型2的有效S盒数与基于F函数中的线性变换矩阵的最小分支数之间的关系式的证明。
即,证明将包含在类型2的扩展Feistel结构中的连续的p个循环中的差分有效S盒数记载为ActD(p)、将线性有效S盒数记载为ActL(p)的情况下的关系式 ActD(6)≥B1D+B2D ActL(6)≥2B2L 该关系式成立。
能够如图11所示那样以其它的形式表示之前参照图9所说明的扩展Feistel结构的类型2的结构。在图9中,在每个循环中轮换表示各数据序列的排列,但是图11不进行数据序列的轮换,而以一条直线表示。在图11中,表示循环1~12。将两个循环(1~2、3~4、··)的F函数排列在一条横线上来显示。例如,在第一个循环中并行地执行图11所示的循环1~2的横线上表示出的F函数F1,0~F1,d-1中的F1,0、F1,2、…、F1,d-2的每隔一个的F函数(输出的箭头向上)。在接下来的第二个循环中并行地执行剩余的F1,1、F1,3、…、F1,d-1的每隔一个的F函数(输出的箭头向下)。
在图11中,用于识别F函数的编号是为了容易理解证明而新导入的编号,使用两个数字决定F函数的位置。
Fi,j的i表示循环数(1=1、2循环,2=3、4循环··),y表示两个循环中的F函数之一。此外,如果j是0、2、4的偶数,则为先行循环中的F函数,如果j是1、3、5的奇数,则为后续循环中的F函数。此外,将包含在F函数Fi,j中的线性变换矩阵称为[Mi,j]。
证明在该扩展Feistel结构的类型2的结构中之前在(5-2.对于扩展Feistel结构的类型2的DSM的应用)中说明的关系式 ActD(6)≥B1D+B2D ActL(6)≥2B2L 成立。
在上式中, ActD(6)、ActL(6)意味着包含在图9或图11所示的类型2的扩展Feistel结构中的连续的6个循环中的差分有效S盒数和线性有效S盒数。
B1D是包含在类型2的扩展Feistel结构中的F函数中的线性变换矩阵的分支数中的最小的分支数, B2D、B2L是包含在之前在(4-2)、(4-3)中所说明的扩展Feistel结构中的对一个数据序列进行输入的连续的F函数中的线性变换矩阵的关联矩阵的最小分支数、以及逆矩阵的转置矩阵的关联矩阵的最小分支数。
将B1D、B2D、B2L定义为如下。
[数26] 此外,在上述定义中, B1D≥B2D 的关系成立。
另外,用Dp,q表示包含在Fp,q中的有效S盒数。此外,以后,在下标q的部分具有负值或d以上的值的情况下,设为利用d进行剩余运算(q mod d)来进行补正使得总是成为0≤q<d。
(证明3.ActD(6)≥B1D+B2D的证明) 首先,证明ActD(6)≥B1D+B2D。
即,证明包含在图9、图11所示的类型2的扩展Feistel结构中连续的6个循环中的差分有效S盒的个数为B1D+B2D以上。
考察在类型2的扩展Feistel结构中提供输入了不是零的差分(ΔX)的情况。在这种情况下,类型2的扩展Feistel结构具有以下四个性质。
(性质1)对于某个i,在Fp,q(p=i、q∈{0、…d-1})中存在不是0的差分有效S盒 (性质2)如果Dp,q=0,则 Dp-1,q+1=Dp,q+1(q是偶数时) Dp,q+1=Dp+1,q+1(q是奇数时) (性质3)如果Dp,q≠0,则 Dp,q+Dp-1,q+1+Dp,q+1≥B1D(q是偶数时) Dp,q+Dp,q+1+Dp+1,q+1≥B1D(q是奇数时) (性质4)如果Dp,q+Dp+1,q≠0,则 Dp,q+Dp+1,q+Dp-1,q+1+Dp+1,q+1≥B2D(q是偶数时) Dp,q+Dp+1,q+Dp,q+1+Dp+2,q+1≥B2D(q是奇数时) 利用以上四个性质,进行 ActD(6)≥B1D+B2D 的证明、即证明“对于1以上的任意整数i,包含在满足p∈{i、i+1、i+2}、q∈{0、1、…d-1}的3d个F函数Fp,q中的差分有效S盒的总数为B1D+B2D以上”。
在任意取出Dp,q(p=i+1、q∈{0、…d-1})的非零要素时,将其设为Dj,k≠0。根据上述的(性质1)示出一定存在。
情况1在Dj,k-1≠0的情况下, 根据性质3, Dj,k+Dj-1,k+1+Dj,k+1≥B1D(k是偶数时) Dj,k+Dj,k+1+Dj+1,k+1≥B1D(k是奇数时) 根据性质4, Dj-1,k-1+Dj,k-1+Dj-1,k+Dj+1,k≥B2D(k是偶数时) Dj,k-1+Dj+1,k-1+Dj-1,k+Dj+1,k≥B2D(k是奇数时),因此 [数27] 成立。
情况2在Dj,k+1≠0的情况下, 根据性质3, Dj,k+1+Dj,k+2+Dj+1,k+2≥B1D(k是偶数时) Dj,k+1+Dj-1,k+2+Dj,k+2≥B1D(k是奇数时) 根据性质4, Dj,k+Dj+1,k+Dj-1,k+1+Dj+1,k+1≥B2D(k是偶数时) Dj-1,k+Dj,k+Dj-1,k+1+Dj+1,k+1≥B2D(k是奇数时),因此 [数28] 成立。
情况3在Dj,k-1=0并且Dj,k+1=0的情况下, 根据性质2,Dj,k-1=0,因此 Dj+1,k=Dj,k≠0(k是偶数时) Dj-1,k=Dj,k≠0(k是奇数时) 根据性质3, Dj,k+Dj-1,k+1+Dj,k+1≥B1D(k是偶数时) Dj,k+Dj,k+1+Dj+1,k+1≥B1D(k是奇数时)还根据性质3, Dj+1,k+Dj,k+1+Dj+1,k+1≥B1D(k是偶数时) Dj-1,k+Dj-1,k+1+Dj,k+1≥B1D(k是奇数时)Dj,k+1=0,因此 [数29] 成立。
当综合以上时,证明出 [数30] 即, ActD(6)≥B1D+B2D 成立,证明出包含在图9、图11所示的类型2的扩展Feistel结构中连续6个循环中的差分有效S盒的个数为B1D+B2D以上。
(证明4.ActL(6)≥2B2L的证明) 接着,证明ActL(6)≥2B2L。
即,证明包含在图9、图11所示的类型2的扩展Feistel结构中连续6个循环中的线性有效S盒的个数为2B2L以上。
此外,如上所述,B2L定义为 [数31] 另外,设为用Lp,q表示包含在第Fp,q个F函数中的线性有效S盒数。
在类型2的扩展Feistel结构中提供了输入不是零的线性掩模的情况下,具有以下两个性质。
(性质5)对于某个i,在Fp,q(p=i、q∈{0、…d-1})中存在不是0的线性有效S盒 (性质6) Lj,k+Lj+1,k+Lj,k+1≥B2L、或者Lj,k+Lj+1,k+Lj,k+1=0(k是偶数时) Lj,k+Lj+1,k+Lj+1,k+1≥B2L、或者Lj,k+Lj+1,k+Lj+1,k+1=0(k是奇数时) 此外,在La+Lb+Lc≥B2L的形式的情况下,左边包含的两个以上的项不会同时为0。
利用以上两个性质,进行 ActL(6)≥2B2L 的证明、即证明“对于1以上的任意整数i,包含在满足p∈{i、i+1、i+2}、q∈{0、1、…d-1}的3d个F函数Fp,q中的线性有效S盒的总数为2B2L以上”。
在任意取出Lp,q(p=i+1、q∈{0、…d-1})的不是0的要素时,将其设为Lj,k≠0。根据性质5示出一定存在上述Lj,k。
根据性质6, Lj-1,k+Lj,k+Lj-1,k+1≥B2L(k是偶数时) Lj,k+Lj+1,k+Lj+1,k+1≥B2L(k是奇数时) 情况1在Lj,k-1≠0的情况下, 根据性质6, Lj,k-1+Lj+1,k-1+Lj+1,k≥B2L(k是偶数时) Lj-1,k-1+Lj,k-1+Lj-1,k≥B2L(k是奇数时) 因而,在这种情况下, [数32] 成立。
情况2在Lj,k-1=0的情况下, 根据性质6, Lj-1,k-1≠0(k是偶数时) Lj+1,k-1≠0(k是奇数时) 因此, Lj-1,k-2+Lj,k-2+Lj-1,k-1≥B2L(k是偶数时) Lj,k-2+Lj+1,k-2+Lj+1,k-1≥B2L(k是奇数时) 此时d≥4,因此,在这种情况下 [数33] 成立。
当综合以上的情况1和情况2时,证明出 [数34] 即, ActL(6)≥2B2L 成立,证明出包含在图9、图11所示的类型2的扩展Feistel结构中连续的6个循环中的线性有效S盒的个数为2B2L以上。
[7.基于F函数的设定以及利用处理的方法的安装中的改进结构] 如上所述,在本发明中实现如下结构在将数据序列数d设为d≥2的整数的扩展Feistel结构中,作为各循环的F函数的线性变换处理,应用选择性地应用至少两个以上的不同的矩阵的所谓的扩散矩阵切换机构(DSM),由此提高对线性分析、差分分析的抵抗性。
这样,在利用硬件来实现执行选择应用不同的多个矩阵的运算处理的结构的情况下,需要具有进行与各个矩阵对应的运算的硬件结构的不同的F函数处理部。特别是要在一个循环中并行地执行多个F函数的情况下,需要用于进行并行处理的多个F函数用电路。
即,在之前参照图9、图11说明的类型2的扩展Feistel结构中,是并行地执行在同一循环中应用了多个F函数的数据变换处理的结构,在利用硬件执行基于该类型2的结构的处理的情况下,需要安装在一个循环中并行执行的个数的F函数的硬件。即使在这种被要求并行执行的F函数是相同结构的情况下,也必须具备多个具有该相同结构的F函数。
如上所述,本发明的密码处理结构具有如下结构通过设为在各循环的F函数中执行的线性变换处理中选择性地应用至少两个以上的多个不同的矩阵的结构,提高了对各种攻击的抵抗性。即,设为具备扩散矩阵切换机构(DSMDiffusionSwitching Mechanism)的结构。
为了满足该扩散矩阵切换机构(DSM),只要满足设定为多个不同的矩阵等条件即可,并不特别限定在各循环中并行执行的F函数,其中,上述多个不同的矩阵满足如下条件从根据线性变换矩阵而算出的与数据序列对应的最小分支数[BkD(s(i))]中选择的全部数据序列中的最小分支数[BkD]为3以上,其中,所述线性变换矩阵包含在对扩展Feistel结构的各数据序列s(i)进行输入的连续的k个(其中,k为2以上的整数)F函数中。
下面,根据该特性说明在扩展Feistel结构中维持基于扩散矩阵切换机构(DSM)的抵抗性的同时提高了安装效率的结构例。
(7-1.扩展Feistel的类型2的有效的F函数配置方法) 首先,说明之前参照图9、图11所说明的扩展Feistel的类型2的有效的F函数配置结构。如在之前所说明的项目(5-2.对于扩展Feistel结构的类型2的DSM的应用)中记述的那样,类型2的扩展Feistel结构具有以下参数。
参数 (a)数据分割数d(其中,d为4以上的偶数) (b)输入输出数据长度dmn比特 (c)分割数据长度mn比特 (d)每一个循环的F函数的数量d/2 即,如图9所示,在各循环内,对从左端起处于第奇数个的mn比特的数据序列应用F函数,将F函数的处理结果输出到紧邻的数据序列并进行异或。此外,在图9中省略异或的运算标记。
下面,说明提高对于具有这种结构的类型2的扩展Feistel结构的安装效率的结构。作为一例,参照图12说明数据序列数(分割数)d=4的情况。在图12中,将由两个不同的线性变换矩阵M1、M2执行线性变换的不同的两个F函数分别设为F1、F2。
图12所示的Feistel结构是使用F函数F1、F2这两个F函数的d=4的扩展Feistel结构的类型2。即,是具有 (a)数据分割数4 (b)输入输出数据长度4mn比特 (c)分割数据长度mn比特 (d)每一个循环的F函数的数量4/2=2 的结构。
在该图12所示的结构的情况下,为了使用两个F函数满足DSM条件而考虑几种配置。即,为了满足DSM条件,如上所述那样,只要满足设定为多个不同的矩阵等条件即可,并不特别限定在各循环中并行执行的F函数,其中,上述多个不同的矩阵满足以下条件从根据线性变换矩阵而算出的与数据序列对应的最小分支数[BkD(s(i))]中选择的全部数据序列中的最小分支数[BkD]为3以上,其中,所述线性变换矩阵包含在对各数据序列s(i)进行输入的连续的k个(其中,k为2以上的整数)F函数中。
因而,作为F函数的设定方式, (a)将设定在一个循环中的多个F函数设为相同的F函数的设定、 (b)将设定在一个循环中的多个F函数设为不同的F函数的设定 能够设定为上述两种方式。
在此,如图12所示,采用如下结构选择在一个循环中存在的两个F函数使得相互成为F1、F2。在以一个循环的处理为基础进行硬件(H/W)安装的情况下,该结构的优点表现得明显。
即,作为硬件(H/W)安装,设定具有仅能够执行一个循环的处理的结构、即如图13所示那样能够并行地执行F函数F1和函数F2的结构的硬件。图13是表示具有执行基于图12所示的扩展Feistel结构的密码处理的硬件结构的密码处理装置250的框图。
密码处理装置250由执行F函数F1的第一F函数(F1)专用处理电路251、执行F函数F2的第二F函数(F2)专用处理电路252、控制电路253以及辅助电路254构成。第一F函数(F1)专用处理电路251和第二F函数(F2)专用处理电路252是能够并行地进行动作的结构,在各循环中,应用这两个电路执行基于两个不同的F函数的数据变换。
控制电路253执行对各F函数专用处理电路251、252以及辅助电路254的输入输出数据的控制。辅助电路254执行F函数以外的运算处理等。
通过应用该结构,应用第一F函数(F1)专用处理电路251、第二F函数(F2)专用处理电路252能够进行仅所需的循环数的循环运算。在所有的循环中并行地执行两个F函数专用电路,能够实现没有设置多余的电路的安装。
如图12所示,在各循环中并行地执行的F函数是两个的情况下,通过将这两个F函数设定为不同的F函数,利用图13所示的硬件安装,能够进行所有的循环运算。顺便提及,在设为在一个循环中执行的F函数相同的设定、例如在第一循环中并行地执行F1、F1,在第二循环中执行F2、F2的结构的情况下,作为硬件,需要设置F1执行电路和F2执行电路各两个,与图13所示的结构相比,需要增大电路规模。
通过如图12所示那样将在各循环中执行的F函数的组合全部设定为F1、F2,应用图13所示的硬件,能够在各循环中始终同时执行F1、F2,不会产生多余的电路,而实现减小电路规模的小型装置。
图12所示的结构是数据序列d=4的情况,但是在其它数据序列数的情况下,通过设为同样的设定,也能够实现有效的安装。例如在数据序列数d=8的情况下,设为如下结构在一个循环中设定4个F函数,将该4个F函数设定为两个不同的F函数F1、F2各两个。
这种情况下的安装结构设为如下结构设置F函数F1、F2各两个,能够并行地执行4个F函数(F1、F1、F2、F2)。通过该结构,能够在所有的循环中并行地执行全部4个F函数,实现没有设置多余的电路的安装。
另外,在数据序列数d=16的情况下,将在一个循环中存在的8个F函数设定为F1、F2各四个。并且,一般化为在数据序列数d=4x的情况下在各循环中利用F函数F1、F2各x个的结构,作为硬件安装,如果设为设定F函数F1、F2各x个的结构,则由于在每个循环中需要的F1、F2的个数相同,因此不会过多或过少地执行F函数,能够提高安装效率。
上述的处理例是为了满足扩散矩阵切换机构(DSM)而设定了应用两个线性变换矩阵的两个不同的F函数的例子,但是即使在使用三种以上的线性变换矩阵来设定三种以上的F函数的情况下也可以说是相同的。
图14示出用于有效安装三种F函数的配置例。图14是数据序列数d=6的扩展Feistel的类型2的结构例。在该图14所示的结构中,进行设定使其成为在一个循环中存在的三个F函数一定利用F1、F2、F3各一个的结构。
通过该结构,在硬件(H/W)安装时仅安装F1、F2、F3各一个,就能够成为在各循环中并行地执行F函数的结构,从H/W方面来看实现没有多余的电路的电路结构。
并且,在数据序列数d=12的情况下,将在一个循环中存在的6个F函数设定为F1、F2、F3各两个。另外,在数据序列数d=18的情况下,关于在一个循环中设定的9个F函数,设定为F1、F2、F3各三个。将它们一般化为在数据序列数d=6x的情况下将在各循环中设定的F函数设定为F1、F2、F3各x个。即,设为在各循环中均等地利用不同的F函数的结构。
通过设为这种F函数的设定结构,能够将每个循环中需要的F1、F2、F3的个数设定为相同的数量,在硬件安装中能够设定不会过多或者过少地利用的电路,能够提高安装效率。在软件的情况下,也由于用于获取输入输出值的表的利用方式在各循环中相同,因此不用构成设想各种模式的表,而能够设定与一个利用方式相应的表并保存到存储器中。
当将上述各处理例进一步一般化时,如下所述。
(1)在构成利用了a种F函数的Type2的扩展Feistel结构的情况下,通过设为如下结构能够提高安装效率当设数据序列数(分割数)d=2ax、其中a为2以上的整数、x为1以上的整数时,均等地设定全部种类的F函数各x个作为在一个循环内设定的ax个F函数。
此外,在上述F函数的设定中,通过将对各数据序列进行输入的F函数的设定设为满足上述DSM条件的设定,能够维持抵抗性。
(7-2.Feistel结构与扩展Feistel结构中的部件的共用化) 如上所述,通过对目前为止所说明的Feistel结构、扩展Feistel的类型1、扩展Feistel的类型2中的任一个利用DSM机构,而具有提高对攻击的抵抗性的优点。
即,将Feistel结构大致分类为 (a)设为数据序列数(分割数)d=2的Feistel结构 (b)设为数据序列数(分割数)d≥2的任意数的扩展Feistel结构, 并且,扩展Feistel结构为 (b1)在各循环中仅允许执行一个F函数的类型1、 (b2)在各循环中允许并行执行多个F函数的类型2, 从而,能够将Feistel结构分类为(a)、(b1)、(b2)这三种。
在这三种Feistel结构的任一种中都通过应用DSM机构实现抵抗性的提高。
为了应用DSM机构,需要安装执行至少两个以上不同的线性变换矩阵的不同的F函数,但是,通过具有该不同的多个F函数的安装结构,能够实现可选择性地执行上述多个不同的Feistel结构(a)、(b1)、(b2)的装置。下面说明执行这种选择处理的装置结构。
决定执行满足扩散矩阵切换机构(DSM)的线性变换矩阵的多个不同的F函数,将这些各F函数中的输入输出数据的数据大小设为mn比特。通过应用这种F函数,例如在如图15所示的数据序列d=2的Feistel结构中执行2mn比特的块密码。
图15所示的数据序列d=2的Feistel结构的各F函数F1、F2的输入输出数据大小是mn比特。该数据序列d=2的Feistel结构进行将2mn比特的明文转换为2mn比特的密文的处理、或者与其相反的解密处理,执行2mn比特的块密码。
另外,通过利用该图15所示的输入输出数据大小为mn比特的F函数F1、F2,能够构成满足扩散矩阵切换机构(DSM)的数据序列数d=4的扩展Feistel结构。图16示出该结构。
图16所示的数据序列d=4的扩展Feistel结构的各F函数F1、F2是输入输出数据大小为mn比特、按原样应用图15所示的F函数F1、F2的F函数。该数据序列d=4的扩展Feistel结构进行将4mn比特的明文转换为4mn比特的密文的处理、或者与其相反的解密处理,执行4mn比特的块密码。
并且,一般化为在设为数据序列数d=x、其中x为2以上的整数的情况下,能够使用相同的F函数执行结构来构建执行xmn比特的加密或者解密处理的块密码结构。
例如,仅使用输入输出比特为64比特的不同的F函数F1、F2,就能够构成可选择性地执行实现DSM机构的输入输出128比特块密码处理和256比特块密码处理。
即,安装输入输出比特为64比特的不同的两个F函数F1、F2作为F函数,并控制它们的利用方式。例如,在执行基于设为数据序列数d=2的Feistel结构(图15)的密码处理的情况下,设为在各循环中执行各F函数F1、F2之一的结构。另一方面,在执行基于设为数据序列数d=4的扩展Feistel结构(图16)的密码处理的情况下,设为在各循环中并行地执行各F函数F1、F2的结构。这样,通过安装两种F函数,实现能够选择性地执行输入输出128比特块密码和256比特块密码的装置。即,通过使用相同的F函数、改变连接方法,能够执行不同比特数的块密码,在S/W、H/W两者中能够期望通过电路、代码的共享等来提高安装效率。
图17示出具有这种结构的密码处理装置的结构例。图17所示的密码处理装置270由执行F函数F1的第一F函数(F1)专用处理电路271、执行F函数F2的第二F函数(F2)专用处理电路272、控制电路273以及辅助电路274构成。第一F函数(F1)专用处理电路271和第二F函数(F2)专用处理电路272是能够并行地进行动作的结构。控制电路273对各处理部进行数据输入输出控制,并且执行Feistel结构选择处理。辅助电路254执行F函数以外的运算处理等。
作为Feistel结构选择处理,控制电路273选择执行基于以下的任一个结构的密码处理 (a)设为数据序列数(分割数)d=2的Feistel结构 (b1)是设为数据序列数(分割数)d≥2的任意数的扩展Feistel结构,在各循环中仅允许执行一个F函数的类型1、 (b2)是设为数据序列数(分割数)d≥2的任意数的扩展Feistel结构,在各循环中允许并行执行多个F函数的类型2。
此外,例如从外部输入设定信息。或者也可以设为根据成为加密或解密处理的对象的数据的比特长度来选择要执行的处理方式的结构。控制电路273进行根据选择变更各F函数专用电路的应用顺序,执行按照各Feistel结构的循环函数的控制。
通过应用该结构,应用第一F函数(F1)专用处理电路251和第二F函数(F2)专用处理电路252能够进行应用了各种Feistel结构的密码处理,能够执行加密处理或解密处理的处理比特不同的对应各种比特的密码处理。
另外,图17示出具有两个F函数的例子,但是并不限于使用两个F函数的例子,在使用任意个数的F函数的结构中也能够期望得到同样的效果。例如,在之前参照图14所说明的扩展Feistel结构中,应用三个不同的F函数F1、F2、F3构成满足扩散矩阵切换机构(DSM)的数据序列数d=6的扩展Feistel结构。能够应用与其相同的三种F函数F1、F2、F3的F函数来构建图18所示的具有数据序列d=2的Feistel结构的密码处理结构。在该数据序列d=2的结构中,也利用满足DSM机构的设定来配置各矩阵F1、F2、F3。
图19示出执行这样的三种F函数F1、F2、F3的密码处理装置的结构例。图19所示的密码处理装置280由执行F函数F1的第一F函数(F1)专用处理电路281、执行F函数F2的第二F函数(F2)专用处理电路282、执行F函数F3的第三F函数(F3)专用处理电路283、控制电路284以及辅助电路275构成。第一F函数(F1)专用处理电路281、第二F函数(F2)专用处理电路282以及第三F函数(F3)专用处理电路283是能够并行地进行动作的结构。控制电路284对各处理部进行数据输入输出控制,并且执行Feistel结构选择处理。辅助电路285执行F函数以外的运算处理等。
作为Feistel结构选择处理,控制电路284选择执行基于以下的任一个结构的密码处理 (a)设为数据序列数(分割数)d=2的Feistel结构 (b1)是设为数据序列数(分割数)d≥2的任意数的扩展Feistel结构,在各循环中仅允许执行一个F函数的类型1、 (b2)是设为数据序列数(分割数)d≥2的任意数的扩展Feistel结构,在各循环中允许并行执行多个F函数的类型2。
此外,例如从外部输入设定信息。控制电路284进行根据设定变更各F函数专用电路的应用顺序,执行按照各Feistel结构的循环函数的控制。
通过应用该结构,应用第一F函数(F1)专用处理电路281~第三F函数(F3)专用处理电路283能够进行应用了各种Feistel结构的密码处理,能够执行加密处理或解密处理的处理比特不同的对应各种比特的密码处理。此外,也可以是具有4个以上F函数执行部的结构。
如上所述,决定执行满足扩散矩阵切换机构(DSM)的线性变换矩阵的多个不同的F函数,安装这些各F函数,变更应用了F函数的处理顺序,由此实现选择性地执行基于以下任一个结构的密码处理的结构,并实现能够变更加密处理或解密处理中的处理比特数的装置, (a)设为数据序列数(分割数)d=2的Feistel结构 (b1)是设为数据序列数(分割数)d≥2的任意数的扩展Feistel结构,在各循环中仅允许执行一个F函数的类型1、 (b2)是设为数据序列数(分割数)d≥2的任意数的扩展Feistel结构,在各循环中允许并行执行多个F函数的类型2。
例如,通过构成a种(a为2以上的整数)F函数、执行基于上述三种Feistel结构的密码处理、并且满足扩散矩阵切换机构(DSM)的处理结构,能够进行抵抗性较高的密码处理。
[8.本发明的密码处理以及密码算法构建处理的归纳] 最后统一说明上述的本发明的密码处理以及密码算法构建处理。
如参照图1、图2所说明的那样,本发明的密码处理装置具有密码处理部,该密码处理部执行将SP型F函数反复多次循环的Feistel型共用密钥块密码处理,其中,上述SP型F函数执行包括非线性变换处理和线性变换处理的数据变换处理。并且,如参照图5之后的图所说明的那样,密码处理部是执行应用了将数据序列数d设为d≥2的整数的扩展Feistel结构的密码处理的结构,具有在各循环的F函数中执行的线性变换处理中选择性地应用至少两个以上的多个不同的矩阵的结构。
设定这些两个以上的多个不同的矩阵使其实现扩散矩阵切换机构(DSMDiffusion Switching Mechanism),通过DSM实现提高对差分攻击、线性攻击的抵抗性的密码处理。为了通过该DSM实现提高抵抗性,按照特定的条件进行矩阵的选择、配置。
即,作为在F函数中执行的线性变换处理所应用的多个矩阵,选择满足条件的多个不同的矩阵,在对扩展Feistel结构的各数据序列进行输入的F函数中反复配置这些多个不同的矩阵,其中,上述条件为从基于对扩展Feistel结构的各数据序列进行输入的F函数所包含的线性变换矩阵的与数据序列对应的最小分支数中选择的全部数据序列中的最小分支数为预先决定的值以上。
并且,具体地说,在密码处理部中利用的多个不同的矩阵是满足如下条件的多个不同的矩阵从根据线性变换矩阵而算出的与数据序列对应的最小分支数[BkD(s(i))]中选择的全部数据序列中的最小分支数[BkD]为3以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列s(i)进行输入的连续的k个(其中,k为2以上的整数)F函数中。
或者,是满足如下条件的多个不同的矩阵从根据线性变换矩阵而算出的与数据序列对应的最小分支数[B2L(s(i))]中选择的全部数据序列中的最小分支数[B2L]为3以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列s(i)进行输入的连续的两个F函数中。
本发明的密码处理装置的密码处理部具有如下结构在将这些多个不同的矩阵设为n个(其中,n为2以上的整数)不同的矩阵M0、M1、··Mn-1时,在对扩展Feistel结构的各数据序列进行输入的F函数中依次反复配置这些矩阵。作为具体的扩展Feistel结构的例子,例如具有参照图8、图10所说明的在一个循环中仅执行一个F函数的类型1的扩展Feistel结构、参照图9、图11所说明的在一个循环中并行地执行多个F函数的扩展Feistel结构。
此外,本发明包括执行应用了这种扩展Feistel结构的密码处理的密码处理装置和方法、以及执行密码处理的计算机程序,还包括构建用于执行应用了上述扩展Feistel结构的密码处理的密码处理算法的信息处理装置、方法以及计算机程序。
构建密码处理算法的信息处理装置例如能够应用一般的PC等信息处理装置,具有能够执行以下处理步骤的控制部。即, 矩阵决定步骤,在应用了将数据序列数d设为d≥2的整数的扩展Feistel结构的密码处理算法的结构中,决定在各循环的F函数中执行的线性变换处理中应用的至少两个以上的多个不同的矩阵;以及 矩阵设定步骤,在对扩展Feistel结构的各数据序列进行输入的F函数中反复配置在矩阵决定步骤中决定的多个不同的矩阵。
上述矩阵决定步骤作为执行如下处理的步骤而被执行作为两个以上的多个不同的矩阵,将满足从基于线性变换矩阵的与数据序列对应的最小分支数中选择的全部数据序列中的最小分支数为预先决定的值以上的条件的多个不同的矩阵决定为应用矩阵,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列进行输入的F函数中。
在应用了通过这种处理算法设定的扩展Feistel结构的密码处理中,实现扩散矩阵切换机构(DSMDiffusion SwitchingMechanism),通过DSM实现提高对差分攻击、线性攻击的抵抗性的密码处理。
[9.密码处理装置的结构例] 最后,在图20中示出了作为执行按照上述实施例的密码处理的密码处理装置的IC模块300的结构例。能够在例如PC、IC卡、读写器、其它各种信息处理装置中执行上述处理,图20所示的IC模块300能够构成在这些各种设备中。
图20所示的CPU(Central processing Unit中央处理单元)301是执行密码处理的开始、结束、数据的发送和接收的控制、各结构部之间的数据传输控制、其它各种程序的处理器。存储器302由ROM(Read-Only-Memory只读存储器)、RAM(Random Access Memory随机存取存储器)等构成,其中,上述ROM保存由CPU 301所执行的程序、或运算参数等固定数据,上述RAM作为在CPU 301的处理中执行的程序以及在程序处理中适当变化的参数的保存区域、工作区域而使用。另外,存储器302能够作为密码处理所需的密钥数据、在密码处理中应用的变换表(置换表)、在变换矩阵中应用的数据等的保存区域而使用。此外,数据保存区域优选构成为具有耐短波结构的存储器。
密码处理部303例如执行按照上述Feistel型共用密钥块密码处理算法的密码处理、解密处理。此外,在此示出了将密码处理单元设为单独模块的例子,但是也可以构成为不设置这种独立的密码处理模块,例如将密码处理程序保存在ROM中,由CPU 301读出ROM保存程序来执行。
随机数产生器304执行在密码处理所需的密钥的生成等中所必需的随机数的产生处理。
发送接收部305是执行与外部的数据通信的数据通信处理部,例如执行与读写器等IC模块之间的数据通信,执行在IC模块内生成的密文的输出、或者来自外部读写器等设备的数据输入等。
该IC模块300例如按照上述实施例执行将数据序列数d设为d≥2的整数的扩展Feistel型密码处理。按照上述实施例的方式设定不同的线性变换矩阵作为扩展Feistel结构中的F函数的线性变换矩阵,由此实现扩散矩阵切换机构(DSMDiffusionSwitching Mechanism),能够提高对差分攻击、线性攻击的抵抗性。
以上,参照特定的实施例详细说明了本发明。然而,显然在不脱离本发明的要旨的范围内,本领域技术人员可进行该实施例的修改、代用。即,以例示的形式公开了本发明,但不是限定性地解释本发明。为了判断本发明的要旨,应该参考权利要求书的范围一栏。
此外,在说明书中说明的一系列处理能够通过硬件、或软件、或两者的复合结构来执行。在通过软件执行处理的情况下,能够将记录了处理顺序的程序安装到嵌入在专用硬件中的计算机内的存储器中来执行、或将程序安装到可执行各种处理的通用计算机中来执行。
例如,可将程序预先记录在作为记录介质的硬盘、ROM(Read Only Memory)中。或者,可将程序暂时或永久性地保存(记录)在软盘、CD-ROM(Compact Disc Read Only Memory光盘只读存储器)、MO(Magneto optical磁光)盘、DVD(DigitalVersatile Disc数字多功能光盘)、磁盘、半导体存储器等可移动记录介质中。可将这种可移动记录介质作为所谓的封装软件进行提供。
此外,程序除了从如上所述的可移动记录介质安装到计算机之外,还能够从下载站点无线传送到计算机、或通过称为LAN(Local Area Nerwork局域网)、因特网的网络而有线传送到计算机,在计算机中接收这样传送来的程序并安装到内置的硬盘等记录介质中。
此外,不仅按照记载以时间序列执行,也可以根据执行处理的装置的处理能力或需要来并行或单独地执行说明书中记载的各种处理。另外,在本说明书中系统是多个装置的逻辑集合结构,并不限于各结构的装置在同一壳体内。
产业上的可利用性 如上所述,根据本发明的一个实施例的结构,在反复多个循环执行具有非线性变换部和线性变换部的SPN型F函数的Feistel型共用密钥块密码处理中,在扩展具有两个数据序列的Feistel结构得到的Feistel结构、即具有例如三个、四个等两个以上的任意的数据序列的扩展型Feistel结构中,通过设定应用了多个不同的线性变换矩阵的循环函数部来实现扩散矩阵切换机构(DSM),能够构建对线性分析、差分分析的抵抗性较高的共用密钥块密码算法以及执行密码处理。
根据本发明的一个实施例的结构,在执行应用了将数据序列数d设为d≥2的整数的扩展Feistel结构的密码处理的结构中,具有在各循环的F函数中执行的线性变换处理中选择性地应用至少两个以上的多个不同的矩阵的结构,作为两个以上的多个不同的矩阵,设定为满足从基于包含在对扩展Feistel结构的各数据序列进行输入的F函数中的线性变换矩阵的与数据序列对应的最小分支数中选择的全部数据序列中的最小分支数为预先决定的值以上的条件的多个不同的矩阵,由此实现扩散矩阵切换机构(DSM),能够构建对线性分析、差分分析的抵抗性较高的共用密钥块密码算法以及执行密码处理。
并且,根据本发明的一个实施例的结构,执行应用了数据序列数d=2ax的扩展Feistel结构(x≥1)的密码处理的结构中,设为在一个循环中均等地执行所有种类(a种类)的F函数各x个的结构,因此实现没有设置多余的电路的小型的密码处理装置,其中,所述扩展Feistel结构利用了由多个不同的矩阵执行不同的线性变换处理的a(a≥2)种F函数。
并且,根据本发明的一个实施例的结构,构成由多个不同的矩阵执行不同的线性变换处理的多个F函数执行部,设为根据设定来变更多个F函数执行部的利用顺序的结构,由此实现能够选择性地执行(a)、(b1)、(b2)中的任一个的密码处理的密码处理装置,其中,上述(a)、(b1)、(b2)为 (a)通过设为数据序列数d=2的Feistel结构进行的密码处理、或者 (b1)是设为数据序列数d≥2的任意数的扩展Feistel结构,在各循环中仅允许执行一个F函数的密码处理、或者 (b2)是设为数据序列数d≥2的任意数的扩展Feistel结构,在各循环中允许并行执行多个F函数的密码处理。
权利要求
1.一种密码处理装置,其特征在于,
具有密码处理部,该密码处理部执行将SP型F函数反复多次循环的Feistel型共用密钥块密码处理,其中,上述SP型F函数执行包括非线性变换处理和线性变换处理的数据变换处理,
上述密码处理部是执行应用了将数据序列数d设为d≥2的整数的扩展Feistel结构的密码处理的结构,具有在各循环的F函数中执行的线性变换处理中选择性地应用至少两个以上的多个不同的矩阵的结构,
其中,上述两个以上的多个不同的矩阵是满足以下条件的多个不同的矩阵从基于线性变换矩阵的与数据序列对应的最小分支数中选择的全部数据序列中的最小分支数为预先决定的值以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列进行输入的F函数中,
具有在对扩展Feistel结构的各数据序列进行输入的F函数中反复配置上述多个不同的矩阵的结构。
2.根据权利要求1所述的密码处理装置,其特征在于,
在上述密码处理部中利用的上述多个不同的矩阵是满足以下条件的多个不同的矩阵从根据线性变换矩阵而算出的与数据序列对应的最小分支数[BkD(s(i))]中选择的全部数据序列中的最小分支数[BkD]为3以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列s(i)进行输入的连续的k个(其中,k为2以上的整数)的F函数中。
3.根据权利要求1所述的密码处理装置,其特征在于,
在上述密码处理部中利用的上述多个不同的矩阵是满足以下条件的多个不同的矩阵从根据线性变换矩阵而算出的与数据序列对应的最小分支数[B2D(s(i))]中选择的全部数据序列中的最小分支数[B2D]为3以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列s(i)进行输入的连续的两个F函数中。
4.根据权利要求1所述的密码处理装置,其特征在于,
在上述密码处理部中利用的上述多个不同的矩阵是满足以下条件的多个不同的矩阵从根据线性变换矩阵而算出的与数据序列对应的最小分支数[B2L(s(i))]中选择的全部数据序列中的最小分支数[B2L]为3以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列s(i)进行输入的连续的两个F函数中。
5.根据权利要求1所述的密码处理装置,其特征在于,
上述密码处理部具有如下结构
当将上述多个不同的矩阵设为n个(其中,n为2以上的整数)不同的矩阵M0、M1、··Mn-1时,
在对扩展Feistel结构的各数据序列进行输入的F函数中依次反复配置这些不同的矩阵M0、M1、··Mn-1。
6.根据权利要求1~5中的任一项所述的密码处理装置,其特征在于,
上述密码处理部是执行应用了在一个循环中仅执行一个F函数的扩展Feistel结构的密码处理的结构。
7.根据权利要求1~5中的任一项所述的密码处理装置,其特征在于,
上述密码处理部是执行应用了在一个循环中并行地执行多个F函数的扩展Feistel结构的密码处理的结构。
8.根据权利要求1~5中的任一项所述的密码处理装置,其特征在于,
上述密码处理部是如下结构
在设为a≥2的任意的整数、x≥1的任意的整数时,执行应用了数据序列数d=2ax的扩展Feistel结构的密码处理,其中,所述扩展Feistel结构利用了由上述多个不同的矩阵执行不同的线性变换处理的a种F函数,
在一个循环中均等地执行所有种类(a种类)的F函数各x个。
9.根据权利要求8所述的密码处理装置,其特征在于,
上述密码处理部具备
F函数执行部,其执行在一个循环中并行地执行的ax个F函数;以及
控制部,其执行对上述F函数执行部的数据输入输出控制。
10.根据权利要求1~5中的任一项所述的密码处理装置,其特征在于,
上述密码处理部具备
多个F函数执行部,其利用上述多个不同的矩阵执行不同的线性变换处理;以及
控制部,其根据设定而变更上述多个F函数执行部的利用顺序,
其中,上述控制部是选择性地执行(a)、(b1)、(b2)中的任一个的密码处理的结构,其中,上述(a)、(b1)、(b2)为
(a)通过设为数据序列数d=2的Feistel结构进行的密码处理、或者
(b1)是设为数据序列数d≥2的任意数的扩展Feistel结构,在各循环中仅允许执行一个F函数的密码处理、或者
(b2)是设为数据序列数d≥2的任意数的扩展Feistel结构,在各循环中允许并行执行多个F函数的密码处理。
11.根据权利要求10所述的密码处理装置,其特征在于,
上述控制部是根据成为加密或解密处理的对象的数据的比特长度来选择要执行的处理方式的结构。
12.一种密码处理方法,在密码处理装置中执行密码处理,其特征在于,
具有密码处理步骤,在密码处理部中执行将SP型F函数反复多次循环的Feistel型共用密钥块密码处理,其中,上述SP型F函数执行包括非线性变换处理和线性变换处理的数据变换处理,
上述密码处理步骤是执行应用了将数据序列数d设为d≥2的整数的扩展Feistel结构的密码处理的步骤,具有运算步骤,在该运算步骤中,执行在各循环的F函数中执行的线性变换处理中选择性地应用了至少两个以上的多个不同的矩阵的运算,
在上述运算步骤中应用的多个不同的矩阵是满足以下条件的多个不同的矩阵从基于线性变换矩阵的与数据序列对应的最小分支数中选择的全部数据序列中的最小分支数为预先决定的值以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列进行输入的F函数中,
上述运算步骤是在对扩展Feistel结构的各数据序列进行输入的F函数中执行基于上述多个不同的矩阵的线性变换运算的步骤。
13.根据权利要求12所述的密码处理方法,其特征在于,
上述多个不同的矩阵是满足以下条件的多个不同的矩阵从根据线性变换矩阵而算出的与数据序列对应的最小分支数[BkD(s(i))]中选择的全部数据序列中的最小分支数[BkD]为3以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列s(i)进行输入的连续的k个(其中,k为2以上的整数)F函数中。
14.根据权利要求12所述的密码处理方法,其特征在于,
上述多个不同的矩阵是满足以下条件的多个不同的矩阵从根据线性变换矩阵而算出的与数据序列对应的最小分支数[B2D(s(i))]中选择的全部数据序列中的最小分支数[B2D]为3以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列s(i)进行输入的连续的两个F函数中。
15.根据权利要求12所述的密码处理方法,其特征在于,
上述多个不同的矩阵是满足以下条件的多个不同的矩阵从根据线性变换矩阵而算出的与数据序列对应的最小分支数[B2L(s(i))]中选择的全部数据序列中的最小分支数[B2L]为3以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列s(i)进行输入的连续的两个F函数中。
16.根据权利要求12所述的密码处理方法,其特征在于,
在将上述多个不同的矩阵设为n个(其中,n为2以上的整数)不同的矩阵M0、M1、··Mn-1时,
上述运算步骤是在对扩展Feistel结构的各数据序列进行输入的F函数中依次反复执行这些不同的矩阵M0、M1、··Mn-1的步骤。
17.根据权利要求12~16中的任一项所述的密码处理方法,其特征在于,
上述密码处理步骤是执行应用了在一个循环中仅执行一个F函数的扩展Feistel结构的密码处理的步骤。
18.根据权利要求12~16中的任一项所述的密码处理方法,其特征在于,
上述密码处理步骤是执行应用了在一个循环中并行地执行多个F函数的扩展Feistel结构的密码处理的步骤。
19.根据权利要求12~16中的任一项所述的密码处理方法,其特征在于,
上述密码处理步骤是如下的步骤
在设为a≥2的任意的整数、x≥1的任意的整数时,执行应用了数据序列数d=2ax的扩展Feistel结构的密码处理,其中所述扩展Feistel结构利用了由上述多个不同的矩阵执行不同的线性变换处理的a种F函数,
在一个循环中均等地执行所有种类(a种类)的F函数各x个。
20.根据权利要求19所述的密码处理方法,其特征在于,
上述密码处理步骤是应用F函数执行部,按照控制部的控制来执行密码处理的步骤,其中,上述F函数执行部执行在一个循环中并行地执行的ax个F函数,上述控制部执行对上述F函数执行部的数据输入输出控制。
21.根据权利要求12~16中的任一项所述的密码处理方法,其特征在于,
在上述密码处理步骤中,
利用由上述多个不同的矩阵执行不同的线性变换处理的多个F函数执行部和根据设定而变更上述多个F函数执行部的利用顺序的控制部来执行密码处理,通过上述控制部的控制,选择性地执行(a)、(b1)、(b2)中的任一个的密码处理,其中,上述(a)、(b1)、(b2)为
(a)通过设为数据序列数d=2的Feistel结构进行的密码处理、或者
(b1)是设为数据序列数d≥2的任意数的扩展Feistel结构,在各循环中仅允许执行一个F函数的密码处理、或者
(b2)是设为数据序列数d≥2的任意数的扩展Feistel结构,在各循环中允许并行执行多个F函数的密码处理。
22.根据权利要求21所述的密码处理方法,其特征在于,
上述控制部根据成为加密或解密处理的对象的数据的比特长度来选择要执行的处理方式。
23.一种密码处理算法构建方法,在信息处理装置中构建密码处理算法,其特征在于,具有以下步骤
矩阵决定步骤,在应用了将数据序列数d设为d≥2的整数的扩展Feistel结构的密码处理算法的结构中,信息处理装置中的控制部决定在各循环的F函数中执行的线性变换处理中应用的至少两个以上的多个不同的矩阵;以及
矩阵设定步骤,上述控制部在对扩展Feistel结构的各数据序列进行输入的F函数中反复配置在上述矩阵决定步骤中决定的多个不同的矩阵,
其中,上述矩阵决定步骤是执行以下处理的步骤作为上述两个以上的多个不同的矩阵,将满足从基于线性变换矩阵的与数据序列对应的最小分支数中选择的全部数据序列中的最小分支数为预先决定的值以上的条件的多个不同的矩阵决定为应用矩阵,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列进行输入的F函数中。
24.一种计算机程序,使密码处理装置执行密码处理,其特征在于,
具有密码处理步骤,使密码处理部执行将SP型F函数反复多个循环的Feistel型共用密钥块密码处理,其中,上述SP型F函数执行包括非线性变换处理和线性变换处理的数据变换处理,
上述密码处理步骤是执行应用了将数据序列数d设为d≥2的整数的扩展Feistel结构的密码处理的步骤,包括运算步骤,在该运算步骤中,执行在各循环的F函数中执行的线性变换处理中选择性地应用了至少两个以上的多个不同的矩阵的运算,
在上述运算步骤中应用的多个不同的矩阵是满足以下条件的多个不同的矩阵从基于线性变换矩阵的与数据序列对应的最小分支数中选择的全部数据序列中的最小分支数为预先决定的值以上,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列进行输入的F函数中,
上述运算步骤是在对扩展Feistel结构的各数据序列进行输入的F函数中执行基于上述多个不同的矩阵的线性变换运算的步骤。
25.一种计算机程序,在信息处理装置中构建密码处理算法,其特征在于,具有以下步骤
矩阵决定步骤,在应用了将数据序列数d设为d≥2的整数的扩展Feistel结构的密码处理算法的结构中,使信息处理装置中的控制部决定在各循环的F函数中执行的线性变换处理中应用的至少两个以上的多个不同的矩阵;以及
矩阵设定步骤,使上述控制部在对扩展Feistel结构的各数据序列进行输入的F函数中反复配置在上述矩阵决定步骤中决定的多个不同的矩阵,
其中,上述矩阵决定步骤是执行以下处理的步骤作为上述两个以上的多个不同的矩阵,将满足从基于线性变换矩阵的与数据序列对应的最小分支数中选择的全部数据序列中的最小分支数为预先决定的值以上的条件的多个不同的矩阵决定为应用矩阵,其中,上述线性变换矩阵包含在对扩展Feistel结构的各数据序列进行输入的F函数中。
全文摘要
实现应用了扩散矩阵切换机构(DSM)的扩展Feistel型共用密钥块密码处理结构。在应用了将数据序列数d设为d≥2的整数的扩展Feistel结构的密码处理结构中,在F函数部的线性变换处理中选择性地应用多个不同的多个矩阵。作为矩阵,选择满足从基于线性变换矩阵的与数据序列对应的最小分支数中选择的全部数据序列中的最小分支数为预先决定的值以上的条件的多个不同的矩阵,其中上述线性变换矩阵包含在输入到扩展Feistel结构的各数据序列的F函数中。根据本发明,实现对基于DSM的线性分析、差分分析的抵抗性较高的共用密钥块密码。
文档编号G09C1/00GK101496080SQ20078002805
公开日2009年7月29日 申请日期2007年7月17日 优先权日2006年7月28日
发明者白井太三, 涩谷香士 申请人:索尼株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1