前端面试题 - 46. https是如何保证安全的? 是如何保证不被中间人攻击的?

439 阅读3分钟

HTTPS(Hyper Text Transfer Protocol Secure)是在 HTTP 协议的基础上添加了 SSL/TLS 加密协议的一种安全传输协议。HTTPS 通过使用 SSL/TLS 加密协议来保证传输过程中的数据安全性,同时还可以对通信双方进行身份验证,以确保通信的可信性和完整性。HTTPS 保证安全的主要手段如下:

数据加密

HTTPS 使用 SSL/TLS 加密协议来对传输的数据进行加密,可以有效防止数据在传输过程中被窃取和篡改。SSL/TLS 协议使用公钥和私钥来进行加密和解密,保证了数据传输的机密性。

  1. 客户端向服务器发送 SSL/TLS 握手请求: 客户端向服务器发送一个 SSL/TLS 握手请求,请求中包含了客户端支持的 SSL/TLS 版本、加密算法等信息。
  2. 服务器响应 SSL/TLS 握手请求并发送数字证书: 服务器收到客户端的 SSL/TLS 握手请求后,会向客户端发送一个 SSL/TLS 握手响应,并将服务器的数字证书一并发送给客户端。数字证书中包含了服务器的公钥以及一些基本信息,如证书的颁发机构、证书的有效期等。
  3. 客户端验证服务器的数字证书: 客户端收到服务器的数字证书后,会对证书中的信息进行验证,以确认服务器的身份。如果验证通过,则可以建立连接;否则,客户端会提示证书无效或证书不受信任的错误信息。
  4. 客户端生成随机密钥并使用服务器的公钥加密发送: 客户端生成一个随机的对称密钥,并使用服务器的公钥对密钥进行加密,然后将加密后的密钥发送给服务器。
  5. 服务器使用私钥解密随机密钥并保存: 服务器收到客户端发送的加密后的随机密钥后,会使用自己的私钥对密钥进行解密,并保存该密钥以便后续的数据传输。
  6. 客户端和服务器使用对称密钥对数据进行加密和解密: 客户端和服务器之间使用刚刚生成的随机密钥来进行对称加密和解密。客户端和服务器之间传输的数据都会使用这个随机密钥进行加密和解密,从而保证了数据传输的安全性。

image.png

参考:www.jianshu.com/p/a56b86a8a…

中间人攻击及其防止方法

HTTPS中间人攻击(Man-in-the-middle attack,简称MITM攻击)是一种网络安全攻击方式,攻击者在用户和服务器之间插入自己的设备或程序,窃取通信内容或修改通信内容,从而获取用户的敏感信息或执行恶意操作。

为了防止HTTPS中间人攻击,可以采取以下措施:

  1. 使用可靠的数字证书:数字证书可以验证服务器身份,防止攻击者伪造服务器证书。

  2. 不信任公共Wi-Fi:公共Wi-Fi容易被攻击者利用,因此在使用公共Wi-Fi时,应尽量避免访问敏感网站或输入敏感信息。

  3. 使用HTTPS Everywhere插件:该插件可以自动将HTTP请求转换成HTTPS请求,从而防止攻击者劫持HTTP请求。

  4. 避免点击未知链接:攻击者可能会通过伪装成可信网站的方式,引诱用户点击恶意链接,从而进行MITM攻击。

  5. 使用DNSSEC:DNSSEC可以验证DNS解析结果的真实性,从而防止DNS欺骗攻击。