On (the Lack of) Code Confidentiality in Trusted Execution Environments
Authors: Ivan Puddu, Moritz Schneider, Daniele Lain, Stefano Boschetto, Srdjan Capkun
Affiliation: ETH
Venue: Arxiv
介绍
本文系统的研究了 TEE 对代码机密性的影响,即如果攻击者利用侧信道尝试窃取 TEE 内部的代码,能否成功?对于 TEE 而言,其内存机密性已经被深入的研究过,而代码机密性则不然。
除开针对侧信道和 TEE,作者还研究了 代码解释器(Interpreter)的存在对测信道攻击的成功率的影响。
下图展示了本文所研究的两种可信代码的部署方式。
解释器的影响
解释器执行代码的方式与原生执行有着巨大的差异,本文采用了一个 WASM 的一个轻量级解释器,WASR 作为研究对象。
执行代码的数量
如下图所示,一条被解释执行的语句,常常对应多条原生指令,这极大的加长了测信道所获取 Trace 的长度。这潜在降低了推断一条指令的难度。多条指令产生的指纹可以被合并被用于单条指令的推断。
候选指令集的大小
x86 指令集的大小大概是 WASM 的 6x 到 14x(取决于微架构)。这也从一定程度上降低了在 解释器 上进行代码推断攻击的难度。
研究方法
本文采用的研究方法比较简单,即单步执行每一条指令,并且通过 OS 收集相关的信息,作为 Instruction Measurement(IM)。
作者采用了下面四个指标作为 IM 的一部分(PS:这似乎比大部分 SotA 的侧信道攻击都要强,作者 claim 这是为了估计 upper bound)
-
指令延迟 -
内存访问类型 -
是否访问了栈 -
是否变更了指令流
结果
作者首先研究了一个较小的程序,比较它们在解释器和本地原生执行下,获得的 IM 的区别。
可以看出,解释器提供了远高于本地原生执行的精度(更小的候选指令集)。
后面作者以类似的方式展开了大规模实验,结果与此类似。
思考
在这篇工作中,显然解释器的存在极大的影响了针对指令的侧信道攻击,那么其他类型的侧信道攻击呢?以及其他形式的代码执行方式,例如 JIT 等等(不过 JIT 应该已经有类似的工作)。
– END –
原文始发于微信公众号(COMPASS Lab):On Code Confidentiality in Trusted Execution Environments