SSL协议分析

目录

  • 1. SSL简介
    • 1.1 应用
    • 1.2 SSL协议版本
    • 1.3 SSL协议在网络中的层次
    • 1.4 SSL协议的功能
    • 1.5 SSL协议中几个概念
  • 2. SSL协议建立流程
    • 2.1 不使用DH算法
    • 2.2 使用DH算法
  • 3. SSL报文分析
  • 4. 会话恢复
    • 4.1 Session ID
    • 4.2 Session Ticket
  • 参考资料

1. SSL简介

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。

1.1 应用

最常见的应用HTTPS,端口号443

1.2 SSL协议版本

S S L 1.0 ( 没 有 实 际 投 入 使 用 ) → S S L 2.0 → S S L 3.0 → T L S 1.0 → T L S 1.1 → T L S 1.2 → T L S 1.3 SSL1.0(没有实际投入使用) \rightarrow SSL2.0 \rightarrow SSL3.0 \rightarrow TLS1.0 \rightarrow TLS1.1 \rightarrow TLS1.2 \rightarrow TLS1.3 SSL1.0(使)SSL2.0SSL3.0TLS1.0TLS1.1TLS1.2TLS1.3

SSL协议最初由Netscape公司率先主导开发,后主导权转移到IETF后,在SSL3.0基础上,制定了后来的TLS几代标准。

1.3 SSL协议在网络中的层次

SSL协议分析_第1张图片

SSL协议分析_第2张图片

可以看到SSL协议是在传输层之上,应用程序之下

1.4 SSL协议的功能

简单的来说主要是三个功能

  • 加密
  • 认证
  • 完整性保护

1.5 SSL协议中几个概念

  1. 会话(Session):是指客户和服务器之间的一个关联关系。会话通过握手协议来创建。它定义了一组安全参数。
  2. 连接(Connection):用于提供某种类型的服务数据的传输,是一种点对点的关系。一般来说,连接的维持时间比较短暂,并且每个连接一定与某一个会话相关联。

2. SSL协议建立流程

可以把连接流程分为两类:

  1. 不使用DH算法
  2. 使用DH算法

2.1 不使用DH算法

客户端©,服务端(S)

  • 第一步:C发送自己的协议版本号、一个随机数、自己支持的加密算法
  • 第二步:S确认使用的加密算法,给出自己的证书、一个随机数
  • 第三步:C确认证书有效,自己再生成一个新的随机数(Premaster secret),并使用证书中的公钥加密发送给S
  • 第四步:S使用私钥解密,获得随机数
  • 第五步:C和S根据约定的加密算法,使用前面三个数据时,生成session key(会话密钥),加密接下来的整个对话过程

SSL协议分析_第3张图片

SSL协议分析_第4张图片

2.2 使用DH算法

我们会发现上面一个过程,最终会话密钥的生成由三个随机数决定,而前两个随机数都为明文传输,过攻击者只需要能够猜测出第三个随机数就能获得密钥。DH算法使用一种更难破解的方式生成会话密钥

SSL协议分析_第5张图片

SSL协议分析_第6张图片

可以看到第三和第四步由原来的传递第三个随机数变为传递DH算法所需要的参数

3. SSL报文分析

在这里只分析使用DH算法的握手协议

第一步
SSL协议分析_第7张图片

SSL协议分析_第8张图片

第二步

SSL协议分析_第9张图片

第三步

SSL协议分析_第10张图片

SSL协议分析_第11张图片

第四步

SSL协议分析_第12张图片

SSL协议分析_第13张图片

第五步

SSL协议分析_第14张图片

与前面的过程稍有不同,这里第五步中还有一个新建会话ticket的过程

4. 会话恢复

会话恢复方式有两种:Session ID和Session Ticket

4.1 Session ID

每一次对话都有一个编号,如果对话中断,下次重连的时候,只要客户端给出这个编号,且服务器有这个编号的记录,双方就可以重新使用已有的"对话密钥",而不必重新生成一把。
SSL协议分析_第15张图片

缺点: session ID往往只保留在一台服务器上。所以,如果客户端的请求发到另一台服务器,就无法恢复对话。session ticket就是为了解决这个问题而诞生的

4.2 Session Ticket

SSL协议分析_第16张图片

客户端不再发送session ID,而是发送一个服务器在上一次对话中发送过来的session ticket。这个session ticket是加密的,只有服务器才能解密,其中包括本次对话的主要信息,比如对话密钥和加密方法。当服务器收到session ticket以后,解密后就不必重新生成对话密钥了

参考资料

http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html

https://www.cnblogs.com/Anker/p/6082966.html

你可能感兴趣的:(SSL协议分析)