防木马芯片
━━ ━━
很久以前,有这样一个故事,希腊士兵花了10年工夫想攻克特洛伊城,可最终他们离开了,留下了一个巨大的木马。特洛伊人以为那是一件漂亮的礼物,将其拉进城内。当晚,一群希腊士兵从马肚子里溜出来,为其战友打开了城门,进而将这座睡梦中的城市洗劫一空。
时间过去了差不多3000年,如今,特洛伊木马是指看似无害但实际上却含有恶意代码的软件。安全公司不断开发新的测试方法来检测这些代码的威胁性。然而,木马还有另外一种变体——“硬件木马”,它刚刚开始受到关注,且被证明更难破解。
硬件木马正如其名字一样:仅是对集成电路作的一个小修改就能干扰芯片的运行。狡猾的攻击者通过适当的设计来修改芯片,使其在关键时刻失效或生成错误的信号。攻击者还可以通过添加一个后门来获取密钥、密码或芯片数据。
人们完全有理由担心。2007年,叙利亚的一个雷达未能对一次即将到来的空袭发出警报,据说问题就在于加在系统芯片上的后门。其他有关添加电路的严重指控也时有发生。有关假冒芯片的报道呈爆发性增长,使得人们对全球集成电路供应链的可信度产生了质疑。
即使类似插曲已经演变成灾难,我们还是不知道木马是怎样起作用的。实际上,即使发现了任何具有潜在威胁的硬件木马,这些消息也不会被公之于众。不过有一点很清楚,那就是被入侵的芯片如果放到恰当的位置,就能破坏反导系统,将我们的个人数据向全世界公开,或者让一个电厂甚至大面积的电网崩溃。
现在大多数研究还仅仅停留在问题的严重性方面,但解决方法已经开始浮出水面。2011年,美国情报高级研究计划局(IARPA)启动了一个新项目来探究生产可靠芯片的方法。作为该项目的一部分,我们在斯坦福大学的团队与其他研究团队一起,正致力于让集成电路的设计和制造方法作出根本性改变。
如今,我们试图通过密切关注芯片制造地点来防范硬件木马,通过限制芯片制造商的授权来限制恶性事件的发生率。但若该研究成功,则任何人都可以在他们喜欢和相信不会发生篡改的地方设计和制造芯片。更极端点说,我们的研究可能让有木马的芯片也能正常使用。
━━ ━━
现在的芯片设计和制造非常复杂和昂贵,仅靠一个公司难以制造出来。一个公司可以构思和推销其集成电路,但其他公司却经常为敲定设计作出重要贡献,另外一些公司则可能对芯片的制造、包装和配送发挥了作用。
既然有这么多公司参与进来,那么就有很多机会在硬件上做手脚。最自然的一个开始就是芯片的起始设计阶段,如今使用精密的计算机辅助设计(CAD)软件就可搞定。这些CAD工具是由经常与芯片制造商密切合作的专业公司来开发的。工具中通常包含几百万行代码,且更新很快:几乎不间断地添加新算法来协助人们更快地设计出能耗更低的电路。原则上,在数十万甚至几百万行代码中,悄悄添进去几行以改变硬件设计也很容易。有好多地方能这样做。首先,常规的电路模块,如用来处理加密和解密数字的加速器,经常就是由第三方来设计的。
另一个集成电路明显可以被修改的时段是制造过程。这一问题几十年前还不怎么令人担心。那时的芯片制造设备比较廉价,各大公司可以在自家工厂里生产自己的芯片。但如今,一个新的芯片工厂造价高达100亿美元,同时研发成本也在持续上升。由于这一先期投入太高,大部分芯片制造商现在都依赖位于中国内地及台湾、韩国和美国等国家和地区的几个外部晶圆代工服务,这些代工厂专门负责实施硅设计。尽管没有理由怀疑这些代工厂会添加恶意硬件,但也不能排除它们对设计进行不合要求的调整的可能性,这种调整可能会修改部分或者整批芯片。
当然美国国防部也意识到了这些漏洞。为协助解决这些问题,它的“可靠代工厂项目”给出了经认可的代工厂名单以及供应链上的其他节点。允许生产这些“可靠”芯片的一系列代工厂基本上都限制在美国境内。这也就限制了对最先进芯片的获取途径;许多可靠的美国代工厂服务由于无法维持其投资,其芯片生产工艺要比当前最前沿的工艺落后10年甚至更多。而且,美国国防部的项目主要集中在武器和航空电子等应用的军事芯片上。用在医疗计算机系统和核电厂等非军事应用的集成电路通常在海外制造,因此供应链审查级别也不同。
━━ ━━
理想状态下,我们想找到一种简便、快速又便宜的方法来发现芯片内是否被植入硬件木马。我们会找到一种什么样的方法呢?研究者还在寻找可能出现的硬件木马攻击类型,但很显然,它们很难被探测到。
2008年在伊利诺伊大学香槟分校所做的一个实验中,研究者设计了一个能够进入芯片内存特殊区域的小后门电路。这种木马可被用于更改恶意软件的进程标识符,这样攻击者就能按照自己的意愿操作和存取任何数据了。植入这一木马仅需在芯片原有的180万个晶体管基础上再增加不到1000个,比例仅约为0.05%。这样微小的调整可能是意料之中的事:它不需要额外添加多大的电路系统就能对芯片造成严重的破坏。事实上,它可能不需要添加任何额外的电路。研究表明,设计中即使只对现有晶体管的电性能作出微小的调整也会影响安全性。
那么如何发现电路发生了改变呢?你可能认为只要拿芯片成品放到显微镜下观察就行了。在上世纪70年代早期这种做法还可以想象,那时英特尔刚推出其4004微处理器。4004共有大概2300个晶体管,每个直径约为10微米,还能通过光学显微镜观察到。然而,如今的集成电路却完全是另一副模样,轻松包含几十亿个晶体管,每个大小还不到4004处理器中晶体管的百分之一。尽管利用电子显微镜还可能近距离看到它们,但过程却是破坏性的。要观察到晶体管层,必须得用化学或物理方法清除附在晶体管上、连接各部分的金属层。
这一问题最直接的解决方法就是选取有代表性的芯片样品进行破坏性检查;若其中没有木马,即可得出,这一批次中所有未测试的芯片也无木马。但这样的结论也无法保证其可靠性;攻击者可能只在一部分芯片中植入木马。
于是,研究者们正在探求其他测试方法。其中一个想法是向不同电路发送不同的输入信号,然后将得出的输出数据或信息通过电路所用时间与芯片正常运行所预期的结果加以比较。这种质检方法可在芯片制造后使用,可能会探测出木马。但这种方法不能用于持续性的芯片监控,因此无助于发现那些几个月或几年后才会彻底激活的木马。
位于纽约约克敦海茨的IBM托马斯·J·沃森研究中心的研究人员一直在研究一种探测此种间断性木马的方法。用这种方法从一批芯片中选出一部分进行检测,以便根据其能耗、温度和电磁发射等特点创建其“指纹”。想法就是木马可能会影响这些也叫作“侧信道输出”的指纹参数,即使木马并未激活;然后利用统计分析找出离群值,或者拆除有指纹的芯片并在电子显微镜下查看,来确保不含木马。若通过测试,指纹即可被用来测量批次中其他芯片的健康状况;若一个或多个指纹不匹配,则表明存在木马。
这一技术也有其自身缺陷。比如,它无法探测到微小的电路修改,如添加含有几个晶体管的单一异或门。这是因为即使是健康芯片的晶体管和金属配线,其物理维度也呈现出变化。这些变化会依次改变晶体之间的电气和热特性,所产生的噪声可轻易淹没微小木马所产生的信号。
成像可能有助于发现更小的木马,一些研究人员还未放弃这个办法。2011年,由南加州大学信息科学研究所的迈克尔·巴久拉(Michael Bajura)所领导的一个小组报道了一种无须拆解芯片的成像方法。该团队并没有使用电子显微镜(因其只能对物体表面成像),而是利用X射线从不同角度穿过芯片。将得到的2D投影拼接在一起,即可创建该芯片的高清3D图。这一X射线显微镜的分辨率可达约30纳米,应该能发现现今所用的最先进芯片上的硬件木马。但遗憾的是,放射仍会造成损害,而且从动辄十几亿个晶体管中找出芯片初始设计的偏差耗时耗力。
━━ ━━
这些挑战迫使美国政府考虑采取更为严厉的措施,即改变芯片制造工艺本身。这一方法称之为“分离制造”,顾名思义,就是将芯片制造分为两步。首先,由最先进的代工厂在“前段制程”中生产出最小单位的芯片特征——晶体管层,然后是最精密细致地连接晶体管的几层金属线中的第一层(或者也许是前几层)。第二步是将芯片运到审查过的、可靠的代工厂来完成后续工艺。这个相对没那么先进的代工厂将会完成芯片后段——芯片金属配线上相对没那么精细层面的连接工作,最终连接到外部世界。
其中的想法是,若只有芯片的头几层是在不可靠的代工厂中生产的,芯片看起来就像一堆随意连接的晶体管,代工厂的工人们也不太可能特别了解芯片的工作原理。这种不理解也就导致有所企图的攻击者很难设计出能逃过检测的木马。
原则上,分离制造可能是两全其美的:可使芯片制造商利用不可靠代工厂先进的制造能力且无须披露芯片的细节。带着这种想法,IARPA于2011年启动了一个称之为“可靠集成芯片”的新项目,旨在探索分离制造的方式。
IARPA的项目专门为了解决代工厂植入木马带来威胁的问题。但实际上,我们已经设计出了分离制造的扩展方法,且我们认为能完全解决这个问题——既解决代工厂可能植入木马的问题,又解决了设计阶段植入木马的问题,而这是仅靠分离制造无法解决的问题。
当然,实施这种保护是有成本的,即要考虑晶体管的数量问题。在基础层面,我们的方法是在每个芯片上建一个新电路,这样即使在芯片购买和安装后也可进行持续监控。这一电路所执行的任务称之为“并发错误检测”,在容错计算中已被应用数年,主要是为了检测硬件相关的错误,提升高性能计算机的可靠性。
并发错误检测通过芯片上大块或多块电路工作。实现有效的错误检验设计的窍门在于找到证明电路块运行正确的经济的办法。通常是通过设计一个与该块并行运行的电路来完成此目的。该电路执行运算快捷方式来计算电路块的输入数据。若设计得当,将生成与电路块正常运行时所产生的输出具有相同特性的结果。
比如,广泛使用的一种检验方法是利用奇偶函数,即显示计算按给定时间间隔所产生的1的数量是偶数还是奇数。若在检验电路的输出上所执行的奇偶函数结果与在电路块的输出上所执行的结果匹配,则该电路块很有可能是无错的。若不匹配,则表明出现了错误。
这一方法对于检测随机误差十分奏效,但面对精心设计的木马则可能会失效。比如,对用来保护电路块的奇偶校验很了解的狡猾攻击者可能会设计一种倒装多个输出位数的电路,以便保留生成的1的数量,从而掩盖木马的存在。
为防止此种欺骗方法,我们设计了两种掩盖检测函数性的办法。第一种是改变检测器设计。我们构想出奇偶函数的变体,称之为“随机奇偶性”。普通的奇偶函数需要10个比特,并计算其间1的数量。而我们的方法是每个检测电路都被配置成对10个比特进行随机取样,每组或许仅取样第2个、第5个、第7个和第8个比特。芯片设计过程中检测的样本集也是随机选择的。最重要的是,检测电路的配置可独立设计,与芯片的其他部分分开,这样可有助于限制设计阶段的篡改。
我们方法的第二部分是通过与程控开关建立一些连接来模糊代工厂里检测电路的功能,这些开关在芯片生产完成后才能设置。利用这种方法就能让制造芯片的团队不清楚检测电路是如何设计的,从而很难想出修改电路的方法。
我们利用一种称之为“可变电阻式内存(RRAM)”的内存来制造这些开关。一个RRAM单元包括两个金属层和夹在它们之间的一个绝缘层。由于选择了正确的绝缘材料,RRAM可在高低电阻状态间转换,且电压很低,因此即使在无供电情况下,也能保持电阻状态,这就意味着它能发挥可配置连线的作用。我们只要施加一个电压,即可按需断开和接通电路。
程控开关本身并不是什么新事物;在电视机机顶盒、汽车和医疗设备中能发现许多芯片采用现场可编程门阵列(FPGA),它是一种标准化电路,在离开生产线后,通过在基于晶体管的内存单元中进行编程赋予其功能。但对此应用,RRAM则更有吸引力,部分原因是其更加小型、紧凑。我们已指出,若FPGA内存使用含有一个晶体管和两个RRAM设备的单元,而不是常见的6个晶体管的形式,则芯片区域的面积可减小40%,能耗可降低28%。此外,与传统的基于晶体管的内存不同,RRAM可被放置在芯片晶体管活跃层顶上的金属连接之间,也可在制造金属层的过程中随时插入,即使不使用分离制造也可以。
我们于2012年启动该项目。在最初的阶段,作为概念验证,我们通过IARPA的项目利用0.13微米技术来制造我们设计的芯片。晶体管和基于晶体管的检测电路连同第一金属层在新加坡的格罗方德半导体股份有限公司进行生产。其他金属层在IBM位于佛蒙特州伯灵顿的工厂添加。然后我们构建RRAM和最后一个金属层。
这一流程生产出一些用来执行数据压缩的加速器和FPGA。我们实验室的研究生托尼•吴(Tony Wu)和其他成员将这些芯片安装到一个电路板上,该电路板连接着一台计算机,用来运行测试和模拟攻击。结果表明,我们建在加速器里用来与压缩过程同时运行的检验电路仅占用了芯片区域的1%,且速度一点也未减缓。通过修改不同电路块的输出,我们还模拟了芯片上的各种木马攻击。芯片的检测电路能探测出1000万个模拟的硬件攻击中的约99.9998%。
这一方法可探测出那些直接修改电路运行的木马,甚至能找出“重放”攻击——这些攻击的实施是通过记录有效的电路块输出、然后在攻击时重新发送以造成一切正常的假象。但检测电路也有局限性。它们能采集通过芯片的正常输入-输出渠道来传输的数据,但无法检测到被动提取信息、然后通过添加的射频电路将信息无线传输给第三方的木马。我们现在也正在探索针对这类攻击的保护措施。
即使不使用分离制造,我们检测电路的设计方法和程控RRAM也有助于增加潜在攻击者谋划硬件攻击的难度。但我们认为,无论使用怎样的策略防止篡改——即使将分离制造、测试和破坏性成像结合起来使用——都很难完全排除芯片在出货前含有硬件木马的可能性。小电路太容易隐藏了。
因为我们设计检测电路是为了持续监控芯片,所以能做到警惕攻击,但却无法阻止其发生。因此现今的重要挑战就是要找出其中一个电路检测到实际木马攻击时的应对办法。仅靠重新启动从而将下一次的攻击企图推迟数月甚至数年就够了吗?我们能否借用诸如检验点等纠错技术在适当的时间间隔内保存数据,从而添加电路使芯片恢复呢?我们是否应该添加更多的芯片到设备中以防一个芯片有问题,并在关键的控制系统中建立更多的冗余来降低木马出现的可能性?
随着硬件木马的防护技术日渐成熟,这些问题将变得更具针对性。我们应该考虑如何改变半导体整个生态系统以使芯片的供应链更加安全。分离制造虽然有帮助,但也大幅增加了芯片的成本和流程的物流复杂性。或许需要激励措施和监管来说服芯片制造公司和代工厂接受它。
解决硬件木马的威胁需要作出艰难的决定,并对芯片制造的处理方式进行彻底改变。这也意味着我们不得不重新定义信任的内涵。但有了正确的方法,我们即可让攻击变得罕见且危险性降低,以及确保那个最著名的特洛伊木马仅是古代的历史故事吧。
作者:Subhasish Mitra
H.–S. Philip Wong
SimonWong
>>>本文为原创,转载请回复。<<<
往期推荐