2. 密码学基础回顾:对称加密与非对称加密原理、哈希函数、数字签名、密钥派生与安全存储要点

讲KMS集成和审计日志,密码学基础得先捋一捋。
我个人的习惯是,每次搭建巡检系统前先做一轮“密码学自检”——看看当前用的加密算法是不是还安全,密钥存得稳不稳。这一章咱们就快速过一遍核心概念,后面讲到实际集成时你会觉得特别顺。

2.1 对称加密——速度快,但要管好密钥

对称加密说白了就是加密和解密用同一把钥匙。举个例子,你用AES-256加密一份日志文件,解密时还得用同一个密钥。我在项目里见过很多同学直接硬编码密钥——千万别这么干!

主流对称算法对比:

算法密钥长度模式示例安全性现状
AES128 / 192 / 256GCM, CBC推荐使用
DES56ECB已弃用,容易被暴力破解
3DES112 / 168CBC逐步淘汰,性能差
SM4128CBC, CTR国密合规
关键点:对称加密适合批量数据加密,但密钥分发是个老大难。KMS里一般用非对称加密来保护对称密钥的传输。

2.2 非对称加密——公钥私钥分家

非对称加密用一对钥匙:公钥加密,私钥解密。反过来也行——私钥签名,公钥验签。我记得有一次做审计日志防篡改设计,就是用非对称签名来保证每条日志的不可否认性。

常用算法:

  • RSA:成熟但密钥越长越慢,我建议2048位以上。
  • ECC(椭圆曲线):相同安全强度下密钥短很多,比如256位ECC ≈ 3072位RSA。我个人偏爱ECC,特别是用在IoT设备上。
  • SM2:国密算法,国内合规场景必选。
实践经验:如果你在KMS里做密钥派生,非对称加密通常只用来加密对称密钥本身,而不是直接加密大批量日志。否则性能扛不住。

2.3 哈希函数——做指纹,不存储原文

哈希函数能把任意长度数据变成固定长度摘要。注意它不是加密,是单向的。举个例子,你在审计日志里存每条记录的哈希值,就能防篡改——改一个字节,哈希值就变了。

我曾经被MD5坑过一次:旧系统用了MD5做完整性校验,后来被人轻松碰撞攻击。从那以后,我坚持用SHA-256以上。

算法输出长度安全性
MD5128位已不安全,避免使用
SHA-1160位理论不安全,不推荐
SHA-256256位当前标准
SHA-3可配置下一代标准,逐渐普及
SM3256位国密合规
注意:哈希函数不能直接用于加密!它没有解密过程。有些同学说“哈希加密”,这是概念混淆。

2.4 数字签名——哈希 + 非对称 = 不可抵赖

数字签名其实就两件事:签名者用私钥对数据的哈希做加密,验证者用公钥解密哈希并比对。我在做密文检索审计日志的时候,每条日志提交时都会加上签名——谁写的、什么时候写的、内容有没有被改过,一验便知。

常见的签名算法:

  • RSA-PSS:带随机填充,更安全
  • ECDSA:基于椭圆曲线,签名短
  • SM2签名:国标
  • Ed25519:快且安全,我很喜欢这个

2.5 密钥派生与安全存储

密钥派生(KDF)是从一个主密钥或密码派生出一堆子密钥。比如你用PBKDF2把用户口令变成AES密钥。我建议不要直接用口令当密钥——加盐、迭代这些步骤不能省。

常见KDF:

算法特点
PBKDF2安全,可配置迭代次数
bcrypt / scrypt抗GPU暴力
HKDF基于HMAC,适合协议
Argon2内存硬,推荐新项目使用

安全存储就更实在了。密钥不能明文躺磁盘——要么用HSM(硬件安全模块),要么用密钥保险箱(如Vault),要么加密后存数据库。我之前的项目里把租户的KMS主密钥放在HSM里,再用KDF派生出业务密钥——泄漏风险降了一大截。

记住一条红线:密钥永远不要和密文存一起。分开存,加访问控制,定期轮换。我就是靠这个原则帮客户躲过一次内部人员泄露。

本章知识体系总览

密码学基础核心结构 对称加密 (AES) 非对称加密 (RSA/ECC) 哈希函数 (SHA-256) 数字签名 (ECDSA/SM2) 密钥派生 (KDF) 安全存储 (HSM/Vault) 对称加密提供速度,非对称加密解决密钥分发,哈希保证完整性,数字签名实现不可否认,KDF和安全存储守住最后防线
我的建议:如果你时间紧,至少要把对称加密、哈希和数字签名这三个实战中最常用的吃透。KMS里密钥派生和安全存储是配置门槛,但一旦配好就一劳永逸。

好了,基础回顾就到这里。这些概念会反复出现在后面的KMS集成、审计日志签名、密文检索方案中——你如果觉得哪个部分不熟,随时回到这一章翻翻。接下来咱们就进入真正的集成实战了。