2、对称加密与非对称加密:基本原理、密钥类型、哈希与数字签名在KMS中的作用
对称加密与对称密钥
对称加密,说白了就是加密和解密用同一把钥匙。你拿它锁上,再拿它打开。很简单,也很高效。
常见的对称算法有 AES(AES-256 是主流)、DES(现在基本淘汰了)、还有国密 SM4。我个人习惯在 KMS 里都用 AES-256-GCM,因为自带认证加密,能检测篡改。
对称密钥在 KMS 里主要干两件事:
- 直接加密数据:比如加密数据库里的敏感字段,大文件加密。
- 做密钥加密密钥(KEK):这就是信封加密的核心。用对称密钥保护其他密钥。
我在项目中遇到过一个问题:有人把对称密钥硬编码在配置文件里,一泄露全部玩完。所以密钥必须由 KMS 统一托管,应用只拿密文密钥。
非对称加密与非对称密钥对
非对称加密方案,每一个密钥对包含 公钥 和 私钥。公钥可以公开,私钥必须保密。你想想看,这解决了对称加密里最头疼的密钥分发问题。
算法上常见的是 RSA(2048 位及以上)、ECC(比如 P-256,性能好)、国密 SM2。RSA 我用的最多,但 ECC 在同安全强度下密钥更短、计算更快。
在 KMS 里,非对称密钥对主要用途:
- 数字信封:用公钥加密对称密钥,接收方用私钥解密。
- 身份认证:比如 TLS 证书里的密钥对。
- 数字签名:私钥签名,公钥验证完整性。
我记得做支付系统时,我们用 KMS 生成 RSA 密钥对来签发交易凭据。公钥分发给下游系统,私钥永远不离开 KMS 的 HSM 边界。心里踏实多了。
哈希与数字签名
哈希不是加密,它是把任意长度的数据映射成固定长度的摘要(比如 SHA-256 输出 256 位)。而且不可逆,你没法从摘要还原原文。我经常把它比作数据的“指纹”。
在 KMS 里,哈希有两个关键角色:
- 数据完整性校验:存储时同时存哈希值,验证时重新计算,看是否被篡改。
- 数字签名的基础:签名时通常是对哈希值签名,而不是对整个文件签名,否则效率太低。
数字签名的流程大致是这样:
- 发送方计算数据的哈希值。
- 用私钥对这个哈希值加密(签名)。
- 接收方用公钥解密签名得到哈希值。
- 再自己计算一次数据哈希,对比两者是否一致。
我曾在某个区块链项目中用过这个流程——每个交易都经过 KMS 签名,保证了不可否认性。当然,哈希算法要选强抗碰撞的,比如 SHA-256 或 SM3。
它们在 KMS 中的协作关系
下面的图展示了对称加密、非对称加密、哈希和数字签名在 KMS 中的协作逻辑。你可以把它当作一个整体看待,而不是各自孤立的技术。
关键对比:对称 vs 非对称
| 维度 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 一个密钥(需共享) | 密钥对(公钥公开,私钥保密) |
| 性能 | 非常快(适合大数据) | 慢(适合小数据) |
| 主要用途 | 数据加密、密钥加密(KEK) | 密钥交换、数字签名、身份认证 |
| 典型算法 | AES, SM4, ChaCha20 | RSA, ECC, SM2 |
| KMS 使用场景 | 加密数据库字段、大文件 | 信封加密、TLS 证书、凭据签名 |
重点记一下:在 KMS 里,对称密钥负责“干活”,非对称密钥负责“管人”。哈希和签名是“保安”,保证数据没被动手脚。你设计任何一个加密方案,这四件套缺一不可。
哈希在数字签名中的角色
为什么签名前要哈希?举个例子,你要签一个 10GB 的视频文件。直接签整个视频,非对称加密能把你 CPU 跑冒烟。所以先算个哈希(32 字节),然后只签这个哈希。又小又准。
我在 KMS 里做文档签名时,就是先让 KMS 计算文档的 SHA-256,再用内部私钥签名。接收方拿公钥验签,同时重新计算哈希。完美。
好了,这章我们把对称、非对称、哈希和数字签名在 KMS 里的角色捋清楚了。下一层我们就可以进入实操,看 KMS 怎么把这些技术包装成接口让你调用。