实现高速加密处理的设备、方法和存储媒体的制作方法

文档序号:7582295阅读:288来源:国知局
专利名称:实现高速加密处理的设备、方法和存储媒体的制作方法
本申请基于在日本提交的申请号为H10-116758和H10-116759的申请,因此结合它的内容作为参考。
本发明涉及一种在基于密钥的块单元中加密/解密数据的加密处理设备、在加密处理设备中使用的加密处理方法、和存储加密处理程序的加密处理程序的存储媒体。本发明尤其涉及在不降低安全性的情况下,通过减少替换表数据的数量和产生替换表数据的频率实现高速加密处理的加密处理技术。
近几年来,当通过数字通信的各种类型信息通信例如汇款已经变得普遍时,防止被未经允许的第三方窃听和篡改保护重要消息的技术的需求已经增长。这种有效改进安全性的技术的代表是一种叫做密码的技术。
在使用密码的通信系统中,原始消息叫做“明文”,转换明文以使第三方无法理解的结果叫做“密文”,对明文的转换叫做“加密”,和为恢复原始明文对密文的逆转换叫做“解密”。
加密和解密的模式由一种算法和用作算法参数的密钥确定。算法指定一族转换,而密钥指定族的一种转换。通常来说,算法在加密处理设备中不变,而密钥在装置中经常会变。
假设密文易受到窃听。由攻击者在不知道算法和密钥情况下解码捕获的密文以获得原始消息的行为叫做“密码分析”。
这里,这个攻击者(以下称“密码分析者”)在假设已经获知密文的情况下进行密码分析。
仅从密文中得到秘密的明文或密钥的密码分析叫做“只对密文的攻击”,而从任意的密文和明文对中确定密钥并相应于给定的密文指定明文的密码分析叫做“已知明文的攻击”。
一个传统密码系统的例子是伪随机数加法类型的密码。
在这种技术中,发送者和接收者每个都秘密地持有相同的密钥并通过将密钥用作包含相同算法的随机数发生器的启动源产生随机数目的预定比特长度(以下称“块”)。在加密过程中发送者对随机数和每块明文中的对应比特进行异或运算以产生密文。在解密过程中接收者对随机数和每块密文中的对应比特进行异或运算以得到原始的明文。
使“M”为每块明文、“C”为每块密文、“R”为随机数、和“(+)”为对应比特的异或运算。加密和解密可以分别表示为C=M(+)R …(公式1)M=C(+)R …(公式2)这种密码的缺点在于它易于受到已知明文的攻击。
假设已经知道一对明文块和密文块。用下面的公式3可以得到随机数R,而且结果可以得到其它的明文块。
R=M(+)C …(公式3)因此,通过已知明文的攻击密码分析者可以很容易解码伪随机数加法类型的密文。
另一方面,例如数据加密标准(DES)和快速数据加密算法(FEAL)的加密系统对已知明文的攻击相对安全。这些方法的详细资料,参见由Kyoritsu出版的Eiji okamoto的加密理论概论。
在这些加密系统中,数据分成64比特的块并在块单元中紧密移动。在DES算法的情形下,每块重复16次包含替换移位的数据移动过程。
一个由DES和FEAL表示的块密码的例子是Blowfish密码(这种密码的详细资料参见由Spinger-Verlag出版的,计算机科学会议记录中Ross Anderson(版)的快速软件加密、卷809第191-204页,Bruce Schneier的“一种新型可变长度密钥、64比特块密码(Blowfish)的描述”)。
下面是对Blowfish密码的描述。


