防止集成电路和知识产权核剽窃的动态混淆封装接口的制作方法

文档序号:16070518发布日期:2018-11-24 13:09阅读:266来源:国知局

本发明涉及一种在集成电路内部的用来防止集成电路和知识产权核被剽窃的动态混淆封装接口,更确切的说,是一种适用于在集成电路供应链中防止攻击者通过过量生产或者非法使用知识产权造成集成电路和知识产权核被剽窃的动态混淆封装接口,属于集成电路芯片知识产权及安全性保护技术领域。

背景技术

集成电路(integratedcircuit)是一种微型电子器件或部件。它是经过氧化、光刻、扩散、外延、蒸铝等半导体制造工艺,把构成具有一定功能的电路所需的半导体、电阻、电容等元件及它们之间的连接导线全部集成在一小块硅片上,然后焊接封装在一个管壳内的电子器件;其中,所有元件在结构上已组成一个整体,使电子元件向着微小型化、低功耗、智能化和高可靠性方面迈进了一大步。集成电路具有体积小,重量轻,引出线和焊接点少,寿命长,可靠性高,性能好等优点,同时成本低,便于大规模生产。集成电路按其功能、结构的不同,可以分为模拟集成电路、数字集成电路和数/模混合集成电路三大类。

在集成电路设计中,知识产权(ip)核指的是用于专用集成电路(applicationspecificintegratedcircuit,asic)或者现场可编程门阵列(field-programmablegatearray,fpga)中的预先设计好的电路功能模块。ip核有三种不同的存在形式:硬件描述语言形式,网表形式、版图形式,即软核、固核和硬核。专门设计ip核的厂商称之为ip核设计者,他们通常主要设计集成电路中的某些模块,而不进行整个芯片的整合。

在现代半导体产业中,产品研发到上市的时间对于最终产品的价格有直接的影响。因此,为了节约时间并降低成本,集成电路设计者通常会尽可能的复用ip核。类似的,半导体制造的开销在集成电路成本中也占很大的比重。建立一条生产22纳米以下工艺的半导体生产线需要50亿美元以上,随着半导体工艺节点不断进步,这一成本还在不断上升。因此,多数半导体公司无法同时进行半导体设计和制造。为了在全球市场竞争,集成电路设计者通常把他们设计好的集成电路外包给外部的工厂进行制造。

现代集成电路产业链起始于ip核设计者,他们设计ip核并以软核、固核和硬核的形式外包给其他集成电路设计者。集成电路设计者主要是对整个集成电路进行功能设计规划,然后将不同的ip核以及其他集成电路功能模块进行整合,形成最终的集成电路芯片设计。最终的集成电路芯片设计有时候也会以硬件描述语言的形式,外包给第三方公司进行逻辑综合和布局布线,以节省开发成本。之后,第三方公司会把最终生成的版图文件返回给集成电路设计者或者直接发送给代工厂进行制造和测试。但是,这一制造流程存在着安全隐患,主要包括ip核和集成电路被窃取、伪造等。例如,集成电路设计者可以在未经ip核设计者允许的情况下私自使用ip核。集成电路制造厂商可能重复使用掩模来制造过量的集成电路、将原始集成电路私自售卖给第三方厂家、以售卖未通过出厂测试的集成电路以获取非法的收入。更进一步,通过逆向工程,攻击者可以提取ip核或者集成电路的网表信息,以便进行伪造。

集成电路测试是用来验证所制造的芯片是否能够正常工作以及是否合格。不幸的是,现有的由代工厂主导的集成电路测试无法避免有缺陷的电路或者侵权的电路进入市场。这些芯片流入市场可能会造成严重的经济和安全隐患。因此,集成电路设计者必须保证芯片的生产和流通的可控性,为了达到这一目的,常见的措施有:

分离制造集成电路:2017年,wangyujie等人在asiaandsouthpacificdesignautomationconference(亚洲和南太平洋自动化设计会议)发表了论文“routingperturbationforenhancedsecurityinsplitmanufacturing”(在布局时进行混淆以增强分离制造的安全性),其中,提到的分离制造集成电路是通过将集成电路的一部分交由不受信任的代工厂来制造,来用来保证芯片制造的可信性。使用这一方法,集成电路的制造通常被分为两个阶段:集成电路的较低层级交由不受信任的代工厂完成,这样集成电路设计者不需要告知代工厂集成电路全部的信息,防止代工厂进行伪造;之后集成电路的较高层级交由受到信任的代工厂完成,并进行测试。这样就可以防止不受信任的代工厂过量生产集成电路。但是这一方法不能防止集成电路设计者窃取ip核的信息,同时根据集成电路较低层级的信息,代工厂可以推断出某些较高层级的信息进而进行伪造。

集成电路加密:在2017年,xieyang等人在proceedingsofthe54thannualdesignautomationconference(第54届自动设计会议)上发表了论文“delaylocking:securityenhancementoflogiclockingagainsticcounterfeitingandoverproduction”(延迟锁定:通过逻辑锁定防止集成电路伪造和过量制造的安全增强技术),其中提到集成电路设计者可以通过集成电路内部的私有密钥来加密集成电路,只有通过集成电路设计者认证的才能被揭密,这样就防止了集成电路的伪造和过量制造。

分离测试:在2014年,md.tauhidurrahman等人在defectandfaulttoleranceinvlsiandnanotechnologysystems(超大规模集成电路和纳米系统中的缺陷和故障容错设计会议)发表了论文“csst:preventingdistributionofunlicensedandrejectedicsbyuntrustedfoundryandassembly”(csst:防止未经授权和被代工厂拒绝激活的集成电路进入市场),其中提到让集成电路设计者参与到集成电路测试中来,代工厂在测试集成电路之前,必须要将集成电路生成的独一无二的密钥发送给集成电路设计者以获取临时激活密钥,然后使用临时激活密钥激活集成电路进行测试,之后将测试生成的所有数据都发送给集成电路设计者进行验证,验证通过后方可拿到集成电路的最终激活密钥进行激活。但是这一测试方法只能用于结构性功能测试,而无法验证集成电路是否进行了正确的功能性测试。

