1.2 威胁模型与攻击者能力


1.2 威胁模型与攻击者能力

本节摘要:TEE 不是万能盾,它的安全承诺只在特定的威胁模型下成立。本节把攻击者按能力分成非特权软件、特权软件、物理三类,说清每一类 TEE 能不能防、防到什么程度;再把机密性、完整性、可用性这三个安全目标拆开,讲它们各自靠什么机制保证、又怎么互相牵制。读完你会对"TEE 的安全边界到底划在哪"有一个清醒的判断。

学习目标

阅读完本节,你应当能够:

  1. 列出三类攻击者的能力和资源差异
  2. 解释为什么大多数商用 TEE 把物理攻击排除在威胁模型外
  3. 说清机密性、完整性、可用性三者在 TEE 里分别靠什么保证
  4. 复述至少两个真实 TEE 漏洞案例,并指出它们利用了什么
  5. 给一个具体业务画出"TEE 能防 / 不能防"的边界

问题与直觉

很多团队上了 TEE 之后还是被攻破,根子往往不在技术,而在威胁模型没想清楚。一个常见的错误是:以为"用了 SGX,云服务商就绝对看不到我的数据",结果忽略了侧信道——内存内容虽然加密了,但程序执行时缓存命中模式、分支预测状态都会泄露信息,SGX 早期版本被 Foreshadow、Spectre 这类攻击搞得焦头烂额就是明证。

另一个极端是:觉得 TEE 既然不防物理攻击,那就没用。这也不对。TEE 把"需要多大规模攻击"这个门槛大幅抬高了——对一个想批量窃取百万用户支付密钥的黑产来说,针对单台设备的物理拆解(冷启动攻击、功耗分析)根本无法规模化,TEE 的软件隔离对他们就是有效威慑。

威胁模型的价值就在这里:它强迫你说清楚"我防谁、不防谁",这样才不会在错误的战场投入资源。不做威胁模型的团队,要么过度防御(成本爆炸),要么盲目乐观(漏洞百出)。

核心原理

2.1 攻击者能力谱系

在 TEE 的语境下,攻击者通常按能力从弱到强分成三类。每一类对应不同的攻击路径,TEE 对它们的防御能力也完全不同。

攻击者类型 能力范围 典型手段 TEE 能否防
非特权软件攻击者 只能跑普通应用,没内核权限 恶意 App、越权读文件 能,TEE 本就是为它设计的
特权软件攻击者 控制内核、Hypervisor、固件 dump 内存、改页表、注入代码 部分能,靠内存加密和硬件隔离
物理攻击者 能接触硬件、上探针 冷启动攻击、功耗分析、故障注入 一般不能,超出 TEE 范畴

非特权攻击者是 TEE 最直接、也最容易对付的对象。一个普通恶意 App 想读你存在 TEE 里的支付密钥?根本没那个权限,硬件直接挡掉。

特权软件攻击者才是 TEE 真正的对手。这也是它最有价值的地方——传统的所有软件安全机制(防火墙、杀毒、访问控制)在内核被攻陷时全部失效,唯独 TEE 的硬件隔离还能撑住。Intel SGX 的设计假设甚至更激进:连 BIOS、Hypervisor 一起算不可信,只有 CPU 内核本身可信。

物理攻击者一般被排除在商用 TEE 的威胁模型之外。原因很现实:防物理攻击需要专用硬件(屏蔽层、电压传感器、真随机数发生器),大幅增加芯片面积和功耗,和移动、边缘场景的能效需求冲突。要防物理攻击,得上 HSM(硬件安全模块)或专用的抗篡改芯片,那是另一个量级的成本。

💡 关键直觉:安全不是二元的"安全/不安全",而是一个光谱。TEE 的价值不是宣称"绝对安全",而是精确地告诉你"在 X 条件下、面对 Y 类型的攻击者,你的数据是安全的"。这个精确性本身就是工程价值——它让你能做取舍决策。

