1 导言
跟着电路规划不断扩大,以及竞赛带来的上市时刻的压力,越来越多的电路规划者开端运用规划杰出的、经重复验证的电路功用模块来加速规划进程。这些电路功用模块被称为IP(Intellectual Property)核。IP核由相应范畴的专业人员规划,并经重复验证。IP核的具有者可经过出售IP获取赢利。运用IP核,规划者只需做很少规划就可完结所需体系。依据IP核的模块化规划可缩短规划周期,进步规划质量。现场可编程门阵列FPGA具有可编程特性,用户依据特定的运用定制电路结构,因而其处理速度大大超越通用处理器。与ASIC比较,FPGA的缺陷是在供给灵敏的可编程一起,则以芯片的面积、功耗和速度做为价值。
近年来,单个FPGA完结电路规划不断扩大,规划者能够在单个FPGA上完结一个完好的体系(System on Pro—grammablb Chip,简称SoPC)。IP核的出现为SoPC的规划供给极大便当,运用IP核,规划者经过模块化规划。轻松快速地完结体系杂乱的功用。
当规划者从第三方购买IP,需求必定的维护机制避免规划者在非授权IP核运用,以维护IP核一切者的利益。一起,关于规划者完结的规划,也需求相应的维护机制避免规划被不合法仿制、盗取或篡改。为此,提出一种结合电子规划自动化(Electronic Design Automation,简称EDA)软件和FPGA的IP核维护机制。经过在EDA东西中参加维护机制避免规划者非授权运用IP核,在FPGA中参加维护机制避免规划被不合法仿制、盗取或篡改。
2 EDA软件中完结IP维护
FPGA的规划开发流程首要包括行为归纳、逻辑归纳、技能映射和布局布线。一般状况,规划者运用硬件描绘言语(如VHDL,Velilog)描绘电路,然后由EDA软件对其处理。
在EDA软件处理流程中,行为归纳把算法级或寄存器传输级(Register Transfer Level,简称RTL)的电路描绘转换为门级的网表,逻辑归纳优化门级网表,技能映射是将优化后的网表映射为FPGA中的详细完结(查找表),布局布线东西则依照必定的点评规范来确认终究的电路单元在FPGA中的方位,并运用连线资源完结电路单元间的衔接。
假如规划者运用第三方供给的IP核完结所需的规划,为了避免规划者盗取IP核后,对其修正,并将其据为已有,需求有相应的安全机制来维护第三方规划的IP核。
在EDA软件的处理流程中,EDA软件有必要能够正确解析规划,才干完结处理,因而规划自身关于EDA软件是揭露的。这儿假定EDA软件是可信的。具有IP核维护机制的EDA流程如图l所示。第三方规划的IP核要先向EDA软件的开发用户购买RTL级的IP核后,第三方将该IP核先用EDA开发商的揭露密钥对该IP核加密,再用规划者供给的揭露密钥加密。这样,规划者尽管得到了第三方的IP核,可是并不知道EDA软件开发商的私钥,因而规划者无法知道该IP核中RTL级的描绘。
规划者可将购买的IP核看作功用已知的黑盒子,在运用黑盒子和其他的电路模块完结电路描绘之后,规划者将规划导入EDA东西。EDA东西别离运用规划者输入的密钥和EDA开发商的密钥对加密的IP核进行两次解密,然后得到整个规划完好的RTL表明。然后,EDA东西能够对规划进行行为归纳、逻辑归纳和技能映射,终究生成技能映射后的网表。假定用于归纳和技能映射的东西是由某个EDA开发商供给,而FPGA布局布线东西是别的的EDA开发商,例如由FPGA的出产商供给。
在将优化后的门级网表写入文件之前,该EDA东西先用自己的私钥对网表进行加密处理,再用布局布线东西供给商的公钥对网表进行加密处理。这样规划者仍是无法查看到归纳和技能映射后的网表,然后避免了规划者用逆向工程的办法来盗取IP核。
布局布线东西先用自己的私钥对加密的网表进行一次解密,再用前端的EDA东西开发商的公钥进行第2次解密,然后得到解密后的网表。运用该网表,布局布线东西能够完结规划在芯片上的布局布线,终究生成用于FPGA装备的bit-stream文件。
3 FPGA中完结IP维护
在EDA软件生成了用于装备FPGA的bit-stream后,将bit-stream加载到FPGA中,就能够完结对FPGA的编程,FPGA完结规划者希望的功用。FPGA分为非易失性(Don—volatile)和易失性(volatile)两种,前者包括依据反熔丝技能和Flash技能,后者首要是依据SRAM技能。关于依据SRAM的FPGA,由于其装备信息在掉电之后就会丢掉,因而一般需求用PROM存储FPGA的装备信息,以使FPGA在从头加电后能够再次依据这些信息进行装备。FPGA的装备信息便是规划在FPGA上的终究完结,因而需求相应的技能手段来维护这些装备信息。
因而FPGA的bit-stream是二进制信息,它是依赖于规划自身和详细的FPGA结构。一般来说,bit-stream的生成东西都是由FPGA的出产商供给。FPGA的出产商尽管会给出一些bit-stream生成东西的运用信息,但一般都不会揭露FPGA的bit-stream编码格局。由于不知道FPGA的bit-stream文件格局,现在没有发现对FPGA的编程bit-stream文件成功完结逆向工程,所以绝大多数的FPGA运用者都不考虑FPGA中的规划会被破解。
尽管bit-stream文件难以被逆向工程办法破解,但假如这些bit-stream被仿制,运用这些bit-stream,再运用相同的FPGA,竞赛对手就能够出产相同产品。也这是说,规划仍是有或许被偷盗。因而,需求相应的安全机制来避免bit-stream被仿制。针对依据SRAM的FPGA,下面评论两种防备机制。
3.1 一次加载
确保FPGA的编程bit-stream文件安全的一种简略办法便是在安全环境下对FPGA编程后,不再向FPGA装备任何器材,而是对FPGA继续供电。由于一切的可编程逻辑设备都具有保密设置,可阻挠从FPGA中读取编程bit-stream文件,并且编程bit-stream文件也不会暴露在器材之外,这种办法既能够使FPGA的规划不被偷盗,也不被篡改。这种维护机制的安全级别与依据反熔丝技能或许其他的非易失性的FPGA类似,可是这种办法的缺陷是需求对体系继续供电。
3.2 bit-stream加密
Bit-stream加密技能是对FPGA的编程bit-stream文件加密处理,加密进程是EDA软件的终究一个处理过程,如图1所示。加密后的bit-stream存储在FPGA的装备器材中,在装备FPGA器材前,要先把加密的bit-stream写入FPGA中,然后进行解密,再用解密后的bit-stream对FPGA进行装备。这一办法既增加对bit-stream文件逆向工程的难度,又阻挠编程文件被不合法仿制。加密选用对称密钥加密算法,密钥由规划者指定。规划者需求将密钥存储到FPGA,FPGA中的解密功用模块能够用这一密钥来对bit-stream解密。
假如终究生成的bit-stream文件是加密的,FPGA就需有一个专用的片上解密器和专用的暗码存储器。为了使FPGA既能支撑加密的bit-stream,又能支撑未加密的bit-stream,bit-stream文件包括有未加密的指令,这些指令可用于发动和解密装备数据。假如bit-stream是加密的,FPGA在真实编程装备前,需求先用存储的密钥对其解密。这样,在FPGA运用进程中,尽管进犯者很简单从装备器材和FPGA的衔接线路上获取bit-stream,可是由于这些bit-stream是加密的,即便把这些bit-stream装备到相同的FPGA上,但由于不知道解密的密钥,FPGA也无法对其解密,然后无法装备FPGA。运用这种维护办法,进犯者不知道密钥就无法仿制FPGA中的规划。
进犯者或许转而企图从FPGA中盗取密钥。在FPGA中,密钥可存储在RAM中,经过芯片上的一个电池为其供电。假如堵截电源,则存储信息即密钥丢掉。为了盗取密钥,进犯者需求翻开FPGA的封装,打磨掉多个金属层,然后用扫描电子显微镜(SEM)扫描表明密钥的数据位。在进行这些操作的一起,还有必要坚持对存储密钥的存储器供电。明显这种进犯是难以完结的。
此外,还能够在FPGA内部规划一些逻辑来约束对装备和密钥的拜访。例如:当载入一个加密的bit—stream文件时,只能进行独自的、整个芯片的装备;在加载了加密的装备流后,就不答应再读取其中信息;企图读取或写入密钥就会铲除一切的密钥和一切的装备数据;解密后的bit-stream在用于装备操作前,有必要要经过数据的完好性查验。经过这些约束,使得进犯者无法读取解密后的bit-stream,也无法取得FPGA存储的密钥,然后阻挠进犯者仿制FPGA中的规划。
4 结语
跟着电路规划规划的不断扩大,越来越多的规划者开端运用IP核来进步规划速度和体系可靠性。提出在EDA东西中参加维护机制,避免IP核被盗取,以及在FPGA中参加维护机制避免终究在FPGA上完结的规划被不合法仿制。这种机制的完结前提条件是要求FPGA的出产商和EDA东西的开发商都是可信的。如安在两者不可信的状况下完结IP核维护,还需进一步研讨。