本节摘要:SOURCE 2.2:RSA、ECC 使用公钥/私钥对;公钥加密私钥解密,或私钥签名公钥验证。TLS 握手中用于密钥交换与身份证书。
扫描发现服务器仍用 RSA 1024 证书,现代基线要求 2048+(向 4096/PQC 迁移)。SOURCE 强调私钥必须保密,公钥可嵌入证书公开。
| 算法 | 典型用途 | 密钥长度对比 |
|---|---|---|
| RSA | 密钥传输、签名 | 2048 bit ≈ 112 bit 安全 |
| ECC | ECDHE、ECDSA 签名 | 256 bit P-256 ≈ 128 bit 安全 |
⚠️ 常见坑:混淆「用 RSA 加密会话密钥」与「用 RSA 签名证书」——同一密钥对不同操作应遵循 CSP 策略。
💡 关键直觉:非对称「慢但妙在无需预共享密钥」;大数据仍回对称 AES。
非对称密码学最容易混淆的是「公钥加密」与「签名」两种用法。公钥加密是「任何人能用公钥加密,只有私钥持有者能解密」,用于保护数据;签名是「只有私钥持有者能生成,任何人能用公钥验证」,用于证明来源与完整性。同一个 RSA 密钥对原则上不应同时用于两种操作,因为相关的实现细节(填充方案、操作语义)不同,混用会增加攻击面,行业最佳实践是加密密钥与签名密钥分开。
前向安全是非对称密钥交换设计里最重要的概念。如果服务器长期持有同一个 RSA 密钥并用于密钥交换,历史会话一旦被记录,私钥泄露就意味着所有历史会话都能被解密。ECDHE 每次握手生成临时密钥对,会话密钥只存在内存中,私钥泄露也无法追溯历史流量——这就是「前向安全」的含义,也是 TLS 1.3 放弃静态 RSA 密钥交换的原因。
# 非对称密钥用途对照 用途 使用方 验证方 典型算法 安全性质 数据加密 公钥加密 私钥解密 RSA-OAEP 机密性 数字签名 私钥签名 公钥验证 ECDSA、RSA-PSS 认证/完整/不可否认 密钥交换 ECDHE 临时 ECDHE 临时 X25519 前向安全 证书身份 CA 私钥签 任何客户端验 ECDSA 信任根分发
对照这张表可以看出,非对称密码学在 TLS 里承担了三个角色:证书签名(身份)、密钥交换(前向安全)、以及(在部分协议中)加密传输。理解这三个角色各自属于「加密还是签名、谁持有私钥、泄露后果是什么」,是排查「私钥丢了」「证书被冒用」类问题的前提,也是第 3 章握手分析的地基。
# 非对称算法密钥长度与安全强度对照 算法 密钥长度 对应安全强度 备注 RSA 1024 bit 约 80 bit 已淘汰 RSA 2048 bit 约 112 bit 基线 RSA 3072 bit 约 128 bit 推荐 RSA 4096 bit 约 140 bit+ 兼容性代价高 ECC P-224 / P-256 约 112 / 128 bit 移动端推荐 ECC P-384 / P-521 约 192 / 256 bit 高安全场景 DH 2048 bit 约 112 bit 需确认无导出弱组 DSA 1024 bit 已不推荐 FIPS 弃用 # 查看证书与密钥的命令 openssl x509 -in server.crt -text -noout # 查看证书算法、密钥长度、有效期、SAN openssl rsa -in server.key -check -noout # 校验 RSA 私钥结构 openssl pkey -in server.key -text -noout # 查看私钥算法与参数(支持 ECC) openssl s_client -connect host:443 -servername host # 观察实际协商的密钥交换与证书签名算法 # 密钥管理检查点 1. 私钥只存在于需运行的主机,权限最小化 2. 备份走加密通道,密钥库加口令保护 3. 密钥轮换周期按资产风险定,私钥泄露立即吊销换新 4. 加密用途密钥与签名用途密钥分离 5. 向 PQC 迁移时记录当前曲线/长度,便于替换规划
密钥长度对照表解决「到底要多长」的争议,验证命令解决「当前实际是什么」的确认。把两者配合使用,任何存量证书与密钥的现状都能在几分钟内查清,为升级排期提供准确输入。
最后提醒:非对称加密的密钥长度并非越长越好。RSA 从 2048 升到 4096,安全增益有限,但握手与签名耗时可能翻倍,还会带来证书体积问题。实践中以「达到目标安全级别」为准(2048 对应约 112 位、3072 约 128 位),而不是盲目拉长;ECC 在相同强度下密钥更短,性能与体积都更友好。选型时把「目标强度」与「场景约束」一起考量,比单纯比较数字更有意义。