对称加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;
非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。
由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。
非对称加密
1. 有公钥和密钥,公钥可以公开由任何人持有,而私钥由自己持有;
2. 公钥加密的信息只能由对应的私密解密,同样,私钥加密的信息只能由对应的公钥解密。
https 协议数据加密、数据传输全过程:
证书验证:
1)客户端向服务器端发起 HTTPS 请求;
2)服务端返回 HTTPS 证书(包含服务端的公钥);
3)客户端验证证书是否合法,如果不合法则提示警告,如果合法则在本地生成对称密钥;
非对称加密传输密钥:
4)客户端通过公钥加密对称密钥,并把加密后的对称密钥传输到服务端;
5)服务端通过私钥进行解密,获得(已用公钥加密过的)对称密钥;数据传输:
6)这样可以在确保交换的密钥安全的前提下,使用对称加密方式进行通信。
SSL/TLS协议的基本过程:
(1) 客户端向服务器端发起 HTTPS 请求索要并验证公钥。
(2) 双方协商生成"对话密钥"。
(3) 双方采用"对话密钥"进行加密通信。
上面过程的前两步,又称为"握手阶段"(handshake)。
tcp协议,是位于传输层上的协议。http和https都是位于应用层的协议。
所以,无论是http还是https,发送数据时,都会经过tcp协议对数据的封装过程,接收数据时,都会经过tcp协议对数据的解封过程。