目前针对ip核和集成电路进行的侵权主要有以下几种类型:

未经授权使用ip核:由于现代集成电路非常的复杂,因此,集成电路在设计过程中大量依赖于第三方的ip核来降低开发成本。集成电路设计者可能在未经ip核设计者授权的情况下私自使用ip核。

过量生产集成电路:不受信任的代工厂可能私自生产多余约定的集成电路芯片用于销售,从而损害了集成电路设计者的利益。

出售有缺陷的集成电路:集成电路设计者不能保证代工厂正确且完整的进行了所有的测试。一些存在缺陷的电路可能在极少数条件下不能正常的工作,这些电路在实际使用中是很难被检测出来的,只有出厂进行的结构性测试能够很好的检测这些问题。存在缺陷的集成电路应当被丢弃,但是不受信任的代工厂可能将这些集成电路以集成电路设计者的名义出售给其他人,获取不正当利益,同时损害了集成电路设计者的名誉。

出售未达标的集成电路:未达标的集成电路指的是芯片不能在指定的频率或者电压范围工作,但是在比较宽松的条件下能够正常运行,即质量比较差的集成电路。不受信任的代工厂有可能出售这些集成电路获取不正当利益。

逆向工程:代工厂能够接触到集成电路的设计文件,从而使用逆向工程来提取所要生产的集成电路的网表信息,通常用于窃取ip核的知识产权。

随着集成电路制造工艺的不断进步,集成电路芯片内部的逻辑单元数目剧增,而集成电路芯片的引脚个数却被大大限制,为了尽可能的测试集成电路,以保证产品质量,在集成电路芯片中通常采用可测试性(dft,designfortestability)设计技术。该技术通过在芯片原始设计中插入各种用于提高芯片可测试性的硬件逻辑,使得芯片变得容易测试,从而大幅度降低测试成本。扫描设计是一种当前工业界广泛采用的可测试性设计技术,它可以获得很高的故障覆盖率,实际上已经成为现代芯片设计流程中必不可少的环节。这种设计的基本思想是将待测电路内部的寄存器单元改造为可扫描的寄存器单元(即扫描单元),并分组串接在一起构成扫描链;电路中除去寄存器单元剩余的部分均为组合逻辑单元,称之为组合逻辑网表。在测试状态下从测试设备传输过来的测试激励逐拍进入扫描链中的扫描触发器,全部扫描触发器单元填充完毕后电路进入正常功能状态,捕获电路状态值,捕获到的触发器状态值称为测试响应,测试响应将被串行的移出扫描触发器到达芯片引脚通过和已存储的期望结构进行比较,确定芯片是否包含故障。

集成电路的测试主要分为功能性测试和结构性测试。功能性测试主要是让集成电路模拟正常运行时的状态,检测集成电路在给定的条件下能否按照所设计的目标正常工作;结构性测试主要是利用扫描链,将对集成电路的测试向量扫描输入,进而进行测试。

由于大规模集成电路芯片中扫描链的数目可能远多余芯片外部管脚的数目,因此通常会把测试向量和响应进行压缩,节约外部端口的需求。外部扫描输入的测试向量首先经过芯片内部的解压器,将被压缩的测试向量解压到每条扫描链上;每条扫描链的测试响应经过一个压缩器后由外部管脚输出。因为压缩器和解压器对本发明结构的影响可以忽略,因此在本发明中不予以讨论。

一般来说,集成电路综合工具会自动平衡集成电路芯片中扫描链的长度,使得所有扫描链的长度尽可能接近。

有限状态机是指输出取决于过去输入部分和当前输入部分的时序逻辑电路。一般来说,除了输入部分和输出部分外,有限状态机还含有一组具有“记忆”功能的寄存器,这些寄存器的功能是记忆有限状态机的内部状态,它们常被称为状态寄存器。在有限状态机中,状态寄存器的的下一个状态不仅与输入信号有关,而且还与该寄存器的当前状态有关,因此有限状态机又可以认为是组合逻辑和寄存器逻辑的一种组合。其中,寄存器逻辑的功能是存储有限状态机的内部状态;而组合逻辑又可以分为次态逻辑和输出逻辑两部分,次态逻辑的功能是确定有限状态机的下一个状态,输出逻辑的功能是确定有限状态机的输出。

数字电路根据逻辑功能的不同特点,可以分成两大类,一类叫组合逻辑电路(简称组合电路),另一类叫做时序逻辑电路(简称时序电路)。组合逻辑电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。而时序逻辑电路在逻辑功能上的特点是任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关。

物理不可克隆函数(即physicalunclonablefunction,puf)是一种“数字指纹”,利用内在的物理构造来对其进行唯一性标识,输入任意激励都会输出一个唯一且不可预测的响应。物理不可克隆函数基于在半导体制造过程的工艺误差,不同电路得到的物理不可克隆函数参数各不相同。物理不可克隆函数通常用于对安全性要求较高的应用中。

一次性可编程存储器(即onetimeprogrammablememory),一种存储器类型,意思是一次性可编程,数据写入这类存储器后,将不可再次更改和清除。

线性反馈移位寄存器(linearfeedbackshiftregister,lfsr)是指给定前一状态的输出,将该输出的线性函数再用作输入的移位寄存器。异或运算是最常见的单比特线性函数:对寄存器的某些位进行异或操作后作为输入,再对寄存器中的各比特进行整体移位。赋给寄存器的初始值叫做“种子”,因为线性反馈移位寄存器的运算是确定性的,所以,由寄存器所生成的数据流完全决定于寄存器当时或者之前的状态。线性反馈移位寄存器可以用来生成伪随机数。

