数据加密技术基础:对称加密与非对称加密
说起数据库加密,大家第一个念头可能就是“把数据变成乱码”。但乱码怎么变、变完怎么还原,这里面的门道其实挺深。我个人习惯先把加密分成两类:对称加密和非对称加密。说白了,就是看“加密用的钥匙”和“解密用的钥匙”是不是同一把。
我刚开始做安全项目的时候,也分不清这两种到底该用在哪。后来踩了几个坑,才慢慢摸清楚。今天咱们就把这两种加密技术彻底捋一遍,顺便看看等保2.0里它们各自扮演什么角色。
对称加密:一把钥匙开一把锁
对称加密,你想想看,就像你家大门钥匙——锁门和开门用的是同一把。加密和解密共享同一个密钥。速度快,性能好,特别适合加密大批量数据。像AES、SM4、3DES这些算法都属于对称加密。
核心特点:
- 加密和解密使用相同密钥
- 计算开销小,适合大数据量
- 密钥分发是最大的风险点
我在一个金融项目中遇到过这么个事:客户需要加密交易流水表,每天几千万条数据。一开始他们想用RSA直接加密,结果测了一下,加密速度慢得没法接受。后来改用AES-256,性能一下就上来了。不过问题又来了——这把AES密钥怎么安全地给到另一端?你总不能把钥匙写在信封里寄出去吧?
对称加密的软肋就在这:密钥分发。如果密钥在传输过程中被截获,整个加密就形同虚设。等保2.0里要求密钥必须采用硬件安全模块(HSM)或密钥管理服务来保护,说的就是解决这个问题。
常用的对称算法,我整理了一个表格,方便对比:
| 算法 | 密钥长度 | 状态 | 典型用途 |
|---|---|---|---|
| AES | 128/192/256位 | 推荐使用 | 数据库列加密、文件加密 |
| SM4 | 128位 | 国密标准 | 等保2.0合规场景 |
| 3DES | 112/168位 | 已不推荐 | 遗留系统迁移 |
| DES | 56位 | 已过时 | 禁止使用 |
⚠ 避坑指南
我曾经见过有项目还在用DES加密信用卡号——这要是被等保测评抓到,直接扣大分。56位密钥在现代GPU面前就是一层窗户纸。记住:DES和3DES尽快废掉,迁移到AES或SM4。
非对称加密:公钥私钥,成双成对
非对称加密就聪明多了。它有一对密钥:公钥和私钥。公钥可以公开,私钥自己藏好。你用公钥加密的数据,只能用私钥解密;反过来,你用私钥签名,别人可以用公钥验签。这就完美解决了对称加密的密钥分发难题。
RSA、ECC、SM2都是非对称加密。但代价也很明显:慢。非常慢。我曾经拿RSA-2048加密一个1MB的文件,用了将近半分钟。你想想看,要是把整个数据库都这样加密,那系统基本就废了。
所以实际项目中,非对称加密很少直接用来加密数据本体。它的主要用途是什么?加密对称密钥。我给你打个比方:你用RSA的公钥加密一个AES密钥,然后把加密后的密钥和AES加密后的数据一起发出去。对方收到后用私钥解出AES密钥,再用AES密钥解密数据。这不就两全其美了?
💡 我建议
在等保2.0的数据库加密SDK设计中,咱们一般用非对称加密来保护对称密钥的分发过程,用对称加密来加密实际数据。这就是混合加密机制,也是TLS/SSL协议的核心思想。
两种加密的全面对比
为了让你一眼看明白,我做了一张对比表:
| 维度 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 1个 | 2个(公钥+私钥) |
| 密钥管理 | 难分发,需安全通道 | 公钥公开,私钥本地 |
| 加密速度 | 快(毫秒级) | 慢(秒级甚至更久) |
| 典型算法 | AES, SM4, ChaCha20 | RSA, ECC, SM2 |
| 主要用途 | 数据加密 | 密钥交换、数字签名 |
| 安全强度 | 密钥长度决定 | 依赖数学难题 |
为什么会这样?因为非对称加密背后是数学上的大整数分解或椭圆曲线离散对数问题,计算复杂度很高;而对称加密主要靠置换、替换和异或,硬件实现非常高效。这就像开法拉利和开拖拉机——都不是一个物种。
它们在等保2.0里的应用模式
等保2.0对数据加密有明确要求:敏感数据在传输和存储时都必须加密。具体来说:
- 传输加密:用TLS 1.2+,里面就是混合加密——握手阶段用非对称(ECDHE密钥交换),后续数据传输用对称(AES-GCM)。
- 存储加密:数据库表空间加密或列加密,几乎全用对称加密(AES-256或SM4)。密钥会由密钥管理系统(KMS)或HSM来保管和轮换。
- 数字签名:用非对称的私钥签名数据,公钥验签。用于审计日志的防篡改。
我个人习惯在设计数据库加密SDK时,先画一个分层结构:最底层是加密算法库(支持AES/SM4和RSA/SM2),中间层是密钥管理模块,最上层是业务接口。这样不管之后换算法还是加合规要求,改动都很小。
你看这张图就很清楚:左边是对称加密,密钥同时出现在加密和解密两边,所以密钥必须要安全分发。右边是非对称加密,公钥用来加密,私钥留在自己手里解密,密钥不用传递,但加密速度慢得多。
实际选型建议
做数据库加密SDK时,我建议你遵循三个原则:
- 数据加密用对称:AES-256-GCM或SM4-GCM,兼顾安全性和性能。
- 密钥传输用非对称:用RSA-2048或SM2加密对称密钥,再传递给对端。
- 数字签名必用非对称:私钥签名,公钥验签,保证数据完整性和抗抵赖性。
💡 一个小技巧
在等保2.0测评中,如果被测系统使用了国密算法SM2/SM3/SM4且通过国家密码管理局认证,通常能获得合规加分。所以如果你的项目涉及政府或金融,优先考虑国密。
嗯,对称和非对称的基础就聊这么多。理解这两者的区别,后面的混合加密、密钥管理、硬件安全模块等概念都会很容易上手。毕竟,加密技术说到底就是“选对钥匙,管好钥匙”。