网络信息安全课程网络信息安全课程第四讲第四讲消息验证与数字签名消息验证与数字签名主讲主讲主讲主讲主讲主讲主讲主讲段云所段云所段云所段云所段云所段云所段云所段云所副教授副教授副教授副教授副教授副教授副教授副教授北京大学计算机系北京大学计算机系北京大学计算机系北京大学计算机系北京大学计算机系北京大学计算机系北京大学计算机系北京大学计算机系通信威胁通信威胁通信威胁通信威胁1.泄露泄露泄露泄露把消息内容发布给任何人或没有合法密钥的进程把消息内容发布给任何人或没有合法密钥的进程把消息内容发布给任何人或没有合法密钥的进程把消息内容发布给任何人或没有合法密钥的进程2.流量分析流量分析流量分析流量分析发现团体之间信息流的结构模式发现团体之间信息流的结构模式发现团体之间信息流的结构模式发现团体之间信息流的结构模式在一个面向在一个面向在一个面向在一个面向连接的应用中连接的应用中连接的应用中连接的应用中可以用来确定连接的频率和持续时间长度可以用来确定连接的频率和持续时间长度可以用来确定连接的频率和持续时间长度可以用来确定连接的频率和持续时间长度3.伪造伪造伪造伪造从一个假冒信息源向网络中插入消息从一个假冒信息源向网络中插入消息从一个假冒信息源向网络中插入消息从一个假冒信息源向网络中插入消息4.内容修改内容修改内容修改内容修改消息内容被插入消息内容被插入消息内容被插入消息内容被插入删除删除删除删除变换变换变换变换修改修改修改修改5.顺序修改顺序修改顺序修改顺序修改插入插入插入插入删除或重组消息序列删除或重组消息序列删除或重组消息序列删除或重组消息序列6.时间修改时间修改时间修改时间修改消息延迟或重放消息延迟或重放消息延迟或重放消息延迟或重放7.否认否认否认否认接受者否认收到消息接受者否认收到消息接受者否认收到消息接受者否认收到消息发送者否认发送过消息发送者否认发送过消息发送者否认发送过消息发送者否认发送过消息问题的提出问题的提出问题的提出问题的提出1信息认证信息认证信息认证信息认证网络系统安全要考虑两个方面网络系统安全要考虑两个方面网络系统安全要考虑两个方面网络系统安全要考虑两个方面一方面一方面一方面一方面用密码保护传用密码保护传用密码保护传用密码保护传送的信息使其送的信息使其送的信息使其送的信息使其不被破译不被破译不被破译不被破译另一方面另一方面另一方面另一方面就是防止对手对系统进就是防止对手对系统进就是防止对手对系统进就是防止对手对系统进行主动攻击行主动攻击行主动攻击行主动攻击如伪造如伪造如伪造如伪造篡改信息等篡改信息等篡改信息等篡改信息等认证认证认证认证authentication则是防止主动攻击的重要技术则是防止主动攻击的重要技术则是防止主动攻击的重要技术则是防止主动攻击的重要技术它对于开放的网络中的各种它对于开放的网络中的各种它对于开放的网络中的各种它对于开放的网络中的各种信息系统的安全性有重要作用信息系统的安全性有重要作用信息系统的安全性有重要作用信息系统的安全性有重要作用认证的主要认证的主要认证的主要认证的主要目的目的目的目的目的目的目的目的有二有二有二有二第一第一第一第一验证信息的发送者是真正的验证信息的发送者是真正的验证信息的发送者是真正的验证信息的发送者是真正的而不是冒充的而不是冒充的而不是冒充的而不是冒充的此此此此为为为为信源识别信源识别信源识别信源识别第二第二第二第二验证信息的验证信息的验证信息的验证信息的完整性完整性完整性完整性在传送或存储过程中未被篡改在传送或存储过程中未被篡改在传送或存储过程中未被篡改在传送或存储过程中未被篡改重放或延迟等重放或延迟等重放或延迟等重放或延迟等窜扰者信宿信源认证编码器认证译码器信道安全信道密钥源保密和认证同时是信息系统安全的两个方面保密和认证同时是信息系统安全的两个方面保密和认证同时是信息系统安全的两个方面保密和认证同时是信息系统安全的两个方面但但但但它们是两个不同属性的问题它们是两个不同属性的问题它们是两个不同属性的问题它们是两个不同属性的问题认证不能自动提供认证不能自动提供认证不能自动提供认证不能自动提供保密性保密性保密性保密性而保密性也不能自然提供认证功能而保密性也不能自然提供认证功能而保密性也不能自然提供认证功能而保密性也不能自然提供认证功能一一一一个纯个纯个纯个纯认证系统认证系统认证系统认证系统认证系统认证系统认证系统认证系统的模型如下图所示的模型如下图所示的模型如下图所示的模型如下图所示2认证函数认证函数认证函数认证函数可用来做认证的函数分为三类可用来做认证的函数分为三类可用来做认证的函数分为三类可用来做认证的函数分为三类(1)信息加密函数信息加密函数信息加密函数信息加密函数(Messageencryption)用完整信息的密文作为对信息的认证用完整信息的密文作为对信息的认证用完整信息的密文作为对信息的认证用完整信息的密文作为对信息的认证(2)信息认证码信息认证码信息认证码信息认证码MAC(MessageAuthenticationCode)是对信源消息的一个编码函数是对信源消息的一个编码函数是对信源消息的一个编码函数是对信源消息的一个编码函数(3)散列函数散列函数散列函数散列函数(HashFunction)是一个公开的函数是一个公开的函数是一个公开的函数是一个公开的函数它将任意长的信息映射成一它将任意长的信息映射成一它将任意长的信息映射成一它将任意长的信息映射成一个固定长度的信息个固定长度的信息个固定长度的信息个固定长度的信息信息加密函数作认证信息加密函数作认证信息加密函数作认证信息加密函数作认证信息加密函数分二种信息加密函数分二种信息加密函数分二种信息加密函数分二种一种是常规的对称密钥加一种是常规的对称密钥加一种是常规的对称密钥加一种是常规的对称密钥加密函数密函数密函数密函数另一种是公开密钥的双密钥加密函数另一种是公开密钥的双密钥加密函数另一种是公开密钥的双密钥加密函数另一种是公开密钥的双密钥加密函数下下下下图的通信双方是图的通信双方是图的通信双方是图的通信双方是用户用户用户用户A为发信方为发信方为发信方为发信方用户用户用户用户B为接收方为接收方为接收方为接收方用户用户用户用户B接收到信息后接收到信息后接收到信息后接收到信息后通过解密来判决信息是否来自通过解密来判决信息是否来自通过解密来判决信息是否来自通过解密来判决信息是否来自A信息是否是完整的信息是否是完整的信息是否是完整的信息是否是完整的有无窜扰有无窜扰有无窜扰有无窜扰信源信宿MEEk(M)DMA方B方kkDk(Ek(M))(a)常规加密具有机密性可认证KUb(B方的公钥)MEEKUb(M)DMA方B方DkRb(b)公钥加密具有机密性MEEkRa(M)DMA方B方KRaKUa(c)公钥加密认证和签名MEEkRa(M)EEKUb(EkRa(M))A方KRaKUbDEkRa(M)DMB方KRbKUa(d)公钥加密机密性可认证和签名信息认证码信息认证码信息认证码信息认证码(MAC)设设设设S为通信中的发方为通信中的发方为通信中的发方为通信中的发方A发送的所有可能的发送的所有可能的发送的所有可能的发送的所有可能的信源集合信源集合信源集合信源集合为了达到防窜扰的目的为了达到防窜扰的目的为了达到防窜扰的目的为了达到防窜扰的目的发方发方发方发方A和收方和收方和收方和收方B设计一个编码法设计一个编码法设计一个编码法设计一个编码法则则则则发方发方发方发方A根据这个法则对信源根据这个法则对信源根据这个法则对信源根据这个法则对信源S进行编码进行编码进行编码进行编码信源经编码信源经编码信源经编码信源经编码后成为消息后成为消息后成为消息后成为消息M表示所有可能的表示所有可能的表示所有可能的表示所有可能的消息集合消息集合消息集合消息集合发方发方发方发方A通信时通信时通信时通信时发送的是消息发送的是消息发送的是消息发送的是消息用简单的例子说明用简单的例子说明用简单的例子说明用简单的例子说明设设设设S={0,1},M={00,01,10,11},定义四个不同的编码法则定义四个不同的编码法则定义四个不同的编码法则定义四个不同的编码法则e0,e1,e2,e3:00011011e001e101e201e301这样就构成一个认证码这样就构成一个认证码这样就构成一个认证码这样就构成一个认证码MAC发方发方发方发方A和收方和收方和收方和收方B在通信前先在通信前先在通信前先在通信前先秘密约定使用的编码法则秘密约定使用的编码法则秘密约定使用的编码法则秘密约定使用的编码法则例如例如例如例如若决定采用若决定采用若决定采用若决定采用e0则以则以则以则以发送消息发送消息发送消息发送消息00代表信源代表信源代表信源代表信源0发送消息发送消息发送消息发送消息10代表信源代表信源代表信源代表信源1我们称我们称我们称我们称消息消息消息消息00和和和和10在在在在e0之下是合法的之下是合法的之下是合法的之下是合法的而消息而消息而消息而消息01和和和和11在在在在e0之下不之下不之下不之下不合法合法合法合法收方将拒收这二个消息收方将拒收这二个消息收方将拒收这二个消息收方将拒收这二个消息信息的认证和保密是不同的两个方面信息的认证和保密是不同的两个方面信息的认证和保密是不同的两个方面信息的认证和保密是不同的两个方面一个认证码一个认证码一个认证码一个认证码可具有保密功能可具有保密功能可具有保密功能可具有保密功能也可没有保密功能也可没有保密功能也可没有保密功能也可没有保密功能认证编码的基本方法是要在发送的消息中认证编码的基本方法是要在发送的消息中认证编码的基本方法是要在发送的消息中认证编码的基本方法是要在发送的消息中引入多余引入多余引入多余引入多余度度度度使通过信道传送的可能序列集使通过信道传送的可能序列集使通过信道传送的可能序列集使通过信道传送的可能序列集Y大于消息集大于消息集大于消息集大于消息集X对于对于对于对于任何选定的编码规则任何选定的编码规则任何选定的编码规则任何选定的编码规则(相应于某一特定密钥相应于某一特定密钥相应于某一特定密钥相应于某一特定密钥):发方从发方从发方从发方从Y中选中选中选中选出用来代表消息的出用来代表消息的出用来代表消息的出用来代表消息的许用序列许用序列许用序列许用序列即即即即码字码字码字码字收方根据编码规收方根据编码规收方根据编码规收方根据编码规则唯一地确定出发方按此规则向他传来的消息则唯一地确定出发方按此规则向他传来的消息则唯一地确定出发方按此规则向他传来的消息则唯一地确定出发方按此规则向他传来的消息窜扰者窜扰者窜扰者窜扰者由于不知道密钥由于不知道密钥由于不知道密钥由于不知道密钥因而所伪造的假码字多是因而所伪造的假码字多是因而所伪造的假码字多是因而所伪造的假码字多是Y中的中的中的中的禁用序禁用序禁用序禁用序列列列列收方将以很高的概率将其检测出来而被拒绝收方将以很高的概率将其检测出来而被拒绝收方将以很高的概率将其检测出来而被拒绝收方将以很高的概率将其检测出来而被拒绝认证认证认证认证系统设计者的任务是构造好的系统设计者的任务是构造好的系统设计者的任务是构造好的系统设计者的任务是构造好的认证码认证码认证码认证码认证码认证码认证码认证码(AuthenticationCode),使接收者受骗概率极小化使接收者受骗概率极小化使接收者受骗概率极小化使接收者受骗概率极小化令令令令xX为要发送的消息为要发送的消息为要发送的消息为要发送的消息kK为发方选定的密钥为发方选定的密钥为发方选定的密钥为发方选定的密钥y=A(x,k)Y是表示消息是表示消息是表示消息是表示消息X的的的的认证码字认证码字认证码字认证码字Ak={y=A(x,k)|xX}为为为为认证码认证码认证码认证码Ak是是是是Y中的中的中的中的许用许用许用许用(合法合法合法合法)序列集序列集序列集序列集接收者知接收者知接收者知接收者知道认证编码道认证编码道认证编码道认证编码A(.,.)和密钥和密钥和密钥和密钥k,故从收到的故从收到的故从收到的故从收到的y,唯一确定出消息唯一确定出消息唯一确定出消息唯一确定出消