用WireShark简单看看SSL/TLS协议

作者&投稿:寸姜 (若有异议请与网页底部的电邮联系)
~

HTTPS目前是网站标配,否则浏览器会提示链接不安全,同HTTP相比比,HTTPS提供安全通信,具体原因是多了个“S”层,或者说SSL层[Secure Sockets Layer],现在一般都是TLS[Transport Layer Security],它是HTTP 明文 通信变成安全 加密通信 的基础,SSL/TLS介于应用层和TCP层之间,从应用层数据进行加密再传输。安全的核心就在加密上:

如上图所示,HTTP明文通信经中间路由最终发送给对方,如果中间某个路由节点抓取了数据,就可以直接看到通信内容,甚至可以篡改后,路由给目标对象,如下:

可见HTTP传输是不安全的,但,如果传输的是只有双方可校验的密文,就可以避免被偷窃、篡改,保证传输的安全性,这就是SSL/TLS层做的事情。

SSL/TLS协议主要从三方面来保证数据传输的安全性:保密、鉴别、完整:

对用户端而言:怎么保证访问的网站就是目标网站?答案就是 证书 。每个HTTPS网站都需要TLS证书,在数据传输开始前,服务端先将证书下发到用户端,由用户根据证书判断是否是目标网站。这其中的原理是什么,证书又是如何标识网站的有效性呢?证书也叫 digital certificate 或者public key certificate,是密码学中的概念,在TLS中就是指CA证书【 由证书的签发机构(Certificate Authority,简称为 CA)颁布的证书 】,好比是权威部门的公章,WIKI百科解释如下:

大意就是证书包含了目标站点的身份信息,并可以通过某种方式校验其合法性,对于任何一个HTTPS网站,你都可以拿到其CA证书公钥信息,在Chrome浏览器中点击HTTPS网站的锁标志,就可以查看公钥信息,并可以导出CA二进制文件:

浏览器就是通过这个文件来校验网站是否安全合法,可以看到,证书其实内置了一个颁发链条关系,根证书机构->次级证书机构->次次级->网站自身,只要验证这个链条是安全的,就证明网站合法,背后的技术其实是 信任链+RSA的非对称加密+系统内置根证书 。CA在颁发证书的时候,会用自己的私钥计算出要颁发证书的签名,其公钥是公开的,只要签名可被公钥验证就说明该证书是由该CA颁发的,核心校验逻辑如下

那么上级的CA又是如何保证安全呢?重复上述操作即可,最终都是靠根证书来验证的,根证书的安全性不需要验证,由系统保证,如此就形成了一个证书的信任链,也就能验证当前网站证书的有效性,证书的信任链校验如下:

TLS协议最大的提升点就是数据的安全,通HTTP通信相比,HTTPS的通信是加密的,在协商阶段,通过非对称加密确定对称加密使用的秘钥,之后利用对称秘钥进行加密通信,这样传输的数据就是密文,就算中间节点泄漏,也可以保证数据不被窃取,从而保证通信数据的安全性。

第三个问题,虽然中间节点无法窃取数据,但是还是可以随意更改数据的,那么怎么保证数据的完整性呢,这个其实任何数据传输中都会有这个问题,通过MAC[Message Authentication Codes]信息摘要算法就可以解决这个问题,同普通MD5、SHA等对比,MAC消息的散列加入了秘钥的概念,更加安全,是MD5和SHA算法的升级版,可以认为TLS完整性是数据保密性延伸,接下来就借助WireShark看看TLS握手的过程,并看看是如何实现身份鉴别、保密性、完整性的。

HTTPS安全通信简化来说: 在协商阶段用非对称加密协商好通信的对称秘钥 ,然后 用对称秘钥加密进行数据通信 ,简易的WireShark TLS/SSL协商过程示意如下:

细化分离后示意如下:

