评估前体的硬件安全性

2020-11-25 00:51:09

制定和打破安全性并驾齐驱。我已经谈论了很多有关如何制作Precursor(用于安全应用程序的移动硬件开发平台)的信息。在这篇文章中,我尝试打破它。

硬件安全性是一个多方面的问题。首先,存在一个问题:“我可以相信这一硬件是正确构建的吗?”;具体地说,植入物和后门是否埋在硬件中?我们将此称为“供应链问题”。鉴于我们的供应链具有全球性,这是一个极具挑战性的问题,因为零件从世界的四个角落拉出,经过数百只手才到达我们的家门口。 Precursor使用开放的可验证硬件直接解决此问题:键盘,显示器和母板易于访问,并可以目视检查结构是否正确。机密材料永远不会信任任何工厂或第三方工具。 Precursor能够生成自己的秘密密钥并将其密封在硬件中,而无需其他工具。

我们还为用户使用一种特殊的逻辑芯片-FPGA-由用户(而不是工厂)配置为恰好是用户指定的CPU。至关重要的是,大多数用户没有基于证据的理由相信CPU确实包含了它声称包含的内容。很少有检查能力能够以无损方式验证芯片。另一方面,借助FPGA,单个用户可以使用现成的工具来制作和检查CPU位流。此外,可以对设计进行修改和升级,以结合针对FPGA基础架构中发现的硬件漏洞的对策。换句话说,目前ASIC风格的CPU的可信度基本上是“我放弃”,而使用FPGA,用户可以配置和修补CPU。

有关FPGA如何帮助解决CPU设计透明性问题的更多详细信息,请参见我的上一篇文章。

可信的硬件只是硬件安全性的一个方面。除了正确的构造之外,还存在以下问题:“有人在我不看时篡改了硬件吗?”和“如果硬件落入错误的人手中,我的硬件可以保守秘密吗?”这分别是“篡改证据”和“防篡改”问题。这篇文章的其余部分将深入探讨这两个与Precursor相关的问题。

尽管您可能已经听说过其他任何说法,但防篡改在很大程度上尚未解决。提交给非易失性格式的任何机密都很容易被足够高级的对手恢复。近原子级显微镜的使用,以及基于光子和声子的精密探测技术,意味着配备了价值数百万美元的顶级装备和训练有素的技术人员的实验室极有可能回收秘密材料几乎所有非易失性存储介质。困难的部分是弄清楚秘密在芯片上的位置。一旦针对给定的品牌和型号知道了这一点,攻击就很容易重复。这意味着从以前研究过的设计中恢复密钥的增量成本约为1万美元,而且只需几天的时间。对于某些流行类型的硅封装,例如倒装芯片,所谓的“背面探测”技术可能能够在数小时内无损提取秘密密钥材料。

本文所引用的X射线断层扫描成像揭示了现代芯片的详细3-D结构。

存储在易失性存储器(即电池供电的RAM)中的密钥可能会显着提高赌注,因为密钥存储器的电源中断都会破坏其数据。电路的低温冻结可以帮助在断电的情况下保留数据以供读出,但是电池支持的密钥存储还可以采用主动对策来检测环境异常并以反应方式将密钥归零。虽然这听起来非常适合存储极其敏感的机密,但也存在极大的风险,因为错误的触发器会擦除密钥,而一次错误的举动就可能使数百万美元的加密货币消失。因此,易失性密钥最适合用于保护高度敏感但短暂的通信,而不适合长期存储高价值秘密。

请勿将篡改证据与防篡改混淆,这是安全的硬件设备显示篡改证据的能力。非常基本的篡改证据的一个示例是“如果删除则保修无效”标签。它通常放在将外壳固定在一起必不可少的螺钉上,因此,任何试图拆卸该装置的操作都需要刺穿贴纸。通过复制和替换标签很容易克服这一非常基本的措施,如果您认识合适的人,即使是全息贴纸也不难获得。

防篡改证据的下一个更高级别是在防篡改密封中加入了物理上不可克隆的特征,例如测量贴纸纸中纤维的随机图案,或记录嵌入在指甲油上的闪亮钻头的位置。一个接缝。当然,这些物理特征都不能证明不需要开箱的侧通道攻击的任何证据。在发生边信道攻击的情况下,对手只需观察功耗或从硬件发出的寄生无线电波中的模式,就可以获得有关硬件中包含的秘密的足够信息。攻击者还可能引发瞬时故障,希望通过将硬件暴露于高水平的辐射或极端温度下,诱使设备泄露秘密而不破坏标签。根据威胁模型,硬件可能仅需要阻止此类攻击,或者可能需要对它们做出反应并根据攻击的性质采取适当的措施。

