一、SSL/TLS简介

1、协议介绍

SSL/TLS是保护计算机网络通讯安全的一类加密协议,它们在传输层上给原先非安全的应用层协议提供加密保护,如非安全的HTTP协议即可被SSL/TLS保护形成安全的HTTPS协议。

SSL、TLS协议其实是有所差异的,TLS协议是继承了SSL协议并写入RFC,标准化后的产物。因此,通常使用SSL来指代SSL协议和TLS协议。

SSL (Secure Socket Layer)安全套接字层协议

• SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。

• 分为SSL记录协议和SSL握手协议。

TLS(Transport Layer Security)传输层安全协议

• 用于两个应用程序之间提供保密性和数据完整性。

• 分为TLS记录协议和TLS握手协议。

区别:

• SSL是Netscape开发的专门用户保护Web通讯的,目前版本为3.0。

• TLS 1.0是IETF(工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。两者差别极小,可以理解为SSL 3.1,它是写入了RFC的

2、SSL/TLS在TCP/IP协议栈的位置


​ SSL/TLS协议在传输层上封装了应用层的数据,因此可以在不需要修改应用层协议的前提下给不安全的应用层协议提供一定的安全保障。

3、SSL/TLS协议栈

4、SSL/TLS协议运作流程

o Client Hello:客户端向服务端打招呼;携带支持的协议、支持的安全套件供服务端选择;

o Server Hello:服务端回应客户客户端的招呼信息;结合客户端的信息,选择合适的加密套件;

o Certificate:服务端向客户端发送自己的数字证书(此证书包含服务端的公钥),以实现验证身份;

o Server Key Exchange:服务端向客户端发送基于选择的加密套件生成的公钥(此公钥为椭圆曲线的公钥,用于协商出对称加密的密钥);

o Server Hello Done:服务端向客户端表示响应结束;

o Client Key Exchange:客户端向服务端发送自己生成的公钥(此公钥为椭圆曲线的公钥,用于协商出对称加密的密钥);

o Change Cipher Spec:变更密码规范;告知服务端/客户端,以后的通信都是基于AES加密的;

o Encrypted Handshake Message:基于协商生成的密钥,用AES加密验证信息让服务端/客户端进行认证;如果对方可以解密,则双方认证无误开始通信;

o New Session Ticket:是优化SSL连接的一种方法,此处不做特别说明

o 注:Certificate Request:服务器如果需要验证客户端的身份,那么服务器会发一个“Certificate Request”给浏览器,而在很多实现中,服务器一般不需要验证客户端的身份

二、分析过程

1、获取协议包

​ 启动wireshark,选择菜单栏上捕获 -> 选项,勾选WLAN网卡。点击Start。启动抓包。

​ 执行需要抓包的操作:在Chrome浏览器访问https://cn.bing.com/,捕获到的数据包如下

​ 在cmd上ping cn.bing.com以获得其IP地址

IP地址为202.89.233.101

​ 在过滤栏设置过滤条件进行数据包列表过滤:ip.addr == 202.89.233.100 and tls,表示只显示TLS协议且源主机IP或者目的主机IP为202.89.233.100的数据包。结果如下:

2、协议包分析:

(1)Client Hello包-137号

Random Bytes:客户端产生的28字节随机数,用于生成最终密钥,后面的过程还会传递两个随机数,三个随机数做为EC Diffie-Hellman算法的相关参数,运算出会话密钥。先把这个随机数称为random_c.

Session ID:会话标识符:如果是一个新的连接,这个值为0

Cipher Suites:加密套件(客户端共支持17个加密套件),服务器会从中选择一个服务器也支持的加密套件

Compression Methods:客户端支持的压缩方法

Extension: ALPN:客户端支持的应用层协议

Extension: signature_algorithms: 客户端支持的签名算法

(2)Server Hello, Certificate, Certificate Status, Server Key Exchange, Server Hello Done包-146号

A、Server Hello段

Random Bytes:服务器生成的随机数random_s

Cipher Suites:服务器选择的加密套件:

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

Compression Methods:服务器选择的压缩算法为NULL压缩算法。(不支持任何压缩算法),压缩基本由应用层来完成。

B、Certificate段

Certificate: 服务器返回了两个证书: 第一个是CA签发的证书(Bing),第二个是CA链的证书。

客户端收到这个证书后,可以根据证书链来验证证书的真伪,进而判断服务器是真是假。 服务器证书中存放一个公钥,用于加密后面生成的Premaster secret

C、Server Key Exchange段

EC Diffie-Hellman: 服务器和浏览器是通过Diffie-Hellman算法来生成最终的密钥

Pubkey: 服务器向客户端发送了Pubkey这个随机数。

此时客户端已经拥有了三个随机数(自身生成的random_c, 服务器发送的random_s以及此处的pubkey),有了这三个参数,就可以运行Diffie-Hellman算法生成Premaster secret(最终的会话密钥)

D、Server Hello Done段

告知客户端服务器这边握手相关的消息发送完毕。

(3)Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message 包-149号

A、Client Key Exchange段

Pubkey: 浏览器收到服务器发来的Certificate包来之后,运行Diffie-Hellman算法生成一个pubkey,然后发送给服务器。

通过这一步和上面Certificate两个步骤,服务器和浏览器分别交换了pubkey,这样他们就可以分别生成了一个一样的sessionkey。

B、Change Cipher Spec段

变更密码规范协议,它非常简单,就是一条通知消息,告知对方以后的通信都是加密的;

C、Encrypted Handshake Message段

客户端使用生成的对话密钥,加密之前所有收发握手消息的Hash和MAC值,发送给服务器,服务器将相同的会话密钥(使用相同方法生成)解密此消息,校验其中的Hash和MAC值。

注意:Change Cipher Spec和Encrypted Handshake Message不像Client Hello、Server Hello等是封装在 Handshake Protocol层,而是同Handshake Protocol一样,直接封装在TLS Record Layer层。

(4)Application Data包-150号

客户端开始向服务器发送加密数据。我们可以看到,它使用的是http2协议,数据被加密了。

(5)Change Cipher Spec, Encrypted Handshake Message包-155号

Change Cipher Spec:服务器发送Change Cipher Spec消息,通知客户端此消息以后服务器会以加密方式发送数据。服务器使用会话密钥加密之前所有收发握手消息的Hash和MAC值,发送给客户端去校验。

若客户端服务器都校验成功,握手阶段完成,双方将按照SSL记录协议的规范使用协商生成的会话密钥加密发送数据。

可以看到,之后服务器开始向客户端发送加密消息Application Data。

参考资料

[1] https://blog.csdn.net/darker0019527/article/details/103337897
[2] https://blog.51cto.com/liuzhengwei521/2430427
[3] https://zhuanlan.zhihu.com/p/227873665
[4] https://blog.csdn.net/liangyihuai/article/details/53098482
[5] https://www.freebuf.com/articles/network/116497.html

用wireshark抓包分析TLS协议相关推荐

  1. 用wireshark抓包分析TCP协议的三次握手连接、四次握手断开

    用wireshark抓包分析TCP协议的三次握手连接.四次握手断开 一.TCP三次握手图解 二.TCP得四次挥手过程 三.用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 一.TCP三 ...

  2. Wireshark抓包分析ARP协议

    「作者主页」:士别三日wyx 「作者简介」:CSDN top100.阿里云博客专家.华为云享专家.网络安全领域优质创作者 「专栏简介」:此文章已录入专栏<计算机网络零基础快速入门> 使用W ...

  3. wireshark 抓包分析 TCPIP协议的握手

    http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html 转载于:https://www.cnblogs.com/scote/p/ ...

  4. TCP/IP详解卷1 - wireshark抓包分析

    TCP/IP详解卷1 - 系列文 TCP/IP详解卷1 - 思维导图(1) TCP/IP详解卷1 - wireshark抓包分析 引言 在初学TCP/IP协议时,会觉得协议是一种很抽象的东西,通过wi ...

  5. 用Wireshark抓包分析协议 计算机网络

    此篇博客记录使用Wireshark抓包分析协议. 目录 一.DNS 二.分析TCP握手过程 三.TLS报文 四.HTTP协议 五.SMTP 六.ARP 七.RTP 八.RTMP 一.DNS DNS是域 ...

  6. Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark

    Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark Wireshark(前称Ethereal)是一个网络包分析工具.该工具主要是用来捕获网络包,并显示包的详细情况.本节将分别介绍 ...

  7. Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述

    Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...

  8. Wireshark数据抓包分析——网络协议篇

    Wireshark数据抓包分析--网络协议篇 Wireshark是目前最受欢迎的抓包工具.它可以运行在Windows.Linux及MAC OS X操作系统中,并提供了友好的图形界面.同时,Wiresh ...

  9. Wireshark抓包分析之ICMP协议包

    Wireshark抓包分析之ICMP协议包 一. Wireshark简介:(前身为Ethereal,2006年改名为wireshark) Wireshark 是一个网络封包分析软件.网络封包分析软件的 ...

最新文章

  1. You should rebuild using libgmp = 5 to avoid timing attack vulnerability
  2. 中国研制600公里时速磁悬浮:北京到上海,仅需3.5小时左右
  3. 基于大数据与深度学习的自然语言对话
  4. C#值类型以及默认值记录下
  5. 消息队列技术介绍 : ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ
  6. 计算机新建用户会不会速度快,创建帐户让电脑系统速度比重装还快
  7. css知多少(7)——盒子模型
  8. 北约CCDCOE:国家网络空间安全框架
  9. ZeptoLab Code Rush 2015 B. Om Nom and Dark Park DFS
  10. Esri中国社区 » GIS大讲堂:ArcGIS Server .Net ADF中的AJAX
  11. OLED原理、时序和操作+自己源码程序
  12. obs 推流编码在哪设置_直播工具OBS推流配置操作指引
  13. 数据分析师的工作职责是什么?
  14. linux嵌入式做智能家居,嵌入式系统在智能家居中的应用
  15. 网站托管服务器配置,了解托管服务器的三个小技巧
  16. 10计算机网络需要密码是多少钱,Win10宽带连接不用每次都要输入密码的办法
  17. 一米OA任意文件读取漏洞
  18. 爬取网易buff CSGO饰品数据
  19. Lucas定理——推导及证明
  20. JavaScript 各种参数 详解

热门文章

  1. python gdal 重采样_Python遥感影像重采样
  2. 前后分离,测试环境使用nginx调试解决跨域问题。
  3. 使用CNN进行ROI提取(优化代码篇)
  4. 基于GeoTools的GeoJson导入到PostGis实战
  5. java实现倒计时闹钟_倒计时闹钟软件下载-倒计时闹钟app下载v1.2.4-西西软件下载...
  6. 令人讨厌的是数学课,不是数学----《一个数学家的叹息》
  7. 汽车转向角度和转向半径的关系
  8. javaScript和css交互
  9. AudioTrack过程
  10. C语言学习5:机器数、真值、原码、反码和补码详解