非线性反馈移位寄存器(nonlinearfeedbackshiftregister,nlfsr)是相对于反馈移位寄存器(linearfeedbackshiftregister,lfsr)而言的。它们的大体电路逻辑相似,仅仅在于nlfsr的反馈逻辑是由异或门和与门构成的,而lfsr中仅存在异或门。从代数表达式来看,异或门是加法,而与门是乘法。由加法构成的反馈逻辑,其反馈表达式的最高项次数不会增长,而由乘法参与的反馈表达式项次数会增长、并可能超过定义多项式的最高项。

卷积压缩器(convolutionalcompactor)是一种数据压缩结构,可以把多位数据压缩为少数几位,支持压缩比率超过100倍,能够检测输出错误,具有较低的压缩错误比率。

目前基于扫描链的攻击有如下几种:

暴力攻击(bruteforceattack):通过遍历的手段,猜测芯片内部的敏感信息所保存的位置以及值,经过不断尝试从而得到想要的数据。

复位攻击(resettingattack):对于某些通过混淆扫描链来保护扫描信息的方法,使用复位攻击,将所有的寄存器值都清零,然后扫描输出,可以初步判断某些混淆方法的结构。

冲刷攻击(flushingattack):通过不断向扫描链中扫描输出特定测试向量,如全为1或者全为0,根据扫描输出的值,来判断扫描链是否被混淆以及混淆的方法。



技术实现要素:

本发明的目的是设计一种在集成电路内部的用来防止集成电路和知识产权核被剽窃的动态混淆封装接口,更确切的说,是一种适用于在集成电路供应链中防止攻击者通过过量生产或者非法使用知识产权造成集成电路和知识产权核被剽窃的动态混淆封装接口。该结构内嵌在集成电路中,能够对集成电路的输入输出接口加密,使得集成电路和知识产权核只有在动态混淆封装接口解锁后才能正常使用。动态混淆封装接口解锁由集成电路设计者或者ip核设计者控制,因此,能够保证所有的集成电路测试、激活都在集成电路设计者或者ip核设计者的控制之下。

本发明设计一种在集成电路内部用来防止集成电路和知识产权核被剽窃的动态混淆封装接口,集成电路芯片包含组合逻辑单元网表(1c)和n条扫描链,包括扫描链1d1、扫描链1d2……扫描链1dx……扫描链1dn,它们共同构成一个扫描链集合{1d1,1d2...1dn},即扫描链集合1d,其中,扫描链的最大长度为λ;

所述的动态混淆封装接口,其特征在于:

动态混淆封装接口(1a)由功能单元输入封装接口(10a)、功能单元输出封装接口(10b)、扫描链输入封装接口(10c)、扫描链输出封装接口(10d)、有限状态机集合(10e)和混淆逻辑单元集合(10f)构成。

ip核或集成电路每个输入输出端口都有一个三输入异或门,分别属于功能单元输入封装接口(10a)、功能单元输出封装接口(10b)、扫描链输入封装接口(10c)和扫描链输出封装接口(10d)。

功能单元输入封装接口(10a)和扫描链输入封装接口(10c)分别对集成电路或者ip核功能/扫描输入端口进行加密,在未解密时,外部数据无法正确的通过功能单元输入封装接口(10a)或扫描链输入封装接口(10c)输入到集成电路或者ip核内部;

功能单元输入封装接口(10a)和扫描链输入封装接口(10c)中的三输入异或门的三个输入信号分别来自内部密钥寄存器(20d)中的一位、外部密钥寄存器(20e)中的一位和ip核或者集成电路实际的外部输入信号;功能单元输入封装接口(10a)和扫描链输入封装接口(10c)中的三输入异或门的输出信号为实际输入到ip核或者集成电路中的信号;

功能单元输出封装接口(10b)和扫描链输出封装接口(10d)分别对集成电路或者ip核功能/扫描输出端口进行加密,在未解密时,集成电路或者ip核内部的数据无法正确的通过功能单元输出封装接口(10b)或扫描链输出封装接口(10d)输出到集成电路或者ip核外部。

功能单元输出封装接口(10b)和扫描链输出封装接口(10d)中的三输入异或门的三个输入信号分别来自内部密钥寄存器(20d)中的一位、外部密钥寄存器(20e)中的一位和ip核或者集成电路产生的要输出的外部输入信号,功能单元输出封装接口(10b)和扫描链输出封装接口(10d)中的三输入异或门的输出信号为ip核或者集成电路实际输出到外部的信号。

有限状态机集合(10e)合包含m个有限状态机,即{10e1,10e2...10em},这些有限状态机的功能被设计为:连续接收α个正确的输入后就会被解锁,使得输入数据直接通过有限状态机,否则输入数据就无法通过有限状态机。m个有限状态机被随机的插入到功能单元输入封装接口(10a)和集成电路或者ip核输入端口之间,用于增加攻击者破解所述混淆封装接口的难度。

混淆逻辑单元集合(10f)包含p个组合逻辑单元,即{10f1,10f2...10fp},这些组合逻辑单元被随机的插入到集成电路或者ip核内部,用于混淆电路。

混淆逻辑单元集合(10f)包含y个反相器单元,这y个反相器单元被随机的插入到功能单元输入封装接口(10a)和ip核或者集成电路之间,或功能单元输出封装接口(10b)和ip核或者集成电路之间,同时为了防止这些反相器被识别出来,本设计推荐使用德摩根定律,将这些反相器移动到更深的逻辑层次。

动态混淆封装接口(1a)受到内部密钥寄存器(20d)和外部密钥寄存器(20e)的控制,只有当来自内部密钥寄存器(20d)和外部密钥寄存器(20e)的信号使得动态混淆封装接口(1a)输入输出信号完全一致时,所设计的动态混淆封装接口(1a)才会被正确解锁,使用者才能使用ip核或集成电路进行测试或者激活。

本发明设计的是一种在集成电路内部的用来防止集成电路和知识产权核被剽窃的动态混淆封装接口,优点在于:

①所提出的结构支持在集成电路或者ip核在锁定的情况下进行功能测试和结构测试,这样就可以防止代工厂把未达标或者有缺陷的集成电路售卖到市场。

②所提出的结构可以防止集成电路被过量生产或逆向工程。

③所提出的结构同时适用于集成电路和ip核。

④所提出的结构具有很小的面积开销,易于实现。

附图说明

图1是本发明设计的集成电路内部的用来防止集成电路和知识产权核被剽窃的动态混淆封装接口的总体示意图。

图2是本发明设计的集成电路内部的用来防止集成电路和知识产权核被剽窃的动态混淆封装接口的详细示意图。

图3是本发明设计的老化敏感物理不可克隆函数(30a)的示意图。

图4a是本发明设计老化敏感物理不可克隆函数(30a)中老化敏感路径组(60a)中的两条路径时延随时间变化的仿真结果。

图4b是本发明设计不同制造参数下的测试电路测试时间分布直方图。

图5a是本发明设计防止冲刷攻击的波形仿真图。

图5b是本发明设计防止复位攻击的波形仿真图。

具体实施方式

下面将结合附图和实施例对本发明做进一步的详细说明。

对于集成电路的编程控制采用了synopsys公司的designcompiler2014,primetime2014和iccompiler2014软件。designcompiler是synopsys公司的逻辑综合优化工具,可以把硬件描述语言(hdl)描述的电路综合为跟工艺相关的门级电路。并且根据用户的设计要求,在时序和面积,时序和功耗上取得最佳的效果。它可以接受多种输入格式,如硬件描述语言、原理图和网表等,并产生多种性能报告,在缩短设计时间的同时提高读者设计性能。primetime是synopsys公司的静态时序和功耗分析软件,常被用来分析大规模、同步、数字asic的时序以及静态动态功耗。iccompiler是synopsys公司下一代布局布线系统,通过将物理综合扩展到整个布局和布线过程以及签核驱动的设计收敛,来保证卓越的质量并缩短设计时间。上一代解决方案由于布局、时钟树和布线独立运行,有其局限性。iccompiler的扩展物理综合(xps)技术突破了这一局限,将物理综合扩展到了整个布局和布线过程。iccompiler采用基于tcl的统一架构,实现了创新并利用了synopsys公司的若干最为优秀的核心技术。作为一套完整的布局布线设计系统,它包括了实现下一代设计所必需的一切功能,如物理综合、布局、布线、时序、信号完整性(si)优化、低功耗、可测性设计(dft)和良率优化。

参见图1所示,本发明所设计的一种集成电路内部的用来防止集成电路和知识产权核被剽窃的动态混淆封装接口,可内嵌在现有集成电路芯片上,动态混淆封装接口(1a)对ip核或者集成电路的输入输出接口加密,使得未经授权的使用者无法正常使用ip核或者集成电路,封装接口控制验证单元(1b)用以控制动态混淆封装接口(1a)加密和解密。本发明所设计的结构同时适用于集成电路和ip核,能够防止ip核或者集成电路被非法生产、使用。

(一)动态混淆封装接口(1a):

动态混淆封装接口(1a)由功能单元输入封装接口(10a)、功能单元输出封装接口(10b)、扫描链输入封装接口(10c)、扫描链输出封装接口(10d)、有限状态机集合(10e)和混淆逻辑单元集合(10f)构成。参见图2所示,ip核或集成电路每个输入输出端口都有一个三输入异或门,分别属于功能单元输入封装接口(10a)、功能单元输出封装接口(10b)、扫描链输入封装接口(10c)和扫描链输出封装接口(10d)。

功能单元输入封装接口(10a)和扫描链输入封装接口(10c)中的三输入异或门的三个输入信号分别来自内部密钥寄存器(20d)中的一位、外部密钥寄存器(20e)中的一位和ip核或者集成电路实际的外部输入信号;功能单元输入封装接口(10a)和扫描链输入封装接口(10c)中的三输入异或门的输出信号为实际输入到ip核或者集成电路中的信号;

功能单元输出封装接口(10b)和扫描链输出封装接口(10d)中的三输入异或门的三个输入信号分别来自内部密钥寄存器(20d)中的一位、外部密钥寄存器(20e)中的一位和ip核或者集成电路产生的要输出的外部输入信号,功能单元输出封装接口(10b)和扫描链输出封装接口(10d)中的三输入异或门的输出信号为ip核或者集成电路实际输出到外部的信号。

有限状态机集合(10e)合包含m个有限状态机,即{10e1,10e2...10em},这m个有限状态机被随机的插入到功能单元输入封装接口(10a)和ip核或者集成电路之间,用于增加攻击者破解所述混淆封装接口的难度。这些有限状态机的功能被设计为:连续接收α个正确的输入后就会被解锁,使得输入数据直接通过有限状态机,否则输入数据就无法通过有限状态机。

混淆逻辑单元集合(10f)包含y个反相器单元,这y个反相器单元被随机的插入到功能单元输入封装接口(10a)和ip核或者集成电路之间,或功能单元输出封装接口(10b)和ip核或者集成电路之间,同时为了防止这些反相器被识别出来,本设计推荐使用德摩根定律,将这些反相器移动到更深的逻辑层次。

动态混淆封装接口(1a)受到内部密钥寄存器(20d)和外部密钥寄存器(20e)的控制,只有当来自内部密钥寄存器(20d)和外部密钥寄存器(20e)的信号使得动态混淆封装接口(1a)输入输出信号完全一致时,所设计的动态混淆封装接口(1a)才会被正确解锁,使用者才能使用ip核或集成电路进行测试或者激活。

(二)指纹生成器(20a):

