用免密码运算映射加速机密数据库(OSDI 2026)

原题:Accelerating Confidential Databases with Crypto-free Mappings

一句话总结:ZENO 利用跨域字段引用不必本身承担加密保护这一观察,用与明文内容无关的字段标识符替代逐字段密文,把加密移到块级持久化与输出路径;在双可信域部署、TPC-H SF=3 和总计 6 GB 内存条件下,相对 HEDB 的整体加速为 ARM 4.4×、x86 TDX 5.3×,代价是隐私域必须管理持久映射、回收和恢复状态。

问题与动机

机密数据库需要让云端执行 SQL,同时不向云管理员暴露敏感字段。本文关注分离式设计:数据库负责查询规划、缓冲和事务,隐私域仅执行敏感字段上的算术、比较等表达式。管理员仍能查看查询计划、重放执行过程,避免把整个数据库变成无法维护的保密黑箱。

HEDB 为防止管理员滥用算术和比较接口推导秘密,把数据库置于完整性域,把表达式算子置于隐私域,并保护二者之间的通道。因此,本文实现中的数据库并非任意不可信进程:其执行完整性也依赖可信执行环境(TEE)。可维护性不等于允许管理员随意注入算子调用。

原有跨域表示采用逐字段 AES-GCM 密文。每个 4 B 整数附带 12 B nonce 和 16 B 认证标签后成为 32 B;计算过程还反复解密输入、加密中间结果。§2.3 的三类工作负载剖析中,加解密占总时间的 10.5–62.6%,密文膨胀相关开销占 13.9–25.5%。批量调用减少 RPC 次数,却仍需处理每个字段的密文。

ZENO 把字段引用和数据保护分开:数据库只持有固定长度引用,秘密留在受保护的映射存储中。它减少逐字段密码运算,也缩小数据库侧数据体积;但原本近似无状态的隐私域因此变成事务持久状态的一部分。

关键观察 / 隐含假设

  • 观察 1:密码运算和表示膨胀是两个独立瓶颈。 图 2 的剖析显示,两者随数据是否驻留内存而变化;图 8 中,直接索引之后再缩小字段表示,仍使执行时间下降 53.0%。
    • 依赖假设:字段较小、敏感计算频繁,且现有基线采用细粒度认证加密。
    • 可能失效场景:大对象字段、低比例敏感数据,或本来就在 TEE 内执行完整查询的数据库,未必有同样的收益空间。
  • 观察 2:数据库访问字段引用时,映射存储会访问对应秘密,二者具有关联局部性。 §4.2 据此按底层存储布局分区并预取;图 8 的分区步骤进一步降低时间 16.6%。
    • 依赖假设:数据库布局能有效预测隐私域访问,且预取不会挤出更有价值的数据。
    • 可能失效场景:内存不足时的高度离散访问、跨大量分区的连接、长时间更新后的布局碎片化。内存内均匀访问实验不能完全覆盖这些情形。
  • 假设 3:保持单向可达性就足以维护跨域正确性。 数据库可见的每个字段引用必须有有效映射;隐私域多保留不可达秘密则可以接受。§5 将提交顺序、回滚和恢复都建立在这个不变量上。
    • 证据强度:中。 协议推理清楚,且有一次进程终止恢复测量;论文未给出覆盖所有日志边界和回收交错的故障注入矩阵。
  • 假设 4:整数引用的安全性来自外围隔离,而非不可猜测性。 标识符可以预测;系统必须阻止恶意替换、任意调用算子和日志回滚。
    • 证据强度:中。 §8 解释了分配与明文无关的性质,但端到端保证还依赖双域完整性、受保护通道和存储新鲜度机制。

核心方法

用字段标识符直接定位秘密。 字段标识符(FID)是与明文内容无关的整数,数据库保存 FID,隐私域的映射存储保存实际值。代理用 Get(FID) 取出输入,调用原有表达式算子,再用 Put() 保存结果并返回新 FID。结果发给用户前仍需加密;落到不可信存储的数据仍需块级认证保护。“免密码运算”限定于常见字段计算路径,不表示系统取消密码学。

用数组索引代替密文哈希查找。 固定长度值使用紧凑数组,FID 直接作为索引;变长值通过偏移数组定位按尺寸分组的数据数组。实现采用 64 位 FID,默认高 16 位为分区号、低 48 位为偏移。相比密文到明文缓存,它同时避免长密文键查找和每字段 28 B 加密元数据,但额外保留每值 8 B FID。

把生命周期交还给数据库语义。 临时分区保存查询常量和中间值,消费后尽早释放,查询结束时清理剩余值。需要持久化时,系统复制秘密到永久分区并分配永久 FID。更新采用异地写入,旧映射随数据库旧版本一起保留,只有 PostgreSQL 的 VACUUM 判定旧引用失效后才能回收。因此,回滚恢复旧 FID 时仍可找到旧值。

