1. 密钥交换的密码学困局
在未加密的HTTP通信中,攻击者可通过中间人攻击(MITM)窃听或篡改数据。SSL/TLS协议的核心挑战在于:如何在不安全的信道上建立安全通信?这本质上是一个“密钥分发问题”——若使用对称加密(如AES),双方需要共享同一密钥,但密钥本身如何安全传递?
非对称加密的突破性在于公钥与私钥的分离。以RSA算法为例,其数学基础是大质数分解难题:选择两个大质数p和q(通常≥2048位),计算n=p×q,公钥为(n,e),私钥为(n,d)。加密过程为 $c = m^e \mod n$,解密为 $m = c^d \mod n$,其中e与d满足 $e×d ≡ 1 \mod φ(n)$。攻击者即使截获公钥,也无法在多项式时间内分解n得到私钥。
2. TLS握手:从非对称到对称的密钥传递
在TLS 1.2握手流程中(以RSA密钥交换为例):
- ClientHello:客户端发送支持的密码套件列表和随机数(Client Random)
- ServerHello:服务器选择密码套件,发送证书和随机数(Server Random)
- 密钥交换:客户端生成Pre-Master Secret(46字节随机数),用服务器公钥加密后发送
- 密钥派生:双方通过PRF函数将Client Random、Server Random和Pre-Master Secret生成Master Secret,最终导出对称密钥(如AES-256-GCM)
此过程的安全性依赖两个层级:
-短期安全性:Pre-Master Secret的加密强度(RSA-2048破解需数千年)
长期安全性:证书私钥的存储安全(HSM硬件模块防护)
3. ECC:更高效的量子前哨站
椭圆曲线密码(ECC)在相同安全强度下,密钥长度仅为RSA的1/6:
安全级别 | RSA密钥长度 | ECC密钥长度 |
---|---|---|
128-bit | 3072-bit | 256-bit |
256-bit | 15360-bit | 512-bit |
以ECDHE密钥交换为例:
- 服务器生成临时椭圆曲线参数(如secp256r1)和私钥$d_S$
- 计算公钥$Q_S = d_S×G$(G为基点),发送给客户端
- 客户端生成私钥$d_C$,计算$Q_C = d_C×G$,共享密钥为$d_C×Q_S = d_S×Q_C$
Cloudflare实测显示,ECC使TLS握手速度提升15%,移动设备能耗降低22%。
4. 前向保密(PFS):会话密钥的“阅后即焚”
传统RSA密钥交换的隐患:若服务器私钥泄露,所有历史通信均可被解密。PFS通过临时密钥(Ephemeral Key)解决此问题:
DHE_RSA:每次会话生成新Diffie-Hellman参数
ECDHE_RSA:结合ECC的高效性与临时密钥特性
TLS 1.3已强制要求PFS,并废除静态RSA密钥交换。某银行在2017年升级至ECDHE后,即使遭遇APT攻击,历史交易数据仍未被破解。
5. 实战中的风险与防御
-Logjam攻击(2015):攻击者降级TLS至512位出口级DH参数,通过预计算破解。防御措施:禁用DHE导出级密码套件,使用≥2048位DH参数
ROBOT攻击(2017):RSA填充漏洞导致选择明文攻击。解决方案:启用RSA-PSS填充模式,禁用PKCS#1 v1.5
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。