[信息安全] 3.HTTPS工作流程

简介: 0. 简单回顾 在前面两篇博客中介绍了密码相关的一些基本工具,包括(对称密码,公钥密码,密码散列函数,混合密码系统,消息认证码码,数字签名,伪随机数,数字证书)这几个。其中它们之间也是互相依赖的,我们来简单的梳理一下它们的依赖关系。

0. 简单回顾

在前面两篇博客中介绍了密码相关的一些基本工具,包括(对称密码,公钥密码,密码散列函数,混合密码系统,消息认证码码,数字签名,伪随机数,数字证书)这几个。其中它们之间也是互相依赖的,我们来简单的梳理一下它们的依赖关系。

  1. 对称密码:无。
  2. 公钥密码:无。
  3. 密码散列函数:无。
  4. 伪随机数:可以利用密码散列函数来实现,也可以不使用。
  5. 混合密码系统:对称密码 + 公钥密码 + 密码散列函数。
  6. 消息认证码:密码散列函数 + 对称密码。
  7. 数字签名:密码散列函数 + 公钥密码。
  8. 数字证书:公钥密码 + 数字签名。

这篇要介绍的HTTPS,则把以上这些全都派上场了。

1. HTTPS 简史

在早期HTTP诞生的这几年间,1990年~·1994年,HTTP作为一个应用层协议,它是这样工作的:

后来网景公司开发了SSL(Secure Sockets Layer)技术,然后它就变成了这样的HTTP,也就是HTTPS了:

后来爆发了与IE的世纪大战,网景败北,SSL移交给了IETF(Internat Engineering Task Force)互联网工程任务组,标准化之后变成了现在的TLS,现在一般会把它们两个放在一起称为SSL/TLS。本篇并不关注SSL/TLS具体是如何工作的,只是抽象的解释下HTTPS的一个工作流程。

2. HTTPS 工作流程

  1. Client发起一个HTTPS(https:/demo.linianhui.dev)的请求,根据RFC2818的规定,Client知道需要连接Server的443(默认)端口。
  2. Server把事先配置好的公钥证书public key certificate)返回给客户端。
  3. Client验证公钥证书:比如是否在有效期内,证书的用途是不是匹配Client请求的站点,是不是在CRL吊销列表里面,它的上一级证书是否有效,这是一个递归的过程,直到验证到根证书(操作系统内置的Root证书或者Client内置的Root证书)。如果验证通过则继续,不通过则显示警告信息。
  4. Client使用伪随机数生成器生成加密所使用的会话密钥,然后用证书的公钥加密这个会话密钥,发给Server。
  5. Server使用自己的私钥private key)解密这个消息,得到会话密钥。至此,Client和Server双方都持有了相同的会话密钥
  6. Server使用会话密钥加密“明文内容A”,发送给Client。
  7. Client使用会话密钥解密响应的密文,得到“明文内容A”。
  8. Client再次发起HTTPS的请求,使用会话密钥加密请求的“明文内容B”,然后Server使用会话密钥解密密文,得到“明文内容B”。

简单总结下,HTTPS是使用了证书的一个混合密码系统,其中证书的作用在于传递会话密钥,以及验证网站的真实性;而HTTPS真正的加密操作是由对称密码这个工具负责的(有兴趣的可以找找每个步骤中都用到了密码工具箱中的那些工具)。在windows系统中,可以配置一个名为 SSLKEYLOGFILE 的环境变量,Chrome和Firefox在访问HTTPS站点的时候,会把第4步生成的会话密钥以及其他附属信息,写入到这个文件中:

比如下图:

具体的格式可以参考MDN的一个说明https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format

以上只是一个抽象的HTTPS的一个工作流程,实际上SSL/TLS所做的工作远不止这这些,更详细的解释请参考这篇文章:http://www.infoq.com/cn/articles/HTTPS-Connection-Jeff-Moser

如有错误之处,欢迎指正!

3. 参考

SSL/TLS:https://en.wikipedia.org/wiki/Transport_Layer_Security

IETF:https://en.wikipedia.org/wiki/Internet_Engineering_Task_Force

HTTPS:https://en.wikipedia.org/wiki/HTTPS

HTTPS 连接最初的若干毫秒:http://www.infoq.com/cn/articles/HTTPS-Connection-Jeff-Moser

HTTPS on Stack Overflow: The End of a Long Road:https://nickcraver.com/blog/2017/05/22/https-on-stack-overflow/

SSL/TLS部署最佳实践:https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices

HTTP Over TLS:https://tools.ietf.org/html/rfc2818

SSLKEYLOGFILE:https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format

作者: Blackheart
目录
相关文章
|
8月前
|
网络协议 算法 Shell
来我们探究一下net/http 的代码流程
来我们探究一下net/http 的代码流程
|
11月前
|
自然语言处理 安全 网络协议
HTTPS的加密机制和加密流程?
HTTPS的加密机制和加密流程?
100 0
|
4天前
|
安全 网络协议 算法
Android网络基础面试题之HTTPS的工作流程和原理
HTTPS简述 HTTPS基于TCP 443端口,通过CA证书确保服务器身份,使用DH算法协商对称密钥进行加密通信。流程包括TCP握手、证书验证(公钥解密,哈希对比)和数据加密传输(随机数加密,预主密钥,对称加密)。特点是安全但慢,易受特定攻击,且依赖可信的CA。每次请求可能复用Session ID以减少握手。
15 2
|
2月前
|
安全 算法 网络安全
HTTPS 的加密流程
HTTPS (Hyper Text Transfer Protocol Secure) 是基于 HTTP 协议之上的安全协议,用于在客户端和服务器之间通过互联网传输数据的加密和身份验证。它使用 SSL/TLS (Secure Sockets Layer/Transport Layer Security) 协议来保护数据的安全性,可以防止数据被窃听、篡改或伪造。
44 3
|
2月前
|
安全 搜索推荐 数据安全/隐私保护
深入探讨HTTPS协议的原理和工作流程
【2月更文挑战第10天】
101 4
深入探讨HTTPS协议的原理和工作流程
|
2月前
|
安全 网络安全 CDN
阿里云CDN HTTPS 证书配置流程
阿里云CDN HTTPS 证书配置流程
374 1
|
2月前
|
存储 网络安全 数据安全/隐私保护
Windows Server 2019 IIS HTTPS证书部署流程详解
Windows Server 2019 IIS HTTPS证书部署流程详解
189 0
|
11月前
|
存储 安全 算法
关于 HTTPS 的加密流程
关于 HTTPS 的加密流程
135 1
|
2月前
|
安全 网络协议 算法
是时候理解下HTTPS的原理及流程了
是时候理解下HTTPS的原理及流程了
35 0
|
11月前
|
Web App开发 安全 算法
JavaEE-HTTPS的加密流程
JavaEE-HTTPS的加密流程