HTTPS 安全内核:对称与非对称加密的博弈,数字证书一战定局

文章目录

引言

在日常上网过程中,我们几乎每天都会接触到 HTTPS:无论是登录账号、在线支付,还是浏览网页,浏览器地址栏中的"小锁"似乎已经成为安全的象征。但你是否真正思考过:HTTPS 为什么是安全的?它到底解决了什么问题?

在最初的 HTTP 协议中,数据是以明文形式在网络中传输的,这意味着任何处在通信链路中的第三方,都有可能窃取甚至篡改数据。这种攻击方式被称为"中间人攻击",它并不需要入侵服务器,仅通过"拦截 + 伪装"就可以获取敏感信息,危害极大。

为了解决这一问题,HTTPS 在 HTTP 的基础上引入了 SSL/TLS 加密机制 ,结合对称加密、非对称加密以及数字证书体系,构建了一套既安全又高效的通信方案。但这套机制并非一开始就完美无缺,而是经历了从"明文传输"到"对称加密",再到"非对称加密",最终引入"证书验证"的逐步演进过程。

本文将围绕以下几个核心问题展开讲解:

  • HTTPS 是如何一步步演变出来的?
  • 为什么单纯使用对称加密或非对称加密都不够?
  • 中间人攻击是如何发生的?
  • 数字证书又是如何从根本上解决这一问题的?

通过本文,你不仅能够理解 HTTPS 的工作原理,更重要的是,能够真正看懂它背后的安全设计思想

一、HTTPS概念

HTTPS = HTTP + S(SSL / TLS)

HTTP 是基础的超文本传输协议,用于在浏览器和服务器之间传输网页数据,但它是明文传输,不安全。

S 代表 SSL(安全套接层)或它的继任者 TLS(传输层安全协议),这是一个加密协议。

将 HTTP 与 SSL/TLS 结合,就得到了 HTTPS(HTTP over SSL/TLS),即 在 SSL/TLS 加密通道上运行的 HTTP。


二、HTTPS的工作原理

2.1加密和解密

  1. 对称加密
    加密和解密使用同一个密钥。
  2. 非对称加密
    加密使用一个密钥,解密使用另外一个密钥。

1.以前的传输数据的时候是进行明文传输,这样的数据容易被黑客纂改,不安全

2.后面引入对称加密

引入对称加密之后,即使数据被截获,由于黑客不知道密钥是啥,因此就无法进行解密,也就不知道请求的真实内容是啥了。

但是事情没有这么简单,服务器同一时刻是给很多客户端提供服务的,这么多客户端,每个人使用的密钥都必须是不同的(如果密钥是相同的就很容易扩散,被黑客拿到了),因此服务器就需要维护每个客户端和每个密钥之间的关联关系,这是件很麻烦的事情。

比较理想的做法是:客户端和服务器最开始进行通信的时候,就需要一方先生成唯一密钥,再通过网络传输给另一方。

但是如果直接把密钥明文传输,黑客也就能获得密钥了,此时后续的操作也就形同虚设了,因此,密钥也需要加密传输,如果对密钥再进行对称加密,总有一层是明文传输,因此对称加密这条路就走不通了,此时我们就需要用到非对称加密。


3.再引入非对称加密

服务器具有非对称的公钥S和私钥S',黑客具有非对称的公钥M和私钥M',当客户端向服务器发送请求,服务器给客户端明文出传送公钥S,中间的黑客拿到公钥S并保存好,把公钥S纂改为自己的公钥M,发送给客户端,客户端拿到公钥M以后,用M对自己的对称密钥进行加密,发给服务器,黑客用自己的私钥M'进行解密,拿到通信的对称密钥后,又用自己保存好的公钥S对密文进行加密,发送给服务器,在这个过程中,通信对称密钥就被黑客拿到了。


4.数字证书机制(HTTPS的核心防御)

在前面的分析中可以看到,即使引入了非对称加密,如果公钥在传输过程中被篡改,仍然会遭受中间人攻击。因此,问题的本质不在于加密方式,而在于如何保证公钥的真实性。

为了解决这一问题,HTTPS 引入了数字证书(Digital Certificate)机制。

4.1 什么是数字证书?

数字证书可以理解为服务器公钥的"身份证",由权威的第三方机构------CA(Certificate Authority,证书颁发机构)签发。

证书中包含:

服务器的公钥

服务器身份信息 (域名等)
证书颁发机构信息
数字签名(最关键)

作用:证明"这个公钥确实属于这个服务器"


4.2 客户端如何验证证书?

当客户端收到证书后,会进行三步校验:

① 校验有效期

判断证书是否过期

② 校验颁发机构(CA)

是否为系统信任的机构(操作系统内置)

常见机构如:DigiCert、GlobalSign

③ 校验是否被篡改(核心)

CA 用"私钥"给证书做了一个"防伪标签(签名)",客户端用"公钥"来验证这个标签有没有被改。

步骤如下:

获取 CA 的公钥,解密证书中的数字签名 → 得到摘要 hash1

对证书内容计算哈希 → 得到 hash2

比较:

相等 → 未被篡改 ✔

不相等 → 已被篡改 ❌


4.3 数字证书如何防止中间人攻击?(重点)

核心逻辑只有一句话:

攻击者无法伪造一个"被信任CA签名"的证书

具体原因:

攻击者可以替换公钥 ✔

但无法伪造 CA 的数字签名 ❌

因为没有 CA 的私钥

一旦证书被篡改:hash 校验失败,浏览器直接报错(红色警告)


学习路上一起进步,如果觉得内容不错,记得点赞支持一下,也可以关注我,后续持续分享高质量技术文章!

相关推荐
Anastasiozzzz1 小时前
深入研究Java Agent生态:SpringAI 与 SpringAIAlibaba核心能力、架构演进与全场景对比研究
java·开发语言·架构
彭于晏Yan1 小时前
JSONObject 使用文档(Java/Android原生)
java·spring boot·后端
NigulasiLiu1 小时前
CompletionService并发编排消费任务
java
Shadow(⊙o⊙)1 小时前
Linux进程地址空间——钻入Linux内核架构性剖析 硬核手搓!
java·linux·运维·服务器·开发语言·c++
Volunteer Technology1 小时前
Spring AI MCP案例
java·开发语言·数据库
紫琪软件工作室1 小时前
SpringBoot Java邮件发送工具类
java·spring boot·spring
郝学胜-神的一滴1 小时前
干货版《算法导论》04:渐近复杂度与序列接口实战
java·开发语言·数据结构·c++·python·算法
2301_811130541 小时前
【保姆级教程】Android Studio完整安装步骤(2026最新版,新手零踩坑)
android·java
_Evan_Yao1 小时前
缓存与数据库的“双写悖论”:一致性的常见陷阱与破局之道
java·后端·缓存