加密处理装置、加密处理方法和程序的制作方法

文档序号:7989278阅读:277来源:国知局
加密处理装置、加密处理方法和程序的制作方法
【专利摘要】为了实现具有改进扩散特性的极度安全的加密处理,本发明的一方面包括加密处理单元,该加密处理单元将要进行数据处理的数据的组成位划分成多行并输入,然后对各行数据重复执行使用回合函数的数据转换处理。在加密处理单元中,将n/d位数据输入到各行,所述n/d位数据是将作为输入数据的n位数据以划分数(d)划分而获得的,并且重复执行包括使用回合函数的数据转换处理的计算作为回合计算。以d/2个单位对具有回合函数的行的输出数据的n/d位数据进行划分,对划分的数据进行组合,对d组n/d位数据进行重构,所述数据与先前阶段的回合计算的输出数据不同,并且执行得到下一阶段的回合计算的输入数据的处理。由于该配置,可以实现具有改进扩散特性的极度安全的加密处理。
【专利说明】加密处理装置、加密处理方法和程序
【技术领域】
[0001]本公开涉及加密处理装置、加密处理方法和程序。更具体地,本公开涉及包括对称密钥加密术的加密处理装置、加密处理方法和程序。
【背景技术】
[0002]随着面向信息社会的发展,用于保证正处理的信息的安全的信息安全技术的重要性变得更高。信息安全技术的要素之一是加密技术,并且加密技术当前用在各种产品和系统中。
[0003]存在各种加密处理算法,并且基本技术之一是所谓的对称密钥块加密术。在对称密钥块加密术中,用于加密的密钥和用于解密的密钥是相同的。在加密操作和解密操作中,根据共同密钥来生成密钥,并且重复执行具有特定块数据单位(诸如64位、128位或256位)的数据转换操作。
[0004]广泛公知的对称密钥块加密算法包括作为美国的先前标准的DES (数据加密标准)和作为美国的当前标准的AES (高级加密标准)。当今仍正提出其它各种对称密钥块加密技术,并且由索尼公司在2007年提出的CLEFIA也是对称密钥块加密技术之一。
[0005]这样的对称密钥块加密算法主要由加密处理单元来构成,该加密处理单元具有:回合函数执行单元,重复地对输入数据进行转换;以及密钥安排单元,生成要在各个回合的回合函数单元中使用的回合密钥。密钥安排单元首先基于作为秘密密钥的主密钥(主要密钥)而生成具有增加位数的扩大密钥,然后基于所生成的扩大密钥而生成要在加密处理单元的各个回合函数单元中使用的回合密钥(副密钥)。
[0006]作为执行这样的算法的具体结构,存在重复地执行包括线性转换单元和非线性转换单元的回合函数的已知结构。典型的示例结构包括Feistel结构和一般化Feistel结构。Feistel结构和一般化Feistel结构均具有如下结构:其通过简单重复包括作为数据转换函数的F函数的回合函数而将明文转换为密文。在每个F函数中,执行线性转换和非线性转换。非专利文献I和非专利文献2是公开使用Feistel结构的加密处理的文献示例。
[0007]评估块加密的安全性时所使用的指示之一是扩散特性。该特性可以被视为将输入数据改变扩展(扩散)至输出数据的特性,并且在安全块加密中,期望输入数据的这种改变的影响尽可能块地被传送到输出数据。
[0008]可以预测,为了改进扩散特性,例如,回合函数重复次数的增加将是有效的。然而,没有公开用于以较小的回合函数重复次数来改进扩散特性的传统技术。
[0009]引用列表
[0010]非专利文献
[0011]非专利文献1:K.Nyberg, “Generalized Feistel networks,,,ASIACRYPT 96, SpringerVerlag, 1996,pp.91—104.[0012]非专利文献2:Yuliang Zheng, Tsutomu Matsumotoj Hideki Ima1:0n theConstruction of Block Ciphers Provably Secure and Not Relying on Any UnprovedHypotheses.CRYPTO 1989:461-480
【发明内容】