握手分多个阶段,不过一次握手可以完成多个动作,而且也并不是所有类型的握手都是上述模型,因为协商对称秘钥的算法不止一种,所以握手的具体操作也并非一成不变,比如RSA就比ECDHE要简单的多,目前主流使用的都是ECDHE,具体流程拆分如下:

Client Hello是TLS/SSL握手发起的第一个动作,类似TCP的SYN,Client Hello 阶段客户端会指定版本,随机数、支持的密码套件供服务端选择,具体的包数据如下

启动TLS握手过程, 提供自己所能支持各种算法,同时提供一个将来所能用到的随机数

ContentType指示TLS通信处于哪个阶段阶段,值22代表Handshake,握手阶段,Version是TLS的版本1.2,在握手阶段,后面链接的就是握手协议,这里是Client Hello,值是1,同时还会创建一个随机数random给Server,它会在生成session key【对称密钥】时使用。之后就是支持的供服务端选择的密码套件,接下来等服务端返回。

Handshake Type: Server Hello (2),作为对Client Hello的响应 , 确定使用的加密套件 : TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f),密钥协商使用 ECDHE,签名使用 RSA,
数据通信通信使用 AES 对称加密,并且密钥长度是128位,GCM分组,同时生成一个服务端的random及会话ID回传。

这一步服务器将配置的证书【链】发送给客户端,客户端基于上文所述的证书链校验证书的有效性,这里发送的证书是二进制格,可以利用wireshark右键“Export Packet Bytes”功能,导出.CER格式的证书。如下可以看到传输的证书链。

导出的CER格式的证书如下,最关键的就其公钥跟数字签名。

Server Key Exchange是针对选定的ECDHE协商所必须的步骤,Diffie-Hellman模型解释如下:

大意就是ephemeral Diffie-Hellman不会使用证书中的静态公钥参与对称秘钥的生成,而是需要服务端与客户端通过彼此协商确定对称秘钥,而D-H算法模型需要两对非对称秘钥对,各端保留自己的私钥,同时握有双方的公钥,然后基于D-H算法双端可以算出一样的对称加密秘钥,而这就需要C/S互传自己的公钥

服务端做完这一步,其实ECDHE算法中服务端需要提供的信息已经结束,发送 Server Hello Done告诉客户端,然后等待客户端回传它的D-H公钥。

算法:

其中p和g是公开的DH参数,只要P是一个足够大的数,在不知道私钥的情况下,即使截获了双方的公钥,也是很难破解的。

客户端收到服务端的证书后,利用信任链检测证书有效性,同时也会同Server Key Exchange 类似,将自己的Diffie-Hellman公钥发送给Server端,

至此,ECDHE协商所需要的信息都传输完毕, 双方都可以基于ECDHE算法算出的共享密钥,同时结合之前的随机数生成最终的对称加密秘钥:

之后客户端发送Change Cipher Spec与 Encrypted Handshake Message标识握手完成,同时传输一个加密的数据给Server,验证双方确立的秘钥是否正确,这就需要服务端也要重复这个操作给客户端,这样才能验证彼此的加解密一致,即服务端也要来一次Encrypted Handshake Message回传给客户端校验,

走完如上流程,双方就确认了正确的对称加密通道,后面就是TLS的数据通信,其Record Layer的ContentType 也会变成 Content Type: Application Data (23):

最终对称会话密钥包含三部分因子:

Client Hello与Server Hello阶段交换的随机数,是为了提高秘钥的「随机」程度而进行的,这样有助于提高会话密钥破解难度。

HTTPS通过加密与完整性校验可以防止数据包破解与篡改,但对于主动授信的抓包操作是没法防护,比如Charles抓包,在这个场景用户已经风险,并且将Charles提供的证书信任为根证书,这从源头上构建了一条虚拟的信任链:在握手阶段,Charles利用自己的公钥,生成客户端可以信任的篡改证书,从而可以充作中间人进而抓包,所谓中间人攻击,感觉跟Https抓包原理一样,都是要强制添加一个自己的信任根证书。




