Http 和 Https 的区别(图文详解)

在现代网络通信中,保护数据的安全性和用户的隐私是至关重要的。HTTP(Hypertext Transfer Protocol)和 HTTPS(Hypertext Transfer Protocol Secure)是两种常见的网络通信协议,但它们在数据保护方面的能力存在显著差异。了解这两者的区别,对于开发者和普通用户来说,都非常重要。

HTTP 是最基础的网络通信协议,用于在客户端(如浏览器)和服务器之间传输数据。然而,HTTP 协议在传输过程中并不对数据进行加密,这意味着任何在数据传输路径上的中间人都可能拦截和读取这些数据。这种缺乏安全保障的特性,使得 HTTP 不适合处理敏感信息,如登录凭据、财务数据等。

HTTPS 则是 HTTP 的安全版本,通过结合对称加密和非对称加密技术来保护数据传输的安全性。HTTPS 在通信过程中对数据进行加密,确保数据的机密性和完整性,同时使用数字证书来验证服务器的身份,从而防止中间人攻击。虽然 HTTPS 相比于 HTTP 可能会增加一些性能开销,但其提供的安全保障使其成为保护用户数据的标准选择。

在本篇文章中,我们将通过图文详解 HTTP 和 HTTPS 的工作原理,深入探讨它们的主要区别,包括加密机制、身份验证和数据完整性等方面。通过对比这两种协议,我们将揭示 HTTPS 如何在网络通信中提供更高级的安全保护,以及在何种情况下选择 HTTPS 是更加明智的决策。


文章目录


1、Http 和 Https 介绍以及区别

HTTP(Hypertext Transfer Protocol)和 HTTPS(Hypertext Transfer Protocol Secure)是用于在网络上进行通信的协议。它们的主要区别在于安全性和加密方式。

1.1、HTTP(超文本传输协议)

HTTP 是一种无状态的协议,负责从服务器传输网页和其他资源到客户端(通常是浏览器)。默认使用端口 80。数据在传输过程中是不加密的,因此可能被中间人(如网络嗅探器)窃听或篡改。由于没有加密,HTTP 不适用于需要保密和数据安全性要求高的应用场景,如在线支付或个人信息传输。常用于普通的网站和不涉及敏感信息的网络服务。

它的主要特点如下:

  1. 基于请求响应模式: HTTP 协议采用客户端-服务器架构模式,客户端向服务器发送请求,服务器返回相应的响应。这种模式能有效分离应用逻辑,提高系统的可维护性和扩展性。
  2. 基于文本传输: HTTP 协议使用ASCII码作为通信协议,每个请求和响应都是一条文本消息,这使得通信协议更加简单、直观、易于处理。
  3. 支持多媒体传输: HTTP 协议可以传输多种类型的数据,如 HTML、XML、JSON、图片、音频、视频等,这使得 HTTP 协议成为一种通用的网络传输协议,适用于各种不同类型的应用场景。
  4. 无连接: HTTP 协议是一个无连接协议,每个请求都是独立的,服务器处理请求后立即关闭连接。这有助于节省资源,但也带来了一些缺点,如需要重新建立连接、重复发送相同的头部信息等。
  5. 无状态: HTTP 协议没有客户端的状态存储,也没有事务处理的"内存"能力。这意味着每次访问网站时可能需要重复的登录操作。

然而,HTTP 协议也存在一些不足之处。由于它以明文方式发送内容,不提供任何方式的数据加密,因此安全性较差。如果攻击者截取了 Web 浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。因此,HTTP 协议不适合传输一些敏感信息,比如信用卡号、密码等支付信息。

1.2、HTTPS(超文本传输协议安全)

HTTPS 是 HTTP 的安全版本,通过 SSL/TLS(安全套接层/传输层安全)协议对数据进行加密。默认使用端口 443。数据在传输过程中会被加密,确保数据的机密性和完整性,并提供身份验证以防止中间人攻击。通过加密通信保护数据,确保数据在传输过程中不会被窃取或篡改,适合处理敏感信息,如金融交易和个人数据。常用于需要安全保护的网站,如电子商务网站、网上银行、社交网络等。

与 HTTP 相比,HTTPS(Hypertext Transfer Protocol Secure)则是以安全为目标的 HTTP 通道。它在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 的内容加密、身份验证以及数据完整性保护的原理主要依赖于 SSL/TLS 协议。