图1表示使用Blowfish密码的数据加密装置的结构。
图中,数据加密装置3010大致由数据移动单元3011、级数控制单元3012、子密钥产生单元3013、和替换表数据产生单元3014组成。
替换表数据产生单元3014根据替换表数据产生算法从64比特的输入密钥数据中产生32K比特的替换表数据(每个32比特长的1024个表值)。替换表数据产生算法并不是本发明的主要方面,因此这里省略对它的解释。
子密钥产生单元3013根据子密钥产生算法从64比特的输入密钥数据中产生256比特的数据并把256比特的数据分成8组32比特的子密钥数据SK0-SK7。由于子密钥产生算法并不是本发明的主要方面,因此这里省略对它的解释。
数据移动单元3011用由替换表数据产生单元3014产生的32K比特的替换表数据和由子密钥产生单元3013产生的32比特的子密钥数据进行64比特的输入明文数据(以下称“明文块”)的数据移动,并输出所得到的64比特的数据。通常来说,数据移动重复16次以产生64比特的密文数据(以下称“密文块”)。
级数控制单元3012控制由数据移动单元3011进行的数据移动的次数以便从明文块产生密文块。级数控制单元3012计算每个明文块进行的数据移动的次数。如果所计次数小于预定次数,级数控制单元3012就将数据移动单元3011的输出数据输入到数据移动单元3011。如果所计次数达到预定次数,级数控制单元3012就输出为密文块的输出数据。
这里,子密钥SK0用于进行明文块的第一次数据移动,并接着一个一个地使用子密钥SK1-SK7重复数据移动。子密钥SK7之后,再用子密钥SK1。
图2表示使用Blowfish密码的数据解密装置的结构。
图中,数据解密装置4010大致由数据移动单元4011、级数控制单元4012、子密钥产生单元4013、和替换表数据产生单元4014组成。
数据移动单元4011、子密钥产生单元4013、和替换表数据产生单元4014和图1的数据移动单元3011、子密钥产生单元3013、和替换表数据产生单元3014相同。
级数控制单元4012控制由数据移动单元4011进行的数据移动的次数以便从密文块产生明文块。级数控制单元4012计算由每个密文块进行的数据移动的次数。如果所计次数小于预定次数,级数控制单元4012就将数据移动单元4011的输出数据输入到数据移动单元4011。如果所计次数达到预定次数,级数控制单元4012就输出为明文块的输出数据。
这里,子密钥SK7用于进行密文块的第一次数据移动,并接着一个一个地用子密钥SK6-SK0重复数据移动。子密钥SK0之后再用子密钥SK7。
图3表示图1所示的数据移动单元3011的详细结构。数据移动单元3011包括第一异或运算单元3111、第二异或运算单元3112、和数据转换单元3113。
第一异或运算单元3111对32比特的子密钥数据和64比特的输入数据的高32比特(图3的“X1”)的对应比特进行异或并输出作为结果的32比特的数据S0。S0输入到数据转换单元3113并同时成为64比特的输出数据的低32比特(图3的“Y0”)。
数据转换单元3113是所谓的f函数。数据转换单元3113用32K比特的替换表数据转换32比特的数据S0并输出32比特的转换数据S1。
第二异或运算单元3112对32比特的数据S1和64比特的输入数据的低32比特(图3的“X0”)的对应比特进行异或并输出作为结果的32比特的数据Y1。Y1成为64比特输出数据的高32比特。
更特别地,数据移动单元3011按如下操作。
(1)首先,64比特的输入数据分成高32比特X1和低32比特X0。
(2)第一异或运算单元3111对32比特的数据X1和32比特的子密钥数据的对应比特进行异或。结果,32比特的数据S0产生并置为64比特的输出数据的低32比特Y0。
(3)数据转换电路3113转换32比特的数据S0并输出32比特的转换数据S1。
(4)第二异或运算单元3112对32比特的数据S1和32比特的数据X0的对应比特进行异或。结果,产生32比特的数据并置为64比特的输出数据的高32比特Y1。
接着从数据移动单元3011输出由Y1和Y0组成的64比特的输出数据和时钟同时(未示出)。
图4表示图2所示的数据移动单元4011的详细结构。
数据移动单元4011包括第一异或运算单元4111、第二异或运算单元4112、和数据转换单元4113。
第一异或运算单元4111对32比特的子密钥数据和64比特的输入数据的低32比特(图4的“Z0”)的对应比特进行异或并输出作为结果的32比特的数据W1。W1成为64比特的输出数据的高32比特。同时,为32比特的数据T0的Z0输入到数据转换单元4113。
数据转换单元4113和数据转换单元3113一样是所谓的f函数。数据转换单元4113用32K比特的替换表数据转换32比特的数据T0并输出32比特的转换数据T1。
第二异或运算单元4112对32比特的数据T1和64比特的输入数据的高32比特(图4的“Z1”)的对应比特进行异或运算并输出作为结果的32比特的数据W0。W0成为64比特输出数据的低32比特。
数据移动单元4011的详细操作与数据移动单元3011的类似,因此省略对它的解释。
图5表示图3所示的数据转换单元3113的详细结构。
数据转换单元3113包括第一替换表数据存储单元3201、第二替换表数据存储单元3202、第三替换表数据存储单元3203、第四替换表数据存储单元3204、第一加法单元3205、第二加法单元3206、和异或运算单元3207。
32K比特的替换表数据从高位比特分成四组8K比特的替换表数据R3、R2、R1、和R0。
32比特的输入数据S0从高位比特分成四组8比特的数据V3、V2、V1、和V0。
第一至第四替换表数据存储单元3201-3204存储四组8K比特的替换表数据R3、R2、R1、和R0,其中每组8K比特的替换表数据从高位比特分成每个32比特长的256个表值。四组8比特的数据V3、V2、V1、和V0分别输入到第一至第四替换表数据存储单元3201-3204,并且第一至第四替换表数据存储单元3201-3204分别指定并输出基于V3-V1的256个所存表值的其中一个。本例中,存在第一替换表数据存储单元3201的256个32比特表值以比特降低的顺序设置为Tab1
、Tab1[1]、…、和Tab1[255]。类似的,存在第二替换表数据存储单元3202的256个32比特的表值设置为Tab2
、Tab2[1]、…、和Tab2[255]。存在第三替换表数据存储单元3203的256个32比特的表值设置为Tab3
、Tab3[1]、…、和Tab3[255]。存在第四替换表数据存储单元3204的256个32比特的表值设置为Tab4
、Tab4[1]、…、和Tab4[255]。
第一加法单元3205对从第一替换表数据存储单元3201输出的32比特的表值和从第二替换表数据存储单元3202输出的32比特的表值进行算术加,并忽略第32个比特前的进位输出作为结果的低32比特的数据。
当从第一替换表数据存储单元3201输出的32比特的表值设置为“J3”、从第二替换表数据存储单元3202输出的32比特的表值设置为“J2”、和从第一加法单元3205输出的32比特的数据设置为“Q0”时,上述加法表示为Q0=(J3+J2)mod(2^32)其中“a^b”表示a的“b”次幂,而且“αmodβ”表示当α除以β时的余数。这些表示法应用于下面给出的公式。
异或运算单元3207对32比特的数据Q0和从第三替换表数据存储单元3203输出的32比特的表值的对应比特进行异或运算,并输出作为结果的32比特的数据。
当从第三替换表数据存储单元3203输出的32比特的表值设置为“J1”和从异或运算单元3207输出的32比特的数据设置为“Q1”时,异或运算单元3207的运算表示为Q1=Q0(+)J1其中“α(+)β”表示α和β的对应比特的异或运算。
第二加法单元3206对32比特的数据Q1和从第四替换表数据存储单元3204输出的32比特的表值进行算术加并忽略第32个比特前的进位输出作为结果的低32比特的数据。
当从第四替换表数据存储单元3204输出的32比特的表值设置为“J0”、和从第二加法单元3206输出的32比特的数据设置为“Q2”时,第二加法单元3206的操作表示为Q2=(Q1+J0)mod(2^32)其中Q2是数据转换单元3113的32比特的输出数据S1。
下面是数据转换单元3113的操作。
(1)32K比特的输入替换表数据从高位比特分成四组每组由256个32比特的表值组成的替换表数据R3、R2、R1、和R0。接着R3-R0分别存入第一至第四替换表数据存储单元3201-3204。
(2)32比特的输入数据S0从高位比特分成四组8比特的数据V3、V2、V1和V0,接着它们分别输入到第一至第四替换表数据存储单元3201-3204。
(3)第一至第四替换表数据存储单元3201-3204分别指定并输出基于V3-V0的256个存储表值的其中一个。结果,分别从第一至第四替换表数据存储单元3201-3204输出四组32比特的表值J3-J0。
(4)第一加法单元3205对J3和J2进行算术加并忽略第32个比特前的进位输出作为结果的低32比特的数据Q0。
(5)异或运算单元3207对Q0和J1的对应比特进行异或运算并输出作为结果的32个比特的数据Q1。
(6)第二加法单元3206对Q1和J0进行算术加并忽略第32个比特前的进位输出作为结果的低32比特Q2(=S1)。
使用上述数据移动单元3011的数据密码系统的安全性极大地依赖于在数据转换单元3113进行的转换操作地数据移动函数。由于数据转换单元3113装备有彼此分别操作的四个替换表数据存储单元3201-3204,所以密码系统对密码分析和其它未经允许的攻击有高安全性。
图4所示地数据转换单元4113具有和数据转换单元3113同样的结果因此这里不解释了。
相对块密码所用的代表性的密码分析技术是微分密码分析和线性密码分析。第三个例子的密码系统已经设计为增强抵抗对这种密码分析技术。
在由Springer-Verlag出版的E.Biham&A.Shamir的数据加密标准的微分密码分析、和在1993年密码和信息安全研讨会(SCIS′93)会议记录SCIS93-3CM.Matsui的“DES密码(I)的线性密码分析方法”中详细描述了微分密码分析和线性密码分析。
微分密码分析和线性密码分析属于通过分析大量明文和密文对指定密钥数据的已知明文地攻击。这些密码分析技术是在用相同的密钥数据已经产生要解码的密文的所有密文块的前提下建立的。
因此,通过使用不同的密钥数据加密每个明文块,有可能加强相对这些密码分析技术的密码安全性。
这里,因为必须为更多的明文块准备更多组的密钥数据,所以准备密钥数据的组数与明文块的数目相同是不切实际的。为避免这种情况,在美国专利4074066(通过块链验证消息和检测传输误差(日本专利1250077))公开了一种使用前一个密文块为可变信息以更新密钥数据的方法。根据这种方法,不需要准备与明文块相同数目的密钥数据组,当加密明文块时随时更新密钥数据。由于每次加密明文块都从原始密钥数据产生新的密钥数据,所以在不增加密钥数据数量的情况下可以增强对微分密码分析和线性密码分析的保护。
但是,必须在第二个例子的数据移动单元3011中存储大量的替换密钥数据(32K比特),所以就硬件和软件工具的简化来说存在问题。而且,需要大量的处理时间以产生如此大量的替换密钥数据。但是,由于会降低密码的安全性,所以不想减少替换表数据的数量。
当第三个例子的密钥链方法应用到第二个例子的Blowfish密码时,将产生下面的问题。
如上所述,第二个例子的Blowfish密码从输入的密钥数据中产生32K比特的替换表数据,而第三个例子的密钥链接方法在每次加密明文块时都更新密钥数据。相应地,当密钥链方法用于Blowfish密码时,每次加密明文块时都产生新的替换表数据。由于替换表数据的数量很大(32K比特),所以产生这种替换表数据的频率将导致处理器极大的负担并严重降低密码的处理速度。由于它可能导致密码安全性的降低,同样不希望减少所产生的替换表数据的数目。
上述困难不仅存在于Blowfish密码还存在于用输入的密钥数据产生的替换表数据进行加密处理的其它的块密码。
考虑到上述的问题,本发明目的是在例如基于输入的密钥数据产生替换表数据以用于加密处理的Blowfish密码的块密码中,提供一种通过减少替换表数据的数量和产生替换表数据的频率,在不降低安全性的情况下实现高速加密处理的加密处理设备、加密处理方法、和存储加密处理程序的存储媒体。
上述目的可以通过用若干组替换数据加密处理输入数据以产生输出数据的加密处理设备来完成,该加密处理设备包括存储(2^N)组每组具有预定比特数的替换数据的存储单元,其中N是不小于2的整数;将(N×M)比特长的输入数据分成M组每组N比特长的子数据的划分单元,其中M是不小于2的整数;接收M组N比特的子数据、和对M组N比特的子数据进行合并处理结果得到的至少一组N比特的输入合并数据的任何一个输入、为输入的每组N比特指定存储单元的(2^N)组替换数据的其中一组、和输出为输入的每组N比特指定的这组替换数据的替换单元;对从替换单元输出的至少一组替换数据执行大量不同的固定转换的固定转换执行单元,以产生M组每组具有预定比特数的转换数据;和基于由固定转换执行单元产生的M组转换数据,产生(N×M)比特长输出数据的输出数据产生单元。
根据这种结构,用少量的替换表数据就能得到高的密码安全性,因此可以实现就简化硬件/软件工具来说更好的加密处理设备。
这里,预定数目可以是(N×M),其中替换单元从存储单元的(2^N)组替换数据中分别为M组N比特的子数据指定M组替换数据,并输出M组每组(N×M)比特长的替换数据,其中固定转换执行单元分别对从替换单元输出的M组替换数据执行M种不同的固定转换,以产生M组每组(N×M)比特长的转换数据,并且其中输出数据产生单元对所产生的M组转换数据进行合并处理以产生(N×M)比特长的输出数据。
根据这种结构,替换表数据的长度在不降低安全性的情况下减小到传统技术中替换表数据长度的1/M,因此可以实现就简化硬件/软件工具来说更好的加密处理设备。
这里,预定数目可以是N,其中替换单元包括对M组N比特的子数据进行全程合并处理以产生一组N比特的输入合并数据,为这组N比特的输入合并数据指定存储单元中(2^N)组替换数据的其中一组,并输出所指定的N比特长的这组替换数据,其中固定转换执行单元对从替换单元输出的这组替换数据进行M种不同的固定转换,以产生M组每组N比特长的转换数据,并且其中输出数据产生单元包括对每组M组子数据和不同于相应于这组子数据的M组转换数据的一组进行各自的合并处理,以产生M组每组N比特长的输出合并数据;和将由输出合并单元产生的M组输出合并数据结合以形成(N×M)比特长的输出数据的结合单元。
根据这种结构,替换表数据的长度在不降低安全性的情况下减小到传统技术中替换表数据长度的1/M,因此可以实现就简化硬件/软件工具来说更好的加密处理设备。
上述目的也可以由产生一组替换表数据和用这组替换表数据加密处理输入数据以产生输出数据的加密处理设备来完成,该加密处理设备包括存储一组密钥数据的密钥数据存储单元;存储一组替换表数据的替换表数据存储单元;将输入数据分成每个具有预定比特数的输入块并一个一个地输出输入块的块产生单元;当在加密处理指定数目的输入块后立即加密处理一个输入块时,产生一组替换表数据并用所产生的这组替换表数据替换替换表数据存储单元中的一组替换表数据的替换表数据产生单元;当在加密处理输入块的前一个输入块后加密处理该输入块时,通过用作为加密处理前一个输入块的结果所产生的输出块对这组密钥数据进行比特转换,转换密钥数据存储单元的一组密钥数据的密钥数据转换单元;和用替换表数据存储单元的一组替换表数据和由密钥数据转换单元产生的任何一组转换的密钥数据和在密钥数据存储单元中存储的一组密钥数据,加密处理由块产生单元输出的输入块以产生输出块的加密处理单元。
上述目的也可以由产生一组替换表数据和用这组替换表数据和加密处理输入数据以产生输出数据的加密处理设备来完成,该加密处理设备包括存储一组密钥数据的密钥数据存储单元;存储一组替换表数据的替换表数据存储单元;将输入数据分成每个具有预定比特数的输入块并一个一个地输出输入块的块产生单元;当在加密处理指定数目的输入块后立即加密处理一个输入块时,产生一组替换表数据并用所产生的这组替换表数据替换替换表数据存储单元中的一组替换表数据的替换表数据产生单元;当在加密处理输入块的前一个输入块后加密处理该输入块时,通过用前一个输入块进行比特转换,转换密钥数据存储单元的一组密钥数据的密钥数据转换单元;和用替换表数据存储单元的一组替换表数据和由密钥数据转换单元产生的任何一组转换的密钥数据和在密钥数据存储单元中存储的一组密钥数据,加密处理由块产生单元输出的输入块以产生输出块的加密处理单元。
上述目的也可以由产生一组替换表数据和用这组替换表数据和加密处理输入数据以产生输出数据的加密处理设备来完成,该加密处理设备包括存储一组密钥数据的密钥数据存储单元;存储一组替换表数据的替换表数据存储单元;将输入数据分成每个具有预定比特数的输入块并一个一个地输出输入块的块产生单元;当在加密处理指定数目的输入块后立即加密处理一个输入块时,产生一组替换表数据并用所产生的这组替换表数据替换替换表数据存储单元中的一组替换表数据的替换表数据产生单元;当在加密处理输入块的前一个输入块后加密处理该输入块时,通过用加密处理前一个输入块的过程中所产生的中间块对这组密钥数据进行比特转换,转换密钥数据存储单元的一组密钥数据的密钥数据转换单元;和通过使用替换表数据存储单元的一组替换表数据和由密钥数据转换单元产生的任何一组转换的密钥数据和在密钥数据存储单元中存储的一组密钥数据,加密处理由块产生单元输出的输入块,以产生加密处理输入块的过程中的中间块并产生作为加密处理输入块结果的输出块的加密处理单元。
根据这种结构,当每次加密处理输入块更新密钥数据时,由密钥数据得到的替换表数据不相应于密钥数据的每次更新而更新而是仅当加密处理指定数目的输入块时更新。相应地,在不降低安全性的情况下可以实现进行高速加密处理的加密处理设备。
本发明的这些和其它的目的、优点和特征在结合说明本发明特定实施例的附图的下面描述中将变得更加明显。在附图中图1表示使用Blowfish密码的数据加密装置3010的结构;图2表示使用Blowfish密码的数据解密装置4010的结构;图3表示图1所示的数据移动单元3011的详细结构;图4表示图2所示的数据移动单元4011的详细结构;图5表示图3所示的数据转换单元3113的详细结构;图6表示本发明第一个实施例的加密通信系统的结构;图7表示图6所示的数据加密装置10的详细结构;图8表示图6所示的数据解密装置20的详细结构;图9表示图7所示的数据移动单元101的详细结构;图10表示图8所示的数据移动单元201的详细结构;图11表示图9所示的数据转换单元300的详细结构;图12表示本发明第二个实施例的数据转换单元500的详细结构;图13表示本发明第三个实施例的加密通信系统的结构;图14表示图13所示的数据加密装置60的详细结构;图15表示图13所示的数据解密装置70的详细结构;图16表示图14所示的数据加密单元601的详细结构;图17表示图15所示的数据解密单元701的详细结构;图18表示第t块的实际密钥数据、输入密钥数据和替换表数据的对应关系。
如果图5所示的第一至第四替换表数据存储单元3201-3204共享一组替换表数据,那么在数据转换单元3113存储的替换表数据的数量会减少到原来数量的1/4,尽管会产生下面的安全性问题。
例如,当图5中V2=V3时,由于第一替换表数据存储单元3201和第二替换表数据存储单元3202共享一组替换表数据并相应地J2=J3,所以第一加法单元3205对两个相等的值进行算术加。这种密码系统仅具有低的数据移动函数并因此对未经允许的攻击不安全。
本发明第一个实施例的加密处理设备从一组替换表数据中检索大量表值并进行不同的固定转换,例如对大量的表值进行不同的移位比特长度的旋转和不同常数的加法。通过这样做,加密处理设备在减少替换表数据的数量而不降低安全性的情况下实现加密和解密(以下称“加密处理”)。
图6表示本发明第一个实施例的加密通信系统的结构。
在图6和本说明书所用的其它图中,每个用双线方框标识的成分(例如图6中的数据加密装置10和数据解密装置20)将在下面的图中详细说明。
图6的加密通信系统包括发射机1和接收机2。
发射机1和接收机2例如是视频服务器系统中的服务器和终端以发射/接收数字图象信息。
发射机1装备有数据加密装置10和发射单元11。
数据加密装置10用256比特的密钥数据和8K比特的替换表数据(256个每个32比特长的表值)加密64比特单元的明文数据以产生密文数据。这里,明文例如是数字编码的音频或图象信息。而且,在发射机1和接收机2中已经秘密持有相同的密钥数据和替换表数据。
发射单元11对由数据加密装置10产生的密文数据进行并串转换、调制、和放大以将所得到的发射信号输出到传输线3。
接收机2装备有数据解密装置20和接收单元21。
接收单元21通过传输线3接收来自发射单元11的发射信号并对发射信号进行发射单元11的逆处理以恢复密文数据。
数据解密装置20用256比特的密钥数据和8K比特的替换表数据(每个32比特长的256个表值)解密64比特单元的加密电文数据以得到解密电文数据(原始明文数据)。
这里得到的解密的电文数据例如是数字编码的音频或图象信息。这种信息接着由专用解码器(未说明)解码并通过扬声器或显示器再生。
图7表示图6所示的数据加密装置10的详细结构。
该数据加密装置10大致由数据移动单元101、级数控制单元102、和密钥控制单元103组成。
密钥控制单元103从高位将256比特的密钥数据分成8组32比特的子密钥数据K0-K7。每次将64比特的数据输入到数据移动单元101时,密钥控制单元103一次将子密钥数据K0-K7的一个输出到数据移动单元101。子密钥数据K7后,再输出子密钥数据K0。
数据移动单元101用8K比特的替换表数据和32比特的子密钥数据对64比特的输入数据进行数据移动并输出所得到的64比特的数据。
级数控制单元102控制由数据移动单元101执行的数据移动的次数以便由明文块产生密文块。级数控制单元102计算由每个明文块执行的数据移动的次数。如果所计次数少于预定次数,就将数据移动单元101输出的64比特的数据输入到数据移动单元101中再移动。如果所计次数等于预定次数,级数控制单元102输出数据移动单元101的64比特的输出数据作为密文块。本实施例中,预定次数设为8。
图8表示图6所示的数据解密装置20的详细结构。
该数据解密装置20大致由数据移动单元201、级数控制单元202、和密钥控制单元203组成。
密钥控制单元203从高位将256比特的密钥数据分成8组32比特的子密钥数据K0-K7。每次将64比特的数据输入到数据移动单元201时,密钥控制单元203每次将子密钥数据K0-K7的一个输出到数据移动单元201。子密钥数据K0后,再输出子密钥数据K7。
数据移动单元201和图7的数据移动单元101相同。
级数控制单元202控制由数据移动单元201执行的数据移动的次数以便由密文块中产生64比特的解密电文数据(以下称“解密电文块”)。级数控制单元202计算由每个密文块执行的数据移动的次数。如果所计次数少于预定次数,就将数据移动单元201输出的64比特的数据输入到数据移动单元201中再移动。如果所计次数达到预定次数,级数控制单元202输出数据移动单元201的64比特的输出数据作为解密电文块。这里,预定数设为8。
图9表示图7所示的数据移动单元101的详细结构。
数据移动单元101包括第一异或运算单元1011、第二异或运算单元1012、和数据转换单元300。
数据移动单元101大致类似于图3所示的数据移动单元3011。
第一异或运算单元1011与图3所示的第一异或运算单元3111相同。
第二异或运算单元1012与图3所示的第二异或运算单元3112相同。
数据转换单元300用8K比特的替换表数据转换32比特的数据S0并输出32比特的转换数据S1。
图10表示图8所示的数据移动单元201的详细结构。
数据移动单元201包括第一异或运算单元2011、第二异或运算单元2012、和数据转换单元301数据移动单元201大致类似于图4所示的数据移动单元411。
第一异或运算单元2011与图4所示的第一异或运算单元4111相同。
第二异或运算单元2012与图3所示的第二异或运算单元4112相同。
数据转换单元301与图9所示的数据转换单元300相同。
图11表示图9所示的数据转换单元300的详细结构。
该数据转换单元300包括替换表数据存储单元3001、第一表值转换单元3002、第二表值转换单元3003、第三表值转换单元3004、第一加法单元3005、第二加法单元3006、和异或运算单元3007。
将32比特的输入数据S0从高位比特分成4组8比特的数据A3、A2、A1、和A0。
替换表数据存储单元3001从高位比特将8K比特的输入替换表数据分成256个32比特的表值并存储这256个表值。在该替换表数据存储单元3001中,输入四组8比特的数据A3-A0。替换表数据存储单元3001基于A3-A0从存储的256个表值中指定四个表值,并输出为A3-A0指定的分别为B3、B2、B1、和B0的四个表值。在该指定中,在替换表数据存储单元3001中存储的256个32比特的表值按比特下降的顺序设置为Tab
、Tab[1]、…、和Tab[255]。
第一表值转换单元3002对32比特的输入表值B2从高位比特进行循环1比特移位转换并输出32比特的转换数据C2。
第二表值转换单元3003对32比特的输入表值B1从高位比特进行循环2比特移位转换并输出32比特的转换数据C1。
第三表值转换单元3004对32比特的输入表值B0从高位比特进行循环3比特移位转换并输出32比特的转换数据C0。
第一加法单元3005对从替换表数据存储单元3001输出的32比特的表值B3和从第一表值转换单元3002输出的32比特的数据C2进行算术加并忽略第32个比特前的进位输出作为结果的低32比特的数据D0。
该计算表示为D0=(B3+C2)mod(2^32)异或运算单元3007对32比特的数据D0和从第二表值转换单元3003输出的32比特的数据C1的对应比特进行异或运算,并输出作为结果的32比特的数据D1。
该计算表示为D1=D0(+)C1第二加法单元3006对32比特的数据D1和从第三表值转换单元3004输出的32比特的数据C0进行算术加并忽略第32个比特前的进位输出作为结果的低32比特的数据D2。
该计算表示为D2=(D1+C0)mod(2^32)从第二加法单元3006输出的32比特的数据D2成为数据转换单元300的32比特的输出数据S1。
下面将描述数据转换单元300的操作。
(1)将8K比特的输入替换表数据(256个32比特的表值)存入替换表数据存储单元3001。
(2)将32比特的输入数据S0从高位比特分成四组8比特的数据A3-A0。
(3)替换表数据存储单元3001基于四组8比特的输入数据A3-A0从256个存储的表值中指定四个表值并输出分别为A3-A0指定的表值为B3-B0的这四个32比特的表值。
(4)第一表值转换单元3002从高位比特对表值B2进行循环1比特移位转换并输出转换数据C2。第二表值转换单元3003从高位比特对表值B1进行循环2比特移位转换并输出转换数据C1。第三表值转换单元3004从高位比特对表值B0进行循环3比特移位转换并输出转换数据C0。
(5)第一加法单元3005对32比特的表值B3和32比特的转换数据C2进行算术加并忽略第32个比特前的进位输出作为结果的低32比特的数据D0。
(6)异或运算单元3007对32比特的数据D0和32比特的转换数据C1的对应比特进行异或运算,并输出作为结果的32比特的数据D1。
(7)第二加法单元3006对32比特的数据D1和32比特的转换数据C0进行算术加并忽略第32个比特前的进位输出作为结果的低32比特的数据D2(S1)。
使用上述数据移动单元101的数据加密系统的安全性极大地依赖于数据转换单元300中进行的转换操作的数据移动函数。数据转换单元300从替换表数据存储单元3001的一组替换表数据中检索四个表值并对第一至第三表值转换单元3002-3004中的三个四个表值用不同的比特长度进行循环比特移位转换。相应地,类似于用四组替换表数据的密码系统的高度安全性可以仅通过一组替换表数据完成。
因此,第一个实施例的加密通信系统对密码分析和其它未经允许的攻击有高的安全性。
图10的数据转换单元301的结构类似于数据转换单元300,所以这里省略对它的解释。
下面是对图9的数据移动单元101加密明文和图10的数据移动单元201恢复明文的原理的解释。
如上所述,图9数据移动单元101的X1、X0、Y1、Y0、S0、和S1具有下面的关系S0=Ki(+)X1 …(公式4)S1=F(R,S0) …(公式5)Y1=S1(+)X0 …(公式6)Y0=S0 …(公式7)其中“Ki”表示32比特的子密钥数据、“R”表示8K比特的替换表数据、和“(+)”表示异或运算。而且,“F(R,α)”其中R是表值而α是输入数据,表示数据转换单元300的输出数据。
同时,图10数据移动单元201的Z1、Z0、W1、W0、和T1具有下面的关系T1=F(R,Z0) …(公式8)W1=Ki(+)Z0 …(公式9)W0=T1(+)Z1 …(公式10)假设数据移动单元101的输出数据输入到数据移动单元201。即,
Y1=Z1 …(公式11)Y0=Z0 …(公式12)(1)根据公式7和12,Y0=Z0=S0 …(公式13)(2)根据公式13,公式9表示为W1=Ki(+)S0…(公式14)(3)这里,异或具有下面的性质β(+){β(+)γ}=γ…(公式15)当公式4代到公式14时,用公式15结果可以表示为W1=Ki(+){Ki(+)X1}=X1…(公式16)(4)根据公式8和13,T1=F(R,S0) …(公式17)(5)根据公式5和17,S1=T1 …(公式18)(6)用公式11和18公式10表示为W0=S1(+)Y1 …(公式19)(7)当公式6代到公式19时,用公式15结果可以表示为W0=S1(+){S1(+)X0}=X0…(公式20)从公式16和20中,明显由数据移动单元101加密的明文数据可以由数据移动单元201恢复。
下面,图7数据加密装置10加密明文数据和图8数据解密装置20恢复明文数据的原理。
首先,数据加密装置10按如下的方式用256比特的密钥数据K和8K比特的替换表数据R加密明文块A以产生密文块A。
密钥控制单元103一个一个地将32比特的子密钥数据K0-K7输入到数据移动单元101。同时,在加密明文块A的过程中重复使用替换表数据R。
数据移动单元101用子密钥数据K0和替换表数据R对明文块A进行数据移动以产生中间块A1。数据移动单元101接着用子密钥数据K1和替换表数据R对中间块A1进行数据移动以产生中间块A2。
以同样的方式,通过使用替换表数据R数据移动单元101分别用子密钥数据K2-K7对中间块A2-A6进行数据移动。结果,产生密文块A。
另一方面,数据解密装置20按如下的方式用与数据加密装置10相同的256比特的密钥数据K和8K比特的替换表数据R解密密文块A以产生解密电文块A(明文块A)。
密钥控制单元203一个一个地将32比特的子密钥数据K7-K0输入到数据移动单元201。同时,在解密密文块A的过程中重复使用替换表数据R。
数据移动单元201用子密钥数据K7和替换表数据R对密文块A进行数据移动以产生中间块A6。数据移动单元201接着用子密钥数据K6和替换表数据R对中间块A6进行数据移动以产生中间块A5。
以同样的方式,通过使用替换表数据R数据移动单元201分别用子密钥数据K5-K0对中间块A5-A1进行数据移动。结果,产生解密电文块A。
因此证明了由数据加密装置10加密的明文数据可以由数据解密装置20恢复。
下面将解释数据加密装置10的安全性。
当与图5中传统的数据转换单元3113比较时,图11的数据转换单元300包括第一至第三表值转换单元3002-3004。对于这种结构,除了仅存储一组替换表数据之外,数据转换单元300实际上起到了存有四组替换表数据的数据转换单元3113相同的作用。例如,图11中当A2=A3时,由于A2和A3用相同的替换表数据,所以B2=B3。但是,B2由第一表值转换单元3002转换成C2,因此第一加法单元3005将不对两个相同的值进行算术加。这种密码系统可以保持高的数据移动功能并因此对未经允许的攻击安全。
相应地,具有上述数据转换单元300的加密处理设备在不降低密码安全性的情况下可以将替换表数据的数量减少到具有数据转换单元3113的传统加密处理设备的1/4。
因此本发明在保持高的密码安全性的同时,在用替换表数据的例如Blowfish密码的块密码中,通过大幅度减少所存的数据量简化硬件和软件工具。
本发明第二个实施例的加密处理设备从一组替换表数据中检索一个表值并对所检索的表值进行例如不同比特长的旋转和不同常数的加法的不同的固定转换。通过这样做,加密处理设备在减少替换表数据数量而不降低安全性的情况下完成加密处理。
在第二个实施例中,图9和10所示的第一个实施例中的数据转换单元300和数据转换单元301已经替换为数据转换单元500和数据转换单元501。而且,第一实施例所用的替换表数据的数量在第二个实施例中已经减少到1/4(2K比特)。
图12表示第二个实施例的数据转换单元500的详细结构。
数据转换单元500包括替换表数据存储单元5001、第一输入转换单元5002、第二输入转换单元5003、第三输入转换单元5004、第四输入转换单元5005、第一异或运算单元5006、第二异或运算单元5007、第三异或运算单元5008、第一表值转换单元5009、第二表值转换单元5010、第三表值转换单元5011、第一表值加法单元5012、第二表值加法单元5013、第三表值加法单元5014、和第四表值加法单元5015。
输入到数据转换单元500的32比特的数据S0从高位比特分成4组8比特的数据E3、E2、E1、和E0。
第一输入转换单元5002对8比特的数据E3从高位比特进行循环1比特移位转换并输出8比特的转换数据F3。
第二输入转换单元5003对8比特的数据E2从高位比特进行循环2比特移位转换并输出8比特的转换数据F2。
第三输入转换单元5004对8比特的数据E1从高位比特进行循环3比特移位转换并输出8比特的转换数据F1。
第一异或运算单元5006对从第一输入转换单元5002输出的转换数据F3和从第二输入转换单元5003输出的转换数据F2的对应比特进行异或,并输出作为结果的8比特的数据G2。
第二异或运算单元5007对从第一异或运算单元5006输出的数据G2和从第三输入转换单元5004输出的转换数据F1的对应比特进行异或,并输出作为结果的8比特的数据G1。
第四输入转换单元5005对从第二异或运算单元5007输出的数据G1从高位比特进行循环5比特移位转换,并输出8比特的转换数据F0。
第三异或运算单元5008对8比特的数据E0和从第四输入转换单元5005输出的8比特的转换数据F0的对应比特进行异或,并输出作为结果的8比特的数据G0。
替换表数据存储单元5001将2K比特的输入替换表数据从高位比特分成256个每个8比特长的表值,并存储这256个表值。基于从第三异或运算单元5008输出的数据G0,替换表数据存储单元5001指定256个存储表值的其中一个并输出为H0的指定表值。
第一表值转换单元5009从高位比特对从替换表数据存储单元5001输出的8比特表值H0进行循环1比特移位转换并输出8比特的转换数据I2。
第二表值转换单元5010从高位比特对8比特的表值H0进行循环2比特移位转换并输出8比特的转换数据I1。
第三表值转换单元5011从高位比特对8比特的表值H0进行循环3比特移位转换并输出8比特的转换数据I0。
第一加法单元5012对从第一输入转换单元5002输出的8比特的转换数据F3和从替换表数据存储单元5001输出的8比特的表值H0进行算术加并忽略第8个比特前的进位输出作为结果的低8比特的数据J0。
该计算表示为J0=(F3+H0)mod(2^8)第二加法单元5013对从第二输入转换单元5003输出的8比特的转换数据F2和从第一表值转换单元5009输出的8比特的转换数据I2进行算术加并忽略第8个比特前的进位输出作为结果的低8比特的数据J3。
该计算表示为J3=(F2+I2)mod(2^8)第三加法单元5014对从第三输入转换单元5004输出的8比特的转换数据F1和从第二表值转换单元5010输出的8比特的转换数据I1进行算术加并忽略第8个比特前的进位输出作为结果的低8比特的数据J2。
该计算表示为J2=(F1+I1)mod(2^8)第四加法单元5015对8比特的数据E0和从第三表值转换单元5011输出的8比特的转换数据I0进行算术加并忽略第8个比特前的进位输出作为结果的低8比特的数据J1。
该计算表示为J1=(E0+I0)mod(2^8)
第二加法单元5013的输出数据J3、第三加法单元5014的输出数据J2、第四加法单元5015的输出数据J1、第一加法单元5012的输出数据J0以这种顺序结合以形成数据转换单元500的32比特的输出数据S1。
具有上述结构的数据转换单元500按如下方式操作。
(1)将2K比特的输入替换表数据(256个8比特的表值)存入替换表数据存储单元5001。
(2)将32比特的输入数据S0从高位比特分成四组8比特的数据E3-E0。
(3)第一输入转换单元5002、第二输入转换单元5003、第三输入转换单元5004、第四输入转换单元5005、第一异或运算单元5006、第二异或运算单元5007、和第三异或运算单元5008对E3-E0进行各自的比特操作。结果,产生8比特的数据G0。
(4)替换表数据存储单元5001基于数据G0指定256个表值中的其中一个并输出为H0的指定的表值。
(5)第一表值转换单元5009从高位比特对表值H0进行循环1比特移位转换并输出转换数据I2。第二表值转换单元5010从高位比特对表值H0进行循环2比特移位转换并输出转换数据I1。第三表值转换单元5011从高位比特对表值H0进行循环3比特移位转换并输出转换数据I0。
(6)第二加法单元5013对转换数据I2和从第二输入转换单元5003输出的转换数据F2进行算术加并忽略第8个比特前的进位输出作为结果的低8比特的数据J3。第三加法单元5014对转换数据I1和从第三输入转换单元5004输出的转换数据F1进行算术加并忽略第8个比特前的进位输出作为结果的低8比特的数据J2。第四加法单元5015对转换数据I0和8比特数据E0进行算术加并忽略第8个比特前的进位输出作为结果的低8比特的数据J1。第一加法单元5012对表值H0和从第一输入转换单元5002输出的转换数据F3进行算术加并忽略第8个比特前的进位输出作为结果的低8比特的数据J0。
(7)8个比特的数据J3、J2、J1、和J0以这种顺序结合以形成数据转换单元500的32比特的输出数据S1。
第二个实施例的使用上述数据移动单元101的数据加密系统的安全性极大地依赖于在数据转换单元500中进行的转换操作的数据移动函数。数据转换单元500从替换表数据存储单元5001中存储的一组替换表数据中检索一个表值、通过对第一至第三表值转换单元5009-5011中的表值进行循环比特移位转换从检索的表值中产生三个转换值、并用表值和三个转换值产生输出数据。相应地,仅用一组替换表数据,上述密码系统可以保持类似于用四组替换表数据的密码系统的安全性程度。
因此,第二个实施例的加密通信系统对密码分析和其它未经允许的攻击有高的安全性。
第二个实施例的数据转换单元501的结构类似于数据转换单元500,因此这里省略对它的解释。
值得注意的是在第一和第二实施例中的数据加密装置10和数据解密装置20的每个成分不仅可以由具有例如异或的逻辑电路的专用硬件来实现,也可以由多用途的微处理器、控制程序、存储替换表数据的ROM、和作为工作域的RAM组成的计算机系统的软件来实现。
在第一和第二实施例中,异或运算单元1011、1012、2011、和2012已经用于合并32比特的子密钥数据与32比特的输入数据和合并32比特的数据与32比特的数据。但是,能逆操作的例如带进位的全加法器的其它的设备,可以代替异或运算单元来使用。这里值得注意的是在上述实施例操作中第一异或运算单元2011和第二异或运算单元2012分别应当是第一异或运算单元1011和第一异或运算单元1012的逆操作。而且,想用简单的操作以避免处理速度的降低。
在上述实施例的数据加密装置10和数据解密装置20中,由数据移动单元101或201对一个输入数据块所进行的数据移动次数已经设为8。但是,本发明并不仅限于此。如果一个输入数据块的数据移动频率设为小于8,就将少于256比特的密钥数据输入到数据加密装置10和数据解密装置20中。另一方面,如果一个输入数据块的数据移动频率设为大于8,就将大于256比特的密钥数据输入到数据加密装置10和数据解密装置20中。也有可能通过重复使用256比特的密钥数据的相同的子密钥数据,增加数据移动的频率而不增加输入密钥数据的长度。
在数据转换单元300和301中的第一至第三表值转换单元3002-3004、数据转换单元500和501中的第一至第四输入转换单元5002-5005、和数据转换单元500和501中的第一至第三表值转换单元5009-5011中,只要处理相同数据的转换单元在移位比特长度上不同,从高位比特所移位的比特的长度并不局限于在上述实施例中所使用的。而且,如果基于子密钥数据确定移位比特长度,就可以得到更有效的数据移动函数。例如,由32比特的子密钥数据的第0-4个比特代表的值0-31的其中一个可以设置为第一表值转换单元3002的移位比特长度、由32比特的子密钥数据的第8-12个比特代表的值0-31的其中一个可以设置为第二表值转换单元3003的移位比特长度、和由32比特的子密钥数据的第16-20个比特代表的值0-31的其中一个可以设置为第三表值转换单元3004的移位比特长度。
而且,在数据转换单元300和301中的第一至第三表值转换单元3002-3004和数据转换单元500和501中的第一至第三表值转换单元5009-5011中,只要从一个输入值中指定一个输出值,就可以使用在第一和第二实施例中所使用转换的不同的转换。也就是说,可以使用输入的预转换值不能从输出的转换值恢复的单向转换。值得注意的是由一个数据转换单元包括的表值转换单元所分别进行的转换应当彼此不同。而且,想用简单的操作以避免处理速度的降低。
虽然第一和第二实施例的每个异或运算单元和数据转换单元已经在以8或32比特为单位进行数据转换,但是仍然可以代替使用不同的比特长度。例如,当通过多用途的64比特的CPU实现本发明时,可以在以64比特位单位进行数据转换。由于有可能减少处理时间,所以仅转换输入数据的一半(例如32比特的输入数据的低16比特)也是可能的。
在第一和第二实施例中,得到作为三个表值转换单元的不同的固定转换的结果的三个转换值和一个不转换的表值已经用作四个替换表数据存储单元得到的四个表值的替换值。相反,四个表值转换单元可用于进行四种不同的固定转换以产生作为四个表值替换值的四个转换值。这里,由四个表值转换单元所进行的四种不同的固定转换可以包括不转换。当四种不同的固定转换的一个为不转换时,整体结果将与用三个表值转换单元的情形相同。这里谈到的不转换例如是当四个表值转换单元用不同的比特长度进行循环比特移位转换时循环0比特移位转换,或当四个表值转换单元进行不同常数的加法时加数为0。即,只要从一个表值或可以没有必要彼此不同的四个表值中得到四个不同的值,关于表值转换单元的改变是可能的。
而且,作为用四个替换表数据存储单元得到的四个表值的替换品,用上述实施例的三个或四个表值转换单元已经产生四个值,尽管本发明并不局限于这些数目。
本发明第三实施例的加密处理设备通过变换实际的密钥数据利用最接近的前面的密码正文块更新输入密钥数据,而不更新替换表数据。通过那样做,该加密处理设备在不丢失安全性的情况下实现高速处理,减少了替换表数据产生频率,而更新对于每个输入块的密码处理的输入密钥数据。
图13表示根据本发明第三实施例的一个加密通信系统的结构。
这个加密通信系统包括一个发送机6和一个接收机7。
发送机6配备一个数据加密设备60和一个发送单元61。
数据加密设备60使用640比特的加密密钥数据加密以64比特为单位的明文。这里,明文例如是数字编码的音频或图象信息,而相同的640比特加密密钥数据事先由发送机6和接收机7秘密持有。
发送单元61在由数据加密设备60产生的密码正文数据上执行并到串变换,并且输出在传输线8上输出获得的传输信号。
接收机7配备一个数据解密设备70和一个接收单元71。
接收单元71从发送单元61经传输线8接收传输信号并且执行关于传输信号的发送单元61的反向处理以便恢复密码正文数据。
数据解密设备70使用640比特加密密钥数据解密以64比特为单位的密码正文数据以便获得解密的正文数据(原始明文数据)。
这个解密正文数据,例如是,数字编码的音频或图象信息,接着该信息被一个专用解码器(未示出)解码并且经一个扬声器或一个显示器重放。
图14表示图13所示的数据加密设备60的详细结构。
这个数据加密设备60包括一个数据加密单元601,一个替换表数据产生单元602,一个输入密钥产生单元603,和一个密钥控制单元604。
密钥控制单元604将来自最高位比特的640比特加密密钥数据分成10组64比特实际密钥数据K
-K[9]。无论何时加密1024个明文块,密钥控制单元604一次输出K
-K[9]中的一个到替换表数据产生单元602和输入密钥产生单元603。在实际的密钥数据K[9]后,再次输出实际密钥数据K

