如何规避主要 FOSS 操作系统中受损的 CPU

信息安全 AES 硬件 国家安全局
2021-09-10 02:30:11

正如 Matthew Green所说,“NSA 一直在……与硬件……供应商合作,以削弱加密和随机数生成器。” 然而,在现阶段,公众对这些努力损害了哪些特定硬件产品以及以何种方式受到损害的公众知之甚少。如果人们希望避免使用受损的功能,那么在做出购买/部署决策时,就很难知道如何响应此类消息。(公开“已知”的罕见情况 各种 产品使用的 Dual_EC_DRBG 随机数生成器,尽管某些英特尔 CPU 上RdRand指令显然不是这样。)

例如,如果某些 Intel 和 AMD CPU 中可用的 AES 或 AES-NI 功能受到损害,但 CPU 的其余部分的行为符合预期,那么避免受到损害的功能就不必避免这些 CPU:它会足以避免使用相关说明。

我的问题是:

  1. 这可以在OpenBSD Cryptographic Framework (OpenBSD/FreeBSD/Illumos/etc) 和Crypto API (Linux) 中完成吗?如果可以,怎么做?
  2. 鉴于:

    • 可疑硬件在加密应用程序中毫无意义,并且
    • 片上 AES 或 AES-NI 毫无意义,除非在加密应用中,

    您认为带有 AES 或 AES-NI 的 CPU 现在毫无意义吗?

  3. 我在这里弄错了一根棍子吗?
2个回答

AES 指令必须产生正确的输出。如果它们以改变输出的方式被篡改,它会很快被检测到,并且没有关于这方面的报告。这极大地限制了篡改的范围(到侧信道等),我看不出它很容易被 NSA 所利用。

随机数生成器是另一种野兽。有可能虽然它看起来像你我喜欢随机流,但它有一些特殊的属性,NSA 可以使用它来预测它。RdRand 和Dual_EC_DRBG都受到怀疑。

所以一个实际的步骤是使用额外的随机数生成器来代替(或除了)RdRand。大多数加密库已经这样做了,或者可以配置为(更多信息

这可能是唯一合理的对策。理论上,后门 CPU 可以做任何事情:将您的明文直接泄露给 NSA,将您的密钥永久存储在芯片上,等等。但您对此无能为力。

没有办法绕过恶意 CPU。

恶意软件可以在现代计算系统的不同层上运行。从上到下; 应用程序级、用户模式、内核模式、引导扇区、固件,最后是微码。要了解这些级别的真正意义,外行首先需要了解每次机器启动时发生的过程:运行一个称为 BIOS 引导程序的程序;它的工作是将任何微码更新播放到 CPU 中并找到启动设备;引导设备运行它的引导扇区;引导扇区找到内核并将其加载到内存中;内核启动第一个用户模式进程(init 或 smss);初始用户模式进程启动所有进程。既然所有计算机人员都从 101 课上睡着了,其他人都有望理解其中的意义。

安全专业人员已经习惯(并且完全厌倦了)每天处理前 3 个级别的恶意软件。bootsector 的东西在过去几年流行起来,每个人都知道 Kon-boot 或 Vbootkit 等东西,但它仍然没有真正普及。固件更加深奥。BIOS 是一种固件,是大多数系统中最先进的固件类型。世界上编写这些 BIOS 程序的公司屈指可数。大多数计算机制造商都从这些公司获得 BIOS 许可。苹果当然会自己制造,因为想法不同。BIOS 恶意软件(似乎)必须非常专门针对特定供应商发布的特定版本等。就资源而言,您有 Phrack #66,它概述了如何创建恶意 VMware 和 Award BIOS,Maux 固件项目,并且在 2009 年出现了使用带有 BIOS rootkit 的戴尔服务器的案例。这是 BIOS rootkit 的第一个“狂野”案例。下一个重大案例是 2011 年的 Mebroni。

现在看,不是为了政治,但任何告诉你 CPU 微码攻击是“锡箔”的领域的人等等......这些人天真得要命。他们不知道一个帝国每天都在做什么来维持它的权力。他们不知道在这个世界的黑暗中发生了什么样的事情。这些人在 1940 年会说原子弹是一个神话,不可思议。绝对是“网络战争”的未来,也就是国家支持的网络恐怖主义或国家支持的黑客攻击或任何你想称呼它的东西。绝对“最终”是恶意 CPU 微码。这是最阴险的。在“网络战争”的背景下追求 CPU 微码向量的原因与在动能战争的背景下发展核武器的原因是相同的。回想一下第二次世界大战和曼哈顿计划。如果原子弹,更具体地说是多级热核弹,是物理、动能战争矢量中的“最终”游戏规则改变者,那么恶意 CPU 微码就是它的网络等价物。民族国家对原子武器的痴迷在今天很可能被应用于开发最终的网络武器。

现在,正如我之前提到的,微码更新不会“坚持”。这意味着它们必须在每次启动时“播放”到 CPU 中。然而,有一些方法可以解决这个问题。无论如何,您的帖子本质上是在询问仅内核级别及更高级别的操作系统如何保护您免受较低级别的攻击,如引导扇区、BIOS 等固件或特别是 CPU 微码。我的建议是使用旧硬件,并且不要在适用的情况下应用微码更新。有趣的是,英特尔不久前刚刚发布了整个“i”系列的微码更新。这些更新与 Windows 端的 Microsoft 更新打包在一起。此外,更新显然是加密的。加密算法是严格保密的公司机密。如果你真的对这种类型的东西感兴趣,我可以深入了解它,但我认为我已经在这里发布了足够多的内容。有些人试图对微码更新进行逆向工程……以及其他类似的东西……研究/研究……如果你愿意,我可以将你链接到一些东西。无论如何.. IMHOP 只是一个国家演员.. 几乎只有美国/以色列可以完成这样的事情.. 无论如何.. 中国推出的 MIPS 架构 CPU 看起来很有希望。根据这场关于通用计算的战争的方式,我将来可能会切换到 MIPS 100%。此外,它运行的是Linux。

只要考虑一下,是的,根据许多可归因和不可归因的消息来源,NSA 确实在研究微码向量……是的,他们正在与供应商自己合作……即英特尔。不要相信我的话。史蒂夫·布兰克(Steve Blank)是一位知名且受人尊敬的硅谷内部人士,今年早些时候发表了一篇热门文章,该文章已被我之前描述的许多天真的类型驳回。他在文章中直截了当地说。美国政府和英特尔正在合作研究恶意微码。从 NSA 的角度来看,这样做非常有意义。