让映射布局跟随数据库布局。 PostgreSQL 实现按表堆文件分区;论文也讨论按 InnoDB 页面分区的适配方式。数据库发起磁盘读时先通知隐私域预取相关分区,使数据库读取 FID 与隐私域读取秘密尽量重叠。数组索引只有寻址复杂度为 O(1),冷数据仍可能触发额外 I/O。

把映射日志嵌入数据库 WAL。 外部同步(external synchrony)在这里指:内部可以先形成额外状态,但对数据库公开引用前,必须保证对应秘密可恢复。提交前,SealLog() 把新映射生成块级加密日志,并插入 PostgreSQL 提交记录之前,沿用原有日志顺序与刷盘。完整块可提前并行加密,提交路径只承担一次 RPC 和剩余加密。恢复时 ReplayLog() 重建映射;若只有映射日志持久化、提交记录未落盘,则产生不可达映射,后续全局扫描可以回收。

设计取舍

  • 计算成本换状态管理。 消除逐字段加解密后,隐私域需要分配器、临时值回收、持久映射、日志和恢复。原型在 PostgreSQL 15.5 上新增约 6.1K 行 C/C++,并需要数据库写入、提交及清理路径配合。
  • 紧凑引用换两处数据访问。 FID 缩小数据库体积,但取秘密可能再读一次磁盘;收益依赖布局、预取和两域内存分配。
  • 兼容事务换延期回收。 允许孤儿映射简化同步,却引入崩溃后扫描与长期空间管理负担。频繁中止、长事务和 VACUUM 延迟可能增大保留状态。
  • 可维护性换允许的泄漏。 系统保留访问模式、搜索重复、时间、结果规模及比较结果等功能性泄漏;FID 还暴露分区与默认分配顺序,不能理解成隐藏所有数据库行为。

实验与结果

两平台分别为 Kunpeng-920 的 ARM S-EL2 和 Xeon Platinum 8581C 的 Intel TDX。一般预算为总计 32 vCPU、64 GB 内存;两系统各自扫描两域资源划分并选择最佳配置,明文 PostgreSQL 使用相同总预算。TDX 采用 TD Partitioning,由 L1 隐私域管理 L2 数据库,不能直接等同于两个普通云 CVM 的部署。

  • TPC-H 主结果(§7.1,图 6):SF=3,总内存 6 GB;ZENO 分配 4.5 GB 给数据库、1.5 GB 给隐私域。一次预热后每查询运行 5 次。HEDB 相对明文平均减速为 ARM 10.0×、TDX 23.8×;ZENO 为 2.3×、4.5×。论文报告整体加速 4.4×、5.3×,单查询最高 53.1×、94.7×。TDX 上仍有查询减速超过百倍,最高加速不能代表所有查询接近明文性能。
  • TPC-C 吞吐(§7.1,图 5):100 仓库,非 ID 列敏感,数据库放在 tmpfs;预热 60 秒、测量 300 秒。相对同连接数的明文数据库,ZENO 将 HEDB 的吞吐损失缩小 ARM 18.1–49.8%、TDX 51.5–73.8%。这是“损失缩小比例”,不是 TPS 增长百分比,且不能代替持久化事务评测。
  • 工业查询(§7.1,图 7):9 条真实来源查询配合匿名化模式和合成数据,每表 100 万行、全部列敏感。ARM 平均减速由 48.4× 降至 10.5×,TDX 由 27.6× 降至 9.4×;整体加速分别约 4.6×、2.9×。工作负载来源真实,但并非原始生产数据回放。
  • 存储与消融(表 3、图 8):TPC-H 的总存储由 HEDB 17.8 GB 降为 ZENO 8.4 GB,明文为 5.2 GB。三类负载相对 HEDB 节省 38.9–52.8%。ARM 累积消融的归一化几何平均时间从未批量化的 10.6×,经批量化 9.9×、解密缓存 7.8×、直接索引 5.8×、紧凑 FID 2.7×,降至布局分区后的 2.3×。
  • 提交与恢复(§7.2):持久存储、synchronous_commit 开启、TPC-C 100 仓库和 16 连接时,加入映射 WAL 相对移除此机制的 ZENO 使 TPS 下降 2.6%;一次生成 997 B 加密负载的调用增加提交延迟 18.3 µs。8 仓库、8 线程加载期间终止进程后,2.6 GB WAL 回放共耗时 26.3 秒,其中映射回放占 4.1 秒。
  • 敏感性(§7.3,图 9):Sysbench 使用 32 表、每表 100 万行。内存内 Zipf 0.8 下,各事务模式相对 HEDB 加速 1.1–5.8×,达到明文吞吐的 46.6–95.0%;均匀访问最高加速 2.3×。另设随机读写、8 线程的内存扫描,总内存仅 1 GB 时仍快于 HEDB 2.2×。