当从密钥控制单元604接收64比特实际密钥数据时,替换表数据产生单元602根据在Blowfish密码中使用的替换表数据产生算法产生32K比特替换表数据(每个是32比特长的1024个表值)。接着替换表数据产生单元602输出产生的替换表数据到数据加密单元601。
输入密钥产生单元603存储从密钥控制单元604接收的64比特实际密钥数据。每次由数据加密单元601产生一个密码块,输入密钥产生单元603对于该密码块中的相应比特和存储的64比特实际密钥数据执行一个异或操作并且输出结果到数据加密单元601作为对于下一个明文块加密的输入密钥数据。因为加密第一明文块时没有密码块,输入密钥产生单元603发现对于一个64比特初始值IV(下文,“初始块IV”)的相应比特和实际密钥数据的异或操作并且输出该计算结果到数据加密单元601作为用于加密第一明文块的输入密钥数据。这个64比特初始块IV已经预先存储在输入密钥产生单元603中。
这里,一旦产生32个密码正文块,输入密钥产生单元603例如可以执行对于在存储的实际密钥数据中的相应比特和初始块IV的异或操作代替最近产生的密码正文块。在这种情况下,利用将计算的实际密钥数据的异或操作的目的是初始化每次加密的32明文块。
数据加密单元601使用64比特输入密钥数据和32比特替换表数据加密以64比特为单位的明文数据以便产生密码正文数据。另外,当数据加密单元601从替换表数据产生单元602接收新的32K比特替换表数据时更新该替换表数据。
图15表示图13所示的数据解密设备70的详细结构。
这个数据解密设备70包括一个数据解密单元701,一个替换表数据产生单元702,一个输入密钥产生单元703,和一个密钥控制单元704。
密钥控制单元704将来自最高位比特的640比特加密密钥数据分成10组64比特实际密钥数据K
-K[9]。无论何时解密1024个密码正文块,密钥控制单元704一次输出K
-K[9]中的一个到替换表数据产生单元702和输入密钥产生单元703。在实际的密钥数据K[9]后,再次输出实际密钥数据K

