1. 加密基础概念:对称加密与非对称加密、哈希算法
大家好,我是老王。做数据防泄漏这行,最早我也是从“一头雾水”开始的。刚入行那会儿,总觉得加密就是拿个密码把文件锁上,后来被生产环境狠狠教育了几次,才明白这里面门道深了。
今天咱们先打好地基。我把加密的三个核心概念拆开揉碎了讲,再结合我在项目里的真实体验,帮你建立直觉。
1. 对称加密:一把钥匙开一把锁
这个概念最直观。加密和解密用同一个密钥。你想想看,就像你家大门的钥匙,出门锁门用这把,回家开门也是这把。
常用算法有哪些?
- AES:现在最流行的对称加密算法。我个人习惯优先用AES-256,安全性够,性能也稳。
- DES/3DES:老的DES已经不安全了,3DES虽然还在用,但性能差。我在一个遗留系统里迁过3DES到AES,迁移过程挺折腾的,但值得。
- SM4:国密标准,国内合规场景少不了它。
一个实际的坑:对称加密的密钥怎么存?我曾经见过直接把密钥硬编码在代码里的——结果代码泄漏,数据库里的敏感数据等于没加密。密钥必须独立管理,比如用密钥管理服务(KMS)或者硬件安全模块(HSM)。
警告:千万别自己发明加密算法!我见过有团队自己写了个XOR加密就觉得安全了,结果被轻松破解。用经过验证的标准算法,AES、SM4都行,别逞能。
2. 非对称加密:公钥和私钥
这个就有点意思了。非对称加密有一对密钥:公钥公开,私钥自己藏好。
公钥加密的数据,只有私钥能解密。反过来,私钥签名,公钥可以验证。这么说吧,公钥就像一把挂在门口的锁,谁都可以拿来锁上箱子,但只有你有钥匙能打开。
主流算法对比
| 算法 | 密钥长度 | 典型用途 | 我的经验 |
|---|---|---|---|
| RSA | 2048位起 | 数字签名、密钥交换 | 最通用,但2048位以下不安全了 |
| ECC | 256位起 | 移动端、高性能场景 | 同样安全性下,密钥更短,性能更好 |
| SM2 | 256位 | 国密合规 | 国内政企项目必备 |
为什么需要非对称加密?对称加密虽然快,但密钥分发是个大难题。你想想,如果两个人在网上要加密通信,怎么安全地传递那个对称密钥?非对称加密就能解决这个问题:用公钥加密对称密钥,传给对方,对方用私钥解开。这叫“密钥协商”或“数字信封”。
3. 哈希算法:数据的数字指纹
哈希算法和加密不太一样。它把任意长度的数据,算出一个固定长度的摘要。而且,这个过程是不可逆的——你没法从摘要反推原文。
核心特性
- 单向性:只能从数据到摘要,不能反过来。
- 抗碰撞性:不同的数据很难算出一样的摘要(虽然理论上可能,但好的算法让这种概率极低)。
- 雪崩效应:哪怕原文只改一个比特,摘要也会面目全非。
常用算法:SHA-256 是现在的标配,SM3 是国密标准。MD5 和 SHA-1 已经被证明有碰撞风险,千万别用于安全场景。
我在项目中遇过:有一次数据防泄漏系统需要检测敏感文件是否被修改。我们不用比较整个文件内容(太慢),而是算好文件的哈希值存起来。下次只需要重新计算哈希,一对比就知道文件有没有动过。又快又准。
哈希算法在数据防泄漏里用处太大了:
- 数据完整性校验:下载文件后算个哈希,和官方公布的一对比,就知道有没有被篡改。
- 密码存储:用户密码不要明文存数据库,存哈希值。即使用户表泄漏,也拿不到原始密码。
- 数据指纹识别:要检测机密文档是否外泄,可以预先计算文档的哈希,用于扫描比对。
注意:密码存储光用哈希还不够,必须加盐(salt),防止彩虹表攻击。我见过不少公司踩了这个坑,后果很严重。
刚才那张图把三者的关系和典型场景都串起来了。你能看到,对称加密解决“快”的问题,非对称加密解决“信任”的问题,哈希解决“完整性”的问题。实际数据防泄漏系统里,这三者通常是配合使用的。
举个例子你就明白了:假设我要加密传输一个大文件。
- 先用对称加密(AES)加密文件本身,速度快。
- 再用非对称加密(RSA)加密这个对称密钥,确保密钥安全传递。
- 最后算一个哈希(SHA-256)附在文件后面,对方解密后可以验证完整性。
这个流程在TLS/SSL协议里也是一样的道理。说白了,加密不是非此即彼,而是组合拳。
一个小建议:刚开始接触加密的同事,别急着搞复杂。先把AES和SHA-256用熟,然后引入RSA做密钥交换。一步一个脚印,比什么都重要。