[0013]本发明要解决的问题
[0014]本公开是考虑到例如上述情形而做出的,并且其目的是提供具有改进扩散特性的、具有高安全性水平的加密处理装置、加密处理方法和程序。
[0015]问题的解决方案
[0016]本公开的第一方面在于一种加密处理装置,其包括:
[0017]加密处理单元,被配置成将要进行数据处理的数据的组成位划分成行并输入,并且对各行中的数据重复执行使用回合函数的数据转换操作,
[0018]其中,加密处理单元具有如下结构:该结构被设计成将通过以划分数d对作为输入数据的η位数据进行划分而形成的n/d位数据输入到各行,并且重复执行包括使用回合函数的数据转换操作的计算作为回合计算,以及
[0019]加密处理单元执行如下操作:在该操作中,将具有回合计算的输出数据的每行的n/d位数据再划分成d/2组数据,并且对再划分的数据进行重组以重构与先前阶段的回合计算的输出数据不同的d组n/d位数据,并且将重构的数据设置为下一阶段的回合计算的输入数据。
[0020]此外,在本公开的加密处理装置的实施例中,回合函数包括F函数和F函数的输出或输入与其它行的数据之间的异或运算,该F函数包括使用回合密钥的计算、非线性转换和线性转换。
[0021 ] 此外,在本公开的加密处理装置的实施例中,加密处理单元通过执行满足以下分配条件(I)至(3)的操作而将先前阶段的回合计算的结果设置为下一阶段的回合计算的输Λ:
[0022](I) F函数输入侧数据序列被不变地分配给下一回合函数的异或(XOR)侧数据序列,
[0023](2)X0R侧数据序列被不变地分配给下一回合计算的F函数输入侧数据序列,以及
[0024](3)被划分成d/2组的每一个数据序列被分配给下一回合函数的d/2个数据序列
而没有重叠。
[0025]此外,在本公开的加密处理装置的实施例中,加密处理单元具有输入数据的划分数d等于或大于4的一般化Feistel结构。
[0026]此外,在本公开的加密处理装置的实施例中,加密处理单元执行如下操作:在该操作中,通过将具有回合计算的输出数据的d行中的每行的n/d位数据再划分成d/2组数据而生成dX (n/d)组再划分数据,对选自与划分数d对应的d行当中的不同行的d/2组再划分数据进行重组以重构与先前阶段的回合计算的输出数据不同的d组n/d位数据,并且将重构的数据设置为下一阶段的回合计算的输入数据。
[0027]此外,在本公开的加密处理装置的实施例中,当所有输出位处于满足以下两个条件的扩散状态时,或者当输出位以关于输入位的关系式来表示时,加密处理单元具有实现了满足以下两个条件的完全扩散状态的结构:
[0028](条件I)所有输入位都包括在关系式中,以及[0029](条件2)所有输入位都已通过回合函数至少一次。
[0030]此外,在本公开的加密处理装置的实施例中,加密处理单元还通过四个回合的回合计算而实现完全扩散状态。
[0031]此外,在本公开的加密处理装置的实施例中,确定先前阶段的回合计算的输出数据与下一阶段的回合计算的再划分数据之间的输入-输出关系的连接结构是选自如下连接结构的连接结构:该连接结构以作为通过组合dX (n/d)组再划分数据而生成的数据的(d/2)组2n/d位数据为单位,所述dX (n/d)组再划分数据是通过对具有回合计算的输出数据的行中的n/d位数据执行再划分操作而生成的。
[0032]此外,在本公开的加密处理装置的实施例中,加密处理单元具有适用于加密操作和解密操作两者的对合(involution)特性。
[0033]此外,在本公开的加密处理装置的实施例中,用于在加密处理单元中对各个回合计算的再划分数据进行重构的操作包括:根据预定规则将先前阶段的回合函数输入侧序列的再划分数据分配给下一阶段的异或侧序列;以及根据预定规则将先前阶段的异或侧序列的再划分数据分配给下一阶段的回合函数输入侧序列。
[0034]此外,在本公开的加密处理装置的实施例中,加密处理单元执行用于将作为输入数据的明文转换为密文的加密操作或者用于将作为输入数据的密文转换为明文的解密操作。
[0035]此外,本公开的第二方面在于在加密处理装置中实现的加密处理方法,
[0036]该加密处理方法包括:
[0037]加密处理步骤,将要经受数据处理的数据的组成位划分成行并输入,并且对各行中的数据重复执行使用回合函数的数据转换操作,
[0038]其中,加密处理步骤包括:将通过以划分数d对作为输入数据的η位数据进行划分而形成的n/d位数据输入到各行;以及重复执行包括使用回合函数的数据转换操作的计算作为回合计算,以及
[0039]加密处理步骤包括如下操作:在该操作中,将具有回合计算的输出数据的每行的n/d位数据再划分成d/2组数据,对再划分的数据进行重组以重构与先前阶段的回合计算的输出数据不同的d组n/d位数据,并且将重构的数据设置为下一阶段的回合计算的输入数据。
[0040]此外,本公开的第三方面在于一种用于使得加密处理装置执行加密处理的程序,[0041 ] 该程序使得加密处理单元执行:
[0042]加密处理步骤,将要经受数据处理的数据的组成位划分成行并输入,并且对各行中的数据重复执行使用回合函数的数据转换操作,
[0043]其中,加密处理步骤包括:将通过以划分数d对作为输入数据的η位数据进行划分而形成的n/d位数据输入到各行;以及重复执行包括使用回合函数的数据转换操作的计算作为回合计算,以及
[0044]加密处理步骤包括如下操作:在该操作中,将具有回合计算的输出数据的每行的n/d位数据再划分成d/2组数据,对再划分的数据进行重组以重构与先前阶段的回合计算的输出数据不同的d组n/d位数据,并且将重构的数据设置为下一阶段的回合计算的输入数据。[0045]应注意,本公开的程序是记录在存储介质上然后被提供到例如可以执行各种程序代码的信息处理装置或计算机系统的程序。当信息处理装置或计算机系统中的程序执行单元执行这样的程序时,执行根据该程序的操作。
[0046]本公开的其它目的、特征和优点将根据以下结合稍后描述的本发明的实施例和附图的详细描述而变得明显。在该说明书中,系统是装置的逻辑集成,并且各个组成装置不一定位于同一壳体中。
[0047]本发明的效果
[0048]根据本公开的实施例,实现了具有改进的扩散特性和高安全性水平的加密处理。
[0049]具体地,加密处理单元将要经受数据处理的数据的组成位划分成行并输入,并且对各行的数据重复执行使用回合函数的数据转换操作。加密处理单元将通过以划分数d对作为输入数据的η位数据进行划分而获得的n/d位数据输入到各行,并且重复执行作为包括使用回合函数的数据转换操作的计算的回合计算。具有回合计算的输出数据的每行中的n/d位数据被划分成d/2组数据,并且划分的数据被组合以重构与先前阶段的回合计算的输出数据不同的d组n/d位数据。重构的数据被设置为下一阶段的回合计算的输入数据。利用该结构,可以实现具有改进的扩散特性和高安全性水平的加密处理。
【专利附图】

