SSL协议分析

目录

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协议在网络中的层次

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ff4R9bt1-1574593712040)(./resources/image/02/02-1.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zwcg4rny-1574593712044)(./resources/image/02/02-2.png)]

可以看到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(会话密钥),加密接下来的整个对话过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VBS2owFi-1574593712046)(./resources/image/02/02-3.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TQJbwQLH-1574593712050)(./resources/image/02/02-4.png)]

2.2 使用DH算法

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s9EaCOAN-1574593712051)(./resources/image/02/02-5.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1cJeRMhU-1574593712054)(./resources/image/02/02-6.png)]

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

3. SSL报文分析

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

第一步
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OJlZ7QqE-1574593712056)(./resources/image/02/02-7.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Td9qsDC1-1574593712058)(./resources/image/02/02-8.png)]

第二步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZG7XgvnE-1574593712061)(./resources/image/02/02-9.png)]

第三步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sb6PMOud-1574593712063)(./resources/image/02/02-10.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T1mkcIRZ-1574593712065)(./resources/image/02/02-11.png)]

第四步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N94UaMXl-1574593712066)(./resources/image/02/02-12.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jfMdP0zw-1574593712067)(./resources/image/02/02-13.png)]

第五步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GShyJdnu-1574593712068)(./resources/image/02/02-14.png)]

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

4. 会话恢复

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

4.1 Session ID

每一次对话都有一个编号,如果对话中断,下次重连的时候,只要客户端给出这个编号,且服务器有这个编号的记录,双方就可以重新使用已有的"对话密钥",而不必重新生成一把。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UMfpYXnQ-1574593712069)(./resources/image/02/02-15.png)]

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

4.2 Session Ticket

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5cl2FFKq-1574593712070)(./resources/image/02/02-16.png)]

客户端不再发送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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值