网络:简述HTTPS工作流程中的加密与解密
网络:简述HTTPS工作流程中的加密与解密
我们先来看客户端发起 “https://www.domain.com/” 请求的流程图:
上图流程中的解释如下:
- client 发出请求;
- server 收到请求,并自己生成一对**,即服务端公钥Server-Public 和服务端私钥Server-Private;
- server 把生成的服务端公钥Server-Public传递给 client (除了服务端公钥Server-Public,还有很多额外信息);
- client 收到服务端公钥Server-Public后进行判断,若无效,弹出警告;否则生成一串随机数,我们称之为客户端私钥Client-Private ,然后 client 用 server 传过来的服务端公钥Server-Public对该随机数加密,形成加密后的 【客户端私钥Client-Private】;
- client 把加密后的 【客户端私钥Client-Private】 传递给 server;
- server 收到加密后的 【客户端私钥Client-Private】,用服务端私钥Server-Private把加密后的 【客户端私钥Client-Private】 解密成未加密的客户端私钥Client-Private,然后把需要传递的数据用 未加密的客户端私钥Client-Private进行加密 【数据】;
- server 把加密后的 【数据】 传递给 client;
- client 收到加密后的 【数据】,用 客户端私钥Client-Private 解密,完成一次交互,反之亦然。
整体流程就是这样,涉及到对称加密和非对称加密。利用非对称加密的安全性来加密那一串随机数 - - 客户端私钥Client-Private ,利用对称加密的快捷性来加密报文数据,总体来说就是把真正加密解密的**(客户端私钥Client-Private )用 服务端公钥Server-Public 和 服务端私钥Server-Private来加密。
补充:
1 . 对称加密是指加密和解密用一致的**,特点是快。
2 . 非对称加密是指**区分公钥和私钥,公钥加密,私钥解密(私钥好比唯一的一把钥匙,公钥好比锁,钥匙只有一把,但锁可以有很多,被锁头锁上的数据全天下只有一把私钥才能打开),特点是安全,但是慢。
注意: 本文只进行简单的描述,未深入讲解HTTPS的加密流程。例如:第三步发送给客户端的是ssl证书;第四步是根据系统中认证的证书机构,判断ssl证书的正确性,包括ssl证书的颁发机构,有效期,数字签名等。若无效,弹出警告;否则生成一串随机数(客户端私钥Client-Private) ,除此之外还有后续通讯用的对称加密算法等。
参考:https://www.jianshu.com/p/a68ca86183d7