0x01 分析淘宝网站的https数据流

打开淘宝 wireshark抓取到如下

wireshark分析https-LMLPHP

第一部分:

因为https是基于http协议上的,可以看到首先也是和http协议一样的常规的TCP三次握手的连接建立,请求的是服务器的443端口。

1.客户端向443端口发送SYN信号

2.服务端回应连接,ACK

3. tcp/ip三次握手完成

wireshark分析https-LMLPHP

wireshark分析https-LMLPHP

第二部分:

接下来从第4个数据包开始,其实就是SSL握手过程中所产生的数据包,也就是使用HTTPS协议加密的信息。

1、  初始化阶段。客户端创建随机数,发送ClientHello 将随机数连同自己支持的协议版本、加密算法和压缩算法发送给服务器。服务器回复ServerHello将自己生成的随机数连同选择的协议版本、加密算法和压缩算法给客户端:

wireshark分析https-LMLPHP

wireshark分析https-LMLPHP

wireshark分析https-LMLPHP

wireshark分析https-LMLPHP

2、  认证阶段。服务器发送ServerHello的同时可能将包含自己公钥的证书发送给客户端(Certificate),并请求客户端的证书(Certificate Request)。

wireshark分析https-LMLPHP

wireshark分析https-LMLPHP

wireshark分析https-LMLPHP

3、  密钥协商阶段。客户端验证证书,如果收到Certificate Request则发送包含自己公钥的证书,同时对此前所有握手消息进行散列运算,并使用加密算法进行加密发送给服务器。同时,创建随机数pre-master-secret并使用服务器公钥进行加密发送。服务器收到这个ClientKeyExchange之后解密得到pre-master-secret。服务器和客户端利用1阶段的随机数,能够计算得出master-secret。

wireshark分析https-LMLPHP

2、  握手终止。服务器和客户端分别通过ChangeCipherSpec消息告知伺候使用master-secret对连接进行加密和解密,并向对方发送终止消息(Finished)。

0x02 RSA在https中如何分发密钥

密钥管理和分发

密钥管理要求

  • 对于一个密钥加密方案,双方必须共享同一密钥
  • 必须保护密钥不被其他人访问
  • 钥匙应该定期更换
  1. RSA位于ssl(这里暂且叫它为安全协议),协商机制之间,是为了加密非对称算法的密钥,非对称密钥是为了加密后来传输信息的对称加密的密钥。
  2. RSA的密钥分发,RSA作为非对称加密算法,只有一个私钥,公钥虽多,但是通过公钥加密的信息只有私钥拥有者(服务器)才可以解开,这样就可以保证安全性。

 

0x03为什么有的数据包大于1500字节

在测试的时候,发现有些时候用wireshark抓到的包中含有很多大于mtu的数据包。查资料得知,这是因为网卡有设置tcp-segmentation-offload。这是操作系统为了减轻负担,提高处理效率的一种方法。

tcp-segmentation-offloadTSO:

TSO (TCP Segmentation Offload) 是一种利用网卡替代CPU对大数据包进行分片,降低CPU负载的技术。如果数据包的类型只能是TCP,则被称之为TSO。此功能需要网卡提供支持。TSO 是使得网络协议栈能够将大块 buffer 推送至网卡,然后网卡执行分片工作,这样减轻了CPU的负荷,其本质实际是延缓分片。

比如我自己再linux环境下测试开启TSO和关闭TSO的区别

查看网卡是否支持TSO

用到的是ethtool命令,ethtool 是用于查询及设置网卡参数的命令

首先查看网卡

wireshark分析https-LMLPHP

在用ethtool -k ens33命令查看网卡TSO功能状态

wireshark分析https-LMLPHP

是关闭的 这时候抓包,发现大小都没有超过MTU值的

现在打开网卡的TSO,官方用法

wireshark分析https-LMLPHP

不过我的虚拟机网卡不支持这个功能,打开后应该会捕获到超过MTU值大小的数据包

wireshark分析https-LMLPHP

05-12 17:40