数据和安全③Https协议分析

可以查看前面两篇文章

数据和安全①加解密理论概述 ,数据和安全②HTTPS单向和双向认证

对ssl感兴趣的可以看看:

ssl 1.0 2.0 3.0存在漏洞不推荐使用

传输层安全协议tls由TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)组成

建立在ssl之上;

https://kb.cnblogs.com/page/197396/ ssl和tls介绍

最新的boringssl和较旧的OpenSSL

Https的单向验证和双向验证

单向验证是客户端验证服务端证书是否可信;

双向验证是客户端和服务端相互验证对方的证书是否可信;

1、client hello客户端发送请求(支持加密和摘要算法、协议版本等 + 随机数A)向服务端请求信息

2、server hellio 服务端发送(选择的加密算法、协议等 + 服务端证书 + 随机数B

如果是双向认证: 服务端还会请求客户端证书

3、客户端接收到信息,用内置在操作系统中的CA机构公钥判断信息是否合法

4、验证通过后,客户端使用服务端公钥对信息加密(随机数C

如果是双向验证:客户端向服务端发送客户端证书(服务端使用步骤3判断信息时候合法)

5、服务端接收到消息根据随机数A B C生成对称加密秘钥MS,发送消息通知开始加密通讯

6、客户端同样根据随机数A B C生成对称加密秘钥MS,验证消息无误后双方开始通讯

数据和安全③Https协议分析_第1张图片

抓包分析HTTPS协议

对抓包和http不太了解的查看文章 看见协议,浅析TCP、HTTP、MQTT

在数据和安全②HTTPS单向和双向认证中我们完成了https单向验证和双向验证的过程,现在抓包如下:

单向验证

数据和安全③Https协议分析_第2张图片

1、client hello

327 client hello TLSv1.2 249 Client Hello

客户端向指定域名的服务器发起https请求,请求内容包括:

1)客户端支持的SSL/TLS协议版本列表
2)支持的对称加密算法列表
3)客户端生成的随机数A

2、server hello

329 server hello TLSv1.2 1506 Server Hello, Certificate, Server Key Exchange, Server Hello Done

服务器收到请求后,回应客户端,回应的内容主要有:
1)SSL/TLS版本。服务器会在客户端支持的协议和服务器自己支持的协议中,选择双方都支持的SSL/TLS的最高版本,作为双方使用的SSL/TLS版本。如果客户端的SSL/TLS版本服务器都不支持,则不允许访问
2)与1类似,选择双方都支持的最安全的加密算法。
3)从服务器密钥库中取出的证书
4)服务器端生成的随机数B

3、client认证完成

TLSv1.2 159 Client Key Exchange

### 生成最后随机数C
客户端生成随机数C,使用服务端公钥加密传递

TLSv1.2 90 Change Cipher Spec 通知server参数协商完成

TLSv1.2 153 Encrypted Handshake Message 对称加密握手信息

Encrypted handshake message是使用对称秘钥进行加密的第一个报文,如果这个报文加解密校验成功,那么就说明对称秘钥是正确的,待验证。。

标志后面client开始加密传递信息

 

4、Server认证完成

TLSv1.2 90 Change Cipher Spec 通知client参数协商完成

TLSv1.2 153 Encrypted Handshake Message 对称加密握手信息

标志后面server开始加密传递信息

 

5、数据传输

TLSv1.2 281 Application Data

 

双向验证

数据和安全③Https协议分析_第3张图片

 1、client hello

46 TLSv1.2 269 Client Hello

客户端向指定域名的服务器发起https请求,请求内容包括:

1)客户端支持的SSL/TLS协议版本列表
2)支持的对称加密算法列表
3)客户端生成的随机数A

2、server hello

49 TLSv1.2 273 Server Hello, Certificate, Server Key Exchange, Certificate Request, Server Hello Done

服务器收到请求后,回应客户端,回应的内容主要有:
1)SSL/TLS版本。服务器会在客户端支持的协议和服务器自己支持的协议中,选择双方都支持的SSL/TLS的最高版本,作为双方使用的SSL/TLS版本。如果客户端的SSL/TLS版本服务器都不支持,则不允许访问
2)与1类似,选择双方都支持的最安全的加密算法。
3)从服务器密钥库中取出的证书
4)服务器端生成的随机数B
5) 相比单向认证多了请求客户端证书

 3、client证书和认证

53 TLSv1.2 1158 Certificate, Client Key Exchange

客户端证书、随机数C

57 TLSv1.2 353 Certificate Verify 证书验证完成

4、client认证完成

TLSv1.2 90 Change Cipher Spec 通知server参数协商完成

TLSv1.2 153 Encrypted Handshake Message 对称加密握手信息

Encrypted handshake message是使用对称秘钥进行加密的第一个报文,如果这个报文加解密校验成功,那么就说明对称秘钥是正确的。

标志后面client开始加密传递信息

5、Server认证完成

TLSv1.2 90 Change Cipher Spec 通知client参数协商完成

TLSv1.2 153 Encrypted Handshake Message 对称加密握手信息

标志后面server开始加密传递信息

6、数据传输

TLSv1.2 281 Application Data

你可能感兴趣的:(数据和安全,#,Http)