1、第第3 3章章 认证与数字签名认证与数字签名(下)(下)信息安全系信息安全系主要内容主要内容v认证基本概念认证基本概念 v身份认证身份认证 v消息认证消息认证v数字签名数字签名 没有消息认证的通信系统是极为危险的没有消息认证的通信系统是极为危险的 需求需求1.1.泄密:泄密:将消息透露给没有合法秘密钥的任何人或程序。将消息透露给没有合法秘密钥的任何人或程序。2.2.传输分析:传输分析:分析通信双方的通信模式,如连接频率,时间等分析通信双方的通信模式,如连接频率,时间等3.3.伪装:伪装:攻击者产生一条消息并声称来自某合法实体攻击者产生一条消息并声称来自某合法实体4.4.内容修改:内容修改:对消
2、息进行插入、删除、转化、修改对消息进行插入、删除、转化、修改5.5.顺序修改:顺序修改:对消息顺序进行插入、删除、重新排序对消息顺序进行插入、删除、重新排序6.6.计时修改:计时修改:对消息的延时和重放对消息的延时和重放7.7.发送方否认发送方否认8.8.接受方否认接受方否认v对付对付1 1、2 2可用加密;可用加密;v对付对付3 3、4 4、5 5、6 6可用消息认证;可用消息认证;v对付对付7 7、8 8可用数字签名可用数字签名消息认证消息认证(Message Authentication)(Message Authentication)v消息认证用于抗击主动攻击消息认证用于抗击主动攻击v
3、验证接收消息的真实性和完整性验证接收消息的真实性和完整性v真实性真实性的确是由所声称的实体发过来的的确是由所声称的实体发过来的v完整性完整性未被篡改、插入和删除未被篡改、插入和删除v验证消息的顺序性和时间性(未重排、重放验证消息的顺序性和时间性(未重排、重放和延迟)和延迟)消息认证的基本概念消息认证的基本概念v认证符认证符:一个用来认证消息的值。由消息的:一个用来认证消息的值。由消息的发送方产生认证符,并传递给接收方。发送方产生认证符,并传递给接收方。v认证函数认证函数:产生认证符的函数,认证函数实:产生认证符的函数,认证函数实际上代表了一种产生认证符的方法。际上代表了一种产生认证符的方法。消
4、息加密函数消息加密函数消息认证码消息认证码HashHash函数函数消息加密函数消息加密函数v对消息的自身加密所得到的密文,可以作为对消息的自身加密所得到的密文,可以作为一个认证的度量。一个认证的度量。v消息认证符:消息认证符:用完整信息的密文作为对信息用完整信息的密文作为对信息鉴别的认证符。鉴别的认证符。v既可以使用对称加密模式,也可以使用公钥既可以使用对称加密模式,也可以使用公钥加密模式作为消息加密函数,两者有所不同。加密模式作为消息加密函数,两者有所不同。消息加密函数消息加密函数-在对称加密体制下在对称加密体制下v在对称加密体制下,发送者在对称加密体制下,发送者A A和接收者和接收者B B
5、双方共同拥有密钥,双方共同拥有密钥,A A把加密过的信息传送给把加密过的信息传送给B B,如上图所示。如上图所示。v由于攻击者不知道密钥由于攻击者不知道密钥K K,他也就不知道如何改变密文中的,他也就不知道如何改变密文中的信息位才能在明文中产生预期的改变。信息位才能在明文中产生预期的改变。v因此,接收方因此,接收方B B只要能顺利解出明文,就知道信息在中途没只要能顺利解出明文,就知道信息在中途没有被人更改过。可以根据解密后的明文是否具有合理的语法有被人更改过。可以根据解密后的明文是否具有合理的语法结构来进行消息认证。结构来进行消息认证。MEKEK(M)DKM消息加密函数消息加密函数-在对称加密
6、体制下在对称加密体制下v问题:问题:但有时发送的明文本身并没有明显的语法结构或特征,但有时发送的明文本身并没有明显的语法结构或特征,例如二进制文件,因此很难确定解密后的消息就是明文本身。例如二进制文件,因此很难确定解密后的消息就是明文本身。v为了解决这个问题,要求明文具有某种易于识别的结构,并为了解决这个问题,要求明文具有某种易于识别的结构,并且不通过加密函数是无法重复这个结构的。且不通过加密函数是无法重复这个结构的。v最简单的办法是在加密前对消息附加一个最简单的办法是在加密前对消息附加一个错误检测码错误检测码FCSFCS,或称帧校验序列、校验和。或称帧校验序列、校验和。MEKEK(M)DKM
7、根据明文根据明文M M和公开的函数和公开的函数F F产生产生FCSFCS。把把M M和和FCSFCS合在一起加密,并传输。合在一起加密,并传输。接收端把密文解密,得到接收端把密文解密,得到M M。根据得到的根据得到的M M,按照,按照F F计算计算FCSFCS,并与接收到的,并与接收到的FCSFCS比较是否相比较是否相等。等。注:注:如果攻击者修改了密文,则接收者计算出来的如果攻击者修改了密文,则接收者计算出来的FCSFCS与其收与其收到的到的FCSFCS将无法匹配。将无法匹配。MFFMFCS比较EK|()KEMF MDKMFCS内部错误控制内部错误控制v这里,加密函数和这里,加密函数和F函数
8、的执行顺序非常重要。函数的执行顺序非常重要。v由于函数由于函数F是公开的,若先加密再计算是公开的,若先加密再计算FCS,则则攻击者可以构造具有正确错误控制码的消息,虽攻击者可以构造具有正确错误控制码的消息,虽然攻击者不知道解密后的明文,但可以造成混淆然攻击者不知道解密后的明文,但可以造成混淆并破坏通信。并破坏通信。()KEMMFFCSEK()KF EMDKM外部错误控制外部错误控制F比较()KEM消息加密消息加密-在公钥加密体制下在公钥加密体制下v发送方发送方A A用接收方用接收方B B的公钥对消息加密,然后的公钥对消息加密,然后传输给传输给B B。vB B用自己的私钥解密。用自己的私钥解密。
9、MEKUbEKUb(M)DKRbMAB消息加密消息加密-在公钥加密体制下在公钥加密体制下v由于大家都知道由于大家都知道B B的公钥,任何人都可以向的公钥,任何人都可以向B B发送消发送消息,所以息,所以B B无法确认消息的来源和内容的真实性。无法确认消息的来源和内容的真实性。v因此,这种方式因此,这种方式不提供认证,只提供加密。不提供认证,只提供加密。MEKUbEKUb(M)DKRbMI.I.普通加密普通加密AB消息加密消息加密-在公钥加密体制下在公钥加密体制下v发送方发送方A A用自己的私钥进行加密,然后传输给接收用自己的私钥进行加密,然后传输给接收方方B B。vB B用用A A的公钥解密。
10、的公钥解密。v如果如果B B能够用能够用A A的公钥解密,则说明该消息的确是由的公钥解密,则说明该消息的确是由A A发送的,且消息内容没有被篡改。发送的,且消息内容没有被篡改。MEKRaEKRa(M)DKUaMAB消息加密消息加密-在公钥加密体制下在公钥加密体制下v由于只有由于只有A A有用于产生有用于产生E EKRaKRa(M)(M)的密钥,所以此方法的密钥,所以此方法提供认证提供认证。v由于大家都有由于大家都有K KUaUa ,所以此方法,所以此方法不提供加密不提供加密。MEKRaEKRa(M)DKUaMII.II.认证和签名认证和签名AB消息加密消息加密-在公钥加密体制下在公钥加密体制下
11、v提供认证和加密提供认证和加密。v一次通信中要执行四次复杂的公钥算法,计算代价一次通信中要执行四次复杂的公钥算法,计算代价非常高。非常高。v所以,第二、三两种方法一般在认证时极少应用。所以,第二、三两种方法一般在认证时极少应用。MEKRaEKRa(M)DKUaMIII.III.加密认证和签名加密认证和签名ABEKUbEKUb(EKRa(M)DKRbEKRa(M)消息认证码消息认证码(MAC)(MAC)vMessage Authenticaion CodeMessage Authenticaion Code,也称为,也称为报文报文鉴别码或是消息鉴别码鉴别码或是消息鉴别码。v消息认证码是消息和密钥
12、的公开函数,它产消息认证码是消息和密钥的公开函数,它产生定长的值,以该值作为认证符。生定长的值,以该值作为认证符。v这种这种机制的核心机制的核心是一个类似于加密的算法是一个类似于加密的算法C CK K。该算法需要使用一个密钥,并以需要认证的该算法需要使用一个密钥,并以需要认证的消息作为输入,算法的输出值是一个较短的消息作为输入,算法的输出值是一个较短的定长数据分组,也就是定长数据分组,也就是MACMAC,即:,即:MAC=CMAC=CK K(M M)消息认证码用于认证消息认证码用于认证vA A和和B B共享密钥共享密钥K KvA A计算计算MAC=CMAC=Ck k(M),(M),vM M和和
13、MACMAC一起发送到一起发送到B BvB B对收到的对收到的M M,计算,计算MACMAC,比较两个,比较两个MACMAC是否相同。是否相同。()KCMMCMACKC比较MKMAC如果两个如果两个MACMAC相等,则:相等,则:1.1.接收方可以相信消息未被修改,因为如果攻击者改变了消接收方可以相信消息未被修改,因为如果攻击者改变了消息,由于不知道息,由于不知道k k,无法生成正确的,无法生成正确的MACMAC。2.2.接收方可以相信消息的确来自确定的发送方。因为其他人接收方可以相信消息的确来自确定的发送方。因为其他人不能生成和原始消息相应的不能生成和原始消息相应的MACMAC。MACMAC
14、函数与加密函数的区别函数与加密函数的区别vMACMAC函数与加密函数类似,都需要明文、密钥和算函数与加密函数类似,都需要明文、密钥和算法的参与。法的参与。v而而两者的差别在于两者的差别在于:加密算法必须是:加密算法必须是可逆可逆的,对的,对其结果能够解密;而其结果能够解密;而MACMAC算法算法不要求可逆性不要求可逆性,甚至,甚至可以是一个单向函数。可以是一个单向函数。v例如:例如:使用使用100100比特的消息和比特的消息和1010比特的比特的MACMAC,那么,那么总共有总共有2 2100100个不同的消息,但仅有个不同的消息,但仅有2 21010个不同的个不同的MACMAC。也就是说,平
15、均每也就是说,平均每2 29090个消息使用的个消息使用的MACMAC是相同的。是相同的。消息认证码的基本用途消息认证码的基本用途v消息认证码消息认证码只提供消息认证,不提供保密性。只提供消息认证,不提供保密性。v若要提供保密性,可以结合加密体制,从而同时若要提供保密性,可以结合加密体制,从而同时提供消息认证和保密性:提供消息认证和保密性:M|CK1CMCK(M)K1比较EK2)(|12MCMEKKDK2ABA A和和B B共享共享K1K1和和K2K2K1K1:用于生成:用于生成MACMACK2K2:用于加密:用于加密与明文有关的认证与明文有关的认证消息认证码的基本用途消息认证码的基本用途v提
16、供消息认证和保密性:提供消息认证和保密性:ABA A和和B B共享共享K1K1和和K2K2K1K1:用于生成:用于生成MACMACK2K2:用于加密:用于加密与密文有关的认证与密文有关的认证M|CK1CK1比较EK2)(21MECKKDK2消息认证码的基本用途消息认证码的基本用途 问题:问题:为什么要专门找为什么要专门找MACMAC函数来提供认证,而不函数来提供认证,而不直接使用加密方法来提供认证呢?直接使用加密方法来提供认证呢?原因有三:原因有三:(1 1)信息加密主要是提供机密性而非真实性。)信息加密主要是提供机密性而非真实性。(2 2)加密计算的代价大,特别是当信息内容比较)加密计算的代
17、价大,特别是当信息内容比较长的时候,加密所占用的资源太多。长的时候,加密所占用的资源太多。(3 3)认证函数与加密函数的分离能提供功能上的)认证函数与加密函数的分离能提供功能上的灵活性。有时只需提供机密性,而不需要提供真灵活性。有时只需提供机密性,而不需要提供真实性;有时只需要真实性,不需要机密性。实性;有时只需要真实性,不需要机密性。基于基于DESDES的消息认证码的消息认证码v使用最广泛的使用最广泛的MACMAC算法之一:数据认证算法算法之一:数据认证算法v算法基于算法基于密文块链接密文块链接(CBCCBC)模式的)模式的DESDES算法,算法,计算数据认证码计算数据认证码DACDAC的的
18、过程如下过程如下:把需要认证的数据分成连续的把需要认证的数据分成连续的6464位的分组。位的分组。若最后一个分组不是若最后一个分组不是6464位,则填位,则填0 0利用利用DESDES加密算法加密算法E E和密钥和密钥K K,计算认证码。,计算认证码。112213321()()()()KKKNKNNOEDOEDOOEDOOEDODAC可以取整个可以取整个ON块,或者取为块,或者取为ON的最左的最左M个比特。个比特。DAC M-bits(16 to 64 bits)HashHash函数函数(杂凑函数、散列函数杂凑函数、散列函数)vHashHash的特点:的特点:与消息认证码一样与消息认证码一样,
19、hashhash函数的输入是长度可变的消息函数的输入是长度可变的消息M M,输出是固定大小的输出是固定大小的hashhash码码H(M)H(M),或称消息摘要,或称消息摘要(Message(Message Digest)Digest)、hashhash值。值。与消息认证码不同的是与消息认证码不同的是,hashhash码的产生过程中并不使用码的产生过程中并不使用密钥。密钥。HashHash码是所有消息的函数,改变消息的任何一位或多位,码是所有消息的函数,改变消息的任何一位或多位,都会导致都会导致hashhash码的改变。码的改变。HashHash算法通常是公开的。算法通常是公开的。又称为:哈希函
20、数、数字指纹(又称为:哈希函数、数字指纹(Digital finger print)Digital finger print)、压缩(压缩(Compression)Compression)函数、紧缩(函数、紧缩(Contraction Contraction)函数、)函数、数据鉴别码数据鉴别码DACDAC(Data authentication codeData authentication code)、篡改检)、篡改检验码验码MDC(Manipulation detection code)MDC(Manipulation detection code)h=H(M)h=H(M)v假定两次输入同
21、样的数据,那么散列函数应该能够假定两次输入同样的数据,那么散列函数应该能够生成相同的散列值。输入数据中的一位发生了变化,生成相同的散列值。输入数据中的一位发生了变化,会导致生成的散列值完全不一样。会导致生成的散列值完全不一样。v散列函数有个非常重要的特性为散列函数有个非常重要的特性为单向性单向性,也就是从,也就是从M M计算计算h h容易,而从容易,而从h h计算计算M M不可能。不可能。迭代型迭代型hashhash函数的一般结构函数的一般结构fffY0Y1YL-1bbbnnnnnIV=CV0CV1CVL-1CVL明文M被分为L个分组Y0,Y1,YL-1b:明文分组长度n:输出hash长度CV
22、:各级输出,最后一个输出值是hash值无碰撞压缩函数f是设计的关键迭代型迭代型hashhash函数函数v这种结构的这种结构的hashhash函数已被证明是合理的,如果采用函数已被证明是合理的,如果采用其他结构,不一定安全。其他结构,不一定安全。v设计新的设计新的hashhash函数只是改进这种结构,或者增加函数只是改进这种结构,或者增加hashhash码长。码长。v算法的核心技术算法的核心技术是设计无碰撞的压缩函数是设计无碰撞的压缩函数f f,而敌,而敌手对算法的攻击重点是手对算法的攻击重点是f f的内部结构,由于的内部结构,由于f f和分组和分组密码一样是由若干轮处理过程组成,所以对密码一样
23、是由若干轮处理过程组成,所以对f f的攻的攻击需通过对各轮之间的位模式的分析来进行,分析击需通过对各轮之间的位模式的分析来进行,分析过程常常需要先找出过程常常需要先找出f f的碰撞。由于的碰撞。由于f f是压缩函数,是压缩函数,其碰撞是不可避免的,其碰撞是不可避免的,因此在设计因此在设计f f时就应保证找时就应保证找出其碰撞在计算上是不可行的出其碰撞在计算上是不可行的。MD5 hashMD5 hash算法算法MD5 Hash AlgorithmMD5 Hash Algorithm MD4MD4是是MD5MD5杂凑算法的前身,由杂凑算法的前身,由Ron RivestRon Rivest于于199
24、01990年年1010月作为月作为RFCRFC提出,提出,19921992年年4 4月公布的月公布的MD4MD4的改进(的改进(RFC RFC 13201320,13211321)称为)称为MD5MD5。MD5MD5的算法框图的算法框图v输入消息可任意长,压缩后输出为输入消息可任意长,压缩后输出为128bits128bits。算法步骤算法步骤(1)(1)分组填充分组填充 消息100064bit消息长度填充图样L512bitKbitv如果消息长度大于如果消息长度大于2 26464,则取其对,则取其对2 26464的模。的模。v执行完后,消息的长度为执行完后,消息的长度为512512的倍数(设为的
25、倍数(设为L L倍),则可将消倍),则可将消息表示为分组长为息表示为分组长为512512的一系列分组的一系列分组Y Y0 0,Y Y1 1,Y YL-1L-1,而每,而每一分组又可表示为一分组又可表示为1616个个3232比特比特长的字,这样消息中的总字数长的字,这样消息中的总字数为为N=LN=L1616,因此消息又可按字表示为,因此消息又可按字表示为M0,M0,N-1,N-1。算法步骤算法步骤(2)(2)缓冲区初始化缓冲区初始化 hashhash函数的中间结果和最终结果保存于函数的中间结果和最终结果保存于128128位位的缓冲区中,缓冲区用的缓冲区中,缓冲区用3232位位的寄存器表示。可的寄
26、存器表示。可用用4 4个个32bits32bits字表示:字表示:A,B,C,DA,B,C,D。初始存数以十。初始存数以十六进制表示为六进制表示为A A=01234567=01234567B B=89=89ABCDEFABCDEFC C=FEDCBAFEDCBA9898D D=76543210=76543210算法步骤算法步骤(3)-(3)-H HMD5MD5运算运算v以分组为单位对消息进行处理每一分组以分组为单位对消息进行处理每一分组Y Yq q(q=0,(q=0,L-1),L-1)都经一压缩函数都经一压缩函数H HMD5MD5处理。处理。H HMD5MD5是算是算法的核心,其中又有法的核心
27、,其中又有4 4轮轮处理过程。处理过程。vH HMD5MD5的的4 4轮轮处理过程结构一样,但所用的逻辑函数不处理过程结构一样,但所用的逻辑函数不同,分别表示为同,分别表示为F F、G G、H H、I I。每轮的输入为当前处。每轮的输入为当前处理的消息分组理的消息分组Y Yq q和缓冲区的当前值和缓冲区的当前值A A、B B、C C、D D,输,输出仍放在缓冲区中以产生新的出仍放在缓冲区中以产生新的A A、B B、C C、D D。v每轮又要进行每轮又要进行1616步步迭代运算,迭代运算,4 4轮轮共需共需6464步步完成。完成。v第四轮的输出与第一轮的输入相加得到最后的输出。第四轮的输出与第一
28、轮的输入相加得到最后的输出。算法步骤算法步骤(4)(4)输出输出v所有的所有的L L个个512512位分组都处理完后,最后一个位分组都处理完后,最后一个分组的输出即为分组的输出即为128128位的消息摘要。位的消息摘要。MD5MD5的压缩函数的压缩函数v在压缩算法的在压缩算法的4 4次循环处理中,每一循环均需次循环处理中,每一循环均需要一个原始逻辑函数:要一个原始逻辑函数:F F,G G,H H,L L。v所有原始逻辑函数的输入都是所有原始逻辑函数的输入都是3 3个个字长为字长为3232位位的字(分别用的字(分别用b b,c c,d d表示),并产生一个字表示),并产生一个字长长3232位的字
29、作为输出。位的字作为输出。v原始逻辑函数执行的是原始逻辑函数执行的是一组按位逻辑操作一组按位逻辑操作,定义如后表。定义如后表。基本逻辑函数定义基本逻辑函数定义 轮基本函数gg(b,c,d)fFF(b,c,d)(bc)V(bd)fGG(b,c,d)(bd)V(c d)fHH(b,c,d)b c dfII(b,c,d)c (b V d)其中,其中,b,c,d分别表示寄存器分别表示寄存器B、C、D中的内容;中的内容;运算运算、分别表示逻辑操作分别表示逻辑操作AND、OR、XOR、NOT。压缩函数处理过程压缩函数处理过程v为了实现对数据的压缩,正在处理的为了实现对数据的压缩,正在处理的512512位位
30、数据分数据分组组Y Yq q被进一步划分成被进一步划分成1616个个3232位位的小段,用的小段,用XkXk表示表示(k k=0,1,=0,1,15,15).v在算法的每一个循环中,需要对缓存器在算法的每一个循环中,需要对缓存器A A、B B、C C、D D进行进行1616步步操作;每步操作的通用形式为:操作;每步操作的通用形式为:b b=b b+(+(a a+g g(b,c,db,c,d)+X)+Xk k+T+Ti is s)v其中:其中:a a,b,c,db,c,d分别代表缓冲区分别代表缓冲区A A、B B、C C、D D中的内中的内容;容;g()g()代表原始逻辑函数代表原始逻辑函数F
31、F、G G、H H、I I中的一个;中的一个;s s表示对表示对3232位位字进行循环左移位;字进行循环左移位;XXk k 表示表示Y Yq q中的第中的第k k个个3232位位字;字;TTi i 表示常数表中的第表示常数表中的第i i个元个元素。其中的加法均为素。其中的加法均为3232位位的加法。的加法。压缩函数中的一步迭代压缩函数中的一步迭代XXk k v当前分组的第当前分组的第k k个个3232位的字。位的字。v在一个循环中,在一个循环中,1616个个3232比特的分段比特的分段XXk k 均被使用均被使用一次;但在不同的循环中,一次;但在不同的循环中,XXk k 被使用的顺序是被使用的
32、顺序是不同的不同的。如下表所示:。如下表所示:第1轮 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11x12x13x14x15第2轮 x1 x6 x11 x0 x5 x10 x15 x4 x9 x14 x3 x8 x13 x2 x7 x12第3轮 x5 x8 x11x14 x1 x4 x7 x10 x13 x0 x3 x6 x9 x12x15 x2第4轮 x0 x7 x14 x5 x12 x3 x10 x1 x8 x15 x6 x13 x4 x11 x2 x9TiTiv常数表常数表T T的作用的作用是对算法的每一个操作步骤增是对算法的每一个操作步骤增加不同的附加限制。
33、加不同的附加限制。vT1,T1,64,64为为6464个元素表,分四组参与不同轮个元素表,分四组参与不同轮的计算。的计算。v常数表是采用常数表是采用正弦函数正弦函数构建的。构建的。TTi i 为为2 23232abs(Sin(abs(Sin(i i)的整数部分,的整数部分,i i是弧度。是弧度。TTi i 可用可用32 bit32 bit二元数表示,二元数表示,T T是是32 bit32 bit随机数源。随机数源。T1=d76aa478T17=f61e2562T33=fffa3942T49=f4292244T2=e8c7b756T18=c040b340T34=8771f681T50=432af
34、f97T3=242070dbT19=265e5a51T35=6d9d6122T51=ab9423a7T4=c1bdceeeT20=e9b6c7aaT36=fde5380cT52=fc93a039T5=f57c0fafT21=d62f105dT37=a4beea44T53=655b59c3T6=4787c62aT22=02441453T38=4bdecfa9T54=8f0ccc92T7=a8304613T23=d8a1e681T39=f6bb4b60T55=ffeff47dT8=fd469501T24=e7d3fbc8T40=bebfbc70T56=85845dd1T9=698098d8T25=
35、21e1cde6T41=289b7ec6T57=6fa87e4fT10=8b44f7afT26=c33707d6T42=eaa127faT58=fe2ce6e0T11=ffff5bb1T27=f4d50d87T43=d4ef3085T59=a3014314T12=895cd7beT28=455a14edT44=04881d05T60=4e0811a1T13=6b901122T29=a9e3e905T45=d9d4d039T61=f7537e82T14=fd987193T30=fcefa3f8T46=e6db99e5T62=bd3af235T15=a679438eT31=676f02d9T47=
36、1fa27cf8T63=2ad7d2bbT16=49b40821T32=8d2a4c8aT48=c4ac5665T64=eb86d391CLSCLSs s:循环左移:循环左移s s位位v第一轮:第一轮:7 7、1212、1717、2222v第二轮:第二轮:5 5、9 9、1414、2020v第三轮:第三轮:4 4、1111、1616、2323v第四轮:第四轮:6 6、1010、1515、2121MD-5MD-5的安全性的安全性vMD-5MD-5的输出为的输出为128-bit128-bit,若采用纯强力攻,若采用纯强力攻击寻找一个消息具有给定击寻找一个消息具有给定HashHash值的计算值的计算
37、困难性为困难性为2 2128128,用每秒可试验,用每秒可试验1 000 000 1 000 000 000000个消息的计算机需时个消息的计算机需时1.071.0710102222年。年。v采用生日攻击法,找出具有相同散列值采用生日攻击法,找出具有相同散列值的两个消息需执行的两个消息需执行2 26464次运算。次运算。主要内容主要内容v认证基本概念认证基本概念 v身份认证身份认证 v消息认证消息认证v数字签名数字签名 消息认证码的不足消息认证码的不足v可以保护通信双方以防止第可以保护通信双方以防止第3 3者攻击,不能保者攻击,不能保护通信双方中一方防止另一方的欺骗和伪造。护通信双方中一方防止
38、另一方的欺骗和伪造。B B伪造一个消息并使用与伪造一个消息并使用与A A共享的密钥产生该消息共享的密钥产生该消息的认证码,然后生成该消息来自于的认证码,然后生成该消息来自于A AB B有可能伪造有可能伪造A A发来的消息,所以发来的消息,所以A A就可以对自己就可以对自己发过的消息予以否认发过的消息予以否认数字签名的基本概念数字签名的基本概念v数字签名由公钥密码发展而来,它在网络安数字签名由公钥密码发展而来,它在网络安全,包括身份认证、数据完整性、不可否认全,包括身份认证、数据完整性、不可否认性以及匿名性等方面有着重要应用。性以及匿名性等方面有着重要应用。手写签名的特征手写签名的特征v签名是可
39、信的签名是可信的v签名是不可伪造的签名是不可伪造的v签名不可重用签名不可重用v签名后的文件是不可变的签名后的文件是不可变的v签名是不可抵赖的签名是不可抵赖的简单扫描手写签名不能满足要求简单扫描手写签名不能满足要求 v对数字签名的要求对数字签名的要求 要保证能够验证作者及其签名的日期时间要保证能够验证作者及其签名的日期时间必须能够认证签名时刻的内容必须能够认证签名时刻的内容签名必须能够由第三方验证,以解决争议。签名必须能够由第三方验证,以解决争议。更进一步的要求更进一步的要求v依赖性:依赖性:签名必须是依赖于被签名信息来产生;签名必须是依赖于被签名信息来产生;v唯一性:唯一性:签名必须使用某些对
40、发送者是唯一的信息,签名必须使用某些对发送者是唯一的信息,以防止双方的伪造与否认;以防止双方的伪造与否认;v可验性:可验性:必须相对容易识别和验证该数字签名;必须相对容易识别和验证该数字签名;v抗伪造:抗伪造:伪造该数字签名在计算上是不可行的,根伪造该数字签名在计算上是不可行的,根据一个已有的数字签名来构造消息是不可行的;对据一个已有的数字签名来构造消息是不可行的;对一个给定消息伪造数字签名是不可行的;一个给定消息伪造数字签名是不可行的;v可用性:可用性:在存储器中保存一个数字签名副本是现实在存储器中保存一个数字签名副本是现实可行的。可行的。签名方法签名方法v直接数字签名方法直接数字签名方法v
41、仲裁数字签名方法仲裁数字签名方法直接数字签名直接数字签名AB消息加密后的摘要消息散列函数A的私钥摘要加密算法消息加密后的摘要A的公钥解密算法解密后的摘要散列函数摘要比 较加密后的摘要直接数字签名的缺点直接数字签名的缺点v直接数字签名的执行过程只有通信的双直接数字签名的执行过程只有通信的双方参与,并假定双方有共享的秘密密钥方参与,并假定双方有共享的秘密密钥或者接收一方知道发送方的公开钥。或者接收一方知道发送方的公开钥。v缺点:缺点:方案的有效性取决于发方密钥的方案的有效性取决于发方密钥的安全性。安全性。发方可声称秘密钥丢失或被窃发方可声称秘密钥丢失或被窃仲裁数字签名仲裁数字签名v具有仲裁方式的数
42、字签名具有仲裁方式的数字签名1.1.发方发方X X对发往收方对发往收方Y Y的消息签名的消息签名2.2.将消息和签名先发往仲裁者将消息和签名先发往仲裁者A A3.3.A A对消息和签名验证完后,再连同一个表示已通对消息和签名验证完后,再连同一个表示已通过验证的指令一起发给过验证的指令一起发给Y.Y.具有仲裁方式的数字签名具有仲裁方式的数字签名v例例1 1:1.1.X XA:A:2.2.A AY:Y:|()XAKXMEIDH M|()|AYXAKXKXEIDMEIDH MTE E:单钥加密算法:单钥加密算法K KXAXA,K,KAYAY:A:A与与X X和和Y Y的共享密钥的共享密钥M M:消息
43、:消息T T:时戳:时戳IDIDX X:X X的身份的身份H(M)H(M):M M的杂凑值的杂凑值v在在1 1中,中,X X以以E EK KXAXAIDIDX XH(M)H(M)作为自己对作为自己对M M的签的签名,将名,将M M及签名发往及签名发往A A。v在在2 2中,中,A A将从将从X X收到的内容和收到的内容和IDIDX X、T T一起加密一起加密后发往后发往Y Y,其中的,其中的T T用于向用于向Y Y表示所发的消息不表示所发的消息不是旧消息的重放。是旧消息的重放。Y Y对收到的内容解密后对收到的内容解密后,将将解密结果存储起来以备出现争议时使用。解密结果存储起来以备出现争议时使用
44、。v如果出现争议,如果出现争议,Y Y可声称自己收到的可声称自己收到的M M的确来的确来自自X X,并将,并将E EK KAYAYIDIDX XMEMEK KXAXAIDIDX XH(M)H(M)发发给给A A,由,由A A仲裁,仲裁,A A由由K KAYAY解密后,再用解密后,再用K KXAXA对对E EK KXAXAIDIDX XH(M)H(M)解密,并对解密,并对H(M)H(M)加以验证,加以验证,从而验证了从而验证了X X的签名。的签名。具有仲裁方式的数字签名具有仲裁方式的数字签名v例例2 21.1.X XA:IDA:IDX X|2.2.A AY:Y:|)(|TMEHIDEMEIDEX
45、YXAXYAYKXKKXK)(|MEHIDEMEXYXAXYKXKKX X对对M M的签名的签名X X和和Y Y的共享密钥的共享密钥此方案提供了对此方案提供了对M M的保密性的保密性和前一方案相同,仲裁者可和发方共谋否认发方曾发过和前一方案相同,仲裁者可和发方共谋否认发方曾发过的消息,也可和收方共谋产生发方的签名的消息,也可和收方共谋产生发方的签名具有仲裁方式的数字签名具有仲裁方式的数字签名v例例3 3|:.2|:.1TMEEIDEYAMEEIDEIDAXXYAXYXSKPKXSKSKPKXSKXX X的私钥的私钥Y Y的公钥的公钥v第第1 1步中步中,X X用自己的秘密钥用自己的秘密钥SKS
46、KX X和和Y Y的公开钥的公开钥PKPKY Y对消息加密后作为对对消息加密后作为对M M的签名,以这种方的签名,以这种方式使得任何第式使得任何第3 3方(包括方(包括A A)都不能得到)都不能得到M M的明的明文消息。文消息。vA A收到收到X X发来的内容后发来的内容后,用,用X X的公开钥可对的公开钥可对E ESKSKX XIDIDX XEEPKPKY YEESKSKX XMM解密,并将解密得到解密,并将解密得到的的IDIDX X与收到的与收到的IDIDX X加以比较,从而可确信这加以比较,从而可确信这一消息是来自于一消息是来自于X X的(因只有的(因只有X X有有SKSKX X)。)。
47、v第第2 2步步,A A将将X X的身份的身份IDIDX X和和X X对对M M的签名加上一的签名加上一时戳后,再用自己的秘密钥加密发往时戳后,再用自己的秘密钥加密发往Y Y。v与前两种方案相比,第与前两种方案相比,第3 3种方案有很多优点:种方案有很多优点:在协议执行以前,各方都不必有共享的信息,从在协议执行以前,各方都不必有共享的信息,从而可防止共谋。而可防止共谋。只要仲裁者的秘密钥不被泄露,任何人包括发方只要仲裁者的秘密钥不被泄露,任何人包括发方就不能发送重放的消息。就不能发送重放的消息。对任何第三方(包括对任何第三方(包括A A)来说,)来说,X X发往发往Y Y的消息都的消息都是保密
48、的。是保密的。RSARSA签名体制签名体制v体制参数体制参数大素数大素数p,qp,q,n=pn=pq,y(n)=(p-1)(q-1)q,y(n)=(p-1)(q-1)。选整数。选整数1e 1e y(n),y(n),且且gcd(e,y(n)=1;gcd(e,y(n)=1;计算计算d d满足满足dede1 mod y(n).1 mod y(n).e,ne,n为公开密钥,为公开密钥,d,nd,n为秘密密钥。为秘密密钥。v签名过程签名过程S=MS=Md d mod n mod nv验证过程验证过程M=SM=Se e mod n mod nv实际应用中加密是对实际应用中加密是对H(M)H(M)进行的。进
49、行的。RSARSA签名方案签名方案 M|HESKAM()ASKEH MHDPKA比较本章小结本章小结主要内容:主要内容:介绍了认证与数字签名相关内容。阐述了身份认介绍了认证与数字签名相关内容。阐述了身份认证、消息认证以及数字签名的作用;列举了三种技证、消息认证以及数字签名的作用;列举了三种技术的实现方案;并且给出术的实现方案;并且给出MDMD算法的操作过程。算法的操作过程。需要掌握的内容:需要掌握的内容:(1 1)身份认证、消息认证及数字签名技术各自)身份认证、消息认证及数字签名技术各自适用的领域适用的领域 (2 2)消息认证符的三种生成方法)消息认证符的三种生成方法 (3 3)S/KEYS/
50、KEY口令工作过程口令工作过程()数字签名技术()数字签名技术本章作业本章作业作业题:作业题:(1 1)举例说明身份认证、消息认证及数)举例说明身份认证、消息认证及数字签名技术各自适用的场合。字签名技术各自适用的场合。(2 2)基于消息认证码的消息认证方法与)基于消息认证码的消息认证方法与基于散列函数的消息认证方法有什么区别?基于散列函数的消息认证方法有什么区别?(3 3)简述)简述S/KEYS/KEY口令的工作过程。口令的工作过程。思考题:思考题:(1 1)数字签名技术可以实现身份认证和)数字签名技术可以实现身份认证和消息认证吗?消息认证吗?(2 2)伪代码设计或编程实现)伪代码设计或编程实