HTTPS与HTPP的区别

本质上,HTTPS是HTTP的安全升级版 ,它们最核心的区别就在于安全性

我们可以用一个非常贴切的比喻来理解:

  • HTTP :就像寄送明信片。任何人经手(网络运营商、黑客、公共Wi-Fi提供者)都可以看到上面的全部内容,甚至可以篡改内容后再寄出去。

  • HTTPS :就像把明信片放进一个上锁的保险箱。只有发送方和指定的接收方有钥匙。即使中途被人截获,他们也打不开箱子,看不到也改不了里面的内容。

下面我们从多个维度进行详细的对比和讲解。

总结对比

特性 HTTP HTPPS
全称 HyperText Transfer Protocol HyperText Transfer Protocol Secure
安全性 不安全:明文传输,易被窃听和篡改 安全:加密传输,防窃听、防篡改
协议与端口 运行在TCP 之上,默认使用端口80 运行在SSL/TLS 之上,再在TCP 之上,默认使用端口443
加密方式 无加密 混合加密(非对称加密+对称加密)
身份认证 无认证,无法确认对方是否是伪装的服务器 有强认证 ,通过CA证书验证网站身份,防止钓鱼网站
数据完整性 无保障,数据在传输中可能被篡改而无法察觉 有保障,接收方能验证数据是否完整、未被篡改
SEO(搜索引擎优化) 处于劣势,是排名下调的因素 处于优势,是排名提升的因素
浏览器显示 地址栏显示http://,通常没有特殊标识 地址栏显示https://,并有一个锁形图标
性能与成本 速度快,无额外计算开销 速度稍慢(因加密解密),需要购买和维护SSL证书

SSLTLS 是用于在两个通信应用程序(例如,你的浏览器 和一个网站服务器 )之间提供加密通信安全连接的协议。

  • SSL:安全套接字层。由网景公司于1990年代中期开发。

  • TLS :传输层安全。是SSL的标准化和更安全的后续版本,由互联网工程任务组制定。

关键点:

  • 我们现在通常所说的"SSL ",实际上指的是TLS因为SSL的所有版本都已被发现存在漏洞并被废弃

  • 由于历史原因,"SSL"这个名称被广泛沿用,所以你经常会听到人们说"SSL证书"或"SSL连接",但实际上他们指的是TLS。

  • 它们之间的关系可以理解为:TLS是SSL的升级版和现代名称

核心区别详解

  1. 安全性(最根本的区别)
    HTTP:明文传输的风险
  • 窃听:你通过HTTP发送的账号、密码、聊天记录、信用卡号等所有信息,在网络上都是以未加密的文本形式传播。任何一个有机会接触到你网络流量的人(比如在同一公共Wi-Fi下的黑客)都可以轻松窃取这些信息。

  • 篡改:攻击者不仅可以窃听,还可以修改你发送或接收的数据。例如,在你下载一个软件时,他可能将软件替换成病毒。

  • 冒充:你无法确认你正在访问的网站是不是真正的那个网站。攻击者可以轻易地搭建一个和真网站一模一样的假网站(钓鱼网站)来骗取你的信息。

HTTPS:如何解决安全问题

HTTPS通过引入SSL/TLS协议层来解决上述所有问题。

  • 加密:使用混合加密技术。

    • 握手阶段使用非对称加密:来安全地交换一个"会话密钥"。

    • 通信阶段使用对称加密:使用交换来的"会话密钥"对实际传输的HTTP数据进行加密和解密。这样即使数据被截获,没有密钥也无法解密。

  • 身份认证:使用数字证书。

    • 网站必须向全球公认的证书颁发机构(CA) 申请一个"身份证"(数字证书)。

    • 当你的浏览器通过HTTPS连接网站时,网站会出示这个证书。浏览器会验证证书是否由可信的CA签发、证书中的域名是否与你访问的域名一致、证书是否在有效期内。

    • 这把"锁"就是证书验证通过的标志。它告诉你:"对方的身份已经确认,你是安全的。"

  • 完整性校验:使用消息认证码(MAC)。

    • 在传输数据时,会附带一个基于密钥和内容计算出的"摘要"。

    • 接收方用相同的密钥和算法重新计算摘要,如果与传来的摘要不一致,就说明数据在传输过程中被篡改了,连接会被终止。

  1. 协议与端口
  • HTTP:是应用层协议,直接建立在传输层TCP协议之上。它使用大家熟知的80端口。

  • HTTPS :并不是 一个全新的协议。它是在HTTP和TCP之间加入了一个SSL/TLS加密层。这个安全层负责加密、解密和身份认证。它使用443端口

