共计 675 个字符,预计需要花费 2 分钟才能阅读完成。
1. 什么是对称加密和非对称加密?
这个详细来说有点复杂,这里简单的说下:
对称加密 就是加密和解密用的是同一个密钥 k。
非对称加密 是发送端使用公开的公钥 a 加密,然后接收端使用私密的私钥 b 解密。
对称加密快,非对称加密安全。对称加密如DES,非对称加密如RSA。
2. 那 https 的加密是用的对称加密还是非对称加密呢?
答案是 —— 两者都用了
这里让我们先看看一个完整的 https 请求的过程:
- 首先,浏览器请求一个 url,找到服务器,向服务器发起一个请求。服务器将自己的证书(包含服务器公钥 S_PuKey)、对称加密算法种类及其他相关信息返回客户端。
- 浏览器检查 CA 证书是不是由可以信赖的 CA 机构颁发的,确认证书有效和此证书是此网站的。如果不是,给客户端发一个警告,询问是否继续访问。
- 如果是,客户端使用公钥加密了一个随机对称密钥,包括加密的 URL 一起发送到服务器。
- 服务器用自己的私匙解密了你发送的钥匙。然后用这把对称加密的钥匙给你请求的 URL 链接解密。
- 服务器用你发的对称钥匙给你请求的网页加密。你也有相同的钥匙就可以解密发回来的网页了。
说起来复杂,简单总结起来就是:
使用非对称加密传输一个对称密钥 K ,让服务器和客户端都得知。然后两边都 使用这个对称密钥 K 来加密解密收发数据 。因为 传输密钥 K 是用非对称加密方式 ,很难破解比较安全。而 具体传输数据则是用对称加密方式,加快传输速度。两全其美。
这么想来,https 的设计真的是一个非常棒的设计,同时兼顾了安全和速度,可以说是比较完善了。
参考资料:
正文完