超详细的wireshark抓包使用教程
通过Wireshark分析TCP三次握手过程,如访问www.huawei.com时,设置过滤条件:ip.addr == 211.162.2.183。三次握手的典型数据包序列如下:客户端SYN: Seq=0, Ack=0 服务端SYN+ACK: Seq=0, Ack=1 客户端ACK: Seq=1, Ack=1每个数据包中的Seq和Ack数值代表发送和接收的数据序列号,TCP ...

wireshark怎么改成中文
以下是更改Wireshark界面语言为中文的步骤:1. 操作系统语言设置:首先,打开操作系统的语言设置。在Windows系统中,可以通过“控制面板”->“时钟、语言和区域”->“区域和语言”来更改语言设置。在macOS中,可以通过“系统偏好设置”->“语言与地区&rdquo...

Wireshark介绍、Wireshark使用教程
wireshark 能获取 HTTP,也能获取 HTTPS,但是不能解密 HTTPS,所以 wireshark 看不懂 HTTPS 中的内容,如果是处理 HTTP,HTTPS 还是用 Fiddler,其他协议比如 TCP,UDP 就用 wireshark。同类产品:tcpview 二、工作流程:(1)确定 Wireshark 的位置。如果没有一个正确的位置,启动 Wireshark 后会花...

如何更改wireshark的界面语言为中文?
首先,打开您的Wireshark,轻轻双击启动,如果还未出现在桌面上,可以在安装目录中找到它。进入主界面后,您会发现眼前的是一个全英文的界面,这是我们今天的起点。点击界面上方的"Edit"选项卡,沿着导航找到并点击"Preferences"按钮,这是调整设置的关键一步。<\/ 接下来,您将进入Wireshark的设置界面,...

wireshark广播帧在哪里看
在Wireshark中,可以通过过滤功能来查看广播帧。要查看广播帧,可以按照以下步骤操作:1. 打开Wireshark软件。2. 在"捕获"选项卡中,选择要进行网络数据包捕获的网络接口。3. 点击"开始"按钮开始捕获数据包。4. 在Wireshark的主窗口中,可以看到捕获到的数据包列表。5. 在过滤栏中输入以下的过滤表达式...

wireshark如何抓包分析wireshark如何抓包
1、抓取报文:下载和安装好Wireshark之后,启动Wireshark并且在接口列表中选择接口名,然后开始在此接口上抓包。2、例如,如果想要在无线网络上抓取流量,点击无线接口。3、点击Capture Options可以配置高级属性,但现在无此必要。4、点击接口名称之后,就可以看到实时接收的报文。5、Wireshark会捕捉系统发送和...

Wireshark抓包教程
抓包界面的启动是 按file下的按钮 然后再点击 如下图所示 这个是网卡的显示,因为我有虚拟机所以会显示虚拟网卡,我们现在抓的是真实网卡上的包所以在以太网卡右边点击start开始抓包 这个就是抓包的界面了(也是主界面) Wireshark主窗口由如下部分组成: 1.菜单——用于开始操作。 2.主工具栏——提供...

