TGViewer
Laisky's Notes Laisky's Notes @laiskynotes · 3.34K subscribers
Post #388 2.3K
在计算机安全领域,我们将数据安全粗略分为三个维度:in-transit, at-rest, in-use。

HTTPS 可以保护 in-transit,AES 可以保护 at-rest,而 TEE 就是注重于保护 in-use 时的内存数据安全。理论上,一个妥善配置使用的 TEE,可以让用户放心地在不信任的环境中运行代码。

比如你作为一个版权所有方,可以要求对方提供可验证的 TEE 环境,然后你才会将重要的数据传输进对方的 TEE 加密环境中。即使这台机器完全在对方手中,TEE 硬件也会保障你数据的安全。

然而,这个安全神话最近被无情的打破了。研究者发现,SGX 的 CPU 和内存间的加密通信使用的是确定性的加密算法(deterministic)。那么通过运行一个自定义的 TEE 应用,然后再拦截内存总线上的加密数据流,就可以让 TEE 的内存加密芯片扮演一个 oracle 的角色,从而为攻击者提供充足的包含时序信息的密文,从而推断出 TEE 签名 QE REPORT 所使用的 ECDSA 私钥。

拿到签名私钥后,就可以为任意伪造的 REPORT 签名。而 SGX 正是通过 REPORT 来证明当前程序运行在一个可信的 TEE 环境之中。那么攻击者就可以实际在非加密环境中运行程序,但是仍然提供一个可信的 REPORT,从而骗取数据提供方的信任。

很可惜 Intel 也不打算修复这个问题,那么 TEE 安全性的基础(Trusted Computing Base, TCB)就得包含:

* TEE 硬件
* 可信的 host OS
* 可信的物理机器维护者

作为一个曾经的 TEE 开发者,说实话,前两者还可以通过软件手段来保障。但是最后一条,感觉完全扭曲了 TEE 的意义。如果你愿意信任机器的提供方,那么实际上 TEE 的意义就变成了防内贼而不是外贼。

作为一个开发者,你也可以从中吸取教训,谨记“一事一密”,利用随机数和密钥派生,不复用密钥,确保相同数据的每次加密结果都不一样。在加密以外,完整性验证也是非常重要的(integrity & authentic)。

扩展阅读:

* 我以前写过一系列介绍 TEE 的文章
* https://wiretap.fail/
* Intel 的回应: More Information on Encrypted Memory Frameworks for Intel Confidential Computing
* next
  • 👍 18
  • ❤ 1
More from @laiskynotes
  1. Oct 6, 2026https://x.com/LaiskyCai/status/2107307813727060123?s=20 codex 最近有三个完全免费的工具,结合之后可以发挥非常强大能力:…
  2. Sep 15, 2026学习了一下 OpenAI 推出的 Agents API https://openai.com/index/introducing-the-agents-api/ 众所周知 Agen…
  3. Aug 28, 2026前阵子读了本很有趣的书,侯杨方的《这才是丝绸之路》。作者抛开抽象的文本溯源,而是采用实地考察的方式,重走了真实的丝绸之路。此书给我最大的感触就是:真实而且符合常理。 在我以前的想象…
  4. Jun 5, 2026读完 Mario Puzo 的《教父 The Godfather》三部曲小说,才意识到自己当年年轻时根本完全就没看懂电影《教父》。然后又去把电影重温了一遍,才发现原来电影里有很多细…
  5. May 22, 2026记录一下最近遇到的一个糟心事儿。 最近两个月开始又开始找工作机会,总的来说很不顺利,托朋友联系了两个内推也是石沉大海。(各位要是有远程工作的机会也请联系 job@laisky.co…
  6. May 14, 2026作为一个从业十多年的程序员,我已经半年没手写过一行代码了。上个月大概提交了 20 万行,这个月大概 4 万行。 昨天认真考虑了一下这个现象,我个人认为,虽然 AI 仍然存在显然的不…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →