题目: Avoiding Leakage and Synchronization Attacks through Enclave-Side Preemption Control
作者: Marcus Völp, Adam Lackorzynski, Jérémie Decouchant, Vincent Rahli, Francisco Rocha, Paulo Jorge Esteves Veríssimo
单位: University of Luxembourg
出版: SysTEX@Middleware 2016
解决的问题:
- 有两份工作指出SGX并不完美,操作系统可以借助并发操作窃取enclave的数据。
- 该工作重新审视了延迟抢占对SGX的影响(延迟抢占DP机制源自L4微内核家族),同时设计并讨论了如何在静态分析上避免代码有隐私泄露缺陷。
挑战:
- SGX并不保证OS不对启动enclave和进入代码进行抢占,此时恶意的OS依旧可以探知程序控制流和数据信息,尽管数据是加密的。
假设:
- Intel的SGX并不保证enclave的可用性,需要OS来提供支持。
- 对于不可信或被破坏的OS而言,该保证不成立。
名词解读:
- 延迟抢占(delayed preemption, DP):最早出现在L4微内核家族中。
- 由应用程序给内核发送信号,通知内核在应用程序离开关键区域后再抢占,而不是立即抢占。内核并不会无限期等待,而是设置看门狗。看门狗发送的中断不会被推迟。
Motivation:
- 如果enclave的状态变化可以被观测到,则说明了隔离并不彻底。OS具备在任意时刻的中断能力,违背了安全策略中的“不干涉属性”(最早见于MLS多级安全系统)。
- 文章以AES加密算法为例,说明了当攻击者具有细粒度的抢占能力时,可以借助缓存时序攻击,破坏隐私数据的保密性。
- 针对Cache的旁路攻击,本文作者首先在AES算法实现中加入了自己的代码,用cmov指令完成寄存器与寄存器间的数据拷贝,同时利用Mantel and Starostin提出的cross-copying保证条件选择情况下,两个分支的执行时间相同,防止cache timing leak(也是一种旁路攻击)。该方法的安全性可以验证,但可行性却不可恭维:多添加了指令,计算执行时间变长;插入指令的位置选取难度也很高。
设计原理:
- 微内核使用的DP机制,一定程度上削弱了攻击者的抢占能力,但必须假设系统没有被攻破(可信)。
- 攻击者可以借助缺页中断来窃取敏感信息。作者在数据进入enclave之前插入一段保护代码,这段代码的调度使用DP来保护。DP超时会触发异常,该中断也可以被利用,因此要求这段代码检查超时值是否大于WCET(最坏执行时间)。
- DP和加锁非常类似。如果要在一分钟内理解DP的作用的话,见原文图4。易知,DP机制保证了操作的近似原子性。
个人体会:
- 这个工作是由L4 TU-Dresden团队提出的。对我很有吸引力。
- 隔离的含义和透明有点像。隔离就是哪怕我要看,我都看不到;透明就是我根本不需要操心,因为看都看不到。
- 只有实现,没有效果评估。微内核系统原生的DP机制和SGX硬件辅助功能的结合,解决了在SGX上发现的问题。从侧面说明了微核系统在安全层面上比单核要好。在单核中引入DP机制,验证可行性和安全性,还需进一步努力。