两者区别总结:

  1. 加密:HTTP:数据传输不加密,容易被拦截和窃听。HTTPS:数据传输加密,保障通信的安全性。
  2. 安全性:HTTP:缺乏数据加密和验证机制,安全性较低。HTTPS:通过 SSL/TLS 提供加密和身份验证,安全性较高。
  3. 端口:HTTP:端口 80。HTTPS:端口 443。
  4. 用途:HTTP:适用于不需要高度安全保护的普通网站。HTTPS:适用于需要保护用户数据安全的网站和应用。

总的来说,HTTPS 是 HTTP 的增强版,提供了更高的数据安全性,推荐用于所有需要保护用户隐私和敏感数据的网站。


2、HTTPS 工作原理

HTTPS(Hypertext Transfer Protocol Secure)通过结合对称加密和非对称加密来实现内容的加密和保护,同时使用数字证书来进行身份验证,并通过消息认证码(MAC)确保数据的完整性。以下是对这些机制的详细解释:

2.1、内容加密
2.1.1、 对称加密

在 HTTPS 连接建立之后,客户端和服务器会生成一个共享的会话密钥。这个会话密钥用于后续的数据加密和解密操作。双方使用这个密钥,通过对称加密算法(如 AES)对传输的数据进行加密,以确保数据在传输过程中的保密性和安全性。

  • 优点:对称加密的加密和解密速度较快,适合大量数据的加密操作。
  • 缺点:由于双方共享一个密钥,密钥的安全性直接影响到通信的安全。如果密钥被泄露或被截获,通信内容可能被解密。
2.1.2、非对称加密

在 HTTPS 握手阶段,服务器会将其公钥发送给客户端。客户端使用服务器的公钥加密一个随机生成的预主密钥,并将加密后的数据发送给服务器。服务器使用其私钥解密这个数据,从而安全地交换密钥。

  • 优点:非对称加密用于安全地交换对称密钥,确保密钥交换过程中的安全性。
  • 缺点:非对称加密的计算速度较慢,会增加系统的计算负担。虽然公钥可以公开,但私钥必须保密以防止数据被解密。

结合使用:HTTPS 将对称加密和非对称加密结合使用,以利用对称加密的高效性和非对称加密的安全性。

2.2、身份验证

HTTPS 使用数字证书来验证服务器的身份,确保客户端连接的是一个合法的服务器。

2.2.1、数字证书

数字证书由权威的证书颁发机构(CA)签发,包含了服务器的公钥、身份信息和 CA 的数字签名。服务器在建立 HTTPS 连接时,会将这个证书发送给客户端。

2.2.2、验证过程

客户端在收到证书后,会执行以下检查:

  • CA 颁发:检查证书是否由受信任的 CA 颁发。
  • 证书有效性:验证证书是否过期。
  • 身份匹配:确认证书中的服务器身份信息是否与实际连接的服务器匹配。
  • 签名验证:使用 CA 的公钥验证证书上的数字签名,确保证书在传输过程中未被篡改。

通过这些步骤,客户端可以确认服务器的身份,确保与之通信的安全性。

2.3、数据完整性

HTTPS 使用消息认证码(MAC)来确保数据在传输过程中的完整性和安全性。

2.3.1、消息认证码

每个传输的数据包都会附带一个 MAC 值。MAC 值是通过将数据包的内容和会话密钥输入到哈希函数中计算得出的。只有持有相同会话密钥的接收方才能计算出正确的 MAC 值。

2.3.2、完整性校验

接收方收到数据包后,会使用相同的会话密钥和哈希函数计算 MAC 值,并与数据包中附带的 MAC 值进行比较。如果两个 MAC 值相同,则可以确认数据包在传输过程中没有被篡改,从而保证数据的完整性和安全性。


3、HTTPS 工作流程

HTTPS(Hypertext Transfer Protocol Secure)是 HTTP 的安全版本,利用 SSL/TLS(安全套接层/传输层安全)协议来加密和保护数据传输。

HTTPS 通过以下几个主要方面保障了数据传输的安全性:

  • 加密:使用对称加密保护传输的数据;
  • 身份验证:使用数字证书验证服务器的身份;
  • 数据完整性:确保数据在传输过程中没有被篡改。

HTTPS 确保了数据的机密性、完整性和安全性,是现代网络通信中保护用户数据和隐私的重要技术。

HTTPS 的工作原理可以分为以下几个主要步骤:

3.1、客户端发起连接