参见图2所示,指纹生成器(20a)由老化敏感物理不可克隆函数(30a)、解析器(30b)、一次性可编程存储器(30c)和种子选择器(30d)。所设计的动态混淆封装接口的操作主要基于两种控制信号:临时指纹和永久指纹。指纹生成器(20a)主要的作用就是生成这两种信号。通常,ip核或者集成电路在制造出来之后,基于临时指纹进行测试,基于永久指纹进行激活。临时指纹由老化敏感物理不可克隆函数(30a)生成,老化敏感物理不可克隆函数(30a)的结构参照图3所示。在ip核或者集成电路开始测试之前,老化敏感物理不可克隆函数(30a)生成一个m位的临时指纹,同时这个临时指纹经过解析器(30b)的处理变化为永久指纹,并存储在一次性可编程存储器(30c)中。种子选择器(30d)可以在ip核或者集成电路进行测试时输出临时指纹,在ip核或者集成电路激活时选择输出永久指纹。解析器(30b)的结构功能只有ip核或者集成电路设计者知道。代工厂会收集每个ip核或者集成电路的临时指纹,并发送给ip核或者集成电路设计者。但是代工厂无法获取每个ip核或者集成电路的永久指纹,永久指纹只有ip核或者集成电路设计者可以根据临时指纹和解析器(30b)的功能结构计算得知。在经过一段给定的测试时间之后,ip核或者集成电路被老化,老化敏感物理不可克隆函数(30a)的输出发生改变,由临时指纹变为差异很大的老化后的指纹。代工厂或者测试人员无法继续基于临时指纹来临时激活ip核或者集成电路进行使用测试。

参照图3所示,老化敏感物理不可克隆函数(30a)由振荡环阵列(50a)、指纹替换器(50b)和老化指示器(50c)构成。振荡环阵列(50a)中每个振荡环都会产生一个不同频率的方波,然后由计数器在给定时间统计每个振荡环生成的上升沿数目,计数器的计数值正比与所统计的振荡环的频率。指纹替换器(50b)中的比较器通过两两比较计数器的技术值,输出一个m位的0,1序列,作为临时或者老化后的指纹。在未老化状态时,指纹替换器(50b)直接输出临时指纹,在经过一段给定的测试时间后,指纹替换器(50b)会随机改变比较器的比较对象,从而输出一个和临时指纹差异很大的0,1序列,即老化后的指纹。老化指示器(50c)是通过比较老化敏感路径组(60a)中两条路径的时延差异,来判断ip核或者集成电路是否已经经过一段给定的测试时间,即达到给定的老化阈值。路径的老化敏感程度取决于构成路径的逻辑单元的大小、初始阈值电压等因素。研究表明,较小的、阈值电压较高的逻辑单元对老化更加敏感,通常被用于构建老化敏感路径(60a1);而较大的、阈值电压较低的逻辑单元对老化不太敏感,通常用于构建可调节的老化不敏感路径(60a2)。当老化敏感路径组(60a)中的路径时延差达到老化余量缓冲器(60b)的时延时,老化指示器(50c)的输出老化指示信号就变为高电平,指示指纹替换器(50b)将输出由临时指纹改变为老化后的指纹;否则维持低电平。

(三)线性移位寄存器(20b):

线性移位寄存器(20b)用来生成封装接口控制验证单元(1b)内部密钥。在ip核或者集成电路进行测试时,线性移位寄存器(20b)使用指纹生成器(20a)输出的临时指纹作为种子;在ip核或者集成电路通过验证进行激活时,线性移位寄存器(20b)使用指纹生成器(20a)输出的永久指纹作为种子。在ip核或者集成电路进行扫描测试时,线性移位寄存器(20b)生成的密钥与外部的测试向量分别同步输入到内部密钥寄存器(20d)和扫描链集合(1d)中。在ip核或者集成电路进行最终激活或者功能测试时,线性移位寄存器(20b)生成的密钥直接输入到内部密钥寄存器(20d)。需要注意的是,线性移位寄存器(20b)的结构功能只有ip核或者集成电路设计者知道,也就意味着即便攻击者得到了临时指纹,也无法推测输入到内部密钥寄存器(20d)中的内部密钥。

(四)内部密钥寄存器(20d)和外部密钥寄存器(20e):

对于每个制造出来的ip核或者集成电路,由线性移位寄存器(20b)基于临时指纹生成的内部密钥是独一无二的,这个内部密钥被用于锁定动态混淆封装接口(1a)。要解锁动态混淆封装接口(1a),就必须输入一个与内部密钥对应的外部密钥。内部密钥寄存器(20d)和外部密钥寄存器(20e)是用来存储内部密钥和外部密钥的。假定扫描链集合(1d)中最长的扫描链的长度为λ,则内部密钥寄存器(20d)和外部密钥寄存器(20e)均为λ位。在ip核或者集成电路进行扫描测试时,内部密钥和外部密钥随着测试向量的输入分别同步扫描输入到内部密钥寄存器(20d)和外部密钥寄存器(20e)中。参照图2所示,内部密钥寄存器(20d)和外部密钥寄存器(20e)的第一位分别连接到扫描链输入封装接口(10c)中的三端口异或门的两个输入端口;内部密钥寄存器(20d)和外部密钥寄存器(20e)的最后一位分别连接到扫描链输出封装接口(10d)中的三端口异或门的两个输入端口。内部密钥寄存器(20d)和外部密钥寄存器(20e)除第一位和最后一位,剩余的位分别随机连接到功能单元输入封装接口(10a)和功能单元输出封装接口(10b)中的三端口异或门的两个输入端口。需要注意的是功能单元输入封装接口(10a)和扫描链输入封装接口(10c)中的三端口异或门的三个输入分别来自内部密钥寄存器(20d)、外部密钥寄存器(20e)和ip核或者集成电路外部输入管脚。功能单元输出封装接口(10b)和扫描链输出封装接口(10d)中的三端口异或门的三个输入分别来自内部密钥寄存器(20d)、外部密钥寄存器(20e)和ip核或者集成电路输出数据。

