计算机网络 HTTPS

计算机网络 HTTPS

HTTPS 主要解决了 HTTP 的两个问题,第一是不再明文传输避免传输的内容被偷窥,第二个是提高了通信传输的安全性防止内容被篡改。

HTTPS 本质是在 HTTP 上套一层 SSL/TLS,底层依然是 TCP。HTTP 使用 TCP 现在默认长链接了,英文 “Keep-Alive”,在获取网页源码后,对于 JSCSS、图片文件不再另外单独挨个发起 TCP 连接,而是保持原本 TCP 连接不变,继续请求这些文件资源。

HTTP 原本是基于 TCP/IP 的,现在 HTTPS 在其基础之上加上了 SSL/TLS

SSL 的密钥协商

一般基于 RSA 的密钥通信流程是:

  1. 客户端发起请求
  2. 服务端返回 CA 证书
  3. 客户端验证证书
  4. 客户端从证书中取得公钥
  5. 客户端生成一个密钥 k,用公钥加密成 k' 后发送给服务端
  6. 服务端用密钥解密密钥 k',得到 k
  7. 二者都用该秘钥进行通信

上面这套流程有两个作用,其一是 防止窥探,无论是截取 k' 还是截取公钥,都无法得到私钥和接下来进行通信的密钥 k;其二是 防止篡改,无论是伪造证书或者伪造 k' 都会被验证失败。

SSL/TLS

SSL 升级之后就成了 TLS,核心我们只需要记住两点:非对称加密和对称加密的混合加密以及数字证书和 CA

对称加密和非对称加密

对称加密时,加密和解密都适用相同的秘钥,比如我们给压缩包上密码,别人用你设置的密码解压得到里面的内容;

非对称加密时,公钥和私钥分别用来解密对方加密的内容。

摘要算法

摘要算法主要是用在校验完整性上,我们将要传输的内容通过哈希算法,可以得到一个固定长度的摘要。这样,如果中途有黑客破坏了内容完整性,就会导致接受时发现用相同哈希函数计算内容和摘要不一样。

数字证书和 CA

为了保证客户端拿到手的公钥是服务端的而不是黑客的,我们还需要数字证书和 CA 去验证身份。

ca.jpg

参考

【 1 】 扫盲 HTTPS 和 SSL/TLS 协议

作者

zion h4

发布于

2023-03-27

更新于

2024-09-08

许可协议

评论