访问支付、网银、社交账号等场景时,地址栏的 “https://” 和绿色锁形图标是数据安全的核心保障。在 HTTPS 普及前,HTTP 协议以明文传输数据,黑客可通过 “中间人攻击” 截获账号密码、篡改交易信息 —— 比如在公共 WiFi 环境中,未加密的支付数据可能被直接窃取。HTTPS 的本质是 “HTTP+SSL/TLS 协议”,通过加密、认证、完整性校验的组合逻辑,解决了 HTTP 的安全漏洞。要理解其核心,需从安全目标、技术原理、连接流程三个维度深入拆解。
一、HTTPS 的核心目标:覆盖数据传输的 “三重安全风险”
HTTPS 的设计初衷,是针对性解决互联网数据传输中的三大核心风险,这三大风险也是所有网络安全技术的基础防御方向:
- 窃听风险(防窃取):数据在传输过程中(如从用户浏览器到服务器),被第三方非法拦截并读取内容。典型场景是公共 WiFi 下的账号密码泄露,需通过 “加密” 让非授权方无法解读数据。
- 篡改风险(防篡改):数据在传输中被第三方修改后再转发,接收方无法察觉。比如支付金额从 “100 元” 被改为 “10000 元”,需通过 “完整性校验” 确保数据未被改动。
- 冒充风险(防冒充):第三方伪造目标服务器(如钓鱼网站)或用户,骗取真实数据。比如伪造银行官网骗取用户登录信息,需通过 “身份认证” 确认通信双方的真实性。
这三大目标并非孤立,HTTPS 通过多技术协同实现 —— 加密解决窃听,完整性校验解决篡改,身份认证解决冒充,三者共同构成安全闭环。
二、HTTPS 的核心技术:6 种工具的 “原理协同” 与 “逻辑互补”
HTTPS 并非依赖单一技术,而是通过 6 种核心技术的分层配合,实现 “高效加密 + 可靠认证”。每种技术的原理设计都针对特定问题,且存在明确的互补关系:
1. 对称加密:解决 “大量数据高效加密” 的核心
- 原理本质:基于 “同一密钥完成加密与解密” 的逻辑,密钥是一串固定长度的二进制字符串,加密时将数据与密钥通过算法混合,解密时用同一密钥还原。
- 例:若密钥为 “1234”,数据 “abc” 经 AES 算法加密后得到密文 “x9#k”,接收方用 “1234” 解密可还原 “abc”。
- 核心优势:算法复杂度低(如 AES 的轮次运算),处理速度快,适合 GB 级文件、实时聊天等 “大量数据传输” 场景 —— 这是非对称加密无法替代的,因为非对称加密处理 1KB 数据的时间,对称加密可处理 MB 级数据。
- 关键痛点:“密钥分发难题”—— 若通信双方未提前约定密钥,直接在网络中传输密钥,会被黑客截获,导致后续所有加密数据被破解(相当于 “把家门钥匙从窗户扔给对方,中途可能被偷”)。

2. 非对称加密:解决 “对称密钥安全分发” 的痛点
- 原理本质:基于 “公钥 - 私钥” 的密钥对设计,数学基础是 “大数分解难题”(如 RSA 算法)或 “离散对数难题”(如 ECC 算法):
- 公钥:可公开分发,任何人可获取,仅用于 “加密数据” 或 “验证签名”;
- 私钥:仅持有者保管,用于 “解密公钥加密的数据” 或 “生成签名”;
- 核心逻辑:公钥加密的内容,只有对应的私钥能解密;私钥生成的签名,只有对应的公钥能验证 —— 单向不可逆。
- 核心作用:专门解决对称加密的 “密钥分发” 问题,流程逻辑如下:
- 服务器生成 “公钥 A - 私钥 A” 对,将公钥 A 公开在网站;
- 用户生成对称密钥 K(用于后续加密数据);
- 用户用公钥 A 加密对称密钥 K,发送给服务器;
- 服务器用私钥 A 解密,获取对称密钥 K;
- 后续双方用对称密钥 K 加密传输所有数据。
- 关键局限:加密速度慢(约为对称加密的 1/1000),因算法需处理大数运算,无法直接加密大量数据 —— 因此仅用于 “传输对称密钥”,而非数据本身。