由于硬件安全性很强,因此不应将缺乏已知漏洞利用视为强大安全性的存在。我们在Precursor中牢记这一事实:除了努力设计可信赖的安全硬件解决方案外,我们还致力于开发它。与大多数其他安全硬件供应商不同,我们还向您详细介绍了这些漏洞利用,因此您可以就我们实施篡改证据和抵制的实际限制做出明智的决定。

Precursor将Xilinx 7系列FPGA用作其受信任的根。从安全性的角度来看,这一系列FPGA可能是研究最广泛的FPGA之一。关于它的体系结构和漏洞的数十篇论文已经发表。结果,它的密钥存储已被反向工程并分析到晶体管级别。

Maik Ender,Amir Moradi和Christof Paar于2020年初发布了该芯片中最严重的已知漏洞,该论文的标题为“ The Unpatchable Silicon:7系列FPGA的比特流加密的全面突破”。简而言之,它允许攻击者仅配备比特流的密文,并访问FPGA的JTAG端口以恢复比特流的明文。它依赖于称为WBSTAR寄存器的功能,通常用于从损坏的启动中恢复。通过设计,它从位流中加密的位置加载恢复地址,并将该地址放入必须向启动媒体公开的寄存器中,以为后备映像设置新的加载位置。不幸的是,“恢复地址”只是未经检查的指针尖端处的一条数据。这意味着它可用于从比特流中的任何位置获取一个明文单词。攻击还利用了AES CBC块的可延展性来调整WBSTAR负载偏移,从而使FPGA可以用作“ oracle”来一次解密一个词的密文,而无需任何加密密钥的知识。

该论文提出了一种缓解措施,其中涉及FPGA上的一对引脚,这些引脚根据WBSTAR寄存器的内容来更改值,以触发密钥重置(假设您已将密钥存储在电池供电的RAM中,并且没有将其永久地烧入芯片中) )。在尝试实施提议的缓解措施时,我们发现了几种轻松绕开它的方法。特别是,外部引脚更新不是自动的,它是稍后在位流中通过附加命令来完成的。只需省略pin更新命令,就可以使缓解措施无效,而不会影响读出明文的能力。我们已经在jtag-trace github存储库中发布了重现此攻击所需的代码。

这意味着Precursor的防篡改性等于施加在SPI ROM芯片和JTAG端口上的胶水的强度。 SPI ROM芯片上的胶水阻碍了攻击所必需的密文的恢复,而胶合JTAG端口关闭则阻碍了漏洞利用代码的上传。此外,密文应被视为秘密,因为了解明文对于恢复明文是必要的。因此,FPGA仍应使用加密密钥刻录,并设置为仅接受加密的比特流。这是因为SPI ROM密文的JTAG读出只能在为此目的专门设计的比特流的帮助下进行。只要未将这样的比特流加密到FPGA内部的秘密密钥,密文就应该无法通过JTAG端口获得。

根据这项评估,我们正计划实施必要的电路,以将RAM支持的加密密钥清零,但这并不是为了直接缓解这种漏洞。不幸的是,对7系列安全功能的单独监视意味着从BBRAM引导的设备还必须接受未加密的比特流。因此,与从融合密钥启动的设备相比,在BBRAM密钥的设备上访问密文要容易得多。但是,通过包括BBRAM密钥归零电路,用户可以至少根据其风险状况选择使用哪种类型的密钥(电池供电或保险丝)。电池供电的钥匙要求硬件在拆卸时获得不间断的电源,从而使任何硬件攻击复杂化,以防万一用户忘记为电池充电时会丢失钥匙。幸运的是,保存钥匙所需的功率很小,低于电池本身的自放电电流。对于希望拥有“自我毁灭计时器”或“紧急按钮”的用户在不到一秒钟的时间内完全,安全且不可撤消地擦除设备的情况下,它也很有用。这对于保护具有较短或预定寿命的高价值机密非常有用。

Precursor建议的BBRAM密钥归零电路的示意图。它是一对背对背的NMOS型逆变器,可将系统锁定为关闭状态,直到取出电池为止。还有其他电路可快速释放与钥匙相关的电压轨,此处未显示。

建议将Precursor粘上后,我们提出的最简单的恢复密文并获得JTAG端口的方法是将Precursor设备放入精密的CNC铣床中,从背面铣削PCB,然后将其放置将剩余的组件组装到基于pogo-pin的机制中以执行读出。这当然会破坏过程中的Precursor设备,但它可能是恢复加密密钥的最直接,最可靠的方法,因为它与用于iPhone某些类型攻击的现有技术非常相似。将密钥存储在BBRAM中会产生意外擦除密钥的高风险,从而使铣出PCB的任务大大复杂化,但是具有非导电性陶瓷钻头的足够精密的CNC或基于激光的精密烧蚀铣削系统可以降低风险大量丢失。在非常短的偶然电源故障的情况下,FPGA芯片本身的低温冷却也可能有助于保留关键材料。

