您的FPGA设计方案 够安全吗?

本文作者:admin       点击: 2003-09-01 00:00
前言:
在投入数月之久的设计工作后,最令人害怕的莫过于辛辛苦苦的设计成果失窃。只要您运用Xilinx提供的解决方案,今后就不再需要「locks」、「fuses」、「antifuses」等防护设计,安心高枕无忧。

在全球各界愈来愈注重安全与恐怖攻击之际,我们不由得担心起设计与产品的安全。您的IC防护够安全吗?别人是否能窃取您芯片设计内容?有没有会被别人复制的可能?逆向工程(Reverse engineering)会不会偷取你的创意?

以Xilinx为例,目前所有Xilinx组件(包括FPGA与CPLD)都已经搭载了健全的安全机制,因此窃取设计内容几乎是不可能的事。Xilinx的Virtex-II Pro™ Platform FPGA中内嵌先进的Triple DES (Data Encryption Standard)安全技术,此项安全技术,并不是牙签就能打开的祖母级大锁能够相提并论的,Triple DES运算法使用的安全技术正是全球金融机构每天用来交易数兆美元的保密科技。以下文章便是以Xilinx为例,示范如何保护您宝贵的专利设计,与您分享设计安全的细节。

设计的安全

若以设计窃贼的立场来看,世界上没有绝对的安全。若给予足够的时间与资源,有决心的窃贼能突破任何障碍。

因此,我们的目标是让破解障碍的难度提升至最高。让防护措施提升至最周密的等级。对于绝大多数的窃贼而言,突破Xilinx的防护网几乎是不可能的任务。为帮助您了解我们是如何办到的,首先,我们先来看看攻击的三种层级。

攻击的类型

IBM™ 于1991年发表的一份文件中定义出三种攻击的类型。虽然这份文件有点过时,但其内容仍具有极高的参考价值。(Abraham, D., G. Dolan, G. Double, and J. Stevens, 1991. Transaction Security System. IBM Systems Journal 30(2): 206-229.). 


1. 第1类:拥有极少资源的外界人士或好奇份子所进行的攻击。大多数的骇客属于这类,他们对系统的私密内容没有兴趣,仅是希望能够将资源占为已用。这类攻击看似无害,但此类攻击若将不当取得的信息在因特网上公开,就可能会造成严重的全球性安全威胁。

2. 第2类:来自于能存取部份资源的知识人员。例如像大学学生以及习惯在网络上搜寻的企业员工。但这些由不当散布的信息通常较为深奥,只对特定人士才有用处。

3. 第3类:这类攻击者是组织性的专业团队,能公开破解任何防护技术。如美国的FBI、CIA、NSA、及大型商业活动或政府机构,它们拥有庞大资金进行大规模的逆向工程活动(Reverse engineering)。

综合这三类攻击来看,第1类与第2类的攻击可加以防范,一套防护完备的IC就能协助设计业者达到这项目标。不过Xilinx Virtex-II Pro FPGA还多了一套的重要架构,在防御第1类与第2类外,还能成功阻挡大多数第3类攻击。

可编程组件的安全性

窃取设计内容的行为可分成两大类—复制(cloning)与逆向工程(Reverse engineering)。复制是完全不改地重制设计内容。逆向工程是过程较复杂的偷窃,先撷取出建置在组件内的设计内容后,再进行改良、修改及掩饰的手续,让它看起来不像是原本所窃取的内容。
ASIC与建置固定功能的ASSP容易遭受攻击,因为每组通孔/连结都代表真实的逻辑。入侵者可藉由打开芯片的封装,观察通孔并破解设计内容。有时业者会加入伪装的逻辑来混淆攻击者,但芯片仍旧面临被破解的风险。一般而言,IC的内容愈固定,被破解的风险就愈高。此外,在固定内容的IC中,若您怀疑某套芯片可能被破解的风险,其它所有芯片亦可能被破解。但是可编程IC不同,若某款芯片被破解,其它芯片仍可重新程序化。

