1、第2章 密码学电子商务 信息安全技术的基础,2.1 密码学概述 2.1.1 密码学的基本概念,一、密码学的一般概念电子商务信息系统的安全主要涉及高速电子信道中传输的数据和系统中存贮的数据的安全问题,它包含两个主要内容:保密性:即防止非法地获悉数据;完整性:即防止非法地修改数据。,一般而言,为了保障分布式系统与计算机网络中传输与存贮的数据的安全,通常采用四种不同的控制方法,即:密码控制、 存取控制、信息流控制、 推理控制、数据备份、 数据恢复密码学在计算机网络安全中的关键作用。,密码学主要研究通信保密,而且仅限于计算机及其保密通信。它的基本思想是通过变换信息的表示形式来伪装需要保护的敏感信息,使
2、非授权者不能理解被保护信息的含义。,所谓伪装,就是对传输的信息计算机软件中的指令和数据进行一组可逆的数字变换。伪装前的原始信息称为明文(plain text,通常记作P或 M);伪装后的信息称为密文(cipher text,记作C);伪装的过程称为加密(由明文变成密文的过程, enciphering,记作E);加密要在加密密钥(key,记作K)的控制下进行。,图2.1 常规密码系统模型,用于对信息进行加密的一组数字变换,称为加密算法。发信者将明文数据加密成密文,然后将密文数据送入计算机网络或存入计算机文件。授权的接收者收到密文数据后,进行与加密相逆的变换,去掉密文的伪装,恢复明文的过程称为解密
3、(deciphering,记作D)。,解密是在解密密钥的控制下进行的,用于解密的一组数学变换称为解密算法。加密和解密过程组成加密系统,明文和密文统称为报文。,任何加密系统,无论形式多么复杂,至少应包含以下五个部分:(1)明文空间M,它是待加密的全体报文的集合。(2)密文空间C,它是加密后的全体报文的集合。,(3)密钥空间K,它是全体密钥的集合,可以是数字、字符、单词或语句。其中,每一个密钥Ki均由加密密钥Ke和解密密钥Kd组成,即Ki=(Ke,Kd)。(4)加密算法E,它是一族由M到C的加密变换。(5)解密算法D,它是一族由C到M的解密变换。,因为信息以密文形式存贮在计算机的文件中,或在通信网
4、络中传输,因此,即使被末授权者非法窃取,或因系统故障或人为操作失误造成信息泄漏,未授权者也不能识别和理解其真正的含义,从而达到保密的目的。同样,未授权者也不能伪造合理的报文,因而不能篡改和破坏数据,从而达到确保数据真实性的目的。,图2.2 信息加密系统示意图,对于每一确定的密钥K=(Ke,Kd),加密算法将确定一个具体的加密变换,解密算法将确定一个具体的解密变换,而且解密变换是加密变换的逆过程。对于明文空间M中的每一个明文,加密算法在加密密钥Ke的控制下将M加密成密文C。C=E(M,Ke) (2-1),而解密算法在解密密钥Kd控制下,从密文C中解出同一个明文M。 M=D(C,Kd)=D(E(M
5、,Ke),Kd) (2-2)如果一个密码体制的 Ke=Kd,由其中一个很容易推出另一个,则称为单密钥密码体制,也可称对称密码体制或传统密码体制。传统密码体制包括换位加密、代替加密、乘积加密和综合加密等。软件加密主要利用传统密码体制。,如果密码体制的KeKd,则称为双密钥密码体制,或称非对称密码体制。这种密码体制由Kd不能推出Ke,Ke的公开也不会损害Kd的安全。将这种密码体制称为公开密钥密码体制,其算法比较复杂,通常用作数据加密。,可以给密码学下一个定义,即:密码学是研究秘密书写的原理和破译密码的方法的一门科学。内含两方面密切相关的内容:一、是密码编制学,研究编写出“好的”密码系统的方法,保护
6、信息不被敌方或任何无关的第3方侦悉;,二、是密码分析学,研究攻破一个密码系统的途径,恢复被隐蔽的信息的本来面目。所以: 密码学=密码编制学+密码分析学,二、密码编制与密码分析 (一)密码编制学,密码编码系统通常根据以下三个独立的方面进行分类:(1)用于将明文转换为密文操作的类型。所有加密算法基于两个基本原则:替代,即明文中的每个元素(比特、字母、比特组合或字母组合)被映射为另一个元素;,置换,即在明文中的元素被重排列,对它们的基本要求是不丢失信息(即所有操作都是可逆转的)。被称为乘积系统的多数系统涉及多个阶段的替代和置换。,(2)所使用密钥的数量。如果发送者和接收者双方使用相同的密钥,该系统称
7、为对称加密、单密钥加密、秘密密钥加密或常规加密。如果发送者和接收者各自使用一个不同的密钥,则该系统称为非对称加密、双密钥加密或公开密钥加密。,(3)明文处理的方式。分组加密一次处理一块元素的输入,对每个输入块产生一个输出块。流加密连续地处理输入元素,并随着该过程的进行一次产生一个元素的输出。,现以最简单的古罗马凯撒大帝使用过的凯撒密码为例,如果我们用数字0,1,2,24,25分别和字母A,B,C,Y,Z相对应,则密文字母可以用明文字母表示如下: = + 3(mod 26) (2-3),例如,明文字母为Y,即=24时,=24+3=27=1(mod 26),因此,密文字母为B。式(2-3)是凯撒密
8、码的数学形式,也表示一种算法,凯撒密码系统即由式(2-3)和其中的密钥3组成。,因此,式(2-3)可以推广成 = +k(mod 26) (2-4) 这里:kK,K=(1,2,3,24,25)是密钥集合,或称密钥空间。但是,如果选择0为密钥,则密文等于明文,实际上没有加密。,一个密码系统包含明文字母空间、密文字母空间、密钥空间和算法。密码系统的两个基本单元是算法和密钥。算法是一些公式、法则或程序,规定明文和密文之间的变换方法;密钥可以看成是算法中的参数。,如果取k=25,就可以得出下述美军多年前曾使用过的一种加密算法,即通过明文中的字母用其前面的字母取代(A前面的字母视为Z)形成密文的方法。例如
9、,当明文是 s e n d h e l p 时,则对应的密文为 R D M C G D K O。,算法是相对稳定的,即不能在一个密码系统中经常改变加密算法,在这种意义上可以把算法规为常量。,密钥则是一个变量,可以根据事前约定好的安排,或者用过若干次以后改变一个密钥,或者每过一段时间后更换一次密钥等。为了密码系统的安全,频繁更换密钥是必要的。由于种种原因,算法往往不能够保密,因此,我们常常假定算法是公开的,真正需要保密的是密钥,所以,在分发和存贮密钥时应当特别小心。,(二)密码分析学密码分析学是在不知道密钥的情况下,恢复出明文的科学,成功的密码分析能恢复出消息的明文或密钥。密码分析也可以发现密码
10、体制的弱点,最终得到上述结果。,所以称试图发现M或K或这两者的过程称为密码分析。密码破译者所使用的策略取决于加密方案的性质以及可供密码破译者使用的信息。,这里最为困难的问题是一切可用的东西仅有密文。在某些场合下,甚至加密算法也不可知,但通常可以假定对手知道用于加密的算法,在此情况下一种可能攻击的方法是对所有可能的密钥进行尝试的强行攻击方法,如果其密钥空间非常大,则该方法是不现实的。,因此,对手必须依赖对密文本身的分析,通常应用对它的各种统计测试。为了使用这种方法,对手必须对所隐藏的明文的类型有某种总的想法,如英语或法语文本,一个MSDOS.EXE文件,一个Java源列表,一个账目文件等等。,仅
11、有密文的攻击是最容易防护的攻击,因为对手有最少量的信息可供利用。然而,在许多情况下,破译者有更多的信息。分析员除了密文外,还能够获取一段或多段明文,或者分析员可能知道某种明文模式将出现在一个消息中。有了这些知识,该分析员也许能够根据变换出来的已知明文推断出密钥。,与已知明文攻击紧密相关的是可以被称为可能词的攻击。如果对手分析某些一般消息,对该消息中具有的东西可能一无所知,然而,如果该对手能够得到某些非常特别的信息,则就有可能知道该消息的某些部分。,例如,如果传输的是一个完整的账目文件,对手可能知道在该文件首部中某些关键词汇的位置。则就可进行选择明文攻击。,所以,仅有相对弱的算法是抵御不了仅有密
12、文的攻击的。一般而言,被设计的加密算法要能经受得住已知明文的攻击。,实际上“无条件安全”的加密方案是很难做到的。只有称为一次一密的方案是个例外。因此,加密算法的用户所能做的全部努力就是满足下列准则中的一个或两个:破译该密码的成本超过被加密信息的价值。破译该密码的时间超过该信息有用的生命周期。,如果满足上述两个准则的一个或两个,一个加密方案就可认为在计算机上是安全的。因为要成功破译这样的密文需要付出实难估计的努力。,图2.3勾画出密码编制和密码分析过程的概貌,图中,EAB是发送方A向接收方B发送密文时所采用的加密算法,DAB是EAB的逆,即解密算法。,图2.3 密码编制和密码分析示意图,三、一次
13、一密系统从上述的讨论,可见,对一个密码系统的基本要求是: (1)知道KAB时,EAB容易计算。(2)知道KAB时,DAB容易计算。(3)不知道KAB时,由C=EAB(M)不容易推导出M。,以上要求说明一个密码系统的设计原则是:对合法的通信双方来说加密和解密变换是容易的;对密码分析员来说由密文推导出明文是困难的。,那么,什么是一个“好的”密码系统呢?衡量一个密码系统的好坏,当然应当以它能否被攻破和易于被攻破为基本标准。,理论上不可攻破的密码系统,通常被称做一次一密系统。假定明文是M=(m0,m1,mn-1), 用下述算法C=Eki(mi)=(mi+Ki)(mod 26) 0in,(2-5) 可以
14、得出密文C=(C0,C1,Cn-1)。,比较式(2-4)和式(2-5)后可以看出,一次一密系统用凯撒代替法将明文变换成密文。一次一密系统还具有以下特征:密钥 K=(K0,K0,Kn-1)是一个随机序列,密钥只使用一次,且密钥序列的长度等于明文序列的长度,即|K|=|M|。,例如,明文是 send help 它的数字等价形式是19,5,14,4,8,5,12,16亦即 M=(19,5,14,4,8,5,12,16),n=8,假定随机密钥序列为K=(5,13,1,0,7,2,20,16), 则根据公式(2-5)可以得出密文C=(24,18,15,4,15,7,6,6), 或等价地 C=(X,R,O
15、,D,O,G,F,F)。,如果知道密钥序列K,就可以很容易地将此密文C还原成明文 M=(s,e,n,d,h,e,l,p),但是,当不知道密钥序列K时,仅仅知道密文C不可能推断出明文M。在上述例子中,可能的密钥序列共有268个,这是一个很大的数字。通常n远大于8,这时26n可能是一个天文数字。,如果采用密钥穷尽搜索的方法,由给定的密文C对26n种可能的密钥进行尝试,以求推断出明文M,显然工作量是太大了。况且,在这26n种可能的密钥中,还会有一部分能生成有意义的信息。,例如在上述例子中,当K=(4,3,2,21,22,24,20,20)时,由同一个密文C=(24,18,15,4,15,7,6,6)
16、,可以生成不同于M=(s,e,n,d,h,e,l,p)的另一个有意义的明文M=(20,15,13,9,19,9,12,12) 或 M=(t,o,m,i,s,i,l,l),那么,到底是Send help,还是Tom is ill才是真正的明文呢?它们作为明文的可能性是相同的,单单知道密文无法判断哪一个是真正的明文。因此,当获悉密文后,丝毫也不能增加破译的可能性,这就是一次一密系统在理论上不可破的原因,对此不再进行严格的理论证明。,尽管一次一密系统在理论上认为是惟一不可攻破的密码系统,然而,在实际应用中,一次一密系统却受到很大的限制:首先,分发和存贮这样大的随机密钥序列(它和明文信息等长),确保密
17、钥的安全是很困难的;其次,如何生成真正的随机序列也是一个现实问题。因此,人们转而寻求实际上不可攻破的密码系统。,所谓实际上不可攻破的密码系统,是指它们在理论上虽然是可以攻破的,但真正要攻破它们,所需要的计算资源(例如所需要的计算机时间和容量)超出了实际上的可能性。如,要攻破某个密码系统需要耗费计算机机时100年,这样的密码系统该够安全了。,四、柯克霍夫斯原则衡量一个密码系统的保密性能,是一项十分困难的任务,其中涉及到的因素很多,例如,密码分析员掌握的关于密码系统的知识越多,对密码系统构成的威胁就越大。密码系统的攻击能力大致可以分为以下六级。,(1)密码分析员除密钥外,掌握密码系统的加密和解密算
18、法。(2)仅知道密文的攻击密码分析员能够搜集到密文信息。(3)已知明文的攻击密码分析员搜集到某些明文和与之对应的密文信息。,(4)选择明文的攻击密码分析员可有选择地搜集到某些明文和与之对应的密文信息。(5)密码分析员可以像合法用户那样发送加密的信息。(6)密码分析员可以改变、截取或重新发送信息。,上述分级是按照密码分析员的能力由低到高排列的,其中每一项包含以前各项的内容。如,密码分析员的能力级别为(4)时,说明他具有(1)至(4)条各项所述的能力。,我们在设计密码系统时,至少应该使它经受住上述(l)级和(2)级攻击的考验。关于第(1)条,早在1883年柯克霍夫斯(A.Kerchoffs)在其名
19、著“军事密码学”中就建立了下述原则:,密码系统中的算法即使为密码分析员所知,也应该无助于用来推导出明文或密钥;这一原则已被后人广泛接受,取名为柯克霍夫斯原则,并成为密码系统设计的重要原则之一。,2.1.2 加密的基本方法,数据加密的基本方法可分为变位(permutation)和替换(substitution)两种,实际的算法通常是这两种方法的组合运用。,一、换位法换位法又称置换法、变位法。换位法是根据某种规则改变明文码元在原文中的相应位置,使之成为密文的一种加密方法。例如把明文中的字母重新排列组合,字母本身不变,但相互的位置变了。这种内容的变位可以是一维或多维的。换位法的基本方法有如下两种:,
20、(一)矩阵转置密码算法这是一种一维的变位方法,美国南北战争期间(18611865年)使用。定义K1K2阶的矩阵,将明文按行填入,再按列输出成密文,不足部分填入随机字符。如图2.4所示。,图2.4 矩阵转置密码算法的例子,输入方向,输出方向,明文:can you understand,密文:codtaueanurnynsd,(二)图形转置密码算法这是一种二维的变位方法,先按一定的方向把明文输人到某一种预先规定的图形中,再按另外一种方向输出字符就构成了密文, 换位法比较简单,经不起攻击。但把它与其他密码相结合,可得到十分有效的密码。,图2.5 图形转置密码算法的例子,二、替换法替换法又称变换法、换
21、字法、代替法。它改变明文内容的表示形式,但内容元素之间的相对位置保持不变。例如将明文中的字母用其他字母代替,或用数字或符号代替,这样各字母保持其原来的位置不变,但其本身改变了。,首先构造一个或多个密文字母表,然后用密文字母表中的字母或字母组来代替明文字母表中的字母或字母组。各字母或字母组的相对位置不变,但其本身改变了。如此编成的密码称为代替密码。,按代替过程所使用的密文字母的个数可将代替密码分为单表代替密码、多表代替密码和多名代替密码等。,(一)单表代替密码,单表代替密码又称简单代替密码,它使用一个密文字母表,并且用密文字母表中的一个字母来代替明文字母表中的一个字母。,设A=(a0,a1,an
22、1)为含n个字母的明文字母表,B=(b0,b1,bn1)是含n个字母的密文字母表。定义一个由A到B的一一映射:f:ABf(ai) = bi,设明文 M=(m0,m1,mn1),则相应的密文 C=(f(m0),f(m1),f(mn1)。可见,简单代码的密钥就是映射f或密文字母表B。,单表替代密码有以下几种典型方式:1加法密码加法密码的映射函数为f(ai) = aj(26)j=i+k mod n 其中,aiA,k是满足 0kn的正整数。,最著名的加法密码就是前述的凯撒密码。凯撒密码取k=3,因此其密文字母表就是把明文字母表循环移3位后得到的字母表。,2乘法密码乘法密码的映射函数为f(ai) = a
23、jj=i k mod n (2-7) 其中,要求k与n互素。这是因为仅当(k,n)=1时,才存在两个整数x,y,使得xk+yn=1,才有 xk=1 mod n,才有 i=xj mod n,密码才能正确解密。,3仿射密码乘法密码与加法密码相结合便构成仿射密码。仿射密码的映射函数为:f(ai) = ajj=ik1 + k0 mod n (2-8) 其中,要求(k1,n)=1,0k0n。,仿此可构造更复杂的多项式密码:f(ai) = ajj=itkt+it-1kt-1+ik1+k0 mod n(2-9) 其中,要求(kj,n)=1,0k0n。,(二)多表代替法单表代替密码很容易被破译,原因在于只用一
24、个密文字母表加密,从而使得明文中的一个字母只有用惟一的一个密文来代替。提高代替密码强度的一种方法是采用多个密文字母表,使明文中的每一个字母都有多种可能的代替,这种方法叫做多表代替法。,三、代数密码美国电话电报公司的 Gilbert Vernam在11917年为电报通信设计了一种非常方便的密码,后来被称为Vernam密码。Vernam密码在近代计算机和通信系统设计中得到广泛应用。,Vernam密码的明文,密钥和密文均用二元数字序列表示。设明文 M=(m0,m1,mn-1),密钥 K=(k0,k1,kn-1),密文 C=(CO,C1,Cn-1), 则 ci=miki;I=0,1,n1 (2-11)
25、,这说明要编制Vernam密码,只需要先把明文和密钥表示成二元序列,再把它们按位模2相加便可。而要解密Vernam密码,由(2-11)式可得mi=ciki (2-12) 故只需要先把密文和密钥的二元序列按位模2相加便可得到明文。,模2加就是异或运算,既有 1+1=0,0+0=0,0+1=l,l+0=1。模2加有一个特点:信息码与密钥码作模2加,则还原为信息码,也即加密过程与解密过程一致。,如:(电报码)信息码 00111密钥码 11001(模2加)11110密钥码11001(模2加)信息码00111,只要把明文与电报码建立对应关系,再取一个密钥序列,就可用此法形成密文。开始时使用一个定长的密钥
26、序列,像密码字一样循环使用,这样产生的密文能形成有规律的反复,易被破译;后来采用的密钥与明文同长,且密钥序列只用一次,称为“一次一密体制”,其传送方式如图2.6。,其安全性很强,Shannon曾证明一次一密密码体制是不可破的。可见Vernam密码的加密和解密非常简单,而且特别适合于计算机和通信系统的应用。,图2.6 一次一密的传送方式,2.2 对称式密码体制,对称式密码体制,即所谓的单密钥系统,加密者与解密者共享一个密钥。其特性是加密速度非常快,但安全性往往存在问题。,单钥密码算法可以分为两大类:一类是一次若干位一组地对明文进行操作和运算,称作分组密码;另一类是每次一位(bit)地对明文进行操
27、作和运算,称作序列密码。,在计算机上实现分组密码算法,以前通常选取组长为64位,足以应付密码分析,现在随着计算机能力的不断增长,组长为64位的分组密码的安全性受到威胁,因而往往选择组长为128位的分组密码。,有时候,分组密码和序列码的界限并不十分清楚,如,一次对一个字符进行明文变换的密码系统,即可以看作对字符流进行操作的序列密码,也可以看作一次对8位长的位组进行明文变换的分组密码。,2.2.1 分组密码,一、分组乘积密码在实际应用中,为了加强密码系统的保密性,常常采用多个密码复合的方法,这就是所谓乘积密码(product cipher)。,乘积密码是m个函数(密码)f1,.,fm的复合,其中每
28、个fi可能是一个代替或换位函数,图2.7所示的ADFGVX乘积密码就是一例。,图2.7 ADFGVX乘积密码,这种密码有一个6行6列的表,各行列分别用A,D,F,G,V和X标号,表中随机地填入26个字母AZ和10个数字09。加密分两步进行:第一步将明文字母用其所在行和列的标号对代替,然后把中间结果按行的顺序写成一个换位长方形的形式。,第二步根据密钥(图中是computer)所示的顺序控列写出字母,就可以得到密文。解密是加密的逆过程。交替使用代替和换位两种方法,用以破坏对密码系统所进行的各种统计分析,保证密码系统的安全性。,二、DES分组密码系统(美国数据加密标准DES),DES(Data En
29、cryption Standard)属于分组加密法,而分组加密法就是对一定大小的明文或密文来做加密或解密动作。而在DES这个加密系统中,其每次加密或解密的分组大小均为64位,所以DES没有密文扩充的问题。,就一般数据而言,无论明文或密文,其数据大小通常都大于64位。这时只要将明密文中每64位当成一个分组而加以切割,再对每一个分组做加密或解密即可。但是对明文做分组切割时,可能最后一个分组会小于64位。此时,要在此分组之后附加“0”位,直到此分组大小成为64位为止。,另一方面,DES所用的加密或解密密钥(Key)也是64位大小,但因其中有8个位是用来做奇偶校验,所以64位中真正起密钥作用的只有56
30、位。而DES加密与解密所用的算法除了子密钥的顺序不同之外,其他的部分则是完全相同的。下面就DES的有关内容作分析。,(一)DES算法图2.8是DES全部16轮(ROUND)的加/解密结构图,其最上方的64位输入分组数据,可能是明文,也可能是密文,视使用者要做加密还是解密而定。,而加密和解密的不同之处仅仅在于图中最右边的16个子密钥的使用顺序,加密的子密钥顺序为K1,K2,K16,而解密的子密钥顺序正好相反,为K16,K15,K1。,首先,加解密输入分组依表2-3(a)的初始换位IP,进行初始置换,重排次序,把原来的二进制明文块T变换成T0=IP(T)。然后,再分为L0与R0两个32位的分组。接
31、着,RO与第一个子密钥K1一同经过f函数运算,得到的 32位输出再与L0做逐位异或(XOR)运算。其结果为下一轮的R1,RO则成为下一轮的L1。如此,图2.8 DES的 加密算法,连续运作16轮,得到逆初始换位IP1的二进制密文输出。换位IP和IP1表分别参看表2-3(a),(b)。由表(a)可知,初始换位IP将T=t1,t2,t64变成T0=t58,t50,t7。不难看出,IP1是IP之逆。,上述过程是结合代替和换位的函数f的16次迭代来完成的。令Ti 表示第i次迭代的结果,令Li和Ri分别表示Ti的左半部分和右半部分,即Ti=LiRi,此处Li=t1,t2,t32 R=t33,t34,t6
32、4 两次相邻的迭代之间的关系是Li=Ri1 Ri=Li1f(Ri1,Ki) (2-15) 其中,表示“异或”操作,Ki是下面即将讲到的48位子密钥。,从图2.9中我们注意到:在最后一次迭代之后,所得结果的左、右半部不再交换,而是直接将R16L16。送到IP1的输入端,这样做的原因是为了使加密和解密可以使用同一个算法。,表2-3 初始换位IP和逆初始换位IP1,(二)DES算法的f函数f函数是整个DES加密法中最重要的部分,而其中的重点又在S一盒(Substitution Boxes)上。图2.9是f(Ri1,Ki)函数的计算过程结构。f函数有两个输入数据:一为32位的中间密文R,另一部分是48
33、位的子密钥K。,图2.9 f(Ri1,Ki)的计算,f函数形成的其基本过程是:首先用位选择表2-4(a)将Ri1扩展成48位二进制块E(Ri1),即Ri1=r1,r2,r31,r32,E(Ri1)= r32, r1, r2, r31, r1,然后对 E(Ri1)和Ki进行“异或”操作,并将其结果分成8个6位二进制块B1,B8,此处E(Ri1)Ki=B1,B2,B8。,每个6位子块Bj都是选择(代替)函数Sj的输入。其输出是一个4位二进制块Sj(Bj),把这些子块合成32位二进制块之后,用换位表P(如表2-4(b)变换成 P(S1(B1).S8(B8),表2-4,这就是函数f(Ri1,Ki)的输
34、出,每个Sj将一个6位块Bj=b1b2b3b4b5b6转换成一个4位块的规则如表2-4所示,与b1b6相对应的整数确定表中的行号,与b2b3b4b5相对应的整数确定表中的列号,Sj(Bj)的值就是位于该行和该列的整数的4位二进制表示形式。,如,假设第一个S一盒S1的6个输入位数据为(011001)2,其中右边为低位,则我们就选见的第(01)2=1行及第(1100)2=12列之内容,也就是9=(1001)2为输出数据。例:设B6=101010,则 S6(B6)的值位于第2行第5列,即等于8,因此S6(B6)的输出是1000。 表2-5(见教材p58),(三)子密钥的产生,图2.10 子密钥 产生
35、过程,表2-6 子密钥换位表(PC-1),图2.10说明了由初始密钥推导出子密钥Ki的过程。密钥K是一个64位二进制块,其中8位是奇偶校验位,分别位于第8,16,.,64位。,子密钥的产生过程为:首先将密钥K经过密钥置换PC1(如表2-6),将初始密钥的8个奇偶校验位剔除掉,留下真正的56位初始密钥。,表2-7 循环左移函数,接着,分为两个28位的分组C0及D0,再分别经过一个循环左移函数(如表2-7),得到C1与D1,连接成56位数据,再依密钥置换PC2(如表2-8)做重排动作,便可输出子密钥K1,而K2至K16的产生方法,依此类推。,其中需注意的是,密钥置换PC1的输入为64位,输出为56
36、位;而密钥置换PC2的输入和输出则分别为56位与48位,这些情况可由图2.10及表2-6、表2-8中清楚地看出来。,表2-8 子密钥换位表PC2,现令Ci和Di分别表示推导Ki时所用的C和D的值,其变换公式为: Ci=LSi(Ci1) Di=LSi(Di1)此处LSi是循环左移位变换,其中LS1,LS2,LS9和LS10是循环左移1位变换,其余的LSi是循环左移2位变换。,C0和D0是C和 D的初始值,假如 K=K1K2K63K64,显然,C0=K57K49K44K36,D0=K63K55K12K4。,最后,通过子密钥换位函数PC2(参看表2-8)得出Ki: Ki=B(Ci,Di) (2-17
37、)解密算法和加密算法相同,只不过第1次迭代时用于密钥K16,第2次迭代时用K15,第16次迭代时用K1,这是因为最终换位IP1是初始换位IP的逆变换,且 Ri1=LiLi1=Rf(Li,Ki),注意:在解密过程中只是于密钥的顺序颠倒了,算法本身并没有改变。,三、分组密码系统(IDEA) (一)IDEA概述,IDEA是一种分组加密算法。即利用128位的密钥对64位的明文分组,经过连续加密产生64位的密文分组。,对任何加密算法的设计,混淆(Confusion)及扩散(Diffusion)是两个最重要的安全特性。混淆是说加密算法的密文与明文及密钥的关系十分复杂,无法从数学上描述,或从统计上去分析。扩
38、散是说明文中的任一位以及密钥中的任一位,都对全体密文位有影响。经由此种扩散作用,可以隐藏许多明文在统计上的特性,增加密码的安全。,IDEA的混淆特性是经由混合下述三种函数而达成。(1)以位为单位的 ExclusiveOR,用表示。(2)定义在模216(=mod 65536)的模加法运算,其操作数都可以表示成16位整数,用田表示这个函数。,(3)定义在模216+1(=mod 65537)的模乘法运算。因为65537是一素数,所以对任何数(除0以外)的乘法逆元是存在的。值得一提的是,为了保证即使当“0”出现在16位的操作数时也有乘法逆元存在,“0”被定义成216,用表示这个函数。,以上3个函数,由
39、于基于以下的“非兼容”(incompatible)性,当应用在IDEA时,可以充分发挥出混淆的特性。(1)3个函数中的任意2个函数,都无法满足“分配律”(Distributive Law),例如对函数及田,存在a,b,cF216,而且a田(bc)(a田b)(a田c)。,(2)3个函数中的任意 2个函数,都无法满足“结合律”(Associative Law)。例如对函数田及,存在a,b,cF216,而且a田(bc)(a田b)(a田c),例如,当a=b=c=l=(0,0,0,1),上式左边是l=(0,0, ,0,1),而右边是 3=(0,0,0,1,1)。因此在IDEA的设计中,使用了这三种函数的
40、混合组合来打乱数据。攻击者无法用化简的方式来分析密文与明文及密钥之间的关系。,IDEA的扩散特性是建立在乘法加法(MA)的基本结构上。图2.11表示MA的基本结构。该结构一共有4个16位的输入,两个16位的输出。其中的两个输入源于明文,另两个输入是子密钥,源于128位加密密钥。经分析验证,数据经过8轮的MA处理,可以得到完整的扩散特性。,图2.11 MA 运 算 器 结 构,(二)IDEA加密方法图2.12显示IDEA加密方法的流程。IDEA方法包括8轮的重复运算,加上最后的输出变换运算(Transformation)。64位的明文分组在每一轮中都是被分成4份,每份16位为一单元来处理。,每一
41、轮中有6个不同的子密钥参与作用。最后的输出变换运算用到了另外的4个子密钥。所以在IDEA加密过程中共享到了52个的子密钥。这些子密钥都是由一个128位的加密密钥产生的。,图2.12IDEA 加 密 流 程,让我们检视一下每一轮的运算过程。图2.13显示单轮的结构。每一轮的运算分成两部分。第一部分即是前面所说的变换运算。利用加法及乘法运算将4份16位的子明文分组与4个子密钥混合,产生4份16位的输出。,这4份输出又两两配对,以逻辑XOR将数据混合,产生两份16位的输出。这两份输出,连同另外的两个子密钥成为第二部分的输入。,第二部分即是前面提到用以产生扩散特性的 MA运算。 MA运算生成两份16位
42、输出。 MA的输出再与变换运算的输出以 XOR作用生成4份 16位的最后结果。这4份结果即成为下一轮运算的原始输入。值得一提的是,这4份最后结果中的第二、三份输出(即W12及W13),是经过位置互换而得到。此举的目的在于对抗差分分析法。,图2.13 IDEA单轮运算结构,明文分组在经过8轮加密后,仍需经过最后的输出变换运算才能形成正式的密文。最后的输出变换运算与每一轮的变换运算大致相同。,惟一不同之处在于第二、三份输出(即Y2及Y3)是不需经过位置互换。这个特殊安排的目的在于使我们可以使用与加密算法相同结构的解密算法解密,简化了设计及使用上的复杂性。图2.14表示最后的输出变换运算。,图2.1
43、4 IDEA中最后的输出变换运算,(三)子密钥生成过程图2.13中可以看出IDEA一次完整的加密运算需要52个子密钥。这52个16位的于密钥都是由一个128位的加密密钥产生的。生成过程如下:,将128位分成8份,每份16位,相当于Z1,Z2,Z8的子密钥。Z1的16位对应于加密密钥中最高阶(Most Significant)的16位。而Z8的16位相对应于加密密钥中最低阶(Least Significant)的16位。,将加密密钥循环左移25位之后,同样的方法可以得到另外8个子密钥,Z9,Z10,Z16。重复同样的步骤,每循环左移25位,可以得到另外新的8个子密钥。Z1,Z2,Z52可以依此陆
44、续生成。,(四)IDEA解密方法使用与加密算法同样的结构,可以将密文分组当做输入而逐步恢复明文分组解密过程。与加密过程中惟一不同的是于密钥的生成方法。现在让我们分析一下解密子密钥U1,U2,U52与加密子密钥Z1,Z2,Z52的关系。,(1)由于解密过程中第i轮的运算是加密过程中第9i轮的逆运算。因此在解密过程中的变换运算,其中的第一、四个子密钥等于在对应轮中第一、四个子密钥在模216+1中的乘法逆元。例如U1=Z491,U4=Z521。,变换运算中的第二、三个子密钥,等于在对应轮中第二、三个子密钥在模 216中的加法逆元。例如 U2=Z50,U3=Z51。,(2)基于同样的道理,我们也可以得
45、到在解密过程中每轮MA运算的子密钥与加密过程对应轮中MA运算的子密钥关系。表2-9列出了加、解密中52对于密钥的关系。,表2-9 IDEA加密和解密的子密钥对照表,图2.15完整的显示出加、解密的流程图。由此可逐步推导出下列关系:Vi1= I(9-I)1Vi2= I(9-I)3Vi3= I(9-I)2Vi4= I(9-I)4I = 1,2,8从上面的叙述,了解了IDEA的处理过程及系统结构。,图2-15IDEA 加、解密 流程图,于是可以将IDEA的设计理念归纳如下。(1)IDEA的设计主要考虑是针对以16位为单位的处理器。因此无论明文、密钥都是分成以16位为一个单元,进行处理。,(2)IDE
46、A使用了三种很简单的函数运算,因此在执行时可以达到非常快的操作。在33MHZ 386机器上运行,加密速度可以达到 880kbs。经过特殊设计的 VLSI芯片,更可以达到 55 MbS的速度。,(3)IDEA采用三种非常简单的函数,混合操作,以达到混淆目的。与DES相比较,IDEA的安全性评估,较易被大家接受。,(4)IDEA的整体设计非常规律。MA运算器及变换运算器重复使用在系统上。因此非常适合VLSI实现。由于IDEA使用密钥的长度是DES的2倍,所以在强力攻击下(Bruteforce Attack),其安全性较DES强了264倍。,2.3 非对称式密码系统,2.3.1 非对称式密码系统的基
47、本概念,一、对称式密码系统的特点与问题由前述可知,对称式密码系统是一个单钥系统,加密者与解密者共享一个密钥,信息流程如图2-24所示。,图2.24 对称密码系统信息流程图,图中,M表示明文;C表示密文;E表示加密算法;D表示解密算法;K表示密钥;M1表示密码分析员对M的分析或猜测;I表示密码分析员进行密码分析时掌握的其他有关信息;虚线表示安全信道。对称密码系统的特点是:,(1)加密和解密时所用的密钥是相同的或者是类似的,即由加密钥可以很容易地推导出解密钥,反之亦然。因此,常称传统密码系统为“单钥密码系统”或“对称型密码系统”。,(2)在一个密码系统中,我们不能假定加密算法和解密算法是保密的,因
48、此密钥必须保密。然而发送信息的通道往往是不可靠的,所以在传统密码系统中,必须用不同于发送信息的另外一个安全信道来分发密钥。,于是,人们就研究能否用非对称式密码系统来加密,即不是单密钥,而是用双密钥,把加密和解密的密钥分开。这一设想,首先由Diffie和Hellman在美国国家计算机会议上提出。,二、非对称式密码系统的概念非对称式密码系统是指加密密钧和解密密钥分开,加密密钥可以公开,而解密密钥只能是解密人所有,却无法由公开的加密密钥得到。,非对称式密码系统信息流程如图2-25所示。图中K1,K2表示密钥;其余符号同图2-24所示,只是图2-25少了一条虚线。由此可见,两种系统的结构有本质的不同。
49、,图2.25 非对称式密码系统信息流程图,非对称式密码系统具有下述性质:(1)加密钥和解密钥是本质上不同的。即知道其中一个密钥,不存在一个可以“有效地”推导出另一个密钥的算法。,即公开加密算法E,并不导致一个推导出解密钥或明文的有效算法,只有用户本人才能有效地计算D,而密码分析却是困难的。因此,非对称式密码系统又常常称为“双钥密码系统”或“公开钥密码系统”。,(2)加密算法E和解密算法D都是计算容易的问题。(3)解密加密后的明文就恢复了原来的明文M,即D(E(M)=M。满足上述三个性质的函数E就是限门单向函数。如果还满足下述第(4)条性质,就称E是限门单向置换(trapdoor oneway permutation)。,(4)如果将明文M先解密后加密的话,其结果仍为M,即E(D(M)=M。性质(4)在数字签名中起重要作用。(5)不需要分发密钥的额外信道。可以公开加密钥,而无损于整个系统的保密性,需要保密的仅是解密钥。,