CNC铣床可用于在密集的电路板上执行精密攻击。上面是一个CNC铣削钻头的供应商演示,它从iPhone主板上卸下了NAND​​芯片,而没有损坏相邻的组件。该磨机可以很容易地以几千美元的价格购买。

进行此类攻击所需的设备和技能水平高于典型的Makerspace或政府现场办公室,但可以在任何现代情报机构或大型技术公司的专门实验室中使用。当然,如果Precursors成为存储高价值秘密的流行方法,那么企业家黑客还可以启动一项利润丰厚的服务,从仅需数十万美元启动资金的设备中恢复密钥。

话虽如此,这样的攻击很可能会被注意到。换句话说,如果您的设备正常运行并且其密封件完好无损,则您的Precuror可能没有被篡改。但是,如果它被没收或被盗,您可以假设准备好的对手可以在短短几个小时内提取出它的秘密。这不是很理想,但是这个障碍仍然比从游戏机到智能手机再到加密钱包的无数其他“安全系统”要高得多,这些安全钱包只能用数据线和笔记本电脑来打破。当然,这些“轻松中断”通常是由于设备固件中的错误所致,但与大多数此类设备不同,Precursor的固件是可修补的,并且完全开放供审核。

为了帮助用户将其前体胶合在一起,我们在包装盒中加入了易于混合的两部分环氧树脂,以便用户在检查完设备并满意其符合正确结构标准后就可以“灌装”其电路板。请记住,我们不会在工厂密封电路板,因为这使用户无法确认没有将后门插入硬件。建议您在完成硬件检查后执行以下操作,以永久密封其Precursor系统:

指示Precursor固件自行生成并将AES加密密钥刻录到设备,将FPGA比特流重新加密为该密钥,最后刻录熔丝以防止其他任何源的启动。

拆卸设备并将提供的金属盖卡入主板。除了使物理访问硬件变得更加困难之外,它还会吸收无线电波,从而使基于RF的攻击更加困难。

手动在一张约2.5厘米(1英寸)平方的薄纸上画一个令人难忘的物体或单词。

用棉签将提供的两部分透明环氧树脂滴入RF屏蔽层的孔中,尤其是在调试连接器和SPI ROM上。

将薄纸放在湿的环氧树脂上,使纸变得被环氧树脂浸透。

前体设计为“受信任”区域覆盖有金属屏蔽层,可以用环氧树脂将其粘在一起。

施加环氧树脂的主要风险是它会泄漏到不应胶粘的连接器上。布置该板可避免产生这种结果,但在密封过程中仍需小心。将过多的胶水倒入金属盖可能会导致胶水泄漏到不应密封的连接器上,从而导致无法重新组装。值得注意的是,密封是由用户自己承担的;一旦进行了密封尝试,我们将无法维修或更换单元,因为环氧树脂是无法通过设计去除的。

薄纸的目的是提供一种简单但令人难忘的方式来确认您的Precursor装置的独特性。它依靠人类与生俱来的能力来识别用自己的手绘制的图画或刻字。这种方法允许通过简单的目视检查来验证密封,而不是依靠第三方工具来例如记录和分析闪光点或纸纤维的位置以确保真实性。

我们提供Epotek 301“ Bi-packs”作为灌封前体设备的两部分环氧树脂。它通常用于封装光电和半导体,例如LED和传感器。因此,它具有出色的电性能,良好的光学清晰度,强大的机械耐久性以及适合穿透小电子零件的角落和缝隙的粘度。一旦固化,任何试图物理访问其中包含的电子设备的尝试都会留下某种标记,作为该尝试的证据。

Precursor设备具有很好的硬件安全级别。我们设计的硬件易于检查和密封,因此您有充分的理由相信该硬件。由于所有设备都容易受到硬件篡改的影响,因此我们采取了偏爱特征明确的设备的方法。我们之所以选择Xilinx 7系列FPGA,部分是因为已经对其进行了多年研究:已经对其熔丝盒和加密引擎进行了深入的分析,并且到目前为止,还没有发现报告了用于执法的特殊访问模式,未记录的影子。密钥存储区或其他可能导致完全远程利用或后门的错误。我们还花了一些时间来重现和披露已知的漏洞,这样您就不必相信我们对硬件安全性的声明:您有权重现我们的发现并针对以下问题做出自己的基于证据的发现:前体的可信度。与Precursor并行,Betrusted项目旨在提高标准,但这需要制造定制的ASIC,该ASIC附带有其自身的可验证性和供应链风险,我们希望通过超出范围的对策来解决这个职位。

最终,没有完美的安全性,但我们坚信,最佳的缓解措施是建立在开放,透明和大量测试原则基础上的基于证据的生态系统。如果您有兴趣参与我们的生态系统,请访问Precursor众筹页面。