数据变换装置和数据变换方法

文档序号:2392764阅读:186来源:国知局
专利名称:数据变换装置和数据变换方法
技术领域
本发明是在信息通信等,有关于做为保护数字信息的加密及解密及数据扩散等的数据变换装置和数据变换方法以及记录数据变换方法的记录媒体。
背景技术
图25是显示使用在记载于“现代暗号理论”(社团法人电子情报通信学会、平成9年11月15日发行、46页)的现有的DES加密的加密函数的图。
如图25所示,设置有8个S盒。该8个S盒是分别为不同的表。各表是从6位的输入数据来输出4位的输出数据。
图26是显示记载于“Specification of E2-a 128-bit BlockCipher”(Nippon Telegraph and Telephone Corporation,June 14,1998、10页)的非线性变换函数的图。
如图26所示,于各S函数部是设置有8个S盒。
在现有的加密装置中,是设置多个S盒。因为在某一加密是准备分别为不同的表,所以存储容量为比起使用1个S盒的场合更为加大,而又因为在另外的加密只使用1个S盒,所以会有所谓安全性降低的问题。
而且,于如图7所示,在设置数据正变换部(FL)250于加密部的场合时,若无设置数据逆变换部(FL-1)270于解密部则无法解密。一般,因为数据正变换部(FL)250与数据逆变换部(FL-1)270为不同的电路,所以会有所谓无法将加密部与解密部做成同一构成的课题。
而且,在产生扩展密钥的场合时,为了产生安全性更高的扩展密钥而需要复杂的操作。而且,当产生扩展密钥时,会有所谓以做为初期值被输入的密钥数据的位数必需为一定值的课题。
本发明是以提供可将加密用和解密用的电路做成同一个,而且在用以消减使用做为非线性函数计算的电路规模、程序大小、及存储器容量,来产生扩展密钥的场合时,可以简单的构成就可产生的系统做为目的。
发明的概述本发明的数据变换装置包括数据处理部,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换,其特征在于上述数据处理部是将执行数据变换的数据分割为第一数据(L)和第二数据(R)而做数据变换;而且,上述数据处理部是包括数据正变换部(FL),变换第一数据(L);及数据逆变换部(FL-1),将第二数据(R)做与上述数据正变换部(FL)的变换相反的变换。
其中,上述数据处理部具有第一输入和第二输入;及第一输出和第二输出;上述数据正变换部(FL)将变换后的数据输出至数据处理部的第一输入;上述数据逆变换部(FL-1)变换从数据处理部的第二输出所输出的数据予以输出。
其中,上述数据处理部具有第一输入和第二输入;及第一输出和第二输出,上述数据正变换部(FL)将变换后的数据输出至数据处理部的第二输入,上述数据逆变换部(FL-1)变换从数据处理部的第一输出所输出的数据予以输出。
本发明的数据变换装置包括数据处理部,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换,其特征于上述数据处理部包括非线性变换部,将数据做非线性变换;非线性变换部是包括第一变换部(s1),将欲变换的数据的一部分数据输入做为第一部分数据,以使用可将输入后的数据的值变换成其他的值予以输出的变换表T来变换第一部分数据,而输出变换后的数据;及第二变换部(s2),将欲变换的数据的至少其他的一部分数据输入做为第二部分数据,以使用可使用上述变换表T的变换与第二部分用运算来变换第二部分数据,而输出变换后的数据。
其中,上述第一变换部(s1)在变换表T输入数据y1并输出数据s1(y1),并将该数据输出做为数据z1=s1(y1),上述第二变换部(s2)在变换表T输入数据y2并输出数据s1(y2),将以循环移位处理数据s1(y2)的数据(rot(s1(y2)))输出做为数据z2=rot(s1(y2))。
其中,上述数据处理部进而包括第三变换部(s3)和第四变换部(s4),与欲变换的数据的第一部分数据和第二部分数据不同的一部分数据输入做为第三部分数据,并将与第一部分数据和第二部分数据和第三部分数据不同的一部分数据分别输入做为第四部分数据,而通过使用上述变换表T的变换及分别与第二变换部(s2)的第二部分用运算不同的第三部分用运算和第四部分用运算,来分别变换第三部分数据和第四部分数据,而输出变换后的数据。
本发明的数据变换装置包括数据处理部,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换,其特征在于上述数据处理部包括有限域变换部,输入欲变换的数据,将所输入的数据视为某一域(field)的元,而使用已使用其有限域的逆元电路加以变换,而输出变换后数据;及GF(2)上的向量空间CF(2)n的仿射变换部,将欲变换成上述有限域变换部的前段和后段的至少任何一方的CF(2n)上的数据视为自然的对应CF(2)n的元。
其中,上述有限域变换部只具有多个N/2位运算器,将N(N为偶数)位的数据X以成为X=X0+βX1(X0、X1有限域的元,β原来的域的元)的高N/2位数据X1与低N/2位数据X0予以等分,并将成为Y=Y0+βY1=1/(X0+βX1)(X=0时Y=0)的高N/2位数据Y1与低N/2位数据Y0分别以N/2位单位来运算而求得数据Y。
本发明的数据变换装置包括数据处理部,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换;及密钥产生部,产生上述数据处理部所使用的密钥数据而供应至数据处理部,其特征在于上述数据处理部具有多段非线性数据变换部,在每一段输入扩展密钥并被以多段连接来做非线性变换;上述密钥产生部是包括密钥移位部,对于上述多段非线性数据变换部的每一段而当产生欲供应的扩展密钥,则输入密钥数据与依存于从密钥数据所产生的密钥数据的至少任一数据而仅以预先所决定的位数Z1、Z2、...、Zm(在此,i、j、k是做为1~m中的任何一个值,Zk-Zi=I×(Zi+1-Zi)=I×B(I为整数,B=Zi+1-Zi))做循环移位,而从该循环移位后的密钥数据来产生各段的非线性数据变换部的扩展密钥,而且上述密钥移位部包括循环移位寄存器,在1次动作里做(Zi+1-Zi)位(B位)的循环移位;及控制部,对于已做Zi位循环移位的密钥数据通过使循环移位寄存器动作一次并使执行(Zi+1-Zi)位(B位)的循环移位,而在循环移位寄存器使产生做Zi+1位循环移位的密钥数据,并对于已做Zi+1位循环移位的密钥数据通过使循环移位寄存器动作一次并使执行I×(Zi+1-Zi)位(I×B位)的循环移位,而在循环移位寄存器使产生做Zi+2位循环移位的密钥数据。
其中,上述循环移位寄存器是在为了使循环移位寄存器动作而被供应的动作时钟的1时钟机器周期里做Zi+1-Zi位(B位)的循环移位的电路。
其中,上述循环移位电路包括选择器,以做为(Zi+1-Zi)位(B位)的值,而选择B1=8×J1+1(J1=0以上的整数)位与B2=8×J2-1(J2=1以上的整数,而J1和J2无关系,即J1≠J2或J1=J2)位的任一值。
本发明的数据变换装置包括数据处理部,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换;及密钥产生部,产生上述数据处理部所使用的密钥数据而供应至数据处理部,其特征在于上述数据处理部具有多段非线性数据变换部,在每一段输入扩展密钥并被以多段连接来做非线性变换,上述密钥产生部是包括密钥移位部,对于上述多段非线性数据变换部的每一段而当产生欲供应的扩展密钥,则仅以预先决定某一密钥数据的位数(B位)的顺序来做循环移位,而从该循环移位后的密钥数据来产生供应至各段的非线性数据变换部的扩展密钥,而且上述密钥移位部在仅以B位顺序做循环移位的数据里,可无视一部分的数据而不产生扩展密钥,而后从剩余的其他数据来产生扩展密钥。
本发明的数据变换装置是包括数据处理部,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换;及密钥产生部,产生上述数据处理部所使用的密钥数据而供应至数据处理部,其特征在于上述密钥产生部包括第一G位密钥变换部,输入并变换G位的G位密钥数据,而输出G位的第一G位变换密钥数据;及第二G位密钥变换部,输入从上述第一G位变换密钥变换部所输出的第一G位密钥数据,进而予以变换而输出G位的第二G位变换密钥数据;而在上述密钥产生部输入G位密钥数据K的场合时,是将G位密钥数据K输入到第一G位密钥变换部并予以变换,而将由第一G位密钥变换部所输出的第一G位变换密钥数据K1予以输出做为G位密钥数据;在上述密钥产生部输入2G位密钥数据K的场合时,将从2G位密钥数据K产生G位密钥数据所产生的G位密钥数据予以输入到第一G位密钥变换部并变换后输出第一G位变换密钥数据K1,而将第一G位变换密钥数据K1输入到第二G位密钥变换部予以变换而输出第二G位变换密钥数据K2,将由第一G位密钥变换部所输出的第一G位变换密钥数据K1与由第二G位密钥变换部所输出的第二G位变换密钥数据K2予以连结,而输出做为变换后的2G位密钥数据(K1、K2)。
其中,上述第一G位密钥变换部是包括2段非线性数据变换部,将G位密钥数据做非线性变换;及逻辑运算部,执行自2段非线性数据变换部所输出的变换途中的G位密钥数据与第一G位密钥变换部所输入的G位密钥数据做逻辑运算。
其中,上述密钥产生部进而包括位长度变换部,于输入Q位(G<Q<2G)的密钥数据的场合时,将Q位的密钥数据做成2G位的密钥数据。
本发明的数据变换装置是包括数据处理部,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换;及密钥产生部,产生上述数据处理部所使用的密钥数据而供应至数据处理部,其特征在于包括非线性函数部(F),其包括密钥函数部,将执行数据变换的数据与密钥数据做逻辑运算;S函数部,将执行数据变换的数据予以置换变换成其他数据;及P函数部,在执行数据变换的数据间做逻辑运算;非线性函数部(F)将密钥函数部配置于S函数部与P函数部之间。
本发明的数据变换装置是包括数据处理部,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换;及密钥产生部,产生上述数据处理部所使用的密钥数据而供应至数据处理部,其特征在于包括非线性函数部(F),其包括密钥函数部,将执行数据变换的数据与密钥数据做逻辑运算;S函数部,将执行数据变换的数据予以置换变换成其他数据;及P函数部,在执行数据变换的数据间做逻辑运算;非线性函数部(F)将密钥函数部配置于S函数部与P函数部两者之前及两者之后的任一者。
其中,上述S函数部包括第一变换部(s1),输入欲变换的数据的一部分数据做为第一部分数据,而使用可将输入后的数据的值变换成其他的值并予以输出的变换表T,来变换第一部分数据而输出变换后的数据;及第二变换部(s2),输入欲变换的数据的至少其他的一部分数据做为第二部分数据,而使用已使用上述变换表T的变换及第二部分用运算,来变换第二部分数据而输出变换后的数据。
本发明的数据变换装置包括至少执行数据的加密和数据的解密的任一种的数据变换的数据处理部,还包括非线性函数部(F),其包括P函数部,在执行数据变换的数据间做逻辑运算,上述P函数输入z1、z2、...、z8的8个4n(n是1以上的整数)位数据,并包括于上述z1、z2、z3、z4的4个数据里,执行至少2个以上的数据的异或逻辑运算而得到4n位的结果的U1电路;于上述z5、z6、z7、z8的4个数据里,执行至少2个以上的数据的异或逻辑运算而得到4n位的结果的U2电路;执行U1与U2的异或逻辑运算而得到4n位的结果的U3电路;对于U1做循环移位的循环电路;及执行上述循环电路的输出与U3的异或逻辑运算而得到4n位的结果的U4电路;将上述U3、U4分别分割成4个而做为z′1、z′2、...、z′8的8个n位数据而输出。
本发明的数据变换方法是以实行输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换的数据处理,其特征在于上述数据处理将执行数据变换的数据分割为第一数据(L)和第二数据(R);而且上述数据处理包括数据正变换处理(FL),变换第一数据(L);及数据逆变换处理(FL-1),将第二数据(R)做与上述数据正变换处理(FL)的变换相反的变换。
本发明的数据变换方法是以实行输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换的数据处理,其特征在于上述数据处理包括非线性变换处理,将数据做非线性变换;非线性变换处理包括第一变换处理(s1),将欲变换的数据的一部分数据输入做为第一部分数据,使用可将输入后的数据的值变换成其他的值予以输出的变换表T来变换第一部分数据,而输出变换后的数据;及第二变换处理(s2),将欲变换的数据的至少其他的一部分数据输入做为第二部分数据,使用可使用上述变换表T的变换与第二部分用运算来变换第二部分数据,而输出变换后的数据。
本发明的数据变换方法是以实行输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换的数据处理,其特征在于上述数据处理包括有限域变换处理,输入欲变换的数据,将所输入的数据视为某一域(field)的元,而使用已使用其有限域的逆元电路加以变换,而输出变换后的数据;及GF(2)上的向量空间CF(2)n的仿射变换处理,将欲变换成上述有限域变换部的前段和后段的至少任何一方的CF(2n)上的数据视为自然的对应CF(2)n的元。
本发明的数据变换方法实行数据处理,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换;及密钥产生处理,产生上述数据处理所使用的密钥数据而供应做为数据处理,其特征在于上述数据处理具有多段非线性数据变换处理,于每一段输入扩展密钥并被以多段连接来做非线性变换,上述密钥产生处理包括密钥移位处理,对于上述多段非线性数据变换处理的每一段而当产生欲供应的扩展密钥,则输入密钥数据与依存于从密钥数据所产生的密钥数据的至少任一数据而仅以预先所决定的位数Z1、Z2、...、Zm(在此,i、j、k是做为1~m中的任何一个值,Zk-Zi=I×(Zi+1-Zi)=I×B(I为整数,B=Zi+1-Zi))做循环移位,而从该循环移位后的密钥数据来产生各段的非线性数据变换处理的扩展密钥,而且上述密钥移位处理包括循环移位处理,在1次动作里做(Zi+1-Zi)位(B位)的循环移位;及控制处理,对于已做Zi位循环移位的密钥数据通过循环移位处理动作一次并执行(Zi+1-Zi)位(B位)的循环移位,而通过循环移位处理产生做Zi+1位循环移位的密钥数据,并对于已做Zi+1位循环移位的密钥数据通过循环移位处理动作I次并执行I×(Zi+1-Zi)位(I×B位)的循环移位,而通过循环移位处理产生做Zi+2位循环移位的密钥数据。
本发明的数据变换方法实行数据处理,输入密钥数据而至少执行数据的加密和数据的解密的任一种的变换;及密钥产生处理,产生上述数据处理所使用的密钥数据而供应做为数据处理,其特征在于上述数据处理具有多段非线性数据变换处理,于每一段输入扩展密钥并被以多段连接来做非线性变换,上述密钥产生处理包括密钥移位处理,对于上述多段非线性数据变换部的每一段而当产生欲供应的扩展密钥,则仅以预先决定某一密钥数据的位数(B位)顺序来做循环移位,而从该循环移位后的密钥数据来产生供应做各段的非线性数据变换处理的扩展密钥,而且上述密钥移位处理在仅以B位顺序做循环移位的数据里,可无视一部分的数据而不产生扩展密钥,而从剩余的其他数据来产生扩展密钥。
本发明的数据变换方法实行数据处理,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换;及密钥产生处理,产生上述数据处理所使用的密钥数据而供应做为数据处理,其特征在于上述密钥产生处理包括第一G位密钥变换处理,输入并变换G位的G位密钥数据,而输出G位的第一G位变换密钥数据;及第二G位密钥变换处理,输入从上述第一G位密钥变换处理所输出的第一G位密钥数据,进而予以变换而输出G位的第二G位变换密钥数据;而在上述密钥产生部输入G位密钥数据K的场合时,将G位密钥数据K输入到第一G位密钥变换部并予以变换,而将由第一G位密钥变换处理所输出的第一G位密钥数据K1予以输出做为G位密钥数据,在上述密钥产生部输入2G位密钥数据K的场合时,将从2G位密钥数据K产生G位密钥数据所产生的G位密钥数据予以输入到第一G位密钥变换部并变换后输出第一G位变换密钥数据K1,而将第一G位变换密钥数据K1输入做第二G位密钥变换处理予以变换而输出第二G位变换密钥数据K2,将由第一G位密钥变换处理所输出的第一G位变换密钥数据K1与由第二G位密钥变换处理所输出的第二G位变换密钥数据K2予以连结,而输出做为变换后的2G位密钥数据(K1、K2)。
本发明的数据变换方法实行数据处理,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换;及密钥产生处理,产生上述数据处理所使用的密钥数据而供应做为数据处理,其特征在于包括非线性函数处理(F),其包括密钥函数处理,将执行数据变换的数据与密钥数据做逻辑运算;S函数处理,将执行数据变换的数据予以置换变换成其他数据;及P函数处理,在执行数据变换的数据间做逻辑运算;非线性函数处理(F)使密钥函数动作在S函数处理与P函数处理之间。
本发明的数据变换方法实行数据处理,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换;及密钥产生处理,产生上述数据处理所使用的密钥数据而供应做为数据处理,其特征在于包括非线性函数处理(F),其包括密钥函数处理,将执行数据变换的数据与密钥数据做逻辑运算;S函数处理,将执行数据变换的数据予以置换变换成其他数据;及P函数处理,在执行数据变换的数据间做逻辑运算;非线性函数处理(F)使密钥函数动作在S函数处理与P函数处理两者之前及两者之后的任一者。
本发明的数据变换装置包括数据处理部,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换,其特征在于上述数据处理部包括第一输入部;第二输入部;第一输出部;第二输出部;非线性变换部,将数据的加密与数据的解密用同一算法执行;第一输入数据正变换部,变换输入于第一输入部的数据;及第二输出数据逆变换部,输入从第二输出部所输出的数据而做与上述第一输入数据正变换部的变换相反的变换。
其中,上述非线性变换部包括算法处理部,为从第一输入部输入第一输入数据;从第二输入部输入第二输入数据;使用加密用密钥数据来非线性变换第一输入数据和第二输入数据,而产生第一变换数据和第二变换数据;从第一输出部输出第一变换数据;从第二输出部输出第二变换数据;从第二输入部输入上述第一变换数据,并从第一输入部输入上述第二变换数据,而使用解密用密钥数据来非线性变换第一变换数据和第二变换数据,以产生第一输出数据和第二输出数据;在从第二输出部输出第一输出数据、从第一输出部输出第二输出数据时,使第一输入数据与第二输出数据为同一,第二输入数据与第一输出数据为同一。
其中,上述数据处理部进而包括第二输入数据正变换部,变换输入于第二输入部的数据;及第一输出数据逆变换部,输入从第一输出部所输出的数据,而做与上述第二输入数据正变换部的变换相反的变换。
本发明的数据变换装置包括数据处理部,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换;及密钥产生部,产生上述数据处理部所使用的密钥数据而供应至数据处理部,其特征在于上述数据处理部包括非线性函数部(F),将执行数据变换的数据做非线性变换,上述密钥产生部加工供应至非线性函数部(F)的密钥数据,而将加工后的密钥数据供应至数据处理部的非线性函数部(F)以外的部分并与数据做运算。
本发明的数据变换方法实行数据处理,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换;及密钥产生处理,产生上述数据处理所使用的密钥数据而供应做为数据处理,其特征在于上述数据处理包括非线性函数处理(F),将执行数据变换的数据做非线性变换,上述密钥产生处理加工供应到非线性函数处理(F)的密钥数据,而将加工后的密钥数据供应至数据处理的非线性函数处理(F)以外的处理并与数据做运算。
而且,该发明的特征是为记录用以在计算机上执行上述数据变换方法的程序的计算机可读取存储记录媒体。
而且,该发明的特征是用以在计算机上执行上述数据变换方法的程序。
附图的简单说明

