Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 977|回复: 0
打印 上一主题 下一主题

使用wireshark分析TLS

[复制链接]

1229

主题

1999

帖子

7603

积分

认证用户组

Rank: 5Rank: 5

积分
7603
跳转到指定楼层
楼主
发表于 2021-12-15 10:10:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
https://www.cnblogs.com/lv6965/p/7859925.html

1.基本概念
SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。
TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。
TLS是在SSL的基础上标准化的产物,目前SSL3.0与TLS1.0保持一致的,二者是并列关系,只是大家习惯称呼SSL。注明的web服务nginx默认支持的就是TLS1.0、TLS1.1、TLS1.2协议。
SSL/TLS位于传输层和应用层之间,应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。
2.握手过程
可分为5步(使用Diffie – Hellman算法):
第一步,浏览器给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。
第二步,服务器确认双方使用的加密方法,使用的tls版本号和一个随机数。
第三部,并给出数字证书、以及一个服务器运行Diffie-Hellman算法生成的参数,比如pubkey。
第四部,浏览器获取服务器发来的pubkey,计算出另一个pubkey,发给服务器。
第五部,服务器发给浏览器一个session ticket。
3.使用wireshark抓包
访问虎扑体育(www.hupu.com),如下图所示:
用wireshark抓包(ip.addr==116.117.158.100&&ssl),如下图所示:
第一步:查看序列号2426分组,浏览器发送一个“Client Hello”消息,内容包括:支持的协议版本,比如TLS 1.2版,客户端生成的随机数(稍后用于生成“会话密钥”),支持的加密算法(如RSA公钥加密)。如下图所示:
上图中,cipher suites部分详见http://www.oschina.net/question/234345_47651
第二步:服务器将其SSL版本号、服务器生成的随机数(稍后用于生成“对话密钥”),确认使用的加密方法(如RSA公钥加密)发送给客户端,如下图所示:
第三步:Certificate:服务器发一个证书给客户端,该证书用于向客户端确认服务器的身份。如果配置服务器的SSL需要验证服务器的身份,会发送该消息。在这个Certificate包中,还告诉我们服务器和浏览器是通过Diffie-Hellman算法来生成最终的密钥(也就是Session key),如下图所示:
如上图所示,TLS记录层为什么分成两部分(第一部分包括certificate,第二部分包括server key exchange和server hello done),为什么不写在一个SSL中?
第四步:浏览器收到服务器发来的Certificate包来之后,运行Diffie-Hellman算法生成一个pubkey,然后发送给服务器。通过这一步和上面Certificate两个步骤,服务器和浏览器分别交换了pubkey,这样他们就可以分别生成了一个一样的session key,如下图所示:
session key(会话密钥),是保证用户跟其它计算机或者两台计算机之间安全通信会话而随机产生的加密和解密密钥。
第五步:完成上面的步骤,可以说TLS的握手阶段已经完成了,但是,服务器还会发送一个Session Ticket给浏览器。如下图所示,这个session ticket包含了这个ticket的生命周期等信息。
这个session ticket包有什么做用呢?
握手阶段用来建立TLS连接。如果出于某种原因,对话中断,就需要重新握手。客户端只需发送一个服务器在上一次对话中发送过来的session ticket。这个session ticket是加密的,只有服务器才能解密,其中包括本次对话的主要信息,比如对话密钥和加密方法。当服务器收到session ticket以后,解密后就不必重新生成对话密钥了。就可以继续使用上一次的连接了。
附上对session ticket的详细讲解:
http://www.jdon.com/performance/speeding-up-https-with-session-resumption.html
http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html(第四部分)
第六步:之后,服务器和浏览器建立了安全的连接,便可以传数据了,如下图所示的application data:
上图中,从序列号2433就可以看出,在第四步完成之后,就可以传输数据了,不需要等到第五步完成。
查看序列号2433的数据包,如下图所示:


标签: wireshark, TLS


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-5-27 16:38 , Processed in 0.055023 second(s), 20 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表