使用wireshark分析TLS

1.基本概念
SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向链接的网络层协议和应用层协议之间的一种协议层。SSL经过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通信。该协议由两层组成:SSL记录协议和SSL握手协议。html

TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。nginx

TLS是在SSL的基础上标准化的产物,目前SSL3.0与TLS1.0保持一致的,两者是并列关系,只是你们习惯称呼SSL。注明的web服务nginx默认支持的就是TLS1.0、TLS1.一、TLS1.2协议。web

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_47651session

第二步:服务器将其SSL版本号、服务器生成的随机数(稍后用于生成“对话密钥”),确认使用的加密方法(如RSA公钥加密)发送给客户端,以下图所示:
app

第三步: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的数据包,以下图所示:

相关文章
相关标签/搜索