文章目录
1. 前置知识——对称加密和非对称加密
1.1. 对称加密
对称加密是指在对数据进行加密时,双方都使用 同一个 密钥,这个密钥被称为「会话秘钥」。
- [优点] 运算速度快;
- [缺点] 双方都需要对密钥保密,无法做到安全的密钥交换。
1.2. 非对称加密
非对称加密是指在对数据进行加密时,双方使用 不同的 密钥,
生成密钥对的一方将持有「私钥」(通常是服务端,需要保密),另一方则持有「公钥」。
被「私钥」加密的数据必须使用「公钥」解密,反之亦然。
- [优点] 能做到安全的密钥交换;
- [缺点] 运算速度慢。
2. HTTP的缺陷
- [无状态] 好处是减轻服务器负担,坏处是完成关联操作时很麻烦,因为无法记忆状态;
- [明文传输] 好处是方便调试,坏处是信息裸奔;
- [不安全] 数据明文传输,有窃听风险;传输内容可能被替换,有篡改风险;无法验证对方身份,有冒充风险。
3. HTTP与HTTPS有哪些区别?
- HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
- HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
- HTTP 的端口号是 80,HTTPS 的端口号是 443。
- HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
简单地说,HTTPS 就是在 HTTP 的基础上加入了 SSL/TLS协议,通过混合加密、数字签名和数字证书来规避窃听风险、篡改风险和冒充风险。
4. HTTPS是如何规避HTTP的三种风险的?
4.1. 窃听风险——混合加密
- 窃听风险,比如通信链路上可以获取通信内容,用户号容易没。
HTTPS传输数据过程中,即用到了非对称加密,也用到了对称加密;
- [非对称加密] 客户端在生成「会话秘钥」后,用服务端的「公钥」(解密证书得到)对其加密,并安全地发送给服务端;
- [对称加密] 服务端在收到「会话秘钥」后,双方传输数据时都使用「会话秘钥」对数据进行加密。
4.2. 篡改风险——数字签名
- [公钥加密,私钥解密] 保证传输内容不泄露,因为只有私钥才能解密出公钥加密的内容;
- [私钥加密,公钥解密] 保证身份不被冒充,因为公钥只能解密由对应私钥加密的内容,而私钥是不可泄露的;若数据和私钥都是伪造的,那客户端的公钥无法解密该数据。
为了保证 发送的数据 不被篡改,在发送数据的同时,也将数据对应的 数字签名 一并发送过去。
利用哈希算法计算出数据的 哈希值 ,随后使用 私钥 / 公钥 加密便得到 数字签名。
4.3. 冒充风险——数字证书
尽管有了混合加密和数字签名,但依旧无法确保传输是安全的;
在进行数字签名时,有可能出现 数据、哈希值和公钥被同时替换
的可能。
据此,引入第三方机构:CA(数字证书认证机构),服务器的公钥 注册到CA中,而CA使用 自己的私钥 对 服务器的公钥 进行加密,以得到 数字证书。由于 私钥 仅由CA持有,因此无法被任何人伪造。
5. HTTPS是如何建立连接和传输数据的?
大致流程可见下图,但其实还有一些细节是不够准确的,如 会话密钥并非是直接传给服务端的,这些会在下一个知识点讲到。