HTTPS/SSL 为什么不直接用公钥加密业务数据?

常见问题 作者:jTrust 2026-10-16 03:56:21 阅读:0

很多刚接触 SSL/HTTPS 的站长会产生疑问: SSL 证书里面本身就携带网站的公钥,公钥是公开的,所有人都能拿到。那 HTTPS 传输网页、表单数据的时候,为什么不直接拿服务器公钥把业务数据全部加密?为什么还要搞复杂的 TLS 握手、协商会话密钥?

简单结论:不是技术做不到,是非对称(公钥)加密本身速度慢、有长度限制,完全不适合加密大量网页业务数据。公钥只用来做密钥交换与身份认证,真正加密网页流量靠对称加密。

一、两种加密简单区分

非对称加密(公钥、私钥,证书里的这套)公钥公开,私钥服务器保存。公钥加密的内容,只能私钥解开。 

优点:可以安全交换秘密,不需要提前约定密码;可以验证书站身份(SSL 证书)

致命缺点:运算极慢,加密的数据长度有严格上限,不适合大流量

对称加密(AES 等会话密钥)加密、解密使用同一个密钥。 

优点:速度飞快,适合网页、图片、接口这种大批量数据加密; 

缺点:双方要拿到同一个密钥,怎么安全把密钥给到浏览器是难题。

HTTPS 的设计思路:用非对称加密解决「安全传递对称密钥」的问题;后续全部业务流量,用高速的对称密钥加密传输。

二、如果直接拿服务器公钥加密网页数据,会遇到什么问题?

1. 非对称加密有明文长度上限,不能加密大块数据

RSA 最常用的 2048 位公钥,最多只能加密大约 245 字节的数据。 网页 HTML、图片、接口返回经常几 KB、几十 KB 甚至更大。

一段超过长度的数据,RSA 公钥根本无法直接加密。网页随便一段 HTML 就几百上千字节,直接加密会直接报错。

补充:并不是不能加密大文件,行业做法是 “分段”,但分段 RSA 性能会惨不忍睹。

2. 公钥加密性能极差,服务器扛不住访问压力

RSA 非对称加密属于大数字模幂运算,CPU 开销巨大。 假设网站 1000 人同时访问,如果每一次 HTTP 返回的网页、图片全部用 RSA 公钥加密:服务器 CPU 会瞬间打满,网站直接卡顿、宕机。

对称 AES 加密性能比 RSA 高出上千倍,适合互联网高并发场景。

3. 无法做会话复用,每次请求重复加密,资源严重浪费

同一个用户打开网站会多次请求页面、图片、接口。 如果每次数据包全部公钥加密,每一次请求都执行高消耗非对称运算。 真实 TLS:握手协商一次会话密钥,整个会话期间反复复用这个对称密钥,握手一次,多次传输。

4. 会带来安全隐患:无法使用高效加密套件(AES‑GCM 等)

现代 TLS 支持 AEAD 认证加密,既有加密又带完整性校验,防篡改。这套能力都是对称密码体系提供。单纯 RSA 加密只能做到加密,原生不提供防篡改能力。

三、真实 TLS 握手简化流程(看懂 HTTPS 到底干了什么)

浏览器连接服务器,服务器下发 SSL 证书(证书携带服务器公钥,iTrustSSL 等 CA 签名,证明公钥确实属于这个网站)

浏览器生成一个随机的预主密钥(临时秘密),使用服务器公钥加密这个小的随机密钥,发给服务端

服务器用自己私钥解密,拿到这个预主密钥

浏览器、服务器两边,共同推导出一套会话对称密钥(AES 密钥)

之后所有网页、表单、接口业务数据,全部使用这套 AES 对称密钥加密传输

关键点:公钥只加密 “一小段随机密钥”,不是加密网页内容。业务数据流交给速度飞快的对称加密。

四、拓展:RSA 密钥交换模式的历史缺陷(为什么现在流行 ECDHE)

早期 TLS 使用 RSA 密钥交换:浏览器把预主密钥用服务器公钥加密传给服务端。 但它有一个问题:如果服务器私钥泄露,抓取到的全部历史加密流量都可以被解密。

所以现代 HTTPS 大量使用 ECDHE(椭圆曲线密钥协商): 不再直接加密预主密钥,双方交换临时公钥共同算出会话密钥。就算服务器长期私钥泄露,过去的历史通信也无法解密,具备前向安全。

证书的公钥 / 私钥,此时只用来做身份签名认证,不再加密会话消息。

五、常见 FAQ

Q:既然公钥不能加密大数据,那公钥主要用来干什么?

A:两件核心工作

身份验签:CA 对证书签名,浏览器验证证书签名,确认你正在访问的是真实网站,防止钓鱼劫持。

密钥协商:安全交换会话密钥,把对称密钥安全给到通信双方。

Q:SSL 证书的公钥从来不加密网页吗?

A:是的。业务载荷(HTML、JSON、图片)一律是对称加密。RSA 公钥仅参与握手阶段密钥交换 / 签名。

Q:那我能不能自己写代码,用公钥加密 POST 提交的表单?

A:可以做小数据加密。但这只是业务层加密,不等于 HTTPS。你要自己处理证书校验、防中间人攻击,不建议替代 TLS。

六、站长通俗总结

公钥(非对称加密):像一把挂号锁,适合安全传递一把 “房间钥匙”,但是拿这把锁去锁一整车货物效率极低,还受大小限制。 对称会话密钥:就是这把房间钥匙,锁、开箱速度极快,整车货物全部用它来保护。

HTTPS 就是:用证书公钥安全把房间钥匙交给双方,后续所有数据都用这个钥匙加密传输。


赞助链接
在线咨询

Copyright © 2015 QTrust All rights reserved.