前面我们在分析浏览器访问一个页面步骤的时候涉及了HTTP请求响应过程。
而HTTP是明文传输的,这就意味着介于发送端和接收端之间的任意节点都可以知道传输的内容是什么,这些节点可以是路由器、代理等。
因此,HTTPS出现了,其是以安全为目标的HTTP通道,全称是Hyper Text Transfer Protocal over Secure Socket Layer,即在HTTP之下加入了SSL(安全套套接层),用于安全的HTTP数据传输。
TLS(传输层安全)跟SSL(安全套接字)可以理解成类似的东西,可以将SSL理解成负责对HTTP的数据进行加密的加密套件,而TLS是SSL的升级版/继任者。
一些概念
- HTTPS
- SSL
- TSL
- CA
- 公钥
- 私钥
- 对称密钥
一个图
在通过对HTTPS的建立过程(SSL建立安全会话的过程)进行了解学习后,对客户端、服务器、CA三方在这个过程中的交互做了一个简单的图。因为涉及的东西较多,下面只对建立过程进行一个整体认识。
另一个图
其实客户端生成随机数密码(对称密钥/协商密钥)依赖于随机数random_C、随机数random_S、随机数Pre-Master。
此外,服务器还有一个对对称密钥的验证过程。
根据进一步学习了解,绘制了个比前面“一个图”复杂但是更准确点的“另一个图”。
服务器和客户端的验证过程其实就是使用Hash算法计算握手信息,并使用对称密钥解密对方发过来的信息,对两者进行比较,如果一致则说明己方的对称密钥跟对方是一致的,即正确的。
(这里的握手信息指的是双方的通信信息/参数,是双方都存有的数据。)
一开始客户端和服务器协商的加密算法其实是一个加密套件,其中包括了认证算法 Au (身份验证)、密钥交换算法 KeyExchange(密钥协商)、对称加密算法 Enc (信息加密)和信息摘要 Mac(完整性校验)。
参考:
版权声明:本文为u011779724原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。