不抓包,如何学的了HTTPS

测试背景

抓包工具:Wireshark

本机ip:10.129.135.155

目标网站:https://segmentfault.com/

握手过程

不抓包,如何学的了HTTPS_第1张图片

抓包截图

不抓包,如何学的了HTTPS_第2张图片

一目了然,No33,44,45,是TCP的三次握手,除此之外,建立TLS/SSL连接,也需要先建立握手

1. Client Hello

不抓包,如何学的了HTTPS_第3张图片

主要向服务端传递的信息

  • Version:客户端支持的版本
  • Random:客户端生成的随机数
  • Cipher Suites:客户端支持的密码套件
  • Compression Methods:客户端支持的压缩方法

2. Server Hello

不抓包,如何学的了HTTPS_第4张图片

主要向客户端传递选择的版本,密码套件和压缩方法,以及服务端生成的随机数

每个密码套件的名称定义一个密钥交换算法、一个批量加密算法、一个消息认证码(MAC)算法,以及一个伪随机函数(PRF)

在上面的例子中,

  • 密钥交换算法:ECDHE_RSA
  • 批量加密算法:AES_128_GCM
  • 消息认证算法:SHA256
  • 伪随机函数:TLS 1.2的伪随机函数使用MAC算法的散列函数来创建一个主密钥——连接双方共享的一个48字节的私钥

3. Certificate

不抓包,如何学的了HTTPS_第5张图片

服务端向客户端发送证书,

4. Server Key Exchange

不抓包,如何学的了HTTPS_第6张图片

服务端向客户端发送密钥交换的额外数据

5. Server Hello Done

不抓包,如何学的了HTTPS_第7张图片

服务端告诉客户端消息发送完毕

6. Client Key Exchange

不抓包,如何学的了HTTPS_第8张图片

客户端传递交换密钥所需要的信息

7. Encrypted Handshake Message

不抓包,如何学的了HTTPS_第9张图片

客户端的发送的消息已被加密

8. New Session Ticket

不抓包,如何学的了HTTPS_第10张图片

9. Encrypted Handshake Message

不抓包,如何学的了HTTPS_第11张图片

服务端发送的消息已被加密

密码规格变更协议,Change Cipher Spec Protocol

不抓包,如何学的了HTTPS_第12张图片

客户端和服务端会先后向对方发送Change Cipher Spec Message,告之对方要切换密码

HTTPS

解决的是

  1. 机密性的问题
  2. 完整性的问题
  3. 认证的问题

要确保机密性,可以使用对称密码。

由于对称密码的密钥不能被攻击者预测,因此我们使用伪随机数生成器来生成密钥。

若要将对称密码的密钥发送给通信对象,可以使用公钥密码或者Diffie-Hellman密钥交换。

要识别篡改,对数据进行认证,可以使用消息认证码。消息认证码是使用单向散列函数来实现。

要对通信对象进行认证,可以使用对公钥加上数字签名所生成的证书

相关问题

如何保证公钥不被篡改?

将公钥放在数字证书中,只要证书可信,公钥就可信

公钥加密计算量太大,如何减少耗用时间?

每一次对话(session),客户端和服务端都生成一个“对话密钥”,用它来加密信息。由于“对话密钥”是对称加密,所以运算速度非常快,而服务器公钥只用于加密“对话密钥”本身,这样就减少了加密运算的消耗时间

简述SSL/TLS协议的基本过程

  1. 客户端向服务端索要并验证公钥
  2. 双方协商生成“对话密钥”
  3. 对方采用“对话密钥”进行加密通信

SSL/TLS协议中第三次握手,客户端的回应

  1. 一个随机数,该随机数用服务器公钥加密
  2. 密码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送
  3. 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是发送前面所有内容的hash值,用来供服务器校验

SSL/TLS协议中的第四次握手,服务端的最后回应

  1. 密码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送
  2. 服务端握手结束通知,表示服务端的握手阶段已经结束。这一项同时也是发送前面所有内容的hash值,用来供客户端校验

三个随机数

不抓包,如何学的了HTTPS_第13张图片

不抓包,如何学的了HTTPS_第14张图片

会话密钥是通过三个随机数生成的,是对称密码的密钥,也是非对称密码的明文

消息认证码

消息认证码,Message authentication code,MAC,是一种确认完整性并进行认证的技术

消息认证码的输入包括任意长度的消息和一个发送者与接收者之间共享的密钥,它可以输出固定长度的数据,这个数据称为MAC值

消息认证码是一种与密钥相关联的单向散列函数

消息认证码的局限在于无法防止否认,服务端也有密钥,可以生成MAC

不抓包,如何学的了HTTPS_第15张图片

数字签名

公钥密码包括一个有公钥和私钥组成的密钥对,其中公钥用于加密,私钥用于解密

数字签名的过程中,用私钥加密来生成签名,用公钥解密来验证签名

不抓包,如何学的了HTTPS_第16张图片

不抓包,如何学的了HTTPS_第17张图片

不抓包,如何学的了HTTPS_第18张图片

证书

为公钥加上数字签名

公钥证书,Public-Key Certificate,PKC

认证机构,Certification Authority,CA,能够认定公钥确实属于此人

证书一般包括,签名对象的信息包括公钥,数字签名的算法,数字签名

不抓包,如何学的了HTTPS_第19张图片

公钥基础设施,PKI

Public-Key Infrastructure,是为了能够有效地运用公钥而制定的一系列规范的总和

参考资料

  • HTTPS原理详解
  • SSL/TLS协议的运行原理浅析,客户端与服务端的四次握手通信
  • 图解密码技术

你可能感兴趣的:(ssl,https,计算机网络)