ip核或集成电路有三种工作模式:扫描测试、功能测试和激活模式。内部密钥寄存器(20d)和外部密钥寄存器(20e)在这三种工作模式下发挥的作用如下所示:

扫描测试模式:ip核或者集成电路中的内部密钥被用于锁定动态混淆封装接口(1a)。要对ip核或者集成电路进行扫描测试,必须要解锁扫描链输入封装接口(10c)和扫描链输出封装接口(10d),就必须输入一个与内部密钥对应的外部密钥。内部密钥和外部密钥共同作用解锁扫描链输入封装接口(10c)和扫描链输出封装接口(10d)需要满足的条件为:内部测试向量/响应(iw/ow)=外部测试向量/响应(i/o)(内部密钥外部密钥),其中内部测试向量/响应指的是ip核或者集成电路实际接收到的测试向量或者生成的测试响应,外部测试向量/响应指的是测试人员输入给扫描链输入封装接口(10c)的测试向量,或者从扫描链输出封装接口(10d)接收到的测试响应,代表进行异或操作。根据上述条件,ip核或者集成电路设计者可以基于临时指纹计算出ip核或者集成电路的内部密钥,然后根据内部密钥计算得到对应的外部密钥,并发送给测试人员,用以解锁扫描链输入封装接口(10c)和扫描链输出封装接口(10d)进而实施扫描测试。根据上述条件,ip核或者集成电路设计者可以保证外部测试向量对所有的ip核或者集成电路保持一致,只需要改变外部密钥即可解锁不同的ip核或者集成电路。这样可以降低ip核或者集成电路设计者和测试人员的数据交换量和测试的复杂程度。

功能测试模式:在通过扫描测试后,ip核或者集成电路需要进行功能测试,如速度分级测试等,保证ip核或者集成电路能够在给定的条件下正常工作,没有缺陷。在功能测试模式下,需要解锁功能单元输入封装接口(10a)和功能单元输出封装接口(10b)进行测试,此时被测ip核或者集成电路的内部密钥与扫描测试测内部密钥相同,但是需要输入一个新的外部密钥。参见图2所示,功能单元输入封装接口(10a)和功能单元输出封装接口(10b)中的任意一个三输入端口的异或门都同时被内部密钥寄存器(20d)和外部密钥寄存器(20e)中随机的一位控制,例如,功能单元输入封装接口(10a)中的第h个三输入端口异或内部密钥寄存器(20d)第i位和外部密钥寄存器(20e)中的第j位共同控制,其中1≤i,j≤λ。内部密钥寄存器(20d)和外部密钥寄存器(20e)与功能单元输入封装接口(10a)和功能单元输出封装接口(10b)中的异或门的连接方式只有ip核或者集成电路设计者知道。考虑到混淆逻辑单元集合(10f)的存在,要解锁功能单元输入封装接口(10a)和功能单元输出封装接口(10b)中由内部密钥的第i位和外部密钥的第j位所控制的异或门,需要满足以下条件:内部密钥的第i位外部密钥的第j位ol=1,其中1≤i,j≤λ,ol指得是内部密钥的第i位和外部密钥的第j位所控制的异或门对应的输入/输出端口上是否有混淆单元,如果有,则ol=1,如果没有,则ol=0。因此,只要内部密钥和外部密钥共同满足功能单元输入封装接口(10a)和功能单元输出封装接口(10b)中所有的异或门的解锁条件,即可解锁功能单元输入封装接口(10a)和功能单元输出封装接口(10b)。基于临时指纹、内部密钥寄存器(20d)和外部密钥寄存器(20e)与单元输入封装接口(10a)和功能单元输出封装接口(10b)的连接方式,ip核或者集成电路设计者总是可以计算出响应的外部密钥。

激活模式:在通过扫描测试和功能测试,同时测试结果通过ip核或者集成电路设计者的验证之后,被测ip核或者集成电路就可以进行最终的激活。线性移位寄存器(20b)使用永久指纹作为种子生成一个新的内部密钥,ip核或者集成电路设计者基于临时指纹计算出永久密钥和新的内部密钥,并根据功能单元输入封装接口(10a)和功能单元输出封装接口(10b)的解锁条件计算出最终用于激活的外部密钥。测试人员或者代工厂将用于激活的外部密钥输入对应的ip核或者集成电路中,ip核或者集成电路就能够被最终激活进行正常使用。需要注意的是,在激活模式下,用于激活的外部密钥被存放在ip核或者集成电路中的只能写入一次的安全存储器中,测试人员只有一次写入外部密钥的机会,可以有效防止攻击者多次写入外部密钥,尝试猜出正确的外部密钥。

(五)结果验证单元(20c):

结果验证单元(20c)用于防止代工产谎报ip核或者集成电路的测试结果,从而骗取多余的用于激活的外部密钥,将有缺陷和不符合规范的ip核或者集成电路售卖出去。

在扫描测试模式下,扫描链输出封装接口(10d)的输入被卷积压缩器(40c)压缩成宽度为1位的0、1序列,然后与非线性移位寄存器(40a)产生的序列依次做异或运算进行混淆,成为结构测试印迹并输出到ip核或者集成电路之外。结构测试印迹包含了ip核或者集成电路是否通过扫描测试,以及缺陷存在的情况,只有ip核或者集成电路设计者可以根据卷积压缩器(40c)和非线性移位寄存器(40a)的结构,从结构测试印迹中解密得到实际的测试结果,代工厂或者测试人员无法从结构测试印迹中获取测试结果的信息。

在功能测试模式下,来自功能测试相关传感器的测试结果与非线性移位寄存器(40a)产生的序列依次做异或运算进行混淆,成为功能测试印迹。功能测试印迹包含了ip核或者集成电路是否通过功能测试,以及不合格的情况,只有ip核或者集成电路设计者可以根据卷积压缩器(40c)和非线性移位寄存器(40a)的结构,从功能测试印迹中解密得到实际的测试结果,代工厂或者测试人员无法从功能测试印迹中获取测试结果的信息。如此,代工厂或测试人员无法伪造测试结果以索要过量的用于激活的外部密钥。

