资讯动态

安当DBG:字段级加密的保留格式加密(FPE)怎么做,LIKE与范围查询还能不能用

发布时间:2026/9/5 8:49:03 来源:尧图企业网站定制
一、一个让很多团队踩坑的问题字段加密后查询怎么废了做数据库安全的人几乎都绕不开一个灵魂拷问我把用户的手机号、身份证号、银行卡号加密存进去了那业务里那些WHERE phone LIKE 138%、WHERE id_card BETWEEN ...的查询还怎么跑如果采用最朴素的方案——用 AES 这类分组密码对字段整体加密再直接把密文写进数据库——答案会非常残酷几乎所有依赖明文特征的查询都会失效。原因很简单。AES 是扩散型加密明文的每一位变化都会搅动整段密文而且相同的明文在相同密钥下虽然会得到相同密文ECB 模式但 ECB 不安全一旦引入随机初始化向量CBC/GCM 等安全模式连相同明文也会得到不同密文。结果就是你存进数据库的密文既无法做前缀匹配也无法做大小比较数据库引擎面对的就是一堆看似随机的字节索引彻底失效LIKE和范围查询直接废掉。很多团队正是在这一步翻车为了合规把字段加密了上线后发现报表跑不出来、风控规则匹配不到、运营按手机号搜用户搜不到最后被迫回退或把密文拉到应用层再解密遍历——性能与安全性双输。本文要讲清楚的就是字段级加密里专门解决这个矛盾的方案保留格式加密Format-Preserving EncryptionFPE。以及它在数据库加密网关场景下如何做到加密了还能 LIKE、还能做范围查询又有哪些代价和边界。以安当DBG为例我们也会看到一套工程上已经跑通的落地形态。二、什么是保留格式加密FPEFPE 的核心思想用一句话概括加密后的密文和明文保持相同的格式与长度。手机号加密后还是一串看起来像手机号的 11 位数字身份证加密后还是 18 位、末位可能是 X 的结构银行卡号加密后依旧是 16~19 位数字。这听起来像可逆的掩码但它和掩码如把中间四位打成星号有本质区别FPE 是密码学意义上的强加密没有密钥无法还原明文且密文在统计上不暴露明文信息而掩码只是展示层处理存储里往往还是明文防不住数据库文件泄露。FPE 不是某一种固定算法而是一类算法的统称。主流标准如 NIST 的 FPE 标准定义了基于 Feistel 网络的构造方式把明文数字/字符分组通过多轮 Feistel 结构在保持字符空间不变的约束下做可逆混淆。由于字符集比如 0-9 的数字在加密前后不变输出自然就保留了格式。关键收益有三点长度与类型不变可以直接存回原来的VARCHAR(11)字段不需要改表结构、不需要扩列。格式约束不变如果原字段有前三位是号段末位是校验位之类的业务校验FPE 可按需定制字符空间让密文也满足同样的格式约束在可定制范围内。查询友好因为密文仍然是有序、可比、可按前缀分组的字符串/数字数据库的部分查询能力可以被保留下来——这正是下一节的重点。三、为什么 FPE 能让 LIKE 和范围查询还能用要理解 FPE 为什么能救活查询得区分两类查询对密文的不同依赖。3.1 前缀型 LIKEFPE 的天然强项考虑WHERE phone LIKE 138%。这里的查询只依赖前几位是什么。在 FPE 的 Feistel 构造中如果我们采用确定性加密相同明文→相同密文不使用随机 IV那么明文的前缀特征会以可预测的方式映射到密文的前缀特征。更严谨地说当 FPE 对数字串逐位或在可控制范围内加密并且密文长度与明文一致时对前缀相等的查询可以把查询条件也用同一个密钥做 FPE 加密后直接在密文列上做前缀匹配。也就是说应用要查138%网关先把138按 FPE 加密成某个密文前缀5A2示意然后发往数据库的其实是WHERE enc_phone LIKE 5A2%数据库在密文上做前缀扫描等价于在明文上做前缀扫描。这就是为什么 FPE 能保留前缀匹配能力它不是让数据库看懂明文而是让相同前缀的明文映射到相同前缀的密文从而把前缀查询平移到密文空间。安当DBG在字段级加密模式下正是以这种查询条件随明文一起加密的方式让LIKE 138%、LIKE 小明%这类前缀检索在加密库上依然可用。3.2 范围查询能用但有前提范围查询如BETWEEN、、依赖大小顺序。普通 AES 密文因为扩散性和随机 IV完全打乱了顺序无法比较。FPE 由于保留了字符空间且通常采用确定性映射明文的大小关系在密文上大体可保持——但前提是加密方式对顺序友好。需要明确一个工程事实FPE 并非对所有范围查询都完美无损。它的顺序保持程度取决于具体构造。如果把整个数字串当作一个整数做保序式 FPE那么数值大小比较可以保留但如果为了更强的安全性把字段做了分块 Feistel 混淆块与块之间的整体大小关系可能被打乱。因此在数据库加密网关里通常对需要范围查询的字段采用顺序保持更强的 FPE 变体对只需要等值/前缀匹配的字段采用混淆更强的变体按字段分类施策。以安当DBG为例它对卡号、手机号、身份证这类既要检索又要保密的字段支持 FPE 保留格式加密并保留 LIKE 与范围查询能力但对不同字段提供不同的混淆强度选项让安全和可用性的权衡落到具体字段上而不是一刀切。3.3 等值查询永远可用WHERE id_card xxx这类等值查询在确定性 FPE 下天然可用把查询值 FPE 加密后与密文列等值比较即可。这是 FPE 最稳的能力几乎所有字段级加密方案都支持。四、FPE 的代价与适用边界FPE 不是银弹。把它讲清楚才是对读者负责。它的代价主要有三4.1 格式约束带来的信息泄露面因为密文和明文同格式、同长度攻击者在拿到密文库后虽然解不开具体值但能知道这是 11 位数字“这是 18 位身份证”。对于某些场景这种元信息本身就是线索。此外如果明文字符空间很小比如字段只有男/女两个值FPE 密文也只有两种形态等价于没加密。所以 FPE 适合字符空间足够大的字段手机号、身份证、卡号、邮箱不适合低基数字段。4.2 确定性加密的相同明文同密文特性为了支持查询FPE 往往需要确定性否则前缀都映射到不同密文查询就废了。但确定性意味着攻击者可利用相同密文相同明文做 frequency analysis频率分析——比如密文里出现最多的某个值很可能对应最常见的明文如某个热门号段。缓解方式包括对高敏感字段叠加令牌化Tokenization、或使用带绑定上下文的 FPE把行 ID 等作为 tweak 输入让同一明文在不同行得到不同密文同时仍保留查询能力。4.3 性能与实现复杂度FPE 的 Feistel 轮次、字符空间映射比 AES 重一些但在数据库加密网关这种专门干这个的组件里通常通过优化实现把损耗压到很低。安当DBG公开的性能数据是单节点 3 万 QPS、对业务整体损耗约 5%~10%足以说明这类网关在工程上是可规模化的不必担心加了加密网关业务就扛不住。五、字段级加密网关的工作形态应用零改造理解了 FPE 原理再看它在产品里是怎么落地的。数据库加密网关本质是部署在应用与数据库之间的透明代理应用的 SQL 照常发网关在中间把涉及敏感字段的明文加密/解密、对返回结果做动态脱敏对数据库而言它看到的是密文对应用而言它拿到的是明文或脱敏后的值。应用完全不感知这就是应用零改造加密。安当DBG提供两种工作模式对应两类需求透明加密网关字段级加密存储数据落库即密文数据库文件、备份、运维直接查库看到的都是密文。这是防数据库泄露的主战场前面讲的 FPE 就跑在这个模式里。运维管控网关明文存储 输出脱敏数据库里仍是明文可能是历史系统改不动但任何人通过运维通道、即席查询、第三方工具连库网关在输出层做动态脱敏和权限三视图控制防止内部人员把明文批量拖走。“权限三视图是个很实用的设计同一张表DBA 看到的可能是脱敏后的业务系统看到的是明文审计账号看到的是带水印的按身份给出不同视图从根本上缓解内部数据泄露”——很多数据泄露其实不是外部黑客而是内部有权限的人滥用查询。六、FPE 能救查询但有些场景必须配 TDE 做双层经常有人问既然字段级加密 FPE 这么强是不是就不需要表空间加密TDE了答案是否定的二者解决的问题不同最佳实践是配合使用。6.1 它们各自防什么字段级加密含 FPE防的是拿到数据库的人看到具体敏感值。它精准、可按字段施策、支持保留查询但只覆盖你显式标记的字段。TDE透明数据加密防的是拿到磁盘/备份文件的人看到整库内容。它对整库文件层加密性能好、对应用完全透明但密钥通常在数据库引擎内管理DBA 或能触达内存的人仍能看到明文且无法做字段级精细管控。换句话说TDE 是兜底的全库装甲字段级加密是贴身的精准护盾。只上 TDE敏感字段在数据库内存和授权查询里仍是明文内部泄露挡不住只上字段级加密没被标记的字段和整库文件层仍是明文磁盘丢失挡不住。6.2 双层配合的典型架构一个稳妥的组合是数据库开启 TDE保证落盘文件、备份、快照都是加密的防物理介质泄露。在应用与数据库之间部署字段级加密网关对手机号、身份证、卡号、住址等核心敏感字段做 FPE 字段级加密既防库内明文泄露又保留 LIKE/范围查询。密钥统一由密钥管理平台KSP管理字段密钥与 TDE 主密钥分离权限分层。运维侧叠加运维管控网关对人工查询做动态脱敏与全量审计。安当DBG在与 TDE 配合时就是作为字段级精准层叠加在库文件层 TDE之上形成双层防护其密钥由 KSP 统一管理避免密钥散落。这套组合在金融、医疗、政务等既过等保又过密评的场景里非常常见。七、数据库矩阵与落地适配字段级加密网关要真正可用必须适配企业实际在用的数据库。市面上国产化和开源数据库并存网关的适配广度直接决定落地成本。安当DBG覆盖的数据库矩阵包括 MySQL、PostgreSQL、SQL Server、Oracle、达梦、人大金仓等主流与国产数据库。这意味着无论你的核心系统是跑在开源 MySQL 上还是已经信创迁移到达梦、人大金仓都可以用同一套网关做字段级加密和动态脱敏不必为每个数据库单独写一套加密逻辑。落地时的几个工程要点索引策略对需要 LIKE/范围查询的 FPE 字段确认网关是否能在密文上建有效索引通常前缀型查询配合密文前缀索引即可。存量数据迁移老表里有明文上线网关后要一次性加密回填建议低峰期分批并校验加密前后记录数一致。模糊查询的语义确认业务里LIKE是中缀还是后缀匹配——FPE 对前缀最友好中缀/后缀需要额外设计如拆词建辅助索引要在方案阶段就和业务对齐。脱敏与加密的分工对外展示用脱敏如138****8000存储与检索用 FPE 加密二者职责分清别把脱敏当加密用。八、运维管控与全量审计防的不只是外部黑客最后强调一点常被忽视的数据库防泄露最大的威胁面往往不是外部入侵而是有权限的内部人员 不受控的查询。运维同学一个SELECT *就能把整张用户表拖走BI 工具一条即席 SQL 就能导出全部身份证。数据库加密网关的价值一半在加密存储另一半在运维管控SQL 级拦截对高危操作全表导出、跨敏感表 JOIN、非工作时间大批量查询按策略拦截或需二次审批。动态脱敏返回结果按查询者身份实时脱敏DBA 自己查也只看到脱敏值。全量审计谁、在何时、从哪台机器、查了什么、返回了多少行全程留痕事后可追溯、可告警。以安当DBG为例它在运维管控网关模式下就是把明文存储 输出脱敏 SQL 拦截 全量审计打包专门堵内部数据泄露这个口子。配合字段级加密存储模式形成外部拿不到、内部拖不走的闭环。九、从合规视角看字段级加密与脱敏在等保与密评要求里敏感个人信息如身份证、手机号、银行卡号的存储加密与展示脱敏是必查项。字段级加密网关 FPE 恰好同时覆盖存储加密和展示脱敏两条落库是密文满足存储保护返回应用或运维时按身份脱敏满足展示保护。需要提醒的是脱敏和加密常常被混为一谈二者边界要划清加密是可逆的有密钥能还原用于需要回原文的业务计算脱敏通常是不可逆或受控可逆的如掩码用于给人看但不让看全量。一张表对一个查询者同时应用二者并不矛盾——存储层 FPE 加密保证库文件泄露也拿不到明文展示层动态脱敏保证人眼只看到必要部分。安当DBG的权限三视图本质就是把同一份数据、不同身份看到不同脱敏程度做成了可配置策略。把这套能力落到测评与日常运营最大的收益是平时合规、出事可控。平时敏感字段已加密、查询已脱敏、操作已审计真发生泄露事件时黑客拿到的库是密文内部滥查被拦截留痕影响范围被死死框住。十、小结FPE 让字段加密不再废掉查询回到开头那个问题字段加密后 LIKE 和范围查询还能不能用结论是——用对方法就能用。普通 AES 整体加密会让前缀匹配、范围查询、等值查询全部失效因为密文打乱了格式与顺序。FPE 保留格式加密让密文与明文同格式同长度通过查询条件随明文一起加密的机制保留前缀 LIKE、等值查询并在合适构造下保留范围查询。FPE 有代价低基数字段不适合、确定性带来频率分析风险、需按字段选混淆强度。字段级加密网关以应用零改造的透明代理形态落地叠加动态脱敏与权限三视图缓解内部数据泄露。FPE 解决字段精准防护TDE 解决整库文件防护二者配合成双层密钥由 KSP 统管才是完整方案。对于正被等保、密评、数据出境或内部泄露事件倒逼去做数据库防泄露的团队建议先从核心敏感字段 FPE 字段级加密 运维管控切入见效快、改造小再视情况叠加 TDE 双层。把这篇文章的原理吃透落地时就能少踩很多坑。十一、性能与容量上的工程考量担心加了加密网关业务扛不住是常见顾虑这里给几个量化与调优视角。首先是损耗来源。网关的 CPU 主要花在字段的加解密与脱敏判断上网络层面多了一次代理跳转。对于以短事务、高并发为特征的业务如订单、支付查询单节点 3 万 QPS、整体 5%~10% 的损耗属于可接受区间若业务是超大结果集的报表查询瓶颈往往在数据传输量而非加密本身此时应关注网关的吞吐与连接复用。其次是部署形态。网关通常以旁路或串联方式接入串联时要保证自身高可用双节点、健康检查、故障旁路避免安全组件反倒成了单点。安当DBG在架构上把字段级加密与运维管控分开既能按流量独立扩容也避免管控逻辑拖慢交易链路。再次是密钥与缓存。频繁取密钥会放大延迟工程上应让网关缓存解密密钥受内存保护而非每条 SQL 都远程取密钥明文在网关内存中停留时间越短越好处理完即清。配合 KSP 统一管密钥既安全又不牺牲延迟。把这些点想在前头字段级加密网关就不会是性能雷区而是一层几乎无感的数据安全底座。方案参考本文涉及的数据库加密网关、字段级加密、动态脱敏、数据库防泄露、运维管控、应用零改造加密、内部数据泄露、脱敏方案等实践可参考产品官方文档与产品白皮书中的透明加密网关、运维管控网关、FPE 保留格式加密、权限三视图、SQL 级拦截与全量审计、以及与 TDE 双层配合、密钥由 KSP 统管等相关说明并结合相关国家标准中关于数据存储加密与敏感信息保护的要求落地。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价