用于混淆具有伪装门和逻辑加密的集成电路的系统和方法与流程

文档序号:17728180发布日期:2019-05-22 02:39阅读:279来源:国知局
用于混淆具有伪装门和逻辑加密的集成电路的系统和方法与流程
本申请要求由bryanj.wang、lapwaichow、ronaldp.cocchi和jamesp.baukus于2016年9月20日提交的题为“用于混淆具有伪装门和逻辑加密的集成电路的系统和方法(methodforobfuscatinganintegratedcircuitwithcamouflagedgatesandlogicencryption)”的美国临时专利申请no.62/397,231的权益,该申请通过引用结合在此。本申请还涉及以下共同未决和共同转让的本申请,所有这些申请通过引用结合在此:由ronaldp.cocchi、lapwaichow、jamesp.baukus和bryanj.wang于2017年8月11日提交的题为“物理上不可克隆的伪装结构及其制造方法(physicallyunclonablecamouflagestructureandmethodsforfabricatingsame)”的美国专利申请no.15/675,418;该申请是由ronaldp.cocchi、lapw.chow、jamesp.baukus和bryanj.wang于2015年12月30日提交的题为“物理上不可克隆的伪装结构及其制造方法”(physicallyunclonablecamouflagestructureandmethodsforfabricatingsame)的美国专利申请no.14/985,270的延续,并作为美国专利no.9,735,781于2017年8月15日发布,该申请:要求由ronaldp.cocchi、lapw.chow、jamesp.baukus和bryanj.wang于2014年12月30日提交的题为“用于构建具有电路伪装的不可克隆电子系统的方法和装置(methodandapparatusforbuildinganunclonableelectronicssystemwithcircuitcamouflage)”的美国临时专利申请no.62/098,108的权益,其中的两个申请通过引用结合在此。是bryanj.wang、lapwaichow、jamesp.baukus和ronaldp.cocchi于2013年7月12日的提交的题为“用于伪装具有微电路和后处理的基于标准单元的集成电路的方法和装置(methodandapparatusforcamouflagingastandardcellbasedintegratedcircuitwithmicrocircuitsandpostprocessing)”的美国专利申请13/940,585的部分延续,该申请是由ronaldp.cocchi等人于2012年2月9日提交的题为“用于伪装具有微电路和后处理的基于标准单元的集成电路的方法和装置(methodandapparatusforcamouflagingastandardcellbasedintegratedcircuitwithmicrocircuitsandpostprocessing)”的美国专利申请序列no.13/370,118的分案,并作为8,510,700于2013年8月13日发布,该申请是:由lapwaichow、jamesp.baukus、bryanj.wang和ronaldp.cocchi于2009年2月24日提交的题为“伪装基于标准单元的集成电路(camouflagingastandardcellbasedintegratedcircuit)”的美国专利申请序列no.12/380,094的部分延续,作为美国专利8,151,235于2012年4月3日发布;以及由lapwaichow、jamesp.baukus、bryanj.wang和ronaldp.cocchi于2009年10月13日提交的题为“用于伪装基于标准单元的集成电路的方法和装置(methodandapparatusforcamouflagingastandardcellbasedintegratedcircuit)”的美国专利申请序列no.12/578,441的部分延续,作为美国专利no.8,418,091于2013年4月9日发布,其是由lapwaichow、jamesp.baukus、bryanj.wang和ronaldp.cocchi于2009年2月24日提交的题为“伪装基于标准单元的集成电路(camouflagingastandardcellbasedintegratedcircuit)”的美国专利申请序列no.12/380,094的部分延续,作为美国专利no.8,151,235于2012年4月3日发布;还是由lapwaichow、jamesp.baukus、bryanj.wang和ronaldp.cocchi于2013年3月7日提交的题为“用于伪装基于标准电池的集成电路的方法和装置(methodandapparatusforcamouflagingastandardcellbasedintegratedcircuit)”的美国专利申请序列no.13/789,267的部分延续,该申请是由lapwaichow、jamesp.baukus、bryanj.wang和ronaldp.cocchi于2009年10月13日提交的题为“用于伪装基于标准单元的集成电路的方法和装置(methodandapparatusforcamouflagingastandardcellbasedintegratedcircuit)”的美国专利申请序列no.12/578,441的延续,作为美国专利no.8,418,091于2013年4月9日发布,该申请是由lapwaichow、jamesp.baukus、bryanj.wang和ronaldp.cocchi于2009年2月24日提交的题为“伪装基于标准单元的集成电路(camouflagingastandardcellbasedintegratedcircuit)”的美国专利申请序列no.12/380,094的部分延续,作为美国专利8,151,235于2012年4月3日发布。本公开涉及用于保护数字电路的系统和方法,并且特别涉及用于混淆具有伪装门和逻辑加密的集成电路的系统和方法。
背景技术
:集成电路(ic)设计容易受到逆向工程、未授权的克隆和过度生产以及由于木马插入导致的设备损坏的ip盗窃的影响。随着逆向工程能力的提高,以及全球ic生产能力整合到少数外国实体中,ic行业面临的风险一直在稳步增长。逻辑加密(也称为逻辑混淆)是一种硬件混淆技术,该技术修改电路,使得其仅在一组新引入的密钥数据输入被正确应用时才能正确操作。该密钥仅为原始电路设计者所知,并且可以在制造后在安全设施处被编程到设备的非易失性存储器中,诸如一次性可编程otp存储器。没有密钥数据,由ic制造商或第三方制造的未授权设备将无法正确工作。例如,参见j.a.roy、f.koushanfar和i.l.markov的2018年3月10日至14日德国慕尼黑2008年欧洲的设计、自动化和测试的“结束集成电路的盗版”(“endingpiracyofintegratedcircuits,”design,automation,andtestineurope2008,munich,germany,march10-14,2008);r.s.chakraborty和s.bhunia的2008年ieee/acm计算机辅助设计国际会议的“通过网表级别混淆的硬件保护和认证”(“hardwareprotectionandauthenticationthroughnetlistlevelobfuscation,”ieee/acminternationalconferenceoncomputer-aideddesign,2008);以及s.dupuis、p.-s.ba、g.dinatale、m.-l.flottes和b.rouzeyre的2014年ieee国际在线测试研讨会“用于阻止非法过度生产和硬件木马的新型硬件逻辑加密技术”(“anovelhardwarelogicencryptiontechniqueforthwartingillegaloverproductionandhardwaretrojans,”ieeeinternationalon-linetestingsymposium,2014),所有这些都通过引用结合在此。技术实现要素:为了解决上述要求,该文件公开了一种用于混淆具有包括逻辑元件和存储器元件的多个元件的集成电路的至少一部分的系统和方法,该集成电路包括具有两个或多个互连元件的多个网络。在一个实施例中,该方法包括对于集成电路的该部分的每个网络来计算可观察点的数量(cop);对于每个网络,计算选择权重(ws);并且基于所计算的选择权重(ws),选择用于插入至少一个保护元件的一个或多个网络。另一个实施例由具有处理器和存储用于执行前述操作的处理器指令的通信耦接存储器的装置证明。在一个实施例中,该方法用于基于其拓扑来选择电路中的密钥门位置。该方法平衡了安全问题和逻辑有效性。当与未加权随机选择相比,该方法在破坏设备输出时产生更高的效率,并降低了在小逻辑区域内群聚密钥门的风险。该方法是启发式的,在许多方法中提供了一种可接受的解决方案,并且攻击者无法利用他对该方法的了解来查明混淆的密钥门。要呈现的密钥门位置选择方法在具有或不具有伪装门的电路上同样有效,但出于本文件“引言”和“背景”部分所述的原因,强烈建议使用伪装门。在另一个实施例中,该方法还用于基于其拓扑对于电路中的伪装微电路选来择插入点。该方法平衡了安全问题和逻辑有效性。与未加权随机选择相比,该方法在破坏设备输出时产生更高的效率,并且降低了在小逻辑区域内群聚伪装微电路的风险。该方法是启发式的,在许多方法中提供了一种可接受的解决方案,并且攻击者无法利用他对该方法的了解来查明伪装微电路。已经讨论的特征、功能和优点可以在本发明的各种实施例中独立地实现,或者可以在其它实施例中组合,其进一步的细节可以参考以下描述和附图看出。附图说明现在参考附图,其中相同的附图标记始终表示对应的部件:图1是示出逻辑加密的概述的图;图2a和图2b是呈现将密钥门插入到设计中以实现逻辑加密的图示的图;图3a和图3b是示出如何使用伪装单元混淆典型逻辑加密机制的示例的图;图4是呈现将具有固定为零输出的伪装微电路插入到识别的插入点的示例的图;图5是示出发射点和可观察点的要保护的示例性电路的图;图6是呈现使用提供给逻辑门kg1和kg2的密钥k1和k2进行逻辑加密的传统电路的示例的图;图7a和图7b是示出混淆有两个密钥门kg1和kg2以及伪装门kg1和g4的制成电路的图;图8是示出图5中的示例性电路的每个网络的cop值的图;图9是示出选择权重的示例性计算的图;图10a和图10b是示出两种可能的选择分布的图;图11-13是示出可用于混淆包括多个互连的功能逻辑单元的集成电路的示例性操作的图,该多个互连的功能逻辑单元一起执行一个或多个逻辑功能;以及图14是示出可用于实现以上公开的处理元件的示例性计算机系统1400的图。具体实施方式在以下描述中,参考形成其一部分的附图,并且通过图示的方式示出了多个实施例。应当理解,在不脱离本公开的范围的情况下,可以利用其它实施例并且可以进行结构改变。概述通过将伪装门与逻辑加密结合使用,可以实现高效的保护。伪装单元或伪装门是逻辑门,其看起来具有基于单元布局的图像分析的一个功能,但实际上执行不同的功能。例如,参见l.w.chow等人的“伪装基于标准单元的集成电路(camouflagingastandardcellbasedintegratedcircuit)”的美国专利公开no.2010/0213974、l.w.chow等人的“用于伪装基于标准单元的集成电路的方法和装置“methodandapparatusforcamouflagingastandardcellbasedintegratedcircuit”的美国专利公开2010/0218158、l.w.chow等人的“用于伪装具有微电路和后处理的基于标准单元的集成电路的方法和装置(methodandapparatusforcamouflagingastandardcellbasedintegratedcircuitwithmicrocircuitsandpostprocessing)”的美国专利公开2012/0139582,以及l.w.chow等人的“用于伪装基于标准单元的集成电路的方法和装置(methodandapparatusforcamouflagingastandardcellbasedintegratedcircuit)”的美国专利公开2013/0191803,所有这些均通过引用结合在此。将伪装门与逻辑加密结合使用保护逻辑加密密钥数据免受已知攻击。此外,伪装门的使用为对抗未拥有生产掩码数据的攻击者提供了额外的且独立的安全级别。如果加密密钥破解,则在电路被建模(model)和复制之前,必须正确识别并建模所有伪装单元。电路伪装技术电路伪装技术包括伪装逻辑门的设计和使用,逻辑门的逻辑功能难以使用传统的逆向工程技术来确定(参见上面引用的美国专利公开2010/0213974、2010/0218158、2012/0139582和2013/0191803)。本发明的文字和图使用伪装门的类型,其表观物理设计模仿用于设计ic的标准单元库的传统逻辑门,但伪装门的实际逻辑功能不同于模仿的逻辑门的功能。这是目前使用最普遍的伪装门的类型。在许多普通门中,伪装电路包含许多伪装门,并且用传统逆向工程技术提取的网表将包含与电路中使用的伪装门的数量成比例的许多差异。对于逆向工程师来说,伪装门的数量和位置并不明显。逻辑加密图1是示出逻辑加密的概述的图。逻辑加密将一组密钥输入引入到电路。当密钥输入设置正确时,它们将解锁电路用于正确操作。如果密钥输入的一个位或多个位不正确,则电路的功能将被改变,其输出将被破坏。图2a和图2b是呈现将密钥门插入到设计中以实现逻辑加密的图示的图。将密钥门插入到设计中以实现逻辑加密。一组所选的电路功能信号通过密钥门处的密钥输入或密钥数据进行门控。图2a呈现了示例电路。图2b呈现了混淆有密钥门kg1和密钥输入k1的插入的图2a中所示的等效电路的图示。图2b的该门级电路只有当密钥输入k1=1时才能正确操作。传统逻辑加密的已知安全威胁已经表明,可以根据线性时间相对于密钥长度的电路设计确定传统逻辑加密方案中的密钥数据,通过将输入矢量应用于解锁的制成设备、观察设备输出,并使用可满足性检查(sat)软件,以从观察和门级网表中推断出逻辑加密密钥。例如,参见p.subramanyan、s.ray和s.malik的2015年的面向硬件的安全性和信任(host)的“评估逻辑加密算法的安全性”(“evaluatingthesecurityoflogicencryptionalgorithms,”hardware-orientedsecurityandtrust(host),2015),其通过引用结合在此。传统的逻辑加密也容易受到其它攻击模型的攻击,如j.rajendran、y.pino、o.sinanoglu和r.karri的2012年设计自动化会议论文集的“逻辑混淆的安全性分析”(“securityanalysisoflogicobfuscation,”proceedingsofthedesignautomationconference,2012)中所示,也通过引用结合在此。然而,需要设备的准确的门级网表来执行该类的任何攻击,因为必须从其主输出推断设备的内部密钥门节点的状态。当许多设备的逻辑门用电路伪装技术进行混淆时,该类型的攻击变得更加困难,因为逆向工程师无法提取其功能与制成设备的功能相匹配的门级网表。因此,非常希望在逻辑加密实施方式中利用伪装单元。伪装门可以在逻辑加密网络中用作密钥门、控制逻辑或胶合逻辑,并且它们也可以用在制成电路本身的核心逻辑中。已经表明,可以根据线性时间相对于密钥长度的电路设计确定传统逻辑加密方案中的密钥数据,通过将输入矢量应用于解锁的制成设备、观察设备输出,并使用可满足性检查(sat)软件,以从观察和门级网表中推断出逻辑加密密钥(参见上面引用的“评估逻辑加密算法的安全性”)。传统的逻辑加密也容易受到其它攻击模型的攻击(参见上面引用的“逻辑混淆的安全性分析”)。然而,需要设备的准确的门级网表来执行该类的任何攻击,因为必须从其主输出推断设备的内部密钥门节点的状态。当许多设备的逻辑门用电路伪装技术进行混淆时,该类型的攻击变得更加困难,因为逆向工程师无法提取其功能与制成设备的功能相匹配的门级网表。因此,非常希望在逻辑加密实施方式中利用伪装单元。伪装门可以在逻辑加密网络中用作密钥门、控制逻辑或胶合逻辑,并且它们也可以用在制成电路本身的核心逻辑中。密钥门位置选择密钥门插入位置主题的先前工作涉及最大化密钥门的逻辑影响而不考虑其可检测性。rajendran等人使用错误传播模型来选择对设备输出具有最显著影响的密钥门位置(参见j.rajendran、h.zhang、c.zhang、g.s.rose、y.pino、o.sinanoglu和r.karri的2013年第410-424页第64(2)卷的ieee计算机交易的“基于错误分析的逻辑加密”(“faultanalysis-basedlogicencryption,”ieeetransactionsoncomputersvol.64(2),pp.410-424,2013),通过引用结合在此。逻辑加密的错误传播方法相对于未加权的随机密钥门选择显示出相当大的改进。然而,由于整个电路包括传统的标准单元,因此整个电路可以由逆向工程师轻松提取,使他能够找到所有的密钥门位置并尝试通过电路分析和模拟获得秘密的密钥数据(参见上文引用的“逻辑混淆的安全性分析”)。因此,虽然该方法可以有效地利用密钥门来破坏设备输出,但它不能有效地防止实际电路的逆向工程。错误分析方法具有其它几个缺点:1)高工具成本/复杂性,因为它需要错误传播和分析软件。2)长运行时间,因为它是在重新运行错误传播和分析之前一次插入一个密钥门的迭代方法。3)该方法为给定电路提供了唯一的解决方案,因此对该方法的了解将导致攻击者直接到达每个密钥门的位置。图3a和图3b是示出如何使用伪装单元来混淆典型逻辑加密机制的示例的图。图3a呈现了具有伪装门和逻辑加密的示例性制成电路的示图。图3b呈现了其提取的网表。由于门g1是nand2门(伪装由虚线表示),其被伪装成看起来像nor2门,因此逆向工程师很可能将g1解释为nor2门,从而推断出不正确的功能。通过伪装的逻辑加密实施方式,攻击者无法使用提取的网表来确定密钥,因为不存在密钥输入的组合可以使提取的网表表现像制成电路。使用伪装门提供额外的安全级别。如果加密密钥被破解,则在电路将正确工作之前,必须正确识别并建模所有伪装单元。下面描述的操作和用于实现它们的设备能够自动识别密钥门位置,具有优于现有方法的若干优点。特别是:1)比随机选择更有效,电路拓扑被认为是确定密钥门的有意义的位置;2)避免在逻辑网络中将密钥门聚集在一起;3)启发式方法在众多方法中提供了一种可接受的解决方案,攻击者无法利用他的方法知识来找到密钥门位置;4)工具成本低,无需错误分析软件;5)运行时间快,无需运行错误传播计算。所描述的密钥门位置选择方法在具有或不具有伪装门的电路上同样有效,但出于本文件的引言和
背景技术
部分中描述的原因,强烈建议使用伪装门。伪装微电路插入点选择伪装微电路是伪装和非伪装门的集合,它们执行逻辑功能,包括固定为零或固定为1(参见美国专利公开2010/0213974、2010/0218158、2012/0139582和2013/0191803,如上所引用)。因为伪装门具有与其物理设计所暗示的不同的逻辑功能,所以伪装微电路可以执行与其物理设计所暗示的不同的逻辑功能。当逆向工程师试图从包含一个或多个伪装微电路的设备中提取网表时,很可能提取的网表将包含逻辑错误。伪装微电路可以被插入或连接到设计中的逻辑节点,以提供对抗逆向工程的保护。图4是呈现将具有固定为零输出的伪装微电路402插入到识别的插入点404中的示例的图。未伪装电路400a具有具有多个逻辑元素的第一逻辑云404,,该第一逻辑云404由作为插入点的通信路径404通信地耦合到具有另一多个逻辑元素的第二逻辑云406。电路400b包括伪装微电路402和插入在插入点处的终端逻辑门406。在该示出的示例中,伪装微电路402具有固定为零的实际逻辑功能(不管输入如何),但是其物理设计暗示它具有不同的功能。用伪装微电路(底部)制成的电路400b将与未伪装的电路实施方式400a相同地起作用,因为由伪装微电路402提供给到具有or逻辑功能的终端门406的输入中的一个的逻辑零将确保受保护信号始终与原始插入点具有相同的逻辑状态。然而,从包含伪装微电路的设备中提取的网表可能会包含传统逆向工程方法的错误。伪装微电路插入点选择主题的其它工作限于基于电路逻辑层次的伪随机选择。利用伪随机选择,存在无效节点(不太可能影响电路的主输出的节点)可被选择作为插入点的风险。本说明书中介绍的技术能够自动识别伪装微电路插入点,与现有方法相比具有以下几个优点:1)比随机选择更有效,电路拓扑被认为确定伪装微电路的有意义位置2)避免在逻辑网络中聚集彼此靠近的伪装微电路可观察点和发射点的定义出于本说明书的目的,可观察点是存储元件的数据输入,或者是要保护的电路的主输出。这些点表示可能立即或在未来时钟周期期间影响要保护的电路的主输出的逻辑节点。发射点是存储元件的数据输出,或者是要保护的电路的主输入。这些点将定义电路的下一个状态。图5是要保护的示例性电路的图,示出了发射点(节点n1、n2、n3、n5)和可观察点(节点n4、n6、n7、n8)。如图所示,可观察点是寄存器输入(n4)和块主输出(n6、n7和n8)。发射点是寄存器输出(n5)和块主输入(n1、n2和n3)。虽然n9是寄存器输出,但它不被认为是相关的可观察点,因为它没有连接到任何下游逻辑。通常没有什么能阻止网络既是发射点又是可观察点,尽管该示例不包含任何此类网络。加强针对密钥提取攻击的逻辑加密逻辑加密对暴力攻击具有很强的抵抗,因为逻辑加密实施方式的密钥长度可以任意长。采用2n种可能的密钥组合,暴力攻击很快变得不切实际。然而,如前所述,已经表明传统的逻辑加密针对旨在从解锁的制成设备推断出逻辑加密密钥数据的一类攻击是弱的。一旦获得密钥数据,攻击者就可以解锁锁定的设备,从而有效地破坏了逻辑加密机制。发布的针对逻辑加密的攻击类可概括如下。请注意,门级网表是此类攻击的必要组成部分。1)攻击者获得两个解锁设备,通常在公开市场上购买。2)攻击者使用传统的逆向工程技术提取第一个未解锁设备的门级网表。3)攻击者使用分析软件和提取的门级网表开发一个或多个设备输入矢量,目的是确定一个或多个密钥位,这些密钥位在密钥门输入节点处是可观察的。4)攻击者将来自步骤3的输入矢量应用到第二个未解锁的设备并观察设备输出。5)攻击者使用分析软件和设备的门级网表,尝试使用步骤4中获得的结果推断一个或多个密钥位。6)攻击者重复步骤3-5直到已经确定所有密钥位。在设备中使用电路伪装技术可防止提取设备的准确门级网表。这在攻击者的门级网表和解锁设备之间引入了许多功能差异,这使攻击过程变得非常复杂。功能差异的数量与电路中使用的伪装门的数量成比例。由于传统的逆向工程技术无法有效区分伪装门与普通门,因此攻击者无法轻易确定功能差异的位置或数量。如果没有准确的门级网表来分析设备的行为,则无法通过推断密钥门输入节点的状态来确定密钥数据。图6是呈现使用提供给逻辑门kg1和kg2的密钥k1和k2进行逻辑加密的传统电路的示例的图。如图所示,攻击者从制成的设备中提取门级网表。当输入应用到制成的设备并观察输出时,可以通过在提取的网表上应用布尔(boolean)逻辑来推断密钥数据,如rajendran等人所示的(例如,上面提到的“逻辑混淆的安全性分析”)。因此,可以通过将对密钥位k1和k2敏感的输入模式(pattern)1000000应用到输出o1和o2,来从混淆有两个密钥门kg1和kg2的示例电路中提取密钥数据。图7a和图7b是示出混淆有两个密钥门kg1和kg2以及伪装门kg1和g4的制成电路的图。图7a示出制成电路的实际逻辑功能,而图7b示出其可能的提取网表。在该示例中,nand门g4被伪装成看起来像nor门,并且nor密钥门kg1被伪装成看起来像or门。尝试针对提取的网表解析制成电路的功能将指示必须校正的提取的网表中存在的错误。因此,在具有逻辑加密的伪装电路中,如图7中所示,攻击者从制成设备中提取错误的门级网表。当输入应用到制成设备并观察输出时,观察的输出和模拟的输出之间的功能不匹配将向攻击者指示提取的网表是不正确的。在解析所有网表错误之前,无法通过在错误网表上应用布尔逻辑来推断密钥数据。逻辑加密网络中的伪装门伪装门可以有效地使用在电路的逻辑加密网络中。虽然逻辑加密网络中的伪装门对电路的核心功能没有影响,但它们可以防止攻击者通过在提取的网表上应用布尔逻辑来推断逻辑加密网络的密钥数据。电路核心区域的伪装门即使将正确的密钥数据应用到逻辑加密网络,电路核心区域中的伪装门也将导致提取的网表与原始制成电路之间的功能差异。此外,它们还可以防止攻击者通过在提取的网表上应用布尔逻辑来推断逻辑加密网络的密钥数据。选择用于逻辑加密的保护元件位置的拓扑方法现在呈现使用电路拓扑选择密钥门位置的技术。首先,对于每个网络计算可观察点(如上所定义)的数量。然后,对于每个网络计算选择权重(ws),同时避免发射点偏差。最后,基于选择权重ws,选择用于插入保护元件的网络。这种保护元件可以包括密钥门和/或伪装微电路。首先描述使用密钥门作为保护元件,然后描述使用伪装微电路的类似情况。下面参考图5的示例性电路,关于插入密钥门保护元件进一步描述这些操作,图8中以注释形式再现了该图5中示例性电路。对于每个网络计算可观察点(cop)数量该部分讨论如何计算每个网络的cop数量的一个实施例。对于要保护的电路中的每个网络,电路拓扑的分析在下游逻辑锥中产生可观察点的计数。当存在不正确的密钥数据时,其下游逻辑锥连接到大量可观察点的网络很可能破坏设备输出。在选择密钥门位置时,该计数(将被称为cop)是考虑的整数值。cop的计算是用于选择密钥门位置的拓扑方法的第一步。下面概述了可用于计算要保护的电路中的每个网络的可观察点cop数量的操作的一个实施例。如上所述,该电路的发射点包括点(n1、n2、n3、n5)(它们是寄存器输出(n5)和块主输入(n1、n2和n3))。此外,可观察点包括(n4、n6、n7、n8)(它们是寄存器输入(n4)和块主输出(n6、n7和n8))。图5中的注释用于示出可观察点(o)和发射点(l)。i.计算要保护的电路中每个网络的cop。a.对于作为可观察点的每个网络,初始化整数cop=1,并且对于不作为可观察点的每个网络,初始化整数cop=0。b.对于作为可观察点的每个网络:i.对于要保护的设计中的每个网络初始化布尔值fv=0。该值指示是否已对于给定的可观察点访问了网络。ii.网络驱动器id:识别网络驱动器,它是发射点或逻辑门输出。iii.如果驱动器是发射点(主输入或触发器输出)且fv=0:1.递增cop并设定fv=1。iv.如果驱动器是逻辑门且fv=0:1.递增cop并设定fv=1。2.门输入id:识别连接到逻辑门输入的网络。3.对于在门输入id(步骤i.b.iv.2)中识别的每个网络,递归调用网络驱动器id(步骤i.b.ii)。图8是示出图5中的示例性电路的每个网络的cop的值的图。该算法考虑了门之间的连通性,但它没有考虑门的逻辑功能。对于每个网络计算选择权重(ws)以避免发射点偏差该部分描述了如何计算对于每个网络的选择权重(ws)的实施例。该选择过程避免了发射点偏差。应注意,对于沿任何给定逻辑路径的网络,每个网络的cop随着其与发射点的间隔(separation)减小而增加。这通常导致大多数高cop值位于或接近发射点的情况,并且低cop值位于或接近可观察点。因此,如果他推断高百分比的密钥门将位于或接近发射点,则仅基于cop选择密钥门位置可具有减少攻击者工作量的不期望的效果。期望补偿该发射点偏差。补偿发射点偏差的一种可能方法是对位于或非常接近发射点的网络进行减权重,从而为网络赋予最高权重,这些网络既不是逻辑路径的最开始也不是最尾端。该优化对于防止逻辑路径开始处的大量密钥门位置是可取的,这可能成为逆向工程师的可检测签名。在一个实施方式中,通过将先前计算的cop计数乘以对于每个网络计算的发射点调整因子flpa来计算选择权重(ws)(ws=cop*flpa)。flpa是0和1之间的实数,并且基于电路连通性和两个预定常数值nlpa和nl来计算。nlpa是0和1之间的实数,表示最重要的发射点调整因子,它是直接应用到发射点的因子。nl是至少为1的整数,表示应用发射点调整因子的逻辑级的数量。当给定的网络是发射点时,发射点调整因子产生最大的调整(flpa=nlpa),随着因子产生的减少调整(1>flpa>nlpa),给定的网络更远离发射点。当给定的网络远离发射点至少nl逻辑级时,该因子不产生调整(flpa=1)。常数nlpa和nl可以由设计者设定,也可以基于分析要保护的电路来动态计算。除非另有说明,否则在此提供的示例将使用nlpa=0.4和nl=2的值,这对大多数电路都是可接受的。以下步骤示出发射点调整因子(flpa)和选择权重(ws)的计算。它们在先前描述的步骤i中的cop计算之后执行。ii.初始化发射点调整矢量vlpa,使其具有nl个元件,并且范围从flpa至1-(1-nlpa)/fl。这稍后将用于将距发射点的网络距离转换为发射点调整因子。a.初始化零索引的矢量vlpa[0]=nlpa。b.如果fl=1,则vlpa完成并转到步骤iii。如果fl>1,则设定步长s=(1-nlpa)/flc.对于x=1至(fl-1),初始化x索引的矢量vlpa[x]=vlpa[x-1]+s。iii.确定每个网络与发射点(dlp)的距离。a.对于要保护的设计中的每个网络初始化整数值dlp=maxint(不在任何发射点下游的网络将保留dlp=maxint)。b.对于作为发射点的每个网络:i.对于要保护的设计中的每个网络初始化布尔值fv=0。该值指示是否已对于给定的可观察点访问了网络。ii.采用参数dcurr=0调用网络(net)负载id(步骤iii.b.iii)。iii.网络负载id:采用整数参数dcurr来表示到调查中的到发射点的当前距离。识别网络的下游负载,这将是可观察点或逻辑门输入。针对每个负载执行步骤iv和v:iv.如果负载是可观察点(主输出或触发器输入)且fv=0:1.设定dlp=min(dlp,dcurr)并设定fv=1。v.如果负载是逻辑门且fv=0:1.设定dlp=min(dlp,dcurr)并设定fv=1。2.对于每个逻辑门输出引脚,识别网络并递归调用网络负载id(步骤iii.b.iii),通过提供参数dcurr=dcurr+1将距发射点的距离增加1。iv.通过使用距发射点的网络距离以查找发射点调整矢量vlpa中的flpa来计算每个网络的选择权重ws。a.如果dlp>=fl,则没有调整因子,因此设定选择权重ws=cop并转到步骤v。否则转到来自矢量的查找因子(步骤iv.b)。b.来自矢量的查找因子:由于dlp<fl,因此设定flpa=vlpa[dlp]。c.设定选择权重ws=cop*flpa。下面的表1示出了对于nlpa和nl的各种值的示例性发射点调整矢量(vlpa)。nlpa是0和1之间的实数,并且nl是至少为1的整数。灰色框指示索引超出范围。索引=01234567nlpa=0.4且nl=20.40.7nlpa=0.4且nl=30.40.60.8nlpa=0.0且nl=80.00.1250.250.3750.50.6250.750.875表1-对于nlpa和nl的各种值的示例发射点调整矢量vlpa图9是示出给定nlpa=0.4,nl=2以及如图8所示计算的可观察点计数(cop)的选择权重(ws)的示例性计算的图。还示出了到发射点的距离(dlp)和发射点调整因子(flpa)的中间值。基于选择权重(ws)选择用于密钥门插入的网络密钥门位置选择方法的最后一步涉及使用先前计算的选择权重(ws)来选择用于密钥门插入的网络。下面给出的加权选择算法以伪随机选择为特征。期望避免纯粹确定性的选择过程。作为要避免的算法的示例,仅基于挑选最高选择权重来选择网络的“贪婪”方法将产生可预测且可重复的结果,并且可以引导攻击者发现密钥门位置。另一种方法是下面描述的方法,它避免了上述缺陷。v.基于升序选择权重(ws)对网络进行分类。vi.将分类的网络分组到nb个间隔的箱b[0]至b[nb-1],使得每个箱包含具有相似选择权重(ws)的网络。vii.确定从每个箱nn[0]至nn[nb-1]中选择的所需网络数。一般来说,应该从具有高选择权重的箱中而不是从具有低选择权重的箱中选择多个网络。viii.对于每个箱索引(x=0至x=nb-1),从箱b[x]伪随机地选择nn[x]网络。为了提供步骤vii的附加说明,图10a和图10b中示出了两种可能的选择分布。如图10a中所示的均匀分布近似未加权的随机网络选择,并且不被推荐。如图10b中所示的分段线性分布产生更有效的逻辑加密,因为将选择具有高选择权重的更多网络。存在许多可能的选择分布,并且可以定义定量度量以评估一个是否比另一个更有效。好的选择分布平衡了挑选功能最强大的网络(具有最高ws值的网络)的竞争目标,而不是进行不可预测的选择。在完成如上所述的步骤i-viii之后,已经确定了所有密钥门位置。然后,设计者可以继续逻辑加密电路的插入。用于选择伪装微电路插入点的拓扑方法上述用于选择用于逻辑加密目的的密钥门位置的拓扑方法也可用于使用电路拓扑选择伪装微电路插入点。用于伪装微电路选择插入点的技术类似于用于选择密钥门插入点的技术。混淆集成电路图11-13是示出可用于混淆包括多个互连的功能逻辑单元的集成电路的示例性操作的图,该多个互连的功能逻辑单元一起执行一个或多个逻辑功能。下面结合图4讨论图11-13,其示出了伪装微电路402的使用。在框1102中,识别通过插入密钥门来保护的集成电路的一部分中的一组第一逻辑节点(互连逻辑或存储元件之间的节点)。因此,这些逻辑节点被识别为插入点。可以使用上述技术执行该过程。在框1102中,针对所识别的第一组逻辑节点的一组逻辑节点中的每个逻辑节点,插入密钥门,使得仅当正确的密钥数据值被提供给密钥门的密钥输入时,密钥门控的第一逻辑节点的输出值等于非密钥门控的逻辑第一逻辑节点的输出值。该技术的示例在图3a中示出,其中插入密钥门kg1(nxor门),使得仅当正确的密钥数据值k1=1被提供给密钥门kg1的密钥输入时,密钥门控的第一逻辑节点o1的输出值等于非密钥门控的逻辑第一逻辑节点的输出值。接下来,插入编程逻辑302,用于将密钥数据信号编程到来自非易失性存储器304的密钥输入,如框1106中所示并在图3a中示出。接下来,在框1108中,识别多个互连单元的一个或多个群组。并且在框1110中,用具有至少一个伪装逻辑单元的逻辑等效的单元群组替换所识别的逻辑单元群组。这也例如在图3a中示出,其中使用伪装逻辑调用g1,其看起来像nor门但具有nand门的功能。图12是呈现可用于插入密钥门说明性步骤的图,使得仅当正确密钥数据值被提供给密钥门的密钥输入时,密钥门控的逻辑节点的输出值等于非密钥门控的第一逻辑节点的输出值。在框1202中,第一逻辑节点与其负载引脚断开。例如,参考图3a,门g1和门g2之间的原始连接断开。在框1204中,在第一逻辑节点处插入密钥门。再次参考图3a,这通过密钥门kg1的插入来说明。在框1206中,密钥门的逻辑输入中的一个与连接到第一逻辑节点的驱动器的信号连接,并且密钥门逻辑输入的其余部分连接到相关联的密钥数据信号,使得仅密钥数据信号逻辑值的唯一一组使密钥门控的逻辑节点的输出值等于非密钥门控的第一逻辑节点。再次参考图3a,这通过密钥门kg1的更低输入连接到门g1的输出以及k1输入连接到密钥门kg1来说明。尽管仅示出了一个密钥k1和密钥门kg1,但是可以实现多个密钥门kg和密钥逻辑值k。最后,在框1208中,密钥门的逻辑输出连接到第一逻辑节点的负载引脚。通过密钥门kg1的输出到门g2的输入的连接在图3a中示出。图13是示出用于用具有至少一个伪装逻辑单元的逻辑等效伪装的逻辑单元群组替换所识别的逻辑单元群组的示例性方法步骤的图。在框1302中,第二逻辑节点与其负载引脚断开。这在图4中示出,其中从插入点404到逻辑云2的输入被提供给逻辑云内的逻辑节点。在框1304中,插入伪装微电路402,其中伪装微电路402包括至少一个伪装门。伪装微电路402包括具有固定逻辑值的一个或多个逻辑输入408和逻辑输出410。在框1306中,识别集成电路的一组第三逻辑节点,一个节点用于每个伪装微电路逻辑输入410,并且这些第三逻辑节点连接到相关联的伪装微电路逻辑输入410。在框1308中,插入执行逻辑功能的终端门406。在一个实施例中,终端门406执行2-输入逻辑功能,但是需要更多输入的逻辑功能是可能的。例如,与伪装微电路402相关联的一个或多个终端门406与一个或多个相邻的逻辑门组合,从而产生具有三个或多个输入的一个或多个逻辑门。在框1310中,终端门逻辑输入中的一个连接到伪装微电路402的输出408(在图4所示的实施例中,终端门406的更低逻辑输入如此连接)。在框1312中,终端门逻辑输入的另一个连接到第二逻辑节点的驱动器,在该情况下,逻辑云404中的元件向插入点404提供输入。最后,在框1314中,终端门406的逻辑输出连接到第二逻辑节点负载引脚(先前描述的)。在一个实施例中,伪装微电路402具有输出值,该输出值具有为零的固定逻辑值,并且终端门406执行逻辑or功能。在另一实施例中,伪装微电路402具有输出值,该输出值具有为1的固定逻辑值,并且终端门406执行and功能。门的其它组合可用于实现类似的结果。硬件环境图14是示出可用于实现以上公开的处理元件的示例性计算机系统1400的图。计算机1402包括处理器1404和存储器,诸如随机存取存储器(ram)1406。计算机1402可操作地耦接到显示器1422,该显示器1422在图形用户界面1418b上向用户呈现诸如窗口的图像。计算机1402可以耦接到其它设备,诸如键盘1414、鼠标设备1416、打印机等。当然,本领域技术人员将认识到上述组件的任何组合,或任何数量的不同组件、外围设备和其它设备可以与计算机1402一起使用。通常,计算机1402在存储在存储器1406中的操作系统1408的控制下操作,并且与用户交流以接受输入和命令并通过图形用户界面(gui)模块1418a呈现结果。虽然gui模块1418b被描绘为单独的模块,但是执行gui功能的指令可以驻留或分布在操作系统1408、计算机程序1410中,或者用专用存储器和处理器实现。计算机1402还实现编译器1412,该编译器1412允许以诸如cobol、c++、fortran或其它语言的编程语言编写的应用程序1410被翻译成处理器1404可读代码。在完成之后,应用1410使用使用编译器1412生成的关系和逻辑来访问和操纵存储在计算机1402的存储器1406中的数据。计算机1402还可选地包括外部通信设备,诸如调制解调器、卫星链路、以太网卡或用于与其它计算机通信的其它设备。在一个实施例中,实现操作系统1408、计算机程序1410和编译器1412的指令有形地体现在计算机可读介质中,例如数据存储设备1420,其可以包括一个或多个固定或可移动数据存储设备,诸如zip驱动器、软盘驱动器1424、硬盘驱动器、cd-rom驱动器、磁带驱动器等。此外,操作系统1408和计算机程序1410包括指令,该指令当由计算机1402读取和执行时,使计算机1402执行在此描述的操作。计算机程序1410和/或操作指令也可以有形地体现在存储器1406和/或数据通信设备1430中,从而制造计算机程序产品或制品。这样,如在此使用的术语“制品”、“程序存储设备”和“计算机程序产品”旨在涵盖可从任何计算机可读设备或介质访问的计算机程序。本领域技术人员将认识到,在不脱离本公开的范围的情况下,可以对该配置进行许多修改。例如,本领域技术人员将认识到,可以使用上述组件的任何组合,或任何数量的不同组件、外围设备和其它设备。结论这结束了对本公开的优选实施例的描述。出于说明和描述的目的,已经呈现了优选实施例的前述描述。其并非旨在穷举或将本公开限制于所公开的精确形式。鉴于上述教导,许多修改和变化都是可能的。旨在是权利的范围不受该详细描述的限制,而是受所附权利要求的限制。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1