《数字签名与认证技术教学课件电子教案.pptx》由会员分享,可在线阅读,更多相关《数字签名与认证技术教学课件电子教案.pptx(112页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第5章 数字签名与认证技术网络空间信息安全第第5 5章章 数字签名与认证技术数字签名与认证技术本章主要内容 5.1 数字签名 5.2 安全散列函数 5.3 认证技术第第5章章 数字签名与认证技术数字签名与认证技术35.1 数字签名数字签名 5.1.1 数字签名概念 5.1.2 数字签名的实现过程 5.1.3 EIGamal数字签名算法 5.1.4 Schnorr数字签名算法 5.1.5 数字签名标准DSS第第5章章 数字签名与认证技术数字签名与认证技术45.1.1 数字签名概念 数字签名是网络中进行安全交易的基础,数字签名不仅可以保证信息的完整性和信息源的可靠性,而且可以防止通信双方的欺骗和抵
2、赖行为。虽然报文认证能够保证通信双方免受任何第三方的攻击,然而却不能保护通信双方中的一方防止另一方的欺骗和伪造。第第5章章 数字签名与认证技术数字签名与认证技术55.1.1 数字签名概念 例如,当用户A和用户B进行通信时,若未使用数字签名,则用户A可以随意地伪造报文,并声称该报文是来之用户B的;同时用户B也可以否认曾经真正发送给用户A的报文。因此,在收发双方未建立起完全信任关系时,单纯的报文认证就显得不够充分,因而需要数字签名技术。第第5章章 数字签名与认证技术数字签名与认证技术65.1.1 数字签名概念 数字签名应具有以下性质: 必须能够验证签名生成者的身份以及生成签名的时间; 能够用于证实
3、被签名消息的内容; 数字签名必须能被第三方验证,从而解决通信双方的争议。第第5章章 数字签名与认证技术数字签名与认证技术75.1.1 数字签名概念 数字签名应满足以下安全要求: 签名的产生必须使用对方发送来说是唯一的信息,以防止伪造和抵赖; 签名的产生必须相对简单; 数字签名的识别和验证必须相对简单; 对已有的数字签名伪造一个新的报文或对已知的报文伪造一个虚假的数字签名,在计算上是不可行的。第第5章章 数字签名与认证技术数字签名与认证技术85.1.1 数字签名概念 数字签名有直接数字签名和需仲裁的数字签名两种使用方式。 直接数字签名方式是在数字签名的使用过程中只有通信双方参与,并假定通信双方有
4、共享的秘密密钥或接收端知道发送端的公钥。在直接的数字签名中,数字签名可以通过使用发送端的私钥对整个报文进行加密形成,或者通过使用发送端的私钥对报文的散列值进行加密来形成。第第5章章 数字签名与认证技术数字签名与认证技术95.1.1 数字签名概念 然而,所有的直接数字签名方案都具有共同的弱点,即方案的有效性依赖发送端私钥的安全性。例如,发送端在用私钥对报文签名后,想否认发送过该报文,此时发送端可以声称该私钥丢失,签名被伪造。另一种可能的情况是,私钥确实在时刻T在X处被盗,攻击者可以发送带有X的签名报文并附加小于等于T的时间戳。 为了解决直接数字签名存在的问题,广泛采用的方法是使用数字证书的证书权
5、威机构CA等可信的第三方参与,即使用需仲裁的数字签名方案。第第5章章 数字签名与认证技术数字签名与认证技术105.1.2 数字签名的实现过程 公开密钥算法中公钥和私钥一一对应。私钥具有私密性,只有用户本身知道。如果公钥和用户之间的绑定关系能够被权威机构证明,就具有不可否认性。 数字签名的实现过程如图所示:第第5章章 数字签名与认证技术数字签名与认证技术115.1.2 数字签名的实现过程 用户A用私钥SKA对明文P经过报文摘要算法后得到的摘要MD(P)进行解密运算,产生数字签名(DSKA(MD(P),将明文P和数字签名一同发送给用户B。用户B认定明文P是用户A发送的前提是:用与用户A绑定的公钥P
6、KA对数字签名进行加密运算后得到的结果和对明文P进行报文摘要运算后得到的结果相同,即EPKA(数字签名)=MD(P)。第第5章章 数字签名与认证技术数字签名与认证技术125.1.2 数字签名的实现过程 DSKA(MD(P)能够作为发送端用户A对报文P的数字签名依据如下: 私钥SKA只有用户A知道,因此,只有用户A才能实现DSKA(MD(P)运算过程,保证了数字签名的唯一性。 根据报文摘要算法的特性,即从计算可行性上讲,其他用户无法生成某个报文P,PP,但MD(P)=MD(P),因此,MD(P)只能是针对报文P的报文摘要算法的计算结果,保证了数字签名和报文P之间的关联性。第第5章章 数字签名与认
7、证技术数字签名与认证技术135.1.2 数字签名的实现过程 数字签名能够被核实。公钥PKA和私钥SKA一一对应,如果公钥PKA和用户A之间的绑定关系得到权威机构证明,那么一旦证明用公钥PKA对数字签名进行加密运算后还原的结果(EPKA(数字签名)等于报文P的报文摘要(MD(P),就可以证明数字签名是DSKA(MD(P)。 用公开密钥算法实现数字签名的前提是由权威机构出具证明用户和公钥之间绑定关系的证书,只有公钥和用户之间的绑定关系得到有公信力的权威机构的证实,才能核定该用户的数字签名。第第5章章 数字签名与认证技术数字签名与认证技术145.1.3 EIGamal数字签名算法 ELGamal密码
8、体制机制能够使用用户的公钥进行加密,使用私钥进行解密,从而提供机密性。ELG挨骂了数字签名算法则是使用私钥进行加密,使用公钥进行解密。第第5章章 数字签名与认证技术数字签名与认证技术155.1.3 EIGamal数字签名算法第第5章章 数字签名与认证技术数字签名与认证技术165.1.3 EIGamal数字签名算法 为了对报文M进行签名,用户A首先计算散列值h=H(M),其中h是满足0hq-1的整数。然后用户A生成数字签名: 秘密地随机选择一个整数K,其中1Kq-1,且gcd(K,q-1)=1; 计算S1=Kmodq; 计算K模(q-1)的逆K-1mod(q-1); 计算S2=K-1(h-XAS
9、1)mod(q-1); 生成数字签名(S1,S2)对。第第5章章 数字签名与认证技术数字签名与认证技术175.1.3 EIGamal数字签名算法 用户B验证数字签名: 计算V1=hmodq; 计算V2=(YA)S1(S1)S2modq; 若V1=V2,则签名合法。第第5章章 数字签名与认证技术数字签名与认证技术185.1.3 EIGamal数字签名算法 下面是ELGamal数字签名算法正确性的证明。 证明:假设V1=V2,则有 hmodq=(YA)S1 (S1)S2 modq hmodq=XA S1 KS2modq h-XA S1 modq=KS2 modq 由于去是素数,是去的原根,则有 对
10、于任意整数m,m1modq当且仅当m0mod(q-1); 对于任意整数i,j,ijmodq当且仅当ijmod(q-1)。 因此,根据原根的性质可以得到 h-XAS1KS2mod(q-1) h-XAS1 KK-1(h-XAS1)mod(q-1) 等式成立,证毕。第第5章章 数字签名与认证技术数字签名与认证技术195.1.4 Schnorr数字签名算法 Schnorr数字签名算法的目标是将生成签名所需的报文计算量最小化,其生成签名的主要工作不依赖于报文,而是可以在空闲时执行,与报文相关的部分需要进行2nbit长度的整数与nbit长度的整数相乘。与ELGamal数字签名算法相同,Schnorr数字签
11、名算法的安全性同样依赖于计算有限域上离散对数的难度。第第5章章 数字签名与认证技术数字签名与认证技术205.1.4 Schnorr数字签名算法第第5章章 数字签名与认证技术数字签名与认证技术215.1.4 Schnorr数字签名算法第第5章章 数字签名与认证技术数字签名与认证技术225.1.4 Schnorr数字签名算法第第5章章 数字签名与认证技术数字签名与认证技术235.1.5 数字签名标准DSS 在现实社会中,特别是在IT行业界,标准化可以降低成本,还具有兼容性等优点。密码与信息安全技术大量使用于网络通信中,标准化必然是其中一项重要工作,数字签名的标准制定就是其必备部分之一。影响较大的制
12、定信息安全相关标准的组织有:ISO和国际电子技术委员会(IEC),美国国家标准协会(ANSI), 美国国家标准与技术委员会(NIST)制定的美国联邦信息处理标准(FIPS)系列,Internet研究和发展共同体制定的标准,IEEE微处理器标准委员会制定的标准,RSA公司制定的PKCS系列标准等等。第第5章章 数字签名与认证技术数字签名与认证技术245.1.5 数字签名标准DSS 20世纪1994年12月,由美国国家标准与技术委员会(NIST)正式发布了数字签名标准DSS(Digital Signature Standard)即联邦信息处理标准 FIPS PUB 186。它是在EIGamal和S
13、chnorr数字签名体制的基础上设计的,其安全性基于有限域上离散对数问题求解的困难性。DSS最早发表于1991年8月,该标准中提出了数字签名算法DSA和安全散列算法SHA,它使用公开密钥,为接收者提供数据完整性和数据发送者身份的验证,也可由第三方用来验证签名和所签数据的完整性。第第5章章 数字签名与认证技术数字签名与认证技术255.1.5 数字签名标准DSS 人们对DSS提出了很多意见,主要包括: DSA不能用于加密和密钥分配; DSA是由美国国家安全局NSA研制的,因为有人对NSA不信任,怀疑其中可能存在陷门,特别是NIST一开始声称DSA是他们自己设计的,后来表示得到了NSA的帮助,最后承
14、认该算法的确是由NSA设计的;DSA算法未经过公开选择阶段,未公开足够长的时间以便人们分析其完全强度和弱点;第第5章章 数字签名与认证技术数字签名与认证技术265.1.5 数字签名标准DSS DSA与RSA在签名时的速度相同,但验证签名时的速度DSA要慢10到40倍; 密钥长度只有512位,由于DSA的安全性取决于计算离散对数的难度,因此有很多密码学家对此表示担心。NIST于1994年5月19日正式颁布了该标准,并将密钥长度的规定改在512位至1024位之间可变。第第5章章 数字签名与认证技术数字签名与认证技术275.1.5 数字签名标准DSS 数字签名标准DSS主体部分条目 下面介绍的内容是
15、以2000年修订标准为基础: 首先对数字签名标准DSS作了简单的介绍和说明。 规定使用数字签名算法(DSA),消息散列值使用SHA-1。 描述数字签名算法(DSA)使用的参数。 数字签名算法(DSA)的产生。 数字签名算法(DSA)的验证。 RSA数字签名算法。 椭圆曲线数字签名算法(ECDSA)的介绍。第第5章章 数字签名与认证技术数字签名与认证技术285.1.5 数字签名标准DSS DSA数字签名算法 在数字签名算法DSA中,有3个参数(全局公开密钥分量)对于一组用户是公开的和公用的:素数p,其中2L-1p2 L,512 L1024,且L是64的倍数;素数q,其中q是(p-1)的因数,21
16、59q2160;常数g=h(p-1) /qmod p,其中整数h满足条件1h(p-1)且使得g1。每个用户的私有密钥x是随机或伪随机整数,且xq以及公开密钥y=gxmod p。 现在利用上述5个参数以及安全散列算法SHA,可以实现数字签名。第第5章章 数字签名与认证技术数字签名与认证技术295.1.5 数字签名标准DSS 假设发送方A对消息M签名: 第一步,发送方A产生一个随机整数k,其中0kq; 第二步,利用k和SHA散列算法计算r=(gk mod p) mod q和s=(k-1(H ()+x r) mod q,然后发送方A将r和s作为自己对信息M的签名,把它们发送给接收方B; 第三步,接收
17、方B收到发送方A的消息M1和签名(r1,s1)后,计算w=(s1)-1 mod q,u1= H(M1) wmod q,u2= r1 w mod q,v= (gu1yu2) mod p mod q; 第四步,如果 v=r1,则接收方B认为发送方A对消息M的签名有效。第第5章章 数字签名与认证技术数字签名与认证技术305.1.5 数字签名标准DSS 由于DSA中的素数p和q是公用的,它们必须公开,因此人们关心它们的产生方法。国际密码学家 Lenstra和Haber指出:如果使用某些特定的素数,那么可以很容易地伪造签名。于是美国国家标准与技术委员会在DSS中特别推荐了一种公开的产生素数的方法。该方法
18、中的变量S称为“种子”,C称为“计数”,N称为“偏差”,同时将安全散列算法SHA用于素数的产生中,以防止有人在背后做手脚。第第5章章 数字签名与认证技术数字签名与认证技术315.1.5 数字签名标准DSS 下面来看一个用DSS数字签名的例子。 设q=101、p=78*101+1=7879,3为F7879的一个本原元,所以能取=378(mod 7879)=170为模p的q的单位根。假设=75,那么=(mod 7879)=4567。现在,假设Bob要签名一个消息为x=1234,而且已经选择拉随即值k=50,可算出k-1(mod 101)=99,则计算签名如下: =k(mod p)(mod q)=1
19、7050(mod 7879)(mod 101)=2518(mod 101)=94 =(x+) k-1(mod q)=(1234+75*94)*99(mod 101)=97第第5章章 数字签名与认证技术数字签名与认证技术325.1.5 数字签名标准DSS 所以签名为(1234,94,97)。签名的验证过程为: -1=97-1(mod 101)=2 e1=x-1(mod q)=1234*25(mod 101)=45 e2=-1(mod p)=94*25(mod 101)=27 (e1e2(mod p)(mod q)=(17045*456727(mod 7879)(mod 101) =2518(mo
20、d 101)=94 因此该签名是有效的。第第5章章 数字签名与认证技术数字签名与认证技术335.2 安全散列函数 5.2.1 安全散列函数的应用 5.2.2 散列函数的安全性要求 5.2.3 MD5报文摘要算法 5.2.4 SHA-1安全散列算法第第5章章 数字签名与认证技术数字签名与认证技术345.2.1 安全散列函数的应用 散列函数又称为Hash函数或杂凑函数,散列函数H以变长的报文M作为输入,产生一个定长的散列码H(M)作为输出。在安全应用中使用的散列函数称为密码学散列函数或安全散列函数。 安全散列函数可以实现报文认证和数字签名,因而被广泛应用于不同的安全应用和网络协议。第第5章章 数字
21、签名与认证技术数字签名与认证技术355.2.1 安全散列函数的应用 1 报文认证 报文认证是用来验证消息完整性的安全服务或安全机制,报文认证确保收到的报文来自可信的源点且在传输过程中未被篡改。当散列函数应用于报文认证时,散列值H(M)又称为报文摘要MD(Message Digest)。第第5章章 数字签名与认证技术数字签名与认证技术365.2.1 安全散列函数的应用 散列函数能够通过不同的方式提供报文认证功能。 散列函数用于报文认证的方法可以分为以下几种: 使用对称加密方法对附加散列值的报文进行加密 假定源端A向目的端B发送报文EKM|H(M),由于仅有A和B共享密钥K,所以,可以确定该报文必
22、定来自A且未被篡改,其中的散列值提供了实现认证所需要的结构。 另外,由于对报文和散列值整体进行加密,因此也提供了机密性。第第5章章 数字签名与认证技术数字签名与认证技术375.2.1 安全散列函数的应用 使用对称加密方法仅对散列值进行加密 源端A向目的端B发送报文M|EkH(M),由于只对散列值进行加密,因而无法提供机密性,仅提供认证功能,但减少了加解密操作的开销。 使用散列值、公共秘密值的明文方案 该方案使用了公共的秘密值S,假定通通信双方共享该秘密值S。源端A对报文M和公共秘密值S的连接计算散列值H(M|S),并将得到的散列值附加在报文M之后得到M|H(M|S),并向目的端B发送该报文。由
23、于目的端B知道该秘密值S,因而能够重新计算该散列值H并进行验证。另外,因为秘密值本身并不被发送,所以攻击者无法更改中途截获的报文,也就无法产生假报文。第第5章章 数字签名与认证技术数字签名与认证技术385.2.1 安全散列函数的应用 该方案并未对明文M进行加密,因而无法提供机密性,仅提供报文认证功能。 使用散列值、公共秘密值的密文方案 该方案与方案(C)相似,但对明文M和散列值整体进行加密,因而可以同时提供机密性和报文认证功能。第第5章章 数字签名与认证技术数字签名与认证技术395.2.1 安全散列函数的应用(a) 使用常规加密方法对附加散列值的报文进行加密第第5章章 数字签名与认证技术数字签
24、名与认证技术405.2.1 安全散列函数的应用(b) 使用常规加密方法仅对散列值进行加密第第5章章 数字签名与认证技术数字签名与认证技术415.2.1 安全散列函数的应用(c) 使用散列值、公共秘密值的明文方案第第5章章 数字签名与认证技术数字签名与认证技术425.2.1 安全散列函数的应用(d) 使用散列值、公共秘密值的密文方案第第5章章 数字签名与认证技术数字签名与认证技术435.2.1 安全散列函数的应用 2 数字签名 散列函数的另外一个重要应用是数字签名。数字签名是一种防止源点或终点抵赖的技术,在进行数字签名过程中使用用户的私钥对报文的散列值进行加密,其他任何知道该用户公钥的用户均能通
25、过数字签名来验证报文的完整性。因此,攻击者若想篡改报文,则需要知道用户的私钥。与报文认证相比,数字签名的应用更为广泛。第第5章章 数字签名与认证技术数字签名与认证技术445.2.2 散列函数的安全性要求散列函数用于数字签名的方式可以分为以下两种。(a) 使用公钥加密及源端私钥仅对散列值进行加密源端A首先使用自己的私钥对散列值进行加密,然后与报文M进行连接形成M|EKRaH(M)发送给目的端B。该方案可提供认证功能,但不能提供机密性。另外,由于仅有源端A能生成M|EKRaH(M),因而提供了数字签名。(b) 使用对称加密对报文和已使用公钥加密的散列值进行加密。该方案在方案(a)的基础上,采用对称
26、加密对报文M和以私钥加密的散列值EKRaH(M)再次进行加密,形成EKM|EKRaH(M),从而在提供数字签名的同时,也提供了机密性。方案(b)是较为常用的散列函数使用方法。第第5章章 数字签名与认证技术数字签名与认证技术455.2.1 安全散列函数的应用(a) 使用公钥加密及源端私钥仅对散列值进行加密第第5章章 数字签名与认证技术数字签名与认证技术465.2.2 散列函数的安全性要求(b) 使用对称加密对报文和已使用公钥加密的散列值进行加密第第5章章 数字签名与认证技术数字签名与认证技术475.2.2 散列函数的安全性要求 使用散列函数的目的是为文件、报文或其他分组数据产生“指纹”。因此可以
27、说,散列函数的首要目标是保证数据的完整性,报文M的任何微小的改变均会导致散列函数值H(M)的变化。第第5章章 数字签名与认证技术数字签名与认证技术485.2.2 散列函数的安全性要求1 散列函数的性质 若期望在安全应用中使用散列函数,则散列函数M必须具有如下性质: H能用于任意大小的数据分组; H产生定长的输出; 对任意给定的x,H(x)要相对易于计算,使得硬件和软件实现成为可能; H应具有单向性(one way),或称为抗原像攻击性(preimage resistant),即对任意给定的散列值h,寻找x使得H(x)=h在计算上是不可行的; H应具有抗弱碰撞性(weak collision r
28、esistant),或称为抗第二原像攻击性,即对任意给定的分组x,寻找yx,使得H(y)=H(x)在计算上是不可行的; H应具有抗强碰撞性(strong collision resistant),即寻找任意的(x,y)对,使得H(x)=H(y)在计算上是不可行的。第第5章章 数字签名与认证技术数字签名与认证技术495.2.2 散列函数的安全性要求 前3个性质是散列函数应用于报文认证和数据签名的实际应用需求,而后3个性质则是散列函数的安全性需求。第第5章章 数字签名与认证技术数字签名与认证技术505.2.2 散列函数的安全性要求 2 针对具有抗弱碰撞性散列函数的攻击 此类攻击问题可以描述为:散列
29、函数H有n个可能的散列值,给定x和散列值H(x),则在散列函数H随机生成的K个散列值中,至少存在一个y使得H(y)=H(x)的概率为0.5时,k的取值是多少?第第5章章 数字签名与认证技术数字签名与认证技术515.2.2 散列函数的安全性要求第第5章章 数字签名与认证技术数字签名与认证技术525.2.2 散列函数的安全性要求第第5章章 数字签名与认证技术数字签名与认证技术535.2.2 散列函数的安全性要求第第5章章 数字签名与认证技术数字签名与认证技术545.2.2 散列函数的安全性要求 3 生日攻击 生日攻击是建立在生日悖论基础上的,具有抗强碰撞性的散列函数对“生日攻击”具有抵抗能力。 所
30、谓生日悖论是指k个人中至少有两个人生日相同的概率大于0.5的最小k值是多少。第第5章章 数字签名与认证技术数字签名与认证技术555.2.2 散列函数的安全性要求第第5章章 数字签名与认证技术数字签名与认证技术565.2.2 散列函数的安全性要求第第5章章 数字签名与认证技术数字签名与认证技术575.2.2 散列函数的安全性要求第第5章章 数字签名与认证技术数字签名与认证技术585.2.2 散列函数的安全性要求第第5章章 数字签名与认证技术数字签名与认证技术595.2.3 MD5报文摘要算法 MD5(Message Digest,Version5)报文摘要算法是经过MD2、MD3、和MD4发展而
31、来的,它将任意长度的报文转变为128位的报文摘要,即假定P为任意长度的报文,h=MD5(P),则h的长度为128位,其本质是将大容量信息在数字签名前被“压缩”成一种保密的格式。第第5章章 数字签名与认证技术数字签名与认证技术605.2.3 MD5报文摘要算法第第5章章 数字签名与认证技术数字签名与认证技术615.2.3 MD5报文摘要算法 添加填充位和报文长度后的数据序列如图所示,它的长度是512位的整数倍。第第5章章 数字签名与认证技术数字签名与认证技术625.2.3 MD5报文摘要算法 2 分组操作 分组操作过程如图5.5所示。MD5将添加填充位和报文长度后的数据序列分割成长度为512位的
32、数据段,每一组数据段单独进行报文摘要运算,报文摘要运算的输入是512位的数据段和前一段数据段进行报文摘要运算后的128位结果,第一段数据段进行报文摘要运算时,需要输入第一段数据段和初始向量IV,初始向量IV和中间结果分别为4个32位的字,分别称为A、B、C和D。初始向量的4个字的初始值如下: A=67452301H B=EFCDAB89H C=98BADCFEH D=10325476H第第5章章 数字签名与认证技术数字签名与认证技术635.2.3 MD5报文摘要算法图5.5 分组操作过程第第5章章 数字签名与认证技术数字签名与认证技术645.2.3 MD5报文摘要算法 3 MD5运算过程 MD
33、5运算过程(如图5.6所示)包含4级运算,每一级运算过程的输入是512位的数据段和上一级的运算的结果,输出是4个32位的字。第1级运算过程输入的4个32位的字是对前一段数据段进行MD5运算得到的结果或是初始向量IV。512位数据段被分成16个32位的字,分别是Mk,015。同时MD5也产生64个32位的常数,分别是Ti,1i64。每一级运算过程进行16次迭代运算,每一次迭代运算都有构成数据段的其中一个字和其中一个常数参加,构成数据段的16字参加每一级的16次迭代运算,但参加每一级16次迭代运算的常数是不同的,参加第i级16次迭代运算的常数是Tj (i-1)x16+1jix16)。第第5章章 数
34、字签名与认证技术数字签名与认证技术655.2.3 MD5报文摘要算法第第5章章 数字签名与认证技术数字签名与认证技术665.2.3 MD5报文摘要算法第第5章章 数字签名与认证技术数字签名与认证技术675.2.3 MD5报文摘要算法图5.6 MD5运算过程第第5章章 数字签名与认证技术数字签名与认证技术685.2.3 MD5报文摘要算法 最后一级输出的4个32位字和作为这次MD5运算输入的前一段数据段的MD5运算结果逐字相加,产生这一段数据段的MD5运算结果。最后一段数据段的MD5结果作为报文的报文摘要。第第5章章 数字签名与认证技术数字签名与认证技术695.2.3 MD5报文摘要算法第一级运
35、算过程的16次迭代运算FF(a,b,c,d,M0,7,1)FF(d,a,b,c,M1,12,2)FF(c,d,a,b,M2,17,3)FF(b,c,d,a,M3,22,4)FF(a,b,c,d,M47,5)FF(d,a,b,c,M5,12,6)FF(c,d,a,b,M6,17,7)FF(b,c,d,a,M7,22,8)FF(a,b,c,d,M8,7,9)FF(d,a,b,c,M9,12,10)FF(c,d,a,b,M10,17,11)FF(b,c,d,a,M11,22,12)FF(a,b,c,d,M12,713)FF(d,a,b,c,M13,12,14)FF(c,d,a,b,M14,17,15
36、)FF(b,c,d,a,M15,22,16)第二级运算过程的16次迭代运算GG(a,b,c,d,M1,5,17)GG(d,a,b,c,M6,9,18)GG(c,d,a,b,M11,14,19)GG(b,c,d,a,M0,20,20)GG(a,b,c,d,M5,5,21)GG(d,a,b,c,M10,9,22)GG(c,d,a,b,M15,14,23)GG(b,c,d,a,M4,20,24)GG(a,b,c,d,M9,5,25)GG(d,a,b,c,M14,9,26)GG(c,d,a,b,M3,14,27)GG(b,c,d,a,M8,20,28)GG(a,b,c,d,M13,5,29)GG(d,
37、a,b,c,M2,9,30)GG(c,d,a,b,M7,14,31)GG(b,c,d,a,M12,20,32)第三级运算过程的16次迭代运算HH(a,b,c,d,M5,4,33)HH(d,a,b,c,M8,11,34)HH(c,d,a,b,M11,16,35)HH(b,c,d,a,M14,23,36)HH(a,b,c,d,M1,4,37)HH(d,a,b,c,M4,11,38)HH(c,d,a,b,M7,16,39)HH(b,c,d,a,M10,23,40)HH(a,b,c,d,M13,4,41)HH(d,a,b,c,M0,11,42)HH(c,d,a,b,M3,16,43)HH(b,c,d,
38、a,M6,23,44)HH(a,b,c,d,M9,4,45)HH(d,a,b,c,M12,11,46)HH(c,d,a,b,M15,16,47)HH(b,c,d,a,M2,23,48)第四级运算过程的16次迭代运算II(a,b,c,d,M0,6,49)II(d,a,b,c,M7,10,50)II(c,d,a,b,M14,15,51)II(b,c,d,a,M5,21,52)II(a,b,c,d,M12,6,53)II(d,a,b,c,M3,10,54)II(c,d,a,b,M10,15,55)II(b,c,d,a,M1,21,56)II(a,b,c,d,M8,6,57)II(d,a,b,c,M1
39、5,10,58)II(c,d,a,b,M6,15,59)II(b,c,d,a,M13,21,60)II(a,b,c,d,M4,6,61)II(d,a,b,c,M11,10,62)II(c,d,a,b,M2,15,63)II(b,c,d,a,M9,21,64)表5.1 MD5运算过程第第5章章 数字签名与认证技术数字签名与认证技术705.2.4 SHA-1安全散列算法 安全散列算法第1版(Secure Hash Algorithm 1,SHA)和MD5非常相似,主要有两点不同。 初始向量IV和每一段数据段经过SHA-1运算后的结果为5个32位的字,即160位,而不是128位。这样,对于任何报文X
40、,找出另一个报文Y,XY,但MD(X)=MD(Y)的可能性更低。SHA-1初始向量的前4个字的值和MD5相同,第5个字的值为: E=C3D2E1F0H第第5章章 数字签名与认证技术数字签名与认证技术715.2.4 SHA-1安全散列算法第第5章章 数字签名与认证技术数字签名与认证技术725.2.4 SHA-1安全散列算法第第5章章 数字签名与认证技术数字签名与认证技术735.2.4 SHA-1安全散列算法 每一级运算时使用的常数Ki如下: K1=5A827999H K2=6ED9EBA1H K3=8F1BBCDCH K4=CA62C1D6H第第5章章 数字签名与认证技术数字签名与认证技术745
41、.3 认证技术 5.3.1 用户认证原理 5.3.2 信息认证技术 5.3.3 PKI技术 5.3.4 基于PKI的RBAC模型与实现第第5章章 数字签名与认证技术数字签名与认证技术755.3.1 用户认证原理 当人们在住宿、求职、登机、银行存款等时,通常要出示自己的身份证(如果出国,则是护照)来证明自己的身份。但是,如果警察要求你出示身份证以证明你的身份,按照规定,警察必须首先出示自己的证件来证明自身的身份。前者是一方向另一方证明身份,而后者则是对等双方相互证明自己的身份。第第5章章 数字签名与认证技术数字签名与认证技术765.3.1 用户认证原理 如果A要登录某服务器(ATM,计算机或其他
42、类型的终端),服务器怎么知道登录的人就是A而不是其他的人呢?传统的方法(现在大多数情况下仍然是这样)是用口令来解决这个问题。A必须输入他的用户名(或ID)和口令,服务器将它们与保存在主机数据库中的口令表进行匹配,如果匹配成功,表明登录的人就是A。这里存在着一个明显的安全隐患,如果口令表被偷窥(黑客或者系统管理员都有可能),就会产生严重的后果。第第5章章 数字签名与认证技术数字签名与认证技术775.3.1 用户认证原理 使用单向函数可以解决这个问题,假定服务器保存每个用户口令的单向函数值,则认证协议如下: A将自己的用户名和口令传送给服务器; 服务器计算出口令的单向函数值; 服务器将用户名和单向
43、函数值与口令表中的值进行匹配。第第5章章 数字签名与认证技术数字签名与认证技术785.3.1 用户认证原理 这个协议从理论上讲是可行的,可惜它很脆弱,很难经受字典式攻击,主要原因是口令一般较短,只有8个字节。对该协议最简单的改进,就是将口令与一个称作salt的随机字符串连接在一起,再用单向函数对其进行运算,而服务器保存用户名、salt值和对应的单向函数值。例如,大多数UNIX系统使用12位的salt。第第5章章 数字签名与认证技术数字签名与认证技术795.3.1 用户认证原理 不幸的是,Daniel Klein开发了一个猜测口令的程序,在大约一个星期里,经常能破译出一个给定系统中的40的口令。
44、而David Fedmerier和Philip Karn编辑了一份包含732000个口令的口令表,表中的口令与4096个可能的salt值中的每一个值都有关联。估计利用这张表可以破译出一个给定系统口令表中的30的口令。这表明,增加salt的位数不能解决所有的问题,它可以防止对口令表实施字典式攻击,但不能防止对单个口令的攻击。第第5章章 数字签名与认证技术数字签名与认证技术805.3.1 用户认证原理 有一种称为S/KEY的一次使用口令的方法,它基于单向函数的安全性。用户A预先产生一串口令:A首先输入随机数R,服务器使用单向函数f和R,计算出N (例如N=100)个口令Pk(1kN),其中P0=R
45、,Pk=f(Pk-1),服务器将PN+1和A的用户名一起保存在口令表中,并将P k依次打印出来交由A保存。A在第一次登录时使用PN作为自己的口令,服务器则根据用户名和f(PN)在口令表中寻找匹配,如果匹配成功,那么证明A的身份是真的,同时服务器用PN代替口令表中的PN+1,用户A则将PN从自己的口令串中划掉。第第5章章 数字签名与认证技术数字签名与认证技术815.3.1 用户认证原理 A在每一次登录时总是使用下标最大的那个口令,并在使用后把它从自己的口令串中划掉;服务器在每一次认证时总是计算f(Pk),再在口令表中寻找匹配,并用当前的口令Pk替换掉先前的Pk +1。当A的口令串用完时,A必须请
46、求服务器为自己再产生一串口令。该协议的优点是,服务器中的口令表以及通信线路中传输的口令对于攻击者来说毫无意义。其缺点是异地使用起来不方便。第第5章章 数字签名与认证技术数字签名与认证技术825.3.1 用户认证原理 另一种方法是使用非对称密钥系统,登录系统时,按如下协议进行认证: 服务器发送一个随机数R给A; A用自己的私钥对R加密,得到R1并将它和用户名一起回传给服务器; 服务器根据用户名在数据库中找到A的公钥,用它解密R1,得到R2; 如果R2=R,则A登录成功。 该协议可以有效地对付窃听或偷窥,但A所使用的终端必须具有计算的能力。第第5章章 数字签名与认证技术数字签名与认证技术835.3
47、.2 信息认证技术 信息认证技术是网络信息安全技术的一个重要方面,它用于保证通信双方的不可抵赖性和信息的完整性。在Internet深入发展和普遍应用的时代,信息认证显得十分重要。 例如,在网络银行、电子商务等应用中,对于所发生的业务或交易,我们可能并不需要保密交易的具体内容,但是交易双方应当能够确认是对方发送(接收)了这些信息,同时接收方还能确认接收的信息是完整的,即在通信过程中没有被修改或替换。 再如,在电子政务应用中,通过网络发送(传输)信息(数字文件),此时接收方主要关心的是信息真实性和信息来源的可靠性。第第5章章 数字签名与认证技术数字签名与认证技术845.3.2 信息认证技术 1 基
48、于私钥密码体制的信息认证 假设通信双方为A和B。A、B共享的密钥为KAB,M为A发送给B的信息。为防止信息M在传输信道被窃听,A将M加密后再传送,如图5.7所示。图5.7基于私钥的基本信息认证机制第第5章章 数字签名与认证技术数字签名与认证技术855.3.2 信息认证技术 由于KAB为用户A和B的共享密钥,所以用户B可以确定信息M是由用户A所发出的。因此,这种认证方法可以对信息来源进行认证,而且它在认证的同时对信息M也进行了加密。这种方法的缺点是不能提供信息完整性的鉴别。第第5章章 数字签名与认证技术数字签名与认证技术865.3.2 信息认证技术 通过引入单向hash函数,可以解决信息完整性的
49、签别检测问题,如图5.8所示。图5.8(a) 基于私钥的信息认证机制第第5章章 数字签名与认证技术数字签名与认证技术875.3.2 信息认证技术图5.8(b)(c) 基于私钥的信息认证机制第第5章章 数字签名与认证技术数字签名与认证技术885.3.2 信息认证技术 在图5.8(a)的信息认证机制中,用户A首先对信息M求hash值H(M),然后将MH(M)加密后传送给用户B。用户B通过解密并验证附于信息M之后的hash值是否正确。图5.8 (b)的信息认证机制和5.8 (a)的信息认证机制唯一不同的地方是对hash值加密。 而在图5.8 (c)的信息认证机制中,则使用一种带密钥的hash函数H(
50、H可取为ANSI X9.9标准中规定的DES CBC模式,KAB为DES的加密密钥,DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法),函数H以M和KAB为参数。图5.8 (c)的信息认证机制与图5.8 (b)的信息认证机制主要区别在于产生信息认证码(MAC)的方式不同。图5.8给出的三种信息认证方案均实现信息来源和完整性的认证。第第5章章 数字签名与认证技术数字签名与认证技术895.3.2 信息认证技术 基于私钥的信息认证机制的优点是速度较快,缺点是通信双方A和B需要事先约定共享密钥KAB ,而且如果用户A需要与其他n个用户进行秘密通信