论断—证据表

论断证据评测边界置信度
直接索引与缩小字段表示分别产生收益图 8:直接索引和紧凑表示分别使时间下降 25.7%、53.0%ARM、TPC-H、累积消融;收益依赖启用顺序
分离式机密数据库的端到端开销可以明显降低图 6:相对 HEDB 整体加速 ARM 4.4×、TDX 5.3×SF=3、6 GB 总内存、非键列敏感;未覆盖分布式部署
单日志流协调不会引入很大的提交吞吐损失§7.2:增加映射 WAL 后 TPS 下降 2.6%100 仓库、16 连接、同步持久化;对照为删除安全所需机制的变体
映射恢复可复用数据库 WAL 回放§5 协议与 §7.2:映射回放耗时 4.1 秒一次加载阶段进程终止,非全面故障正确性测试
FID 不直接编码明文内容§8:分配状态相同时,任意输入明文得到相同 FID条件化于相同分配历史;允许访问模式、比较和分配顺序等泄漏

批判性分析

论证链条

论文把加解密、密文膨胀、映射查找和布局失配分开测量,观察与设计基本对应。解密缓存作为中间基线很有价值:它说明缓存明文不能自动解决密文表示和哈希访问成本。图 8 是累积消融,各步骤的百分比以此前版本为分母,不能相加,也不能作为彼此独立的贡献估计。

“从关键路径移除密码运算”需要按操作理解:热字段计算可以不加解密,冷映射读取、结果输出与提交残余日志仍需要密码运算。本文已经测到提交代价,因此不能把标题解释成任意执行路径都没有加密。

假设压力测试

最值得压力测试的是两域局部性。论文有均匀访问和内存扫描,但更大范围的随机连接、表布局长期漂移及变长字段碎片可能同时改变映射命中率和预取效果。需要测量额外 I/O 数、预取命中率、污染率及 P99 延迟,而不只比较平均吞吐。

安全方面,与明文无关的 FID 分配能支持局部不可区分性论证,却不能独立证明整个 SQL 执行轨迹不可区分。§8 已把访问模式和比较结果纳入泄漏函数。默认单调 FID 提供的分配顺序可能比 HEDB 通过批量刷盘暴露的顺序更细;论文讨论批内随机排列作为缓解方案,但没有给出其实现和性能评测。

实验可信度

相同总资源预算、逐系统调优和双硬件平台提高了比较可信度;但最佳资源划分结果未必等同于部署中固定配置的表现。TPC-H 通过压缩内存预算制造大于内存的执行条件,有助于检验 I/O,但 SF=3 仍不能支撑 TB 级规模外推。

论文说明工业查询采用合成数据,且附录明确不提供专有工业工作负载。公开产物主要支持构建、基本功能检查和平台部署说明,不能据此宣称全部性能数字可完整复现。原文称性能技术已进入 GaussDB,但未提供生产规模、长期故障率或部署前后服务指标。

系统性缺陷

完整性域与隐私域的保护通道是安全前提。TDX 实验依赖 L1/L2 特殊部署,迁移到普通云服务可能需要重做通道与隔离方案,不能只替换字段格式。轮询式 RPC 也会消耗 CPU,论文主要报告性能,未给出低负载能耗或多租户隔离开销。

论文对回滚保护引用计数器式新鲜度机制,但未展开计数器的可信持久化、跨域恢复配合和攻击测试。进程崩溃恢复结果也不覆盖恶意存储回滚。侧信道、数据库漏洞、TEE 缺陷、物理攻击和拒绝服务明确不在威胁模型内;隐私域长期驻留明文增大攻击窗口的问题只得到定性讨论。

局限与后续工作

  • 恢复正确性覆盖有限。 在映射记录写入、提交记录刷盘、FID 回收及重用等边界逐点注入故障,验证所有已提交 FID 可恢复、已中止事务不可见,并检查孤儿映射是否有界回收。
  • 长期状态管理未充分测量。 持续运行高更新、长事务和高回滚比例负载,记录分区空间放大、VACUUM 延迟、全局扫描耗时与 P99;验证短期紧凑性是否长期保持。
  • 泄漏与布局存在取舍。 实现批内随机分配,比较分配顺序泄漏粒度、映射局部性和吞吐,检验 §8 提出的缓解措施是否实际可用。
  • 扩展边界仍在单机。 复制、备份恢复、跨节点迁移和在线升级都必须一起处理 FID 命名空间与映射状态;论文未评测这些路径。可先验证一致快照恢复后所有可见 FID 与原值逐项相符。

相关