加密装置及加密方法 本发明涉及加密装置及加密方法,特别是涉及提高Feistel型分段密码中,密文的安全性的加密装置及加密方法。
人们已经知道,有把安全性比较差的密码当作循环函数(round函数),将其多次重叠,以提高安全性的加密方法。这样的密码被称为多重密码,特别是Feistel型分段密码,由于可以共用加密电路和解密电路,具有能够缩小装置规模的优点。“现代密码理论”(电子情报通信学会池野信一小山谦二著)叙述了这样的密码装置。
日本专利特开昭51-108701号公报和特开昭51-108702号公报叙述了作为Feistel型分段密码的代表性密码广泛为人所知的DES(Data Encryption Standard;数据加密标准)型密码的基本构思。
还有,特开平6-266284号公报揭示了在每一次进行加密的时候都更新作为控制加密变换的比特串的中介密钥,以此达到不把在长串明文加密时用同一密钥编码的大量密文提供给解读者的目的的方法。
另一方面,解读所述Feistel型密码用的有力方法已知有着眼于变换部地输入输出关系来解析密文的、称为差分破译的破译法。要使密文免受这样的差分破译,只要增加变换部的级数即可。
但是,所述已有技术如果总是为了使密文免受差分破译而增加变换部的级数,则处理速度会下降。反之,如果以处理速度为重、减少变换部的级数,则有密文受差分破译而被解读的问题。
因此,本发明的目的在于,提供即使考虑处理速度、用级数不多的变换部构成装置的情况下也能够使密文的安全性较以往提高的加密装置及加密方法。
为了达到上述目的,本发明的第1方面的加密装置有多级变换部,各变换部包含:
存储内部状态的存储装置、
将该存储装置存储的内部状态加以更新的内部状态更新装置和
接收应加密的数据、加密密钥、和所述存储装置存储的内部状态,进行加密变换的加密变换装置;
所述存储装置存储的内部状态,每当所述加密变换装置进行加密变换时,由所述内部状态更新装置进行更新。
本发明的第2方面的加密装置有多级变换部,各变换部包含:
存储内部状态的存储装置、
更新该存储装置存储的内部状态用的内部状态更新装置、
接收应加密的数据、和加密密钥,进行加密变换的加密变换装置和
根据所述存储装置存储的内部状态控制所述加密变换装置的输出的输出控制装置;
所述存储装置存储的内部状态,每当所述加密变换装置进行加密变换时,由所述内部状态更新装置进行更新。
本发明的第3方面的加密方法包含多级变换过程,各变换过程包含:
将内部状态存储于存储装置的存储步骤、
用内部状态更新装置更新存储的内部状态的内部状态更新步骤和
接收应加密数据、加密密钥和存储的内部状态,由加密变换装置进行加密变换的加密变换步骤;
所述存储装置存储的内部状态,每当所述加密变换步骤进行加密变换时,由所述内部状态更新装置进行更新。
本发明的第4方面的加密方法有多级变换过程,各变换过程包含:
将内部状态存储于存储装置的存储步骤、
用内部状态更新装置更新存储的内部状态的内部状态更新步骤、
接收应加密的数据和加密密钥,用加密变换装置进行加密变换的加密变换步骤和
根据存储于所述存储装置的内部状态,控制所述加密变换装置的输出的输出控制步骤;
所述存储装置存储的内部状态,每当所述加密变换步骤进行加密变换时,由所述内部状态更新装置进行更新。
图1表示本发明一实施例的循环函数的结构。
图2表示循环函数n级并排的多重密码的构成例。
图3表示用内部状态更新函数依序更新内部状态的经过。
图4说明图1所示的循环函数具有内部状态初始化信号的情况下的动作。
图5说明以分段密码模式使用加密装置时的动作。
图6说明以连续密码模式使用加密装置时的动作。
图7说明将本发明用于秘密通信的情况下的作用。
图8表示将本发明用于秘密通信的情况下的其他实施例。
图9表示图1所示的内部状态更新函数的具体结构。
图10表示DES密码的总体结构。
图11表示DES密码中的F函数的详细结构
图12是关于E扩大转置的转置表。
图13是表示P转置的内容的表。
图14表示方块S的内容。
图15是本实施例的变形,表示一个提高DES密码的安全性的结构。
图16表示提高DES密码的安全性的其他变形例。
图17是关于图16所示的变形例的扩大转置的表。
图18表示用于提高DES密码的安全性的其他变形例。
图19表示用于提高DES密码的安全性的其他变形例。
图20表示用于提高DES密码的安全性的其他变形例。
图21表示用于提高DES密码的安全性的其他实施例。
图22表示将经本发明的加密装置加密的密文解密的解密装置中的循环函数的结构。
图23表示Feistel型密码各级中解密密钥和加密密钥的对应关系。
图24表示Feistel型密码各级中解密用的内部状态和加密用的内部状态的对应关系。
图25表示将本发明中的加密装置和解密装置融合的结构。
图26是流水线解密处理的时间图。
下面参照附图详细说明本发明的实施例。
图1表示本发明所用变换部循环函数8的结构,具备:作为接收应加密的明文4、加密密钥5和内部状态6,进行规定的加密变换后送出输出信号7的加密变换装置的F函数1;用于存储内部状态6的内部状态存储手段2;每当用F函数进行加密变换时,即在加密变换的同时,更新内部状态6的内部状态更新函数3。图1表示第1级的循环函数,而在第2级以后的循环函数,输入前级循环函数的输出代替明文4。
采用这样的结构,即使在输入相同的明文、加密密钥的情况下,也由于输出因可更新的内部状态而变更,所以能够成为对以循环函数的输入输出关系的解析为依据的差分破译的有效的防御方法,增加循环函数的安全性。而且,在考虑相同的安全性的情况下可以用级数比较少的循环函数构成装置。又,内部状态的更新与循环函数内的F函数的加密变换处理同时进行,因此就有,循环函数总体的处理效率几乎不变,循环函数的级数减少多少,处理速度就提高多少的好处。
图2是表示将上述循环函数n级并排设置的多重密码的构成例。在同一图中,加密密钥16被输入密钥处理部17,变换为n个扩充密钥1至n,分别输入n级的循环函数12至15。采用这样的结构,明文11经n级的循环函数加密变换处理,作为密文18输出。明文11和密文18为固定长度还是可变长度都行。而且明文11的长度和密文18的长度不一致也可以。
图3表示内部状态被内部状态更新函数3逐步更新的经过。亦即,内部状态1(22)最初为与初始状态21等同的内部状态,由于被内部状态更新函数23所更新,变成内部状态2(22)。接着,该内部状态2(22)被内部状态更新函数23所更新。内部状态就这样逐步更新下去。这里,在内部函数23为单向性函数时,假如内部状态k为第3者所知,具有比k大的编号的内部状态被解读,也不会追溯过去了解比k小的编号的内部状态,因而更加安全。图4说明图1所示的循环函数8具有用于输入内部状态初始化信号31的输入部的情况下的动作。存储于内部状态存储装置33的内部状态,在被发送到F函数35的同时,也被发送到内部状态更新函数34,并更新为新的内部状态。这时一旦从外部提供的内部状态初始化信号31被输入内部状态初始化控制部32,内部状态初始化控制部32即将存储于内部状态存储装置33的内部状态初始化。
这样,在本实施例中,可以从外部控制内部状态的初始化。在这里,内部状态初始化控制部32,在考虑安全性的情况下,最好具有监视初始化频度的功能。例如,可以采用使一次加密处理中只进行一次初始化处理的监督机构。
图5用来说明在分段密码模式使用加密装置时的动作。如果将明文41看作是由许多明文段42、43、44组成的,则明文41的各段由加密函数46、50、52加密,变换为密码段54、55、56。将这些密码段拼起来即成密文53。
而各加密函数46、50、52的内部状态可以由初始化信号45、49、51逐段初始化。借助于此,例如,明文段43和明文段44具有相同的内容A、A时,加密后被变换为具有相同的内容B、B的密码段55、56。
这样,在本实施例,可以在分段密码模式下使具有初始化功能的加密装置动作。
图6用于说明在连续密码模式下使用加密装置时的动作。假设明文61由许多明文段62、63、64构成,则明文61的各段分别由加密函数70、72、73加密,变换为密码段76、77、78。将这些段拼起来即成密文75。在本实施例,加密函数70的内部状态在加密之前先由初始化信号65进行1次初始化。从而,即使例如在明文字段63和明文字段64都具有相同的内容A、A的情况下,加密的结果也是变成具有不同内容B、B′的密码段77、78。即
B≠B′。
这样,在本实施例能够使具有初始化功能的加密装置在连续密码模式下动作。
图7用于说明本发明使用于秘密通信的情况下的动作。在发信端87,将例如由明文段82和明文段83构成的明文81逐段分别由加密函数84、85加密,得出密码段87、88。该密码段87、88通过通信线路90发送到收信端97。在收信端97,密文91分解为密码段92和密码段93,各段分别由解密函数94、95解密,得出明文段97、98。该明文段97、98并排,复原为原来的明文96。
这时,在发信端87和收信端97分别设置初始化信号生成部89、99,在预先讨论好的时间,加密函数84、85的内部状态和解密函数94、95的内部状态分别由初始化信号200、201、202、203初始化。初始化信号生成部89、99内含初始化定时。这里,初始化生成部89、99为了减少初始化定时的通信量,也可以用随机数发生器构成,只交换随机数的基准。
采用上述实施例,要使收信端解密得出和发信侧87的明文相同的明文,除了解密用的密钥外,必须知道初始化的时间。因而,非法窃听者要解读密码,除知道解密用的密钥外,还必须知道初始化时间,所以,能够更加安全地进行秘密通信。
图8表示将本发明使用于秘密通信的情况的其他实施例。
在这一实施例中,在发信端与要初始化的函数对应的明文段82、83上预先附加特殊记号204、206,作为指示初始化用的指示数据。构成明文81的明文段82、83由加密函数84、85逐段变换为密码段87、88。该密码段排在一起就成为密文86。这时,检测出明文段82内的特殊记号204或明文段83内的特殊记号206时,分别由初始化信号205、207将加密函数84、85的内部状态初始化。密文86通过通信线路90发送给收信端97。收信端97将收到的密文91分解为密码段92和密码段93,由解密函数94、95分别变换为明文段97、98。这时,检测出指示明文段97、98内的初始化用的特殊记号208、210时,分别由初始化信号209、211将解密函数94、95的内部状态初始化。还可根据需要,去除明文段97、98内的特殊记号208、210,将其后的明文段97、98并排作为明文96。
这样,在本实施例,由于将内部状态初始化的时间包含于明文中,在发信人和收信人之间,没有必要预先讨论初始化时间
图9表示图1所示的内部状态更新函数3的具体结构,由存储元件100和加法器102组成的线性寄存器构成。存储元件100是能够存储1比特信息的元件,例如D触发器。
连接各抽头101与否可以表现各种特性的多项式。例如,以连接抽头101时为1,以不连接时为0,则可以表现下式表达的多项式
CrXr+Cr-1Xr-1+……+C1X+C0
人们已经知道,特别是在表达式为原始多项式时,线性移位寄存器输出序列长度最大(今井秀树著《符号理论》,电子情报通信学会)。作为原始多项式的例子,已知有
X31+X3+1
线性移位寄存器每当时钟信号输入时,存储元件100的存储内容由左邻的存储元件100的内容更新,按照抽头101的连接状态,加法器102的加法运算结果在输入最左的存储元件100的同时作为输出信号103被输出。
下面以DES密码为例对加强已有的分段密码的安全性的其他方法加以叙述。
首先,概要说明DES密码。图10表示DES密码的总体构成。要加密的64比特的明文105由初始转置106进行比特顺序变换,再分割为高端32比特(输入L113)和低端32比特(输入R114),并由具有相同结构的16级的循环函数(1至16)107变换16次后,经过最终转置108,成为所求的密文109。
各循环函数107由F函数110、“异”逻辑111以及左、右变换手段112构成,设第i级密钥为Ki,则第i级循环函数的输入Li和Ri按下式变换为第i+1级循环函数的输入Ri+1和Li+1。
Ri+1=Li XOR F(Ri、Ki)
Li+1=Ri
图11表示DES密码中的F函数的详细结构。F函数具有两个输入,即32比特的输入R115和48比特的密钥Ki116,而有一个32比特的输出117。
下面顺着数据流对动作加以说明。被输入的32比特输入R115由E扩大转置电路(118),即E变换电路,扩大为48比特的数据。图12是关于这样的E扩大转置电路的转置表,从左上起,表示经E变换的各输出比特为输入的第几比特,例如,最头上的是32,所以E变换输出的第1比特等于输入的第32比特。E变换输出的第2比特等于输入的第1比特,以此类推。
接着,由“异”门120取E变换输出119与密钥Ki116的“异”逻辑,其结果被分割为各6比特的8组,被输入作为换字部的8个方块S(S1至S8)121。方块S121是具有6比特输入和4比特输出的置换(换字)表,图14表示这样的置换表的一个例子。
方块S121的各4比特的8个输出122集束成为一个32比特的输出123,输入P变换电路(P转置电路)124。在P变换电路124进行比特顺序的并行替换,成为32比特的F函数的输出117。
图13是表示上述P转置电路124的转置内容的表。该表也和上述图12的E扩大转置电路的转置表一样,表示从左上输出的比特和哪一个输入比特等同。例如,P变换124的输出的第1比特等于输入的第16比特,第2比特等于第7比特,以此类推。
图15表示作为上述实施例的变形例的、强化DES密码的安全性的结构。本变形例用图15所示的结构置换图10所示的已有的F函数110以强化安全性。
亦即,输入R125和密钥Ki127被输入已有的DES密码的F函数126,被变换成为32比特的输出128。该输出128被分割为各16比特的输入L129和输入R130两部分。然后,输入L129作为输往选择器131的第1输入134被输入,同时作为输往选择器132的第1输入137被输入。而输入R130被作为输往选择器131的第2输入135被输入,同时作为输入选择器132的第2输入138输入。
选择器131借助于控制输入133,将两个输入134、135中的任一个作为输出139输出。而选择器132也一样,借助于控制输入136将两个输入137、138中的任一个作为输出140输出。这里,两个控制输入133和136互为“非”逻辑,因此必然成为不同的输出。亦即,借助于1比特的控制线141决定是否将输入L129与输入R130交换,变成F函数126的输出。
控制线141与内部状态142连接着,因而是否将输入L129与输入R130交换取决于内部状态142。内部状态142被内部状态更新函数143更新为新状态。
上述构成方法不限于DES密码,也可适用于具有相同结构的其他分段密码。
而且,在上述实施例中,在F函数的后级配置了选择器,但是,也可以在F函数的前级配置选择器。
图16表示为强化DES密码的安全性而作出的另一变形例,上述图11所示的E扩大转置电路118被置换为取决于内部状态146的E′扩大转置电路144,安全性得以强化。在图16,输入R145被输入取决于内部状态146的E′扩大转置电路144,作为输出147被输出。
图17表示这样的E′扩大转置电路的转置表。在图17,Xi是来自内部状态146的输入,Ri是来自输入R145的输入。从左上方开始依序表示E′变换的输出和哪一个输入的哪一比特相同,例如,输出的第1比特是从内部状态146来的输入的第1比特,输出的第2比特是输入Ri的第1比特。还有,E′扩大转置电路的转置也可以使用不同于图17所示的转置表。
图18表示为强化DES密码的安全性而作出的又一变形例。这里,根据内部状态动态地替换方块S的输入以谋求提高安全性。
亦即,输入R148以扩大转置电路149转置的结果与密钥Ki150的“异”逻辑输出151,在被按内部状态152的值改变移位量的可变循环移位装置153循环移位后,即比特位置偏移后,被输入方块S(S1至S8)155。
上述可变循环移位已知有使用桶形移位器的高速实用方法。循环移位比特数过多或过少加密效果都会下降,因此,最好将循环移位比特数限制于某一确定的范围内。例如设定在8比特至40比特的范围内,则共为32比特。在这种情况下内部状态152的输出为5比特即可。
图19表示为强化DES密码的安全性而作出的另一变形例。在图19中,“异”门159取输入R156和内部状态157的输出结果的“异”逻辑后,输入E扩大转置电路158。“异”门电路159也可以用别的运算,例如忽略进位的32比特加法运算和减法运算置换。
图20表示为强化DES密码的安全性而作出的又一变形例。在已有的DES密码的F函数中,加密密钥用“异”逻辑进行加法运算,但是可以使运算具有自由度以将安全性提得更高。
亦即在图20,输入R160在E扩大转置电路161实施扩大转置后,所得结果与密钥Ki162之间,在ALU165实施内部状态163的输出164指定的运算。ALU165的输出被分割为6比特构成的8组信号输入方块S(S1至S8)。此后进行与已有的DES密码相同的动作。
图21表示为强化DES密码的安全性而作出的再一个变形例。在该变形例中,改换方块S的列以强化安全性。在DES密码的方块S的各行,分别包含0至15的编号,因此,即使进行列的交换其性质也不会改变。
内部状态167的8比特输出被分离为高端4比特168和低端4比特169,分别用于指定方块S交换的列。也可以准备8个内部状态,更改所有的方块S的内容。而且为了节省装置的规模,进行更改的方块S也可以少于8个。
图22表示对本发明的加密装置加密的密文进行解密的解密装置的循环函数177的结构。该循环函数177具有:F函数178、顺序反转部191、内部状态暂时存储部176、内部状态存储装置174和内部状态更新函数175。
在OFB(Out Feedback Basic)模式(无反馈模式)下使用分段密码是不必要的,但必须根据使用的模式在解密处理时反顺序地更新内部状态。使Feistel型的分段密码装置中的解密处理和将给与中介密钥的顺序反转的加密处理使用相同的步骤。这意味着本发明的各循环函数的内部状态赋予方法也必须将顺序反转。
在循环函数177进行解密处理之前,内部状态存储装置174存储的内部状态被内部状态更新函数175所更新,存储于内部状态暂时存储部176。
然后,解密处理时,将中间密文171、译码密钥172和内部状态暂时存储部176存储的内部状态由顺序反转部191反转后的信号173输入F函数178,进行规定的加密变换,得到作为循环函数177的输出的中间明文179。
n级的Feistel型密码的各级解密密钥和加密密钥的对应关系示于图23。解密时,将与加密时最后一级(第n级)用的加密密钥相同的加密密钥用于解密的第1循环,在解密的第2循环,使用第n-1级的加密密钥。以此类推。
本发明的Feistel型密码的各级的加密用的和解密用的内部状态的对应关系示于图24。解密的第1循环的内部状态必须和加密的最后一级(第n级)的内部状态相同。下同。内部状态关系函数具有单向性时,不会反顺序地产生内部状态,也不会知道n循环前的内部状态,因此需要从初始状态开始预先产生、存储n个循环的内部状态,并反顺序输出的机构,这就是图22的内部状态暂时存储部176和顺序反转部191。
图25是本发明的加密装置和解密装置融合构成图。加密装置和解密装置除内部状态暂时存储部外结构相同,因此,使用根据表示是在进行加密处理还是在进行解密处理的信号E/D180切换开关181,将内部状态存储装置182的输出或内部状态暂时存储部183的输出输入F函数184的结构,则装置的规模可以缩小。
图26是不发生延迟的流水线解密处理的时间图。该图向右表示时间增加方向。上面一行185表示内部状态的更新情况,有斜线的部分187表示内部状态的更新处理。下面一行186表示解密处理的情况,网格部分188表示解密处理。还有,箭头189表示内部状态更新和解密处理的对应关系,表示箭头189的头部所指的解密处理190使用着内部状态187。
考察在图26处理流程随时间的变化,可以看到,与解密处理188同时,进行着下一解密处理190需要的内部状态更新处理187,借助于此,可避免内部状态更新处理造成的处理延迟。
采用本发明,在考虑处理速度,用级数较少的变换部构成装置时也能够使密文的安全性进一步提高。