当客户端(如浏览器)访问一个 HTTPS 网站时,它会发起一个连接请求到服务器。客户端的请求会包含要访问的资源的地址(URL)以及一些其他信息。

3.2、服务器响应并发送证书

服务器收到请求后,会发送一个包含其 SSL/TLS 证书的响应。这个证书由一个受信任的证书颁发机构(CA)签发,并包含了服务器的公钥和其他信息。

3.3、客户端验证证书

客户端接收到服务器的证书后,会进行验证:

  • 检查证书是否由受信任的 CA 签发:浏览器会检查证书的颁发机构是否被信任;
  • 验证证书的有效性:检查证书是否过期,是否被吊销;
  • 检查证书是否与服务器主机名匹配:确保证书中的域名与访问的主机名一致。

如果证书验证通过,客户端会继续进行下一步。如果验证失败,客户端会显示警告或拒绝连接。

3.4、密钥交换

在证书验证成功后,客户端和服务器会进行密钥交换,以确定一个对称加密密钥。

这个过程包括:

  • 生成预主密钥:客户端生成一个随机的预主密钥,并用服务器的公钥加密这个密钥;
  • 服务器解密预主密钥:服务器使用自己的私钥解密收到的预主密钥;
  • 生成会话密钥:客户端和服务器使用预主密钥以及其他随机值生成对称加密的会话密钥。
3.5、建立安全连接

一旦对称加密密钥(会话密钥)生成完成,客户端和服务器会使用这个密钥进行加密的数据传输。所有后续的数据传输都使用这个对称加密密钥来保证数据的机密性和完整性。

3.6、数据传输

在建立安全连接后,客户端和服务器之间的数据传输将被加密。数据在传输过程中不会被中间人读取或篡改。HTTPS 协议还包括数据完整性检查,确保数据没有被篡改。

3.7、关闭连接

当数据传输完成后,客户端和服务器会关闭连接,并且可能会销毁加密密钥以保护数据的安全性。


4、Https 优缺点

4.1、HTTPS的优点

尽管 HTTPS 并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但 HTTPS 仍是现行架构下最安全的解决方案,主要有以下几个好处:

  1. 使用 HTTPS 可认证用户和服务器,确保数据发送到正确的客户机和服务器;
  2. HTTPS 是由 SSL+HTTP 构建的可进行加密传输、身份认证的网络协议,要比 HTTP 安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
  3. HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
  4. 谷歌曾在2014年8月份调整搜索引擎算法,并称"比起同等 HTTP 网站,采用 HTTPS 加密的网站在搜索结果中的排名将会更高"。
4.2、HTTPS 的缺点
  1. HTTPS 握手阶段比较费时,会使页面的加载时间延长近 50%;
  2. HTTPS 连接缓存不如 HTTP 高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
  3. SSL 证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
  4. SSL 证书通常需要绑定 IP,不能在同一 IP 上绑定多个域名,IPv4 资源不可能支撑这个消耗。
  5. HTTPS 的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL 证书的信用链体系并不安全,特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。
相关推荐
Aileen_0v03 小时前
【AI驱动的数据结构:包装类的艺术与科学】
linux·数据结构·人工智能·笔记·网络协议·tcp/ip·whisper
花鱼白羊4 小时前
TCP Vegas拥塞控制算法——baseRtt 和 minRtt的区别
服务器·网络协议·tcp/ip
唐 城6 小时前
curl 放弃对 Hyper Rust HTTP 后端的支持
开发语言·http·rust
DevilHeart灬7 小时前
使用Grafana中按钮插件实现收发HTTP请求
http·grafana
总是学不会.11 小时前
第五篇:前后端如何“扯皮”——HTTP 在开发中的应用
java·网络·网络协议·http·开发
火狮12 小时前
鸿蒙Next API 12开发,使用@ohos/axios进行HTTP请求
http·华为·harmonyos
m0_7482382712 小时前
WebClient HTTP 请求问题处理模板(泛型响应、忽略 SSL 证书等)
网络协议·http·ssl
我曾经是个程序员13 小时前
鸿蒙学习记录之http网络请求
服务器·学习·http
୧⍢⃝୨ LonelyCoder13 小时前
FreePBX修改IP地址和端口以及添加SSL证书开启HTTPS访问
tcp/ip·https·ssl
轩辰~13 小时前
网络协议入门
linux·服务器·开发语言·网络·arm开发·c++·网络协议