第2章 密码学基础:对称加密、非对称加密与哈希函数
密码学是异常检测模型的基石。你想想看,没有加密,你的检测数据就像裸奔。我个人习惯把密码学技术分成三大类:对称加密、非对称加密和哈希函数。这一章,咱们把这三种东西讲透。
对称加密:一把钥匙开一把锁
对称加密,说白了就是加密和解密用同一把密钥。我刚开始做安全项目时,总以为这事很简单——拿到密钥,加密就完事。后来踩了坑才明白,密钥怎么分发、怎么存储,才是真正的难题。
常用的对称算法有这么几个:
- AES(高级加密标准)——现在最主流,推荐AES-256-GCM模式,自带认证。
- DES——老古董了,56位密钥,现在用暴力破解分分钟搞定。
- 3DES——DES的升级版,但效率低,业界已经逐步淘汰。
我在项目中遇到过什么情况?有一回,我们要对用户上传的敏感文件做加密存储。领导说:“用AES就行。”但操作时忘记考虑IV(初始化向量)的随机性,结果相同的明文加密后得到相同的密文——这相当于给攻击者提供了统计特征。嗯,这里要注意:对称加密一定要搭配随机IV,并且IV不需要保密,但必须是唯一的。
适用场景:大数据量的加密、磁盘加密、VPN通道等。速度快,但密钥管理是痛点。
非对称加密:两把钥匙,各司其职
非对称加密是公钥/私钥体系。公钥可以公开,私钥自己藏好。你想想看,公钥像锁,谁都能拿来锁上数据;私钥像钥匙,只有你能打开。这个特性解决了对称加密里密钥分发的难题。
主流算法:
- RSA——经典,但密钥长度要求越来越长(2048位起步)。
- ECC(椭圆曲线)——同样安全强度下,密钥短,效率高。
我记得有一次设计API签名方案,用了RSA做数字签名。测性能时发现,服务器每秒只能签几百次,扛不住峰值。后来改成ECC,签名速度提升了近10倍。经验:非对称加密适合小数据量(比如加密对称密钥、数字签名),别拿它直接加密文件,否则性能会崩。
数字签名是反过来的逻辑:私钥签名,公钥验签。这在密码操作异常检测里非常重要——我们可以通过签名来验证操作者身份是否被篡改。
哈希函数:指纹的艺术
哈希函数把任意长度的数据变成固定长度的摘要(比如32字节)。它是单向的,不可逆。我经常用这个特性来校验数据完整性。
常见哈希算法:
- MD5——128位,已经不安全,碰撞攻击成本极低。我在日志完整性检测中绝不会用MD5。
- SHA-1——160位,也有理论碰撞,不再推荐。
- SHA-256(属于SHA-2家族)——目前安全可靠,推荐用于密码存储、完整性校验。
哈希函数还有个重要特性:抗碰撞性。理论上,生日攻击使碰撞概率随输出长度指数上升。SHA-256的碰撞概率在可预见的未来几乎为零,放心用。
一张表看清三者的区别
| 特性 | 对称加密 | 非对称加密 | 哈希函数 |
|---|---|---|---|
| 密钥数量 | 1个(共享密钥) | 2个(公钥+私钥) | 无密钥 |
| 是否可逆 | 可逆(解密) | 可逆(解密/签名验证) | 不可逆 |
| 速度 | 极快(Gbps级别) | 慢(kbps级别) | 快(可与对称加密媲美) |
| 主要用途 | 数据加密、传输加密 | 密钥交换、数字签名 | 完整性校验、口令存储 |
| 典型算法 | AES-256-GCM | RSA-2048, ECC P-256 | SHA-256, bcrypt |
| 常见弱点 | 密钥分发困难 | 性能差,密钥长度要求高 | 碰撞、彩虹表攻击 |
核心要点回顾
- 对称加密:速度快,密钥管理是最大的敌人。实战中推荐AES-256-GCM。
- 非对称加密:解决密钥分发,但性能瓶颈明显。ECC正逐步取代RSA。
- 哈希函数:不是加密!用于完整性校验和密码存储,记得加盐+慢哈希。
- 三种技术常组合使用:混合加密是工业标准。
嗯,这一章内容不少,但都是后续异常检测的基础。我做密码操作异常检测时,经常要逆向分析这些加密协议,哪一步用的是对称、哪一步是非对称、签名怎么算的、哈希值从哪里来——只有把这些门道吃透,才能写出高效的检测规则。