An article to understand the attack and defense of security chips and imKey's "core" level protection

一文了解安全芯片的攻防及 imKey 的「芯」级防护

一文了解安全芯片的攻防及 imKey 的「芯」级防护

前言

无论牛熊,资产安全永远都是最重要的!尤其对于去中心化钱包用户而言,私钥自持,资产自管,但也意味着风险自担,那么,钱包的安全性必然就是用户最关心的话题。

今天,我们再次走进 imKey 硬件钱包的安全核心 —— 安全芯片,通过本文了解历史上涉及安全芯片的攻防有哪些 ?imKey 的安全芯片如何保护用户的私钥安全 ?

随着计算机的发展,计算机安全已经成为现代电子世界重要的组成部分,而硬件安全更是成为计算机安全的一个关键领域。在这个领域上,从 1982 年第一批接入到互联网的硬件开始,围绕着芯片安全的攻击与防护一刻都未停止过。

攻击者们试图非法的从芯片中取得用户的私人信息,为此他们采取植入木马、开启后门、电磁干扰、高温高湿、物理破坏等手段,无所不用其极。针对攻击者们不同的攻击方式,安全芯片在一次次对抗中发展出一整套与之对应的安全防护方案。

如果把芯片的攻击和防护比喻为一场旷日持久的圣战,那么,攻击者的各种攻击方式就是一个个硝烟弥漫的战场,而安全芯片就是各战场上守护用户信息安全的最坚固防线。

最古老的战场 —— 内存数据防护

通常,安全芯片会包含 FLASH / EEPROM / ROM 等持续性存储,也会有 RAM / CACHE 等动态存储。这些内存组件与 CPU 通过 Bus 总线连接进来,并以此来交换地址和数据。

在 20 多年前,攻击者们的一项日常任务就是把未加密的数据从芯片的内存中读取出来,希望以此来掌控芯片内程序的代码,或者是将数据从芯片内部分离出来。

最初,芯片制造商们使用一种叫做「implantation ROM」的技术,通过将离子注入到芯片的基板来替换可见的金属连接进行信息编码,但攻击者们马上就发现了一种称为「decoration」的特殊蚀刻程序,可以让内存数据暴露无疑。之后,芯片制造商们转向整体安全措施,而最早的对策之一就是对内存地址进行加扰,但是不久之后,攻击者就攻破了这种简单的混淆,那就是通过应用程序从加扰的内存 dump 中重新组合出明文。更重要的是,当时的芯片布局上很容易识别和恢复加扰信号。因此,在过去的十年中,简单的地址加扰已经被内存加密广泛的取代。此外,安全芯片还必须考虑任何可能影响芯片行为的故障攻击。内存系统,包括相应的总线结构,都是攻击者的目标,如果没有得到有效防护的话,成功的故障攻击可能会破坏密钥、dump 数据、绕过密码或 PIN 的输入,甚至获得对芯片的编程访问权限。

若干年前,甚至现在的一些低端安全芯片产品,采用一种叫「Parity Bits」的手段进行内存的完整性校验,每个字节(8Bit)都额外多使用一个 Bit 的数据进行数据验,因为只有一个 Bit 的数据,这个检验位只可能是奇数 1 或是偶数 0。换句话说,这样的校验位机制就给攻击者可乘之机,攻击者会有 50% 的机率成功。

而现在的高端安全芯片(比如 imKey 所用的这颗安全芯片)完全的抛弃了这种方法,转而采用数学错误检测代码(mathematical error detection codes,如图)。不仅允许对一位或者多位错误进行错误检测,还具有一定的纠错能力。


最关键的战场 —— CPU 防护

CPU 是整个芯片的核心,围绕着 CPU 的指令和信号的攻击不仅仅发生在影视剧或者实验室中,而是切实的发生在现实中。在典型的 CPU 攻击中,攻击者不仅可能在处理过程中找到明文,还可能在操作过程中找到诱导其发生故障的绝佳机会,并用之来破解密钥或随意的操纵软件执行。早期有一种方法是通过增加一颗在内核外部用于检测环境条件(如电压、光或温度)的传感器来保护 CPU 内核,但是大多数传感器通常在芯片的局部分布范围内工作,并不能保护那些对 CPU 本身的局部攻击,例如使用激光、α 辐射、TIVA(热感应电压改变)或直接物理强制攻击。

最初,安全芯片制造商们也用和内存防护相似的方法——「Parity Bits」来防护 CPU 的寄存器,但是和内存防护一样,这种防护并不长久,仅仅是过一段时间之后,就被攻破了。而现今最常用的 CPU 防护方法是数据/代码签名。这些签名通常在编译代码或生成数据时创建,然后与代码和数据一起存储在内存中。当数值不匹配时,会触发错误并发出警报,从而停止 CPU 的进一步处理。代码和数据签名对于代码中所谓「线性」部分的保护是很出色的,但是当代码出现大量分支代码时,它就成为了攻击者最重要的目标,攻击者会试图通过攻击代码签名来影响分支代码的行为。尽管如此,代码和数据签名仍然是中端安全芯片产品常用的保护手段。

近年来,芯片制造商慢慢认识到要实现真正的 CPU 保护,仅靠一个 CPU 是不够的,因为它无法在一定程度上自行检查自己的决策,并以此来有效的应对现代攻击方法。因此,最先进的对策是使用紧密相连的双 CPU 内核,其中两个 CPU 不断检查彼此的正确操作和执行条件,而且如果将 CPU 计算的数据进行加密,则可以为两个 CPU 使用不同的动态密钥,并同时采多时间和多区域的故障诱导方法,以此进一步增加对所谓的多故障攻击的屏障作用。