所以,它们的结构可以理解为:

  • HTTP = TCP + HTTP

  • HTTPS = TCP + SSL/TLS + HTTP

  1. 对用户体验和网站运营的影响
  • 浏览器标识 :这是最直观的区别。现代浏览器(Chrome, Firefox, Edge等)对于HTTP网站会标记为 "不安全 " ,甚至会隐藏掉网址前的http://,以警示用户。而对于HTTPS网站,则会显示一个锁形图标和 https://,给用户以安全感。

  • SEO排名谷歌、百度等主流搜索引擎都已明确表示HTTPS是搜索排名的正面信号。这意味着,在其他条件相同的情况下,使用HTTPS的网站会比使用HTTP的网站在搜索结果中获得更高的排名。

  • 现代Web技术要求 :许多新的浏览器API(如地理定位、Service Workers/PWA、摄像头/Microphone访问等)都要求必须在HTTPS环境下才能使用。这意味着如果你想构建一个功能丰富的现代Web应用,HTTPS是必需品。

小结

HTTP是过去的遗物,HTTPS是现在的标准和未来的基石。

在当今这个高度依赖互联网且网络安全威胁无处不在的时代,没有任何理由再使用HTTP来传输任何敏感或非敏感信息

  • 对于普通用户 :养成查看浏览器地址栏的习惯,永远不要在标记为"不安全"的HTTP网站上输入任何密码、个人信息或支付细节

  • 对于网站所有者/开发者 :为你的网站部署HTTPS不再是"可选项" ,而是必须履行的责任。这不仅能保护你的用户,也能提升你的品牌信誉和搜索引擎排名。现在,甚至可以通过 Let's Encrypt 等机构免费获取SSL证书,部署成本已大大降低。

我们来简单了解一下SSL 其中的一个漏洞,例如SSL 3.0 中的POODLE

POODLE

POODLE 是一个严重的安全漏洞,它的全称是 "Padding Oracle On Downgraded Legacy Encryption"。

  • 中文直译:降级遗留加密的填充预言攻击。

  • 本质:这是一种利用SSL 3.0协议古老设计缺陷的攻击方式,允许攻击者在特定条件下解密HTTPS通信中的部分加密信息(如Cookie)。

  • 发现时间:2014年。

  • CVE编号:CVE-2014-3566

这个名称非常精准地描述了攻击的三个方面:

  • Padding Oracle:攻击利用的是关于"填充字节"的反馈信息。

  • Downgraded:攻击需要迫使客户端和服务器从更安全的协议(如TLS)降级到不安全的SSL 3.0。

  • Legacy Encryption :攻击目标是这个遗留的、过时的加密协议(SSL 3.0)。

POODLE 攻击的原理(简化版)

要理解POODLE,我们需要先了解几个背景知识:

  • SSL 3.0:这是1996年发布的古老协议,非常过时,但为了兼容性,当时很多客户端和服务器仍然支持它。

  • CBC分组加密模式:SSL 3.0使用的一种加密模式。它要求数据在加密前必须被填充到固定长度。这些填充字节的内容没有严格规定。

  • 中间人攻击:攻击者能够拦截和修改客户端与服务器之间的通信。

攻击步骤可以简化为:

第一步:强制协议降级

  • 当客户端(如浏览器)尝试使用现代协议(如TLS 1.2)连接服务器时,攻击者会拦截并丢弃这个请求。

  • 客户端会尝试重新连接,攻击者再次拦截。经过几次失败后,客户端可能会回退到它支持的最旧协议------SSL 3.0。

  • 攻击者允许这次SSL 3.0的连接通过。这样,他就成功地让通信双方使用了一个存在漏洞的协议。

第二步:拦截并修改密文

  • 攻击者拦截客户端发送给服务器的加密数据(比如一个包含用户Cookie的HTTPS请求)。

  • 他像玩扑克牌一样,从之前拦截的密文中抽出一个字节 ,用它来替换目标密文块的最后一个字节。这相当于篡改了加密数据。

第三步:观察服务器的反应("填充预言")

  • 被篡改的密文被发送到服务器。

  • 服务器收到后,会尝试解密。解密过程包括检查填充字节是否符合规则。

  • SSL 3.0的致命缺陷 :它对填充字节的验证规则极其宽松 。它只检查最后一个字节来确定填充长度,而不验证其他填充字节的内容

  • 因此,根据解密后的填充字节是否"看起来"正确,服务器会返回两种不同的错误信息:

    • 如果填充"正确",服务器会尝试处理数据,然后返回一个与MAC(消息认证码)失败相关的错误。

    • 如果填充"错误",服务器会直接返回一个解密失败错误。

  • 攻击者通过观察这两种不同的错误信息,就能知道被他篡改的那个字节解密后是否产生了"正确"的填充。

