3. 密码学基础:对称加密与非对称加密归纳总结
3.1 为什么审计日志需要加密?
审计日志里存的是什么东西?说白了,就是谁在什么时间、从哪台机器、执行了什么操作、操作了哪些敏感数据。这种日志一旦被篡改或泄漏,整个审计链条就断了。我参与过一家金融公司的合规项目,他们的日志明文存储在共享文件服务器上,结果运维人员自己就能偷偷改掉操作记录——嗯,那项目后来直接废了。
加密的核心目的就两个:保证机密性(别人看不懂),以及保证完整性(别人改不了)。对称加密和非对称加密,正是实现这两个目标的两把钥匙。
3.2 对称加密:一把钥匙开一把锁
对称加密很简单:加密和解密用同一个密钥。就像你家大门,进出门都用同一把钥匙。常见的算法有 AES、DES、3DES、SM4(国密)。
3.2.1 我常用的对称加密算法对比
| 算法 | 密钥长度 | 分组大小 | 安全性 | 典型场景 |
|---|---|---|---|---|
| AES-256 | 256 bit | 128 bit | 极高,当前推荐 | 日志文件加密、磁盘加密 |
| AES-128 | 128 bit | 128 bit | 高,性能更好 | 网络传输加密(TLS) |
| SM4 | 128 bit | 128 bit | 国密标准,等效AES-128 | 国内合规场景 |
| DES | 56 bit | 64 bit | 已不安全,别用 | 历史遗留系统 |
3.2.2 对称加密的痛点
你想想看,密钥怎么安全地传给对方?如果通过互联网直接发送密钥,那跟没加密有什么区别?这叫「密钥分发问题」。我在一个分布式审计系统中踩过这个坑——日志采集端和存储端各自有一份配置文件硬编码了同一个对称密钥,结果运维人员误把配置文件上传到公共代码仓库……嗯,后面的事情我不说你也知道。
3.3 非对称加密:一对钥匙,各司其职
非对称加密解决了密钥分发问题。它有一个公钥(公开的)和一个私钥(自己藏好的)。公钥加密的数据只能用私钥解密;反过来,私钥签名可以用公钥验证。常见算法有 RSA、ECC(椭圆曲线,比如 ECDSA、Ed25519)、SM2(国密)。
3.3.1 典型用法:混合加密
实际项目中,日志加密很少直接用非对称加密全量数据——效率太低了。我做过的审计系统是这样干的:
- 客户端生成一个临时的对称密钥(比如 AES-256 密钥)。
- 用对称密钥加密日志内容。
- 再用服务器的公钥加密这个对称密钥。
- 把加密后的日志和加密后的对称密钥一起发给服务器。
- 服务器用私钥解密出对称密钥,再用它解密日志。
这就是「混合加密」。你想想看,对称加密快,非对称加密安全,结合起来刚刚好。
3.3.2 非对称算法选型表
| 算法 | 密钥长度 | 安全等级 | 性能 | 推荐场景 |
|---|---|---|---|---|
| RSA-2048 | 2048 bit | 高 | 慢(签名/验签) | 遗留系统、PKI 证书 |
| RSA-4096 | 4096 bit | 极高 | 更慢 | 极高安全要求 |
| ECC (P-256) | 256 bit | 等效 RSA-3072 | 快 | 现代系统优先选 |
| Ed25519 | 256 bit | 极高 | 非常快 | 数字签名(审计日志签名) |
| SM2 | 256 bit | 等效 ECC | 快 | 国密合规 |
3.4 两者对比——一张图讲清楚
下面这张图把对称加密和非对称加密的核心区别画出来了。看懂这张图,本章就过了大半。
3.5 如何保护审计日志里的密钥?
密钥存储不当,上面所有加密都白费。我见过有人把对称密钥写死在代码里,然后代码上传到 GitHub……嗯,那是一次很好的教学案例。
- 对称密钥: 使用硬件安全模块(HSM)或密钥管理服务(如 AWS KMS、Azure Key Vault)。如果预算有限,至少用加密文件系统存储密钥,且限制文件权限为 600。
- 非对称私钥: 必须加密存储,设置密码保护。生产环境最好放在 HSM 或安全飞地(SGX/SEV)中。
- 轮换策略: 每 90 天强制轮换一次密钥。旧的加密密钥可以保留用于解密历史数据,但不能继续用于加密新数据。
3.6 在审计日志巡检中的实际应用
我们这门课讲的是盲索引与可搜索加密,但底层离不开这两个基础加密方法。举个例子:
- 巡检程序需要读取加密的审计日志。如果用对称加密,巡检端和存储端必须共享对称密钥——这就回到了密钥分发难题。
- 如果用非对称加密,巡检端用公钥加密查询条件,服务端用私钥解密后搜索——但服务器能看到明文查询条件,对某些场景不适用(比如医生查患者数据,服务器不能知道查的是谁)。
- 于是有了可搜索加密(SE):用对称加密先加密日志,再用特殊的陷门(trapdoor)在不泄露明文的前提下搜索。具体实现会用到伪随机函数和双线性对,那就是后面章节的事了。