(六)基于动态混淆封装接口的测试流程:

ip核或集成电路在制造之后,需要通过测试才能确定是否合格,并进行激活,测试过程分为:测试准备、扫描测试、功能测试、最终激活和测试时间之后。本发明所涉及的动态混淆封装接口在各个阶段发挥的作用如下:

测试准备:在测试之前,ip核或者集成电路设计者首先针对要测试的ip核或者集成电路生成对应的测试向量,例如检测固定型故障、桥接故障等的扫描测试向量和进行速度分级的功能测试向量。然后扫描测试向量进行混淆,连同功能测试向量一起发送给代工厂。所有的ip核或者集成电路测试用的测试向量都是通用的。在ip核或者集成电路制造出来之后,ip核或者集成电路被动态混淆封装接口(1a)锁定,每个ip核或者集成电路都有一个独一无二的临时指纹。代工厂将这些临时指纹收集起来发送给ip核或者集成电路设计者。ip核或者集成电路设计者根据临时指纹和封装接口控制验证单元(1b)的结构,计算出对应的测试用的外部密钥,并发送给代工厂。

扫描测试:代工厂在接收到测试用的外部密钥后,就针对ip核或者集成电路进行测试。在扫描测试中,代工厂将通用的扫描测试向量输入到ip核或者集成电路,与此同时,对应的扫描测试用的外部密钥同步的输入ip核或者集成电路,用来解锁扫描链输入封装接口(10c)和扫描链输出封装接口(10d)。若是ip核或者集成电路通过了扫描测试,则可继续进行功能测试,否则有故障的ip核或者集成电路就被丢弃。在这个过程中,每个ip核或者集成电路都会生成一个独一无二的扫描测试印迹。

功能测试:在功能测试中,代工厂将功能测试用的外部密钥输入到对应的ip核或者集成电路,临时解锁功能单元输入封装接口(10a)和功能单元输出封装接口(10b),然后施加通用的功能测试向量进行测试,这些测试包含速度分级测试、电压分级测试等。在这个过程中,每个ip核或者集成电路都会生成一个独一无二的功能测试印迹。

最终激活:在通过所有的测试之后,代工厂将合格的ip核或者集成电路的编号、临时指纹、扫描测试印迹和功能测试印迹一起发送给ip核或者集成电路设计者进行验证。如果验证结果显示代工厂没有谎报测试结果,则ip核或者集成电路设计者可以给每个合格的ip核或者集成电路计算一个用于激活的外部密钥,发送给代工厂,用于永久激活ip核或者集成电路;否则,不予以激活。

测试时间之后:每个ip核或者集成电路在制造出来之后,都有一段时间用于测试,称之为测试时间,在这段时间,ip核或者集成电路可以基于临时指纹进行临时激活,以便测试。但是,在过了测试时间之后,指纹生成器(20a)生成的临时指纹失效,转变未老化后的指纹,基于临时指纹进行激活的外部密钥失效,无法用于ip核或者集成电路的解锁。此时,只能使用基于永久指纹激活的外部密钥才能正确解锁ip核或者集成电路。未通过测试或者未通过ip核或者集成电路设计者验证的ip核或者集成电路无法得到用于永久激活的外部密钥,在测试时间之后,即被锁定,无法再次被使用,杜绝代工厂过量生产或者将有缺陷的产品售卖到市场。

实施例1

应用本发明设计的在集成电路内部的用来防止集成电路和知识产权核被剽窃的动态混淆封装接口,进行测试:

本发明所提出的在集成电路内部的用来防止集成电路和知识产权核被剽窃的动态混淆封装接口被插入到了若干测试电路中,如opensparct2处理器中的fgu(floatingpointandgraphicunit,浮点运算和图像处理模块)模块,和gaisler芯片中的leon3、leon3mp和vga-lcd模块中,所有的测试电路在综合时设置的功能时钟为100mhz,扫描时钟为10mhz,其扫描链的最大长度为64(即λ=64),需要指出,由于集成电路芯片中的扫描单元的数目不一定是64的整数倍,综合工具会自动平衡各扫描链的长度,使其最大长度为64,且各扫描链的长度接近。上述被插入片上调节结构的电路都在32nm的技术节点上经过了仿真验证。

首先估算本发明的面积、功耗和测试向量计算时间的开销。面积开销指的是新插入集成电路芯片的结构的面积与芯片原有面积之比,功耗开销指新插入集成电路芯片的结构在测试过程中产生的功耗与原来芯片在测试过程中的功耗之比,计算时间开销指将原来的测试向量进行混淆,得到实际交付测试者的混淆后的向量,这个混淆过程所需要的时间。在实施所设计的动态混淆封装接口时,采用能生成16位临时指纹的老化敏感物理不可克隆函数(30a)、16比特的线性移位寄存器(20b)。在不同测试电路中的功耗和面积开销如下表所示,面积开销在0.959%-2.267%之间,功耗开销在1.012%-1.892%之间。使用一台配备20个2.4ghzcpu的linux工作站,采用一个单线程的python语言写成的计算脚本,对于不同测试电路,混淆一个测试向量所需要的时间在59.3-234.9μs,计算开销也是可接受的。

表1

ip核或者集成电路设计者和代工厂之间的数据交换量如下表所示,考虑到每个功能传感器产生一个5比特的结果,结果验证单元(20c)产生的功能测试印迹的数据量在230-1020比特之间。结果验证单元(20c)产生的结构测试印迹的长度等于所有扫描测试的测试向量的长度,位宽为1位,即结构测试印迹的总的数据量为所有扫描测试向量的1/n,其中n为测试电路的扫描链集合(1d)中包含的扫描链的数目。可以看出,因为所设计的动态混淆封装接口所产生的额外数据量较小,可以接受。