2.2 三大安全目标:CIA 三件套

明确了敌人是谁,接下来要回答"保护什么"。TEE 的安全目标可以归结为三个属性,业内叫 CIA:

  • 机密性(Confidentiality):TEE 内部的代码、数据、堆栈对非授权实体不可见。即使攻击者 dump 了整个内存,看到的也是密文。
  • 完整性(Integrity):TEE 内部的代码和数据没被篡改。攻击者就算读不到,也可能想偷偷改关键变量来破坏逻辑——完整性机制负责检测这种篡改。
  • 可用性(Availability):TEE 服务在面对拒绝服务攻击时仍能响应,远程方能可靠地验证 TEE 实例的真实性。

这三者各自有对应的技术手段:

安全目标 实现机制 失效后果
机密性 内存加密引擎(写内存前加密、读时解密) 密钥、模型权重泄露
完整性 硬件完整性树 / MAC 校验 代码被注入、变量被篡改
可用性 远程证明 + 资源隔离 服务被 DoS、身份被伪造

机密性靠的是内存加密:CPU 在把数据写进主存(DRAM)之前自动用硬件密钥加密,读取时自动解密,密钥由芯片内部的加密引擎管理,软件层永远碰不到。这样即使攻击者物理控制了内存总线、用探针去读 DRAM 芯片,也只能看到一堆乱码。

完整性靠的是基于硬件的完整性校验。以 SGX 为例,飞地内存的每一页都关联一个 MAC(消息认证码),由页内容、页号和只有 CPU 知道的密钥共同生成。任何对页内容的非法修改都会让 MAC 对不上,触发异常。这个机制挡住了"我读不到,但我能偷偷覆盖一段恶意代码"这类攻击。

2.3 三者的相互牵制

CIA 三件套不是孤立的,它们互相牵制。最常见的坑是:只做机密性不做完整性,会被重放攻击绕过

举个例子。假设攻击者把 TEE 内存里某个密文页的内容记下来,过一会儿趁 TEE 不注意,把这个旧版本覆盖回去。如果系统只检查"内容能不能解密"而不检查"是不是最新的",TEE 就会用旧的状态继续跑——可能把已经撤销的权限又激活了,或者把已经花掉的钱又退回来。这就是重放攻击。

所以现代 TEE(比如 SGX 后续版本、AMD SEV-SNP)都引入了完整性树:不光校验内容,还校验版本号和 freshness,确保每页内存都是"当前"的而不是"被回放"的。机密性挡住了读,完整性挡住了改,二者一起才算闭环。

2.4 真实漏洞:威胁模型是怎么被突破的

理论模型在真实攻击面前总是脆弱的。这几个著名案例能帮你理解"威胁模型边界"到底是什么意思:

Foreshadow(L1 终端故障):2018 年披露,利用 Intel CPU 推测执行时的 L1 数据缓存漏洞,攻击者能从 SGX 飞地里读出加密密钥。这打破了 SGX"内存隔离坚不可摧"的假设——隔离没破,但 CPU 微架构的共享资源(缓存)成了信息泄露通道。后来 Intel 不得不通过微码更新和操作系统补丁来缓解。

Plundervolt:2021 年曝光,通过操控 CPU 供电电压,诱导 SGX 飞地执行错误指令,从而破坏完整性计算。这个攻击直指威胁模型里"硬件本身可信"这个假设——如果连电压都能被外部操控,CPU 内部的计算结果还可靠吗?

SGX-Step:一个研究框架,允许攻击者精确控制 SGX 飞地的单步执行,配合 AEX(异步飞地退出)机制,对飞地内部状态做高精度采样。这暴露了一个问题:即使硬件机制完美,飞地与外界的接口本身也是攻击面。

