密码学基础回顾:对称加密与非对称加密、哈希函数与数字签名、密钥长度与安全强度
说实话,很多做 PKI 的同学,最后栽跟头的地方往往不是协议本身,而是最基础的密码学概念没吃透。我见过不少项目,证书发得挺溜,但一问「你的根密钥到底多长才安全」,就含糊了。
这一章,咱们把地基夯实。不扯太深的理论,就讲你搭建企业 PKI 时,必须搞清楚的几个核心概念。
对称加密:快,但密钥怎么分?
对称加密,说白了就是「一把钥匙开一把锁」。加密和解密用同一个密钥。
它的优点是快。AES 加密一个几百兆的文件,基本感觉不到延迟。所以你在 PKI 体系里,真正保护大量数据的,还是对称加密。
但问题也很明显——密钥分发。你想想看,如果我和你要用同一个密钥,我怎么安全地把密钥给你?如果通过网络传,万一被截获,加密就形同虚设了。
常见的对称算法,我列个表,你心里有个数:
| 算法 | 密钥长度 | 状态 | 我的建议 |
|---|---|---|---|
| AES | 128 / 192 / 256 位 | 推荐使用 | 企业环境至少用 AES-256 |
| SM4 | 128 位 | 国密标准 | 国内合规场景必选 |
| 3DES | 168 位 | 已弃用 | 千万别再用,有已知漏洞 |
| RC4 | 可变 | 已弃用 | 彻底淘汰,毫无安全性可言 |
非对称加密:慢,但解决了信任问题
非对称加密,有一对密钥:公钥和私钥。公钥可以公开,私钥必须保密。
它的核心价值是解决密钥分发问题。你想想看,我只要把我的公钥给你,你用公钥加密数据,只有我用私钥能解开。中间人就算拿到公钥,也解不开密文。
但代价是慢。RSA 加密一个几百字节的数据还行,加密大文件就太慢了。所以它不适合直接加密业务数据。
在企业 PKI 里,非对称加密主要干两件事:
- 数字信封: 用接收方的公钥加密一个临时对称密钥,然后对称加密实际数据。接收方先用私钥解开信封,拿到对称密钥,再解密数据。
- 数字签名: 用发送方的私钥对数据摘要签名,接收方用发送方的公钥验签。保证数据来源和完整性。
常见的非对称算法:
| 算法 | 典型密钥长度 | 安全强度 | 适用场景 |
|---|---|---|---|
| RSA | 2048 / 4096 位 | 高 | 数字签名、密钥交换 |
| ECC (椭圆曲线) | 256 / 384 位 | 极高 | 移动设备、IoT、高性能场景 |
| SM2 | 256 位 | 极高 | 国密合规场景 |
| DSA | 2048 位 | 中 | 仅用于签名,已逐渐被 ECDSA 取代 |
哈希函数:数据的「指纹」
哈希函数,就是把任意长度的数据,映射成一个固定长度的摘要。这个摘要就像数据的「指纹」——内容变了,指纹一定变。
它有几个关键特性:
- 单向性: 从摘要反推原始数据,理论上不可能。
- 抗碰撞性: 很难找到两个不同的数据,产生相同的摘要。
- 雪崩效应: 输入改一个比特,摘要会大变样。
在企业 PKI 里,哈希函数无处不在:
- 证书签名时,先对证书内容做哈希,再对哈希值签名。
- 完整性校验时,对比文件的哈希值是否一致。
- 密码存储时,存哈希值而不是明文密码。
常见的哈希算法:
| 算法 | 摘要长度 | 状态 | 我的建议 |
|---|---|---|---|
| SHA-256 | 256 位 | 推荐使用 | 企业 PKI 默认选择 |
| SHA-384 / SHA-512 | 384 / 512 位 | 推荐使用 | 更高安全需求时选用 |
| SM3 | 256 位 | 国密标准 | 国内合规场景必选 |
| MD5 / SHA-1 | 128 / 160 位 | 已弃用 | 绝对不要用,有已知碰撞攻击 |
数字签名:非对称加密 + 哈希的完美组合
数字签名,本质上就是「用私钥加密哈希值」。它解决了三个问题:
- 身份认证: 只有持有私钥的人才能签名。
- 完整性: 数据被篡改,哈希值对不上,签名验证失败。
- 不可否认性: 签名者无法否认自己签过名。
流程很简单:
- 发送方对数据做哈希,得到摘要。
- 发送方用私钥加密摘要,生成签名。
- 接收方用发送方的公钥解密签名,得到摘要 A。
- 接收方对收到的数据做哈希,得到摘要 B。
- 对比 A 和 B,一致则签名有效。
这就是 PKI 里证书签名的核心逻辑。CA 用自己的私钥对证书内容签名,你拿到证书后用 CA 的公钥验签,就知道这个证书是不是真的。
密钥长度与安全强度:多长才够用?
这个问题,我几乎每次培训都会被问到。答案其实很简单:看你的安全需求和时间跨度。
密钥越长,暴力破解的难度呈指数级增长。但也不是越长越好——太长会影响性能。
我给出一个当前业界公认的安全强度对照表:
| 安全强度 (位) | 对称算法 | RSA / DSA | ECC | 推荐用途 |
|---|---|---|---|---|
| 80 | 2TDEA | 1024 | 160 | 已不安全,禁止使用 |
| 112 | 3TDEA | 2048 | 224 | 短期使用,不推荐新系统 |
| 128 | AES-128 | 3072 | 256 | 当前推荐,适合大多数企业 |
| 192 | AES-192 | 7680 | 384 | 高安全需求,如金融、政务 |
| 256 | AES-256 | 15360 | 512 | 极高安全,面向未来 |
你可能会问:「为什么 RSA 需要那么长,ECC 却可以短很多?」
因为两者的数学基础不同。RSA 依赖大整数分解,ECC 依赖椭圆曲线离散对数。在同样的安全强度下,ECC 的密钥长度只有 RSA 的十分之一左右。这也是为什么现代 PKI 越来越倾向于 ECC。
知识体系总览
下面这张图,把本章的核心概念串起来了。你可以把它当作一个快速参考:
这张图的核心逻辑很简单:对称加密负责效率,非对称加密负责信任,哈希函数负责完整性。三者结合,构成了数字签名,而密钥长度决定了这一切的安全底线。企业 PKI 就是在这个基础上搭建起来的。