HTTPS协议分析

实验目的

1、https的基本概念和工作流程

2、学会捕获https封包

3、学会筛选重要的https封包

4、学会解密https数据包

实验工具

?wireshark

实验环境

?操作机:Windows XP

实验步骤

HTTPS的工作流程

使用HTTPS协议工作时,服务端和客户端的信息传输都会进行加密,所以传输的数据都是加密后的数据。HTTPS的工作流程如下:

1、客户端使用HTTPS的URL访问Web服务器,要求与Web服务器建立SSL连接。
2、Web服务器收到客户端的请求后,会将网站包含有公钥的证书信息传送一份给客户端。
3、客户端浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
4、客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
5、Web服务器利用自己的私钥解密出会话密钥。
6、Web服务器利用会话密钥加密与客户端之间的通信。

HTTPS数据包的捕获

由于HTTPS是建立在TCP协议之上的,所以我们在捕获之前,可以设置筛选器为TCP。开始捕获后,可以通过登录QQ邮箱的方式,捕获到含有HTTPS协议的数据包。如下图所示:

在这个界面的Info列中,可以看到这些数据包都是使用HTTPS协议传输的。而在Protocol列中,可以看到SSLTCP以及TLSv1.1等协议。其中的TLS(Transport Layer Security)其实是SSL的升级版,是为网络通信提供安全及数据完整性的一种安全协议。二者都是在传输层对网络连接进行加密的。

为了便于进一步的分析,这里我们通过着色后提取数据包的方式,将我们需要的数据包提取出来,这里不再赘述(自行学习wireshark的使用)。

HTTPS数据包的分析

经过提取后的文件进行分析:

首先可以发现1到3号数据包是TCP连接建立时的三次握手的过程。接下来从第4个数据包开始,其实就是SSL握手过程中所产生的数据包,也就是使用HTTPS协议加密的信息。

对于第4个数据包,包含有客户端向服务器发送的Client Hello信息,以便开始一个新的加密会话连接。展开SSL区段,可以看到客户端支持的TLS的版本(Version);生成的随机数(Random,以便用于生成对话密钥);Cipher Suites的值是15,说明支持15种加密算法;支持的压缩方式(Compression)以及一些扩展(Extension)等:

当服务器收到客户端的请求后,就会向客户端发出响应,也就是Server Hello。对于我们这个捕获文件而言,第6个数据包就是服务器发送给客户端的确认信息,告诉客户端请求已经收到:

展开SSL数据段,可以看到服务器支持的TLS版本为1.1。也可以看到服务器生成的随机数,用于生成对话密钥。下面还有加密套件信息,这里的加密套件表示使用RSA公钥算法来验证证书以及交换密钥,用AES加密算法对数据进行加密,使用SHA算法来校验消息内容。

客户端收到服务器的响应后,首先验证服务器的证书。如果证书不是由可信任的机构颁发的,或者证书中的域名与实际域名不一致,或者证书已过期,就会向访问者显示一个警告,由访问者选择是否还要继续通信。如果证书没有问题,客户端就会从证书中取出服务器的公钥。然后,向服务器发送一些信息,包括用服务器公钥加密的随机数编码改变通知客户端握手结束通知等。服务器发送给客户端的数据包,如下图所示:

在Certificate区段中,保存有证书的详细信息。可以看到请求的网站、组织名、地区名、省名以及国家等的信息。紧接下来的signedCertificate是签名证书信息。“签名”的作用就在于,客户端(浏览器)在确定是否要信任一个网站时,就是通过证书判断的。所以每个证书上必须要有一份“签名”。最后一行Length的值为0,表示告诉客户端“Hello”过程已经完成,也就意味着服务器将不验证客户端的证书。

在客户端收到并验证服务器响应的证书后,将会把生成的密钥传给服务器,如下图所示:

在Client Key Exchange中,我们可以看到TLS的类型、版本、长度、握手协议、握手类型、长度、密钥交换算法客户端参数、公钥长度以及加密公钥等信息。而在其它的两个记录中,也有着类似的结构。

经过以上几个阶段,整个握手过程也就结束了。接下来客户端与服务器进入加密通信的阶段,就完全是使用普通的HTTP协议,但是会使用会话密钥来加密内容。用户可以发送通过TLS层使用RC4加密的HTTP的消息,也可以解密服务端发送来的由RC4加密的消息。此外还会通过哈希算法来验证消息是否被篡改。

在应用层,客户端向服务器发送的信息为:

可见,发送的数据都经过了加密处理。服务器响应客户端的信息,如下图所示:

可以看到,这也是使用了SSL进行加密。

了解HTTPS数据包的解密

HTTPS的数据包并不是绝对安全的,在一定的条件下也可以实现解密的操作,这里我们分析以下实验文件:

可以看到,这里的数据包使用了SSLv3进行加密。为了实现解密,我们需要.key文件。之后在Wireshark中选择菜单栏的“Edit”->”Preferences”->”Protocols”->”SSL”->”RSA keys list”->”Edit”->”New”,之后进行如下填写:

之后点击OK,就可以实现解码了:

现在已经可以看到GET方法等信息。尽管我们对捕获文件进行了解码操作,但是并不意味着HTTPS不安全。因为解码所需要使用的密钥只能在服务器导出,不同的服务器的情况并不一样,因此想要破解HTTPS的数据包,是需要满足很多的条件的。

参考资料

【1】https://www.ichunqiu.com/course/51451

【2】谢希仁. 计算机网络.第5版[M]. 电子工业出版社, 2008.

原文地址:https://www.cnblogs.com/Erma/p/10322963.html

时间: 2024-10-13 07:18:15

HTTPS协议分析的相关文章

HTTP协议与HTTPS协议的区别

这节我们先简单地回顾HTTP协议和HTTPS协议 一.HTTP和HTTPS的基本概念 HTTP: 是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少.HTTP协议分析参见<https://www.cnblogs.com/Erma/p/10325998.html> HTTPS: 是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS

Https协议:SSL建立过程分析(也比较清楚,而且有OpenSSL的代码)

web访问的两种方式: http协议,我们一般情况下是通过它访问web,因为它不要求太多的安全机制,使用起来也简单,很多web站点也只支持这种方式下的访问. https协议(Hypertext Transfer Protocol over Secure Socket Layer),对于安全性要求比较高的情况,可以通过它访问web,比如工商银行https://www.icbc.com.cn/icbc/(当然也可以通过http协议访问,只是没那么安全了).其安全基础是SSL协议. SSL协议,当前版

大型网站的 HTTPS 实践(1):HTTPS 协议和原理

转自:http://op.baidu.com/2015/04/https-s01a01/ 1 前言 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS.本文重点介绍 HTTPS 协议, 并简单介绍部署全站 HTTPS 的意义. 2 HTTPS 协议概述 HTTPS 可以认为是 HTTP + TLS.HTTP 协议大家耳熟能详了,目前大部分 WEB 应用和网站都是使用 HTTP 协议传输的. TLS 是传输层加密协议,它的前身是 SSL 协议,最早由 ne

Loadrunner对https协议(单双向SSL)的web端性能测试

1.项目背景 1.1 单双向SSL的含义及部署 单向SSL即我们说到的https协议. 特点是,浏览器需要请求验证服务器证书: 基本含义是:一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息.它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版. 双向SSL顾名思义就是双方都需要验证证书的协议,浏览器首先向服务端请求证书,然后服务器端需要向浏览器请求目前登陆用户的个人证书验证. 1.2 系统的基本部署 单向SSL交互过程: 使用单向SSL时,仅通过虚拟主

2016-09-02 16:50:15 webqq 协议分析

2016-09-02 16:50:15 webqq 协议分析 1. 扫描二维码登录 https://ssl.ptlogin2.qq.com/ptqrlogin?webqq_type=10&remember_uin=1&login2qq=1&aid=501004106&u1=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&ptredirect=0&ptlang=2052&a

协议分析TMP

最近闲来有事, 分析了一个非常低端(非常低端的意思是说你不应该对她是否能取代你现有的QQ客户端作任何可能的奢望,她只是一个实验性的东西)的手机QQ的协议, 是手机QQ3.0,      所用到的TCP/HTTP通信协议版本是1.4, 也不知道是哪一年release的了, 至少有七八年的历久了吧, 反正就是: 功能非常弱! 主要的分析原因是想学学网络方面的编程经验(这是我第2次弄socket编程 :-) ), 以及学学怎么抓包分析. 主要用到的工具软件 手机QQ3.0: http://www.ru

[转载] TLS协议分析 与 现代加密通信协议设计

https://blog.helong.info/blog/2015/09/06/tls-protocol-analysis-and-crypto-protocol-design/?from=timeline&isappinstalled=0 最近发现密码学很有意思,刚好还和工作有点关系,就研究了一下,本文是其中一部分笔记和一些思考. 密码学理论艰深,概念繁多,本人知识水平有限,错误难免,如果您发现错误,请务必指出,非常感谢! 本文禁止转载 本文目标: 学习鉴赏TLS协议的设计,透彻理解原理和重

HTTPS协议的实现原理

要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接”)3. 大致了解加密算法的概念(尤其是“对称加密与非对称加密”的区别)4. 大致了解 CA 证书的用途 考虑到很多技术菜鸟可能不了解上述背景,俺先用最简短的文字描述一下.如果你自认为不是菜鸟,请略过本章节,直接去看“HTTPS 协议的需求”. 先澄清几个术语——HTTPS.SSL.TLS 1. “

大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理

声明:本系列文章(共约4篇)转发自酷勤网,中间有我个人的修改或者注释. 前言 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP请求跳转成HTTPS.本文重点介绍HTTPS协议, 并简单介绍部署全站HTTPS的意义. HTTPS 协议概述 HTTPS可以认为是 HTTP + TLS.HTTP 协议大家耳熟能详了,目前大部分 WEB 应用和网站都是使用 HTTP 协议传输的. TLS 是传输层加密协议,它的前身是 SSL 协议,最早由 netscape 公司于 1995 年发布,