可编程组件(FPGA与CPLD)有两种类型:其一为非挥发组件,如反镕丝/快闪 (antifuse/flash) 组件;其二为挥发性组件,如SRAM组件。两者有许多差异,各自有其独特的优点。

在安全的讨论上,我们仅探讨可编程及配置位的安全性。非挥发组件能维持组态位,故每次启动时不须从外部PROM加载位数据。以往外部PROM经常造成安全上的漏洞,让非挥发性组件占尽上风。但在2000年业界第一套安全SRAM FPGA – 支持Triple DES加密技术的Xilinx Virtex™-II Platform FPGA问市后,非挥发性组件的优势已不复存在。

非挥发(Nonvolatile)可编程组件

现今厂商推出的非挥发性可编程组件(PLD),包括了FPGA与CPLD。这些组件提供测试模式,能用来观察内部维护,藉此提升效能,并提供读回模式,供顾客用来检视可编程位。

然而,在这两种模式下的组件都有可能会被攻击。为了预防这些攻击,固定的安全位会透过反熔丝或快闪闸极以避免组件在生产后再被外界进行读写的动作。但这样的防护措施还是有其缺点,若窃贼在一组有保护、另一组则没有保护的两组相同的组件中建置一个简单的电路,再以感热照片(如图1所示)比较两组组件,则可利用安全位固定的位置研判出安全位,再以高密度光源解除芯片上的安全位,让芯片允许读回作业。如此一来窃贼就能动用组件中所有的电路。

随着可编程组件体积变大,组态比特流的容量亦逐渐增加。当金钥(key size)体积亦随组件尺吋的改变而增加,安全位会随之形成一种固定的模式。因此,若其中一种组件被破解的话,所有密度的组件就会被破解,这并不是危言耸听,事实上的确如此。

Xilinx CoolRunner™-II CPLD运用快闪技术,但却与其它非挥发组件不同。由于CoolRunner-II CPLD的读/写保护位被多重金属层层包覆,并混在编程位里面,所以被窃难度大大提高。
安全位经过特别设计,须透过一组特定序列的讯号才能设定与清除。此外,组件加入四或五层的金属(如图2所示),避免上层芯片在雷射/电子刨削处理后曝露出电路内容。

CoolRunner-II CPLD的两项重要技术:DualEDGE及DataGATE,此两种技术能运用双重数据运作、及锁定内部巨单元(macrocell)控制的输入讯号等方式混淆窃贼视听。此外,CoolRunner-II CPLD著名的超低功耗也让窃贼难以在感热照片中找到任何蛛丝马迹。(有关CoolRunner-IIB的详细安全信息,请参考网址www.xilinx.com/ publications/whitepapers/wp_pdf/wp170.pdf.的白皮书:CoolRunner-II CPLDs in Secure Applications)

挥发性(Volatile)可编程组件

在挥发性SRAM FPGA关闭电源后,组态位就会清除,故需透过外部内存储存位数据。因此,将一颗外部PROM放置在FPGA旁边变成一种很典型的设计。不过,就安全上来说,PROM与FPGA之间的位传输就变成另一个需要考量的重点。
为解决这些问题,Xilinx在三年前将Triple DES加密技术嵌入至Virtex-II FPGA中。如今最新的Virtex-II Pro FPGA更嵌入第二代的新技术。透过这项机制,PROM储存加密后的位数据,传至FPGA后才会进行解密,而且系统也不允许读回(read-back)作业。任何对FPGA窃取的动作都会让设计内容完全清除,窃贼最多只能截取PROM与FPGA之间的传输内容,但得到的全都是已经Triple DES加密后的资料。

值得信赖的安全

极富盛名的加密机制—Triple DES,保护全球金融机构每天数百万笔、总额高达数兆美元的交易。

这套标准亦应用在Xilinx FPGA中,用来保护您的设计。虽然旧版DES曾被破解,但Triple DES至今仍尚未被破解。