当从密钥控制单元704接收64比特实际密钥数据时,替换表数据产生单元702根据在Blowfish密码中使用的替换表数据产生算法产生32K比特替换表数据。接着替换表数据产生单元702输出产生的替换表数据到数据解密单元701。
输入密钥产生单元703存储从密钥控制单元704接收的64比特实际密钥数据。每次由数据解密单元701产生一个明文块,输入密钥产生单元703对于该密码块中的相应比特和存储的64比特实际密钥数据执行一个异或操作并且输出结果到数据解密单元701作为对于下一个密码正文块解密的输入密钥数据。这里,因为解密第一密码正文块时没有密码块,使得输入密钥产生单元703发现对于初始块IV的相应比特和实际密钥数据的异或操作并且输出该计算结果到数据解密单元701作为用于解密第一密码正文块的输入密钥数据。这个64比特初始块IV已经预先存储在输入密钥产生单元703中。
这里,一旦产生32个明文块,输入密钥产生单元703例如可以执行对于在存储的实际密钥数据中的相应比特和初始块IV的异或操作代替最近处理的密码正文块。在这种情况下,利用将计算的实际密钥数据的异或操作的目的是初始化每次解密的32个密码正文块。
数据解密单元701使用64比特输入密钥数据和32比特替换表数据解密以64比特为单位的密码正文数据以便产生明文数据。另外,当数据解密单元701从替换表数据产生单元702接收新的32K比特替换表数据时更新该替换表数据。
图16表示图14所示的数据加密单元601的详细结构。
这个数据加密单元601大致是由一个数据正移交换单元6011,一个级数控制单元6012,和一个子密钥产生单元6013组成。
子密钥产生单元6013根据在Blowfish密码中使用的子密钥产生算法产生来自64比特输入密钥数据的256比特数据,将该256比特数据分成8组32比特的子密钥数据SK0-SK7,并且存储SK0-SK7。
数据正移交换单元6011使用32K比特替换表数据和由子密钥产生单元6013产生的32比特子密钥数据执行对于64比特输入明文数据的数据正移交换,并且输出得到的64比特数据。
级数控制单元6012控制由数据正移交换单元6011执行的数据正移交换的次数的个数以便从一个明文块产生一个密码正文块。级数控制单元6012记数对于每个明文块执行的数据正移交换次数的个数。如果记数的个数小于一个预定个数,则从数据正移交换单元6011输出的64比特数据输入到数据正移交换单元6011用于重正移交换。如果记数的个数到达该预定个数,则级数控制单元6012输出数据正移交换单元6011的64比特输出数据作为一个密码正文块。在这个实施例中,预定个数被置为8。
这里,子密钥数据SK0用于执行对于一个明文块的第一数据正移交换,并且接着依次使用子密钥数据SK1-SK7重复数据正移交换。在子密钥数据sk7之后再次使用子密钥数据sk0。
图17表示图15所示的数据解密单元701的详细结构。
这个数据解密单元701大致是由一个数据正移交换单元7011,一个级数控制单元7012,和一个子密钥产生单元7013组成。
子密钥产生单元7013和数据正移交换单元7011与图16所示的子密钥产生单元6013和数据正移交换单元6011相同。
级数控制单元7012控制由数据正移交换单元7011执行的数据正移交换的次数的个数以便从一个密码正文块产生一个明文块。级数控制单元7012记数对于每个密码正文块执行的数据正移交换次数的个数。如果记数的个数小于一个预定个数,则从数据正移交换单元7011输出的64比特数据输入到数据正移交换单元7011用于重正移交换。如果记数的个数到达该预定个数,则级数控制单元7012输出数据正移交换单元7011的64比特输出数据作为一个明文块。在这个实施例中,预定个数被置为8。
这里,子密钥数据SK7用于执行对于一个密码正文块的第一数据正移交换,并且接着依次使用子密钥数据SK6-SK0重复数据正移交换。在子密钥数据sk0之后再次使用子密钥数据sk7。
注意在图16和图17中的数据正移交换单元6011和数据正移交换单元7011的结构分别与图13和图14所示的数据正移交换单元3011和数据正移交换单元4011的结构相同。
图18表示块号t,实际密钥数据,输入密钥数据和替换表数据的关系。这里,块t表示分配给通过从以64比特为单位的最高位比特划分输入明文数据产生的每个明文块的从0开始的序号。在该图中,实际密钥数据“-”表示从密钥输入控制单元604中没有输出,“+”表示一个异或操作,“IV”表示初始块IV,“Ct”表示通过加密第“t”个明文块得到的一个密码正文块,和“TG(K[i]”表示从实际密钥数据K[i](i=0,1,...9)产生的替换表数据。
如图18所示,对于32明文块的每个块在K[I]+IV(i=0,1,...9)复位输入密钥数据。另外,对于1024个明文块中的每一个块从密钥控制单元604输出实际密钥数据,和作为结果替换表数据并且更新输入密钥数据。
下面将给出第三实施例的加密通信系统的一般操作的例子。
图13的发送机6使用预先存储的的加密密钥数据加密以64比特为单位的输入明文数据。下面,通过从最高位比特的明文数据划分得到的每个64比特明文数据块,被叫做明文块Pt(t=0,1,...)。
(1)首先,如下加密明文块P0。
图14中的密钥控制单元604输出从加密密钥数据产生的实际密钥数据K
,用于加密明文块P0。
图14中的替换表数据产生单元602产生来自从密钥控制单元604接收的实际密钥数据K
的替换表数据TG(K
)并且输出TG(K
)到数据加密单元601。
图14的输入密钥产生单元603执行对于实际密钥数据K
中的相应比特和初始块IV的异或操作并且输出由此产生的输入密钥数据K
+IV到数据加密单元601。
数据加密单元601使用替换表数据TG(K
)和输入密钥数据K
(+)IV加密明文块P0以便产生密码正文块C0。
(2)下面,如下加密明文块P1。
因为密钥控制单元604不输出新的实际密钥数据,替换表数据产生单元602不产生新的替换表数据。输入密钥产生单元603执行对于实际密钥数据K
中相应比特和密码块C0的异或操作并且输出产生的输入密钥数据K
(+)C0到数据加密单元601。
数据加密单元601使用替换表数据TG(K
)和输入密钥数据K
(+)C0加密明文块P1以便产生密码块C1。
(3)以如明文块P1的相同方式加密明文块P2-P31。
(4)如下加密明文块P32。
因为密钥控制单元604不输出新的实际密钥数据,替换表数据产生单元602不产生新的替换表数据。
输入密钥产生单元603执行对于实际密钥数据K
中相应比特和初始块IV的异或操作并且输出产生的输入密钥数据K
(+)IV到数据加密单元601。
数据加密单元601使用替换表数据TG(K
)和输入密钥数据K
(+)IV加密明文块P32以便产生密码块C32。
(5)以如明文块P1的相同方式加密明文块P33-P63。
(6)重复如明文块P32-P63的相同加密处理直到明文块P1023。
(7)如下加密明文块P1024。
密钥控制单元604输出从加密密钥数据产生的实际密钥数据K[1],用于加密明文块P1024。
替换表数据产生单元602从密钥控制单元604接收的实际密钥数据K[1]中产生替换表数据TG(K[1]),并且输出到数据加密单元601。
输入密钥产生单元603执行对于实际密钥数据K[1]中相应比特和初始块IV的异或操作并且输出产生的输入密钥数据K[1](+)IV到数据加密单元601。
数据加密单元601使用替换表数据TG(K[1])和输入密钥数据K[1](+)IV加密明文块P1024以便产生密码块C1024。
(8)如下加密明文块P1025。
因为密钥控制单元604不输出新的实际密钥数据,所以替换表数据产生单元602不产生新的替换表数据。
输入密钥产生单元603执行对于实际密钥数据K[1]中相应比特和密码块C1024块的异或操作并且输出产生的输入密钥数据K[1](+)C1024到数据加密单元601。
数据加密单元601使用替换表数据TG(K[1])和输入密钥数据K[1](+)C1024加密明文块P1025以便产生密码块C1025。
(9)重复如明文块P0-P1023的相同加密处理直到最后的明文块。
(10)对于密码块的解密处理是上面加密处理(1)-(9)的反向变换并且不同仅在于与被计算的实际密钥数据进行异或操作的目标不是由数据加密单元601产生的密码块,而是一个密码块立即进行由数据解密单元701解密的密码块。
将使用下面的公式说明由数据加密设备60进行的明文数据的加密和由数据解密设备70进行的明文数据的恢复以后的原理。
在这个说明中,“encryption”的初始字母“e”被加到每个有关加密处理的符号表中,而“decryption”的初始字母“d”被加到每个有关解密操作的符号表中。
当加密明文块Pe(1024*k)(k=0,1,...)时密钥控制单元604输出实际密钥数据Ke[k mod 10]。否则,密钥控制单元604不输出实际密钥数据。
替换表数据产生单元602从密钥控制单元604接收的实际密钥数据Ke[kmod 10]中产生替换表数据并且当加密明文块Pe(1024*k)时输出该替换表数据。否则,替换表数据产生单元602不产生替换表数据。
输入密钥产生单元603发现对于初始块Ive中的相应比特和实际密钥数据Ke[((32*j)mod 1024)mod 10]的异或操作并且当加密明文块Pe(32*j)(j=0,1,...)时输出该计算结果作为输入密钥数据。当加密除明文块Pe(32*j)以外的明文块Pet时,输入密钥产生单元603发现对于密码正文块Ce(t-1)的相应比特和实际密钥数据Ke[((t-(t mod 1024))/1024)mod 10]的异或操作并且输出计算结果作为输入密钥数据。
换句话说,当t=(32*j)(j=0,1,...)时,用于加密明文块Pet的输入密钥数据Iket是Iket=Ke[((t-(t mod 1024))/1024)mod 10](+)IVe ...(公式21)同时,当t≠(32*j)(j=0,1,...)时,用于加密明文块Pet的输入密钥数据Iket是Iket=Ke[((t-(t mod 1024))/1024)mod 10](+)Ce(t-1) ...(公式22)当I=(t-(t mod 1024))/1024)mod 10时,替换表数据是Tge(Ke[I]),并且通过加密明文块Pet(t=0,1,...)获得的64比特密码正文块Cet是Cet=Enc(Pet,Tge(Ke[I],Iket) ...(公式23)此处“Enc”表示数据加密单元601中执行的加密处理。
这样,数据加密单元601使用输入密钥数据Iket和替换表数据Tge(Ke[I])加密每一个明文块Pet以便产生密码正文块Cet=Enc(Pet,Tge(Ke[I],Iket)。
当解密密文块Cd(1024*k)(k=0,1,...)时密钥控制单元704输出实际密钥数据Kd[k mod 10]。否则,密钥控制单元704不输出密钥数据。
替换表数据产生单元702从密钥控制单元704接收的实际密钥数据Kd[kmod 10]中产生替换表数据并且当解密密文块Cd(1024*k)时输出替换表数据。否则,替换表数据产生单元702不产生替换表数据。
输入密钥产生单元703发现对于初始块IVd的相应比特和实际密钥数据Kd[((32*j)-((32*j)mod 1024))/1024)mod 10]的异或操作并且当解密密文块Cd(32*j)(j=0,1,...)时输出计算结果作为输入密钥数据。当解密除密文块Cd(32*j)以外的密文块Cdt时,输入密钥产生单元703发现对于密码正文块Cd(t-1)的相应比特和实际密钥数据Kd[((t-(t mod 1024))/1024)mod 10]的异或操作并且输出计算结果作为输入密钥数据。
换句话说,当t=(32*j)(j=0,1,...)时,用于解密密文块Cdt的输入密钥数据Ikdt是Ikdt=Kd[((t-(t mod 1024))/1024)mod 10](+)IVd ...(公式24)同时,当t≠(32*j)(j=0,1,...)时,用于解密密文块Cdt的输入密钥数据Ikdt是Ikdt=Kd[((t-(t mod 1024))/1024)mod 10](+)Cd(t-1) ...(公式25)当i=(t-(t mod 1024))/1024)mod 10时,替换表数据是Tgd(Kd[I]),并且通过解密密文块Cdt(t=0,1,...)获得的64比特解密正文块Ddt是Ddt=Dec(Cdt,Tgd(Kd[i],Ikdt)... (公式26)此处“Dec”表示数据解密单元701中执行的解密处理。
这样,数据解密单元701使用输入密钥数据Ikdt和替换表数据Tgd(Kd[i])解密每一个密文块Cdt以便产生解密的正文块Ddt=Dec(Cdt,Tgd(Kd[i],Ikdt)。
当使用相同的实际密钥数据通过数据解密设备70解密通过数据加密设备60使用给定的实际密钥数据对和初始块加密明文块字符串(Pe0,Pe1,...)获得的密码正文块字符串时,得到的解密正文块字符串(Dd0,Dd1,...)与原始明文块字符串相同。这将在下面证明。此处注意,因为替换表数据产生单元602和替换表数据产生单元702具有相同的功能,所以由替换表数据产生单元602使用实际密钥的产生的替换表数据将与使用相同实际密钥数据由替换表数据产生单元702产生的替换表数据相同。
(1)因为数据加密设备60和数据解密设备70使用相同的实际密钥数据,所以Ke=Kd下文,Ke和Kd都指的是实际密钥数据Ks。
(2)因为数据加密设备60和数据解密设备70使用相同的初始块,所以Ive=Ivd下文,Ive和Ivd都指的是初始块IVs。
(3)因为通过数据解密设备70解密通过数据加密设备60产生的密文块字符串,所以Cet=Cdt下文,Cet和Cdt指的都是密文块Cst。
(4)根据(1),(2),和公式21,当t=(32*j)(j=0,1,...)时,用于加密明文块Pet的输入密钥数据Iket是Iket=Ks[((t-(t mod 1024))/1024)mod 10](+)Ivs...(公式27)(5)根据(1),(2),和公式24,当t=(32*j)(j=0,1,...)时,用于解密明文块Cst的输入密钥数据Ikdt是Ikdt=Ks[((t-(t mod 1024))/1024)mod 10](+)Ivs...(公式28)(6)公式27的右边和公式28的右边是相等的,使得当t=(32*j)(j=0,1,...)时,Iket=Ikdt(7)根据(1),(3),和公式22,当t≠(32*j)(j=0,1,...)时,用于加密明文块Pet的输入密钥数据Iket是Iket=Ks[((t-(t mod 1024))/1024)mod 10](+)Cs(t-1)...(公式29)(8)根据(1),(3),和公式25,当t≠(32*j)(j=0,1,...)时,用于解密明文块Cst的输入密钥数据Ikdt是Ikdt=Ks[((t-(t mod 1024))/1024)mod 10](+)Cs(t-1)...(公式30)(9)公式29的右边和公式30的右边是相等的,使得当t≠(32*j)(j=0,1,...)时,
Iket=Ikdt(10)从(6)和(9),明显当t=(32*j)(j=0,1,...)和当t≠(32*j)(j=0,1,...)两种情况时 Iket=Ikdt。
因此,Iket和Ikdt在下文都指输入密钥数据Ikst。
(11)因为替换表数据产生单元602和替换表数据产生单元702具有相同的功能,所以Tge(Ks[I])=TGd(Ks[I])相应地,Tge(Ks[I])和TGd(Ks[I])在下文都指替换表数据TGs(Ks[I])。
(12)根据(10),(11),和公式23,通过加密明文块Pet(t=0,1,...)得到的64比特密文块Cst表示为Cst=Enc(Pet,TGs(Ks[I]),Ikst)...(公式31)(13)根据(10),(11),和公式26,通过解密密文块Cst(t=0,1,...)得到的64比特解密正文块Ddt表示为Ddt=Dec(Cst,TGs(Ks[i],Ikst)...(公式32)(14)当将公式31替换为公式32时,结果是Ddt=Dec(Pet,TGs(Ks[I]),Ikst),TGs(Ks[i],Ikst)...(公式33)(15)当数据加密单元601使用32K比特替换表数据β和64比特输入密钥数据γ加密明文块α以便产生一个密码正文块和数据解密单元701使用相同的替换表数据β和64比特输入密钥数据γ解密该密码正文块时,与在第一实施例中由数据移动单元101的明文数据的加密和由数据移动单元201的明文数据的恢复后的原理相同,由数据解密单元701获得的解密的正文块与原始明文块α相同。即,Dec(Enc(α,β,γ),β,γ)=α...(公式34)(16)从等式33和34,证明(解密正文块Ddt)=(明文块Pet)...(公式35)数据加密设备60的安全性将在下面说明。这个数据加密设备60的安全性取决于数据加密单元601的安全性。在本实施例中,当实际密钥数据被表示为CKt时,在数据加密单元601中输入的输入密钥数据Ikt被表示为Ikt=CKt(+)IV (此处t=k*32)Ikt=CKt(+)C(t-1)(此处t≠k*32)...(公式36)
此处k=0,1,...
在公式36中,虽然密码正文块C(t-1)为密码分析学所知,但是初始块IV和从密钥控制单元604输出的实际密钥数据CKt不为密码分析学所知,使得输入密钥数据IKt不为密码分析学所知。相应地,即使密码分析在即计算机上通过已知的明文攻击模仿数据加密单元601,也不可能发现加密密钥数据。
另外,因为在本实施例中无论何时加密新的明文块,更新输入密钥数据,所以与对于所有的明文块使用相同的输入密钥数据的情况相比,更保证加密安全性。
另外,因为在本实施例中加密1024明文块,每次更新替换表数据,所以与对于所有的明文块使用相同的替换表数据的情况相比,更保证加密安全性。
而且,在本实施例中,只有当执行加密1024次时执行32K比特替换表数据产生。因为32K比特替换表数据产生比在数据加密单元601中执行的8组32比特子密钥数据产生花费较多的时间,数据加密设备60保持高的加密安全性,不会如在第三常规实例的情况下丢失处理速度。
虽然在第三实施例中输入密钥产生单元603和703已经在两组64比特数据上执行异或操作,但是利用其他数据合并方法可以实现相同的效果。
虽然在第三实施例中64比特实际密钥数据已经由密钥控制单元604和704产生,但是实际密钥数据的长度不限于64比特。实际密钥数据比64比特小,例如可以使用40比特实际密钥数据,通过修改输入密钥产生单元603和703中的数据合并操作使得输出数据将是64比特长。
在第三实施例中,在紧前面的加密处理中产生的密码正文块已经输入到输入密钥产生单元603中。但是,可以使用在紧前面加密处理期间得到的任何64比特数据,而不是密码正文块。而且,这个数据可以不必需是64比特长。通过修改输入密钥产生单元603中的数据合并操作可以使用小于64比特的数据,例如40比特数据,使得输出数据将是64比特长。相同的方法应用到数据解密设备70。
虽然数据加密单元601和数据解密单元701已经使用了Blowfish密码,也可以使用基于密钥数据产生替换表数据的任何块密码。
在第三实施例中,由10组64比特实际密钥数据组成的加密密钥数据已经存储在每个发送机6和接收机7中。另一种方案,首先使用用于密码处理的一组64比特实际密钥数据可以存储在每个发送机6和接收机7中,并且第一组64比特实际密钥数据之后的其他组64比特实际密钥数据可以与明文数据一起在发送机6中加密并且发送给接收机7。可选择地,加密密钥数据可以使用例如Diffie-Hellman方案的公共密钥加密系统分配。
在第一到第三实施例中,数据加密设备已经加密输入明文数据以便产生密码正文数据和数据解密设备已经解密该密码正文数据。但是,数据加密设备和数据解密设备每个可以用于加密和解密两者,因为通过数据解密设备的解密是通过数据加密设备的加密的反向操作。因此,数据解密设备可以加密输入明文数据以便产生密码正文数据和数据加密设备可以解密该密码正文数据。
虽然在这个说明书中上已经作为例如逻辑IC的硬件描述了面的每个实施例,但是本发明还可以由软件实现。通过在例如CD-ROM的计算机可读存储介质上存储软件,任何重放,使用,传递,出借,输入和关于本发明的传递/出借的建议与硬件的情况一样是可能的。
虽然已经通过参照附图的示例完全描述了本发明,应该注意各种改变和修改对本领域技术人员是明显的。因此,除非这样的改变和修改脱离本发明的范围,它们应该解释为被包括在其中。
权利要求
1.一个加密处理设备,用于利用多组替换数据加密地处理输入数据以便产生输出数据,该加密处理设备包括存储装置,用于存储(2^N)组替换数据,该替换数据每个具有预定个数的比特,此处N是一个不小于2的整数;划分装置,用于将(N*M)比特长的输入数据分成M组子数据,每个子数据是N比特长,此处M是一个不小于2的整数;替换装置,用于接收一个输入,它是下面任意之一M组N比特子数据;和作为在M组N比特子数据上执行的合并处理结果得到的至少一组N比特输入合并数据,对于N个输入比特的每个在存储装置中指定(2^N)组替换数据之一,并且输出对于每个N输入比特指定的该组替换数据;固定变换执行装置,用于在从该替换装置输出的至少一组替换数据上执行多个不同的固定变换,以便产生M组变换的数据,每个变换的数据具有预定个数的比特;和输出数据产生装置,用于根据由固定变换执行装置产生的M组变换的数据产生(N*M)比特长的输出数据。
2.权利要求1的加密处理设备,其中由固定变换执行装置执行的多个不同固定变换分别旋转不同比特变换长度。
3.权利要求2的加密处理设备,还包括密钥获得装置,用于获得一组密钥数据;和旋转确定装置,用于根据由密钥获得装置得到的密钥数据组,在多个不同固定变换的每一个变换中确定由固定变换执行装置执行的旋转的比特变换长度。
4.权利要求3的加密处理设备,其中该预定数是(N*M),其中该替换装置在该存储装置的(2^N)组替换数据中指定m组替换数据,分别用于M组N比特子数据,并且输出指定的M组替换数据,每组是(N*M)比特长,其中固定变换执行装置分别在从替换装置输出的M组替换数据上执行M次不同的固定变换,以便产生M组变换数据,每组是(N*M)比特长,和其中输出数据产生装置在产生的M组变换数据上执行合并处理以便产生(N*M)比特长的输出数据。
5.权利要求4的加密处理设备,其中通过输出数据产生装置的合并处理至少由下面操作之一组成算术加操作;和对于相应比特的异或操作。
6.权利要求3的加密处理设备,其中该预定数是N,其中该替换装置包括输入合并装置,用于在M组N比特子数据上执行全局合并处理以便产生一组N比特输入合并的数据,在存储装置中指定(2^N)组替换数据之一用于该N比特输入合并数据组,并且输出是N比特长的指定的替换数据组,其中该固定变换执行装置在从替换装置输出的替换数据组上执行M个不同的固定变换的每个变换,以便产生M组变换数据,每组数据是N比特长,和其中输出数据产生装置包括输出合并装置,用于执行关于M组子数据的每组和对应于该子数据组的M组变换数据的不同的一组变换数据的单个合并处理,以便产生每组是N比特长的M组输出合并数据;和组合装置,用于组合由输出合并装置产生的M组输出合并数据以便形成是(N*M)比特长的输出数据。
7.权利要求6的加密处理设备,其中通过输入合并装置的全局合并处理至少由下面操作之一组成算术加操作;和对于相应比特的异或操作。
8.权利要求6的加密处理设备,其中通过输入合并装置的全局合并处理是在执行关于由划分装置产生的M组子数据的多个不同的固定变换之后,至少执行下面操作之一算术加操作;和对于相应比特的异或操作。
9.权利要求6的加密处理设备,其中通过输出合并装置的每个单独合并处理是任意的算术加操作和对于相应比特的异或操作的。
10.一种用于产生一组替换表数据和利用该组替换表数据加密地处理输入数据的加密处理设备,该加密处理设备包括密钥数据存储装置,用于存储一组密钥数据;替换表数据存储装置,用于存储一组替换表数据;块产生装置,用于将输入数据分成输入块,每块具有预定数的比特并且一块一块地输出该输入块;替换表数据产生装置,用于当加密处理指定个数的输入块之后,立即加密处理一个输入块时,产生一组替换表数据并且将替换表数据存储装置中的一组替换表数据替换为产生的替换表数据组;密钥数据变换装置,用于当在加密处理该输入块紧前面的一个输入块之后,加密处理一个输入块时,通过在该密钥数据组上利用产生作为加密处理紧前面的输入块的结果的一个输出块执行一个比特变换,变换该密钥数据存储装置中的一组密钥数据;和加密处理装置,用于加密处理从块产生装置输出的一个输入块以便利用在该替换表数据存储装置中的一组替换表数据和任意的由密钥数据变换装置产生的一个变换密钥数据组和存储在密钥数据存储装置中的一组密钥数据,产生一个输出块。
11.权利要求10的加密处理设备,还包括密钥数据获得装置,用于当加密处理指定个数的输入块之后立即加密处理该输入块时,得到一组密钥数据和将该密钥数据存储装置中的一组密钥数据替换为得到的密钥数据组,其中替换表数据产生装置根据由密钥数据获得装置得到的该密钥数据组产生该替换表数据组。
12.权利要求11的加密处理设备,其中当一个输入块位于加密处理的输入数据顶部时,该密钥数据获得装置得到一组密钥数据并且将该得到的密钥数据组存储到密钥数据存储装置中,和其中当一个输入块位于加密处理的输入数据顶部时,该替换表数据产生装置根据由密钥数据获得装置得到的该组密钥数据产生一组替换表数据并且将产生的替换表数据组存储在替换表数据存储装置中。
13.权利要求12的加密处理设备,其中该密钥数据变换装置预先存储一个预定个数比特的初始块,和当一个输入块位于加密处理的输入数据顶部时,和当加密处理固定个数的输入块之后,立即加密处理一个输入块时,使用该初始块通过执行该密钥数据组上的比特变换,变换该密钥数据存储装置中的一组密钥数据,该固定个数小于指定个数,和其中加密处理装置加密处理从块产生装置输出的一个输入块,以便利用在该替换表数据存储装置中的一组替换表数据和由密钥数据变换装置产生的一个变换密钥数据组,产生一个输出块。
14.权利要求13的加密处理设备,其中由密钥数据变换装置执行的比特变换是任意的算术加操作和对于相应比特的异或操作。
15.一种用于产生一组替换表数据和利用该组替换表数据加密地处理输入数据的加密处理设备,该加密处理设备包括密钥数据存储装置,用于存储一组密钥数据;替换表数据存储装置,用于存储一组替换表数据;块产生装置,用于将输入数据分成输入块,每块具有预定数的比特并且一块一块地输出该输入块;替换表数据产生装置,用于当加密处理指定个数的输入块之后,立即加密处理一个输入块时,产生一组替换表数据并且将替换表数据存储装置中的一组替换表数据替换为产生的替换表数据组;密钥数据变换装置,用于当在加密处理该输入块紧前面的一个输入块之后,加密处理一个输入块时,通过在该密钥数据组上利用紧前面的输入块执行一个比特变换,变换该密钥数据存储装置中的一组密钥数据;和加密处理装置,用于加密处理从块产生装置输出的一个输入块以便利用在该替换表数据存储装置中的一组替换表数据和任意的由密钥数据变换装置产生的一个变换密钥数据组和存储在密钥数据存储装置中的一组密钥数据,产生一个输出块。
16.权利要求15的加密处理设备,还包括密钥数据获得装置,用于当加密处理指定个数的输入块之后立即加密处理该输入块时,得到一组密钥数据和将该密钥数据存储装置中的一组密钥数据替换为得到的密钥数据组,其中替换表数据产生装置根据由密钥数据获得装置得到的该密钥数据组产生该替换表数据组。
17.权利要求16的加密处理设备,其中当一个输入块位于加密处理的输入数据顶部时,该密钥数据获得装置得到一组密钥数据并且将该得到的密钥数据组存储到密钥数据存储装置中,和其中当一个输入块位于加密处理的输入数据顶部时,该替换表数据产生装置根据由密钥数据获得装置得到的该组密钥数据产生一组替换表数据并且将产生的替换表数据组存储在替换表数据存储装置中。
18.权利要求17的加密处理设备,其中该密钥数据变换装置预先存储一个预定个数比特的初始块,和当一个输入块位于加密处理的输入数据顶部时,和当加密处理固定个数的输入块之后,立即加密处理一个输入块时,使用该初始块通过执行该密钥数据组上的比特变换,变换该密钥数据存储装置中的一组密钥数据,该固定个数小于指定个数,和其中加密处理装置加密处理从块产生装置输出的一个输入块以便利用在该替换表数据存储装置中的一组替换表数据和由密钥数据变换装置产生的一个变换密钥数据组,产生一个输出块。
19.权利要求18的加密处理设备,其中由密钥数据变换装置执行的比特变换是任意的算术加操作和对于相应比特的异或操作。
20.一种用于产生一组替换表数据和利用该组替换表数据加密地处理输入数据的加密处理设备,该加密处理设备包括密钥数据存储装置,用于存储一组密钥数据;替换表数据存储装置,用于存储一组替换表数据;块产生装置,用于将输入数据分成输入块,每块具有预定数的比特并且一块一块地输出该输入块;替换表数据产生装置,用于当加密处理指定个数的输入块之后,立即加密处理一个输入块时,产生一组替换表数据并且将替换表数据存储装置中的一组替换表数据替换为产生的替换表数据组;密钥数据变换装置,用于当在加密处理该输入块紧前面的一个输入块之后,加密处理一个输入块时,通过在该密钥数据组上利用对于紧前面的输入块加密处理期间产生的一个中间块执行一个比特变换,变换该密钥数据存储装置中的一组密钥数据;和加密处理装置,用于通过使用该替换表数据存储装置中的一组替换表数据和任意的由密钥数据变换装置产生的一个变换密钥数据组和存储在密钥数据存储装置中的密钥数据组,加密处理从块产生装置输出的一个输入块以便在对于输入块的加密处理期间产生一个中间块并且产生一个输出块作为对于该输入块的加密处理的结果。
21.权利要求20的加密处理设备,还包括密钥数据获得装置,用于当加密处理指定个数的输入块之后立即加密处理该输入块时,得到一组密钥数据和将该密钥数据存储装置中的一组密钥数据替换为得到的密钥数据组,其中替换表数据产生装置根据由密钥数据获得装置得到的该密钥数据组产生该替换表数据组。
22.权利要求21的加密处理设备,其中当一个输入块位于加密处理的输入数据顶部时,该密钥数据获得装置得到一组密钥数据并且将该得到的密钥数据组存储到密钥数据存储装置中,和其中当一个输入块位于加密处理的输入数据顶部时,该替换表数据产生装置根据由密钥数据获得装置得到的该组密钥数据产生一组替换表数据并且将产生的替换表数据组存储在替换表数据存储装置中。
23.权利要求22的加密处理设备,其中该密钥数据变换装置预先存储一个预定个数比特的初始块,和当一个输入块位于加密处理的输入数据顶部时,和当加密处理固定个数的输入块之后,立即加密处理一个输入块时,使用该初始块通过执行该密钥数据组上的比特变换,变换该密钥数据存储装置中的一组密钥数据,该固定个数小于指定个数,和其中加密处理装置加密处理从块产生装置输出的一个输入块以便利用在该替换表数据存储装置中的一组替换表数据和由密钥数据变换装置产生的一个变换密钥数据组,产生一个中间块和一个输出块。
24.权利要求23的加密处理设备,其中由密钥数据变换装置执行的比特变换是任意的算术加操作和对于相应比特的异或操作。
25.在一个加密处理设备中的一种加密处理方法,该设备配备一个存储设备,存储(2^N)组替换数据,每组数据具有预定个数的比特,利用(2^N)组替换数据加密处理输入数据以便产生输出数据,N是一个不小于2的整数,该加密处理方法包括;划分步骤,用于将(N*M)比特长的输入数据分成M组子数据,每个子数据是N比特长,此处M是一个不小于2的整数;替换步骤,用于接收一个输入,它是下面任意之一M组N比特子数据;和作为在M组N比特子数据上执行的合并处理结果得到的至少一组N比特输入合并数据,对于N个输入比特的每个在存储装置中指定(2^N)组替换数据之一,并且输出对于每个N输入比特指定的该组替换数据;固定变换执行步骤,用于在从该替换步骤输出的至少一组替换数据上执行多个不同的固定变换,以便产生M组变换的数据,每个变换的数据具有预定个数的比特;和输出数据产生步骤,用于根据由固定变换执行步骤产生的M组变换的数据产生(N*M)比特长的输出数据。
26.权利要求25的加密处理方法,其中该预定数是(N*M),其中该替换步骤在该存储装置的(2^N)组替换数据中指定m组替换数据,分别用于M组N比特子数据,并且输出指定的M组替换数据,每组是(N*M)比特长,其中固定变换执行步骤分别在从替换步骤输出的M组替换数据上执行M次不同的固定变换,以便M组变换数据,每组是(N*M)比特长,和其中输出数据产生步骤在产生的M组变换数据上执行合并处理以便产生(N*M)比特长的输出数据。
27.权利要求25的加密处理方法,其中该预定数是N,其中该替换步骤包括输入合并步骤,用于在M组N比特子数据上执行全局合并处理以便产生一组N比特输入合并的数据,在存储装置中指定(2^N)组替换数据之一用于该N比特输入合并数据组,并且输出是N比特长的指定的替换数据组,其中该固定变换执行步骤在从替换步骤输出的替换数据组上执行M个不同的固定变换的每个变换,以便产生M组变换数据,每组数据是N比特长,和其中输出数据产生步骤包括输出合并子步骤,用于执行关于M组子数据的每组和对应于该子数据组的M组变换数据的不同的一组变换数据的单个合并处理,以便产生每组是N比特长的M组输出合并数据;和组合子步骤,用于组合由输出合并子步骤产生的M组输出合并数据以便形成是(N*M)比特长的输出数据。
28.在一个加密处理设备中的一种加密处理方法,该设备配备存储一组密钥数据的一个密钥数据存储设备,和用于存储一组替换表数据的替换表数据存储装置,产生一组替换表数据和利用该组替换表数据加密地处理输入数据以便产生输出数据,该加密处理方法包括;块产生步骤,用于将输入数据分成输入块,每块具有预定数的比特并且一块一块地输出该输入块;替换表数据产生步骤,用于当加密处理指定个数的输入块之后,立即加密处理一个输入块时,产生一组替换表数据并且将替换表数据存储装置中的一组替换表数据替换为产生的替换表数据组;密钥数据变换步骤,用于当在加密处理该输入块紧前面的一个输入块之后,加密处理一个输入块时,通过在该密钥数据组上利用产生作为加密处理紧前面的输入块的结果的一个输出块执行一个比特变换,变换该密钥数据存储装置中的一组密钥数据;和加密处理步骤,用于加密处理由块产生步骤输出的一个输入块以便利用在该替换表数据存储装置中的一组替换表数据和任意的由密钥数据变换装置产生的一个变换密钥数据组和存储在密钥数据存储装置中的一组密钥数据,产生一个输出块。
29.在一个加密处理设备中的一种加密处理方法,该设备配备存储一组密钥数据的一个密钥数据存储设备,和用于存储一组替换表数据的替换表数据存储装置,产生一组替换表数据和利用该组替换表数据加密地处理输入数据以便产生输出数据,该加密处理方法包括;块产生步骤,用于将输入数据分成输入块,每块具有预定数的比特并且一块一块地输出该输入块;替换表数据产生步骤,用于当加密处理指定个数的输入块之后,立即加密处理一个输入块时,产生一组替换表数据并且将替换表数据存储装置中的一组替换表数据替换为产生的替换表数据组;密钥数据变换步骤,用于当在加密处理该输入块紧前面的一个输入块之后,加密处理一个输入块时,通过在该密钥数据组上利用紧前面的输入块执行一个比特变换,变换该密钥数据存储装置中的一组密钥数据;和加密处理步骤,用于加密处理由块产生步骤输出的一个输入块以便利用在该替换表数据存储装置中的一组替换表数据和任意的由密钥数据变换装置产生的一个变换密钥数据组和存储在密钥数据存储装置中的一组密钥数据,产生一个输出块。
30.在一个加密处理设备中的一种加密处理方法,该设备配备存储一组密钥数据的一个密钥数据存储设备,和用于存储一组替换表数据的替换表数据存储装置,产生一组替换表数据和利用该组替换表数据加密地处理输入数据以便产生输出数据,该加密处理方法包括;块产生步骤,用于将输入数据分成输入块,每块具有预定数的比特并且一块一块地输出该输入块;替换表数据产生步骤,用于当加密处理指定个数的输入块之后,立即加密处理一个输入块时,产生一组替换表数据并且将替换表数据存储装置中的一组替换表数据替换为产生的替换表数据组;密钥数据变换步骤,用于当在加密处理该输入块紧前面的一个输入块之后,加密处理一个输入块时,通过在该密钥数据组上利用对于紧前面的输入块加密处理期间产生的一个中间块执行一个比特变换,变换该密钥数据存储装置中的一组密钥数据;和加密处理步骤,用于通过使用该替换表数据存储装置中的一组替换表数据和任意的由密钥数据变换步骤产生的一个变换密钥数据组和存储在密钥数据存储装置中的密钥数据组,加密处理由块产生步骤输出的一个输入块以便在对于输入块的加密处理期间产生一个中间块并且产生一个输出块作为对于该输入块的加密处理的结果。
31.在一个加密处理设备中的一种存储加密处理程序的计算机可读的存储介质,该设备配备一个存储设备,存储(2^N)组替换数据,每组数据具有预定个数的比特,利用(2^N)组替换数据加密处理输入数据以便产生输出数据,N是一个不小于2的整数,该加密处理方法包括;划分步骤,用于将(N*M)比特长的输入数据分成M组子数据,每个子数据是N比特长,此处M是一个不小于2的整数;替换步骤,用于接收一个输入,它是下面任意之一M组N比特子数据;和作为在M组N比特子数据上执行的合并处理结果得到的至少一组N比特输入合并数据,对于N个输入比特的每个在存储装置中指定(2^N)组替换数据之一,并且输出对于每个N输入比特指定的该组替换数据;固定变换执行步骤,用于在从该替换步骤输出的至少一组替换数据上执行多个不同的固定变换,以便产生M组变换的数据,每个变换的数据具有预定个数的比特;和输出数据产生步骤,用于根据由固定变换执行步骤产生的M组变换的数据产生(N*M)比特长的输出数据。
32.权利要求31的存储介质,其中该预定数是(N*M),其中该替换步骤在该存储装置的(2^N)组替换数据中指定m组替换数据,分别用于M组N比特子数据,并且输出指定的M组替换数据,每组是(N*M)比特长,其中固定变换执行步骤分别在从替换步骤输出的M组替换数据上执行M次不同的固定变换,以便M组变换数据,每组是(N*M)比特长,和其中输出数据产生步骤在产生的M组变换数据上执行合并处理以便产生(N*M)比特长的输出数据。
33.权利要求31的存储介质,其中该预定数是N,其中该替换步骤包括输入合并步骤,用于在M组N比特子数据上执行全局合并处理以便产生一组N比特输入合并的数据,在存储装置中指定(2^N)组替换数据之一用于该N比特输入合并数据组,并且输出是N比特长的指定的替换数据组,其中该固定变换执行步骤在从替换步骤输出的替换数据组上执行M个不同的固定变换的每个变换,以便产生M组变换数据,每组数据是N比特长,和其中输出数据产生步骤包括输出合并子步骤,用于执行关于M组子数据的每组和对应于该子数据组的M组变换数据的不同的一组变换数据的单个合并处理,以便产生每组是N比特长的M组输出合并数据;和组合子步骤,用于组合由输出合并子步骤产生的M组输出合并数据以便形成是(N*M)比特长的输出数据。
34.在一个加密处理设备中的一种存储加密处理程序的计算机可读的存储介质,该设备配备存储一组密钥数据的一个密钥数据存储设备,和用于存储一组替换表数据的替换表数据存储装置,产生一组替换表数据和利用该组替换表数据加密地处理输入数据以便产生输出数据,该加密处理方法包括;块产生步骤,用于将输入数据分成输入块,每块具有预定数的比特并且一块一块地输出该输入块;替换表数据产生步骤,用于当加密处理指定个数的输入块之后,立即加密处理一个输入块时,产生一组替换表数据并且将替换表数据存储装置中的一组替换表数据替换为产生的替换表数据组;密钥数据变换步骤,用于当在加密处理该输入块紧前面的一个输入块之后,加密处理一个输入块时,通过在该密钥数据组上利用产生作为加密处理紧前面的输入块的结果的一个输出块执行一个比特变换,变换该密钥数据存储装置中的一组密钥数据;和加密处理步骤,用于加密处理由块产生步骤输出的一个输入块以便利用在该替换表数据存储装置中的一组替换表数据和任意的由密钥数据变换装置产生的一个变换密钥数据组和存储在密钥数据存储装置中的一组密钥数据,产生一个输出块。
35.在一个加密处理设备中的一种存储加密处理程序的计算机可读的存储介质,该设备配备存储一组密钥数据的一个密钥数据存储设备,和用于存储一组替换表数据的替换表数据存储装置,产生一组替换表数据和利用该组替换表数据加密地处理输入数据以便产生输出数据,该加密处理方法包括;块产生步骤,用于将输入数据分成输入块,每块具有预定数的比特并且一块一块地输出该输入块;替换表数据产生步骤,用于当加密处理指定个数的输入块之后,立即加密处理一个输入块时,产生一组替换表数据并且将替换表数据存储装置中的一组替换表数据替换为产生的替换表数据组;密钥数据变换步骤,用于当在加密处理该输入块紧前面的一个输入块之后,加密处理一个输入块时,通过在该密钥数据组上利用紧前面的输入块执行一个比特变换,变换该密钥数据存储装置中的一组密钥数据;和加密处理步骤,用于加密处理由块产生步骤输出的一个输入块以便利用在该替换表数据存储装置中的一组替换表数据和任意的由密钥数据变换装置产生的一个变换密钥数据组和存储在密钥数据存储装置中的一组密钥数据,产生一个输出块。
36.在一个加密处理设备中的一种存储加密处理程序的计算机可读的存储介质,该设备配备存储一组密钥数据的一个密钥数据存储设备,和用于存储一组替换表数据的替换表数据存储装置,产生一组替换表数据和利用该组替换表数据加密地处理输入数据以便产生输出数据,该加密处理方法包括;块产生步骤,用于将输入数据分成输入块,每块具有预定数的比特并且一块一块地输出该输入块;替换表数据产生步骤,用于当加密处理指定个数的输入块之后,立即加密处理一个输入块时,产生一组替换表数据并且将替换表数据存储装置中的一组替换表数据替换为产生的替换表数据组;密钥数据变换步骤,用于当在加密处理该输入块紧前面的一个输入块之后,加密处理一个输入块时,通过在该密钥数据组上利用对于紧前面的输入块加密处理期间产生的一个中间块执行一个比特变换,变换该密钥数据存储装置中的一组密钥数据;和加密处理步骤,用于通过使用该替换表数据存储装置中的一组替换表数据和任意的由密钥数据变换步骤产生的一个变换密钥数据组和存储在密钥数据存储装置中的密钥数据组,加密处理由块产生步骤输出的一个输入块以便在对于输入块的加密处理期间产生一个中间块并且产生一个输出块作为对于该输入块的加密处理的结果。
全文摘要
提供一个加密处理设备,利用替换表数据加密地处理输入数据以便产生输出数据。一个存储单元存储(2^N)组替换数据,每组替换数据具有预定个数的比特,此处N是一个不小于2的整数。一个划分单元于将(N*M)比特长的输入数据分成M组N比特子数据,此处M是一个不小于2的整数。一个替换单元接收一个输入,它是下面任意之一:M组N比特子数据;和通过在M组N比特子数据上执行合并处理产生的至少一组N比特输入合并数据,对于N个输入比特的每个在存储单元中指定(2^N)组替换数据之一,并且输出对于每个N输入比特指定的该组替换数据。一个固定变换执行单元在从该替换单元输出的至少一组替换数据上执行多个不同的固定变换,以便产生M组变换的数据,每个变换的数据具有预定个数的比特。一个输出数据产生单元根据由固定变换执行装置产生的M组变换的数据产生(N*M)比特长的输出数据。
文档编号H04L9/06GK1241751SQ9910801
公开日2000年1月19日 申请日期1999年4月27日 优先权日1998年4月27日
发明者大森基司, 横田薰 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1