3. 单向散列(Hash):解决 “数据完整性校验” 的基础
- 原理本质:通过散列算法(如 SHA256),将任意长度的输入数据(1KB 文本或 10GB 视频)压缩为固定长度的 “哈希值”(SHA256 输出 64 位十六进制字符串),且满足三大特性:
- 确定性:相同输入必对应相同哈希值(如 “abc” 的 SHA256 值固定为 “ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad”);
- 抗碰撞性:不同输入几乎不可能生成相同哈希值(SHA256 的输出空间有 2^256 种可能,暴力破解碰撞的概率趋近于 0);
- 单向性:无法从哈希值反推原数据(哈希算法是 “有损压缩”,信息不可逆)。
- 核心作用:验证数据是否被篡改,逻辑流程如下:
- 服务器对文件(如安装包)计算 SHA256 哈希值,公开在下载页;
- 用户下载文件后,用同一算法计算哈希值;
- 对比两者哈希值:若一致,说明文件未被篡改;若不一致,说明文件被修改(如植入病毒)。
- 关键局限:仅能验证完整性,无法确认 “数据来源”—— 若黑客同时篡改数据和重新计算哈希值,单纯的散列无法识别,需结合 “密钥” 升级为消息认证码。
4. 消息认证码(HMAC):解决 “完整性 + 来源认证” 的结合
- 原理本质:在单向散列的基础上,加入 “双方约定的密钥”,生成 “带密钥的哈希值”(HMAC 值),核心逻辑是:
- 仅持有 “原数据 + 约定密钥” 的双方,能生成正确的 HMAC 值;
- 若数据或密钥任意一项改变,HMAC 值会完全不同;
- 无法从 HMAC 值反推原数据或密钥。
- 核心应用:JWT 鉴权(用户登录验证),具体流程如下:
- 用户输入账号密码,服务器验证通过后,生成 JWT 令牌,结构为 “header.payload.HMAC”;
- header:记录加密算法(如 HMAC-SHA256);
- payload:记录用户 ID、过期时间等非敏感信息;
- HMAC:服务器用 “约定密钥” 对 “header+payload” 计算的 HMAC 值;
- 用户后续访问时,携带 JWT 令牌;
- 服务器提取 “header+payload”,用同一密钥计算 HMAC 值,与令牌中的 HMAC 对比:
- 若一致:说明令牌未被篡改,且来自真实服务器(只有服务器知道密钥);
- 若不一致:令牌被篡改,拒绝访问。
- 关键优势:同时实现 “完整性校验” 和 “来源认证”,弥补了单向散列无法确认数据来源的缺陷。

5. 数字签名:解决 “身份认证 + 不可抵赖” 的核心
- 原理本质:基于 “非对称加密 + 单向散列” 的组合,核心逻辑是 “用私钥签名,用公钥验证”,流程如下:
- 发送方(如服务器)对数据计算哈希值(如 SHA256);
- 发送方用自己的私钥对哈希值加密,生成 “数字签名”;
- 发送方将 “原数据 + 数字签名” 发送给接收方;
- 接收方用发送方的公钥解密数字签名,得到 “哈希值 A”;
- 接收方对原数据计算哈希值,得到 “哈希值 B”;
- 对比 A 和 B:若一致,说明数据未被篡改,且确为发送方发出(只有发送方有私钥);若不一致,数据无效。

- 核心设计亮点:为什么先散列再签名?
- 非对称加密处理大文件速度极慢,若直接对 1GB 文件签名,需耗时数分钟;
- 先散列成 64 位哈希值,再对哈希值签名,仅需毫秒级时间,大幅提升效率。
- 关键价值:实现 “不可抵赖性”—— 发送方无法否认已发送的数据(私钥唯一,签名无法伪造),这是电子合同、交易记录等场景的核心安全需求。