第四步:利用信息解密

  • 通过反复、大量地重复步骤2和3(可能需要对同一个字节进行数百次请求),攻击者可以像一个"预言机"一样,逐步推算出密文中某一个字节解密后的明文是什么。

  • 最终,攻击者可以一个字节一个字节地"猜出"或"算出"敏感的明文信息,例如用户的会话Cookie。

POODLE 攻击的影响与危害

  • 危害 :攻击者可以窃取到通过SSL 3.0连接传输的敏感信息,尤其是HTTP Cookie。一旦获取到Cookie,攻击者就可以发起会话劫持,冒充用户登录其账户,而无需知道用户的密码。

  • 条件:攻击实施起来比较困难,需要是中间人位置,并且目标服务器和客户端必须同时支持SSL 3.0。

  • 严重性 :尽管条件苛刻,但由于SSL 3.0在当时仍被广泛支持,且攻击可以直接导致敏感信息泄露,因此它被评定为高危漏洞

如何防御 POODLE 攻击?

防御措施非常简单直接,因为问题的根源在于SSL 3.0协议本身的设计缺陷

  • 彻底禁用SSL 3.0

    • 服务器端:在Web服务器(如Nginx, Apache, IIS)的配置中完全禁用对SSL 3.0协议的支持。

    • 客户端:在现代浏览器和操作系统中,默认已禁用SSL 3.0。

  • 使用TLS_FALLBACK_SCSV

    • 这是一个TLS扩展,旨在防止协议降级攻击。

    • 它允许客户端声明:"我本来想用TLS 1.2,但被迫降级了。"如果服务器支持这个机制,它会检测到这种异常的降级行为并终止连接,从而挫败POODLE攻击。

    • 这是防止降级攻击的更优雅的解决方案。

POODLE 的遗产与后续

POODLE攻击在网络安全史上是一个里程碑式的事件,它产生了深远的影响:

  • 彻底淘汰SSL 3.0 :POODLE是压死SSL 3.0的最后一根稻草。在此之后,整个行业达成共识,必须完全弃用SSL 3.0。现代浏览器和服务器已默认不再支持它。

  • 推动了现代加密协议的普及:它加速了向TLS 1.2和更安全的TLS 1.3的过渡。

  • 后续变种:后来还出现了 POODLE-TLS,它尝试对TLS的CBC模式进行类似攻击,但由于TLS对填充的验证更加严格(会验证所有填充字节),其攻击难度和实用性远低于原始的POODLE攻击。

小结

POODLE 是一个利用SSL 3.0 协议设计缺陷的降级攻击 。它通过迫使通信双方使用这个过时的协议,并利用其宽松的填充验证机制,像侦探一样逐步破解加密信息。它的主要遗产就是宣告了SSL 3.0的死刑,推动了更安全的TLS协议成为现代互联网的唯一标准。

相关推荐
2501_915909064 小时前
“绑定 HTTPS” 的工程全流程 从证书配置到真机验证与故障排查
网络协议·http·ios·小程序·https·uni-app·iphone
2501_915918415 小时前
iOS 混淆实战 多工具组合完成 IPA 混淆、加固与工程化落地(iOS混淆|IPA加固|无源码混淆|Ipa Guard|Swift Shield)
android·ios·小程序·https·uni-app·iphone·webview
listhi52010 小时前
TCP 和 UDP 协议的通信解析
网络协议·tcp/ip·udp
扁豆的主人10 小时前
http 状态码
网络·网络协议·http
扁豆的主人12 小时前
RPC服务
网络·网络协议·rpc
Bruce_Liuxiaowei15 小时前
解决Kali虚拟机中VMnet1(仅主机模式)网卡无法获取IP地址的问题
运维·网络·网络协议·tcp/ip
寒月霜华15 小时前
JaveWeb后端-Web基础-SpringBoot Web、HTTP协议
前端·spring boot·http
雪碧聊技术16 小时前
HTTP 核心知识点速查表
网络·网络协议·http
2501_9151063217 小时前
HTTPS 爬虫实战指南 从握手原理到反爬应对与流量抓包分析
爬虫·网络协议·ios·小程序·https·uni-app·iphone