Circuit ORAM 与实际性能
研究 Circuit ORAM 的改进,以及 ORAM 构造在现实环境中的性能开销。
Circuit ORAM 与实际性能 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。
电路 ORAM 的设计目标
电路 ORAM 由 Wang、Chan 和 Shi 于 2015 年提出,旨在最大限度地降低带宽开销,同时便于在安全计算框架(混淆电路和秘密共享)中实现。它的核心创新是将桶大小减少到 Z = 2 个块(路径 ORAM 中为 Z = 5),在保持可忽略失败概率的同时将带宽开销减半。驱逐过程经过重新设计,可以表示为一个小型布尔电路。
桶大小缩减
在 Z = 5 的路径 ORAM 中,通过让每个桶容纳多个块,可以适应将块随机分配到路径的情况,从而控制暂存区溢出的概率。电路 ORAM 证明了,与随机驱逐不同,在使用确定性驱逐过程(深度优先驱逐)时,Z = 2 就足够了。与使用相同安全参数的路径 ORAM 相比,这可以将服务器存储和通信开销减半。
用于安全计算的电路 ORAM
电路 ORAM 专门设计了能够表示为高效布尔电路的驱逐过程。在安全计算协议(混淆电路、SPDZ)中,ORAM 访问本身必须以不经意方式求值——执行计算的服务器不能获知访问了哪个内存位置。与路径 ORAM 的驱逐过程相比,电路 ORAM 简单的确定性驱逐电路在进行混淆时效率高得多。
通信开销分解
对于一个包含 N 个块、每个块大小为 B 字节的数据库,电路 ORAM 每次访问需要传输 2 * log N * B 字节(每个桶有 Z = 2 个块,读取并写入一条路径)。对于包含 N = 2^20 个块且每个块为 4KB 的数据库,每次访问需要传输 160KB,而路径 ORAM 需要传输 400KB(Z=5)。对于典型参数,相对于明文访问的带宽开销约为 40 倍,比路径 ORAM 的 100 倍有所降低。
Oblix:不经意数据结构
Oblix(Misra、Schlegel、Sherwood、Tsudik,2018 年)使用电路 ORAM 构建高级数据结构的不经意版本:不经意链表、不经意映射(哈希表)和不经意优先队列。这些结构支持在不泄露访问模式的情况下对动态数据执行不经意计算。Oblix 运行在 Intel SGX 飞地中,面向安全的私有集合求交和私有数据库查询。
TaoStore:异步 ORAM
TaoStore(Sahin、Zhu、Gunter、Borisov,2016)扩展了路径 ORAM,通过并行处理多个 ORAM 请求并批量执行路径驱逐来支持高吞吐量的异步访问。通过合并对同一路径的访问,TaoStore 实现了显著高于同步 ORAM 构造的吞吐量(每秒请求数),因此适合拥有大量并发客户端的云存储服务器。
Obladi:不经意事务存储
Obladi(Crooks、Park、Alvisi、Iyengar,2018)在路径 ORAM 之上构建了完整的事务存储系统。Obladi 支持在加密且隐藏访问模式的存储上执行 ACID 事务。它引入了延迟执行机制:事务会被批量组织到多个时期中,并以一种隐藏每个时期内具体访问了哪些记录的方式执行。Obladi 作为客户端与不可信云存储后端之间的可信代理运行。
ORAM 的实际延迟
对于部署在 AWS 上的 1GB ORAM(262,144 个 4KB 块),如果客户端通过互联网访问数据块,路径 ORAM 每次访问的延迟约为 50–200 毫秒(主要由 log N = 18 次桶访问的往返时间造成)。通过并行获取桶,可以进一步降低延迟。对于 ORAM 位于 RAM 中的本地 SGX 应用,每次访问的延迟为 1–10 毫秒,许多安全计算应用都可以接受。
实际应用中的带宽开销
ORAM 的带宽开销高度取决于访问模式。对于使用 1MB 数据块的 1TB 云存储 ORAM,每次访问大约传输 25MB(log N = 25 层带来的 25 倍开销)。对于较小的数据块(4KB),每次访问的绝对字节开销更低,但相对开销更高。部署 ORAM 的组织必须为 20–50 倍的带宽放大预留预算,并确保网络链路和云出站流量成本已将这一点考虑在内。
ORAM 与可信硬件
访问隐私的一种 ORAM 替代方案是可信硬件:英特尔 SGX 或 AMD SEV 提供可信执行环境,在采取适当防护措施的情况下,即使主机操作系统也无法观察计算过程或内存访问模式。未配合 ORAM 的 SGX 仍会向硬件泄露页面级访问模式,因此需要在 SGX 内使用 ORAM 才能实现完整保护。与纯 ORAM 相比,可信硬件可以降低带宽开销,但需要信任硬件制造商及其供应链。
何时部署 ORAM
在以下情况下,ORAM 是合适的选择:攻击者能够观察服务器端访问模式(例如云服务提供商或共租户),数据敏感性足以证明 20–50 倍带宽开销是合理的,并且访问模式本身可能泄露敏感信息。对于大多数应用,采用完善的密钥管理并配合标准加密就已足够。ORAM 是面向高安全性场景的专用工具,例如医疗数据分析、私有机器学习、金融交易系统和执法数据库。
电路 ORAM 桶大小测验
电路 ORAM 使用多大的桶?与路径 ORAM 相比,这为什么是一项改进?
电路 ORAM 与实际性能总结
电路 ORAM 将桶大小降至 Z=2(路径 ORAM 为 Z=5),并通过确定性的深度优先驱逐将带宽开销减半。它专为在混淆电路安全计算内部使用而设计。对于典型参数,实际开销是 40 倍的带宽放大。生产系统包括 Oblix(SGX + 不经意数据结构)、TaoStore(高吞吐量批处理 ORAM)和 Obladi(事务型 ORAM)。必须在 SGX 内使用 ORAM,因为单独使用 SGX 会泄露页面级访问模式。
常见问题解答
「Circuit ORAM 与实际性能」课时是免费的吗?
是的 — 「Circuit ORAM 与实际性能」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。
「Circuit ORAM 与实际性能」这节课中我会学到什么?
研究 Circuit ORAM 的改进,以及 ORAM 构造在现实环境中的性能开销。 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cryptology Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「Circuit ORAM 与实际性能」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cryptology Academy 课中编写并运行代码吗?
能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 访问模式泄露威胁
- Path ORAM:隐藏内存访问
- Circuit ORAM 与实际性能
- 云存储与安全处理器中的 ORAM