[论文解读] Preventing Your Faults From Telling Your Secrets: Defenses Against Pigeonhole Attacks
本文提出确定性多路复用(deterministic multiplexing),一种纯软件防御机制,用于防止在如 Intel SGX 等可信执行环境中的页面故障侧信道攻击(即鸽巢攻击)。通过确保无论秘密输入如何,页面故障模式始终保持一致,该方法实现了页面故障无关性(page-fault obliviousness),在编译器优化下将开销从 4000× 降低至 29.22%,在轻量级硬件支持下进一步降至 6.77%。
New hardware primitives such as Intel SGX secure a user-level process in presence of an untrusted or compromised OS. Such "enclaved execution" systems are vulnerable to several side-channels, one of which is the page fault channel. In this paper, we show that the page fault side-channel has sufficient channel capacity to extract bits of encryption keys from commodity implementations of cryptographic routines in OpenSSL and Libgcrypt --- leaking 27% on average and up to 100% of the secret bits in many case-studies. To mitigate this, we propose a software-only defense that masks page fault patterns by determinising the program's memory access behavior. We show that such a technique can be built into a compiler, and implement it for a subset of C which is sufficient to handle the cryptographic routines we study. This defense when implemented generically can have significant overhead of up to 4000X, but with help of developer-assisted compiler optimizations, the overhead reduces to at most 29.22% in our case studies. Finally, we discuss scope for hardware-assisted defenses, and show one solution that can reduce overheads to 6.77% with support from hardware changes.
研究动机与目标
- 解决在如 Intel SGX 等可信执行系统中,通过观察页面故障泄露秘密信息的页面故障侧信道攻击威胁,其中不受信的操作系统可利用页面故障推断出敏感信息。
- 证明现有密码学实现(如 OpenSSL、Libgcrypt)会通过页面故障通道泄露信息,某些情况下可实现高达 100% 的密钥恢复。
- 提出一种新的安全属性——页面故障无关性(page-fault obliviousness),确保不同秘密输入下的页面故障模式不可区分。
- 设计并实现一种基于编译器的软件防御机制(即确定性多路复用),通过隐藏与输入相关的内存访问模式来防止信息泄露。
- 评估性能权衡,并提出硬件辅助优化方案,显著降低运行时开销,同时保持安全性。
提出的方法
- 提出确定性多路复用:以固定且与输入无关的顺序主动访问所有与输入相关的数据和代码页,从而消除页面故障模式的差异。
- 将该防御实现为 LLVM 编译器的扩展,针对足够支持 OpenSSL 和 Libgcrypt 中密码学例程的 C 语言子集。
- 应用静态分析与程序结构感知技术优化确定性多路复用的开销,在案例研究中将开销从 4000× 降低至 29.22%。
- 提出一种硬件辅助变体,利用专用内存管理支持,将开销平均进一步降低至 6.77%。
- 采用基于编译器的方法插入内存访问模式,确保故障行为与秘密输入无关,从而实现 PF-无关性(PF-obliviousness)。
- 在受控页面分配环境下,对真实密码学原语(AES、EdDSA、RSA)进行评估,以模拟攻击性操作系统的行为。
实验结果
研究问题
- RQ1页面故障侧信道在多大程度上可被利用,以从 OpenSSL 和 Libgcrypt 中的密码学实现中提取秘密密钥?
- RQ2纯软件防御是否能在不依赖硬件支持或可信操作系统组件的前提下实现页面故障无关性?
- RQ3确定性多路复用带来的性能开销有多大?是否可通过编译器优化将其降低至可接受水平?
- RQ4硬件辅助变体在保持安全保证的同时,能否有效最小化运行时开销?
- RQ5该防御是否可泛化应用于密码学例程,而不会破坏功能正确性或引入新的攻击面?
主要发现
- 页面故障侧信道具有足够的信道容量,可在易受攻击的密码学实现中提取高达 100% 的密钥位,平均泄露量为 27%。
- 朴素实现的确定性多路复用开销最高可达 4000×,在生产环境中不可行。
- 通过开发者辅助的编译器优化,所有评估的密码学案例研究中开销最大降低至 29.22%。
- 硬件辅助变体将最坏情况下的开销降低至 6.77%,使该防御适用于性能敏感的应用。
- 该防御成功阻止了操作系统基于秘密输入区分执行模式,实现了页面故障无关性的目标。
- 现有的缓存和时序侧信道防御方案对鸽巢攻击无效,凸显了专用解决方案的必要性。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。