网络原理-HTTPS
1. HTTPS是什么
HTTPS是在应用层上的协议, 基于HTTP进行加密
HTTP协议内容都是按照文本内容进行明文传输,容易使得内容被"劫持"。
十年前,经常有下载链接被劫持,就会产生下载图片和下载链接不是一个产品的现象
2. 对称加密
简而言之,对称加密就是:加密和解密都用的同一把锁,和同一把钥匙
- 因为密钥不管一开始从哪里生成,都需要让对方知道本次通信的密钥是什么,只有密钥对应起来才能进行通信
- 所以在密钥传输的过程中容易被劫持
- 这样的弊端显而易见,如果黑客在服务器和客户端之间,那么就很容易能够知道C-S之间通信的密钥,那么这个加密就会形同虚设。
- 即使不同的客户端使用自己生成的不同的密钥,那也会被黑客劫持
3. 非对称加密
非对称加密是用于==对对称加密进行加密==的方式,这并不会对于每次的会话进行使用。
3.1 过程
最重要的是衍生出了"公钥"与"私钥"的概念。
- 公钥是暴露在网络中的,随便什么人都可以看得见,但是私钥只有服务器才有
- 私钥可以对于公钥进行解密
-
客户端对于服务器发起请求,携带着后续会话使用什么对称密钥信息
此时这段对称密钥是暴露在网络中的,但是只能通过私钥进行解密
-
服务器使用自己独有的私钥对于这段请求进行解密,获得后续对话使用的对称密钥
此时服务器知道了对称密钥是什么,后续就不再使用公钥进行加密,直接使用对称密钥
-
客户端进行请求的时候将使用对称密钥进行加密
服务器进行响应的时候将使用对称密钥进行解密
3.2 优点
- 确保了安全性
- 最大程度减少了资源开销(相比于所有会话都使用非对称加密来说)
3.3 缺点
仍然可能被攻击。
第一种情况:
-
黑客可以伪装为服务器,获取客户端的请求(即能够获取到后续会话的对称密钥)
-
接着使用暴露的公钥对于这个对称密钥进行加密,发送给服务器
此时服务器并不知道这个请求是由黑客发送的还是正常的客户端
-
服务器发送正常的响应
-
后续对话就会由黑客使用对称密钥对于会话进行解密
第二种情况:
- 黑客可以伪造一对公钥和私钥
- 客户端发送请求被黑客进行劫持后,黑客返回私自伪造的公钥和私钥
- 后续对话就会由黑客和客户端进行
3.4 完善方案
最关键的一点是客户端拿到公钥后能够知道是否是真的,而不是伪造的,这就衍生出了公证机构。
公证机构会向服务器颁发**"证书"**,这个证书由公证机构自己的加密算法生成得到,无法进行伪造。
证书信息:
域名
证书有效期
服务器的公钥
公证机构的信息
证书的签名
签名:公证机构使用自己的私钥对于校验和进行加密,就得到签名
过程:
-
公证机构颁布证书的时候,会使用自己的算法对于证书计算出一个校验和
-
客户端收到服务器的响应之后,先使用操作系统自带的证书(得到计算校验和的算法)得到校验和1
-
客户端再使用相同的计算校验和的算法对于证书的其他字段 进行计算,得到校验和2
-
如果两个校验和相等,那么证真,反之则伪
为什么能够防止黑客?
-
黑客想要伪造证书,会使得校验和2发生变化
伪造证书分为两种伪造:
- 黑客想要修改公钥,因为签名没有变化,会使得校验和2发生变化
- 黑客修改公钥和签名,因为黑客不知道公证机构的私钥,所以无法生成签名