计算机网络 HTTP 与 HTTPS

端口

HTTP 的 URL 由 “http://” 起始且默认使用端口 80,HTTPS 的 URL 由 “https://” 起始且默认使用端口 443。

安全性和资源消耗

HTTP 协议运行在 TCP 之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。

HTTPS 是运行在 SSL(安全套接层) / TLS(安全传输层协议) 之上的 HTTP 协议,SSL / TLS 运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但**对称加密的密钥用服务器方的证书进行了非对称加密。**所以说,HTTP 安全性没有 HTTPS 高,但是 HTTPS 比 HTTP 耗费更多服务器资源。

加密

  • 对称加密:密钥只有一个,加密解密为同一个密码,优点是加解密速度快,缺点是无法安全地将密钥传输给通信方。典型的对称加密算法有 DES、AES 等;
  • 非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密)。优点是可以更安全地将公开密钥传输给通信发送方,缺点是相对对称加密速度较慢,典型的非对称加密算法有 RSA、DSA 等。

HTTP 安全性问题

  • 使用明文进行通信,内容可能会被窃听;
  • 不验证通信方的身份,通信方的身份有可能遭遇伪装;
  • 无法证明报文的完整性,报文有可能遭篡改。

HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPS 使用了隧道进行通信。

通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。

HTTPS 采用的加密方式

对称密钥加密方式的传输效率更高,但是无法安全地将密钥 Secret Key 传输给通信方。而非对称密钥加密方式可以保证传输的安全性,因此可以利用非对称密钥加密方式将 Secret Key 传输给通信方。HTTPS 采用混合的加密机制,正是利用了上面提到的方案:

  • 使用非对称密钥加密方式,传输对称密钥加密方式所需要的 Secret Key,从而保证安全性;
  • 获取到 Secret Key 后,再使用对称密钥加密方式进行通信,从而保证效率。(下图中的 Session Key 就是 Secret Key)

认证

通过使用 证书 来对通信方进行认证。

公钥是为了解决秘钥的配送问题,而证书是为了解决公钥的归属问题。

数字证书认证机构(CA,Certificate Authority)是客户端与服务器双方都可信赖的第三方机构。

服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公开密钥证书后绑定在一起。

进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。

完整性保护

SSL 提供报文摘要功能来进行完整性保护。

HTTP 也提供了 MD5 报文摘要功能,但不是安全的。例如报文内容被篡改之后,同时重新计算 MD5 的值,通信接收方是无法意识到发生了篡改。

HTTPS 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文。

HTTPS 的缺点

  • 因为需要进行加密解密等过程,因此速度会更慢;
  • 需要支付证书授权的高额费用。

参考链接

https://cyc2018.github.io/CS-Notes/#/notes/HTTP?id=%e5%85%ad%e3%80%81https

https://snailclimb.gitee.io/javaguide/#/docs/network/HTTPS%E4%B8%AD%E7%9A%84TLS

发布了54 篇原创文章 · 获赞 120 · 访问量 9579

猜你喜欢

转载自blog.csdn.net/siriusol/article/details/105334879