基于分块加密方式的加密装置与方法及译码装置与方法

文档序号:2400609阅读:426来源:国知局
专利名称:基于分块加密方式的加密装置与方法及译码装置与方法
技术领域
本发明涉及基于分块加密方式的加密装置与加密方法以及它的译码装置与译码方法,还涉及到此种加密/译码装置中所用的运算装置。
在公用密钥的分块加密的代表性基本结构中有SPN型和Feistel型。对它们各个的差分/线性译码的强度评价与提高耐用性的设计方法正在研究中(文献[1]V.Rijmen,J.Daemen,B.Preneel,A.Bosselaers,E.Dcwin,“The Cipher SHARK,”Fast Software Encryption,LNCS 1039,1996;文献[2]青木和麻男、太田和夫,“最大平均差分确率及最大平均线形确率更严密的评价”,SCIS 96-4A,1996;文献[3]松井充,“分块加密MISTY”,ISEC 96-11,1996)。
SPN型的基本结构中由于能保证活性S-box数,易于确定用于实现所设强度的段数(文献[1]),但当块长度增大,S-box的并行度提高时,扩展层的处理复杂化,存在降低速度的倾向。
对上述问题作出改进的是SQUARE/Rijndael型加密(文献[4]J.Daemen,L.R Knudsen,V.Rijmen,“The Block Cipher Square”,FastSolftware Encryption,LNCS 1267,1997;文献[5]J.Daemen,V.Rijmen,“AES Proposol;Rijndael,“http://www.east.Kuleuven.ac.be/~rijmen/rijdael/rijndaeldoc V2.zip)。
在这种加密中,将16个并行的S-box排列成4×4的矩阵形式,把线性扩展限制于同一列内来减少处理。此外,通过在线性扩展中将位的位置排列变换加以组合,在某段中的1位影响就能在2段后广拓到所有的位中,在4段中,活性S-box数将达到25个以上(相对于差分/线性译码而言可说是增强了)。
但是由于存在着同一列内的位在下一段不混合的性质,就会有所谓SQUARE攻击的专用攻击方法(文献[1]、[5])。这看来是源于在所谓扩展层只为一种的制约下来兼顾强度与效率两者的结果所致。
结果在先有技术的分块加密方式中,SPN型结构对活性S-box数的下限容易估计,能够进行保证相对于差分/线性译码法强度的设计,在耐攻击性强这点来说是优越的。但是随着明码语句/加密语句的块长度增加,在S-box的并行度增高后,就有扩展层结合部的计算成本也增高的缺点。此外,取决于扩展层的设计,有可能使数据的扩展不均一。
本发明是为了解决上述问题而提出的,其目的在于提供能抑制计算成本并且能作高度均匀扩展的加密装置与加密方法及其译码装置与译码方法,同时提供其中所用的运算装置。
图1说明根据本发明加密方式的第一实施例的基本结构。
图2说明有关加密强度。
图3例示嵌套型的加密方式数据搅拌部的分层结构。
图4例示加密装置的结构。
图5例示S-box。
图6例示扩大的S-box的内部结构。
图7例示小MDS(最大距离分隔)。
图8例示数据搅拌部的一段的结构。
图9示明大MDS的一个例子。
图10示明大MDS的另一例子。
图11示明密钥次序表部的结构例。
图12示明密钥次序表部的另一结构例。
图13示明非线性变换层的内部结构例。
图14示明非线性变换层内部结构的另一例。
图15例示加法常数表。
图16例示有限域乘法装置的结构。
图17例示线性变换装置的结构。
图18例示线性变换装置的结构。
图19示明MDS矩阵生成装置的结构例。
图20是示明MDS矩阵生成处理程序例的流程图。
图21示明MDS矩阵生成装置的另一结构例。
图22示明MDS矩阵生成处理程序另一例的流程图。
图23是示明用于选择S-box与小MDS组合的处理程序例的流程图。
图24例示译码装置的结构。
图25例示扩大S-box的逆变换的内部结构。
图26例示数据搅拌部的结构。
图27例示密钥次序表部的结构。
图28说明根据本发明的加密方式的第二实施例的基本结构。
图29示明第二实施例中数据搅拌部的另一结构例。
图30示明大MDS的另一例子。
图31示明GF(24)上的乘法接线表示。
图32示明大MDS的又一例子。
图33说明大MDS的褶积。
图34示明大MDS的再一例子。
图35示明密钥次序表的又一结构例。
图36示明密钥次序表的又一结构例。
图37示明加法常数表的另一例子。
图38示明译码装置的另一结构例。
图39示明数据搅拌部的一段的逆变换的另一结构例。
图40示明密钥次序表部译码时的再一结构例。
图41示明利用加密方式的系统的一例。
图42示明利用加密方式的系统的另一例。
图43示明利用加密方式的系统的又一例。
下面参照


本发明的实施例。在此说明由局部的扩展(小扩展)与遍及整个分块宽度上的扩展(大扩展)相组合的,嵌套型(递归的)SPN结构的加密方式。在以下的说明中,首先以加密为中心进行说明,然后说明译码。此外,译码算法是加密算法的逆变换,密钥是加密与译码共用的密钥。再有,这一加密方式可由硬件或软件实现,在以下所示的结构例中,既可以作为加密装置(译码装置)的功能块图成立,也可以作为加密算法(译码算法)的功能模块图成立。
图1示明嵌套型(递归的)SPN结构下加密方式(加密装置(或译码装置)或是加密算法(或译码算法)、加密处理装置)的基本结构例。
如图1所示,嵌套型SPN结构中,由各段中并行排列的许多非线性变换模块(后述例子中的扩大S-box)2的各个进行局部的小扩展,继而由扩展模块(后述例子中的大MDS)3进行整个分块长度的大扩展,再由非线性变换模块2进行局部的小扩展…如此反复地进行到预定段数。非线性变换模块2由非线性变换模块4(后述例中的S-box)4与扩展模块(后述例中的小MDS)交错排列构成。亦即本实施例的嵌套型SPN结构是将小型的SPN结构(后述例中为2段SPN结构)递归地嵌入通常的SPN结构的S-box的部分中。
根据这种嵌套型SPN结构,可以获得按分层保证分支数(分支数的分层性),能容易地保证活性的S-box数的下限这样的优越性质。此外,嵌套型SPN结构中,除以上所述外,由于有单纯清晰的结构而有易于进行强度评价的特性。
图1中虽然是以4个并行的非线性变换模块2来表示局部的小扩展,但并行数并不局限于4而是可以用4以外的并行数。此外,这4个并行的非线性变换模块2的位数虽然是相等的,但并不局限于此,而是也可以将不同位数的非线性变换模块多个加以组合。再有,在此情形下,既可以使所有非线性变换模块2的位长不同,也可以使一部分小扩展的位长相同。还有,在此虽然用的是一种扩展模块3,但也可采用两种以上的扩展模块3。例如将遍及分块宽度的扩展模块3每隔1个替换为遍及2个非线性变换模块的扩展模块。另外,除将同一结构重复来形成构造的方法外,也可以仅仅替换一部分结构。
可以使所有的非线性变换模块2的结构取同一结构,也可以使其中混合有不同的结构,这一点即使对于各扩展模块3、非线性变换模块4以及扩展模块5也是相同的。例如可以只是最初的输入段与最后的输出段与其他中间段取不同的内部结构。此外,这里虽然是2分层的嵌套结构,但也可以是3分层以上的嵌套结构(在3分层的情形,例如可使非线性变换模块4再成为SPN结构)。再有,例如可因非线性变换模块2而使分层结构相异。除此还可考虑种种变型。
下面根据利用8位S-box的AES相当的128位分块加密的具体例,来说明本实施例。
首先说明有关分块加密的强度评价。
作为评估已给函数f的加密强度的重要指标有最大差分概率/最大线性概率。
对于函数f(x),最大差分概率dpf与最大线性概率lpf分别由下式表示dpf≡maxΔx≠0,Δy|#{x|f(x)⊕f(x⊕Δx)=Δy}2n|]]>lpf≡maxΓx,Γy≠0|2#{x|x·Γx=f(x)·Γy}2n-1|]]>上式中,Δx为输入x的差分,гx为x的最大值,Δy为输出y的差分。
一般地说,求最大差分概率dpf与最大线性概率lpf在多数情形下是困难的。这里,作为其近似值,用最大差分特性概率DPf与最大线性特性概率LPf来评价安全性。
本实施例中将嵌套型SPN结构用作加密函数。下面说明其基本结构SPS结构的特性。这里的SPS是指S-box层与扩散层P重叠成的S-P-S式的3层结构。
SPS的结构也可以是2段SPN结构在SPS结构中,相对于输入x的扩散层的输出为θ(x)时,相对于差分译码的分支数B由下式定义(文献[1]、文献[6]清水秀夫、金子敏信,“共用键加密9扩展层”,SCIS 99-72,1999)。B≡minΔx≠0(w(Δx)+w(θ(Δx)))]]>上式中的W( )是把S-box的位宽度作为码长的汉明间距。将与非零的输入输出差分相接续的S-box称为活性S-box。
把S-box接续到扩展层的输入输出的结构称为SPS结构。当S-box为全单射时,在SPS结构的输入位中具有非零差分的即使有1个,则根据分支数的定义,活性S-box即为分支数以上(即B以上)。此外,设S-box的最大差分概率为Ps,则SPS结构的最大差分特性概率不超过上限值PsB。
在把M个并行的S-box用作SPS结构的S层时,把它们相结合的扩展层的分支数在(M+1)之下,把满足分支数为(M+1)的线性变换称为MDS(最大距离分隔)矩阵。
当扩展层为MDS矩阵时,SPS结构的最大差分特性概率不超过上限值PsM+1[文献1]。同样,设S-box的最大线性概率为qs时,SPS结构的最大线性特性概率不超过qsM+1。
在把2段SPN结构用作比它大的SPN结构的S-box时,即称之为S-box(小结构)。这里的S-box是M1个并行,将扩大S-box内扩展层的分支数设为B1。现在考虑相对于扩大S-box的M2个并行的2段SPN结构(大结构),以其扩展层的分支数为B2。此时,大结构中的活性S-box数低于下限值B1×B2。称此种性质为分支数的分层性。
当大小两种扩展层的双方为MDS矩阵时,活性S-box数低于(M1+1)×(M2+1)。由此可以抑制嵌套型SPN结构的Dpf、Lpf的上限。
图2中例示M1=M2=4时2段SPN结构。15表示后述的大MDS矩阵的扩展部,11~14表示其输入值的扩大S-box,16~19表示其输出侧的扩大S-box,在各个扩大的S-box内,20表示后述的小MDS的扩展部,图中最小示明的矩形21、22表示输入侧与输出侧的S-box。
图2中,S-box之中有阴影的表示活性的(参看图中的21),空白的则表示差分为零的(参看图中的22)。此外,以粗线所示的扩大S-box11、13、16、17、19表示活性的,其他的扩大S-box12、14、18表示差分零。可知在4段时活性S-box在25个以上。
这样,在本例的加密中,能保证在2段有5×5=25个以上的活性箱数。S-box的最大差分概率为Ps=6/2562段的差分特性概率为ps25=2-135.4≤2-128可知差分译码法无效。
同样,对于线性特性概率则有qs=22/256qs25=2-88.5≤2-64可知,线性译码法也无效。
此外,适用于先有的SQUARE/Rijndael型加密的SQUARE攻击,当相对于段内的1位使其他输入原样地固定而输入28种所有的模式时,则相对于2段通过后的输出位中的各个,虽然可利用28种所有模式出现的特性,但在本例的加密中,例如通过后述的大MDS的择取来提高扩展性是难以作这种单纯的应用的。
下面应用嵌套型加密方式的具体例子来更详细地说明本发明。
先说明本实施例的具体例的结构。
图3中例示本实施例的嵌套型加密方式的数据扩展部的分层结构。
分块长度以128位为例(自然其他分块长度也可用来实施本发明)。下面说明设分块长度为128位时,密钥长度为128位和192位的情形。
在把并行的多个扩大的S-box和大MDS的对(但如以后所述,最终段不含大MDS)作为1段来计数时,将段数表示为R段,在应用具体例子的情形,采用R=8。从基本上说,不论什么样的段数都能实施,但实际的段数例如可在考虑到安全性与计算机资源等后再作合适地设定,从效果上看,最好是6段以上而尤为最好是8段以上。
在本例的加密中,由于段函数包含有S-box层2层,它的1段便相当于通常的2段。对于段结构内的大MDS,下面示明基于不同的伽罗瓦域的几种安装例(举出强度优先与速度优先例)。
图4中例示明实施例的加密装置的结构。
101是各段的处理部(段函数),104是大MDS扩展层,102为扩大的S-box层,103为各个扩大的S-box。105为“异”部。121为密钥次序表(详见以后所述)的一段。P为输入的128位的明码数据,C为输出的128位加密数据。
段函数101如以下所述,是将2段SPN结构组成的32位处理子功能块(扩大S-box)103 4个并行排列,而把它们的输出以MDS扩展层104结合而成的结构。整体的基本结构则是此段函数101的重复结果。
在图4的例子中,为使加密与译码处理对称,最终段是由扩大S-box层102及其后的密钥加法器105构成。
由于在段函数1段中嵌入了2段的SPN结构,最后进行密钥加法运算,扩大密钥的位长成为2×128+R+128=128(2R+1),当R=8则成为128×17位。
下面说明S-box。
本例的加密中利用输入输出表定义的8位S-box。
图5中例示8位S-box的输入输出表。图5中的排列元以16进位数表示。
图5中的表最左上的值“72”对应于s
,它右边的一个值“AA”对应于s[1],该行右端M值“9F”对应于s[15];再转到下一行,其中左端的值“69”对应于s[16],它右边的一个值“6A”对应于s[17],以下的要点与上相同。然后,最右下的值“57”对应于s[255]。
图5例示的S-box特性如下。
最大差分概率6/256(理论最小值4/256)最大线性概率22/256(理论最小值16/256)代数次数7次(全单射函数的最大值)在S-box中,也可用运算处理代替应用输入输出表。下面说明各扩大S-box(或也称作小结构)的部分图6中例示扩大S-box103的内部结构。本例中准备了4个并行的8位S-box112(参看图5)共2组,成为中间夹以扩展层113的2段SPN结构。此结构虽也可称之为SPS结构,但可视作为省除了第二段扩展层的特殊的2段SPN结构。在紧接S-box112的输入之前设有密钥加法器111。在扩大S-box内的扩展层113中使用MDS矩阵,将后者称作小MDS,记为MDSs。小MDS的分支数为5。
图7中例示本例加密中所用的MDSs。图7中的矩阵元以16进位数表示。这里的S-box输入输出与矩阵元在进行乘法时视作伽罗瓦域GF(28)的元。本例中的本原多项式为x8+x6+x5+x+1。
以下说明本例加密的段函数的大结构。
图8例示1段中部分101的结构。本例中加密的段函数即大结构101是由MDS矩阵的扩展层104结合4个并行的32位扩大S-box103(参看图6)构成。此段函数大结构101中的扩展层104也使用MDS矩阵,称其为大MDS,记为MDSL。但这里的MDS矩阵意味着着眼于扩大S-box的分支数为5。
大MDS的最单纯构造方法是把扩大S-box的32位输出作为GF(232)的元实现的方法。此方法易实现高强度,但在一般的实行中的困难或者说是难以高速化。因此,这时最好给MDS矩阵以限制。
为了构成4个并行的MDS,4位的宽度即足够了,能利用GF(24)上的运算实现。此外,通过使MDS成为循环的可以提高运算效率。
实际上,除前述的以外,还可以是利用GF(28)与GF(216)的中间型。
现来说明利用GF(232)的大MDS。
此时,视扩大S-box的输入输出为GF(232)的元来设计大结构MDS。这是SPN结构下的自然设计法。但在32位宽度下由乘法表进行安装是不现实的。即使在进行计算时,于一般的MDS矩阵要耗费很大的计算量而难以高速化。计算量加大的原因是由于伽罗瓦域上乘法运算中进位时的处理繁重。为了减少计算量,存在着这样的方法,即把大MDS矩阵由位表示中32位内的低位5位只出现1(低位5位以外限于0)的元来构成。通过使用满足上述条件的矩阵,对于进位处理,可由查找输入有高位4位的表来处理。
图9中示明大MDS矩阵的一例。此例中的本原多项式为x32+x28+x27+x+1。
现在说明应用GF(24)的大MDS。
图10是该场合中MDS行列的一例,此例中的本原多项式为x4+x+1。
这里在1个扩大S-box103中,收集4个S-box各个的输出部8位数据中相同位置(例如图10中以最高位的位为例表示)的1位,以工作为1组4位数据,将来自4个扩大S-box103的4组4位数据视作为GF(24)的元。
然后对于8位数据的相同位置,于2段的4个并行扩大S-box层之间的扩展层104中应用4行4列的MDS矩阵(例如图10中最高位的位时,104-1)。
成为输出的4组4位数据分别连接相对应的原来8位数据的相同位置。
对应于S-box的位宽,准备8个MDS矩阵(104-1~104-8),把它们各个作为大MDS。
这些个4行4列的MDS矩阵,分别保证分支数5。各MDS矩阵由于连接了S-box中不同位的位置,作为总体也可保证分支数5。
通过以各扩大S-box的相同位置的S-box输出为单位的表进行查表(也可以通过运算),能有效地同时处理8个MDS矩阵。
在MDS矩阵为循环的情形,能将各32位的“异”和8位单位的位旋转组合,进行高效的处理。
根据与上述相同的设想,作为对8位数据之中在相同位置的各2位进行处理时,也可对各个元准备8位的4行4列MDS矩阵(GF(28))4个,作为大MDS。对于8位数据之中同一位置上各4位的处理,也可为每个元准备16位的4行4列MDS矩阵(GF(216))2个,作为大MDS。
上面的说明中是按取出相同位置的位进行处理的,但也可(“异”地)取出不同位置的位进行处理。图10中是使放大S-box103 4个并行设置,但可不局限于此,也能有其他的并行数。此外,扩大S-box的内部的结构也可不必全同而能混合不同的。在这方面,对于小MDS矩阵、S-box的输入输出表也是相同的。例如可以取只是最初的输入段与最后的输出段不同于其他中间段的内部结构,除此之外还可考虑种种变型。
下面说明密钥次序表部(密钥生成部)。
图11中例示密钥次序表部的结构。121为对应于数据扩展部的段函数中1段的部分,131为线性扩展层(本例中设为基于大MDS的扩展层),132为非线性变换层[本例中设为4个并行的SP层(S-box层扩展层)133],134为“异”部,135为剩余加法部。图11中虽然作了省略,但121的部分结构是按段数重复的。此外,若把输出128位密钥的结构单位作为密钥次序表部的一段,则密钥次序表部的段数成为(2R+1)段(R=8时为17段)。
在图11的例子中,取出256位变形Feistel型重复处理各段的输出左半部分128位,对段数相关常数Ci进行剩余加法运算作为扩大密钥。
当密钥长度取为256位时,例如可把高位128位给予初段的线性扩展层131,而把低位128位给予非线性变换层132。当设密钥长度为128位时,例如可将此128位给予初段的线性扩展层131,但同时也可给予非线性变换层132。此外,设密钥长度为192位,例如可把高位的128位给予初段的线性扩展层131,而把低位侧的64位与高位侧的64位结合成的128位给予非线性变换层132。
再如图12所示,对于段数相关常数Ci进行剩余加法运算的剩余加法器136的设置地也可考虑有种种变更型式。
图13中例示图11与12内的非线性变换层的各个SP层133的结构。141为S-box,142为以4个并行的S-box作为输入的小MDS。
上述的S-box可以与图4加密处理方面的S-box(图5)相同或相异。即使小MDS也同样如此。此外,取决于密钥次序表部的各段,也可以改变S-box和小MDS的结构。
图14中例示图11与12内非线性变换层132的各个SP层133的另外结构。本例相对于图13的结构增设了“异”部143。
再有,图14中也可以构成为,取相对于S-box的输入和“异”为常数而以此为段数相关常数。
下面举例说明对各段形成不同常数Ci的方法。
图11与12中密钥次序表部的128位的加法常数Ci可以由4个位常数(H0、H1、H2、H3)的组合来表示。32位的常数Hi的一例示明于下。
另外,符号“”和“」”表示床函数,例如“x」”表示x以下的最下的整数。
将加法常数Ci的组合记作Ci=(Ci0,Ci1,Ci2,Ci3)。为了在各段易于生成不同的128位的常数Ci,在构成Ci的Hi的组合确定中采用8位LFSR。例如对LFSR的本原多项式,采用(1D)H;对LFSR的初始状态,采用(8B)H。将应用此LFSR生成的位序列按2位2位地读出,决定用作常数的32位常数Hi。
图15中例示由上述方法用LFSR决定的加法常数表。
再有,LSFR的初始状态既可以是可变的,也可以是固定的。在可变情形,LFSR的初始状态也可构成密钥的一部分。在固定情形,与加密方相同,只是具有LFSR的初始状态的译码方才能对加密语句进行译码。
根据以上所述的密钥次序表部,对于SP层132,当输入中有1位变化时,由S-box141会使此变化影响到8位,而由小MDS142会使此变化影响到32位。再有,对于线性扩展层,由于大MDS131使前段的非线性变换层的输出扩展得更大,即使1位的不同也有利于拓广128位的宽度。
因此,根据这种密钥次序表部,能有效地在各段使离散的密钥容易输出与扩展。此外,由于各段有不同的常数,能有效地使整个段上密钥的一致性少(密钥基本上不一致)。
此外,也可将另外的结构用作密钥次序表部。
下面说明能有效地用于具有大的分块长度的分块加密的数据扩展部中的线性扩展装置。
图16中例示本实施例中线性扩展装置的基本构成部件有限域乘法装置的结构。在利用前述的GF(232)或GF(216)的大MDS(参看图9、图4的104、图11与图12的131)中,能将此线性扩展装置用于1个输入和大MDS矩阵的1个元之积的计算中。
如图16所示,此有限域乘法装置是由系数存储部202、乘法部203、溢位反馈部201、“异”部(“异”运算部)204构成。
系数存储部202是存储系数即乘法运算中乘数(例如图9大MDS矩阵的一个元)的部分。
乘法部203是把输入字与系数视作2进位数时进行乘法运算的部分。
当系数存储部202的系数是1、2、4…那样的2的幂乘情形,则可进行用通常乘法器的计算。当此乘法器是不传播进位的特殊乘法器时,则能在系数存储部202的系数为任意值时进行计算。
溢位反馈部201是用于把作为乘法运算结果产生的溢流返回到有限域上的乘法运算,检索可满足“异”部204中的数(反馈字)的部分。
“异”部204是把乘法部203的输出与溢流反馈部201的输出位进行“异”的部分。
有限域乘法装置200的功能是把有限域GF(2)的扩张域GF(2K)中的元即输入字a与同一有限域中另一元即系数b之积a×b作为输出字计算。
首先说明有限域中之积。
在以下的描述中,∑aixi中取总和时i的范围以及∑bjxj中取总和时j的范围都是0~K-1,略去其范围的表示。
GF(2K)的元由多项式表示,能作为某个变量x的(k-1)次多项式∑aixi表示。但在表示元a时,也有将其系数并列作为Ck-1Ck-2…C0来表示的。
2个元a=∑aixi与b=∑bixi之积定义为a×b=(∑aixi)×(∑bixi)mod p(x)上式中的p(x)称为GF(2k)的本原多项式,是周期为(2k-1)的k次既约的首项系数为1的多项式。mod的意义如下,例如当k=32,在本原多项式选择了p(x)=x32+x28+x27+x+1的情形,对于通过多项式的积出现有x32的项或因子时,则把它视作为(x28+x27+x+1)表示。从而积成为不超过K次的多项式。
一般,在进行这种操作时,为了进行高速处理,也有由采用将乘数与被乘数作为特征来检索积的乘法表的乘法运算装置来进行的。但由于乘数与被乘数一起能取得2K个值,乘法表便具有22k个元,各元具有K位长度,因而当K大到一定程度时,乘法表的规模就非常之大。
本实施例在方式上基本类似于采用乘法表,但在系数满足一定的制约条件下,能由相当小的存储容量实现。
上述制约条件是系数b为常数,而具有非零系数的只是某个次数t以下的低位的系数(超过t次的次数的系数为0,t次以下的系数为0或1)。对于某个元a取任意元的情形,溢位时最大为32位,而当满足上述制约条件时,溢位时最多是t位。决定此t位的溢位值则是到被乘数a的高位t位的MSB(最高有效位)。
与视作为有限域上的乘法和通常多项式时的乘法运算不同,作为2进位数的结果对32次以上的系数发生溢位时,有必要根据本原多项式将溢位的贡献还原到不满32次的系数,但在本实施例中,溢位反馈部201则具有将应还原的字构成的表。
这种反馈字可由最高为(t+1)位的系数b与乘数a的高位t位以及本原多项式确定。具体地说,由(a[(k-t)…(k-1)]×b)[(t+1)…2t]mod p(x)给定。这里的a[(k-t)…(k-1)]是从a之中取出由(k-1)次到(k-t)次的项的结果。
这就是说,溢位反馈部201所具有的反馈字表的内容是根据相应的MDS矩阵(参看图9)的元决定。
溢位反馈部201具有的反馈字表由2t个元组成,每个元有K位长度。
下面说明对利用上述有限域乘法装置实现的分块加密的数据块施加线性变换的线性变换装置。
基于MDS矩阵的线性变换是线性变换的一种。MDS矩阵,在数据块由多个(n)字构成而各字具有K位长度的情形,当把各个字看作有限域GF(2k)的元时,是把n元的组线形映射到n元的组的n行n列矩阵,所有的小矩阵都是非零矩阵。MDS矩阵的线性变换具有能保证非零的输入输出字的下限的性质。
但一般地说,有限域GF(2k)上的矩阵运算是由GF(2k)上多次的乘法与加法构成,计算成本很大。
图17例示本实施例的线性变换装置的结构,此线性变换装置能用于前述的利用了GF(232)或GF(216)的大MDS(图9、图4的104、图11与图12的131)。
在图17的结构中,首先将图16的有限域乘法装置构制成与MDS矩阵对应的矩阵形式。
图17中,当m=n时,n2个有限域乘法装置200的各个系数取与n行n列MDS矩阵对应元相同的值。在具有系数aij的装置中输入第i输入字。
对应于各个输出字的“异”部205分别计算具有对应于某个j的系数aij的所有的有限域乘法装置200的输出位的“异”,作为第j输出字输出。
图18中例示本实施例的线性变换装置的另一种结构。本实施例中的线性变换装置具有这样的特征,在以(aij)表示该表示线性变换的MDS矩阵时,各个元aij对于最高为t次的项只能具有非零系数。这里的i,j可取从0到n-1的整数,而t为比有限域GF(2k)的扩张次数k小的正数。
据此可以实现图18所示的乘法运算。
溢位反馈部201所具有的反馈字表的内容可根据对应的MDS矩阵的元决定,因而例如在图9的大MDS矩阵的例子中可以只具备4种反馈字表。
下面说明用于生成采用本发明加密方式的MDS矩阵(特别是大MDS)的MDS矩阵生成装置(或是随机生成算法)。
图19例示MDS矩阵生成装置的结构。如图19所示,此MDS矩阵生成装置由元生成部231、小行列式计算部232与判定部233构成。
图20例示上述情形下的程序。
元生成部231随机地生成n行n列的MDS矩阵中各个矩阵元(步骤S1)。在可以应用以前的有限域乘法装置的情形,此时先生成只由低位t位的非零元(t次以下的元)组成的MDS矩阵(具体地说,这时在元生成部231内要检查是否仅仅是下位t位非零)。
为了生成矩阵的元,可以考虑采用发生随机数的方法和采用多环路控制变量值的方法等种种方法。
小行列式计算部232计算元生成部231所生成的矩阵的1阶小矩阵(步骤S2),判定部233判定小行列式计算部232所计算的小矩阵是否非零(步骤S3)。即使有1个为零的1阶小行列式,也要据步骤1进行修正。
若是所有的1阶小列式都非零,则据相同的准则对2阶小矩阵作同样的检查(步骤S4、S5)。
用相同的准则将以上所述进行到n阶小行列式(步骤S6,S7),在确认1阶至n阶的小行列式均非零时,输出此MDS矩阵(步骤S8)。
在把步骤8求得的MDS矩阵作为用于加密的MDS矩阵时,译码用的MDS矩阵可由步骤S8求得的MDS矩阵的逆矩阵给出(相反,在把步骤8求得的MDS矩阵用于译码时,则其逆矩阵便成为加密用的MDS矩阵)。
但是,即使由步骤S8求得的MDS矩阵中所有的元仅仅是低位t位非零,而其逆矩阵的所有元则不限于仅仅是低位的t位非零。
此外,在图20的程序中是从1阶到n阶的顺序来进行小行列式的判定,但是也可以按其他顺序,或将它们全部或是一部分并行地进行也可。
下面说明对加密用的MDS矩阵及其逆矩阵即译码用的MDS矩阵两者,使其满足只是低位的t位非零的条件,来求MDS矩阵的方法。
图21例示这种情形下的MDS矩阵生成装置的结构。如图21所示,此MDS矩阵生成装置包括元生成部231、小行列式计算部232、判定部233、逆矩阵生成部234以及逆矩阵判定部235。元生成部231、小行列式计算部232。判定部233等与图19中的相同。
图22例示这种情形下的程序。
首先与前例相同,由元生成部231、小行列式计算部232与判定部233生成只是低位的t位为非零元组成的MDS矩阵(步骤S11)。
其次由逆矩阵生成部234求生成的MDS矩阵的逆矩阵(步骤S12)。
然后由逆矩阵判定部235检查所求得的逆矩阵的各个元是否仅仅是低位的t位非零。
若是所有的元是仅仅低位的t位非零(步骤S13),则输出相应的MDS矩阵与逆矩阵(步骤S14)。
即使有1个不是仅仅低位的t位非零的元(步骤S13),则由S11进行修正。
在把步骤S11生成的MDS矩阵用于加密时,则将步骤S12生成的逆矩阵用于译码(相反,在把步骤S11生成的MDS矩阵用于译码时,则把步骤S12生成的逆矩阵用于加密)。
在生成MDS矩阵时,也可生成在同一行内不存在相同值的元的MDS矩阵(在n行n列的MDS矩阵中,从第i1个元到第in个元之中不具有同一项的两个以上的元。例如在图20与图22的程序例中,在MDS矩阵生成时,检查同一行内是否存在相同值的元,若是在同一行内存在有即使是1个取相同值的元,则可修正MDS矩阵的生成。若在同一列内存在有相同值的元则无妨。
通过把选择了同一行内不存在相同值的元的MDS矩阵的线性变换装置用作分块加密数据的线性变换装置时,就可减小输入字的差分值相消的概率。
此外,也可生成同一行内各元的和不为1或0的MDS矩阵。这样能获得相同的效果。
下面说明,通过选择S-box与小MDS的组合(或使之最优化)来提高安全性的方法,更具体地说,即能保证最大差分特性概率比理论上最劣例子要好的S-box与MDS组合的设计方法。
MDS由于仅仅保证了分支数B,设S-box的最大差分概率为p,则最大差分特性概率成为pB。例如对m行m列的MDS,B=m+1。但是,通过选择S-box与小MDS的组合(或使之最优化),由分支数B,可以保证最大差分特性概率小于pB。根据这一结果,通过使最大差分概率比通常的MDS小的MDS与S-box的组合,可以期望有相乘的效果,能进一步提高安全性。
作为加密算法安全性评价的方法有差分译码法或线性译码法,两者具有对偶关系。从差分译码法看,S-box的安全性由保持输入输出差分相关性的概率确定,此概率愈小安全性就愈高。在加密算法中,将差分概率小的S-box多个加以组合能提高安全性。作为有效的S-box连接方法,已提出了线性变换装置。线性变换装置是对某个分块长度的数据施加线性变换的装置,有把它用作加密装置(或译码装置)的结构装置的。线性变换中有一种是基于MDS矩阵的线性变换。
MDS矩阵在数据块是由n个的许多字组成的情形,是对n个字定义线性变换的矩阵,具有保证非零的输入输出字在(n+1)个以上的性质。但是S-box作为差分概率可以有6/256、4/256、2/256等许多个候选值,因而即使是MDS,对于(n+1)个概率分别为6/256的MDS和分别为4/256的MDS来说,以后者的安全性高。
图23中例示上述情形下的处理程序,本例着眼于差分译码法,示明期望与S-box相乘效果的MDS决定处理。由于差分译码法与线性译码法有对偶关系,通过从线性概率出发来进行此处理,即使对于线性译码法也可求得相同效果。
首先生成多个S-box的候选与多个小MDS的候选(步骤S21、步骤S22)。步骤S21与步骤S22也可按相反的顺序或并行地进行。
其次在从S-box候选之中选择1个S-box的同时(步骤S23),从小MDS的候选中选择1个小MDS(步骤S24)。步骤23与步骤24可按相反的顺序或并行地进行。
再如以后所述,计算有效的(活性的)S-box差分值的最大值(步骤S25),检查是否包含有低于上限(例如6/256)的差分值(例如4/256)。
若不含有时(步骤S26),即输出S-box与小MDS的组合(步骤S27)。
另一方面,在不含有时(步骤S26),改为选择S-box与小MDS的一方或两方,以下重复同样的处理。
图23中,最初生成多个S-box的候选与多个小MDS的候选,但也可不如此,而是在最初的1组以外,在不满足步骤S26的条件下,于选择其他的S-box和/或MDS时来进行这种生成。
步骤S25与步骤S26的处理实际如下。
例如在图6的扩大S-box103例子的情形,对S-box与小MDS的组进行以下4类计20种的验证,在满足全部条件时于步骤27输出此时的S-box与小MDS组。
(1)在小MDS113的输入侧只有1个S-box112属活性时,小MDS113输出侧的4个S-box112全为活性的,而且即使其中有1个成为低于上限的差分值时,则认为此验证合格。对输入侧的4个S-box112的各个进行这种验证(有4种)。
(2)在小MDS S113输入侧只有2个S-box112属活性时,若是小MDS 113的输入侧的4个S-box112全为活性的,则此验证为合格,小MDS 113输出侧的3个S-box112成为活性的,而且即使其中有1个成为低于上限的差分值时,认为此验证合格。对输入侧的2个S-box112组合中的各个进行这种验证(有6种)。
(3)在小MDS 113输出侧只有2个S-box112属活性时,若是小MDS 113输入侧的4个S-box112全为活性的,则此验证为合格的,小MDS S113输入侧的3个S-box112成为活性的,且即使其中的1个成为低于上限的差分值时,也认为此验证合格。对输入侧的2个S-box112组合中的各个进行这种验证(有6种)。
(4)在小MDS 113输出侧只有1个S-box112属活性时,若是小MDS 113输入侧的4个S-box112全为活性的,且即使其中的1个成为低于上限的差分值时,则设此验证为合格的。对输入侧的2个S-box112组合中的各个进行这种验证(有4种)。
以上多个验证处理可以逐次进行,也可以将全部或一部分并行地进行,在此多个验证处理中,要是没有1个合格,则对于这种S-box与小MDS的组合中断以后所有的验证处理,作为不合格的也无妨。
此外,在图23例示的程序中,在最初获得满足条件的S-box与小MDS的组合的时刻使处理中断,但在求得多个满足条件的S-box与小MDS的组合时,也可从其中选择最优的和对其进行评价的。
上面说明的是加密方面,下面就译码方面进行说明。
在译码一侧基本上与加密侧取相反的结构(密钥相同)。
图24中例示与图4中加密装置相对应的译码装置的结构。
图25例示与图6中小结构对应的结构。
图26例示与图8中大结构对应的结构。
图24中译码装置的密钥次序表部与图4中译码装置的密钥次序表部有相同的结构。
译码装置中的S-box1112的输入输出表、小MDS 1113的小MDS矩阵、大MDS 1104的大MDS矩阵,分别与加密装置中的S-box112的输入输出表(例如图5)、小MDS 113的小MDS矩阵(例如图7)、大MDS 104的大MDS矩阵(例如图9、图10)成反函数(逆矩阵)的关系。
图24中的密钥是按与图4相同的顺序生成,但也可构成为依照与图4相反的顺序生成。
图27中例示这种情形下的密钥次序表部的结构。
1132表示图11的非线性变换层132的逆变换[例如将各个SP层113的逆变换(如与图13或图14的输入输出取反方向的)4个并行的]。
图27的密钥次序表部所用的S-box的输入输出表、小MDS矩阵、大MDS矩阵,分别与图11中密钥次序表部所用的S-box的输入输出表、小MDS矩阵、大MDS矩阵成反函数(逆矩阵)的关系。
图27中译码的密钥输入K′在图4中是作为(加密方)最后的密钥加法中所用的密钥。
在此情形下,对于段数相关常数Ci进行剩余加法运算的地点,作为与图12情形相同的最初方法可以考虑种种变型。
上面,作为适用由局部扩展(小扩展)和遍及分块宽度的扩展(大扩展)相组合的嵌套型(递归的)SPN结构的加密方式的例子,是以利用8位S-box的AES相当的128位分块加密的具体例子进行说明,下面,作为另一实施例,由利用8位S-box的AES相当的64位分块加密的具体例子来说明本实施例(使64位与128位相对应,以不同的部分为中心进行说明)。
以下说明的64位分块加密的加密装置/译码装置或是加密算法/译码算法的第2实施例的结构例,相当于图1例示的基本结构内非线性变换模块2的具体例中将扩大S-box2个并行设置的情形。
64位分块加密的情形自然也与前述的128位分块加密的情形相同,能提高耐攻击性。
分块长度为64位。
密钥长度以128位为例(自然,即使是其他的密钥长度,也能实施本发明)。本实施例中当分块长度设定为64位时,对于64位与96位的密钥长度的情形将于以后说明。
段数[将多个并行的扩大S-box与大MDS的对(但如以后所述,最终段不含大MDS)作为1段计数]在用到的具体例子中,取R=6。从基本上说,任何段数都是可以实施的,但实际的段数例如可以在考虑到安全性与计算机资源等情形下进行适当的设定,但最好是在6段以上,那样会有较好的效果。
在本例的加密中,由于段函数包含有两层S-box层,1段便相当于通常的2段。对于段结构内的大MDS,示明基于伽罗瓦域的安装例。
图28例示本实施例的加密装置的结构。
2101是各段,2104是大MDS扩展层,2102是扩大S-box层,2103是各扩大S-box。2105是“异”部。2121~2124是以后详述的密钥次序表部的组成部分。P为输入的64位明码语句数据,C为输出的64位加密语句数据。此外,扩大S-box2103可以与图4的扩大S-box103相同而无妨碍。
段函数是把2段SPN结构组成的32位处理子块(扩大S-box)2103两个并行排列,由MDS扩展层2104连接的结构。
在图28的例子中,为使加密与译码处理成为对称的,最终段便只由扩大S-box层2102与其后的密钥加法部2105组成。
由于在段函数1段中嵌入2段SPN结构而于最后进行密钥加法运算,因而扩大密钥的位长成为2×64×R+64(2R+1)。在R=6时,成为128×13位。
S-box如前所述既可用输入输出表,也可用运算处理。8位S-box的输入输出表一例由于与图5所示的相同,可不必详述。
扩大S-box103的内部结构例与图6相同。扩大S-box内的扩展层113也同样如此,例如采用图7所示的MDSs矩阵,将S-box的输入输出与矩阵元视作伽罗瓦域GF(28)中的元而进行乘法运算。
下面说明本例的加密中段函数的大结构。
图29例示1段的部分结构。本例中加密的段函数大结构是由MDS矩阵的扩展层结合两个并行的32位扩大S-box2103(参看图6)构成。此段函数大结构中的扩展层2104也使用MDS矩阵。
构成大MDS时也与前述相同,有利用GF(232)或GF(24)或GF(28)或GF(216)的方法。
现在说明利用GF(24)的大MDS。
图30中例示上述情形下的MDS矩阵。
这里,在1个扩大S-box2103中,将4个S-box各个的输出即8位数据的在同一位置(例如以图30中最高位的位为例示明)的1位集中,以之作为1组4位的数据,把来自2个扩大S-box2103的2组4位数据视作为GF(24)的元。
对于8位数据的同一位置,于2段的2个并行的扩大S-box层之间的扩展层2104中应用2行2列的MDS矩阵(例如图30中最高位的位时,即2104-1)。
从各扩展层2104输出的2组4位数据分别连接相对应的原来的8位数据的同一位置。
对应于S-box的位宽,准备8个MDS矩阵(2104-1~2104-8),构成大MDS。
查阅以各扩大S-box同一位置的S-box输出为单位的表(也可通过运算),能高效地同时处理8个MDS矩阵。
当MDS矩阵为循环的时,则能将各32位的“异”与8位单位的位旋转组合作高效的处理。
此外,图30中作为加密一方的大MDS矩阵的例子示明的是1行1列=51行2列=72行1列=A2行2列=B而与之相对应的译码一方的大MDS矩阵则为1行1列=C1行2列=A2行1列 2行2列=B再有,前者可用于译码例而后者可用于加密侧。
对于任意的MDS矩阵,也可采用进行任意行变换、列变换与转置后所得到的矩阵。
应用其他的大MDS矩阵也是可能的。
这种大MDS扩展层,如上所述,可以由用于执行基于矩阵运算或输入输出变换表的变换的软件来实现,但也可以由硬件(例如半导体基片上等所形成的实线电路)来实现。
在由实线电路来实现大MDS时,例如可以采用与MDS矩阵等价的接线图。
图31中相对于GF(24)的1~F各个元示明GF(24)上乘法的接线表示(接线图)。接合部分即成为“异”。
这就是说,对于图30的各扩展层2104-1~2104-8之中,在x1作用于MDS矩阵1行1列元的部分,在x2作用于1行2列元的部分、在x1作用于2行1列元的部分以及在x2作用于2行2列元的部分这些部分的接线图,可以在该矩阵元的图31之中采用相应的接线图。
图32例示以图30中所示矩阵为基础由实线电路构成大MDS的例子。图中,2141为对应于1行1列元“5”的接线图,2142为对应于1行2列元“7”的接线图,2143为对应于2行1列元“A”的结线图,2144为对应于2行2列元“B”的接线图。但在多个位的接合部分则为“异”。
再者,所示明的是在相当于矩阵乘积的部分经“异”接合后再进行相当于矩阵乘积和的部分经“异”接合,但也可汇总地进行所有这些“异”的接合或也可作适当多个的划分进行。
或也可以采取这样的程序首先从图31的接线图群之中选择所希望的接线图,作为加密一方的大MDS的实线电路结构的候选,然后验证与之相对应的MDS矩阵的逆矩阵(MDS矩阵)的存在性。显然,也可以先确定译码一方。
还可以采用GF(24)上乘法运算的接线表示(接线图)以外的形式。
自然,这种方法也能用于前述的128位分块加密。
下面说明褶积。
首先说明MDS扩展层的输入端数。在图31的接线图中,于数据输出侧的各个位上,将与该位连接的位数(接线数)称为输入端数。例如对应于“1”的接线图中,任何一个位都为输入端数=1。而在对应于“5”的结线图中,按从左侧的位到右侧的位的顺序,输入端数=2、3、3、2。
下面考虑此MDS扩展层接线图的输入端数总数S。参看图32中的例,2141~2144虚线内16位的输入端数总数为45。对于此MDS扩展层接线图的输入端数总数S,由于关系到配线的增加(在矩阵计算中也由于关系到“异”运算的增加),S的值以小为好。在以GF(24)的元为元的2行2列的MDS中,S的最小值为18。
减小此S的方法中有褶积方法。利用这种方法,可以减少电路量(进行矩阵计算时则为计算量)。
在进行褶积时,如图33所示,对各MDS扩展层(2104-1~2104-8),在该MDS扩展层与前段各扩大S-box2103、2103之间分别插入用于褶积的前处理电路2180-1,2180-2。
在此各处理电路中,例如能设置图31接线图中的一个。或者,可以进行等价的计算处理。
图33示明根据各S-box的公因子5的褶积进行安装的情形。图34例示此时的大MDS 2104。这时的大MDS矩阵成为1行1列=11行2列=42行1列=22行2列=9图中,2145是对应于1行1列元“1”的接线图,2146是对应于1行2列元“4”的接线图,2147是对应于2行1列元“2”的接线图,2148是对应于2行2列元“9”的接线图。多个位接合的部分如前所述是对应于“异”的点。这时的S值为20。
图32中的大扩展与图33/图34的大扩展等价。
在进行褶积时,作为求公因子及此时矩阵的方法,例如可如图31所示,相对于不进行褶积时求得的矩阵,以公因子为参数,求得成为等价的大扩展的矩阵,再就它们评价输入端数,选择所采用的对象。
此外,也可对各S-box加上公因子为同一的制约,或不加上这一制约。
若就下述矩阵1行1列=C1行2列=A2行1列=52行2列=B相对于任一S-box进行根据公因子B的褶积的安装,则得到大MDS矩阵1行1列=91行2列=42行1列=22行2列=1显然,此方法也可用于前述的128位分块加密。
在以上例示的配线或线路图表明了逻辑关系,但实际的配线或实际的线路图显然存在设计的自由度。此外,既可以安装大MDS层的各部分2104-1~2104-8共8部分,也可以只安装MDS部分2104-1~2104-8之中的一部分(例如1个、2个或4个),而构成时分复用。
加密侧与译码侧的构成方法相同(只是逆变换的关系)。
根据与以上相同的想法,作为对8位数据之中相同位置上的各个2位进行的处理,将各元为8位的2行2列MDS矩阵(GF(28))准备4个,也能构成大MDS。此外,作为对8位数据之中相同位置上的各个4位进行的处理,则将各元为16位的2行2列MDS矩阵(GF(216))准备2个,也能构成大MDS。
上面所说的是以取出相同位置上的位进行处理,但与前述相同,也可以(互斥地)取出不同位置上的位进行处理。
还可以与图9的例相同,也能由利用GF(232)的大MDS矩阵构成。
以上的结构例也适用于前述的128位分块加密。
与前述相同,在图28中,也能使扩大S-box的内部结构并非完全同一,而是可以混合有不同的内部结构。
也能使所有的大MDS矩阵不是完全同一的而是混合有不同的大MDS矩阵。这一点对于小MDS矩阵、S-box的输入输出表也是如此。
又例如可以取只是最初的输入段、最后的输出段与其他中间段不同的内部结构。
再有,也可取这样的结构在各个大MDS的前段和/或后段中,相对于属于同一扩大S-box中的多个S-box的位的位置进行转换处理(或插入相应的电路)。
除此之外,还可以考虑种种变型。
显然,在此说明的大MDS结构能够适用于具有以前所述的种种变型的加密装置与译码装置。
以下说明密钥次序表部(密钥生成部)。
图35例示密钥次序表部的结构。2121为对应于数据扩展部中段函数的一段的部分,2131为线性扩展层(本例中为基于大MDS的扩展层),2133为非线性变换层(本例中取为2并行的SP层(S-box层与扩展层)],2134为“异”部,2135为剩余加法部。图35中虽然作了省略,但2121这部分的结构可根据需要重复。此外,若把输出64位密钥的结构单位作为密钥次序表部的一段,则密钥次序表部的段数为(2R+1)(R=6时为13段)。
在图35的例子中,将128位变形Feistel型重复处理的各段的输出中左半份64位取出,对段数相关常数Ci进行剩余加法运算而作为扩大密钥。
设密钥长度为128位时,例如将高位的64位给予初段线性扩展层2131,而将低位的64位给予非线性变换层2133。设密钥长度为64位,则例如可将此64位给予初段的线性扩展层2131,且同时给予非线性变换层2133。而当密钥长度为96位时,例如可把高位的64位给予初段的线性扩展层2131,而把低位侧的32位与高位侧的32位相结合成的64位给予非线性变换层2133。
再如图36所示,对于段数相关常数Ci进行剩余加法运算的地点可以有种种不同的考虑。
图35与36中各个非线性变换层2133的结构例则设定为与图13和14中的相同(在图14中,也可取这样的结构将相对于S-box的输入与按和加取作常数而以之为段数相关常数,这一点也是相同的)。此S-box同样地既可以与图28加密处理侧的S-box相同,也可以不同。对小MDS也是如此。再有,取决于密钥次序表部的各段,S-box与小MDS的结构也可以改变。
下面举例说明在各段作成不同的常数Ci的方法。
图35与36中密钥次序表部的64位的加法常数Ci可以由2个位常数(H0,H1)的组合来表示。下面示明32位的常数Hi的一例。
另外,符号“”和“」”表示床函数,例如“x」”表示x以下的最下的整数。
将加法常数Ci的组合记为Ci=(Ci0,Ci1)。为便于生成在各段不同的64位常数Ci,将8位LFSR用于确定构成Ci的Hi的组合。例如在LFSR的本原多项式中用(ID)H,而在LFSR的初始状态中用(8B)H。按每2位读出用此LFSR生成的位序列,确定用作常数的32位常数Hi。
图37例示根据上述方法用LFSR确定的加法常数表。
LFSR的初始状态能作为可变的或作为固定的。在前一情形,LFSR的初始状态也构成密钥的一部。在后一情形,只在具有与加密侧相同的LFSR初始状态的译码侧,才能对加密语句进行译码。
根据以上所述的密钥次序表部,对于非线性变换层,当输入有1位变化时,通过S-box会使变化波及到8位,进而由于小MDS,可使变化波及到32位。再就线性扩展层而言,由于大MDS使前段的非线性变换层的输出更大的扩展,即使是1位的不同也有利用拓广64位的位宽。
从而根据这种密钥次序表部,就能有效地易于在各段提出种种密钥和容易扩展。此外,由于各段有不同的常数,还能获得在整个段上的密钥的一致性少(密钥基本不一致)的效果。
作为密钥次序表部也可以取其他的结构。
此外,参考图16~图18所说明的线性扩展装置与有限域乘法装置也适用于上述情形。
再有,参考图19~22所说明的MDS矩阵生成装置(或随机生成算法)也适用于上述情形。
显然,参考图23所说明的S-box与MDS组合的设计方法也适用于上述情形。
以下说明译码一方。
译码方基本上是取与加密方相反的结构(密钥相同0。
图38例示与图28加密装置对应的译码装置的结构。
图39例示与图28的大结构(参看图29)相对应的结构。
与图28的小结构(参考图6)相对应的结构例则与图25中的相同。
图38中的译码装置的密钥次序表部采用与图28的译码装置中密钥次序表部相同的结构。
译码装置中的S-box(参考图25的1112)的输入输出表、小MDS(参考图25的1113)的小MDS矩阵、大MDS 3104的大MDS矩阵,分别与加密装置中的S-box(参考图6的1112)的输入输出表、小MDS(参考图6的1113)的小MDS矩阵、大MDS3104的大MDS矩阵成为反函数(逆矩阵)的关系。
图38中的密钥是按照与图28中相同的顺序生成,但也可构成为按照与之相反的顺序生成。
图40例示上述情形中的密钥次序表部的结构。
3132表示图35的非线性变换层2132的逆变换(例如将各个SP层2133的逆变换(例如将图13或图14中的输入输出取反方向的结果)取4个并行的刑式)。
图40的密钥次序表部中所用的S-box输入输出表、小MDS输入输出表、小MDS矩阵、大MDS矩阵,分别与图35中密钥次序表部中所用的S-box的输入输出表、小MDS矩阵、大MDS矩阵成反函数(逆矩阵)的关系。
图40中译码的密钥输入K′设定为图28中(加密侧)最后的密钥加法运算中所用的密钥。
此外,上述情形中对于段数相关常数Ci进行剩余加法的地点,在包括与图36的情形相同的方法在内的方法中,可以有种种不同的设想。
上面虽然是以128位分块加密和64位分块加密为例进行说明,但本发明显然适用于其他位长的分块加密。
下面说明本实施例的硬件结构与软件结构。
本实施例的加密装置与译码装置既可以作为硬件实现,也可以作为软件实现。
本实施例在以软件实现的情形下是实现加密装置与译码装置的程序,也可以作为记录3用来在计算机中执行预定操作(或用于使计算机起到预定装置功能或用于使计算机实现预定功能)的程序的计算机可阅读记录媒体来实施。
在作为硬件构成的情形,也可以作为半导体装置来形成。
此外,在构成适用于本发明的加密装置与译码装置的情形中,或在形成加密程序与译码程序的情形中,可以将图4与图24例示的程序块或模块全部分别地形成,但也可对于具有同一结构的程序块或模块,只准备1个或适当的几个,而由算法的各部分共用(普遍使用)。
在软件情形,也可以利用多处理机进行并行处理,使处理高速化。
此外,可以构成为只具有加密功能而不具有译码功能的装置,或只具有译码功能而不具有加密功能的装置,或具有加密与译码两种功能的装置。同样,也可以形成为只具有加密功能而不具有译码功能的程序,或只具有译码功能而不具有加密功能的程序,或具有加密与译码两种功能的程序。
下面说明本实施例对系统的应用。
本实施例的加密方式基本上可适用于任何系统。例如图41所示的,在发送装置301与接收装置303之间,通过预定方法或手续,安全地共有密钥的系统中,发送装置301将发送数据按各分块长度由本实施例的加密方式加密,依预定协议,经通信网络302将加密语句发送给接收装置303。接收了加密语句的接收装置303将所接收的加密语句,按分块长度由本实施例的加密方式译码,求得原来的明码语句。此外,若是双方都具有加密功能与译码功能,则可进行双向加密通信。
例如图42所示,计算机311按预定方法生成密钥,将拟保存的数据按各分块长度由本实施例的加密方式加密,通过规定的网络(例如LAN,因特网等)314,作为加密数据保存于数据服务器313中。在想要读取这种数据时,则可从数据服务器313读入所希望的已加密数据,将其按分块长度由本实施例的加密方式译码,获得原来的明码语句。此外,其他的计算机312若是知道密钥时,同样能通过译码获得原来的明码语句,但对于不掌握此密钥的其他计算机,就不能对该加密数据进行译码,而可实现信息的保安控制。
再例如图43所示,内容提供方通过加密装置321,将某种内容由某种密钥按各分块长度用本实施例的加密方式加密,以之作为加密内容记录于记录媒体322上并将其公布。取得记录媒体322的用户方根据规定方法得到上述某种密钥,则可由译码装置323将该内容按各分块长度用本实施例的加密方式译码,进行内容的浏览或再生。
显然,在上述之外的种种系统也是适用的。
本实施例所示的结构只是用于例示目的,并无排除其他结构的用意,是可以将例示结构的一部分作置换或省除或对例示结构附加其他功能,或是将上述各类变动加以组合而得到另外的结构。此外,也可以用与例示结构在逻辑上等价的别的结构,包含有与例示结构在逻辑上等价的部分的别的结构、与例示结构的主要部分在逻辑上等价的别的结构。还可以是能达到与例示结构同一或类似目的的别的结构,能取得与例示结构同一或类似效果的别的结构。
此外,对有关各种构成部分的种种变型是可以通过适当的组合来实施的。
再有,本实施例包含且蕴含有作为加密装置的发明、作为译码装置的发明、作为系统整体的发明、有关个别装置内部结构部分的发明,或是与这些相对应的方法的发明等以及与本发明有关的种种观点、步骤、概念或范畴。
因此,根据所公开的本发明的实施例的内容,可以提取出不限于例示结构的发明。
本发明不限于上述实施例而是可以在其技术范围内以种种变形实施。
根据本发明,通过交互重复地运用进行局部的数据扩展的小型扩展层与进行达到分块宽度的扩展的大型扩展层,可以实现降低计算成本的同时作高度均匀扩展。此外,可分层地保证分支数(分支数的分层性),且易于保证活性S-box数的下限。还具有容易进行强度评价的持性。对于SQUARE加密与Rijndael加密,通过小型扩展与字节并行虽能实现同等的效果,但是在这些加密下只有一种扩展层,而称作SQUARE攻击的译码法。本发明通过组合大小两种扩展层,故可提高对SQUARE攻击的抵抗性。
权利要求
1.块数据加密装置,此装置包括将对块数据作许多分割后得到的各部分进行局部搅拌的第一处理部;对于从上述第一处理部输出的块数据进行比前述部分更广范围扩展的第二处理部。
2.权利要求1所述的加密装置,其中所述第一处理部具有将对块数据作许多分割后得到的部分数据的各个施加非线性变换处理的第一非线性处理部;所述第二处理部具有对上述第一非线性处理部输出的块数据,将线性扩展处理施加到比前述部分数据更广范围数据上的第一线性扩展处理部;上述第一非线性变换处理部的至少一部分具有对所述部分数据作许多分割得到的细分数据各个加以非线性变换处理的多个第二非线性处理部;以及对上述多个第二非线性处理部输出的部分数据将线性扩展处理施加到比前述细分数据更广范围数据上的第二线性扩展处理部。
3.权利要求2所述的加密装置,其中所述第一线性扩展处理部用最大距离分隔(MDS)矩阵对输入数据作运算处理。
4.权利要求3所述的加密装置,其中所述最大距离分隔矩阵的所有矩阵元只是低位的所定位非零。
5.权利要求3所述的加密装置,其中所述最大距离分隔矩阵中属于同一行中的所有矩阵元具有不同的值。
6.权利要求3所述的加密装置,其中所述第一线性扩展处理部是由从上述部分数据取出相互对应的位连接成的数据作为输入的最大距离分离矩阵组成。
7.权利要求2所述的加密装置,其中所述第二线性扩展处理部用最大距离分离矩阵对输入数据作运算处理。
8.权利要求1所述的加密装置,它还包括用于生成与段数相关的密钥数据的密钥生成部,此密钥生成部包括串行连接的多个段生成部,此各个段生成部又包括对前段生成部的输出施加非线性变换处理的第一电路、对先前的段生成部的输出施加非线性变换处理的第二电路、对上述第一电路、第二电路的输出取“异”作为该段输出的第三电路。
9.块数据加密装置,此装置包括由4个第一非线性变换处理部,其中它们在初段将输入的128位明语块数据作为输入,在第二段以后将施加有前段处理的128位块数据作为输入,相对于将该块数据4分割成的4组32位数据分别施加局部的线性扩展处理与非线性处理后再输出,以及第一扩展处理部,其中它对于从上述4个第一非线性变换处理部分别输出的4组32位数据连接成的128位块数据,用最大距离分离矩阵施加线性扩展处理后输出到下段组成的串行连接的多个段区;以及与上述串行连接的多个段区中最后段区的后段连接,将上述段区输出的128位块数据作为输入,相对于4分割该块数据而成的4组32位数据分别施加局部的线性扩展处理与非线性处理后输出的4个第二非线性变换处理部;且具备有与上述4个第二非线性变换处理部的后段接续,相对于由此4个第二非线性变换处理部分别输出的4组32位数据连接成的128位的块数据进行128位的密钥数据加法运算,而作为128位的加密块数据输出的第一密钥加法部,而上述第一非线性变换处理部与第二非线性变换处理部的各个都包括有对所给的一组前述32位数据再4分割成的4组8位数据分别进行8位密钥数据加法运算的4个第二密钥加法部;相对于各第二密钥加法部,分别用8位输入输出变换表进行非线性变换的4个第二非线性变换处理部;相对于此4个第二非线性变换处理部分别输出的4组8位数据连接成的32位数据,用最大距离分离矩阵施加线性扩展处理的第二扩展处理部;在此第二扩展处理部的后段上再接续的4组前述的第二密钥加法部以及第三非线性变换处理部。
10.块数据加密装置,此装置包括除128位成为64位,4组成为2组这几点外,其余与权利要求9相同,在此予以略去。
11.记录有块数据加密程序的计算机可读记录媒体,此加密程序包括由计算机将把块数据分割成多段所得的各部分进行局部扩展的第一程序代码,以及由计算机对于进行上述局部扩展的块数据进行比前述部分更广范围扩展的第二程序代码。
12.权利要求11所述的记录媒体,其中上述第一程序代码对将块数据分割成多段所得各个部分数据施加非线性变换处理,上述第二程序代码对上述非线性变换处理过的块数据,对于比上述部分数据更广范围的数据施加线性扩展处理,上述非线性变换处理在对将上述部分数据分成多段而得到的各细分数据施加非线性变换处理后,对于比此细分数据更广范围的数据作线性扩展处理。
13.块数据加密方法,此方法包括将对块数据作许多分割后得到的各部分进行局部搅拌的第一处理;对于从上述第一处理部输出的块数据进行比前述部分更广范围扩展的第二处理。
14.权利要求13所述的加密方法,此方法包括所述第一处理对将块数据作许多分割后得到的各个部分数据施加非线性变换处理;所述第二处理对于多个上述第一非线性处理输出的块数据,对于比前述部分数据更广范围的数据施加线性扩展处理,上述第一处理则包括对于将所述部分数据分成多段所得的各个细分数据施加非线性变换处理的第二非线性处理;以及相对于多个上述第二非线性处理输出的部分数据,对于比所述细分数据更广范围的数据施加线性扩展处理的第二线性扩展处理。
15.分块加密数据的译码装置,此装置包括将对加密块数据作许多分段后得到的各个部分进行局部扩展的第一处理部;对于从上述第一处理部输出的块数据进行比前述部分更广范围扩展的第二处理部。
16.权利要求15所述的译码装置,其中所述第一处理部具有将对块数据作许多分割后得到的部分数据的各个施加非线性变换处理的第一非线性处理部;所述第二处理部具有对上述第一非线性处理部输出的块数据,将线性扩展处理施加到比前述部分数据更广范围数据上的第一线性扩展处理部;上述第一非线性变换处理部的至少一部分具有对所述部分数据作许多分割得到的细分数据各个加以非线性变换处理的多个第二非线性处理部;以及对上述多个第二非线性处理部输出的部分数据将线性扩展处理施加到比前述细分数据更广范围数据上的第二线性扩展处理部。
17.记录加密块数据译码程序的计算机可读记录媒体,此译码程序包括由计算机将把块数据分割成多段所得的各部分进行局部扩展的第一程序代码,以及由计算机对于进行上述局部扩展的块数据进行比前述部分更广范围扩展的第二程序代码。
18.权利要求17所述的记录媒体,其中上述第一程序代码对将块数据分割成多段所得各个部分数据施加非线性变换处理,上述第二程序代码对上述非线性变换处理过的块数据,对于比上述部分数据更广范围的数据施加线性扩展处理,上述非线性变换处理在对将上述部分数据分成多段而得到的各细分数据施加非线性变换处理后,对于比此细分数据更广范围的数据作线性扩展处理。
19.块数据的译码方法,此方法包括将对块数据作许多分割后得到的各部分进行局部搅拌的第一处理;对于从上述第一处理部输出的块数据进行比前述部分更广范围扩展的第二处理。
20.权利要求13所述的加密方法,其中所述第一处理对将块数据作许多分割后得到的各个部分数据施加非线性变换处理;所述第二处理对于多个上述第一非线性处理输出的块数据,对于比前述部分数据更广范围的数据施加线性扩展处理,上述第一处理则包括对于将所述部分数据分成多段所得的各个细分数据施加非线性变换处理的第二非线性处理;以及相对于多个上述第二非线性处理输出的部分数据,对于比所述细分数据更广范围的数据施加线性扩展处理的第二线性扩展处理。
21.用于块数据加密装置中的利用最大距离分离矩阵来扩展块数据的运算装置,此装置包括对于将块数据作多段分割得到的部分数据所对应的位位置的数据与最大分离矩阵的各元进行不考虑溢位乘法的乘法器;对于部分数据的高位预定位与用于调整溢位的反馈字的对应关系预先作许多规定的表;以前述部分数据的高位预定位为密钥,从上述表读出用于调整溢位的反馈字,将上述乘法装置所得的相乘结果与读出的反馈字取“异”的电路,而此“异”电路的输出便成为考虑了溢位的乘法运算结果。
全文摘要
本发明提供一种块数据加密装置,它包括将对块数据作许多分段后得到的各部分进行局部扩展的第一处理部以及对于此第一处理部输出的块数据进行比前述部分更广范围扩展的第二处理部。第一处理部具有对块数据作许多,分段后得到的各个部分数据作非线性变换处理的第一非线性处理部,第二处理部具有对第一非线性处理部输出的块数据将线性扩展处理施加到比前述部分数据更广范围数据上的第一线性扩展处理部;第一非线性变换处理部的至少一部分具有对上述部分数据作许多分段得到的细分段数据各加以非线性变换处理的第二非线性处理部,以及对第二非线性处理部输出的部分数据将线性扩展处理施加到比前述细分段数据更广范围数据上的第二线性扩展处理部。
文档编号G09C1/00GK1312630SQ01110940
公开日2001年9月12日 申请日期2001年3月6日 优先权日2000年3月6日
发明者大熊建司, 村谷博文, 川村信一, 佐野文彦 申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1