【附图说明】
[0050]图1是用于说明与k位的密钥长度兼容的η位对称密钥块加密算法的图。
[0051]图2是用于说明与图1所示的与k位的密钥长度兼容的η位对称密钥块加密算法对应的解密算法的图。
[0052]图3是用于说明密钥安排单元与数据加密单元之间的关系的图。
[0053]图4是用于说明数据加密单元的示例结构的图。
[0054]图5是用于说明具有SPN结构的回合函数的示例的图。
[0055]图6是用于说明具有Feistel结构的回合函数的示例的图。
[0056]图7是用于说明扩展Feistel结构的示例的图。
[0057]图8是用于说明扩展Feistel结构的示例的图。
[0058]图9是用于说明非线性转换单元的示例结构的图。
[0059]图10是用于说明线性转换处理单元的示例结构的图。
[0060]图11是用于说明具有Feistel结构的块加密中的扩散状态的图。
[0061]图12是用于说明具有Feistel结构的块加密中的扩散状态的图。
[0062]图13是用于说明在具有在一个阶段使用两个F函数的4行一般化Feistel结构的块加密中的扩散状态的图。
[0063]图14是用于说明在具有在一个阶段使用两个F函数的4行一般化Feistel结构的块加密中的扩散状态的图。
[0064]图15是用于说明在具有在一个阶段使用两个F函数的4行一般化Feistel结构的块加密中的扩散状态的图。
[0065]图16是用于说明在d是6的情况下的传统一般化Feistel结构的图。
[0066]图17是示出在d是6的情况下在传统一般化Feistel结构中实现完全扩散状态的路径不例的图。[0067]图18是用于说明在划分数d是6或更大的情况下通过改变回合间的线而使得完全扩散回合数比传统结构的完全扩散回合数小的示例结构的图。
[0068]图19是示出在划分数d是6或更大的情况下通过改变回合间的线而使得完全扩散回合数比传统结构的完全扩散回合数小的结构中实现完全扩散状态的路径示例的图。
[0069]图20是用于说明作为本公开的实施例的加密处理结构的图。
[0070]图21是用于说明作为本公开的实施例的d是4的示例情况的图。
[0071]图22示出了在d是4的情况下通过该方法实现完全扩散状态的路径的示例。
[0072]图23是用于说明作为本公开的实施例的d是6的示例情况的图。
[0073]图24示出了在d是6的情况下通过该方法实现完全扩散状态的路径的示例。
[0074]图25是示出在d是6的情况下以2来划分每组n/d位数据的示例结构的图。
[0075]图26是示出η位输入数据的划分数d、每组n/d位数据的划分数p和完全扩散回合数之间的关系的一部分的图。
[0076]图27是示出以彼此不同的方式来划分F函数输入侧数据序列和异或侧数据序列的示例结构的图。
[0077]图28是示出除了扩大密钥的插入位置之外与图21所示的示例结构相同的示例结构的图。
[0078]图29是用于说明更高效的数据分配方法的图。
[0079]图30是用于说明更高效的数据分配方法的图。
[0080]图31是用于说明更高效的数据分配方法的图。
[0081]图32是用于说明Feistel结构的对合特性的图。
[0082]图33是用于说明Feistel结构的对合特性的图。
[0083]图34是示出可以实现出色的扩散特性的4行结构的类型的图。
[0084]图35是用于说明用于实现对合特性的操作的图。
[0085]图36是用于说明在4行(d=4)结构中具有对合特性的示例结构的图。
[0086]图37是用于说明在6行(d=6)结构中具有对合特性的示例结构的图。
[0087]图38是用于说明具有对合特性的示例结构的图。
[0088]图39是用于说明具有对合特性的示例结构的图。
[0089]图40是示出作为加密处理装置的IC模块700的示例结构的图。
【具体实施方式】
[0090]以下是参照附图的根据本公开的加密处理装置、加密处理方法和程序的详细描述。将按以下章节顺序进行说明。
[0091]1.对称密钥块加密术的概况
[0092]2.扩散特性的概况
[0093](2-1)扩散特性的描述
[0094]( 2-2 )将扩散特性纳入考虑的传统示例结构
[0095]3.根据本公开的具有改进扩散特性的示例结构
[0096]4.具有更高效的数据分配的示例结构
[0097]5.具有对合特性的示例结构[0098]6.加密处理装置的示例结构
[0099]7.根据本公开的结构的总结
[0100][1.对称密钥块加密术的概况]
[0101]首先,简要描述对称密钥块加密术。
[0102](1-1.对称密钥块加密术)
[0103]对称密钥块加密术(下文中称为块加密)被定义为如下。
[0104]在块加密中,明文P和密钥K被接收作为输入,并且输出密文C。明文和密文的位长被称为块大小,并且在这里以η来表示。尽管η可以是任意整数值,但是η通常是针对每种块加密算法而唯一地确定的。使用η作为块长度的块加密也可称为η位块加密。
[0105]密钥的位长以k来表示。密钥可具有任意整数值。每种对称密钥块加密算法与一个或多个密钥大小兼容。例如,块加密算法A具有n=128的块大小,并且可与k=128、192和256的密钥大小兼容。
[0106]明文P:n位
[0107]密文C:n位
[0108]密钥K:k位
[0109]图1是与k位的密钥长度兼容的η位对称密钥块加密算法E的图。
[0110]与加密算法E兼容的解密算法D可以被定义为加密算法E的逆函数Ε—1。密文C和密钥K被接收作为输入,并且输出明文P。图2是示出与图1所示的加密算法E兼容的解密算法D的图。
[0111](1-2.内部结构)
[0112]块加密可以被划分成两个单元。一个是“密钥安排单元”,其输入密钥K并且输出通过利用预定步骤扩展位长而形成的扩大密钥K’(位长k’),而另一个是“数据加密单元”,其接收来自密钥安排单元的明文P和扩大密钥K’,对数据进行转换,并且输出密文C。
[0113]图3示出了这两个单元之间的关系。
[0114](1-3.数据加密单元)
[0115]在以下实施例中使用的数据加密单元可以被划分成称为回合函数的处理单位。回合函数接收两组数据作为输入,并且在其中对数据进行处理之后输出一组数据。所输入的一组数据是当前被加密的η位数据,并且一个回合中的回合函数的输出被提供作为下一回合的输入。所输入的另一组数据是从密钥安排单元输出的扩大密钥的一部分的数据,并且该密钥数据被称为回合密钥。回合函数的总数被称为总回合数,并且是针对每种加密算法预先设置的值。这里,总回合数以R来表示。
[0116]在从数据加密单元的输入侧所计数的第一回合的输入数据以X1来表示,输入到第i个回合函数的数据以Xi来表示,并且回合密钥以RKi来表示的情况下,整个数据加密单元如图4所示的来表示。
[0117](1-4.回合函数)
[0118]回合函数根据块加密算法而可以具有各种形式。回合函数可以基于各个加密算法所采用的结构而进行分类。典型结构的示例包括SPN结构、Feistel结构和扩展Feistel结构。
[0119](a) SPN结构回合函数[0120]该结构对所有η位输入数据执行关于回合密钥的异或运算、非线性转换和线性转换。各个操作的顺序不是特定设置的。图5示出了具有SPN结构的回合函数的示例。
[0121](b) Feistel 结构
[0122]η位输入数据被划分成两组n/2位数据。一组数据和回合密钥被输入到函数(F函数),并且输出和另一组输入经受异或。然后将数据的左和右互相替换以形成输出数据。F函数的内部结构可以是任意各种形状,但是与SPN结构一样,基本上通过关于回合密钥数据的异或运算、非线性运算和线性转换的组合来实现。图6示出了具有Feistel结构的回合函数的示例。
[0123](C)扩展 Feistel 结构
[0124]扩展Feistel结构与Feistel结构的不同之处在于数据划分数是3个或更多个而不是2。在划分数以d表示的情况下,各种扩展Feistel结构可以由d来定义。由于F函数的输入/输出大小变得相对较小,因此该结构被认为适合于小尺寸实现。图7示出了在d是4并且在一个回合中并行使用两个F函数的情况下的扩展Feistel结构的示例。图8示出了在d是8并且在一个回合中使用一个F函数的情况下所采用的扩展Feistel结构的示例。
[0125](1-5.非线性转换处理单元)
[0126]在要输入的数据大小较大的情况下,非线性转换处理单元易于具有高实现成本。为了避免这样,在多数情况下,将目标数据划分成两个或更多个单位,并且对每个单位执行非线性转换。例如,在输入大小是ms位的情况下,输入数据被划分成m组s位数据,并且对m组s位数据中的每组执行具有s位输入和输出的非线性转换。这些s位非线性转换在这里被称为S盒(S-box)。图9示出了示例。
[0127](1-6.线性转换处理单元)
[0128]考虑到其特性,线性转换处理单元可以被定义为矩阵。矩阵的元素通常可以以各种形式来表示,诸如GF(28)的元素或GF(2)的元素。图10示出了线性转换处理单元的示例,其具有ms位输入和输出并由关于GF(2S)定义的mXm矩阵来定义。
[0129][2.扩散特性的概况]
[0130]在说明本公开的加密处理之前,现在简要描述扩散特性。
[0131](2-1)扩散特性的描述
[0132]如以上简要描述的,扩散特性用作用于评估块加密的安全性时所使用的指示之一。该特性可以被视为将输入数据改变散布(或扩散)到输出数据的特性,并且在安全块加密中,期望输入数据的这样改变的影响尽可能块地被传送到输出数据。
[0133]在以下,定义了“扩散状态”、“完全扩散状态”和“完全扩散回合数”。
[0134]在输出位被记作输入位的关系式并且关系式满足以下示出的条件的情况下,输出位的状态被定义为“扩散状态”。
[0135](条件I)所有输入位都包括在关系式中。
[0136](条件2)所有输入位都已通过回合函数(F函数)至少一次。
[0137]此外,所有输出位都处于扩散状态的状态被定义为“完全扩散状态”。
[0138]实现完全扩散状态所需的最小回合数(重复次数)被称为“完全扩散回合数”。
[0139]现在参照作为具体示例具有图11和图12所示的Feistel结构的块加密来详细描述这些定义。图11示出了具有FeiStel结构的块加密的回合函数的示例结构,并且图12示出了重复三次回合函数的结构。
[0140]如从图12看出的,第i个回合、第(i+Ι)个回合和第(i+2)个回合的输出的左侧(或者第(i+Ι)个输入、第(i+2)个输入和第(i+3)个输入的左侧)的n/2位数据Xi+1\ XiJ和XiJ以及第i个回合、第(i+Ι)个回合和第(i+2)个回合的输出的右侧(或者第(i+Ι)个输入、第(i+2)个输入和第(i+3)个输入的右侧)的n/2位数据Xi+12、Xi+22和Xi+32均可以通过使用第i个回合的输入Xi1和Xi2以及回合密钥RK/、RKi2和RKi3而如下表示。
[0141]XA1=F (RKi1, Xi1) (+) Xi2
[0142]XiV=F (RKi+/, Xi+/) (+) XA2=F (RKi+/, F (RKi1, Xi1) (+) Xi2) (+) Xi1
[0143]Xg1=F (RK21, Xj21) (+) Xi+22= (RK21, F (RKi+/, Xi+/) (+) Xi+/) (+) Xi+/
[0144]=F (RKiV, F (RKi+/, F (RKi1, Xi1) (+) Xi2) (+) Xi1) (+) F (RKi1, Xi1) (+) Xi2
[0145]Xfi2=Xi1
[0146]XA2=XA1=F (RKi1, Xi1) (+) Xi2
[0147]Xi2=XA1=F (RKi+/, Xi+/) (+) XA2=F (RKi+/, F (RKi1, Xi1) (+) Xi2) (+) Xi1
[0148]在以上表示中,F (K,X)表示通过使用参数K利用F函数对数据X进行转换而获得的数据,并且(+ )表示每位的异或。
[0149]尽管以输入数据Xi1和Xi2来表示,但是Xi+/没有处于扩散状态,这是由于Xi2没有通过F函数。XiJ以输入数据Xi1和Xi2来表示,并且输入数据被给出作为F函数的输入。因此,可以认为XiJ处于扩散状态。同样地,可以认为Xm1处于扩散状态。
[0150]在仅以Xi1来表示的情况下,Xi+12没有处于扩散状态。由于Xi2没有通过F函数,因此xi+22没有处于扩散状态。xi+32处于扩散状态,从而满足条件。
[0151]根据以上结果,第(i+3)个回合的输出XiJ和Xi+32均处于扩散状态,并且可以认为实现了完全扩散状态。如从以上可以看出的,具有图11和图12所示的Feistel结构的块加密的完全扩散回合数是3。
[0152]如果没有实现完全扩散状态,则特定输出位不受特定输入位和非线性函数(F函数)的影响,因此,可能易受各种攻击。特别地,扩散特性用作直接估计对攻击(诸如不可能的差分攻击和饱和攻击)的安全性时的指示。可以认为,以较小的完全扩散回合数实现了较好的扩散特性。
[0153]图13和图14示出了其它示例。这些图示出了在一个阶段使用两个F函数的4行一般化Feistel结构。
[0154]图15示出了如下情况下的改变的反响:其中,第i个回合的η位输入\被划分为四个η/4位数据,并且仅对第四个η/4位数据(以Xi4来表示)的一部分进行改变。
[0155]在图中,粗虚线表示在输入的改变尚未通过F函数的状态下来传送数据,并且粗线指示在输入的改变已通过F函数至少一次的状态下来传送数据。另外,假设F函数的每个输出位受F函数的所有输·入位的影响。如上所述,完全扩散回合数可以通过计算在所有输出位受各种输入位的虚拟改变影响之前所需的回合数来确定。实际上,已知在d是4的情况下,在一个阶段使用两个F函数的一般化Feistel结构中的完全扩散回合数是5。
[0156](2-2)将扩散特性纳入考虑的传统示例结构
[0157]接下来,简要描述将至此所提出的扩散特性纳入考虑的处理结构。[0158]众所周知的是,在一个阶段使用d/2个函数的d行一般化Feistel结构没有非常良好的扩散特性,并且完全扩散回合数是d+Ι。在例如非专利文献3 (T.Suzaki andK.Minematsu, "Improving the Generalized Feistel", FSE2010, LNCS6147, pp.19-39, 2010)中对此进行了公开。
[0159]图16不出了 d是6的传统一般化Feistel结构,并且图17不出了结构处于完全扩散状态的路径的示例。
[0160]为了解决以上问题,非专利文献3提出了如下构造方法:其通过改变通过将数据划分成d组而形成的每组n/d位数据的回合间的线,可以使得在划分数d等于或大于6的情况下完全扩散回合数小于传统结构中的完全扩散回合数。
[0161]图18示出了 d是6的情况下的该构造方法,并且图19示出了结构处于完全扩散状态的路径的示例。
[0162]在d分别是6、8、10、12、14和16的情况下,在该结构中实现的完全扩散回合数是
5、6、7、8、8和8。从此可以看出,实现了比传统结构的(d+Ι)个回合更好的扩散特性。然而,在d是4的情况下,该结构是无效的,并且无法使得完全扩散回合数较小。
[0163]非专利文献4 (Suzaki, Tsunoo, Kubo, and Kawabata, "Proposal of astructure having diffusion layer incorporated into a generalized Feistelstructure", SCIS2008, 2008)提出了通过对通过将数据划分成d组而形成的每组n/d位数据执行线性运算而使得扩散特性比传统结构好的结构。然而,在该结构中,需要实现线性运算的装置,从而导致较高的实现成本。
[0164][3.根据本公开的具有改进扩散特性的示例结构]
[0165]鉴于上述问题,本公开提出了用于在一般化Feistel结构中实现较好扩散特性而不增加实现成本的构造方法。
[0166]在具有该组成的d行一般化Feistel结构中,如在传统结构中一样,将η位输入数据划分成d组n/d位数据,并且对d组中的每组执行F函数处理和异或运算(图20中的步骤I)。
[0167]此时输入到F函数的数据序列被称为F函数输入侧数据序列,并且经受异或的数据序列被称为异或侧数据序列。
[0168]此后,在每个相应序列(每个相应行)中传递的每组n/d位数据被进一步再划分成d/2组(此时的划分可以不是等分)。
[0169]根据以下规则来分配在每个序列(每行)中被再划分成d/2组的数据(图20中的步骤2)。
[0170](I)F函数输入侧数据序列被不变地分配给下一回合函数的异或侧数据序列。
[0171](2)异或侧数据序列被不变地分配给下一回合函数的F函数输入侧数据序列。
[0172](3)被划分成d/2组的每一个数据序列被分配给下一回合函数的d/2个数据序列
而没有重叠。
[0173]在上述分配之后,将被划分成d/2组的每组数据集成为一组数据(图20中的步骤3)。
[0174]重复上述所需次数。
[0175]图20示出了划分数d是4的示例结构。[0176]在该结构中,完全扩散回合数可以是4,而与数据划分数d无关。
[0177]该方法满足实现完全扩散所需的回合数是4而与划分数d无关的条件的原因如下。
[0178](1)第i个回合中的输入数据的任何改变影响第(i+1)个回合中的至少一个F函数。
[0179](2)第(i+1)个回合中的至少一个异或侧数据序列处于扩散状态。
[0180](3)第(i+1)个回合中的异或侧数据序列当中处于扩散状态的数据被进一步划分成d/2组,并且影响第(i+2)个回合中的所有d/2个F函数。因此,第(i+2)个回合中的所有异或侧数据序列都处于扩散状态。
[0181](4)由于第(i+2)个回合中的异或侧数据序列是第(i+3)个回合中的F函数输入侧数据序列,因此第(i+3)个回合中的所有F函数输入侧数据序列都处于扩散状态。由于处于扩散状态的数据被输入到第(i+3)个回合中的所有F函数,因此与输出经受异或的所有异或侧数据序列都处于扩散状态。
[0182]出于以上原因,在第(i+3 )个回合之后或在第四回合中,不变地实现了完全扩散状态。现在参照图21和图22,描述具体示例。
[0183]图21示出了 d是4的情况下该方法的示例。由于d是4,因此通过将输入数据划分成四组而获得的每组n/4位数据进一步以2来划分(划分成d/2组)。
[0184]作为与第i个回合的输入Xi1对应的第i个回合的输出的两组划分数据以Yi1L和Yi1R来表示,同样地,与Xi2Ji3和Xi4对应的各组划分数据以yi2L、yi2R、yi3L、yi3R、yi4L,和Yi4R,来表示。在等分的情况下,这些划分数据的大小是n/8位。
[0185]然而,对每行中的数据进行再划分的操作不一定是等分。在例如输入位数是256并且划分数d是4的情况下,每行中的位数是n/d=256/4=64位,并且在等分的情况下,通过再划分而获得的数据是32位数据。结果,生成两组32位数据。
[0186]然而,等分不是必须的,并且从64位数据生成的再划分数据可以是任意组合,诸如20位数据和44位数据的组合。
[0187]然而,在输入到下一回合计算单元时,通过对被划分成不同行的20位数据和44位数据进行组合来重构根据划分数d=4的四组64位数据,并且将其输入到各个划分行中。
[0188]即,在具有划分数d的结构中,等分不是必须的,但是在d行中的各行的再划分操作中,d行中的各行的再划分形式(划分比率)需要相同。
[0189]如果对第i个回合的输入数据进行某种改变,则该影响被输入到第(i + 1)个回合中的两个F函数中的至少一个。在仅对例如Xi4的LSBl位进行改变的情况下,影响仅被传送到Yi4K,并且传送的影响被传送到Xi+11。结果,Xi+11被输入到第(i+1)个回合中的左侧F函数(图22)。同样适用于如下情况:其中,仅对某个其它输入位的位置进行改变,并且保证影响被传送到至少一个F函数。
[0190]由于第(i+1)个回合中的至少一个F函数受输入改变的影响,因此与输出经受异或的数据处于扩散状态。即,保证组合(Υi+12L+12Κ)或(Yi+1'Yi+广)的扩散状态。图22示出了组合(Υ?+1?+12Κ)处于扩散状态的示例情况。
[0191 ] 根据该方法的规则2和3,第(i+1)个回合的输出Υ?+12?和Yi+12K被输入到第(i+2)个回合中的两个(=d/2)F函数。同样地,Y1:和Yi+14K也被输入到第(i+2)个回合中的所有F函数。即,无论组合(Yi+12\ Yi+12K)和(Yi+1'Yi+14K)中的哪一个在第(i+ι)个回合中处于扩散状态,处于扩散状态的数据都被输入到第(1+2)个回合中的所有F函数。因此,与这些F函数的输出经受异或的所有数据Yi+2' Yi+22E> Yi+24L和Yi+24K处于扩散状态,并且根据规则2和3而被提供到XiJ和Xi+33。因此,显然Xm1和Xi+33也处于扩散状态。
[0192]处于扩散状态Xi+/和Xi+33的被输入到第(i+3)个回合中的各个F函数,因此,作为与输出的异或的结果的Yi+2' Yi+22E> Y1:和Yi+24K或者Xw1和xi+43也处于扩散状态。
[0193]根据以上结果,该方法可以满足完全扩散回合数是4的条件。图22示出了在d是4的情况下通过该方法实现完全扩散状态的路径的示例。在该示例结构中,以四个回合实现了完全扩散状态,其小于作为传统结构中的完全扩散回合数的五个回合。图22示出了在该结构中在d是4的情况下实现完全扩散的路径的示例。
[0194]图23示出了 d是6的示例结构,并且图24示出了在该示例结构中实现完全扩散状态的路径的示例(回合间置换之前和之后所示的数表示指示置换之后各组数据所处的位置的索引)。
[0195]根据以上明显的是,与传统结构相比,根据本公开的结构实现了更好的扩散特性。另外,由于根据本公开的结构不涉及线性运算,因此实现成本没有增加。
[0196]如上所述,在该实施例中,加密处理单元将要进行数据处理的数据的组成位划分成行并输入,并且对各行数据重复执行使用回合函数的数据转换操作。加密处理单元重复执行包括如下所述的数据再划分和重构的回合计算。
[0197]具体地,加密处理单元将通过以划分数d对作为输入数据的η位数据进行划分而形成的n/d位数据输入到各行,并且重复执行作为包括使用回合函数的数据转换操作的计算的回合计算。
[0198]在重复执行回合计算的操作中,将具有回合计算的输出数据的每行的n/d位数据再划分成d/2组,并且对再划分数据进行重组,以重构与先前阶段的回合计算的输出数据不同的d组n/d位数据。重构的n/d位数据被设置为下一阶段的回合计算的输入数据。
[0199]具体地,执行满足以下条件的再划分和重构操作。
[0200](I)F函数输入侧数据序列被不变地分配给下一回合函数的异或侧数据序列。
[0201](2)异或侧数据序列被不变地分配给下一回合函数的F函数输入侧数据序列。
[0202](3)被划分成d/2组的数据序列中的每一个被分配给下一回合函数的d/2个数据序列而没有重叠。
[0203]执行满足这样的条件的操作。
[0204]例如,加密处理单元执行如下操作:其中,通过将具有回合计算的输出数据的d行的每行的n/d位数据再划分成d/2组数据而生成dX (n/d)组再划分数据,对选自与划分数d对应的d行当中的不同行的d/2组再划分数据进行重组以重构与先前阶段的回合计算的输出数据不同的d组n/d位数据,并且将重构的数据设置为下一阶段的回合计算的输入数据。
[0205]由于执行了这样的操作,因此实现上述完全扩散状态所需的最小回合数(重复次数)或者“完全扩散回合数”可以被设置为4。
[0206]如上所述,在输出位被记作输入位的关系式并且关系式满足以下所示的条件的情况下,输出位的状态被定义为“扩散状态”。[0207](条件I)所有输入位都包括在关系式中。
[0208](条件2)所有输入位已通过回合函数(F函数)至少一次。
[0209]此外,所有输出位都处于扩散状态的状态是“完全扩散状态”。
[0210]在被描述为本公开的实施例的每个示例结构中,通过用于传递通过以d划分η位输入数据而形成的数据的各行或者F函数输入侧数据序列行的(d/2)行和异或侧序列行的(d/2)行而传递的每组n/d位数据被划分成d/2组。
[0211]这是用于实现用以实现完全扩散的最小回合数4的设置。
[0212]图25示出了如下示例结构:其中,划分数d是6,并且要通过各行而传递的n/d位数据(n/6位数据)以2来划分,或者被划分成然后在回合之间传递的d/12位数据组。
[0213]然而,实现完全扩散的划分数不限于每行中的(d/2),除非回合数被限于4。
[0214]图26是示出η位输入位的划分数d、每行中的划分数p和实现完全扩散所需的回合数之间的对应关系的表。
[0215]如果数据序列被适当地分配,则可以根据以下示出的等式来计算完全扩散回合数。
[0216]回合数=3+[logp(d/2)]
[0217]这里,[X]是等于或大于X的最小整数。
[0218]图27示出了作为F函数输入侧数据序列和异或侧数据序列以彼此不同的方式来划分的扩展示例的结构。
[0219]图27所示的结构是如下示例:其中,划分数d是6,三个(=d/2)F函数输入侧数据序列行中的每个以2来划分,并且三个(=d/2)异或侧序列行中的每个以3来划分。
[0220]如果数据序列被适当地分配,则在该结构中完全扩散回合数也可以是4。
[0221]可以实现该方法的效果而与扩大密钥(回合密钥)的插入位置无关。图28示出了除了扩大密钥(回合密钥)的插入位置之外与图21所示的示例结构相同的示例结构。
[0222]在图21中,扩大密钥(回合密钥)被插入到各个F函数。
[0223]另一方面,在图28所示的结构中,扩大密钥(回合密钥)被插入到对F函数输出和异或侧数据序列执行异或运算的部分。
[0224]在这样的结构中,也可以利用包括上述回合间数据再划分操作的传递机制来减小完全扩散回合数。
[0225][4.具有更高效数据分配的示例结构]
[0226]在上述章节[3.根据本公开的具有改进扩散特性的示例结构]中,描述了用于在一般化Feistel结构中实现较好扩散特性而没有增加实现成本的构造方法。
[0227]具体地,在通过以划分数d对作为输入数据的η位数据进行划分而获得的n/d位数据被输入到每行并且重复执行作为包括使用回合函数的数据转换操作的回合计算的操作的结构中,具有回合计算的输出数据的每行中的n/d位数据被进一步再划分成d/2组,并且对再划分数据进行组合以重构与先前阶段的回合计算的输出数据不同的d组n/d位数据。d组n/d位数据用作下一阶段的回合计算的输入数据。
[0228]在以下中,描述了用于以上实施例中描述的数据分配的更高效技术。
[0229]首先参照图29,描述了该实施例的典型示例结构。
[0230]在该结构中,如在以上章节[3]中描述的实施例中一样,在d行一般化Feistel结构中根据划分数d将η位输入数据划分成d组n/d位数据,并且重复执行作为包括使用回合函数的数据转换操作的回合计算的操作。
[0231]在第i次回合计算之后,将d行(d个序列)中的每行中的n/d位序列进一步再划分成d/2组。
[0232]在第i次回合计算之后每行(每个序列)中的d/2组划分输出数据当中的第j组数据以YiU]来表示(j是不小于I并且不大于d2/2的整数)。
[0233]同样地,在通过在第(i + Ι)个阶段中在回合计算单元中根据划分数d对d行中的每行中的n/d位数据进行再划分而获得的d/2组数据当中,第j组数据以Xi+1[j]来表示(j是不小于I并且不大于的整数d2/2)。
[0234]同时,YYiW表示通过顺序组合YiU]当中满足等式j=(d/2)s+t的数据而获得的数据。
[0235]这里,s是不小于O并且不大于(d-Ι)的整数,并且t是不小于I并且不大于d/2的整数。
[0236]具体地,例如,满足以下等式。
[0237]YYi [I] =Yi [I] I YjlXd/+l] | Yi [2 X d/2+1] |...| Yi [ (d_l) X d/2+1],
[0238]YYi [2] =Yi [2] I I Yi [I X d/2+2] | | Yi [2 X d/2+2] |...| | Yi [ (d_l) X d/2+2],
[0239]...[0240]YYi [d/2] =Yi [d/2] I I Yi [I X d/2+d/2] | | Yi [2 X d/2+d/2] |...| | Yi [ (d_l) X d/2+d/2]
[0241]同样,XXiW表示通 过顺序组合XiU]当中满足等式j=(d/2)s+t的数据而获得的数据。
[0242]这里,Xi [j]是通过在第i个阶段中对d组n/d位数据(通过对输入数据进行划分而获得)中的每组进行划分而获得的d/2组数据当中的第j组数据,s是不小于O并且不大于(d-Ι)的整数,并且t是不小于I并且不大于d/2的整数。
[0243]根据以上章节[3]中描述的方法,存在大量分配模式,并且评估花费长时间。具体地,根据以上章节[3]中描述的方法,分配模式满足以下条件(I)至(3)。
[0244](I)F函数输入侧数据序列被不变地分配给下一回合函数的异或侧数据序列。
[0245](2)异或侧数据序列被不变地分配给下一回合函数的F函数输入侧数据序列。
[0246](3)被划分成d/2组的每一个数据序列被分配给下一回合函数的d/2个数据序列而没有重叠。
[0247]存在满足这些条件(I)至(3)的大量分配模式。特别地,在输入数据的划分数d较大的情况下,分配模式数量非常大,因此,不易选择分配模式。另外,根据分配方法,实现成本可能变得较高。
[0248]在以下,提出了预先限制可选择分配模式并且可以降低实现成本的分配方法。该所提出的方法是通过进一步改进以上章节[3]中的描述的分配方法而开发的。
[0249]首先,在通过在第(i+1)个阶段中对d组n/d位数据(通过以d划分输入数据而获得)中的每组进行再划分而获得的d/2组数据当中的第j组数据Xi+1[j]中,将通过顺序组合满足等式j=(d/2)s+t的数据而形成的数据XXi+1[t]的数据序列以等于(2t-l)组数据的量而循环向左移位。所得到的数据序列以ZZi+1[t]来表示。[0250]具体地,
[0251]由于ZZi+1[l]=XXi+1[l] <<< 1,
[0252]因此建立以下关系。
[0253]
【权利要求】
1.一种加密处理装置,包括: 加密处理单元,被配置成将要进行数据处理的数据的组成位划分成多行并输入,并且对各行中的数据重复执行使用回合函数的数据转换操作, 其中,所述加密处理单元具有如下结构:所述结构被设计成将通过以划分数d对作为输入数据的η位数据进行划分而形成的n/d位数据输入到各行,并且重复执行包括使用所述回合函数的所述数据转换操作的计算作为回合计算,以及 所述加密处理单元执行如下操作:在所述操作中,将具有所述回合计算的输出数据的每行的n/d位数据再划分成d/2组数据,并且对再划分的数据进行重组以重构与先前阶段的回合计算的输出数据不同的d组n/d位数据,并且将重构的数据设置为下一阶段的回合计算的输入数据。
2.根据权利要求1所述的加密处理装置,其中,所述回合函数包括F函数和所述F函数的输出或输入与其它行的数据之间的异或运算,所述F函数包括使用回合密钥的计算、非线性转换和线性转换。
3.根据权利要求2所述的加密处理装置,其中,所述加密处理单元通过执行满足以下分配条件(I)至(3)的操作而将先前阶段的回合计算的结果设置为下一阶段的回合计算的输入: (1)F函数输入侧数据序列被不变地分配给下一回合函数的异或侧数据序列, (2)异或侧数据序列被不变地分配给下一回合函数的F函数输入侧数据序列,以及 (3)被划分成d/2组的每一个数据序列被分配给下一回合函数的d/2个数据序列而没.有重叠。
4.根据权利要求1所述的加密处理装置,其中,所述加密处理单元具有输入数据的划分数d等于或大于4的一般化Feistel结构。
5.根据权利要求1所述的加密处理装置,其中,所述加密处理单元执行如下操作:在所述操作中,通过将具有所述回合计算的输出数据的d行中的每行的n/d位数据再划分成d/2组数据而生成dX (n/d)组再划分数据,对选自与所述划分数d对应的d行当中的不同行的d/2组再划分数据进行重组以重构与先前阶段的回合计算的输出数据不同的d组n/d位数据,并且将重构的数据设置为下一阶段的回合计算的输入数据。
6.根据权利要求1所述的加密处理装置,其中,当所有输出位处于满足以下两个条件的扩散状态时或者当所述输出位以关于输入位的关系式来表示时,所述加密处理单元具有实现满足以下两个条件的完全扩散状态的结构: 条件I所有输入位都包括在所述关系式中,以及 条件2所有所述输入位都已通过所述回合函数至少一次。
7.根据权利要求6所述的加密处理装置,其中,所述加密处理单元通过四个回合的回合计算而实现所述完全扩散状态。
8.根据权利要求1所述的加密处理装置,其中,确定先前阶段的回合计算的输出数据与下一阶段的回合计算的再划分数据之间的输入-输出关系的连接结构是选自如下连接结构的连接结构:所述连接结构以作为通过组合dX (n/d)组再划分数据而生成的数据的(d/2)组2n/d位数据为单位,所述dX (n/d)组再划分数据是通过对具有所述回合计算的输出数据的行中的n/d位数据执行再划分操作而生成的。
9.根据权利要求1所述的加密处理装置,其中,所述加密处理单元具有能够适用于加密操作和解密操作两者的对合特性。
10.根据权利要求9所述的加密处理装置,其中,用于在所述加密处理单元中对各个回合计算的再划分数据进行重构的操作包括: 根据预定规则将先前阶段的回合函数输入侧序列的再划分数据分配给下一阶段的异或侧序列;以及 根据预定规则将先前阶段的异或侧序列的再划分数据分配给下一阶段的回合函数输入侧序列。
11.根据权利要求1所述的加密处理装置,其中,所述加密处理单元执行: 用于将作为输入数据的明文转换为密文的加密操作,或者 用于将作为输入数据的密文转换为明文的解密操作。
12.—种在加密处理装置中实现的加密处理方法, 所述加密处理方法包括: 加密处理步骤,将要进行数据处理的数据的组成位划分成多行并输入,并且对各行中的数据重复执行使用回合函数的数据转换操作, 其中,所述加密处理步骤包括:将通过以划分数d对作为输入数据的η位数据进行划分而形成的n/d位数据输入到各行;以及重复执行包括使用所述回合函数的所述数据转换操作的计算作为回合计算,以及 所述加密处理步骤包括 如下操作:在所述操作中,将具有所述回合计算的输出数据的每行的n/d位数据再划分成d/2组数据,对再划分的数据进行重组以重构与先前阶段的回合计算的输出数据不同的d组n/d位数据,并且将重构的数据设置为下一阶段的回合计算的输入数据。
13.一种用于使得加密处理装置执行加密处理的程序, 所述程序使得加密处理单元执行: 加密处理步骤,将要进行数据处理的数据的组成位划分成多行并输入,并且对各行中的数据重复执行使用回合函数的数据转换操作, 其中,所述加密处理步骤包括: 将通过以划分数d对作为输入数据的η位数据进行划分而形成的n/d位数据输入到各行;以及重复执行包括使用所述回合函数的所述数据转换操作的计算作为回合计算,以及所述加密处理步骤包括如下操作:在所述操作中,将具有所述回合计算的输出数据的每行的n/d位数据再划分成d/2组数据,对再划分的数据进行重组以重构与先前阶段的回合计算的输出数据不同的d组n/d位数据,并且将重构的数据设置为下一阶段的回合计算的输入数据。
【文档编号】H04L9/06GK103444124SQ201280014164
【公开日】2013年12月11日 申请日期:2012年2月20日 优先权日:2011年3月28日
【发明者】渋谷香士, 秋下彻, 五十部孝典, 白井太三, 樋渡玄良, 三津田敦司 申请人:索尼公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1