FPGA的加密是如何工作的?

信息安全 加密 硬件
2021-09-11 22:21:52

我知道 Altera 的 FPGAS 使您能够在使用它时加密 RTL 代码,我不明白为什么它真的被加密了,因为一旦我有了 FPGA,我就可以使用它并使用闪存阅读器(理论上)读取编码的 RTL 代码,并读取 FPGA 的 KEY,然后我就有了代码。

我想念什么?

3个回答

第一部分:Altera FPGA 有一些模型允许您将密钥存储在易失性和非易失性存储器中。

Altera 解释说他们使用 128 位或 256 位的 AES。私钥存储在 FPGA 中,外部存储器使用公钥加密数据。在启动过程中,从外部存储器读取的数据,用 FPGA 内部的私钥解密,然后处理以配置所有以下读取(就像配置头一样)。

资料来源:http : //www.altera.com/devices/fpga/stratix-fpgas/about/security/stx-design-security.html

第二部分:他们有防篡改措施,以防止有人做你害怕的事情。见:http : //www.altera.com/literature/wp/wp-01111-anti-tamper.pdf

一般来说,打开芯片并蛮力提取其中的每个组件位置是“容易的”,这是一种反向代码攻击。FPGA 是可编程的,因此已经编程的和原始的 FPGA 在物理级攻击中看起来是一样的。当你试图打开芯片并从中提取一些东西时,你最终会破坏编程。

而且,为了防止您提取密钥,没有像 *read_private_key* 这样的功能。您可以写入和覆盖它,但不能提取它。

您缺少的是 FPGA 不提供读取密钥的任何接口,并且理论上通过例如在芯片内部添加金属层或在检测到篡改时擦除密钥来使密钥提取非常困难。

有一篇非常好的论文,名为“Side-Channel Attacks on the Bitstream Encryption Mechanism of Altera Stratix II”(Moradi、Oswald、Paar、Swierczynski)描述了对旧 Altera Stratix II FPGA 的加密比特流的攻击。作者概述说,虽然打破这种保护在理论上可能非常困难,但实际上由于非常幼稚的实现问题,它在实践中非常容易,例如:

  • 使用当前 PC 时间作为随机性的主要来源
  • 天真地隐藏了密钥材料,将其分散在一个 40 字节的数组中并每个字节存储两位
  • 将调试信息留在加密 DLL 中
  • 使用对称芯片 (AES) 进行密钥推导,而不是单向函数,这使得密钥推导微不足道地可逆
  • 接受可以任意变慢的外部配置时钟,以便通过查看功耗可以轻松看出每个解密轮中翻转的位数

从那时起情况明显好转,但总的来说,FPGA 比特流加密仍然是一个审查/审计不佳的领域,很大程度上依赖于默默无闻。

从比特流到网表:http : //www.univ-st-etienne.fr/salware/Bibliography_Salware/FPGA%20Bistream%20Security/Article/Note2008.pdf

FPGA 比特流安全性被破坏:http : //beta.slashdot.org/story/155120

如果你想花很多时间,那么你可以对 FPGA 进行逆向工程。使用差分功率分析 (DPA) 在上电时检索安全密钥,然后读取比特流,将其反转到网表,然后分析它直到您知道设计或只是克隆它。