使用wireshark分析TLS
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的更多相关文章
- wireshark分析https数据包解密前后的特点
wireshark分析https数据包解密前后的特点 (一)https解密前 1.协议种类:2种(1)TCP(第四层,传输层)(2)SSL/TLS(第五层,应用层,加解密)2.应用层数据所在数据包特点 ...
- [https][tls] 如何使用wireshark查看tls/https加密消息--使用私钥
之前总结了使用keylog进行https流量分析的方法: [https][tls] 如何使用wireshark查看tls/https加密消息--使用keylog 今天总结一下使用服务器端证书私钥进行h ...
- [https][tls] 如何使用wireshark查看tls/https加密消息--使用keylog
姊妹篇: [ipsec][strongswan] 使用wireshark查看strongswan ipsec esp ikev1 ikev2的加密内容 [https][tls] 如何使用wiresha ...
- Wireshark分析非标准端口号流量
Wireshark分析非标准端口号流量 2.2.2 分析非标准端口号流量Wireshark分析非标准端口号流量 应用程序运行使用非标准端口号总是网络分析专家最关注的.关注该应用程序是否有意涉及使用非 ...
- wireshark分析dhcp过程
---恢复内容开始--- DHCP DHCP(Dynamic Host Configuration Protocol)是一个用于主机动态获取IP地址的配置解 析,使用UDP报文传送,端口号为67何68 ...
- Linux使用tcpdump命令抓包并使用wireshark分析
Linux使用tcpdump命令抓包并使用wireshark分析 介绍 有时分析客户端和服务器网络交互的问题时,为了查找问题,需要分别在客户端和服务器上抓包,我们的客户端一般是windows上的,抓包 ...
- Android 抓包并通过 Wireshark 分析
分析 Android 中 app 的网络数据交互,需要在 Android 上抓包,常用工具为 tcpdump ,用 tcpdump 生成 Wireshark 识别的 pcap 文件,把 pcap 文件 ...
- Android利用tcpdump抓包,用wireshark分析包。
1.前言 主要介绍在android手机上如何利用tcpdump抓包,用wireshark分析包. android tcpdump官网: http://www.androidtcpdump.com/ t ...
- MAC帧的格式&&wireshark分析MAC帧
MAC帧的格式 MAC帧较为简单,由五个字段组成 目的地址:6字节 源地址:6字节 类型字段:2字节,用来标志上一层使用的是什么协议,以便把收到的MAC地址帧的数据交给上一层的这个协议. 数据字段:其 ...
随机推荐
- labview事件结构学习
编程的主要目的是为了实现用户的某种功能,用户通过用鼠标.键盘.程序内部等触发某种程序动作,从而达到某种结果,这些操作都被称作为事件,LabVIEW中相应这些事件最常用的结构就是“事件结构”.事件结构内 ...
- 资深投资人全力反击: VC增值平台从来就不是一坨狗屎
编者注: 本文来自海外著名科技博客VentureBeat, 英文原文出自Kyle Lacy之手 ,中文版由天地会珠海分舵进行编译. 文章主要是针对前几天德国VC Christian Claussen的 ...
- 很好的hadoop学习博客实际操作训练(旧版本)
实际操作 http://www.cnblogs.com/xia520pi/archive/2012/05/16/2504205.html 流程解析 http://www.cnblogs.com/spo ...
- mongodb group php 操作
紧接着上篇来,这篇主要讲,mongodb的group功能,做的还是挺强大的,相当对于find(),skip(),distinct()等,用法比较复杂. 测试数据 > db.fruit.find( ...
- 有限状态机FSM详解及其实现
有限状态机,也称为FSM(Finite State Machine),其在任意时刻都处于有限状态集合中的某一状态.当其获得一个输入字符时,将从当前状态转换到另一个状态,或者仍然保持在当前状态.任何一个 ...
- 【RF库Collections库测试】关键字append to list
Arguments:[ list_ | *values ]Adds `values` to the end of `list`.
- MySQL性能优化(十)-- 主从复制(一主多从)
环境准备: Linux1(matser) Linux2(slave) Linux3(slave) 搭建 1.先清空原来的master和slave配置 reset master; 2.
- pl/sql编程2-综合
案例1,要求:可以向book表添加书,并通过Java程序调用该过程1.1 创建表 ),publishHosuse )); 1.2 编写过程,无返回值 create or replace procedu ...
- ajax如何上传文件
PHP: <?php /** * Created by PhpStorm. * User: DELL * Date: 2017/11/23 * Time: 10:57 */ header(&qu ...
- $.post和jquerySubmit返回json数据获取的区别
$.post("/patrol/patrolDataContent!deleteContent.action",{"ids":ids},function(dat ...