关于http协议

介绍 https 和 http 的区别,Https的握手过程

  • https 和 http 的区别
  • Https的握手过程
  • https 协议需要基于 http/2.0 吗?
  • 介绍中间人攻击, https 能绝对安全吗? 能够绝对避免中间人攻击吗?

https 和 http 的区别

HTTP(超文本传输协议)和HTTPS(超文本传输安全协议)都是用于传输网页和其他数据的协议。它们之间的主要区别在于安全性和性能。以下是HTTP和HTTPS之间的主要区别:

  1. 安全性

    • HTTP:是一个明文传输协议,意味着所有数据都不进行加密,可以被任何截取该传输数据的中间人读取。
    • HTTPS:提供了一个安全的传输层(称为SSL/TLS),可以对传输的数据进行加密。这意味着即使数据被拦截,中间人也不能轻易地解密和查看数据内容。
  2. 默认端口

    • HTTP:使用默认端口80。
    • HTTPS:使用默认端口443。
  3. 证书

    • HTTP:不需要任何证书。
    • HTTPS:需要一个SSL/TLS证书。为了设置HTTPS,网站所有者需要购买并安装一个证书。有些证书颁发机构还提供免费的证书,例如Let’s Encrypt。
  4. 性能与速度

    • HTTP:由于没有加密和解密过程,传统上被认为HTTP比HTTPS快。
    • HTTPS:虽然需要加密和解密数据,但随着现代硬件的发展和优化,以及对TLS的各种优化,HTTPS的性能损失已经变得非常小,很多情况下几乎可以忽略不计。
  5. SEO评级

    • HTTP:现在许多搜索引擎(尤其是Google)偏向于HTTPS网站,视其为更可靠和安全。
    • HTTPS:被视为一个正面的SEO信号,有助于网站在搜索结果中获得更高的排名。
  6. 浏览器指示

    • HTTP:大多数现代浏览器在地址栏中为HTTP网站显示“不安全”的标记。
    • HTTPS:浏览器通常会显示一个锁的图标,表示连接是安全的。
  7. 数据完整性

    • HTTP:数据可能被中间人篡改,没有任何验证机制来确保数据的完整性。
    • HTTPS:由于有加密层,数据在传输过程中的完整性得到了保证。

鉴于安全性和数据保护的重要性,现代网站和应用程序越来越多地采用HTTPS作为默认选择。特别是涉及到敏感信息如登录凭据、银行信息、私人通信等的场景,HTTPS几乎成为了标准选择。

Https的握手过程

HTTPS握手过程实际上是SSL/TLS握手过程,是建立加密通信之前的一个关键步骤。以下是简化的HTTPS握手过程:

  1. 客户端Hello:

    • 浏览器(或其他客户端)向服务器发送一个“Client Hello”消息。这个消息会包括支持的加密算法(称为“套件”),以及一个客户端生成的随机数。
    • 同时,客户端还会发送一个支持的SSL/TLS版本列表,让服务器从中选择一个与客户端都兼容的版本。
  2. 服务器Hello:

    • 服务器回复一个“Server Hello”消息,选择一个客户端所支持的加密套件和SSL/TLS版本。
    • 服务器还发送自己的证书,这个证书通常由一个受信任的第三方证书颁发机构签发。证书中包含公钥以及一些证书的元数据。
  3. 验证证书:

    • 客户端验证服务器的证书是否由一个受信任的证书颁发机构签发,以及证书是否已过期、是否被撤销。如果证书有效,客户端会创建一个随机的预主密钥。
  4. 密钥交换:

    • 客户端使用服务器证书中的公钥加密预主密钥,并将其发送给服务器。
    • 服务器接收到加密的预主密钥后,使用自己的私钥进行解密,从而获得预主密钥。
  5. 生成会话密钥:

    • 客户端和服务器都使用预主密钥以及之前交换的随机数来生成会话密钥。会话密钥将用于此次会话的数据加密和解密。
  6. 客户端确认:

    • 客户端向服务器发送一个“Finished”消息,这个消息是用会话密钥加密的。
  7. 服务器确认:

    • 服务器也向客户端发送一个“Finished”消息,同样使用会话密钥加密。
  8. 加密通信开始:

    • 从此时开始,客户端和服务器之间的所有通信都将使用会话密钥进行加密。

这个握手过程确保了两方可以安全地交换加密信息,并验证彼此的身份。此外,即使中间人能够嗅探到这些交换的消息,由于预主密钥的加密和会话密钥的生成方式,他们也无法解密通信内容。

会话密钥是对称加密

交换密钥的过程是非对称加密

https 协议需要基于 http/2.0 吗?

不,HTTPS协议不需要基于HTTP/2.0。HTTPS可以运行在HTTP/1.0、HTTP/1.1和HTTP/2.0之上。

HTTPS实际上只是一个安全层(SSL/TLS)套接在HTTP协议之上。这意味着无论你使用哪个HTTP版本,都可以使用HTTPS来加密通信内容。

然而,HTTP/2.0带来了许多性能优化和改进,特别是对于多路复用、服务器推送和首部压缩等功能。为了鼓励Web更安全、更高效的发展,现代浏览器通常在支持HTTP/2.0时仅支持HTTPS版本,而不支持明文的HTTP。这可能是使人们误以为HTTPS是基于HTTP/2.0的原因,但实际上,HTTPS可以独立于所使用的HTTP版本。

介绍中间人攻击, https 能绝对安全吗? 能够绝对避免中间人攻击吗?

中间人攻击(Man-in-the-Middle, MITM):

中间人攻击是一种攻击方式,其中攻击者插入到两个通信方之间,使他们认为他们直接进行私密通信,而实际上整个会话都被攻击者控制。攻击者可以截听、修改或重新发送通信内容。

HTTPS对MITM的防护:

HTTPS使用SSL/TLS加密来保护传输内容。其中,一个关键的阶段是数字证书的验证。当你访问一个HTTPS网站时,服务器会为你提供一个数字证书。此证书由第三方机构(称为证书颁发机构, CA)签发,并可证明服务器的身份。浏览器或客户端会验证此证书以确保它是由一个受信任的CA签发的,并且证书的域名与你正在访问的域名匹配。这一验证过程有助于确保你正与期望的服务器通信,而不是一个中间人。

HTTPS是否绝对安全:

虽然HTTPS大大增强了网络通信的安全性,但没有任何技术可以保证绝对的安全性。对于HTTPS,存在以下潜在的问题和风险:

  1. 不受信任的证书颁发机构:如果一个攻击者可以使一个证书颁发机构为其恶意网站颁发一个有效的证书,那么该攻击者可以执行MITM攻击而不被检测。

  2. 证书固定:某些应用程序实施证书固定,这意味着它们不仅仅信任系统内的CA,还对特定的证书或公钥进行硬编码。如果颁发给服务的证书更改(即使是合法的更改),则硬编码的应用程序可能会拒绝连接。

  3. 用户忽略警告:如果用户在浏览器中看到SSL/TLS警告(如证书错误),但选择忽略它,他们可能会变得容易受到MITM攻击。

  4. 协议或软件漏洞:历史上,SSL/TLS协议和实现它们的软件都曾有过安全漏洞,这可能使它们容易受到攻击。

总结:

尽管HTTPS提供了强大的安全性,但组织和个人仍需要时刻保持警惕,并采取其他安全措施来增强安全性。在许多情况下,HTTPS可以有效地阻止MITM攻击,但它不能被认为是绝对的防御手段。

你可能感兴趣的:(字节面试题,http,https,网络协议)