HTTPS(二):TLS/SSL四次握手及wireshark抓包分析

1. TLS/SSL四次握手流程图:

  HTTPS实现安全通信的方法就是在原有的HTTP层与TCP之间加入TLS/SSL协议层(收发报文不再使用Socket API,而是调用专门的安全接口)。

  在使用对称密钥加密通信之前,HTTPS需要先使用 “密钥交换算法”(非对称密钥加密算法)进行对称密钥的协商,而TLS四次握手的目的也正在于此。 本文中以RSA非对称加密算法为例,说明TLS四次握手的过程。


TLS四次握手流程图:

在这里插入图片描述




2. RSA握手过程wireshark抓包分析:

RAS四次握手的整体示意图:
在这里插入图片描述


2.1 TLS第一次握手:

  客户端发送 Client Hello消息,跟服务器打招呼,其中主要携带:

客户端的TLS版本号(Version)、
客户端支持的加密套件列表(Cipher Suites)、
客户端生成的随机数(Client Random)

在这里插入图片描述


2.2 TLS第二次握手:

2.2.1 Server Hello :

  服务器收到客户端的Client Hello消息后,首先回复 Server Hello 消息,其中主要包括:

服务器确认支持客户端的TLS版本(Version)、
服务器从客户端发来的加密套件列表中选出一个最合适的加密组合(Cipher Suite)、
服务器生成的随机数(Server Random)

在这里插入图片描述

本例中,服务器选择的加密套件为:

Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256

这是 “TLS安全密码套件”的固定格式:

在这里插入图片描述

TLS安全密码套件的基本形式:

密钥交换算法(ECDHE)+签名算法(RSA)+对称加密算法(AES)+摘要算法(SHA256)

(1)“ECDHE” + “RSA” 共同组成了密码套件中的“非对称加密算法”部分:分别用于“密钥交换”和“签名”;
(2)“AES” + “128” + “GCM” 共同组成了密码套件中的“对称加密算法”部分:“AES”指明所采用的对称加密算法的类型;“128”表示AES的密钥长度;“GCM”为“加密分组模式”,可使AES算法用固定长度的密钥加密任意长度的明文,即将密钥转换为密文;
(3)“SHA256” 表示密码套件中的“摘要算法”类型;
(4)“WITH” 关键字用于分割套件中的非对称加密算法部分和对称加密算法部分。


2.2.2 Cerficate :

  随后,服务器为了证明身份,会给客户端发送数字证书,即 Certificate 消息:
(其中包含CA机构为服务器颁发的公钥、CA机构签名等信息)


在这里插入图片描述


一个Certificate证书的结构:

一个CA机构颁发的数字证书大概包含以下几个部分:
  (1)服务器的信息:例如证书拥有者(服务器)的域名等信息;
  (2)服务器的公钥:CA机构为这个服务器颁发的公钥,也是在后续TLS第三次握手时客户端所使用的公钥;
  (3)CA机构的签名:CA机构对证书的签名,即先对证书的明文部分计算哈希值(SHA256)得到摘要后,再用CA机构本身的私钥对摘要进行加密(RSA),得到CA机构的签名。

  从wireshark抓包的结果中可以看到,只有证书的签名部分是使用RSA私钥加密的,其他的服务器信息、服务器公钥部分作为证书的正文数据,是明文的。 因为RSA非对称加密的效率太低,所以只对明文的摘要进行加密,这样运算量就小的多,而且得到的数字签名也很小,方便保管和传输。


在这里插入图片描述


2.2.3 Server Hello Done :

  最后,服务器发送 Server Hello Done 消息给客户端,这条消息中并没有其他有价值的信息,仅仅是为了通知客户端第二次握手中服务器的所有消息都已发送完毕,


在这里插入图片描述


2.3 TLS第三次握手:

2.3.1 Client Key Exchange :

  客户端在收到服务器返回的 Server HelloCertificate 消息后,会使用操作系统内置的CA机构的公钥对证书进行解密,如果解密成功,得到 数据原文 及 摘要值 H1,然后客户端使用与CA机构相同的摘要算法(散列算法,SHA或MD5)对数据原文进行计算得到 摘要值 H2,比较 H1 与 H2,若完全相同则说明证书合法且未被其他人篡改,从而拿到服务器的RSA公钥。

  随后,客户端生成TLS握手过程中的 第三个随机数:PreMaster,并用服务器的公钥对其加密,通过 Client Key Exchange 消息发给服务器:


在这里插入图片描述


2.3.2 Change Cipher Spec :

  接着,客户端使用它所拥有的三个随机数 Client RandomServer RandomPreMaster 去生成 对称加密的密钥:Master Secret。客户端通过 Change Cipher Spec 消息将Master Secret 对称密钥发送给服务器,并通知服务器开始使用对称加密的方式进行通信。

  在此之前的握手消息都是明文的,但只要出现了"Change Cipher Spec" 消息,之后的握手消息就都是密文了,wireshark抓到的数据包也会是乱码。

在这里插入图片描述


2.3.3 Encrypted Handshake Message :

  最后,客户端发送 Encrypted Handshake Message 消息,将之前发送的所有数据做成摘要,使用Master Secret 对称密钥加密(这条消息已经是对称加密),供服务器验证之前握手过程中的数据是否被其他人篡改。


在这里插入图片描述


2.4 TLS第四次握手:

2.4.1 Change Cipher Spec :

  服务器在收到客户端的 Client Key Exchange 消息后,使用RSA私钥对其解密,得到客户端生成的随机数 PreMaster,至此服务器也拥有了与客户端相同的三个随机数:Client RandomServer RandomPreMaster,服务器也使用这三个随机数计算对称密钥,将计算后的结果通过 Change Cipher Spec 消息返回给客户端。
(RSA非对称加密的作用就在于 对第三个随机数"PreMaster"的加密,前面两个随机数都是公开的)


2.4.2 Encrypted Handshake Message :

  服务器通过 Encrypted Handshake Message 消息将之前握手过程中的数据生成的摘要 使用对称密钥加密后 发给 客户端,供客户端进行验证。至此TLS四次握手完毕。


总结TLS四次握手的具体消息流程:

1. client hello			--- tls, client random, cipher suites				

2. server hello			--- tls, server random, cipher suite
3. certificate			--- certificate(pubkey)
4. server hello done

5. client key exchange	--- premaster (encrypted by pubkey)
6. change cipher spec	--- master secret
7. encrypted handshake message(finished)

8. change cipher spec	-- premaster (decrypt premaster by privatekey)
9. encrypted handshake message(finished)

cipher      [ˈsaɪfə(r)]		n. 密码
encrypted   [ɪnˈkrɪptɪd]	v. 把...加密, 加密的

3. TLS四次握手过程中使用到的加密算法分类:

第一类:非对称加密算法:

  RSA:
  ECDHE:

非对称加密算法的作用是在四次握手过程中交换密钥。

第二类:对称加密算法:

  AES:
  DES:

对称加密算法的作用是在完成TLS四次握手后,在数据交换过程中对数据进行加密、解密。

DES = Data Encryption Standard, “数据加密标准”
AES = Advanced Encryption Standard, “高级加密标准”

AES是比DES更完善的对称加密算法。

第三类:散列算法(哈希算法、摘要算法):

 MD5:
 SHA256:

散列算法的作用是对输入的数据生成固定长度的摘要,精简数据量量,且过程不可逆(只能从数据生成摘要,不能从摘要反推出数据)。

SHA是比MD5更完善的散列算法。


注: 文中部分图片来自:
https://www.cnblogs.com/xiaolincoding/p/14274353.html

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值