什么是非对称加密?
非对称加密使用一对密钥:公钥和私钥。这是与对称加密最根本的区别。
核心特性
- 公钥可以公开,用于加密或验证签名
- 私钥必须保密,用于解密或生成签名
- 用公钥加密的数据只能用私钥解密
- 用私钥签名的数据只能用公钥验证
常见非对称加密算法
1. RSA (Rivest–Shamir–Adleman)
RSA 是最广泛使用的非对称加密算法,基于大数分解的数学难题。
密钥长度建议:
- 2048 位:基本安全
- 4096 位:高安全性需求
- 8192 位:极端安全场景
OpenSSL 生成 RSA 密钥对:
|
|
2. ECC (Elliptic Curve Cryptography)
ECC 基于椭圆曲线数学,在相同安全级别下使用更短的密钥。
密钥长度对比:
| ECC 密钥 | RSA 等效安全 |
|---|---|
| 256 位 | 3072 位 |
| 384 位 | 7680 位 |
优势:
- 计算速度快
- 密钥小,适合移动和 IoT 设备
- 资源消耗低
OpenSSL ECC 示例:
|
|
3. Diffie-Hellman (DH)
DH 算法用于密钥交换,双方可以在不安全的信道上协商共享密钥。
公钥加密 vs 私钥签名
加密场景
|
|
签名场景
|
|
对称 + 非对称:混合加密
实际应用中,常结合两种加密方式:
- 密钥交换:使用非对称加密交换对称密钥
- 数据加密:使用对称加密加密大量数据
优势:
- 兼顾安全性与性能
- 利用非对称加密解决密钥分发问题
- 利用对称加密高效处理数据
OpenSSL 实战
|
|
安全建议
- 保护私钥:私钥泄露等于安全失效
- 密钥强度:选择足够长的密钥长度
- 定期轮换:定期更换密钥对
- 安全存储:使用 HSM 或密钥管理服务