扩充密钥发生器、加密/解密单元、 扩充密钥产生方法和存储媒体 本发明涉及用于保密密钥分组密码(cipher)的扩充密钥发生器、加密/解密单元和存储媒体。
在近代计算机和通信技术领域中,发送经加密的传输数据并通过解密所接收到数据来恢复接收内容的密码技术十分普遍。在这种密码技术中,一般将在加密和解密过程中用到保密密钥(下面将它称为公共密钥)的密码术算法称为公共密钥密码。在公共密钥密码中,把输入消息分成若干输入块,每块具有固定的长度,而且根据产生密文的密钥,对分段块进行随机化而产生密文。作为公共密钥密码,通常用到称为DES(数据加密标准)的方案。
在基于DES的加密过程中(如图1A所示),通过明码文本(plaintext)的初始置换IP获得的数据运用循环函数(round function)经历16个处理过程。此外,已经历16个循环函数的数据经历初始置换的反置换IP-1,从而获得密文。另一方面,通过向每个循环函数给出根据初始密钥产生的扩充密钥,执行在该循环函数中的处理。
即,根据DES的加密装置具有用于运用大量的循环函数对要加密的数据随机化的数据随机化部分和用于向随机化部分的每个循环函数提供扩充密钥的密钥发生器作为主要构件(principal building component)。注意,传统的密钥发生器通过用表格或导线重新排列各位、用与数据加密单元地密钥相同的密钥或者从密钥位随机抽取,来产生密钥。
在根据DES的解密过程中(如图1B所示),要解密的数据以加密时经历的顺序相反的顺序经历16个循环函数。于是,密钥发生器根据在加密时最后循环函数中用到的密钥按序产生扩充密钥。
DES的第一个优点是加密和解密电路的排列;他们可以公共化大多数元件。即,如图1A和1B所示,将相同的电路用于数据随机化部分的循环函数,虽然在加密和解密过程中的扩充密钥的循环顺序是相反的。
DES的第二个优点是只要管理少量的密钥,因为用单个公共密钥来进行加密和解密。在DES过程中,为了根据独一公共密钥以正常和相反的顺序来产生扩充密钥,密钥发生器执行下列处理。
即,公共密钥经历左循环移位(left rotate-shift)(左循环)来产生每个扩充密钥。注意,定义循环数量的总值与公共密钥的位数相匹配,而且最后将中间密钥返回到初始状态(公共密钥)。通过这种方法,可以产生在加密过程中最后扩充的密钥具有与在解密过程中第一扩充密钥的值相同的值。一旦解密,公共密钥就经历右循环移位(右循环)来以相反顺序产生扩充密钥。
然而,由于密钥发生器的处理只通过在DES中的置换处理来执行,所以出现通常被称为弱密钥的密钥,它们具有低安全性。注意,弱密钥意味着具有相同值的扩充密钥,而且包括所有扩充密钥K1至K16相等(K1=K2=…K16)的情况以及一般的扩充密钥K1至K8和K9至K16互等(K1=K16,K2=K15,…,K8=K9)。
然而,产生这种弱密钥并不是一种威胁,只要通过把用于去除具有产生弱密钥的模式的公共密钥的输入的装置添加到扩充密钥发生器,或者通过将一装置添加到密码产生装置,足以对它加以防止,其中该装置是用于确定所产生的扩充密码是否是弱密钥而且如果它们是弱密钥就去除它们的装置。
然而,当添加防止弱密钥的产生的这种装置时,扩充密钥发生器和加密/解密的价格上涨,而且它们的电路规模增加。
除了DES之外,还要求这种密码系统,它通过阻止弱密钥的产生,对在循环函数各单元中使用不同扩充密钥能提供密码术的稳健性(robustness),而且可以提高密码术的稳健性。
如上所述,在传统的扩充密钥发生器和加密/解密单元中,当添加阻止弱密钥产生的装置以避免低安全性,扩充密钥发生器和加密/解密单元的价格上涨,而且它们的电路规模增加。
甚至当防止了弱密钥的产生时,在密钥发生器中的处理对提高密码术稳健性的贡献并不是太大,而且要求提高密码术的稳健性。
考虑到上述情况进行本发明,而且它的目的在于提供一种扩充密钥发生器、加密/解密单元、扩充密钥发生方法和存储媒体,它们可以提高扩充密钥的随机性,同时抑制了装置价格的上涨和电路规模增加,还防止弱密钥的产生,而且可以提高密码术的稳健性。
根据本发明的第一方面,提供一种扩充密钥发生器,它包括多个级联的密钥变换函数部分,用于接收各循环为单元中的不同密钥,并根据所述输入密钥产生扩充密钥,其中每个密钥变换函数部分包括:第一密钥变换装置,用于根据从所述输入密钥获得的第一密钥,运用特定替换表执行变换处理;扩充密钥计算装置,用于根据所述第一密钥变换装置的变换结果和从所述输入密钥获得的第二密钥,计算所述扩充密钥。
根据本发明的另一个方面,提供一种包括扩充密钥发生器的加密/解密单元,包括:数据随机化部分,用于根据由所述密钥变换函数部分产生的所述扩充密钥加密输入密码文本并输出密码文本,和解密输入密码文本和输出明码文本。
根据本发明的另一个方面,提供一种扩充密钥产生方法,包括下列步骤:在各循环单元中输入不同密钥(KC,kc1,…,kcn-1);
根据所述输入密钥产生第一密钥;
通过运用预定替换表变换所述产生的第一密钥;和
根据所述变换结果和从所述输入密钥获得的第二密钥计算扩充密钥。
根据本发明的又一个发明,提供一种存储程序的计算机可读存储媒体,所述程序使计算机:根据在各循环单元中输入的不同密钥(KC,kc1,…,kcn-1)产生第一密钥;通过运用预定替换表变换所述产生的第一密钥;和根据从所述输入密钥获得的变换结果和第二密钥,计算扩充密钥。
根据本发明,在每个密钥变换函数部分中,第一密钥变换装置根据从输入密钥获得的第一密钥,运用预定替换表执行变换处理,而且扩充密钥计算装置根据第一密钥变换装置的变换结果和从输入密钥获得的第二密钥,计算扩充密钥。
通过这种方法,由于简单的按排而不用添加任何外部设备,而且在产生每个扩充密钥时运用替换表进行非线性变换处理,所以可抑制扩充密钥的价格和规模,而且可以提高扩充密钥的随机性,同时防止产生弱密钥,从而提高密码术的稳健性。
此外,数据随机化部分具有用于加密和解密的多个替换表,而且数据随机化部分的一个替换表为那些第一密钥变换装置所共有,从而减小了装置的电路规模。
根据本发明,提供一种扩充密钥发生器、加密/解密单元、扩充密钥发生方法和存储媒体,它们可以提高扩充密钥的随机性,同时抑制装置价格和电路规模的上升,并防止弱密钥的产生,而且可以提高密码术的稳健性。
在下面的说明中将提出本发明的附加目的和优点,而且这在部分说明中是显而易见的,或者通过实践本发明可认识到的。通过下面特别指出的手段和组合可实现和获得本发明的目的和优点。
加入并构成本发明的一部分的附图示出了本发明的较佳实施例以及上面给出的一般描述和下面给出的较佳实施例的详细描述,并用来解释本发明的原理。
图1A和1B是用于解释作为传统公共密钥密码的例子的DES的方框图;
图2是示出根据本发明的第一实施例的加密/解密单元的布局的方框图;
图3是示出在第一实施例的加密/解密单元中的扩充密钥发生器的布局的方框图;
图4A和4B是用于解释在第一实施例中的常数寄存器(constant register)的建立值的示图;
图5是用于解释在第一实施例中的S盒(box)的结构的示图;
图6是用于解释在第一实施例中的循环函数的结构的方框图;
图7是示出在第一实施例中的循环函数的结构的方框图;
图8是示出加密/解密单元的操作的流程图;
图9是用于解释在第一实施例中的操作的示图;
图10是示出用于根据本发明的第二实施例的扩充密钥发生器的密钥变换函数的布局的方框图;
图11是示出根据本发明的第三实施例的扩充密钥发生器的布局的方框图;
图12是解释在第三实施例中的替换部分的建立的示图;
图13是示出如图11所示的实施例的操作过程的流程图;
图14是示出体现本发明的扩充密钥发生器、加密/解密单元和存储媒体的智能卡(smart card)的布局的功能框图;
图15是解释根据本发明的第四实施例的加密/解密单元的示图;
图16是解释第四实施例的修正的示图;
图17是解释第四实施例的另一种修正的示图;和
图18A和18B是解释第四实施例的修正的示图。
参照附图,描述本发明的较佳实施例。
(第一实施例)
图2是示出根据本发明的第一实施例的加密/解密单元的布局的方框图,和图3是示出在如图2所示的加密/解密单元中的扩充密钥发生器的布局的方框图。
将这种加密/解密单元作为用于计算机(诸如,个人计算机、工作站,等)的加密/解密处理器加以实施,而且利用硬件或软件执行加密和解密。具体地说,加密/解密单元包括用于根据公共密钥产生n个扩充密钥K1至Kn的扩充密钥发生器10,和用于利用由扩充密钥发生器10以循环(round)R1至Rn的顺序产生的扩充密钥K1至Kn进行加密或解密的数据随机化部分20。即,通常在加密和解密中用到扩充密钥发生器10和数据随机化部分20,而且当通过软件来实施加密/解密单元时,预先从存储媒体安装表示它们的操作的程序。注意,可以将置换处理插入扩充密钥发生器10和数据随机化部分20之间。
扩充密钥发生器10具有级联密钥变换函数fk1至fkn(下面,同样被简称为密钥变换函数fk),它分别与循环R1至Rn相对应。一旦接收公共密钥KC或者中间密钥变换结果kc1至kcn-1,密钥变换函数fk1至fkn将通过变换这些输入获得的扩充密钥k1至kn输出到数据随机化部分20的循环函数fr1至frn,而且将分开获得的中间密钥变换函数kc1至kcn-1输入到下一级的密钥变换函数fk2至fkn。
密钥变换函数fk1至fkn分别包括临时密钥寄存器111至11n、常数寄存器121至12n、XOR元件131至13n、S盒141至14n、扩充变换器(transformer)151至15n、加法器(161至16n)和循环移位器171至17n-1(如图3所示)。注意,由于在下一级没有密钥变换函数fk(n+1),所以省略了最后一级的循环移位器17n。
临时密钥寄存器11i(对于1≤i≤n;相同的关系还用于下面的描述)保持有对扩充密钥发生器10的公共密钥输入或者来自前一级的密钥变换函数kf(i-1)的中间密钥变换结果输入,而且在该实施例中用到56位寄存器。
将常数寄存器12i设为与密钥变换函数fki所属的循环数相对应的常数,而且可以将该常数向XOR元件13i提供。具体地说,如图4A所示(将循环数n示例为16),将在常数寄存器12i中保持的常数对称地(前半部和后半部具有对称常数)设定为具有循环数的中心值(n=8,9)作为中心,因为常数寄存器12i还必须能够以相反顺序(K16至K1)产生扩充密钥K1至K16。然而,本发明并不局限于这种特定的建立(setup),而且只要扩充密钥K1至K16必须能够以相反顺序(K16至K1)产生,就可以任意地设定常数。例如,如图4B所示,可在加密和解密之间颠倒常数。注意,常数寄存器12只需设定要保持的至少一个常数与其他寄存器的常数不同,如图4A所示。例如,可如此设定常数,CONST12i=i。
XOR元件13i计算由在临时密钥寄存器11i中的8位数据构成的第一密钥KA和在常数寄存器中的常数的XOR(“异”逻辑和),并把所得8位计算结果输入到S盒。
S(替换)盒14i防止弱密钥的产生(在所有级中的相同扩充密钥)。具体地说,S盒14i具有非线性变换从XOR元件13i输入的8位值并把所得的8位变换结果输入到扩充变换器15i的功能。S盒14i运用替换输入和输出位的替换表进行非线性变换,如图5所示。例如,如果输入位是(00000001),那么S盒14i认为该信息(00000001)是二进制表达法,而且将该二进制表达转换成值十进制的表达法“1”。
于是,S盒查找如图5所示的替换表。假设第一次出现的“48”是第0元素(element),那么S盒14确定“第一”元素“54”(十进制表示),并输出(00110110)作为输出位的二进制表示。
通过这种方法,可用输出位(00110110)代替输入位(00000001)。
注意,如图5所示的替换表保持有与256个输入相对应的第0到第255个元素,如上所述,而且当接收从0到255范围内的值时用来确定值的范围为从0到255。
此外,最好通常将S盒14i用作在下述的循环函数fk中的一些S盒来减小该装置的规模。
扩充变换器15i将从S盒14i输入的8位变换结果转换成更大值。在该实施例中,扩充变换器15i具有通过将它向左移4位并在低4位中插0并把所获得的12位扩充变换结果输入到加法器16i来扩充8位变换结果。
注意,扩充变换器15i的移位量最好等同于(equivalently)S盒14i的输出位的数量(=8)的一半(=4位),因为在数据随机化部分20中的两个S盒S3和S4中反映S盒14i的输出位。注意,术语“等同”意味着除了4位移位之外还包括这种修正,即,添加如12(=4+8×1)位移位或20(=4+8×2)位移位的输出位数量的整数倍(换句话说,这种修正,其移位量使得余数等于除数位数的一半(=4))。当S盒14i的输出位经历12位移位时,在S盒S2和S3(代替S盒S3和S4)中反映它们;当输出位经历20位移位时,在S盒S1和S2中反映它们。当在两个S盒S3和S4(包括S2和S3或S1和S2)中反映S盒14i的输出位,位组合并不局限在4位,但是可以是1位和7位组合、2位和6位组合或者3位和5位组合,可以任何顺序使用这种组合。即,除了等同4位移位之外,还可运用等同1至3和5至7位移位。
加法器16i具有把从扩充变换器15i输入的12位扩充变换结果和由在临时密钥寄存器11i中的32位数据构成的第二密钥KB相加的功能(带有进位(carry-up)的正规加法),并具有把所获得的和(32位(忽略总进位(carriedout)位)输入到数据随机化部分20的循环函数fri作为循环Ri的扩充密钥Ki。
注意,从临时密钥寄存器11i的连续区中分别抽取第一和第二密钥KA和KB。然而,本发明并不局限于此,而且可从不连续区中抽取这些密钥。即,第一密钥KA可以是在临时密钥寄存器11i中的总共任意8位数据,和第二密钥KB可以是在临时密钥寄存器11i中的总共任32位数据。第一和第二密钥KA和KB可以相互重叠。注意,第一密钥KA的位长最好等于数据随机化部分20的S盒的输入位长以共同使用S盒。第二密钥KB的位长最好等于扩充密钥Ki的位长以简化设计(注意,如果需要的话,第二密钥KB的位长可以不同于扩充密钥Ki的位长,而且在这种情况下,最后可以例如用收缩或扩充置换来调节扩充密钥Ki的位长)。
循环移位器17i循环临时密钥寄存器11i的值一预定移位量,而且把循环值输入到临时密钥寄存器11i+1。在该实施例中,移位量是以密钥变换函数fk1至fkn为单位的,如图6所示。注意,循环移位器17i的移位量最好至少与公共密钥KC的位数或S盒14i的输出位数互为质数,从而提高密钥的随机性,最好是这三个值互质。对称设定移位量(前一半和后一半具有对称常数)以具有密钥变换函数fk1至fk(n+1)的中心值(n=8),除了最后一级之外,因为扩充密钥K1至K16必须还能够以相反顺序(K16至K1)产生扩充密钥K1至K16。然而,本发明并不局限于这种特定建立,而是移位量和循环寄存器17i的循环方向可以任意设定,只要扩充密钥K1至K16还能够以相反顺序(K16至K1)产生扩充密钥K1至K16。
另一方面,数据随机化部分20具有在从循环R1到Rn的n次循环过程中,当当它接收到来自扩充密钥发生器10的按序排列的扩充密钥K1至K16时加密输入明码文本和输出加密文本的函数。另一方面,部分20具有当它接收到来自扩充密钥发生器10的以在加密过程中相反的顺序排列的扩充密钥K16至K1时,解密循环加密文本并输出明码文本的函数。数据随机化部分20具有循环函数fr1至frn的,它们以对应于循环R1至R16的顺序级联。
循环函数fri是根据从扩充密钥发生器10输入的扩充密钥Ki变换明码文本或中间加密结果的函数,并在加密过程中输出中间加密结果或加密文本,而且它还是根据来自扩充密钥发生器10的以相反顺序排列的扩充密钥k(n+1-i),变换密码文本或中间解密结果并在解密处理中输出中间解密结果和密码文本的函数。在该实施例中,例如,循环函数fri运用如图7所示的Feistel结构。
如图7所示的Feistel结构包括下列结构。即,在由两个子块Li和Ri构成的循环数据块中,根据扩充密钥Ki,运用F函数非线性地变换一个子块Ri,由XOR元件21计算该经变换结果和其他子块Li的XOR,而且向下一级提供计算结果Ri+1和一个子块Li+1(=Ri),同时互换它们的位置。
注意,在图7中的F函数包括对扩充密钥K和子块Ri(或Li)求XOR的XOR元件22,以及用于将来自XOR元件22的输出分成4个元素而且分别线性变换这些元素的四个S盒S1至S4。注意,S盒S1至S4具有例如图5所示的替换表,而且各S盒可具有公共替换表,但也可不同。
注意,由每个循环函数进行的变换具有被称为对合(involution)的性质,即,当相等的变换重复它自己两次时恢复原始数据。处于这个原因,当通过以扩充密钥K1至K16的顺序变换密码文本产生密码文本时,数据随机化部分20可以通过以扩充密钥K16至K1的顺序重新变换该密码文本来产生明码文本。
下面,参照如图18所示的流程图,解释具有上述结构的加密/解密单元的操作。
在如图2所示地进行加密时,在运用密钥变换函数fki的每个循环处理中,将输入公共密钥KC或中间密钥变换结果kci变换成扩充密钥ki。
具体地说,如图9所示,密钥变换函数fki、XOR元件13i对从临时密钥寄存器11i抽取的8位第一密钥KA和在常数寄存器12i(在图8中的步骤S1)求XOR,而且S盒14i线性变换该XOR(在图8中的步骤S3)。作为非线性变换,以比特为单位替换输入和输出,从而具有如图5所示的关系。扩充变换器15i将该替换结果左循环4位(=16倍)来获得12位数据。此外,通过添加20位首“0”(leading“0”),将替换结果扩充到32位。于是,将32位替换结果输入到加法器16i(在图8中的步骤S5)。
加法器16i把输入移位结果(32位)和从临时密钥寄存器11i抽取的32位第二密钥KB相加,并把和作为32位扩充密钥Ki输出到数据随机部分20(在图8中的步骤S7)。
在该扩充密钥Ki中,将由S盒14i转换的8位第一密钥KA定位在第5至第12位(从右(最低有效位)开始)。这些位位置与到第三至第四S盒S3和S4的输入相对应。于是,可在数据随机化部分20中的两个S盒S3和S4中反映扩充密钥发生器10中的S盒14i的随机化效果,从而提高扩充密钥的随机性。
在数据随机化部分20中,在循环函数fr1至frn单元中,根据扩充密钥K1至Kn转换明码文本,而且最终通过中间加密结果再转换成密码文本。
另一方面,解密时,扩充密钥发生器10以与在上述情况下接收公共密钥KC时加密的过程中相反的顺序执行密钥变换处理,而且后来将扩充密钥Kn至K1输出到数据随机化部分20。
数据随机化部分20根据以与在加密过程中的顺序相反的顺序的扩充密钥Kn至K1,变换输入的密码文本,而且最后通过中间解密结果,将它转换成密码文本。
重申,根据本实施例,每个密钥变换函数fk1至fkn根据从输入密钥获得的第一密钥KA,运用S盒14i(替换表)执行非线性变换处理,而且加法器16i根据通过左循环S盒14i的变换结果所获得的值以及从输入密钥获得的第二密钥KB,计算扩充密钥K1至K16中的相应一个密钥。
通过这种方法,运用简单的按排,而无需使用任何附加的外部设备,而且在产生扩充密钥Ki时进行运用替换表(S盒14i)的非线性变换处理。于是,可以抑制装置价格和规模,而且可以提高扩充密钥的随机性,同时防止弱密钥的产生,从而提高密码术的稳健性。
在每个密钥变换函数fki中,由于循环移位器17i向左(或右)循环移位输入密钥,而且把循环移位密钥输入到下一循环的密钥变换函数fk(i+1),输入到各循环的密钥可以容易和可靠地互不相同。
此外,假设循环移位器17i的移位量例如与S盒14i的输出位数相对互质,几乎在循环R1至Rn中的所有第一密钥KA可以互不相同,而且可更加容易和可靠地获得上述效果。
此外,在每个密钥变换函数fki中,由于扩充变换器15i扩充和变换S盒14i的变换结果,而且把结果输入到加法器16i,所以处理上述效果之外,在扩充密钥Ki的任一区域中反映第一密钥KA的随机化效果。
由于移位预定数量位执行扩充变换器15i的扩充变换,所以可以容易和可靠地获得上述效果。
此外,由于数据随机化部分20具有用于加密和解密的多个S盒S1至S4,而且数据随机化部分20的一些S盒为为密钥变换函数fk1至fkn的S盒14i所共有,所以可以降低装置规模。
在密钥变换函数fk1至fkn中的每个函数中,由于扩充变换器15i将从S盒14i接收到的变换结果向左移位变换结果位的一半位数或者由变换结果的位数的整数倍加到一半位数获得的位数,而且把移位结果输入到加法器16i,所以在扩充密钥Ki左移位的区域中反映第一密钥KA的随机化效果。在这种情况下,由于第一密钥KA的随机化效果可在输入到数据随机化部分20的S盒S3和S4的区域中反映,所以可以进一步提高密码术的稳健性。
(第二实施例)
图10是示出根据本发明的第二实施例用于扩充密钥发生器的密钥变换函数的布局的方框图。在图10中的相同标号表示如图3中的相同的部分,将省略对它的详细描述,而且下面将解释不同之处。注意,在下面描述的实施例中避免重复描述。
即,该实施例是第一实施例的修正,目的在于进一步提高扩充密钥的随机性。具体地说,在每个密钥传递函数中,可以在临时密钥寄存器11i和加法器16i之间并联包括常数寄存器12i、XOR元件13I、S盒14i和扩充变换器15i的上述变换元件,如图10所示。
两个S盒14i可以是一种或多种。当用到多种S盒时,最好如此设定那些种类,从而前一组密钥变换函数fk1至fk8和后一组密钥变换函数fk9至fk16变成以中心值垂直对称(fk8和fk9),因为必须能够根据公共密钥KC以正常和相反顺序,产生扩充密钥Ki。
两个扩充变换器15i可具有相等的移位量。由于必须在更宽的范围内反映两个S盒14i的随机化效果,所以最好运用不同的移位量,向左移位来自S盒14i的输出。在这种情况下,如果一个扩充变换器15i设为执行4位左移位,而且其他扩充变换器15i设为执行20位左移位,那么可以在数据随机化部分20的所有S盒S1至S4中方便地反映第一密钥KA的随机化效果。
随着上述布局,由于可以进一步提高运用第一密钥KA的随机性,所以除了第一实施例的效果之外,还可以进一步提高扩充密钥Ki的随机性。
(第三实施例)
图11是示出根据本发明的第三实施例的扩充发生器的布局的方框图。
该实施例是第一或第二实施例的修正,而且包括替换部分18i代替临时移位寄存器11i和循环移位器17i,其中替换部分18i非线性替换输入公共密钥KC的各位或者中间密钥kc1至kcn-1之一、把获得的中间密钥的一些位输入到XOR元件13i和本身一级(own stage)的加法器16i,还把整个中间密钥输入到下一级的替换部分18(i+1)。注意,替换部分18i不替换输入公共密钥KC的各位。
如此设定各替换部分18i,从而在公共密钥KC以正常顺序进行了n次替换之后的结果变成等于原始公共密钥KC,因为它们必须能够根据公共密钥KC以正常和相反顺序产生扩充密钥ki。此外,在加密时以上升顺序进行变换,而且在解密时以下降顺序进行反变换,如图12所示,它示例了循环数量n=16。例如,通过向左循环移位公共密钥KC任何位数,执行每个替换部分18i的处理。
在如图11所示的实施例中,每个替换部分18i执行在图13的步骤S21中非线性变换公共密钥KC的处理。在步骤S23中,XOR元件13i对从替换部分18i获得的第一密钥KA和在常数寄存器12i中保持的常数求XOR。在步骤S25中,S盒14i运用替换表非线性地变换来自XOR元件13i的XOR输出。在步骤S27中,扩充变换器15i向左移位非线性变换值4位,从而获得12位扩充变换结果。此外,通过添加20位首“0”,将12位变换结果扩充到32位。在步骤S29中,把32位扩充变换结果添加到从替换部分18i获得的第二密钥KB以产生扩充密钥。
同样通过这种布局,可以获得与在第一和第二实施例中相同的效果。此外,输入到密钥变换函数fk1至fkn的密钥KC和kc1至kcn-1可以容易和可靠地互不相同。
在上述实施例中,把用于XOR常数的XOR元件13i连接到S盒14i的输入侧。然而,本发明并不局限于这些特定的布局。例如,可以省略XOR元件13i,而且可提供在与常数XOR之后的S盒14xi来代替S盒14i,从而类似地执行实施本发明并获得相同的效果。具体地说,可预先计算值KA与常数的XOR,而且以表格的形式保持,而且S盒14xi可通过将值KA用作输入参数来获得给定的XOR,来查询该表。
图14是示出体现本发明的上述扩充密钥发生器、加密/解密单元和存储单元的智能卡的布局的功能框图。如图14所示,智能卡51具有CPU53、RAM55、ROM57、EEPROM59和接触器(contactor)61。RAM55用来存储各种数据,并用作工作区等。ROM57用来存储各种数据、程序,等等。EEPROM59存储在图8和13中的流程图中所示的程序等。接触器61获得与智能卡阅读器/记录器(writer)(未图示)的接触。注意,可将如图8和13所示的程序存储在RAM55或ROM57中,而不是EEPROM59中。
(第四实施例)
下面,参照图15描述根据本发明的第四实施例的加密/解密单元。加密/解密单元30具有在第一至第三实施例之一中所述的布局,而且用来保护数字信息,诸如图象数据、音乐数据,等等(下面称为原始数据)。
假设,在个人计算机PC上,通过安装来自存储媒体的程序,实现加密/解密单元30,如图15所示。加密/解密单元30运用例如用户ID作为公共密钥加密输入到个人计算机PC的原始数据,并把所获得的加密数据(与上述密码文本相对应)存储在便携式存储单元31中。可采用智能卡、智能媒体、存储卡,等等,作为这种存储元件31。
把存储元件31分配给用户家庭,而且在用户家庭中的加密/解密(未图示)根据用户自己的ID解密在存储元件13中的加密数据,而且再现例如从扩音器等所获得的图象数据或音乐数据。通过这种方法,可将原始数据(内容)只分配给已预先签署订购合同用户。
可如下获得该实施例的各种修正。例如,如图16所示,可设置包括加密/解密单元30作为硬件电路的记录单元32,来代替个人计算机PC。通过这种结构,当将内容写入存储元件31中时,加密/解密单元30根据例如用户ID加密原始数据,并把加密的数据存储在存储元件31中。从传送到家到解密的处理过程与上述的相同。通过这种方法,可向专用记录单元32提供加密/解密单元30来替换可通用计算机,诸如个人计算机PC等。
此外,如图17所示,通过网络NW可将带有加密/解密单元30的主机33连接到个人计算机PC。在这种情况下,在加密状态下,通过个人计算机把从主机33下载的加密数据存储在存储单元32中。从传送到家到解密的处理过程与上述的相同。根据这种修正,除了上述效果之外,可以防止窃听网络NW上的内容(原始数据)。
此外,如图18A和18B所示,DVD(数字通用磁盘)可被用作存储元件。在如图18A所示的情况下,把预先存储经加密数据的DVD34分配给用户。在用户家庭中的加密/解密单元30解密在DVD34中的加密数据,而且再现从扩音器等获得的图象数据或音乐数据。
此外,在如图18B所示的情况下,由在用户的家庭中的加密/解密单元30运用预定公共密钥,加密诸如图象数据、音乐数据等的原始数据,而且把所获得的加密数据存储在DVD-RAM35中。
由用户设定的预定公共密钥解密这个加密数据,但是不能由第三方解密它,除非揭示了公共密钥。因此,可保存个人图象数据和语言数据,同时保护它不受到第三方干扰。
(其他实施例)
作为存储用于执行本发明的扩充密钥发生器和加密/解密单元的处理的程序的存储媒体,还可使用磁盘、软盘、硬盘、光盘(CD-ROM,CD-R,DVD,等)、磁光盘(MO等)、半导体存储器,等等。实践过程中,不特别限定存储格式,只要存储媒体可以存储程序并可被计算机读取。
在计算机或MW(中间件)(诸如,数据库管理软件、网络软件等)上运行的OS(操作系统)根据从计算机中的存储媒体安装的程序的指令,可执行实施上述实施例的一些处理。
此外,在本发明中的存储媒体并不局限于独立于计算机的媒体,但是包括存储媒体,它存储或临时从LAN、互连网,等下载的程序。
存储媒体的数量并不局限于一个,而且本发明的存储媒体包括其中由多个媒体执行上述实施例的处理并可使用任一媒体结构的情况。
注意,在本发明中的计算机根据存储在存储媒体中的程序,执行上述实施例的处理,而且可以是由诸如个人计算机的单个装置构成的设备,或者通过网络连接多个装置建立的系统。
在本发明中的计算机并不局限于个人计算机,而且包括在信息处理装置中的算术处理装置、微型计算机,等等,即,包括所有装置和可通过程序执行本发明的功能的设备。
本发明并不局限于DES密码系统,但可把循环函数用于任何其他分组密码系统。例如,本发明可用于密码系统,诸如Lucifer、LOKI、MISTY1、MISTY2和SAFER(安全和快速加密例行程序),等等。
在上述实施例中,S盒运用替换表进行非线性变换。另一方面,S盒可利用配线模式进行非线性变换。
在如图10所示的实施例中,并排两组变换元件,包括常数寄存器12i、XOR元件13i、S盒14i和扩充变换器15i。另一方面,可以并排三组或更多组变换元件。
在本发明的范围内,可进行本发明的各种其他修正。
对于熟悉本技术领域的人员,附加优点和修正是显而易见的。因此,在它的更宽范围内的本发明并不局限于特定细节和所示及这里描述的代表性实施例。因此,可进行各种修正,而不偏离由所附权利要求书和它们的等同限定的总发明原理的构思和范围。