图1是显示加密用数据变换装置100和解密用数据变换装置400的图。
图2是码及符号的说明图。
图3是加密部200或解密部500的构成图。
图4是加密部200或解密部500的其他构成图。
图5是数据正变换部(FL)251的构成图。
图6是数据逆变换部(FL-1)271的构成图。
图7是显示现有的加密部和解密部的一部。
图8是显示加密部200或解密部500的一部分的图。
图9是显示置于点对称的数据正变换部(FL)251和数据逆变换部(FL-1)271的图。
图10是显示成为点对称的数据正变换部(FL)251和数据逆变换部(FL-1)271的图。
图11是显示非线性函数F的图。
图12是S盒第一变换部13和S盒第二变换部14的构成图。
图13是S盒变换部21的构成图。
图14是线性变换部85的构成图。
图15是线性变换部87的构成图。
图16是密钥产生部300或密钥产生部600的构成图。
图17是位长度变换部310的动作说明图。
图18是移位寄存器A341的构成图。
图19是移位控制部345的控制表的构成图。
图20是移位寄存器A341和移位寄存器B342的动作说明图。
图21是移位寄存器A341和移位寄存器B342与扩展密钥的对应图。
图22是移位寄存器A341~移位寄存器D344的动作说明图。
图23是移位寄存器A341~移位寄存器D344与扩展密钥的对应图。
图24是显示实装加密用数据变换装置100和解密用数据变换装置400的计算机的图。
图25是现有的DES的加密函数的构成图。
图26是显示现有的128位块加密E2的非线性函数的图。
图27是显示S盒变换部的其他的例的图。
图28是显示使用S盒第一~第四变换部的非线性函数部F的图。
图29是变更密钥函数部25的配置的图。
图30是变更密钥函数部25的其他的图。
图31是P函数部30的其他的构成图。
图32是P函数部30的其他的构成图。
图33是显示图31的S1~S4的构成的图。
图34是等价密钥的非存在证明的说明图。
图35是等价密钥的非存在证明的说明图。
图36是加密部200或解密部500的其他的构成图。
图37是加密部200或解密部500的其他的构成图。
图38是加密部200或解密部500的其他的构成图。
图39是加密部200或解密部500的其他的构成图。
图40是加密部200或解密部500的其他的构成图。
图41是加密部200或解密部500的其他的构成图。
图42是合并图39和图40的场合的图。
图43是对于图3所示的加密部200或解密部500而使用图28所示的非线性函数部F的场合的构成图。
图44是显示使用从图43所示的非线性函数部F来删除密钥函数部25的非线性函数部F′的场合的图。
图45是显示对于图44的构成更进而与扩展密钥一起执行白扩展密钥的运算的场合的图。
图46是显示于非线性函数部F取得如图29所示那样的构成的场合时,从非线性函数部F来删除密钥函数部25,代以将扩展密钥k供应至XOR电路298的图。
图47是显示于非线性函数部F取得如图30所示那样的构成的场合时,从非线性函数部F来删除密钥函数部25,代以将被非线性变换的扩展密钥k′供应至XOR电路298的图。
实施形态一图1是显示该实施形态的加密用数据变换装置100和解密用数据变换装置400的图。
加密用数据变换装置100是输入例如为128位的明文,而输出128位的密文的加密装置。解密用数据变换装置400是输128位的密文,而输出128位的明文的解密装置。加密用数据变换装置100是由加密部200及密钥产生部300所构成。密钥产生部300是输入128位或192位或256位的密钥数据,以使用常数Vi来产生多(n个)的64位或128位的扩展密钥来供应加密部200。解密用数据变换装置400包括解密部500及密钥产生部600。解密部500是输入密文,而执行密文的解密的解密用数据处理部。密钥产生部600是与前述的密钥产生部300相同或相像。而且,加密部200及解密部500可使用同一结构,在图中,虽以图显示分为加密部200及解密部500,但可兼用1个电路或1个程序。同样地,密钥产生部300及密钥产生部600也可兼用1个电路或1个程序。即,加密用数据变换装置100及解密用数据变换装置400是可兼用同一电路或同一程序。
图2是显示使用在以下的图及说明中的符号的意思。
以下,在图3以后的各图中,是将左侧数据称为左数据L,在图中,将右侧数据称为右数据R。而且,将输入至非线性数据变换部210、220、230、240称为输入数据,将非线性数据变换部210、220、230、240称为中间数据,从非线性数据变换部210、220、230、240所输出的数据称为输出数据。
图3是显示加密部200或解密部500之一例的图。
图3是显示6段非线性数据变换部210和6段非线性数据变换部220和6段非线性数据变换部230成为纵向连接的情形。于6段非线性数据变换部210与6段非线性数据变换部220之间是设置数据正变换部(FL)251及数据变换部(FL-1)271。而且,于6段非线性数据变换部220与6段非线性数据变换部230之间是设置数据正变换部(FL)253及数据逆变换部(FL-1)273。于6段非线性数据变换部210之中是设置6段非线性数据变换部。例如1个非线性数据变换部280是由非线性函数部F和XOR(异或逻辑)电路290所构成。如此而来,在图3中是设置全部18段的6段非线性数据变换部。
非线性数据变换部210包括第一个非线性数据变换部280,对于任意2个右输入数据R0和左输入数据L0,将上述左输入数据L0以使用第一个扩展密钥k1做第一个非线性变换,而将该第一个做非线性变换的输出数据与上述右输入数据R0的异或逻辑以做为第一个左中间数据L1加以输出,并将上述左输入数据L0以做为第一个右中间数据R1加以输出;及第二个非线性数据变换部281,将上述第一个左中间数据R1以使用第二个扩展密钥k2做第二个非线性变换,而将该第二个做非线性变换的输出数据与上述第一个右中间数据R1的异或逻辑以做为第二个左中间数据L2加以输出,并将上述第一个左中间数据L1以做为第二个右中间数据R2加以输出;而从第一个非线性数据变换部280以纵向连接第六个非线性数据变换部285,将最终的右中间数据R6和左中间数据L6做为变换后的输出数据。
图4是显示对于图3的加密部200还追加数据正变换部(FL)255和数据逆变换部(FL-1)275和6段非线性数据变换部240,而通过全部24段非线性数据变换部来执行变换的情形。
图5是显示数据正变换部(FL)251的图。
在图5中,是显示将数据正变换部(FL)251的输入数据分为左输入数据51和右输入数据52,于执行逻辑运算后,通过左输入数据60和右输出数据61而做成输出数据的情形。左输入数据51是在AND电路54中,与扩展密钥53做逻辑积运算,其后,在1位循环左移位部中,执行向左的1位循环移位(也称为循环移位)。移位后是由XOR电路56来与右输入数据52做异或逻辑运算。XOR电路56的输出成为右输出数据61,同时在OR电路58中,与扩展密钥57做逻辑和运算,其结果为,进而在XOR电路中执行与左输入数据51的异或逻辑的运算,而成为左输出数据60。
图6是显示数据逆变换部(FL-1)271的图。
在图6中,将输入数据分为左输入数据71和右输入数据72,于执行逻辑运算后,通过左输出数据80和右输出数据81而做成输出数据的情形。
右输入数据72是在OR电路74中,做与扩展密钥73的OR逻辑运算,进而,在XOR电路75中,做与左输入数据71的异或逻辑运算。其结果为,来自XOR电路75的输出成为左输出数据80,同时在AND电路757中,做与扩展密钥76的AND逻辑运算,并在1位循环左移位部78中,执行向左方向的1位循环左移位,其结果为,进而,在XOR电路79中与右输入数据72做异或逻辑运算,而成为右输出数据81。
图5所示的数据正变换部(FL)251与图6所示的数据逆变换部(FL-1)271是做正逆相反的操作。因而,在同一的扩展密钥之下通过将图5的输出数据Y做成图6的输出数据Y,可以做为图6的输出数据X而可得到图5的输入数据X。
如此而来,通过将一方的输出数据做成他方的输入数据,而将以做为他方的输出数据而可得到一方的输入数据的关系称为处在正变换和逆变换的关系。数据正变换部(FL)251与数据逆变换部(FL-1)271是执行如此的正变换与逆变换的电路。
还有,图5的1位循环左移位部55与图6的1位循环左移位部78虽是一起向左移位,但两方也可一起执行向右移位。而且,假如数据正变换部(FL)251与数据逆变换部(FL-1)271是执行正变换与逆变换,则也可为其他构成。例如,也可改变循环的移位数。而且,更进而可附加含有not的AND电路、not的OR电路、及含有not的XOR电路。即,于分别将含有not的AND电路、not的OR电路、及含有not的XOR电路表示为andn、orn、xorn的场合时,定义以下。
x andn y(not x)and yx orn y(not x)or yx xorn y(not x)and y在最近的几个CPU,具有也含有not的and、or、xor命令。这些的命令是可以与and、or、xor命令同样的成本来执行。
图7是显示现有的加密部201和现有的解密部501。
在现有的加密部201中,设置2个数据正变换部FL。因此,为了做该逆操作,而必需于解密部放置2个数据逆变换部FL-1。因而,一般加密部与解密部的构成是不同的,而无法将加密部和解密部做成同一电路。
一方面,如图8所示,在该实施形态中,在加密部200,因为将数据正变换部(FL)251和数据逆变换部(FL-1)271相邻配置,所以即使在解密部500也可以完全相同的构成来执行解密。例如,在在数据正变换部(FL)251变换右数据R而得到左数据L′,在数据逆变换部(FL-1)271变换左数据L而得到右数据R′的场合时,通过使左数据L′输入于数据逆变换部(FL-1)271而可得到右数据R,并通过使右数据R′输入于数据正变换部(FL)251而可得到左数据L。
如此而来,加密部200和解密部500是可以完全相同的构成来实现,而可兼用加密部200和解密部500来使用。
图9是显示在以非线性数据变换部280为中心而数据正变换部(FL)251与数据逆变换部(FL-1)271成为点对称的位置的情形。
因此,在以非线性数据变换部280为中心而将数据正变换部(FL)251与数据逆变换部(FL-1)271置于点对称的位置的情形时,可以通过同一构成而执行加密和解密。
图10是显示置于点对称的位置的数据正变换部(FL)与数据逆变换部(FL-1)的对应。
如图10所示,在图3中显示数据正变换部(FL)251与数据逆变换部(FL-1)273配置于以6段非线性数据变换部220做为中心的点对称的位置。
还有,在图3、图4、图8、及图9中,数据正变换部(FL)与数据逆变换部(FL-1)的位置也可相反。而且,在图3、图4、图8、及图9中,右数据R与左数据L也可相反。
图36是显示使用6段非线性数据变换部210与6段非线性数据变换部220与6段非线性数据变换部230而构成加密部200的情形。
6段非线性数据变换部210与6段非线性数据变换部220与6段非线性数据变换部230是可使用于加密和解密两方的电路。
在此,通过6段非线性数据变换部210与数据正变换部(FL)250与数据逆变换部(FL-1)271而构成正逆数据变换部211。在此,所谓正逆数据变换部是指可使用于加密和解密两方的电路。即,正逆数据变换部是执行通过将一方的输出数据做成他方的输入数据,并可以他方的输出数据来取得一方的输入数据的正变换和逆变换的1个电路。
而且,通过6段非线性数据变换部220与数据正变换部(FL)251与数据逆变换部(FL-1)273而构成正逆数据变换部221。
而且,通过6段非线性数据变换部230与数据正变换部(FL)253与数据逆变换部(FL-1)275而构成正逆数据变换部231。
将这些正逆数据变换部211与正逆数据变换部221与正逆数据变换部231以纵列连接而构成加密部200。因而,该加密部200即使做为解密部500也可使用。
而且,假如将6段非线性数据变换部210与6段非线性数据变换部220与数据正变换部(FL)251与数据逆变换部(FL-1)271视为非线性数据变换部1210,则非线性数据变换部1210是可使用于加密和解密两方的电路。在此,通过非线性数据变换部1210与数据正变换部(FL)250与数据逆变换部(FL-1)273而构成正逆数据变换部1211。
而且,6段非线性数据变换部220与6段非线性数据变换部230与数据正变换部(FL)253与数据逆变换部(FL-1)273视为非线性数据变换部1220,则通过非线性数据变换部1220与数据正变换部(FL)251与数据逆变换部(FL-1)275而构成正逆数据变换部1221。
所谓正逆数据变换部1211和正逆数据变换部1221均可使用于解密部500。
而且,假如将从6段非线性数据变换部210至6段非线性数据变换部230止视为非线性数据变换部2210,则非线性数据变换部2210为可使用于加密和解密两方的电路。
在此,通过非线性数据变换部2210与数据正变换部(FL)250与数据逆变换部(FL-1)275而构成正逆数据变换部2211。
正逆数据变换部2211即使解密部500也可使用。
如以上所述,加密部200或解密部500通过将正逆数据变换部多纵向连接而构成。
而且,加密部200或解密部500通过使正逆数据变换部含于正逆数据变换部之中,可将正逆数据变换部做成阶层化而构成。
图37是显示包括6段非线性数据变换部210的加密部200与解密部500成为同一构成的例。
图37的6段非线性数据变换部210是如图3、及图4的所示,具有偶数段的非线性数据变换部280。数据A成为第一个输入数据正变换部256所变换的数据A′,被输入于第一输入部261,而从第一输入部261所输入的数据A′从第一输出部263做为数据A1′而被输出。而且,从第二输入部262所输入的数据B从第二输出部264做为数据B1而被输出。从第二输出部264所输出的数据B1做为由第二输出数据逆变换部279所变换的数据B1′而被输出。
从加密部200的第一个输出部263所输出的数据A′做为数据A′而被输入于解密部500的第二输入部262。从加密部200的第二输出数据逆变换部279所输出的数据B1′做为数据B1′而被输入于解密部500的第一输入数据正变换部256,并做为数据B1而被输出。
非线性数据变换部210输入数据B1而输出数据B。而且,非线性数据变换部210输入数据A1′而输出数据A′。第二输出数据逆变换部279是输入数据A′而输出数据A。
在图38,是奇数段的非线性数据变换部219含有奇数段的非线性数据变换部280。因而,从第一输入部261所输入的数据A′从第二输出部264做为数据A1′而被输出,并被第二输出数据逆变换部279所变换,做为数据A″而被输出。而且,从第二输入部262所输入的数据B从第一输出部263做为数据B1而被输出。
从加密部200的第一输出部263所输出的数据B1做为数据B1而被输入于解密部500的第二输入部262。从解密部500的第二输出数据逆变换部279所输出的数据A1″做为解密部500的数据A1″,而被输入于第一输入数据正变换部256。
图37、及图38的场合是加密部200与解密部500均为同一构成,而可做加密、及解密。
图39是显示于第二输入部262设置第二输入数据正变换部257、及于第一输出部263设置第一输出数据逆变换部278的情形。
图40是显示于第一输入部261设置第一输入数据逆变换部276、及于第二输出部264设置第二输出数据正变换部259的情形。
图41是显示于左侧的输入输出部261、263设置数据正变换部256、258、及于右侧的输入输出部262、264设置数据逆变换部277、279的情形。
图42是显示合并图39与图40的情形。
虽未加以图示,但也可合并图37与图39。而且,也可合并图38与图39。而且,虽未加以图示,但也可从图39来将图42的6段(偶数段)的非线性数据变换部210做为奇数段的非线性数据变换部219。从图39到图42的场合也可以加密部200和解密部500的同一构成来实现。
实施形态2图11是非线性数据变换部280的非线性函数部F的构成图。
非线性函数部F输入F函数输入数据10,而执行非线性变换来输出F函数输出数据40。64位的F函数输入数据10可分为8个数据,而以做为8位数据加以处理。各8位数据输入于密钥函数部25的8个XOR电路12,并与扩展密钥11做异或逻辑运算,在S函数部20中,接受使用置换的非线性变换。其后,在P函数部30中,在8位数据间通过如图所示的16个XOR电路815而执行运算,并输出64位的F函数输出数据40。在S函数部20设置4个S盒第一变换部13及4个S盒第二变换部14。
图12是显示S盒第一变换部13及S盒第二变换部14的实现例。
在S盒第一变换部13的内部设置变换表T。变换表T是对于0255的值来预先存储使任意(随机)对应的0~255的值,而输入0~255的值,来输出对应于各值(0~255的值)的表。例如,在输入1的场合时,从变换表T来输出7。变换表T执行已考虑到是否为全单射、及最大差分机率为充分小等的安全性的非线性变换。
S盒第二变换部14含有S盒第一变换部13,同时具有1位循环左移位部22(图的“<<<1”的“<<<”是表示循环左移位,而“1”是表示1位)。1位循环左移位部22是对于S盒第一变换部13的输出来执行1位的循环左移位。例如,在输入1的场合时,从S盒第一变换部13来输出7,并从1位循环左移位部22来输出14。
只要以如图12般地来构成S盒第一变换部13及S盒第二变换部14,则尽管不需要具有2种类变换表T,但可得到与设置2种类变换表T的场合相同的效果。通过只具有1个变换表T,而可减少存储变换表T的存储器容量,而使整体电路变小。
而且,如图27的所示,取代1位循环左移位部22,或者通过在1位循环左移位部22之外设置1位循环右移位部(图27的S盒第三变换部15的“>>>1”),而可得到与设置更加不同的变换表T的场合相同的效果。而且,对于被输入的数据y来设置1位循环左移位部(图27的S盒第四变换部16的“<<<1”),也可先移位被输入的数据y后再根据变换表T做变换。在图27中,虽显示s(y)、s(y)<<<1、s(y)>>>1、s(y<<<1)的情形,但s(y>>>1)也可,s(y<<<1)<<<1、s(y<<<1)>>>1、s(y>>>1)<<<1、s(y>>>1)>>>1的情形也可。通过移位量做为1位,例如,在只具有1位移位命令的CPU等,也可通过做3位和5位移位,而执行高速处理等。而且,即使在使用只可做1位移位的硬件来执行该移位处理的场合时,同样地具有可适用高速处理的场合。进而,不只1位移位,即使为2位、3位等的任意位的移位也可,通过执行任意位的移位,而具有与附加不同种类的表相同的效果的场合。
图28是显示使用图27所示的4个S盒第一~第四变换部13、14、15、16的S函数部20的图。
而且,将P函数部30的其他构成显示于图31。
从8位的输入数据y1、y2、y3、y4,而分别参考S1、S2、S3、S4来求得32位的数据Z1、Z2、Z3、Z4,并以电路913来求得这些异或逻辑运算结果,而且,从8位的输入数据y5、y6、y7、y8,而分别参考S2、S3、S4、S1来求得32位的数据Z5、Z6、Z7、Z8,并以电路916来求得这些异或逻辑运算结果,在电路917取得这些异或逻辑运算结果U2与前述异或逻辑运算结果U1的异或逻辑运算而做为z′1、z′2、z′3、z′4予以输出,而且,对于根据电路913的异或逻辑运算结果U1,向左1位循环移位(在该图31中,是显示“<<<1”并非为1位,而是1字节循环移位)为以电路918来执行,以电路917的输出与电路919来执行异或逻辑运算而得到z′5、z′6、z′7、z′8。
在此,如图33的(a)~(d)的所示,是以S1为使用S盒第一变换部13、S2为使用S盒第二变换部14、S3为使用S盒第三变换部15、S4为使用S盒第四变换部16而构成,并复制4个来自各个变换部的8位输出数据而成为32位数据,进而,以只输出其中3个数据(24位)那样地,予以屏蔽而输出32位数据。
还有,上述电路918的1位的循环移位是以S盒所处理的位长度(8位=1字节)单位来移位。
图32虽是与图31为等价的构成,但却显示实装方法不同的P函数部30。
从8位的输入数据y1、y2、y3、y4,而分别参考S5、S6、S7、S8来求得32位的数据Z1、Z2、Z3、Z4,而这些是以电路933来执行异或逻辑运算,其运算结果A从电路933被输出。而且,从8位的输入数据y5、y6、y7、y8,而分别参考S9、SA、SB、SC来输出32位的数据Z5、Z6、Z7、Z8,这些为以电路936来执行异或逻辑运算,其运算结果B从电路936被输出。运算结果B是由电路937向右做1位循环移位(在该图32中,是与图31相同,并非为1位单位,而是做S盒所处理的位长度单位(1字节单位)的移位),同时在电路938与运算结果A做异或逻辑运算。该运算结果C是由电路939向上(左)做1位循环,同时在电路940与电路937的输出做异或逻辑运算。其运算结果D是由电路941向上(左)做2位循环,同时在电路942与电路939的输出做异或逻辑运算。其运算结果E是由电路943向(右)做1位循环,同时在电路944与电路941的输出做异或逻辑运算。电路944的输出F做为z′1、z′2、z′3、z′4、且电路943的输出做为z′5、z′6、z′7、z′8而被输出。
在此,是以S5、SC为使用S盒第一变换部13与逻辑移位、S6、S9为使用S盒第二变换部14与逻辑移位、S7、SA为使用S盒第三变换部15与逻辑移位、S8、SB为使用S盒第四变换部16与逻辑移位而构成。逻辑移位是为了将来自各变换部的8位输出数据输出于32位输出数据中的预定位置而被利用,以在S5、SA为0字节、在S6、SB为1字节、在S7、SC为2字节、在S8、S9为3字节向左移位般地加以设定。即,只要将在变换部的8位输出做为z,则32位的输出变成在S5、SA为
(0是表示8个各个位为0),在S6、SB为
,在S8、S9为[z、0、0、0]。
还有,实装也可是以将直接预定的输出送出般地来计算的8位输入,也可先准备32位输出的置换表。
图31、及图32的场合时是可提供以成为比在图26所示的现有的E2加密所使用的置换处理更为高速、且更柔软的实装的装置。
在图11中,在将处于S函数部20的S盒以与全种类不同的S盒予以构成的场合时,对于需要8个变换表T,以通过做成如图12的构成,而可将存储变换表T的整体存储容量做成1/2。
而且,对于图12所示的S盒第一变换部13、及S盒第二变换部14通过以分时输入8个8位数据,而可只以图12所示的S盒第一变换部13、及S盒第二变换部14来代替现有的个别的8个S盒。
图13是显示S函数部20的S盒的其他例子的图。
关于具体的构成,详细叙述于松井、及樱井所著“伽罗瓦域除法电路及乘除法共同电路”(专利证书登录号码2641285[H9.5.2])。
在S盒变换部21输入8位数据,并输出8位数据,S盒变换部21是由N(在此是N=8)位线性变换部17与有限域变换部18与N位线性变换部19所构成。N位线性变换部17执行8位操作。有限域变换部18只进行为伽罗瓦域GF(24)的元的仅4位的操作。N位线性变换部19执行8位操作。N位线性变换部17的线性变换部85是执行图14所示的线性变换的电路。而且,线性变换部87是执行图15所示的线性变换的电路。
还有,也可以使用执行仿射变换(还有,线性变换是可考虑为仿射变换的一态样)的电路来代替线性变换部85。或者是,也可使用执行仿射变换的电路来代替线性变换部87。线性变换部85是在8位的数据(X)来执行变换,而将所得到的8位的数据(X′)视为伽罗瓦域GF(28)的元,并从X′来将高4位和低4位的数据(X1和X0)分别视为有限域GF(24)的元,而输出到有限域变换部18。在此,例如将GF(28)的元β做为有限多项式X8+X6+X5+X3+1=0的元,只要一做为α=β238,则有限域GF(24)的基底表示为[1、α、α2、α3],只要一使用此来表示GF(24)的元X0、X1,则成为所谓X′=X0+βX1的关系(详细请参考“伽罗瓦域除法电路及乘除法共同电路”(专利证书登录号码2641285[H9.5.2]))。有限域变换部18是只以执行4位的运算的运算器来构成。
在此,做为“有限域”的取法是考虑对于GF(2n),为n=2m的有限域GF(2m),在此的例是n=8、m=4。
有限域变换部18是使用以“伽罗瓦域除法电路及乘除法共同电路”(专利证书登录号码2641285[H9.5.2])中所示的n=8、m=4时的电路为基础而构成的有限域的逆元电路。做为该逆元电路的运算结果,各个视为GF(24)的元的高4位的数据和低4位的数据(Y1和Y0)为做为GF(28)上的元的8位的数据Y而被输出于线性变换部87。在此,是Y=Y0+βY1。根据以上,该逆元电路是运算Y0=Y+βY1=1/(X0+βX1)的电路。而且,在该逆元电路的“有限域”的元的表示法(基底的取法)是如所谓“多项式基底”和“正规基底”那样地,可考虑几个“基底”的取法。
在图13的S盒变换部21中成为特征的点,是以为了执行非线性变换而被输入的数据的位宽度(8位)的一半的位宽度(4位)来运算的点。即,在逆元电路中,是只执行4位操作的点为其特征。
如此而来,通过执行只4位的操作而有可能使运算速度变慢,但电路整体的规模具有所谓远比使用8位的运算元件还来得小的优点。
因而,S盒变换部21的其次的特征是于前述有限域变换部18的两侧设置N位线性变换部17与N位线性变换部19之点。只要一使用有限域变换部18来实现S盒变换部21,则比起以使用存储随机的值的变换表T的场合,虽具有所谓整体电路的规模变小,或构造简单的优点,但相反地却有安全性降低的可能性。在此,在有限域变换部18的两侧执行线性变换或仿射变换,而可消除因为采用有限域变换部18所导致的安全性的降低的问题。
还有,在图13中,虽在有限域变换部18的两侧执行线性变换,但也可只设置一侧。或者是,也可在一侧做线性变换,而在另一侧执行仿射变换。
图29是将图11所示的密钥函数部25、即处于S函数部20与P函数部30之前的密钥函数部25予以配置于S函数部20与P函数部30之后。
而且,图30是将密钥函数部25配置于S函数部20与P函数部30之间。
通过如图29或图30般的构成,比起图11所示的构成,可得到所谓实装上高速成为较多的效果。进而,通过修正扩展密钥的产生,在图29或图30的构成中,从相同的输入可得到与图11的构成相同的输出。在图26所示的现有的F函数中,具有2个S函数,分别于最初执行扩展密钥的运算,其次,根据S函数执行运算。对于此,图29所示的场合是将一个密钥函数部25配置于F函数的最后。而且,图30的场合时,是将一个密钥函数部25配置于S函数部20与P函数部30之间。
图43是对于图3所示的加密部200或解密部500而使用图28所示的非线性函数部F的场合的构成图。
以做为F函数输入数据10而将左数据输入于非线性函数部F,并输出F函数输出数据40。F函数输出数据40与右数据做异或逻辑运算,其结果成为次段的左数据。而且,左数据做为F函数输入数据10而被输入于非线性函数部F,同时做为次段的右数据而被使用。在图43所示的构成中,因为在非线性函数部F之中执行密钥函数部25和S函数部20和P函数部30的运算,所以在非线性函数部F的运算负荷变成很大。对于通过执行使在该非线性函数部F的运算负荷分散,而达成处理的高速化的例,以下使用图来说明。
图44是显示以使用从图43所示的非线性函数部F之中删除密钥函数部25的非线性函数部F′的场合。扩展密钥k1在XOR电路891中与左数据L0做异或逻辑运算。而且,扩展密钥k2在XOR电路297中与右数据R0做异或逻辑运算。左数据做为F函数输入数据10而被输入于非线性函数部F′,并接受S函数部20与P函数部30的变换。XOR电路297与F函数输出数据40在XOR电路290做异或逻辑运算,而输出左数据L1。
一方面,密钥产生部300、600与扩展密钥k1和k3做异或逻辑运算,而输出该被加工的扩展密钥k1+k3。XOR电路891的输出R1与扩展密钥k1+k3在XOR电路298做异或逻辑运算,并输出右数据。密钥产生部300、600加工扩展密钥,而产生k1+k3、k2+k4、k3+k5、...、k16+k18予以输出。密钥产生部300、600将被加工的扩展密钥供应至非线性函数部(F)以外的处理而与数据做运算。该结果为,左数据L18与右数据R18可得到与图43的场合相同。
通过将被加工的扩展密钥供应至非线性函数部(F)以外的处理而与数据做运算,而在非线性函数部F′中,在做S函数部20与P函数部30的计算之间,在非线性函数F′的外部、即XOR电路297、298可做与密钥数据的计算,而密钥函数部25的计算则从非线性函数部F消失,于是非线性函数部F的负荷被分散,而高速实装成为可能。
图45是显示对于图44的构成并进而与扩展密钥一起来执行白扩展密钥kw1的运算的情形。在图45中,是显示密钥产生部为预先执行白扩展密钥的一部分kw1 high与第一扩展密钥k1的异或逻辑运算(即,密钥产生部为加工扩展密钥),而供应至XOR电路891的情形。
而且,显示密钥产生部预先执行白扩展密钥的一部分kw1 low与第二扩展密钥k2的异或逻辑运算(即,密钥产生部为加工扩展密钥),而供应至XOR电路297的情形。
如此而来,可消除图44所示的XOR电路293的运算。而且,图45的情形为,密钥产生部执行白扩展密钥kw2的一部分kw2 low与扩展密钥k17的异或逻辑运算(即,密钥产生部为加工扩展密钥),而供应至XOR电路299。而且,密钥产生部为执行白扩展密钥kw2的其他部分kw2 high与扩展密钥k18的异或逻辑运算(即,密钥产生部为加工扩展密钥),而供应至XOR电路892。
如此而来,可消除图44所示的XOR电路296的运算。
图46是显示将在非线性函数部F为取得如图29的所示的构成的场合时,从非线性函数部F删除密钥函数部25,以密钥产生部将扩展密钥k供应至XOR电路298来取代的情形。
而且,图47是显示将在非线性函数部F取得如图30的所示的构成的场合时,从非线性函数部F删除密钥函数部25,以密钥产生部将非线性变换而成的扩展密钥k′=p(k)供应至XOR电路298来取代的情形。图47的场合是显示对于密钥数据施以与依据P函数处理的运算相同的运算而产生非线性变换而成的密钥数据,将非线性变换而成的密钥数据做为上述数据处理所使用的密钥数据,而供应至数据处理的非线性函数部(F)以外的处理并使与数据做运算的情形。因为图46及图47的任一场合均可从非线性函数部F来消除密钥函数部25,所以可减少非线性函数部F的运算负荷,因为与非线性函数部F的运算平行而可执行处于非线性函数部F之外的XOR电路的运算,所以可执行高速处理。
实施形态3图16是图1所示的密钥产生部300(或密钥产生部)600的构成图。
密钥产生部300是由位长度变换部310与第一G位密钥变换部320与第二G位密钥变换部320与密钥移位部340所构成。在密钥产生部300输入128位或192位或256位的密钥数据,而产生128位的密钥数据k1与128位的密钥数据k2,并输出多个64位的扩展密钥。在位长度变换部310中,即使输入与位数不同的密钥数据,也可以使所输出的密钥数据的位长度成为一定般地进行变换。即,位长度变换部310是在内部产生高128位的密钥数据SKhigh与低128位的密钥数据SKlow,而将前者输出于第一G位密钥变换部320与密钥移位部340。而且,将后者输出于第二G位密钥变换部320与密钥移位部340。而且,将前者与后者做异或逻辑运算的128位密钥数据输出于第一G位密钥变换部320。
图17是显示位长度变换部310的内部动作的图。
在输入128位密钥数据于位长度变换部310的场合时,其所输入的密钥数据仍做为高128位密钥数据SKhigh而被输出。而且,低128位密钥数据SKlow是被设定为0而被输出。
其次,在输入192位密钥数据于位长度变换部310的场合时,其所输入的密钥数据的高128位数据仍做为高128位密钥数据SKhigh而被输出。而且,被输入的192位密钥数据的低64位数据与反相其低64位的64位反相数据连结,而产生低128位的密钥数据SKlow并予以输出。
其次,在输入256位密钥数据的场合时,被输入的密钥数据的高128位做为SKhigh、且低128位做为SKlow而被输出。
在第一G位密钥变换部320从位长度变换部310将128位密钥数据SKhigh与SKlow做异或逻辑运算结果输入,在接受2段非线性变换后,与128位密钥数据SKhigh做异或逻辑运算,进而接受2段非线性变换,输出128位密钥数据k1。
在输入于位长度变换部310的密钥数据长度为128位的场合时,使用从第一G位密钥变换部320所输出的128位密钥数据和被输入的元密钥数据而使密钥移位部340产生扩展密钥。而输入于位长度变换部310的密钥数据长度为192位或256位的场合时,进而将第一G位密钥变换部320所输出的128位密钥数据输入于第二G位密钥变换部320,而与低128位密钥数据SKlow做异或,在执行2段非线性变换后,输出128位密钥数据k2。在密钥移位部340输出从第一G位密钥变换部320与第二G位密钥变换部320两方所输出的2个128位密钥数据,使用两者与所输入的元密钥数据而使密钥移位部340产生扩展密钥。
密钥移位部340包括移位寄存器A 341与移位寄存器B 342与移位寄存器C 343与移位寄存器D 344与移位控制部345。从移位控制部345输出选择信号346到移位寄存器,而控制移位寄存器的动作。
图18是显示移位寄存器A 341的构成的图。
移位寄存器A 341包括具有128位开关群的选择器A 347;及128位的寄存器A 348。选择信号346包括开关信号,指示将选择器A 347的各开关全部同时连接于A侧或B侧的任一侧。在图中,是显示通过选择信号346而选择器A 347的开关群为选择A的情形,在该场合时,是显示寄存器A 348为循环移位于17位左侧的情形。而且,显示于开关群连接B的场合时,寄存器A以15位循环移位于左侧。该15位移位或17位移位是在一时钟机器周期里执行。
还有,循环移位的移位数(15、17)是一例,也可为其他的移位数。
图19是显示存储于移位控制部345的控制表的一部分的图。
该控制表是在每一时钟存储使寄存器移位几个位的表。例如,在寄存器A控制表中,显示在第一时钟移位15位。而且,更显示在第二时钟移位15位。同样地来显示第三时钟及第四时钟也移位15位。第五时钟~第八时钟显示分别移位17位。
图20是显示在从128位密钥数据来产生扩展密钥的场合时,移位控制部345使用图19所示的表来控制移位寄存器的结果的图。
在移位寄存器A 341设定从位长度变换部310所输入的高128位密钥数据SKhigh。在移位寄存器A 342设定从第一G位密钥变换部320所输入的128位密钥数据K1。在如此状态中,根据图19所示的控制表,而动作移位寄存器A 341及移位寄存器A 342。在图20中,无视画斜线的部分,表示不输出。在此以外的未画斜线的部分如图21所示,做为扩展密钥而被输出。
图21是显示与寄存器的值与扩展密钥的对应的图。
在图20中,显示每一时钟以每15位做4次移位,从第五时钟起每一时钟做17位移位的情形。从移位寄存器A 341与移位寄存器A 342输出或不输出高64位及低64位做为扩展密钥的判断、或者其输出的顺序号码被记载于未做图示的控制表里,而基于其控制表,通过使输入指示信号含于选择信号346而输出到移位寄存器,成为从各移位寄存器可以每64位输出扩展密钥。
图22是显示从192位或256位的密钥数据来产生扩展密钥的情形。
即,显示在移位寄存器A 341设定位长度变换部310所输入的高128位密钥数据SKhigh,在移位寄存器A 342设定低128位密钥数据SKlow,在移位寄存器A 343设定第一G位密钥变换部320所输出的128位密钥数据K1,在移位寄存器A 344设定第二G位密钥变换部320所输出的128位密钥数据K2的情形。
斜线部分是显示未使用做为扩展密钥的密钥。
图23是显示寄存器的值与扩展密钥的对应的图。
未使用做为扩展密钥的密钥和图23所示的寄存器的值与扩展密钥的对应也存储在处于前述控制部的控制表。
图19的所示,移位控制部345存储移位设定于移位寄存器A 341的密钥数据的位数。即,如移位寄存器A控制表的所示,通过使设定于移位寄存器A 341的密钥数据移动Z0=0位、Z1=15位、Z2=45位、Z3=60位、Z4=77位、Z5=94位、Z6=111位、Z7=128位,而成为一个一个地产生扩展密钥。
各移位数之和成为15+15+15+15+17+17+17+17=128,通过将128位的寄存器做128位循环移位,寄存器返回初期状态。
如此而来,将移位数的总和做为128位(寄存器的位数)而返回初期状态的理由是在对于初期状态的寄存器而有其次的处理的场合时,仍然可开始其次的处理。而且,即使在执行逆变换处理(解密)的场合时,因为从为了产生扩展密钥的处理的开始为仍然照样地从初期状态来开始,所以通过设定初期状态,而变换处理(加密)与逆变换处理(解密)均可执行。而且,将移位数的总数不做成比128位(寄存器的位数)更大,原因是因为例如128位(寄存器的位数)以下的2位循环移位与比128位(寄存器的位数)还大的130位循环移位已成为同一值,而做为依据已做为一循环以上的移位(128位以上的移位数)的寄存器内的状态,可防止相同值的发生。寄存器A控制表最好是每当寄存器做一循环,尽可能在其途中来设定成为不规则的移位数的值。然而,为了简单做成移位寄存器的构成,最好以被限制的移位数来移位。在此,将寄存器在1个时钟(1时钟)里可做15位与17位两种类的移位来加以构成,使用该两种类的移位,进而,如以下所述般地,可实现移位不同的位数。
做成所谓Z1-Z0=15(在此,设Z1-Z0=B1),Z2-Z1=30(即,Z2-Z1=2B1),Z2-Z1=2(Z1-Z0)的关系。而且,如移位寄存器B控制表的所示,做成所谓Z5-Z4=34(在此,设Z5-Z4=2B2),Z6-Z5=17(即,Z6-Z5=B2),Z5-Z4=2(Z6-Z5)的关系。即,将移位数的差分做为15位和30位或17位和34位,做成为1次的移位数(15位和17位)的整数倍(2倍=I倍)的移位数(30位或34位)。
如此而来,通过将移位数的差分做成1次的移位数或1次的移位数的2倍以上的整数倍(I倍、I是2以上的整数)的任一种,并通过使移位寄存器A 341动作1次或2次(I次),而可容易地实现存储于控制表的移位数的操作。所谓使动作2次(I次)是意味着为了动作移位寄存器A 341而被供应的动作时钟的2时钟(I时钟)机器周期里移位动作完毕。
在此,使移位I次(2次)的场合时,直至I-1次(2-1=1次)为止的已移位的数据是无视高数据与低数据,而做为扩展密钥不使用。例如,于从图19的Z1=15移位至Z2=45的场合时,成为I=(Z2-Z1)/(I次的移位数)=(45-15)/15=2,而第I-1次(2-1=第1次)的移位后的数据无视于高数据与低数据,而做为扩展密钥不使用。此在图20中为在key[8]和key[9]画斜线,而表示做为扩展密钥不使用。因而,以使用第I次(第2次)的移位后的高数据与低数据的任一方或两方做为扩展密钥。此是表示在图20中将key[12]和key[13]做为扩展密钥予以输出。
如此而来,因为执行2以上的整数倍的移位,并不仅为15位或17位的移位,也可执行30(=15×2)位或34(=17×2)位(或45(=15×3))位或51(=17×3)位等的移位,而使移位数变化,因而更提高了安全性。而且,即使是设置前述的做为扩展密钥未使用的场合时,同样地也是为了提高安全性。
做为扩展密钥未使用的数据(在图20和图22中,做为画斜线的扩展密钥未使用的密钥)是最好产生于如硬件的处理、或程序的处理为未连续执行的场合时。例如,在图3中,最好于执行数据正变换部(FL)与数据逆变换部(FL-1)的操作时,或者于其前后,或在程序中调用函数,或在执行副程序或中断处理的场合时的处理的分界线,或在处理的变化时来执行。
而且,图19所示的控制表的特征是指定B1=8×2-1=15(B1=8×J1-1,在此J1是1以上的整数)位的移位数、及B2=8×2+1=17(B2=8×J2+1,在此J2是0以上的整数,J1=J2或J1≠J2)位的移位数。通过将移位的量做成于8的倍数±1,而成为执行奇数位的移位,所以比起仅以偶数位移位其安全性更加提高。而且因为做为移位量而仅执行于8的倍数±1,所以会有在只具有1位移位命令的CPU等中,比起移位3位和5位,有时更可执行高速处理。而且,即使在使用只可以移位1位的硬件来执行该移位处理的场合时,同样地,也会有可适用高速处理的场合。
在前述位长度变换部310的说明中,虽显示输入3种类的位宽度的密钥数据的场合,但于输入具有128位(G位)和256位(2G位)间的位长度Q(G<Q<2G)的密钥数据的场合时,也可使用任何算法处理而可以与输入256位的密钥数据的场合同样大小般地来伸长密钥数据。即,在输入具有G位和2G位间的长度Q的密钥数据的场合时,通过位长度变换部310而可将Q位的密钥数据变换成2G位的密钥数据。
其次,使用图34来说明等价密钥的非存在证明。
在以下的图34的说明中,以“+”来意味为异或逻辑运算。
在此,做成输入2个128位的密钥数据SK1和SK2(SK1≠SK2),并做成位长度变换部310为从SK1输出SK1high=SK1=(SKH1SKL1),且从SK2输出SK2high=SK2=(SKH2|SKL2)。在此,SKHi(i=1、2)是S ki的高64位数据,而SKLi(i=1、2)是Ski的低64位数据。
将SKH1与SKH2做异或逻辑运算结果做为ΔA,将SKL1与SKL2做异或逻辑运算结果做为ΔB,因为SK1≠SK2,所以成立“至少ΔA≠0或ΔB≠0”。
如图34的所示,通过该ΔA与ΔB接受2段非线性变换,而变化成ΔA+ΔD、及ΔB+ΔC。此是意味着SK1high与SK2high的异或逻辑运算结果(ΔA|ΔB)变化成自接受2段非线性变换的数据与自SK2high接受2段非线性变换的数据做异或逻辑运算的结果(ΔA+ΔD|ΔB+ΔC)。因而,只要接受该2段非线性变换的数据在异或逻辑电路999分别与SK1high、SK2high做异或逻辑运算,则该两个数据的异或逻辑运算结果便成为(ΔD|ΔC)。还有,在此若非线性变换为全单射函数,则对于ΔX≠0的输入,因为输出ΔY≠0,所以若为“至少ΔA≠0或ΔB≠0”,则成为“至少ΔC≠0或ΔD≠0”。所以,意味着绝无通过2段非线性变换而从SK1high和SK2high输出相同数据的情形,成为等价密钥的非存在证明。
一方面,如图35的所示,不仅执行2段非线性变换,也可考虑关于3段非线性变换的场合。因为成立“至少ΔA≠0或ΔB≠0”,所以会有ΔA或ΔB的任一个为0的情形。假如ΔA=0则ΔC=0,而且,通过与上述相同的计论,则SK1high与SK2high的异或逻辑运算结果(0|ΔB)变化成自SK1high接受3段非线性变换的数据与自SK2high接受3段非线性变换的数据做异或逻辑运算的结果(ΔB+ΔE|ΔD)。因而,只要接受该3段非线性变换的数据在异或逻辑电路999分别与SK1high、SK2high做异或逻辑运算,则该两个数据的异或逻辑运算结果便成为(ΔB+ΔE|ΔB+ΔD)。还有,在此若假定ΔB=ΔD=ΔE≠0成立,则成为(ΔB+ΔE|ΔB+ΔD)=(0|0)。总之,意味着只要分别与SK1high和SK2high做异或逻辑运算,则其运算结果为一致。即,意味着从SK1high和SK2high输出相同数据的情形,即为加密的安全性问题上很多的等价密钥存在着。
不仅以上所述的3段非线性变换,即使在一般的非线性变换上也有从不同的SK1和SK2输出等价的K1,即有存在等价密钥的可能性,但可证明若为在本实施形态中所述的2段非线性变换则等价密钥即不存在。
而且,附上等价密钥的非存在证明,是因为虽可想到在该2段非线性变换之外也有,但在执行2段非线性变换的场合时,因为除了可附上等价密钥的非存在证明,且为简单的构成,所以做成2段非线性变换的构成最佳。
图24是显示实装加密用数据变换装置100或解密用数据变换装置400的计算机的图。
加密用数据变换装置100或/及解密用数据变换装置400做成印刷电路板连接于总线。在该印刷电路板包括CPU、存储器或逻辑电路元件,并通过执行前述说明过的动作将由CPU所供应的明文做成密文,再送回CPU。或者是,将从CPU送过来的密文解密成明文,再送回CPU。
加密用数据变换装置100或解密用数据变换装置400可全部以使用硬件来加以实现。而且,加密用数据变换装置100或解密用数据变换装置400也可全部以使用软件而做为数据变换方法来加以实现。即,使用存储于硬盘装置和软盘装置的程序而可使执行前述的动作。或者是,虽未予以图示,但也可组合硬件和软件使实现前述的动作。而且,虽未予以图示,无需以一台计算机来实现前述的动作全部,而也可以如服务器与客户终端、或主计算机与终端计算机那样地,在被分散的系统中来达成前述的动作。
在前述的图1-图47的图中记载有箭头的图其箭头的方向表示动作的流向,在前述的图1~图47的图中记载有箭头的图是数据变换装置的方块图,而且也为流程图。因而,在前述的方块图的记载有“什么部”的部分是通过改成“什么步骤”或“什么处理”,而成为表示数据变换方法的动作流程图或程序流程图。
还有,在前述的实施形态中,虽显示128位的明文和密文的场合,但也可为256位的明文和密文及其他位的明文和密文的场合。
而且,在前述的实施形态中,虽显示128、192、256位的密钥数据和64位的扩展密钥的场合,但也可为其他位数的场合。
在明文和密文和扩展密钥的位长度改变的场合时,不用说以对应其位长度,各部和各步骤和各处理的所处理的位长度也要改变。
产业上的可利用性若依据该发明的实施形态,则因为加密和解密可在同一处理步骤来执行,包括数据正变换部(FL)251及数据逆变换部(FL-1)271,所以可兼用加密部200和解密部500来加以使用。
而且,若依据该发明的实施形态,则因为兼用变换表T来构成S盒第一变换部13及S盒第二变换部14,所以会有所谓构成变为简单的效果。
而且,若依据该发明的实施形态,则因为使用有限域变换部18,所以构成变为简单,同时因为设置线性变换部85及线性变换部87,所以即使在使用有限域变换部18的场合时也可使安全性提高。
而且,若依据该发明的实施形态,则通过移位控制部345以整数次动作移位寄存器来执行可使用非仅15位和17位的一定值的移位数(例如,30位和34位)密钥数据的移位,故可提高安全性。
而且,若依据该发明的实施形态,则因为在移位寄存器设置从被移位的数据做为扩展密钥不使用的场合,所以更可提高安全性。
而且,若依据该发明的实施形态,则因为即使在输入位数不同的密钥数据的场合时,通过位长度变换部310变换成一定长度的密钥数据,所以可执行具有柔软性的密钥产生操作。
而且,若依据该发明的实施形态,则通过在第一G位密钥变换部320使用2段非线性变换,而可证明对于K1并不存在等价密钥,而可使安全性提高。
而且,若依据该发明的实施形态,则因为变更密钥函数部25的配置位置,所以可行高速处理。
权利要求
1.一种数据变换装置,包括数据处理部,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换;及密钥产生部,产生上述数据处理部所使用的密钥数据而供应至数据处理部,其特征在于上述数据处理部包括非线性函数部(F),将执行数据变换的数据做非线性变换;上述密钥产生部加工供应至非线性函数部(F)的密钥数据,而将加工后的密钥数据供应至数据处理部的非线性函数部(F)以外的部分并与数据做运算。
2.一种数据变换方法,实行数据处理,输入密钥数据而至少执行数据的加密和数据的解密的任一种的数据变换;及密钥产生处理,产生上述数据处理所使用的密钥数据而供应做为数据处理,其特征在于上述数据处理包括非线性函数处理(F),将执行数据变换的数据做非线性变换;上述密钥产生处理加工供应到非线性函数处理(F)的密钥数据,而将加工后的密钥数据供应至数据处理的非线性函数处理(F)以外的处理并与数据做运算。
全文摘要
可将加密部200和解密部500兼用同一电路。以非线性数据变换部200为中心而将数据正变换部(FL)251与数据逆变换部(FL
文档编号G09C1/00GK1734526SQ20051009129
公开日2006年2月15日 申请日期2001年3月8日 优先权日2000年3月9日
发明者松井充, 时田俊雄, 中岛纯子, 神田雅透, 盛合志帆, 青木和麻吕 申请人:三菱电机株式会社, 日本电信电话株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1