真的不可能知道 CPU 在做什么吗?

电器工程 中央处理器 逆向工程
2022-01-13 21:44:55

计算机程序员经常背诵 x86 指令完全不透明的口头禅:英特尔告诉我们他们正在做某事,但没有希望任何人能够验证正在发生的事情,所以如果 NSA 告诉他们后门他们的 RNG,那么我们真的不能做任何事情。

好吧,我相信计算机程序员对此问题无能为力。但是电气工程师会如何攻击它呢?电气工程师是否可以使用技术来验证电路是否确实执行其规范中描述的操作,而不是其他操作?

4个回答

电气工程师是否可以使用技术来验证电路是否确实执行其规范中描述的操作,而不是其他操作?

理论上,是的,我认为这是可能的。但是,对于复杂的 CPU,这将花费大量时间和金钱。此外,如果您不完全了解和理解设计,您将无法判断任何活动是否“合法”。

CPU“只是”由许多逻辑单元组成的复杂数字电路。

可以通过观察金属连接对芯片进行逆向工程并重建设计。可以有许多这样的连接层,例如多达 8 层或更多。

您将需要该领域的专家来识别逻辑单元,然后也许一些软件可以弄清楚它们是如何连接的,这样您就可以重建网表。

一旦你有了网表,你就“了解”了设计。这并不意味着您现在也知道它是如何工作的!

可能是某个功能激活了设计的 2 个部分,而您认为一个应该足够了,因此您怀疑正在发生一些可疑活动。但是,该设计采用了一些您不知道的巧妙技巧来加快操作速度。

在不了解和理解设计的情况下,您得出的任何结论都可能仍然是错误的。只有设计 CPU 的工程师才拥有所有设计信息,并且最有可能弄清楚或猜测 CPU 中实际发生了什么或应该发生什么。

我读过的关于该主题的最佳论文是2014 年的“Stealthy Dopant-Level Hardware Trojans”(Becker 等人)。

由于修改后的电路在所有布线层(包括所有金属和多晶硅)上看起来都是合法的,我们的特洛伊木马系列可以抵抗大多数检测技术,包括细粒度光学检查和针对“金芯片”的检查。我们证明了我们方法的有效性通过将特洛伊木马插入两种设计——一种源自 Ivy Bridge 处理器中使用的英特尔加密安全 RNG 设计的数字后处理和一种抗侧信道 SBox 实施——并探索它们的可检测性及其对安全性的影响。

该论文描述了如何进行更改,如何通过检查硅片很难检测到,在生产测试中隐藏它的技术,以及如何降低硬件加密 RNG 的安全性或泄露关键信息通过 AES 实现的电源轨侧通道。

侧信道是一个新兴的关注领域。英特尔一直受到与推测执行有关的问题的困扰,该问题从内存中泄漏了甚至未被程序使用的信息。这可能是故意的设计缺陷吗?这几乎是不可能的。

好吧,我相信计算机程序员对此问题无能为力。但是电气工程师会如何攻击它呢?

没有找到后门的好方法,找到硬件后门的一种方法是测试组合或未记录的指令。这是一个真正做到这一点并在 x86 硬件上进行审计的人的好谈话。这可以在不破坏芯片的情况下完成。英特尔的一个问题(我不确定其他芯片)是它实际上有一个运行 linux 的处理器,因此在某些处理器上也运行了软件,而你应该无法访问它。

电气工程师是否可以使用技术来验证电路是否确实执行其规范中描述的操作,而不是其他操作?

有一些方法可以测试使用硬件本身来测试功能。由于 x86 的指令集有一个未记录的部分,因此在正常指令中引入后门是不寻常的,因为它会引入错误的可能性(例如,如果您在 add 或 mult 指令中有后门),所以首先要查看将在未记录的说明中。

如果您确实需要测试常规指令的功能,您可以观察执行指令所需的时间,观察运行指令所需的电量,看看是否与您的预期有差异。

唯一的办法就是把芯片一层一层剥下来,用电子显微镜记录下每一个晶体管,然后把它输入到某种模拟程序中,然后观察它的运行。

这本质上是黑盒问题,您尝试通过测量输入和输出来重建内部结构。一旦内部结构的复杂性或 I/O 的数量超出了微不足道的程度,就会出现组合爆炸,其中可能的内部状态的数量会变成天文数字。Googol这样的数字被扔掉的地方。