TDE与列级加密对比学习资料 - 第1节
一、加密基础回顾:对称加密与非对称加密
聊数据库加密之前,我们先把基本功过一遍。我个人习惯把加密比作给数据上锁——你总得知道钥匙怎么用,才能谈得上保护数据。
1.1 对称加密:一把钥匙开一把锁
对称加密就是用同一个密钥完成加密和解密。打个比方,你把重要文件锁进保险箱,这把锁只有一把钥匙——你自己拿它锁,拿它开。
典型算法:AES、DES、3DES、SM4
核心特点:速度快,适合大批量数据加密。我在项目里处理TB级的表空间加密时,底层用的就是AES-256,性能开销能控制在5%以内。
对称加密的短板也很明显——密钥分发。你想想看,如果两个人异地通信,总得先商量好同一把钥匙吧?这个商量过程一旦被截获,加密就形同虚设。
⚠️ 避坑指南:我曾经在某个金融项目里见过研发组直接在配置文件里写死AES密钥,结果代码泄露后整库数据等于裸奔。密钥必须独立于密文存储,这是底线。
1.2 非对称加密:公钥加密,私钥解密
非对称加密用的是一对密钥:公钥和私钥。公钥可以公开,私钥只有自己持有。别人用你的公钥加密数据,只有你能用私钥解开。
这样做的好处——你不需要担心密钥传输过程中的安全问题了。缺点是性能差,比AES慢几百倍。所以实际场景里,非对称加密通常只用来加密对称密钥(即密钥交换),真正的数据加密还是交给对称加密。
💡 我建议:数据库加密方案里,几乎都是「非对称做密钥保护 + 对称做数据加密」的混合模式。比如TDE(透明数据加密)里,证书/密钥保护DEK(数据加密密钥),DEK再去加密数据页,就是这个套路。
| 对比维度 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 1个(加解密相同) | 2个(公钥+私钥) |
| 运算速度 | 快(硬件加速后可达数GB/s) | 慢(通常用于小数据块) |
| 密钥分发难度 | 高(需要通过安全通道) | 低(公钥可公开传递) |
| 典型算法 | AES, DES, 3DES, SM4 | RSA, ECC, SM2 |
| 数据库常用场景 | 数据页/列级加密 | 证书、密钥加密、数字签名 |
二、密钥管理概念
加密技术的可靠性,其实不取决于算法本身,而是取决于密钥管理。你只要想想——密钥被偷了,再强的加密也是白搭。我在多个数据库安全审计中见过不少类似翻车案例。
2.1 密钥的生命周期
- 生成:使用强随机数生成器(不依赖伪随机),密钥长度合规(比如AES-256)。
- 存储:密钥不能明文存放,需要硬件安全模块(HSM)或密钥管理服务(KMS)保护。
- 分发:最小权限原则——谁需要谁才能拿到密钥。
- 轮换:定期更换密钥。我曾经在某个合规审计中帮客户把密钥轮换周期从5年压到1年,才通过检查。
- 销毁:废弃的密钥必须被安全擦除,包括备份。
密钥管理的黄金法则:密钥永远不离开HSM或KMS的范围。应用程序只通过接口调用加密/解密操作,不直接接触明文密钥。
2.2 分层密钥结构
专业的数据库加密方案都采用多层密钥体系。拿TDE来说,通常会分三层:
- 主密钥(Master Key)——最顶层,存储在HSM或KMS,受物理保护。
- 数据加密密钥(DEK)——由主密钥加密后存储在数据库中。
- 数据块密钥——由DEK派生,用于实际加密每个数据页或列。
这样就算攻击者拿到了数据库文件,没有主密钥也解不开DEK,更拿不到数据。我参与过的某银行核心系统改造,就靠这个分层设计把安全等级从等保三级提到了三级+。
三、数据库加密的目的
数据库加密不是为加密而加密,它解决的是几个真实痛点。
3.1 防止数据泄露(静态数据保护)
数据库文件、备份文件、日志——这些静态数据一旦落入攻击者手里,如果没有加密,就是直接送人头。我曾经处理过一家电商的泄漏事件:DBA直接用root登录拷走整个数据目录,因为没有加密,700万用户信息被明码标价。如果当时启用了TDE,至少数据文件被复制后是乱码。
3.2 满足合规要求
GDPR、PCI-DSS、等保2.0……这些法规都明确要求对敏感数据(个人身份信息、支付卡号、健康记录)进行加密。数据库加密是合规的硬性条件,不是可选项。
3.3 内部威胁防护
不是只有外部攻击才是威胁。运维人员、DBA、应用开发者——他们可能拥有读取数据库的权限,但不应该看到明文信用卡号。数据库加密可以把这部分保护交给密钥管理系统,实现「即使能从数据库中读到数据,也解不开」。
3.4 备份和日志安全
很多人只加密主库,备份和日志却裸奔。你以为安全了?实际上备份磁带遗失、日志转储后造成泄露的新闻年年都有。我建议无论用TDE还是列级加密,加密范围都应该覆盖备份文件。
一句话总结:对称加密快但密钥分发麻烦,非对称加密安全但慢,数据库加密通过分层密钥把两者结合,最终目标是对攻击者和内部越权者「加锁」。