加密技术回顾:对称加密、非对称加密、哈希函数与消息认证码,以及它们在日志保护中的应用
说到日志保护,我第一个想到的就是——千万别把明文日志丢到磁盘上。早年我参与过一个案子,客户日志里泄露了用户手机号,直接导致合规罚款。从那以后,我养成了一个习惯:日志从产生到归档,每一步都得加密或签名。
加密技术听起来高大上,其实本质就两件事:藏起来和验真身。下面我把四种核心技术拆开讲,结合日志场景聊聊怎么用。
对称加密:又快又简单,但密钥怎么分?
对称加密,说白了就是一把钥匙开一把锁。加密和解密用同一个密钥,常见的有 AES、ChaCha20。性能极好,适合加密大量日志。
但对称加密有个死穴——密钥分发。你想想看,日志服务器把密钥发给审计系统,万一中间被人截了,白加密了。所以实际项目中,我对日志本体用 AES 加密,而 AES 的密钥再用非对称加密去保护。
非对称加密:公钥随便给,私钥自己藏
非对称加密,常见的有 RSA 和 ECC。公钥可以明文传播,私钥死守。它的缺点是慢,适合加密短数据。
我记得有一次,客户要求日志从边缘端加密后传到中心。我设计的是:边缘端用公钥加密一个随机生成的 AES 密钥,然后用这个 AES 密钥加密日志。中心用私钥解开 AES 密钥,接着解日志。这样既安全又高效。
哈希函数:数据指纹,一点没改都能发现
哈希函数,像 SHA-256,能把任意数据变成固定长度的串。它不可逆,且雪崩效应——改一个 bit,结果面目全非。
我常拿哈希来验日志完整性。比如每写 100 条日志,算一个哈希值,存到另一台不可写服务器上。事后比对,能发现任意一条日志被篡改。
消息认证码(MAC):哈希+密钥,谁改谁知道
HMAC 是哈希函数的进阶版——把密钥混在消息里一起算哈希。没有密钥的人没法伪造有效 MAC。这样不仅保证完整性,还能认证来源。
在审计日志中,我用 HMAC-SHA256 对每条日志行生成一个 MAC 标签。中心收到日志先验标签,验不过直接丢弃。
| 技术 | 核心能力 | 日志保护角色 | 性能 |
|---|---|---|---|
| 对称加密 | 机密性 | 加密日志正文 | 极高 |
| 非对称加密 | 密钥分发、签名 | 保护对称密钥、签名日志 | 低 |
| 哈希函数 | 完整性 | 日志指纹校验 | 高 |
| 消息认证码 | 完整性+认证 | 防伪造日志 | 高 |
把它们组合起来:日志保护的实际架构
你可能会问:“这么多技术,到底怎么串起来?”
我画了一张图,你看一眼就明白了:
这张图展示了日志生成 → 完整性认证 → 加密 → 密钥保护 → 封装 → 传输的完整链条。当然,这只是经典模式。可搜索加密在这里插了一脚——它允许你在加密日志上直接搜索,而不用解密全文。我们后面的章节会深挖这块。
避坑提醒:我曾经见过团队只做加密不做完整性,结果被攻击者替换了密文,导致解析时程序崩溃。记住:加密≠安全,机密性+完整性+认证三件套缺一不可。
小结一下这四种技术的关系
- 对称加密:扛起大流量加密,你是主角。
- 非对称加密:负责密钥交换和身份签名,你是穿针引线的二当家。
- 哈希函数:做完整性体检,成本极低。
- 消息认证码:给哈希加把锁,防伪造一步到位。
在日志保护里,我推荐一套标配动作:每条日志先计算 HMAC-SHA256,再用 AES-256-GCM 加密,最后把 AES 的密钥用接收方 RSA 公钥加密,打包在一起传输。接收方验证 HMAC 后解密,核对完整性。这套组合拳,我在多个生产项目里跑过,没出过问题。
嗯,加密技术就聊到这儿。你把这些基础打牢,后面聊可搜索加密就会顺很多。