最真假难辨的战场—— 物理攻击与防护

 

攻击者对运行在硅芯片上的信号会非常感兴趣,因为他们可以借助于这些信号对芯片进行逆向工程。逆向工程是指对一个目标进行彻底的检查,以达到对其结构或功能的全面理解的过程,以及攻击者用来发动攻击的一种方法。逆向工程广泛用于克隆、复制各种安全关键应用中的系统和设备。历史上最著名的一个例子是在二战时期,一架 B-29 轰炸机被苏联捕获、逆向工程并克隆。

针对于硬件产品的逆向工程,主要分为芯片级逆向、板级逆向、系统级逆向,安全芯片主要面对的是芯片级逆向。攻击者先要识别芯片的封装的材料并移除芯片的封装,攻击者会用化学法(湿式、干式)、机械法、纳米制造技术、激光烧蚀等技术对芯片进行解封装,之后攻击者会将芯片进行分层。现代的芯片一般由几个金属层、钝化层、通孔、触点、多晶硅和有源层组成,攻击者会对芯片进行横截面进行成像处理,使用 SEM 或 TEM 来识别层数、金属材料、层厚、通孔和触点。在分层过程中,攻击者会拍摄成千上万的高分辨率图像来捕获每一层中包含的所有信息,随后,这些图像可以拼接在一起,然后进行研究以重建芯片。

最诡谲的战场 —— 侧信道攻击与防护

侧信道攻击也叫边信道攻击(Side-Chain-Attack)是一种非侵入性攻击,它以密码算法的实现为目标,而非分析其统计或数学弱点。这些攻击利用从各种间接来源或渠道泄露的物理信息,例如目标设备的功率消耗、电磁辐射或者计算的消耗时间来进行攻击,此类攻击统称为侧信道攻击。侧信道攻击的方式多种多样,可以说其可利用的领域几乎是无限的,经常让芯片制造商防不胜防,曾经有攻击者就通过侧信道攻击在 4 米之外对笔记本发起了攻击。

总体来讲,常见的侧信道攻击分为功率分析、电磁分析、时序分析、故障注入等手段,除开下图列出的常见侧信道攻击方式之外,声音、温度、振动等信号都是攻击者可以利用的信号源。

针对于侧信道攻击常用的方法是隐蔽信道、CPU 信号进行加密、配以协处理器进行辅助保护。


imKey 的「芯」级安全防护

imKey 硬件钱包选用的安全芯片为英飞凌生产的 SLE78CLUFX5000PH,相关参数如下:

该芯片采用了「Integrity Guard」的设计来协调两个 CPU 核心的运算,保证数据不仅加密存储在芯片中,而且还在芯片内以加密的形式处理。「Integrity Guard」这种设计的核心点是一个独立的、自我检查的系统,这个系统就像细胞中的 DNA 双螺旋线一样工作。

 

一个由两个 CPU 组成的独立自检系统的工作原理就像细胞中的 DNA 双螺旋线,检查加密形式的应用代码并将其传输到镜像 CPU。

 

来自两个 CPU 的机器命令形成程序代码。来自内存模块的命令和数据在 CPU 中组合以处理输入数据并产生所需的输出数据。

 

逆向工程、物理攻击或侧信道分析等攻击只会泄露加密数据,这对攻击者来说是无用的。 

Integrity Guard 是市场上第一个在 CPU 本身中利用硬件加密处理的安全技术。

该芯片内部设有屏蔽层,并进行安全混杂布线、电流扰源处理,能够有效防止外部对硬件的探测和破解。芯片具有完善的物理攻击防护,保证在高低温、电磁干扰、紫外线干扰、静电干扰、电压毛刺干扰等环境下不会泄露敏感信息。

该芯片的算法实现保存在一个特殊的存储区,在算法下载以后,这个区域不再支持芯片的调试运行。整个算法程序运行于一个独立的程序堆栈中,一旦程序执行结束,栈区立刻被清空,否则无法执行下面的调用。芯片的硬件算法区受芯片自身访问系统的保护,从而保证硬件算法和密钥的安全性。

该芯片能够对外部时钟频率和电源电压进行检测监控,防止外部通过检测时钟和电压的变化来获取信息,保证程序执行期间数据的安全性。芯片内灌装的 COS 程序不会被篡改,用户私钥保存在芯片内部,无法被导出。

综述

上述列出的仅是攻击者常用的几种攻击手段,并不是硬件钱包面临的所有威胁。诸如硬件木马攻击、面向测试的攻击、针对随机数的攻击等等都可能造成我们的资产的丢失。更有甚者,即使使用了世界上最安全的安全芯片,攻击者还会采用社会学攻击,比如买通了你的家人朋友直接盗走密码或者助记词,资产还是会不翼而飞。

只有外在使用 CC EAL6+ 安全芯片的 imKey 硬件钱包,内在时刻把安全意识记在心上,双管齐下,才能保证持有的资产安全长存。

后记

感谢英飞凌的 Dr. Peter Laackmann, Marcus Janke 编写的安全芯片白皮书。

本文涉及的技术与方案仅仅是基础概念,仅为让大家了解安全芯片的攻防,以及硬件钱包使用安全芯片的必要性。


参考资料

  • Integrity Guard 数字安全技术https://www.infineon.com/cms/en/product/promopages/integrity-guard/