欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

使用 wireshark 分析淘宝数据流

最编程 2024-04-03 14:49:54
...

一、实验原理:

HTTPS协议、RSA原理

二、实验目的:

深度探究https加密机制、协商机制

三、实验内容:

1. 分析淘宝的数据流(从登陆到退出,每一个数据包进行标注和分析)

2. RSA如何在公网里面分发密钥

3. 为什么有的数据包大于1500字节

......

四、实验环境(设备、元器件)

Wireshark

五、实验步骤及原理

第一问:淘宝数据流分析

  1. 抓包开始

第一步:抓包(一整个流程),但是这里有很多对话,既然我们获取的是淘宝的数据流,那么就会有证书:

ssl.handshake.certificate#查看在握手时候的证书

有一个证书,点击下面的详细内容,加上查询了203.119.212.127是阿里云的IP地址,说明这就是淘宝网的证书

然后通过追踪流TCP流,看到其他数据流交互状态

看到其他数据流,并且有很明显的交互状态。

  1. 下面开始具体分析

三次握手建立成功以后,开始建立ssl连接

我们将连接分为6步(或者可以根据目的ip和源ip再细分)

第一步(请求连接):客户端à服务器

第二步(应答连接):服务器à客户端

连接成功后,服务端再发证书、客户端随机数给客户端,server key exchange 是服务端公钥的的key;待会儿要与客户端密钥交换(密钥协商)

第三步:客户端à服务器,客户端密钥,将明文传输改为密文传输,加密信

息。这个时候还会生成第三个随机数。当然,在接受到CA时,得出里面的公钥后,会随机生成一个客户端随机数。

       第四步:客户端à服务器,客户端发消息给服务器,再次确认加密机制

       第五步:服务器对客户端的发送内容进行确认,提供新的session ticket

       第六步:接着第五步,发送一段内容,并且对所有握手做摘要,发给客户端

来验证通信

这样划分步骤原因很简单,就是分析的时候没有着重看中间TCP内容,按照每次交互划分步骤,感觉有点绕,但是还是可以绕出来。

  1. 下面开始分析6个步骤中的每一个小步骤。

(1)   Client hello

加密套件中表明了使用的加密算法,非对称加密算法,摘要算法记忆使用的是tls还是ssl。故,客户端第一次打招呼就发送了:客户端的随机数,客户端支持的加密套件,sessionid

(2)   Server hello

需要加密的值是客户端à服务器

接下来,服务器将会把公钥证书给客户端

(1)   相互说hello以后,也有了双方的随机数,然后服务器将证书发给客户端。

(2)   接下来,客户端收到了证书,解析证书是否合格,解析完毕后会回应服务端(在TCP层里面,客户端会说,这是回应上一个包的,上一个包的序号就是1405)

(3)   明文à密文

(4)   服务端确定加密请求:

  1. 这里可以看到,1409是对1408的确认(这里是服务器发给客户端:对加密内容的确认),接下来,服务器也将加密传输数据;
  2. 并且,1409这里已经没有ssl协议了,更改为TCP了,接下来的业务数据传输就已经是在加密信道里了。

(5)   接下来,就开始正式的加密数据传输了

  1. 数据流分析完毕

第二问:RSA的密钥分发安全性

  1. RSA位于ssl与协商机制之间,是为了加密非对称算法的密钥,非对称密钥是为了加密后来传输信息的对称加密的密钥。
  2. RSA的密钥分发,RSA作为非对称加密算法,只有一个私钥,公钥虽多,但是通过公钥加密的信息只有私钥拥有者(服务器)才可以解开,当我们(客户端)发出一个加密的消息,只有服务器才有私钥,这样就可以保证安全性。
  3. 在公网里面,

第三问:为何有的数据包大于1500字节

为了提高计算机的效率,网卡设备支持offload特性,来提升网络手法性能,offload就是将本该操作系统进行分片、重组处理的某些数据包,拿给网卡硬件中做,降低了CPU消耗,也提高了处理性能。

Windows系统就设置了mtu,在系统管理器里面可以查看。所以Windows抓包无法大于1500字节。而问题里出现的大于1500字节,是因为Linux系统关闭了offload属性。

第四问:为什么这种机制可以保证数据传输的安全

  1. 这种机制指的是协商机制

协商机制的算法很安全,服务器端的随机数、客户端的随机数、得到公钥后生成的随机数,通过一个密钥导出器,最后得到一个对称密钥。这个过程很安全。

  1. 这种机制是HTTPS协议

http+ssl/tls=HTTPS

建立TCP通信以后,客户端和服务器端建立起连接以后,服务器的CA证书需要通过客户端的层层验证;验证成功后,客户端将CA里面的公钥提取出来,通过非对称加密算法加密生成的随机数,加密传输对称算法的密钥。在加密过程中,无论是使用RSA密钥分发还是DH密钥协商,攻击者都无法轻易破解出私钥,故无法得到后面通信中使用到的对称密钥。再加上后期使用对称密钥加密数据时,采用了一次一密,很难截获密钥。所以HTTPS很安全。

第五问:为什么是三个随机数

在协商算法里面,通过CA生成了一个随机数,再加上客户端、服务器端随机数,通过算法(比如DH,复杂的还有ECDH算法,现在普遍的算法),生成一个最终的密钥,由于有3个“变量”,三个随机数相当于扩充了维度。也是为了安全。

六、实验分析:

收获:

  1. 分发和协商不一样。

分发:

       密钥分发

协商:

1. 客户端连上服务端
2. 服务端发送 CA 证书给客户端
3. 客户端验证该证书的可靠性
4. 客户端从 CA 证书中取出公钥
5. 客户端生成一个随机密钥 k,并用这个公钥加密得到 k'
6. 客户端把 k' 发送给服务端
7. 服务端收到 k' 后用自己的私钥解密得到 k
8. 此时双方都得到了密钥 k,协商完成。

  1. Linux下面查看网卡的属性:ethtool –k eth0

http://blog.nsfocus.net/network-packets-analysis-nic-offload/

  1. Wireshark的搜索规则:

搜索:该层.字段.(不能出现直接的数字)

该层.字段 eq(=)

比如:我们在搜索淘宝的时候,可以通过查找其证书,过滤掉其他多余站点

    1. 密码学相关知识:http://blog.nsfocus.net/network-packets-analysis-nic-offload/