表2

本发明设计的动态混淆封装接口给与代工厂一段时间进行测试,这段时间称之为测试时间,在测试时间中,ip核或者集成电路可以基于临时指纹进行临时激活,在这段时间之外,ip核或者集成电路无法基于临时指纹激活,只能基于永久指纹进行激活。为了保证不同ip核或者集成电路都具有相近的测试时间,我们在模拟ip核或者集成电路在制造过程中的不确定性,对同一个测试电路的100个具有不同制造参数的模型进行老化仿真,其中老化敏感物理不可克隆函数(30a)中的老化敏感路径组(60a)中的两条路径的时延随着时间变化的结果如图4a所示,不同模型的测试时间分布直方图如图4b所示,可以看到95%的模型的测试时间在2-3个月,所有的模型的测试时间均在4个月之内。

下面对本发明进行安全性分析,代工厂或者攻击者可能会侵犯ip核或者集成电路设计者对ip核或者集成电路的所有权,或者攻破本发明设计的动态混淆封装接口进而窃取ip核或者集成电路的知识产权。

过量生产/使用ip核或者集成电路:不可信的代工厂和集成电路设计者可能在未经ip核设计者的允许下,私自将ip核用在未经授权的集成电路中。同样,不可信的代工厂可以私自制造超过协议数目的集成电路。但是,通过集成本发明设计的动态混淆封装接口,只有通过测试结果验证的ip核或者集成电路才能得到激活用的外部密钥,非法生产使用的ip核或者集成电路无法被激活正常使用。因此,本发明设计的动态混淆封装接口可以防止过量生产/使用ip核或者集成电路。

售卖有故障的ip核或者集成电路:代工厂可能会把没有通过扫描测试的ip核或者集成电路,即有故障的ip核或者集成电路,售卖到市场上。这样代工厂就得到了不法利益,同时损害了ip核或者集成电路设计者的名声。通过集成本发明设计的动态混淆封装接口,扫描测试的结果通过结果验证单元(20c)的处理生产结构测试印迹,其中包含了ip核或者集成电路的扫描测试的结果,代工厂无法获取扫描测试印迹中的信息,也就无法谎报测试结果。只有通过了ip核或者集成电路设计者的验证,代工厂才能得到对应的激活用的外部密钥。

售卖不合格的ip核或者集成电路:不合格的ip核或者集成电路是指ip核或者集成电路在特定条件下不能正常工作,即没有通过功能测试,例如,可以在较低频率下工作,但是在较高频率下无法正常工作。为了获取利益,代工厂也可能将这些不合格的ip核或者集成电路售卖到市场。通过集成本发明设计的动态混淆封装接口,功能测试的结果通过结果验证单元(20c)的处理生产功能测试印迹,其中包含了ip核或者集成电路功能测试的结果,代工厂无法获取功能测试印迹中的信息,也就无法谎报测试结果。只有通过了ip核或者集成电路设计者的验证,代工厂才能得到对应的激活用的外部密钥。

针对密钥的攻击:攻击者为了得到用于激活的外部密钥,可以通过两种方式,1)窃取内部密钥寄存器(20d)中的内部密钥,通过已经激活的ip核或者集成电路的内部密钥和外部密钥的关系,可以计算任何未激活的ip核或者集成电路对应的外部密钥;2)直接通过暴力攻击,猜测激活用的外部密钥。

攻击者希望使用冲刷攻击将内部密钥寄存器(20d)中的内部密钥直接输出到ip核或者集成电路外部。但是扫描链输入封装接口(10c)被内部密钥寄存器(20d)和外部密钥寄存器(20e)中的第一位控制;扫描链输出封装接口(10d)被内部密钥寄存器(20d)和外部密钥寄存器(20e)中的最后一位控制。在进行扫描测试时,扫描测试的向量、外部密钥和内部密钥同步的分别输入到扫描链集合(1d)、内部密钥寄存器(20d)和外部密钥寄存器(20e)中。在进行冲刷攻击时,扫描输入的测试向量和扫描输出响应的关系为:实际扫描输入(iw)=外部扫描输入(i)(内部密钥寄存器第一位外部密钥寄存器第一位);外部扫描输出(o)=实际扫描输入(iw)(内部密钥寄存器第一位外部密钥寄存器第一位)=外部扫描输入(i)。即在进行冲刷攻击时,无论内部密钥、外部密钥是何值,扫描链中扫描输出的数据和λ个时钟周期前扫描输入的数据总是相同的,其中λ为扫描链的长度。针对冲刷攻击的仿真波形图参见图5a所示,其中λ为64。

攻击者可能使用复位攻击,通过观测在ip核或者集成电路复位之后,扫描链的输出,来获取内部密钥寄存器(20d)中的内部密钥。但是,线性移位寄存器(20b)、内部密钥寄存器(20d)和外部密钥寄存器(20e)会随着ip核或者集成电路同步复位,在复位后的λ个时钟周期内,扫描链的输出保持为0不变,因而无法观测到与内部密钥相关的信息。针对复位攻击的仿真波形图参见图5b所示,其中λ为64。

针对暴力攻击,由于ip核或者集成电路的用于激活的外部密钥只能输入一次,攻击者只有一次机会去尝试正确的外部密钥,因而几乎不可能一次性猜对正确的外部密钥。

布尔可满足性攻击(booleansatisfiabilityattack):攻击者可以利用已经激活的ip核或者集成电路,给定输入数据,到的正确的输出数据。然后利用这个信息,在未激活的ip核或者集成电路上不断尝试新的用于激活的外部密钥,直到所尝试的激活用的外部密钥能够使得给定的输入对应的输出与已经激活的ip核或者集成电路相同。但是,由于ip核或者集成电路的用于激活的外部密钥只能输入一次,攻击者只有一次机会去尝试正确的外部密钥,因而攻击者无法使用布尔可满足性攻击。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1