⚠️ 常见坑:很多文档把 TEE 描述成"硬件级绝对隔离",给读者一种"放进 TEE 就高枕无忧"的错觉。实际上,微架构共享资源(缓存、分支预测器、TLB)一直是泄露通道,侧信道攻防至今是 TEE 领域最活跃的研究前沿。把敏感逻辑放进 TEE 后,还得做恒定时间编码、限制共享资源暴露,才算到位。

工程实践要点

3.1 给业务画威胁模型

落地 TEE 之前,先给你的业务画一张"能防 / 不能防"的清单。我一般用这个模板:

威胁场景 攻击者类型 TEE 能否防 还需要什么补充措施
云上恶意租户偷我的模型 特权软件(云平台) 能(用 SGX/SEV) 远程证明确认真在飞地里
内部员工 dump 内存 特权软件 同上,加审计日志
设备被拆解、上探针 物理攻击 不能 上 HSM 或抗篡改芯片
缓存侧信道窃密 侧信道 部分 恒定时间编码、缓存分区
供应链植入后门 固件级 不能 可信构建、代码审计、形式化验证

这张表不是一次性填完就完了。威胁模型是活的——新的漏洞披露、新的攻击技术出现,都得回头更新。把威胁模型当静态文档的团队,迟早会被新攻击打脸。

3.2 接受残余风险

TEE 把攻击成本抬高,但没法消灭所有风险。理性做法是接受残余风险,前提是你清楚残余的是什么。比如:

  • 上 SGX 后,残余风险主要是侧信道和固件漏洞。缓解方式是及时打补丁、对敏感代码做恒定时间处理。
  • 上 TrustZone 后,残余风险主要是可信 OS 的漏洞。缓解方式是选 TCB 小的实现、定期审计、最小化放进 TEE 的代码量。

千万别抱"绝对安全"的幻想。一旦出事,"我们以为它绝对安全"在事故复盘里是最不能服众的理由。

3.3 防御的纵深原则

单个机制总会被绕过。成熟的 TEE 部署都是纵深防御——硬件隔离之上叠软件加固,内存加密之外加微架构隔离,远程认证之外加运行时监控。层与层之间用不同的检测逻辑(正则、结构、行为),攻击者要同时绕过所有层,难度显著上升。

防御层 挡什么 局限
硬件隔离 直接读改 TEE 内存 不挡微架构侧信道
内存加密 物理探针读 DRAM 不挡重放攻击(需完整性配合)
远程证明 初始状态被篡改 不挡运行时漏洞利用
运行时监控 行为异常 误报和延迟代价

💡 关键直觉:纵深防御的价值不是"层数叠加等于安全度翻倍",而是"每一层用不同的检测维度,攻击者绕过一层不等于绕过另一层"。一个能绕过内存隔离的侧信道攻击,未必能绕过行为监控——两套机制相互补盲。

本节要点回顾

  • 攻击者按能力分三类:非特权软件(TEE 直接挡)、特权软件(靠内存加密和硬件隔离,这是 TEE 的核心战场)、物理攻击(一般排除在威胁模型外)。
  • 安全不是二元的,是光谱:TEE 的价值在于精确告诉你"在什么条件下、面对什么攻击者,数据是安全的"。
  • CIA 三件套互相牵制:只做机密性不做完整性会被重放攻击绕过,三者必须协同。
  • 真实漏洞打破"硬件绝对可信"的假设:Foreshadow、Plundervolt、SGX-Step 都从微架构或接口层面突破了隔离。
  • TEE 不防物理攻击:要防得上 HSM 或专用抗篡改芯片,那是另一个成本量级。
  • 理性做法是接受残余风险:清楚残余的是什么,配纵深防御(隔离+加密+证明+监控)持续压缩攻击者空间。

下一章我们把第 1 章建立的威胁模型拿去对照三大主流架构——ARM TrustZone、Intel SGX、AMD SEV,看它们各自把信任边界划在哪、把哪些攻击者纳入了防御范围。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U