Triple DES是美国标准与技术研究院 (National Institute of Standards and Technology)与美国标准协会(American National Standards Institute) X9.52所规范的标准。AES (Advanced Encryption Standard)则是下一代的加密技术,预备在Triple DES被破解后成为新的加密标准。加密技术的专家研发未来新版的AES,都是为了防范全球所有骇客的攻击。在数兆美元、数百万笔金融交易的吸引下,Triple DES每天面对数千位骇客各式各样的攻击,至今仍维持严守防线、坚若盘石。因此Xilinx在其旗舰Virtex-II Pro 系列产品上应用Triple DES加密技术。

Triple DES是一种对称式加密算法,其加密与解密的金钥(keys)是相同的。数据的安全完全依赖金钥,和RSA或PGP依赖公开金钥(public key)方式不同。Triple DES使用三组金钥,并对三组金钥重复进行加密演算以提高安全性。每组金钥为56位,每次加密64位的数据区块。有关Triple DES标准的详细信息请参考网址www.itl.nist.gov/. 

Virtex-II Pro FPGA采用Triple DES 安全机制

Virtex-II Pro 组件在芯片中内建加密机制,负责保护组态位数据以及FPGA。您可利用一组金钥在Xilinx软件中对位进行加密,之后Virtex-II Pro 组件会使用同一组金钥将流入的位数据进行解密(如图3所示)。
为将金钥编写至组件中,组件须切换至金钥存取模式,在这个模式下系统会自动清除FPGA中的数据,包括旧金钥以及实际的位数据。这种作法亦能防范攻击。

在组件根据金钥进行加密后,即可配合加密后位进行设定。当加密后位被编写至FPGA后,就不能进行重新设定、部份重设、或有意或无意的读回修改等动作,连窥视也同样不被许可。在遭窃时,FPGA的设计内容会被自动删除(注:非加密的位数据在编写入FPGA后,可利用金钥进行测试与除错)。

金钥置于组件角落中某个Triple DES区域里。当机板关闭电源后,系统会运用一组外部电池来储存金钥。任何1至4伏特的标准电池都可使用,并能维持长达15年的使用寿命。

非挥发PLD安全位能取消组件的读/写能力,而Virtex-II Pro的Triple DES则透过加密标准提供真正的安全。即使Virtex-II Pro FPGA中储存Triple DES区块的位置被泄漏出去,就算芯片的内容没有完全删除,窃贼还是不能窥探金钥,。

对可能的窃贼来说,九层的金属保护构成另一个防护网。若窃贼想以感热相片找出Virtex-II Pro FPGA中的安全位则必定失败,因为这种技术不是用硬件线路来储存安全位。

每套Virtex-II Pro组件皆提供六组不同的金钥,这让系统能支持两组Triple DES金钥。您可同时使用两组金钥进行编程。这种作法甚至能防范前述第三类的攻击。举例来说,若第一组金钥已被破解,您仍可利用第二组金钥传送一组位,从远程处对组件重新编程。

此外,我们许多顾客运用这项技术发展新的经营策略与定价模式,用一组金钥传送位数据,以启动低价位/低功能的服务,并利用另一组金钥启动高价位/多功能的服务。

输出之考量

美国商业部严格管制各种加密的标准。由于芯片中的解密器仅能对流入的位数据进行解密,且不能作为独立的设计区域,故Virtex-II Pro FPGA被归类为现场可重编程逻辑组件(3A001.a.7),与所有其它FPGA相同。软件则被归类于ECCN# 5D002项目,除了被美国商业部禁止的国家之外,可输出至全球各国。如此您系统中Virtex-II Pro FPGA的输出状态在日后皆不须修改。

结论 

Xilinx FPGA与CPLD为您的设计提供无与伦比的安全,协助您达成设计目标,并维持最高的设计安全性。致力保护客户的设计,是Xilinx成为全球最大可编程逻辑组件厂商的原因之一。Xilinx公司致力提供效能最高、成本最低的解决方案,并拥有最佳的设计安全保护,让顾客高枕无忧。