网络安全协议及分析 第四章 传输层安全SSL和TLS

SSL协议概述

设计目的

  • 增强HTTP的安全性
  • 让普通的HTTP协议和增强安全性的协议之间具有良好的互操作性

安全需求

  • 机密性
  • 完整性
  • 服务器身份认证
  • 可选的用户身份认证

SSL协议

  • 保护运行于TCP之上的应用协议。
  • 与应用层协议无关的。
  • 在应用层协议之前就已经完成加密算法、通信密钥的协商以及服务器的认证工作。

SSLv3协议的流程

典型的SSLv3通信过程:

  • 在传输应用数据之前,必须首先进行协商,以便客户端验证服务器的身份,并与服务器就算法和密钥达成共识;
  • 在数据传输阶段,双方利用协商好的算法和密钥处理应用数据;
  • 数据传输完成后,通过可认证的方式断开连接。

更改密码规范协议

  • SSL连接(Connection)
    • 一个连接是一个提供合适类型服务的传输。
    • SSL的连接是点对点的关系。
    • 连接是暂时的,每一个连接和一个会话关联。
  • SSL会话(Session)
    • 一个会话是在客户与服务器之间的一个关联。会话定义了一组可供多个连接共享的密码安全参数。
    • 会话用以避免为每一个连接提供新的安全参数所需昂贵的协商代价。

握手协议

  • 协调客户端和服务器的状态,使得通信双方的交互实现同步。
  • 当前操作状态和挂起状态分别表示正在使用和正在协商的密码参数。

警告协议

  • 无论是在协商还是在应用数据传输阶段,如果通信一方发现了差错,必须向对方报告;应用数据传输完成后,还必须通知对方断开连接。
  • 警告级(Warning)、致命级(Fatal)
  • SSLv3的断连消息为Close_notify,引入消息验证码机制。

会话和连接

  • 会话状态:一组参数,包括会话ID、通信对等端证书、压缩算法、加密算法、散列算法、预主密钥以及可恢复标记。
  • 连接状态:一组参数,包括客户端和服务器随机数、服务器MAC密钥、客户端MAC密钥、服务器加密密钥、客户端加密密钥、初始化向量IV以及序号。

会话恢复

  • 使用已有的会话保护某个连接,不必再重新协商新参数。
  • 使用会话恢复可提高通信效率。

客户端认证

  • 服务器认证仅发送证书
  • 客户端认证多发送CertificateVerify消息。
  • 真正的服务器认证过程隐含在密钥生成过程中。

密钥导出机制

4个用于保护数据的会话密钥

  • Esc:服务器写加密密钥
  • Msc:服务器写MAC密钥
  • Ecs:客户端写加密密钥
  • Mcs:客户端写MAC密钥

SSLv3的记录层

规范语言:

  • 杂项://表述注释;[[ ]]表述可选项;opaque表述无具体含义的单字节数据
  • 数字:uint8、uint16、uint24、uint32、 uint64
  • 向量:定长向量、变长向量
  • 枚举:某个变量的可能取值
  • 结构:某个变量由不同类型数据所组成
  • 变体:表示根据实际选择符的不同,可以选择不同的数据
  • 赋值:赋值即给一个变量赋予常量值

数据处理过程:

  • 分片
  • 压缩
  • 计算MAC
  • 消息加密

TLS协议

协议描述

  • 在协议框架描述方面,TLS包括记录层和握手层两个协议,握手、更改密码规范和警告作为记录层协议的子协议描述。

MAC计算

  • SSLv3:MD5、SHA-1
  • TLSv1:HMAC

密钥导出

  • PRF(Pseudo-Random Function,伪随机函数),在定义该函数之前,TLS首先定义数据扩展函数。

散列函数输入

  • Certificate Verify和Finished消息中都需要计算散列值

填充长度

  • SSLv3的填充数据仅应填满一个分组长度
  • TLS的填充则允许在填满一个分组长度后,继续填充成任意个分组。

TLS 握手协议还能细分为 5 个子协议:

  1. change_cipher_spec(在 TLS 1.3 中这个协议已经删除,为了兼容TLS 老版本,可能还会存在)
  2. alert
  3. handshake
  4. application_data
  5. heartbeat (TLS 1.3 新加的,TLS 1.3 之前的版本没有这个协议)

TLS1.2与TLS1.3在子协议上的区别

协议版本密码切换协议警告协议握手协议心跳协议应用数据协议
TLS1.3无此协议根据连接状态不同进行加密,即一部分会加密一部分加密不加密加密
TLS1.2不加密不加密不加密无此协议加密

记录层

  • 将上层的信息块分段为TLSPlaintext记录,每一条TLS记录以一个短表头开始。原始消息经过分段 (或者合并)、压缩、添加认证码、加密转为 TLS 记录的数据部分。其中对上层应用数据协议进行密码保护,对其他的子协议只是简单封装(即不加密)。

TLS密码切换协议

  • 作用:该协议是TLS记录层对应用数据是否进行加密的分界线。客户端或者服务端一旦收到对端发送的密码切换协议,就表明接下来传输数据过程中可以对应用数据进行加密了。

TLS警告协议

  • 作用:该协议用来表示关闭信息和错误
  • 收到close_notify警告后,表明连接从一个方向开始有序的关闭,收到这个警报后,TLS实现方应表明应用程序的数据结束。

TLS握手协议

  • 作用:双方将通过这个协议协商出密码块,这个密码块会交给 TLS 记录层进行密钥加密。也就是说握手协议达成的“共识”(密码块)是整个 TLS 和 HTTPS 安全的基础。

TLS应用数据协议

  • 作用:该协议就是TLS上层的各种协议,TLS将主要保护的数据放在该协议里。
  • TLS记录层会根据加密模式的不同在应用数据末尾加上MAC检验数据

TLS心跳协议

  • 作用:允许在不需要重协商的情况下,使用 keep-alive 功能。

SSL应用

分设端口

  • 为不同的访问方式提供不同的监听端口。
  • HTTP客户端使用普通方式访问web服务器时,与80号端口建立连接,否则与443号端口建立连接,其他协议的使用方式类似。基于SSL的协议通常在协议后添加一个S作为标识。

从协议时序的角度

  • SSL的引入对高层应用的协议时序没有影响,只是比普通访问增加了SSL握手及安全断连步骤;

从语法和语义的角度

  • 安全访问方式下的通信数据要经过安全处理和安全验证,应用层的数据不再是字节流,而是记录。

向上协商的策略需要修改应用层协议

  • 220:Ready to start TIS;
  • 501:Syntax error
  • 504:TLS not available due to temporary reason

SSL VPN 技术在校园网中的应用

  • 身份鉴别
  • 访问策略
  • 数据转发

小结

SSL增强传输层的安全性,为高层应用提供较为通用的安全方案。

提供机密性、完整性、服务器认证以及可选的客户端认证服务。

SSL协议套件由握手、更改密码规范、警告和记录协议构成。

  • 握手协议实现算法协商、密钥生成和身份认证,支持会话恢复等握手方式。
  • 更改密码规范协议用以通告对等端使用新的安全参数来保护数据
  • 警告协议则同时具备安全断连和错误通告功能。
  • 记录协议是SSL数据承载层,高层应用及其他三个协议的数据都封装在记录中传递。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值