wireshark怎么抓包 wireshark抓包详细图文教程
wireshark开始抓包 开始界面 wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。点击Caputre-Interfaces.. 出现下面对话框,选择正确的网卡。然后点击"Start"按钮, 开始抓包 Wireshark 窗口介绍 WireShark 主要分为这几个界面 1. Display Filter(...

wiresshark是什么软件
Wireshark是一种开源的网络分析工具,也是目前最为常用的网络协议分析工具之一。它能够监控网络中的数据,分析流量,从而帮助用户发现网络中的问题,调试网络协议。Wireshark支持多种平台,包括Windows、Linux和MacOS,还能够解析多种协议,提供丰富的过滤和显示选项。2. Wireshark的应用场景 Wireshark广泛应用于...

Wireshark的使用
wireshark的原名是Ethereal,新名字是2006年起用的。当时Ethereal的主要开发者决定离开他原来供职的公司,并继续开发这个软件。但由于Ethereal这个名称的使用权已经被原来那个公司注册,Wireshark这个新名字也就应运而生了。 在成功运行Wireshark之后,我们就可以进入下一步,更进一步了解这个强大的工具。下面是...

呼图壁县18468392229: 如何使用wireshark查看ssl内容 -
郟庆圣约: HTTPS的通讯是加密的,所以默认情况下你只能看到HTTPS在建立连接之初的交互证书和协商的几个消息而已,真正的业务数据(HTTP消息)是被加密的,你必须借助服务器密钥(私钥)才能查看.即使在HTTPS双向认证(服务器验证客户端...

呼图壁县18468392229: 如何用Wireshark查看HTTPS消息里的加密内容 -
郟庆圣约: 1. 配置Wireshark 选中Wireshark主菜单Edit->Preferences,将打开一个配置窗口;窗口左侧是一棵树(目录),你打开其中的Protocols,将列出所有Wireshark支持的协议;在其中找到SSL并选中,右边窗口里将列出几个参数,其中“RSA keys...

呼图壁县18468392229: 如何用wireshark解密ssl报文的文档 -
郟庆圣约: 找到UDP协议调用的入口,直接在你写的协议中调用就可以吧.与wareshark调用你自己写的协议应该是同样的道理,只要是注册了的协议,直接调用就行.

呼图壁县18468392229: 如何解密wireshark抓的https包 -
郟庆圣约: 首先你需要配置一个环境变量. 3.1 在Windows下的配置: 怎么去到环境变量配置页面相信不需要我多说了,毕竟国内还是Windows的天下.4 在上图的位置增加一个新的叫做“SSLKEYLOGFILE”的环境变量并指定其路径到你想要保存你的...

呼图壁县18468392229: ssl和tls在wireshark的区别 -
郟庆圣约: HTTPS.HTTP.SSL/TLS三者的区别和联系 首先,HTTP 是一个网络协议,是专门用来帮你传输 Web 内容滴. 大部分网站都是通过 HTTP 协议来传输 Web 页面、以及 Web 页面上包含的各种东东(图片、CSS 样式、JS 脚本).

呼图壁县18468392229: 为什么Wireshark无法解密HTTPS数据 -
郟庆圣约: HTTPS传输过程中要是解密了,那些做支付的不就要暂停网银了.

呼图壁县18468392229: 怎样看wireshark follow tcp stream -
郟庆圣约: 有时候抓到的包用rtsp过滤了之后,存在多个tcp连接,导致用follow tcp stream功能查看时,找不到想看的数据,这时候就要分清楚抓到的包是否包含了多个rtsp连接的数据.然后找到正确的连接,再使用follow tcp stream功能

呼图壁县18468392229: wireshark 怎么抓https的包 -
郟庆圣约: 直接指定网卡抓 可以试试基于进程抓包QPA工具

呼图壁县18468392229: 如何利用wireshark观察http协议抓包 -
郟庆圣约: Wireshark 一般在抓包的时候无需过滤,直接在数据分析时候过滤出来你想要的数据就成了.1.具体为Capture->Interface->(选择你的网卡)start 这时候数据界面就显示了当前网卡的所有数据和协议了. 2.下来就是找到我们想要的数据教你一...

呼图壁县18468392229: 怎么用wireshark抓包工具看tcp -
郟庆圣约: 找到电脑上的Wireshark软件,点击启动:在主页面,可以看如图.先选择“Local Area Connection”,再选择Start,进行启动:可以看到软件已经启动,点击红色按钮可以stop:如果只想看http的包,在输入框里输入http后,点击apply:可以看到协议全部都是http了:如果想要重新检测,查看包的发送情况,点击此按钮可以选择重新启动监测:可以看到重启后的发包情况:找到你想要监测的那个包,右键选择“Follow TCP stream”:可以看到包里面的详细信息:

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网