当前课程知识点:网络技术与应用 > 第9讲 网络安全 > 9.2 网络安全基础 > 9.2-2 报文摘要和数字签名
数据的完整性和行为的不可抵赖性是网络安全的重要目标
下面就来学习实现这种重要目标的报文摘要技术
数字签名技术和身份鉴别
首先看一下报文摘要
报文摘要技术是一种检查发送的报文是否被篡改的方法
比如给定某一个报文
通过特点的算法对报文进行计算
计算后产生有限位数的信息
也就是报文摘要
报文摘要就像报文的指纹一样
具有确认性和唯一性
假定MD是报文摘要算法
MD(X)是算法对报文X作用后产生的标识信息
MD必须满足这样一些要求
一个是这个算法能够作用于任何长度的报文
第二 经过算法计算产生有限位数的标识信息
第三 算法易于实现
第四 算法具有单向性
什么叫单向性呢
就是只能根据报文X求出报文摘要
从计算的可行性讲
无法根据计算以后的标识信息h得出报文X
而且使得计算以后的标识信息还等于h
这是具有单向性
还有一个特性是具有抗碰撞性
从计算的可行性来说
对于任何的报文X
无法找出另一个报文Y
当X≠Y的时候
它们两个的报文摘要相同
即使改变了报文X中的很少位的二进制位
使得计算以后的报文摘要变化也很大
这是对报文摘要算法的要求
报文摘要的主要用途有什么呢
第一个用途是检验消息的完整性
比如对于发送端来说
要发送一个明文P
可以明文计算一个报文摘要
然后对报文摘要加密
加密完的密文和明文附在一起
发送给接收端
当接收端接收到明文和附在一起发过来的密文以后
首先对明文进行同样的报文摘要算法计算出报文摘要
然后对接收到的密文Y进行解密
得到密文的原文就是发送端计算的报文摘要
把这两个报文摘要进行比较
如果两个报文摘要相等
说明消息在传输过程当中未被篡改
如果这两个报文摘要不相等
说明消息在传播过程中被篡改了
这是第一个用途 消息的完整性检测
第二个用途是可以验证秘密信息
比如用户终端A
它有一个秘密信息需要用户终端B验证
比如用户A的口令等
它就可以用报文摘要实施验证
终端A要给用户B进行检验的信息通常在用户B
当中有相应的对应关系
比如用户A和要验证的信息S之间有相应的对应关系
用户B给用户A发送一个随机数R
用户A把发送过来的R和需要验证的秘密信息S
串接在一起
然后求出一个报文摘要
然后把报文摘要发送给用户B
用户B根据自己保存下的发送给A的数据R
跟关系表当中的S也串接在一起
计算一个报文摘要 比如是D'
它把接收到的报文摘要和它自己算出的报文摘要进行比较
如果是相同的 说明用户A拥有秘密信息S
如果不相同 那么用户A拥有的秘密信息是错误的
验证没有通过
这是报文摘要两个非常典型的用途
典型的报文摘要算法有三种
一个是MD5 就是报文摘要第5版
这个算法是这样的
对于任意长度的明文P
经过报文摘要算法计算以后
得出128位报文摘要
这是一种算法
第二种算法是安全散列算法第1版 简称为SHA-1
对于任意长度的明文P
经过这样一个算法以后
得出160位报文摘要
这是第二种算法
第三种算法是散列消息鉴别码
简称为HMAC
这个算法是这样
对于任意长度的明文P
把密钥串接在一起形成一个值h
然后h通过前面介绍的两种报文摘要算法的任意一种
进行报文摘要算法
如果用SHA-1算法 得出160位报文摘要
如果用MD5算法 得出128位报文摘要
这是HMAC报文摘要算法
我们可以用HMAC-MDk(P)表示报文
基于密钥K和报文摘要算法MD生成的报文摘要
实际上这种算法就把报文摘要和加密融合在一起了
报文摘要的安全性我们来看一下
报文摘要的位数越大 计算复杂性越高
单向性和抗碰撞性也越好
这是报文摘要
下面看一下数字签名技术
数字签名就是只有信息发送者才能产生的
别人无法伪造的一段数字串
这段数字串同时也是对信息发送者
发送信息真实性的一个有效证明
它具有这样一些特征
一个是接收端能够核实发送端对报文的数字签名
第二 发送者事后无法否认对报文的数字签名
第三接收端不能伪造出一段数字签名
数字签名需要符合这样三个特征
因此数字签名必须要保证唯一性 关联性和可证明性
唯一性保证只有特定的发送者才能生成数字签名
关联性保证是对特定报文的数字签名
而不是对几个报文生成同一个数字签名
可证明性表明数字签名的唯一性和关联性是可以证明的
下面看一下基于RSA的数字签名原理
前面说过 RSA是公开秘钥加密算法
这种算法具有这样一些特点
一是存在公钥和私钥对PK和SK之间的一一对应关系
二是SK是秘密的 只有拥有者知道
而PK是公开的
加密秘钥是公开的 解密密钥是私有者自己知道的
无法通过PK推导出SK
四是加密算法和解密算法是可以互换的
因此可以对明文P进行报文摘要算法以后进行解密
用私钥进行解密的值作为报文批的数字签名
为什么 我们来看一下
首先SK是唯一的 私钥是唯一的
只有SK的拥有者才能够实现这样一个算法
就是对P进行报文摘要以后用SK进行解密运算
保证了数字签名的唯一性
第二 根据报文摘要算法的特性
其他用户无法做到这样一件事
生成某个报文P'
P≠P’
但是两个报文摘要相同
这是无法实现的
因为MD(P)这个报文摘要只能是针对报文P的报文摘要
这就确保了数字签名和报文P之间的关联性
第三 因为公钥PK和私钥SK是一一对应的
如果公钥PK和私钥SK拥有之间的绑定关系
得到权威机构的证明
一旦证明公钥PK对数字签名进行还原的结果
等于报文P的报文摘要的话
就可以证明数字签名就一定是拥有SK者的签名
这样就证明了数字签名的可证明性
怎么样通过权威机构来证明
比如这是一个用户
用户提供相应的一些证件
向权威机构比如CA申请密钥
权威机构本身也有公钥和私钥
权威机构给用户颁发私钥SK和证书
证书里面有这个用户的身份和公钥PK
然后CA对用户身份和PK进行数字签名
也就是表明证书确实是权威机构CA颁发的
有了私钥和证书以后
假定这个用户要和业主签订一份合同
它可以把这个合同和数字签名 权威结构颁发的证书
一起交给业主
业主可以根据这样两点判断证书和数字签名的真伪
一个是用CA的公钥PKA验证用户证书
二是用证书当中的公钥PK验证用户的签名
如果业主和签名的人之间发生纠纷了
那么业主就可以通过法院进行仲裁
可以把相应的合同 数字签名以及相应的证书
提交给法院
法院根据这两点进行仲裁
这个过程可以用这样一个流程图表示
首先对明文P进行报文摘要计算
然后把报文摘要进行用SK解密运算
这是个人拥有的SK
然后生成一个数字签名
这个数字签名和明文一起发送给接收端
接收端根据明文和数字签名
可以来做这样一些事情
对明文进行报文摘要算法
然后生成一个报文摘要
然后对数字签名用PK进行加密算法
然后得出数字签名的原文
如果这两个报文摘要是相同的
那么说明数字签名是真实的
如果不相同 这个数字签名不是SK拥有者的数字签名
这是基于RSA的数字签名
第三 看一下身份鉴别
身份鉴别的过程是网络当中证明自己身份的一个过程
或者是确定通信另一方的身份的过程
把用于证明自己身份的一方称为用户
把用于确认通信的另一方的身份的一方称为鉴别者
用户和鉴别者一般共享密钥
而且密钥只有用户和鉴别者拥有
因此 一方只要证明自己拥有密钥
就可以证明自己的身份
先来看一下身份鉴别的单向鉴别过程
比如这是一个鉴别者
要鉴别另外一个用户终端
鉴别者通常有个鉴别信息库
在信息库当中有用户名和用户名所对应的共享密钥
鉴别者首先向用户终端发送一个随机数C
然后终端把随机数C和它所拥有的密钥串接在一起
计算出它的报文摘要
然后把用户名A一起发送给鉴别者
鉴别者根据用户名A去查找鉴别信息库
找到了对应的共享密钥KEYA
然后也计算出一个报文摘要
就是把随机数C和密钥KEYA串接在一起
计算报文摘要
如果这两个报文摘要是相同的
那么发送一个鉴别成功帧
这是单向鉴别
单向鉴别过程只需要用户向鉴别者证明自己的身份
而不需要确定鉴别者的身份
用户A向鉴别者证明自己身份的过程就是证明
它是否拥有密钥KEYA的过程
这是单向鉴别过程
鉴别过程还可以有双向鉴别
就是不光是鉴别者对用户终端A是否拥有共享密钥
用户终端也可以鉴别鉴别者是否拥有密钥
它的过程应该是这样子的
首先鉴别者发送一个随机数C1
用户终端接收到随机数C1以后
把随机数C1以及它所知道的密钥串接在一起
计算出一个报文摘要
同时也生成一个随机数C2
然后把用户名 随机数C2以及计算出来的摘要一起
发送给鉴别者
鉴别者根据接收到的用户名查找鉴别信息库
鉴别信息库当中有密钥
它根据密钥和自己发送的随机数C1串接在一起
也计算出一个报文摘要
如果跟用户终端A发送过来的报文摘要是相同的
那么说明用户终端确实拥有这个密钥
然后给用户终端发送一个报文摘要
这个报文摘要是用户终端发过来的随机数C2和
这个密钥串接在一起计算出来的报文摘要
用户终端A收到报文摘要以后
同样的方法
用C2和它自己的密钥串接在一起
计算出报文摘要
如果两个相同 说明鉴别者也拥有这样一个密钥
这样 双向鉴别就成功了
所以双向鉴别过程不仅需要向鉴别者证明自己的身份
同时需要确认鉴别者的身份
因此用户和鉴别者都需要证明自己拥有共享密钥
用户A和鉴别者都需要证明自己拥有共享密钥KEYA
最后对刚才的内容做一下简单的小结
完整性是信息安全的核心目标
加密和报文摘要是实现完整性的基础
数字签名主要为了实现网络行为的不可抵赖性
完整性和不可抵赖性都是网络安全的重要目标
-课程先导语
--先导语
-1.1 网络内涵
--网络内涵
-1.2 互联网发展过程
--互联网发展过程
-1.2 互联网发展过程--作业
-1.3 交换方式
--电路交换
-- 虚电路交换
--数据报交换
--三种交换方式比较
--html
-1.3 交换方式--作业
-1.4 计算机网络体系结构和协议
--分层结构
--OSI体系结构
-1.4 计算机网络体系结构和协议--作业
-第一讲内容的启示
--html
-例题分析
--例题分析
-测验--作业
-本讲内容简介
-2.1 数据传输系统
-2.1 数据传输系统--作业
-2.2 信号
--2.2 信号
-2.2 信号--作业
-2.3 编码和调制
--2.3-1 编码
--2.3-2 调制
-2.3 编码和调制--作业
-2.4 差错控制
-2.4 差错控制--作业
-2.5 传输媒体
--2.5 传输媒体
-2.5 传输媒体--作业
-2.6 Packet Tracer6.2使用说明
-第二讲内容的启示
--html
-例题分析
--例题分析
-测验--作业
-以太网发展过程与内容简介
-以太网发展过程与内容简介--作业
-3.1 总线形以太网
-3.1 总线形以太网--作业
-3.2 网桥与冲突域分割
-3.2 网桥与冲突域分割--作业
-3.3 交换式以太网与VLAN
-3.3 交换式以太网与VLAN--作业
-3.4 以太网标准
-3.4 以太网标准--作业
-第三讲内容的启示
--html
-例题分析
--例题分析
-案例设计
--案例设计
-测验--作业
-本讲内容简介
--无线局域网
-4.1 无线局域网概述
-4.1 无线局域网概述--作业
-4.2 无线局域网应用方式
-4.2 无线局域网应用方式--作业
-4.3 无线局域网MAC层
-4.3 无线局域网MAC层--作业
-4.4 终端接入无线局域网过程
-4.4 终端接入无线局域网过程--作业
-4.5 无线局域网设计和分析
-第四讲内容的启示
--html
-例题分析
--例题分析
-测验--作业
-本讲内容简介
-- IP与网络互连
-5.1 网络互连机制
-5.1 网络互连机制--作业
-5.2 网际协议
-5.2 网际协议--作业
-5.3 IP分组传输过程
-5.3 IP分组传输过程--作业
-5.4 路由表建立过程
-5.4 路由表建立过程--作业
-5.5 IP over以太网
-5.5 IP over以太网--作业
-5.6 三层交换机与VLAN间通信过程
-5.7 Internet控制报文协议
-5.7 Internet控制报文协议--作业
-第五讲内容启示
--html
-案例设计
--案例设计
-例题分析
-测验--作业
-本讲内容简介
--本讲内容简介
-6.1 Internet接入控制机制
-6.1 Internet接入控制机制--作业
-6.2 以太网和ADSL接入技术
-6.2 以太网和ADSL接入技术--作业
-6.3 家庭局域网接入方式与无线路由器
-6.3 家庭局域网接入方式与无线路由器--作业
-6.4 接入综合演示实验
-6.4 接入综合演示实验--作业
-第六讲内容的启示
--html
-例题分析
--第六讲 例题分析
-测验--作业
-本讲内容简介
--传输层
-7.1 传输层服务特性
--传输层服务特性
-7.1 传输层服务特性--作业
-7.2 端口号
--端口号
-7.3 用户数据报协议UDP
-7.3 用户数据报协议UDP--作业
-7.4 传输控制协议TCP
--TCP特点和格式
-- TCP的几点说明
-7.4 传输控制协议TCP--作业
-第七讲内容启示
--html
-例题分析
--例题分析
-测验--作业
-本讲内容简介
-- 应用层
-8.1 应用结构
--应用结构
-8.1 应用结构--作业
-8.2 域名解析
-8.2 域名解析--作业
-8.3 动态主机配置协议
-8.3 动态主机配置协议--作业
-8.4 万维网
-- 万维网
-8.4 万维网--作业
-8.5 电子邮件
--html
-8.6 文件传输协议
--html
-例题分析
--例题分析
-案例设计
--CH8 案例设计
-应用层启示
--html
-测验--作业
-本讲内容简介
-9.1 网络安全概述
-9.1 网络安全概述--作业
-9.2 网络安全基础
-9.2 网络安全基础--作业
-9.3 病毒检测与防御技术
-9.3 病毒检测与防御技术--作业
-9.4 以太网安全技术
-9.4 以太网安全技术--作业
-9.5 无线局域网安全技术
-9.5 无线局域网安全技术--作业
-9.6 防火墙
-9.6 防火墙--作业
-9.7 安全协议
--9.7 安全协议
-9.7 安全协议--作业
-例题分析
--例题分析
-防火墙演示实验
-- 防火墙演示实验
-案例设计
--案例设计
-网络安全的启示
--html
-测验--作业
-附录1:综合应用分析
--综合应用分析
-附录2:Cisco实际设备网络构建与配置
-期末考试--考试试题