6. CA 证书:解决 “公钥真实性” 的信任问题
- 原理本质:非对称加密的前提是 “公钥真实”—— 若黑客伪造服务器,同时生成 “假公钥 - 假私钥”,并将假公钥发给用户,用户会误以为是真实公钥,导致密钥被窃取。CA 证书(由权威证书颁发机构签发)的作用,就是为 “公钥” 提供 “信任背书”,本质是 “带数字签名的公钥载体”,包含两大核心信息:
- 明文信息:网站域名、服务器公钥、证书有效期、签发机构(CA)名称;
- CA 数字签名:CA 用自己的私钥,对 “明文信息的哈希值” 加密后的结果。
- 核心信任逻辑:层级信任链浏览器预装了 “根 CA” 的公钥(如 Verisign、Let's Encrypt),根 CA 是互联网信任的 “顶层”,其证书自签名(用自身私钥签名);根 CA 可授权 “二级 CA”,二级 CA 的证书由根 CA 签名;网站的证书由二级 CA 签名 —— 形成 “根 CA→二级 CA→网站证书” 的信任链,浏览器通过根 CA 公钥,可逐层验证下级证书的真实性。
- 关键验证流程(浏览器侧):
- 浏览器接收服务器发送的 CA 证书;
- 解析证书的 “签发机构”,找到对应的 CA 公钥(若为二级 CA,需先验证二级 CA 证书的真实性,直至根 CA);
- 用 CA 公钥解密 “CA 数字签名”,得到 “哈希值 A”;
- 对证书中的 “明文信息” 计算哈希值,得到 “哈希值 B”;
- 对比 A 和 B,同时检查:证书是否在有效期内、证书域名是否与访问域名一致、证书是否在 CA 的 “吊销列表”(若证书私钥泄露,CA 会吊销该证书);
- 所有检查通过,确认服务器公钥真实;否则提示 “证书错误”,阻断访问。

如上图所示,A 和 B 通信的前提是 A 得到的 B 的公钥是真实的(是否出现中间人攻击)。
因认证机构是权威且真实的,就保证了Bob的公钥是真实的。
三、HTTPS 连接流程:SSL/TLS 握手的 “8 步逻辑链” 与安全设计
当用户访问 HTTPS 网站时,浏览器与服务器需先完成 “SSL/TLS 握手”—— 这是建立安全连接的核心步骤,每一步的设计都对应特定安全需求,以 TLS 1.2 为例(主流版本),流程逻辑如下:
步骤 1:浏览器发起 “客户端问候”(Client Hello)
- 浏览器向服务器发送两类关键信息:
- 支持的加密套件列表:如 “TLS_RSA_WITH_AES_256_GCM_SHA384”(依次表示密钥交换算法 RSA、对称加密算法 AES-256-GCM、完整性算法 SHA384);
- 客户端随机数(Client Random):一串 32 字节的随机值,用于后续生成密钥。
- 设计逻辑:提供算法选择范围,同时用随机数避免 “重放攻击”(黑客截取过往握手数据重复发送,因随机数不同,无法复用)。
步骤 2:服务器返回 “服务器问候”(Server Hello)
- 服务器基于浏览器的请求,返回三类信息:
- 选定的加密套件:从浏览器列表中选双方都支持的套件(如上述 “TLS_RSA_WITH_AES_256_GCM_SHA384”);
- 服务器随机数(Server Random):另一串 32 字节的随机值,与客户端随机数共同作为密钥种子;
- 服务器 CA 证书:包含服务器公钥及 CA 签名的证书文件。
- 设计逻辑:确定加密规则,提供服务器身份凭证,同时补充随机数,增加后续密钥的随机性。
步骤 3:浏览器验证 CA 证书并提取公钥
- 浏览器执行 CA 证书验证流程(如前文 “CA 证书关键验证流程”):
- 若验证失败(如证书过期、域名不匹配),浏览器弹出 “安全警告”,由用户决定是否继续(通常不建议继续);
- 若验证通过,从证书中提取服务器公钥(Server Public Key)。
- 设计逻辑:确认服务器身份真实,避免连接到钓鱼网站,为后续密钥传输提供安全公钥。
步骤 4:浏览器生成 “预备主密钥”(Pre-Master Secret)
- 浏览器基于 “客户端随机数 + 服务器随机数”,通过伪随机算法生成 “预备主密钥”(48 字节的随机值);
- 设计逻辑:不直接生成最终密钥,而是用 “预备主密钥 + 两个随机数” 共同推导,增加密钥的复杂度 —— 即使黑客破解一个随机数,也无法还原密钥。
步骤 5:浏览器加密 “预备主密钥” 并发送
- 浏览器用 “服务器公钥” 对 “预备主密钥” 加密,生成 “加密后的预备主密钥”,发送给服务器;
- 设计逻辑:确保只有服务器能解密(需服务器私钥),防止预备主密钥在传输中被黑客窃取。
步骤 6:服务器解密 “预备主密钥”
- 服务器用自己的 “私钥”(Server Private Key)解密 “加密后的预备主密钥”,获取原始的 “预备主密钥”;
- 设计逻辑:完成对称密钥的安全分发 —— 此时浏览器和服务器都持有 “客户端随机数、服务器随机数、预备主密钥” 三个核心参数。
步骤 7:双方生成 “共享主密钥”(Master Secret)
- 浏览器和服务器用相同的 “伪随机函数(PRF)”,输入 “预备主密钥 + 客户端随机数 + 服务器随机数”,生成 “共享主密钥”(48 字节);
- 进一步,将 “共享主密钥” 衍生为 “会话密钥”(包含用于加密数据的 “数据密钥” 和用于完整性校验的 “MAC 密钥”);
- 设计逻辑:基于相同参数生成相同密钥,确保双方后续加密解密的一致性;衍生会话密钥是为了分工明确,提升安全性(数据加密与完整性校验分离)。
步骤 8:双方确认 “安全连接建立” 并加密传输
- 浏览器向服务器发送 “Finished 消息”(用会话密钥加密),服务器解密后确认连接正常;
- 服务器向浏览器发送 “Finished 消息”(同样用会话密钥加密),浏览器解密后确认连接正常;
- 后续所有 HTTP 请求(如加载页面、提交表单)和响应,均用 “会话密钥” 通过对称加密算法(如 AES-256-GCM)加密传输;
- 设计逻辑:通过加密的 Finished 消息,确认双方密钥一致且连接未被篡改;后续用对称加密传输数据,兼顾安全与效率。

四、HTTPS 的进阶逻辑:性能优化与版本演进
HTTPS 并非一成不变,其设计在安全与性能之间不断平衡,核心演进方向包括:
1. 会话复用:减少握手开销
- 问题:完整 TLS 握手需 2 次网络往返(RTT),耗时约 100-200ms,频繁访问同一网站会重复耗时;
- 解决方案:
- 会话 ID 复用:第一次握手后,服务器生成 “会话 ID”,浏览器缓存;后续握手时,浏览器发送会话 ID,若服务器缓存未过期,直接复用之前的会话密钥,跳过证书验证和密钥生成步骤;
- 会话票据复用:服务器用 “长期密钥” 加密会话信息(含会话密钥),生成 “会话票据” 发给浏览器;后续握手时,浏览器发送会话票据,服务器解密后复用会话密钥,无需服务器缓存。
2. TLS 版本演进:简化流程 + 强化安全
- TLS 1.3(2018 年发布,目前主流)对比 TLS 1.2 的优化:
- 握手步骤从 8 步简化为 3 步,仅需 1 次 RTT,耗时减少 50%;
- 移除不安全的加密套件(如 RSA 密钥交换,改为更安全的 ECDHE);
- 默认启用 “AEAD 加密模式”(如 AES-GCM),同时实现加密和完整性校验,无需单独的 MAC 密钥;
- 支持 “0-RTT 握手”:对重复访问的网站,可在第一次请求时就携带加密数据,进一步减少延迟。
3. 性能损耗控制
- 误解:HTTPS 加密会大幅降低网站速度;
- 实际情况:随着硬件加密(如 CPU 的 AES-NI 指令集)和 TLS 1.3 的普及,HTTPS 的性能损耗已降至 5% 以内,远低于安全收益;
- 补充:HTTPS 是 HTTP/2 和 HTTP/3 的强制前提,而 HTTP/2 的多路复用、HTTP/3 的 QUIC 协议,可大幅提升网站加载速度,抵消加密开销。
五、HTTPS 的核心价值:互联网信任体系的 “底层基石”
HTTPS 的价值远超 “数据加密”,而是构建了互联网的信任基础:
- 对用户:保障账号、支付、隐私等敏感信息安全,避免因钓鱼、窃听导致的财产损失;
- 对企业:防止数据篡改(如电商平台的订单信息),确保交易不可抵赖,提升用户信任;同时,搜索引擎(如谷歌、百度)优先收录 HTTPS 网站,有助于 SEO 优化;
- 对互联网生态:是移动支付、在线医疗、云服务、电子政务等场景的前提 —— 没有 HTTPS,这些涉及敏感数据的业务无法安全开展。
如今,HTTPS 已成为互联网的 “标配”:主流浏览器(Chrome、Edge)对 HTTP 网站标注 “不安全”,工信部也要求国内网站逐步升级为 HTTPS。理解 HTTPS 的原理,不仅能帮助用户识别网络安全风险(如证书错误提示需警惕),也能清晰认知 “数据安全” 的底层逻辑 —— 所有安全技术的核心,都是通过 “数学算法 + 信任机制”,将风险控制在可接受范围。
文章来源: https://www.freebuf.com/articles/database/450477.html
如有侵权请联系:admin#unsafe.sh