Internet安全协议与分析(二)SSL

介绍SSL协议与WTLS协议 。

不同协议层的安全

image-20201027193018383

SSL

1994年,由Netscape公司提出SSL,为HTTP提供安全连接。

安全机制

  • 机密性:使用对称密钥算法对传输的数据进行加密。
  • 身份验证:基于证书利用数字签名对server和client进行身份验证。
  • 消息完整性验证:使用MAC算法检验消息的完整性。

SSL版本

  • SSL由Netscape公司设计,是用于web的安全传输协议。
  • IETF将SSL标准化,称为TLS,TLS1.0与SSL3.0差别非常小。
  • wap论坛在TLS基础上做了WTLS协议,以适应无线的特殊环境。

SSL的分层结构

  • 上层协议
    • SSL握手协议
    • SSL passowrd变化协议
    • SSL警告协议
  • 下层协议为SSL记录协议
image-20201027193738047

SSL基本过程

  • 建立会话
  • 传输应用数据

连接&会话

  • SSL连接

    • 点对点
    • 连接是暂时的,每个连接和一个会话关联。
  • SSL会话

    • 会话是在server和client之间的一个关联,由握手协议建立,定义了一组密码安全参数。
    • 避免为每一个连接提供新的安全参数所需昂贵的协商代价。
  • 在任意一对通信主体之间,可以有多个安全连接。

    image-20201010113915965

握手协议

握手协议允许服务器和客户端相互验证,协商加密和MAC算法以及保密密钥。

握手协议的消息都含有以下三个字段

image-20201010114509495

阶段1:建立安全能力

  • SSL握手第一阶段启动逻辑连接,建立这个连接的安全能力。
  • client向server发送client hello消息
    • 支持的协议版本,比如TLS 1.0。
    • 客户端生成的随机数,用于生成“对话密钥”。
    • 支持的加密方法,比如RSA。
    • 支持的压缩方法。
  • server向client发送server hello消息
    • 确认使用的协议版本,如果版本不一致则关闭加密通信。
    • 服务器生成的随机数,用于生成“对话密钥”。
    • 确认使用的加密方法。
    • 服务器证书。
  • 此阶段后,client、server知道了以下内容
    • SSL版本
    • 密钥交换、信息验证和加密算法
    • 压缩方法
    • 密钥生成的两个随机数
image-20201010114955273

阶段2:服务器鉴别与密钥交换

  • server发送证书,包含一个X.509证书,或一条证书链。
  • server发送server_key_exchange消息
    • 可选,服务器证书没有包含必需数据时发送。
    • 包含签名,签名内容包括两个随机数以及服务器参数。
  • server发送certificate_request消息
    • 非匿名server可以像client请求一个证书。
    • 包含证书类型和CAs。
  • 服务器发送server_hello_done,等待应答。
image-20201010115349419

阶段3:客户机鉴别与密钥交换

  • client收到server_done消息后,检查server提供的证书,判断参数是否可以接收,如果没有问题就发送消息。
  • 如果server请求证书,就发送certificate,若client没有证书,则发送no_certificate警告,然后发送client_key_exchange消息。
  • 最后,client发送certificate_verify消息,包含一个签名,对第一条消息以来的所有握手消息的MAC值进行签名。
image-20201010115612373

阶段4:完成

  • 第四阶段建立起一个安全连接。
  • client发送change_cipher_spec消息,将协商得到的CipherSuite拷贝到当前连接的状态之中。
  • client用新的算法、密钥参数发送一个finished消息,检查密钥交换和鉴别过程是否已经成功。其中包括一个校验值,对所有以来的消息进行校验。
  • 服务器同样发送change_cipher_spec和finished消息。
  • 握手过程完成,client和server可以交换应用层数据。
image-20201010120038944

ChangeCipherSpec

  • 在数据包中就是一个字节的数据,用于告知服务端,客户端已经切换到之前协商好的加密套件的状态,准备使用之前协商好的加密套件加密数据并传输。

记录协议

image-20201010132038339

警告协议

当握手过程或者数据加密等操作出错或者发生异常情况时,向对方发出警告或中止当前连接。

SSL的加密和认证算法

image-20201010132259141

认证算法采用X.509电子证书标准,通过RSA算法进行数字签名来实现。

SSL安全性分析

  • 鉴别机制
    • 客户端与服务器交换了证书
  • 加密机制
    • 对称加密保护数据传输,非对称加密协商会话密钥。
  • 完整性机制
    • 数据分组压缩后,产生MAC。
  • 抗重放攻击
    • 使用序列号,传输中被加密。

SSL脆弱性分析

  • 客户端假冒
  • 无法提供基于UDP应用的安全保护
  • 不能对抗通信流量分析
  • 进程中主密钥泄露

WTLS

  • 保证传输层安全,作为WAP协议栈的一个层次向上层提供安全传输服务接口。

提供的安全服务

  • 第一类服务:使用交换的公共密钥建立安全传输,使用对称算法加解密数据,检查数据完整性,可以建立安全通信的通道,但没有对通信双方的身份进行鉴别,
  • 第二类服务:在第一类服务的基础上,可以交换服务器证书,完成对服务器的鉴别。
  • 第三类服务:在第二类服务的基础上,可以交换客户端证书,对恶意的用户冒充也能抗击。

协议栈

image-20201027201909276

握手协议

  • 和SSL一致?

记录协议

image-20201027202237703

告警协议

  • 描述信息错误的严重程度及告警描述
  • 警告、危急、致命

密钥交换

  • 共享密钥方法
  • RSA加密传输方法
  • DH密钥交换方法
  • EC-DH密钥交换方法
    • 椭圆曲线版本的DH密钥交换