Https加密过程
1、Https采用混合加密过程
Https加密分为建立连接前的连接阶段,和建立连接后的通信阶段。
在连接阶段,Https采用非对称加密方式进行连接,公钥加密,私钥解密
2、Https通过摘要算法和数字签名
为了保证数据传输的安全性,发送方==>根据内容计算出一个指纹,和内容一起发送, 接收方===>根据内容生成一个指纹,然后根据指纹进行比对。若不一样,内容则被修改过。
指纹的实现就是通过摘要算法实现的。 摘要算法计算内容的哈希值,这个哈希值是唯一的,而且不能通过哈希值反推内容。
==========>但是并不能证明发送方的内容是客户端发送的,有可能恶意攻击,为了证明指纹是客户端的,
==========>采用非对称加密算法,一个公钥,一个是私钥。公钥和私钥是双向加解密 的,
若是公钥加密,私钥解密====》保证传输内容的安全性,只有持有私钥的人才能解密出内容
若是私钥加密,公钥解密====》保证消息不会被冒充,只有持有私钥的人才能对内容生成指纹
数字签名算法辨识采用私钥加密内容的哈希值,公钥解密。
3、数字证书
摘要算法保证和数据的完整性
数字签名保证消息来源的可靠性
但是还是缺少身份认证的环节,有可能伪造出一对 公钥私钥,当进行私钥加密,公钥解密的时候,用自己的私钥做成数字签名。
====》既然公钥私钥可以 成对伪造 ,那就把公钥向权威机构进行校验合法性,如果公钥能解密数字证书,那就是真的公钥
Https的连接过程
Https建立连接的流程是在三次握手之后,再加上一次SSL校验
SSL协议基本流程:
-
客户端向服务器索要并验证服务器的公钥 -
双方协商生产会话秘钥 -
双方使用回话密钥进行加密通信
详细流程:
- 客户端向服务器发送加密通信请求:客户端支持的SSL版本,客户端生成的
随机数 ,客户端支持的密码套件列表 - 服务端确认SSL/TLS协议版本,如果不支持,则关闭加密通信; 服务端生成
随机数 ,服务端确认密码套件列表,服务端数字证书 - 客户端确认数字证书真实性,证书没问题,则取出公钥,进行加密报文===》客户端加密
随机数 ,发送给服务端; 加密通信算法改变通知,表示后续的信息将用私钥通信。
有了这三个随机数,客户端和服务端使用双方协商的算法,各自生成本次会话的秘钥
- 服务端生成会话密钥之后,向客户端发送:随后的通信将用会话秘钥进行通信,服务端握手结束,返回数据供客户端校验
数字证书的生成过程;
客户端校验数字证书:
- 客户端使用同样的Hash算法获取证书的Hash值H1
- 浏览器收到证书后使用CA的公钥解密数字签名内容,得到一个Hash值H2
- 如果H1与H2相同,则证明为可信赖的证书
|