一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于混淆半导体装置中的操作码命令的系统和方法与流程

2021-11-05 18:41:00 来源:中国专利 TAG:
1.本文中所公开的示例实施例涉及用于半导体装置的保护措施。
背景技术
::2.防止黑客获得对集成电路的未授权访问权是芯片设计者的重点。一些黑客技术会尝试对芯片的网表进行逆向工程。网表指示芯片上的电子电路的组件的逻辑和/或物理连通性,所述连通性可以例如根据电路组件的实例、节点、连接点、电线和属性来指示。一旦获得访问权,黑客就可能会尝试使用网表来复制芯片的硬件,以窃取专属机密或出售伪造芯片。其它黑客技术会尝试访问芯片软件,以插入恶意软件、木马或软件后门,或寻找现有软件后门用于进一步入侵。其它技术则侧重于复制芯片软件。针对这些和其它黑客技术的现有对策存在显著缺点,并且已证实所述对策在减少资金和名誉损失以及充分保护半导体装置制造商的专属权益方面是不成功的。技术实现要素:3.根据一个或多个实施例,一种用于保护半导体装置的方法包括:接收用于芯片的第一操作码命令;将所述第一操作码命令混淆为第二操作码命令;基于所述芯片的物理不可克隆功能(puf)生成密钥;以及控制混淆为所述第二操作码命令的所述第一操作码命令和所述密钥的传送以使之存储在所述芯片中,其中混淆为所述第二操作码命令的所述第一操作码命令具有与所述第二操作码命令相同的语法并且执行与所述第二操作码命令不同的功能,并且其中所述密钥包括指示将所述第一操作码命令混淆为所述第二操作码命令所执行的混淆类型的值。所述方法代表了对如何实现使恶意攻击者更难以对代码执行逆向工程问题的解决方案。4.生成所述密钥可以包括:逻辑地组合第一值和第二值,其中所述第一值对应于所述puf的值,并且其中所述第二值基于指示将所述第一操作码命令混淆为所述第二操作码命令所执行的所述混淆类型的所述值。所述第一操作码命令可以为第一条件分支命令,并且所述第二操作码命令可以为第二条件分支命令。所述第二条件分支命令可以为第一条件分支命令的反转。所述第一操作码命令可以为若不等于则分支(bne)命令,并且所述第二操作码命令可以为若等于则分支(beq)命令。所述混淆类型可以为反转。5.生成所述密钥可以包括:生成对应于所述反转的值的反转标志;并且逻辑地组合所述反转标志和所述puf的值。所述反转标志和所述puf的所述值可以是基于异或运算逻辑地组合的。所述方法可以包括:将所述puf的所述值存储在存储位置中;以及控制指令指针到所述芯片的传送,其中所述指令指针指示所述芯片中的存储区域中的位置,可以在所述位置检索所述密钥,用于将混淆为所述第二操作码命令的所述第一操作码命令转换成所述第一操作码命令的未混淆形式以供执行。6.根据一个或多个实施例,一种用于控制集成电路芯片的方法包括:从所述芯片中的第一存储区域获得第一值;从所述芯片中的第二存储区域获得第二值;基于所述第一值和所述第二值生成第三值;基于所述第三值将混淆为第二操作码命令的第一操作码命令转换成所述第一操作码命令的未混淆形式以供执行,其中所述第一值对应于所述芯片的物理不可克隆功能(puf),并且其中所述第二值为包括指示将所述第一操作码命令混淆为所述第二操作码命令所执行的混淆类型的信息的密钥,混淆为所述第二操作码命令的所述第一操作码命令具有与所述第二操作码命令相同的语法并且执行与所述第二操作码命令不同的功能。所述方法代表了对如何实现使恶意攻击者更难以对代码执行逆向工程问题的替代性解决方案。7.生成所述第三值可以包括:逻辑地组合所述第一值和所述第二值,其中所述第一值和所述第二值的所述逻辑组合恢复所述密钥,所述密钥用于将混淆为所述第二操作码命令的所述第一操作码命令转换成所述第一操作码命令的未混淆形式。所述第一操作码命令可以为第一条件分支命令,并且所述第二操作码命令可以为第二条件分支命令。所述第二条件分支命令可以为第一条件分支命令的反转。所述第一操作码命令可以为若不等于则分支(bne)命令,并且所述第二操作码命令可以为若等于则分支(beq)命令。所述混淆类型可以为反转。所述逻辑组合可以包括异或运算。获得所述第二值可以包括:从所述芯片上的第一存储区域检索所述密钥,所述第一存储区域对应于由生成混淆为所述第二操作码命令的所述第一操作码命令的控制器指示的指令指针。8.根据一个或多个实施例,一种集成电路芯片包括:存储器,所述存储器被配置成存储指令;以及处理器,所述处理器被配置成执行所述指令以:从所述芯片中的第一存储区域获得第一值;从所述芯片中的第二存储区域获得第二值;基于所述第一值和所述第二值生成第三值;基于所述第三值将混淆为第二操作码命令的第一操作码命令转换成所述第一操作码命令的未混淆形式以供执行,其中所述第一值对应于所述芯片的物理不可克隆功能(puf),并且其中所述第二值为包括指示将所述第一操作码命令混淆为所述第二操作码命令所执行的混淆类型的信息的密钥,混淆为所述第二操作码命令的所述第一操作码命令具有与所述第二操作码命令相同的语法并且执行与所述第二操作码命令不同的功能。9.所述处理器可以:基于所述第一值和所述第二值的逻辑组合生成所述第三值,所述第一值和所述第二值的所述逻辑组合可以恢复所述密钥,所述密钥用于将混淆为所述第二操作码命令的所述第一操作码命令转换成所述第一操作码命令的未混淆形式以供执行。所述第一操作码命令可以为第一条件分支命令,并且所述第二操作码命令可以为第二条件分支命令。附图说明10.结合图式,本发明的额外目标和特征将从以下详细描述和所附权利要求书变得更显而易见。尽管示出并描述了若干示例实施例,但在每个附图中,相同的附图标记标识相同的部分,在附图中:11.图1示出了用于为半导体装置提供保护的系统的实施例;12.图2示出了半导体装置中的操作码转换逻辑的实施例;13.图3示出了用于为半导体装置提供保护的方法的实施例;14.图4示出了包括转换逻辑的集成电路芯片的实施例;15.图5示出了用于生成和存储保护信息的实施例;16.图6示出了根据实施例的操作码命令转换的例子;17.图7示出了根据一个或多个实施例的操作码命令转换的例子;18.图8示出了指令指针查找表的例子;19.图9示出了用于选择性地控制操作码命令转换的逻辑的例子;20.图10示出了用于转换受保护的半导体装置中的操作码命令的方法的实施例;并且21.图11示出了半导体装置中的操作码转换逻辑的实施例。具体实施方式22.应理解,附图仅为示意性的并且未按比例绘制。还应理解,贯穿各附图使用相同的附图标记指示相同或类似的部分。23.描述和图式示出了各种示例实施例的原理。因此,将了解,本领域的技术人员将能够设计各种布置,尽管本文中未明确地描述或示出所述布置,但所述布置体现本发明的原理且包括在本发明的范围内。此外,本文中所引述的所有例子主要旨在明确地用于教学目的,以帮助读者理解本发明的原理和由发明人提供的用以深化本领域的概念,并且所有例子应视为并不限于此类特定引述的例子和条件。另外,除非另有指示(例如,“或另外”或“或在替代方案中”),否则如本文中所使用的术语“或”是指非排他性的或(即,和/或)。另外,本文中所描述的各种示例实施例不一定相互排斥,因为一些示例实施例可以与一个或多个其它示例实施例组合以形成新的示例实施例。例如“第一”、“第二”、“第三”等描述词不意味着限制所论述元件的次序,用于区分一个元件与下一元件,且通常是可互换的。例如最大值或最小值之类的值可以是预先确定的,并且可以基于申请设置为不同的值。24.示例实施例涉及一种用于对半导体装置执行硬件和/或软件混淆的系统和方法。在一个实施例中,实施系统和方法以混淆集成电路芯片的可操作代码(操作码)中的一个或多个条件分支命令的反转状态。反转一个或多个条件分支命令的状态有效地将操作码变换为另一版本,所述另一版本在语法上类似但在语义上包含一些反转。也就是说,操作码程序产生不同的输出。仅当修改硬件以补偿其插入的位置处的反转时,才会恢复原始语义。此变换的目的是使不知道硬件在何处补偿反转的黑客无法理解代码,由此使恶意攻击者更难以对代码执行逆向工程。25.图1示出了系统的实施例,用于生成用于例如集成电路芯片的半导体装置的混淆操作码。系统包括控制器10,所述控制器用于生成用于芯片20的混淆操作码和相关联的保护信息。控制器可以包括为配置逻辑的一部分,所述配置逻辑由芯片制造商使用,用于通过指令来对芯片进行编程(或以其它方式进行配置),从而实施顾客的预期应用。26.参考图1,控制器10包括存储区域11、处理器12、查找表13和逻辑14。存储区域11以例如由芯片制造商生成的未混淆形式存储用于芯片的操作码。未混淆操作码可以包括许多指令,包括例如条件分支命令。出于说明的目的,将未混淆操作码论述为具有第一条件分支命令和第二条件分支命令,应理解,在另一实施例中,操作码可以包括可以混淆的不同数量的分支命令或其它类型的指令。27.第一条件分支命令可以为若等于则分支(beq)命令,并且第二分支命令可以为若不等于则分支(bne)命令。beq命令可以为当满足条件时分支(或“跳转”)到指定地址(或执行特定功能)的机器语言指令。相反地,bne命令可以为当不满足条件时分支(或“跳转”)到指定地址(或执行特定功能)的机器语言指令。因此,beq和bne分支命令可以被视为相对于彼此反转的命令。28.处理器12包括转换器15,所述转换器执行将存储区域11中的未混淆操作码转换成混淆操作码。可以例如通过以预定方式混淆第一条件分支命令或第二条件分支命令中的至少一个来执行所述转换。在一个实施例中,可以通过将beq命令或bne命令中的至少一个转换成一个或多个预定命令来混淆存储区域11中的未混淆操作码。例如,未混淆操作码中的一个或多个bne命令可以如下方式混淆:当加载到芯片中时,所述bne命令看起来像是beq命令。在一个实施方案中,未混淆操作码中的每一bne命令可以转换成混淆操作码中的beq命令。在另一实施方案中,可以仅转换预定数量的bne命令,而可不转换未混淆操作码中的其它bne命令,使得bne命令出现在混淆操作码中。由于所述混淆,恶意攻击者可能会因为操作码的逻辑看起来有误而感到困惑。即使攻击者怀疑操作码已混淆了,攻击者也将不能确定哪一条件分支命令为真正的beq命令,并且将不能确定哪一条件分支命令被伪装为beq命令但实际上对应于未混淆形式的bne命令。处理器12(包括转换器15)可以基于存储在存储器18中的指令而执行本文中所描述的操作,所述存储器可以为各种类型的非暂时性计算机可读介质之一。29.为了允许芯片的处理器21恢复未混淆代码,转换器12可以生成控制信息,所述控制信息可以由芯片处理器用于确定哪些操作码命令已混淆以及哪些操作码命令尚未混淆。在一个实施例中,控制信息可以包括反转标志。当反转标志具有第一逻辑值时,芯片的处理器21可以确定对应的分支命令尚未反转,例如分支命令未混淆。当反转标志具有第二逻辑值时,芯片的处理器可以确定对应的分支命令已反转,例如分支命令相对于存储在例如控制器的存储区域11中的其原始未混淆形式已混淆。30.因此,例如,对于未混淆分支命令beq,转换器15可以将第一反转标志设置为逻辑0值,以指示(存储在芯片中的)分支命令beq为未混淆命令。对于未混淆分支命令bne,转换器15可以将第二反转标志设置为逻辑1值,以指示(存储在芯片中的)混淆分支命令相对于其未混淆分支命令反转。转换器15可以针对操作码生成一个或多个反转标志16以输入到逻辑14,并且可以将混淆操作码17输出到芯片以供存储。术语“混淆操作码”不一定意味着操作码中的每一指令或命令已混淆,而是意味着操作码包括已以由其相关联的反转标志指示的方式混淆的至少一个命令或指令。31.查找表13存储对应于芯片的一个或多个物理不可克隆功能(puf)的信息,所述puf例如可能已由制造商通过工厂测试确定。物理不可克隆功能可以充当数字指纹,所述数字指纹可以用作唯一地标识芯片20的依据。此数字指纹可以基于芯片的一个或多个物理和/或电特性。在一些情况下,这些特性可能是由于芯片制造工艺期间出现的特征尺寸和/或掺杂浓度变化而产生的。在其它情况下,所述特性可能会使上电时芯片20的触发器、寄存器和/或存储器位置(例如,随机存取存储器(ram)值)中存在一个或多个初始值。因为变化和特性是不可控制的(即使制造器也无法控制),所以所得特性可以用于形成唯一地标识装置的数字指纹。以此方式,装置指纹可以被视为不可克隆的。32.在一个实施例中,芯片20的每一puf可以对应于由芯片20的特性和变化生成的一个或多个位值。制造商已知puf,并且可以通过测试获得所述puf并使之保持机密,以保护芯片的安全。在一个例子中,查找表13中指示的一个或多个puf基于每次芯片20上电时加载到触发器中的上电值(例如,逻辑一或逻辑零)。因为芯片变化和特性是恒定的,所以对于每一次上电操作,相同的逻辑值可以存储在相同的触发器中。因此,可以单独地或与一个或多个其它puf组合地通过此上电值来唯一地标识芯片。芯片20的寄存器和存储器位置可以类似方式存储逻辑上电值,所述逻辑上电值还可以用作芯片20的puf。33.存储在查找表13中的信息指示对应于芯片20的puf的逻辑值,并且由芯片的处理器用以恢复(例如,转换回未混淆形式)一个或多个操作码命令或指令,所述一个或多个操作码命令或指令是在芯片出售或以其它方式公开可用之前由控制器的转换器15混淆的。34.逻辑14组合存储在查找表中的puf的逻辑值和由转换器15针对芯片操作码的对应条件分支命令生成的反转标志的逻辑值。逻辑14可以包括用于执行逻辑组合的异或逻辑。在另一实施例中,异或逻辑可以与额外的逻辑组合,或逻辑14可以执行不同于异或组合的逻辑组合。35.在一个实施例中,控制器的处理器12生成指令指针(ip)值19,所述ip值19允许存储在查找表13中的puf值与分配给操作码命令中的对应一个的反转标志相关。在一些实施例中,查找表13可以存储对应于针对相应数量的操作码命令生成的反转标志的多个puf值。在此情况下,处理器12可以针对每一puf值生成不同的ip值。在一个实施例中,每一指令指针值可以为对应的puf的不同查找表地址。同样,查找表13的ip值可以与芯片20中的一个或多个查找表的相同ip值相关,所述查找表用于存储puf密钥值和/或puf,以针对存储在芯片20的存储区域22中的操作码中的混淆条件分支命令恢复反转标志的值。36.由逻辑14执行的逻辑组合生成的逻辑值可以被认为是puf_key值。puf密钥值可以由芯片处理器用以针对混淆操作码中的相应数量的命令恢复反转标志,如下文将更详细地论述。控制器10传送由逻辑14生成的puf密钥值,以存储在芯片20中。在一个实施例中,控制器可以将对应指令指针传送到芯片20以与puf密钥值相关联地存储,由此允许检索puf密钥值以恢复混淆操作码的原始命令。在此情况下,芯片20可以包括查找表,所述查找表是基于与存储在控制器的查找表13中的puf相同的指令指针值(例如,具有存储在相同地址处的puf密钥)而操作的。37.芯片20包括处理器21、存储区域22和至少一个查找表23。处理器21执行操作以从转换器15生成的且存储在存储区域22中的混淆操作码中恢复未混淆操作码。恢复未混淆操作码是基于存储在至少一个查找表23中的puf密钥值执行的。在一个实施例中,查找表23可以存储与存储在控制器的查找表13中的芯片的puf相同的puf。在一个实施例中,芯片20可以包括两个查找表:用于存储puf密钥值的查找表23和用于存储芯片的puf的查找表24。在一个实施例中,查找表24可以由puf发生器代替,如下文更详细地描述。处理器22可以基于存储在存储器25中的指令而执行如本文中所描述的操作。此存储器可以为非暂时性计算机可读介质,例如所述存储器可以为各种只读存储器或随机存取存储器中的任一种,如具有存储器18的情况。38.图2示出了处理器21的实施例,所述处理器包括反转标志恢复逻辑210、转换器220和用于存储和/或执行从转换器220输出的未混淆操作码的区域230。反转标志恢复逻辑210恢复反转标志的编码到存储在查找表23中的puf密钥值中的逻辑值。通过逻辑地组合每一puf密钥值和对应的puf(从表23或24输出)之一的逻辑值来恢复这些值,所述puf用于针对相关联的存储在芯片的存储区域22中的操作码中的混淆命令之一在控制器中生成puf密钥值。在逻辑14执行异或运算的情况下,逻辑210也将执行异或运算。39.例如,可以基于等式1执行由逻辑14生成puf密钥值,其中表示逻辑异或运算符。[0040][0041]反转标志恢复逻辑210可以基于等式2而针对给定混淆操作码命令恢复反转标志的逻辑值,其中puf和puf密钥值是从芯片中的查找表检索的。[0042][0043]通过应用等式2,可以通过逻辑210获得反转标志的逻辑值的例子,如表1中。[0044]pufpuf密钥逻辑反转标志分支命令00异或0beq11异或0beq01异或1bne10异或1bne[0045]表1[0046]可以例如使用相关联的ip值从表23和/或表24检索puf密钥和puf,所述相关联的ip值是从控制器10接收的并且与表中的相应地址相关。(如图2所示,ip可以与puf密钥值相关联地存储在例如查找表23中)。[0047]一旦已恢复反转标志的逻辑值,所述逻辑值就可以由转换器220用以将相关联的混淆命令(例如,对应于相关的ip值)之一转换成或解释为其在操作码230中的原始未混淆命令。表2示出了条件分支命令beq和bne情况下的转换的例子,如先前所论述。一旦已执行转换,就可以执行未混淆操作码以实施芯片的预期应用。[0048]反转标志转换操作0beq没有进行转换1将beq转换成bne[0049]表2[0050]在一个实施例中,混淆操作码可以包括尚未混淆的条件分支命令和已混淆的条件分支命令的组合。因为转换器15的输出包括至少一个或多个已混淆的条件分支命令,所以输出到芯片20的操作码可以被称作混淆操作码。[0051]图3示出了用于生成用于芯片20的混淆操作码和puf密钥值的方法的实施例。所述方法可以由例如图1的系统执行,或可以由另一系统执行。[0052]参考图3,所述方法包括在310,确定芯片20的一个或多个puf值。如先前所指示,可以基于在制造商进行生产测试期间读出puf发生器而确定的puf值以及可以存储在控制器的查找表13中的puf值为对应于相应指令指针ip的地址。在一个实施例中,在puf值存储在表13中之后,可以修改控制器以防止对表13中的puf值进行未授权读出,从而阻止攻击者访问puf值。[0053]在320,检索存储区域11中的未混淆操作码并通过转换器15将所述未混淆操作码转换成混淆操作码。转换器可以针对预定类型的命令选择性地执行操作码转换。如先前所指示,这些命令包括beq命令和bne命令,所述beq命令和bne命令被认为是彼此的反转版本。可以针对相同或不同类型的一对互补条件分支命令或多对互补条件分支命令执行操作320中的转换。[0054]在330,针对从转换器15输出的混淆操作码中的受混淆影响的一个或多个预定类型的条件分支命令生成反转标志。可以基于转换器15是否混淆了命令(例如,从beq反转为bne,或反之亦然)而预先确定每一反转标志的逻辑值。例如,转换器15可以针对尚未反转的每一beq命令生成逻辑零的反转标志,并且针对已反转的每一bne命令生成逻辑一的反转标志。[0055]在340,包括转换器逻辑的处理器12将指令指针(ip)值指定到查找表13中的地址,所述查找表13存储针对受混淆影响的一对互补条件分支命令类型的每一分支命令的反转标志的puf值。(例如,未混淆操作码中的一些类型的命令或指令可以不指定为用于混淆,而其它类型(例如,beq/bne对)可以指定为用于混淆)。当多个beq命令包括在操作码中时,分配给每一beq命令的反转标志可以具有相同的逻辑值,但可以分配有不同的puf。在另一实施例中,多个(或所有)beq命令可以分配有相同的puf以及具有相同的逻辑值的反转标志。当多个bne命令包括在操作码中时,分配给每一bne命令的反转标志可以具有相同的逻辑值,但可以分配有不同的puf值。在另一实施例中,多个(或所有)bne命令可以分配有相同的puf值以及具有相同的逻辑值的反转标志。[0056]在350,针对受混淆影响类型的每一条件分支命令的反转标志可以和从查找表13输出的对应的puf之一逻辑地组合,以生成用于所述命令的对应puf密钥值。如先前所指示,逻辑组合可以基于异或逻辑或不同的逻辑。[0057]在360,处理器12控制混淆操作码的传送以使之存储在存储区域22中,并且控制逻辑14生成的每一puf密钥的传送以使之存储在芯片20的查找表23中。这可以包括对操作码和密钥执行预处理以使之存储在芯片中(在此情况下,另一实体或装置可以实际上执行将操作码和密钥复制或加载到芯片中)和/或实际上将操作码和密钥传送到芯片中的相应位置。如先前所指示,芯片20的puf值可能已预先由制造商存储在查找表13中。在一个实施例中,芯片20的查找表和存储区域可以为一次性可编程(otp)存储区域。[0058]图4示出了用于转换存储在芯片400中的混淆操作码接着执行所述代码的另一实施例。参考图4,集成电路芯片400包括存储区域410、反转标志恢复逻辑420和处理器430。存储区域410存储例如图1的控制器10所接收的混淆操作码。混淆操作码包括一个或多个预定条件分支命令,所述预定条件分支命令已反转且分配有如本文中所描述的对应反转标志。反转用以混淆那些命令且因此有效地混淆用于芯片的整个操作码。[0059]反转标志恢复逻辑420包括puf密钥存储器421、puf发生器422和逻辑423。puf密钥存储器421以逐个ip为基础存储针对混淆操作码中的混淆条件分支命令的相应实例的puf密钥。例如在制造商的初始化或配置操作期间,可以从生成混淆操作码的控制器10接收puf密钥并且所述puf密钥可以存储在存储区域410中。[0060]puf发生器422在芯片的测试阶段生成puf。如先前所描述,物理不可克隆功能可以基于制造工艺期间出现的变化、值或其它标志而对应于芯片的某一独特特性。例如,puf可以对应于上电时和执行复位操作之前加载到芯片的寄存器、触发器或存储器地址中的初始值。由于芯片的独特特性,此初始值在每次上电时都是恒定的。puf发生器422可以包括检测器,所述检测器读出寄存器、触发器或存储器地址中的一个或多个的初始上电值以形成一个对应的puf。在其它实施例中,例如基于关于芯片的尺寸、迹线、组件或其它特征的变化,puf发生器可以检测到或生成不同的puf。[0061]图5示出了将本文中所描述的一个或多个puf值输出到图1的控制器10的puf发生器422的例子。一旦接收到所述puf值,控制器就将对应于一个或多个puf的值存储在puf查找表13中。如先前所描述,然后puf用于生成与由转换器混淆的操作码命令(或指令)相关的对应反转标志。puf发生器422在芯片400中的反转标志恢复逻辑420中输出puf,以通过将芯片中的混淆操作码转换回其未混淆形式来恢复反转标志并接着应用所述反转标志。[0062]再次参考图4,不同的puf可以用于与来自puf密钥存储器421的相关联的puf密钥之一的输出同步的混淆条件分支命令的不同实例。puf密钥存储器421和puf发生器422的输出是例如基于相同的指令指针ip而同步的。在一个实施例中,puf发生器420可以包括针对对应的ip值存储puf值的查找表。通过使用ip值,反转标志恢复逻辑确保针对处理器正执行的混淆操作码中一个对应的条件分支命令,puf密钥和puf彼此相关。[0063]在一个实施例中,puf发生器422可以为随机存取存储器(ram)。在此情况下,puf可以对应于不同ram单元的上电值,并且puf发生器可以被处理(或配置)成基于一个对应的ram单元输出puf。在另一实施例中,puf发生器422可以为通过选择一对“相同的”信号路径p1和p2来进行配置的仲裁器puf。如果p1比p2快,则puf值可以为逻辑零。相反地,如果p1比p2慢,则puf值可以为逻辑一。[0064]逻辑423与用于针对混淆操作码生成反转标志的控制器10中的逻辑匹配。在此例子中,逻辑423执行如先前所描述的异或函数。异或函数针对混淆操作码中的对应条件分支命令逻辑地组合puf和puf密钥,以恢复用于所述命令的反转标志。反转标志可以为一位值,所述一位值指示分支命令是否已发生反转,例如原始操作码中的bne命令是否已混淆使得所述bne命令看起来像存储在存储区域421中的beq命令。[0065]处理器430可以为芯片400的中央处理单元(cpu)或专用处理器。在一个实施例中,处理器可以为ic芯片处理器的多个核心之一。处理器基于存储区域410中的混淆操作码执行用于芯片的操作码。对于混淆操作码中的尚未混淆(例如,出于保护目的尚未反转或以其它方式进行修改)的命令和指令,处理器430以正常方式执行那些命令和指令,例如不考虑反转标志。对于已混淆的命令(例如,条件分支命令),处理器可以执行操作码执行,例如图4所示。[0066]在图4的例子中,处理器430包括指令指针堆栈431、状态标志寄存器432、逻辑433和分支执行逻辑434。指令指针堆栈431针对混淆操作码中的指令和命令中的相应指令和命令存储指令指针,或在一个实施例中,针对受控制器的混淆影响类型的条件分支命令‑‑例如beq命令和bne命令‑‑存储指令指针。在此后一情况中,处理器可以基于命令或指令是否具有存储在堆栈431中的对应指令指针而确定特定操作码命令或指令是否已混淆。[0067]状态标志寄存器432存储对应于正执行的操作码的指令或命令的位。这些位的值可以用作一依据,所述依据用于确定是否应在从存储区域430接收到当前操作码命令或指令时执行所述当前操作码命令或指令,或是否应在执行之前反转所述当前操作码命令或指令。例如,具有逻辑零值的状态标志位可以指示当前操作码命令或指令应在不反转的情况下由处理器执行。相反地,具有逻辑一值的状态标志位可以指示当前操作码命令或指令应在执行之前反转,因为所述当前操作码命令或指令已由控制器混淆。寄存器位的逻辑值可以例如基于由逻辑433执行的运算类型。[0068]逻辑433逻辑地组合状态标志位和一个对应的反转标志值,以生成用于输入到分支执行逻辑434中的控制信号435。基于逻辑433执行的逻辑组合,允许反转标志反转相应处理器状态标志,之后在分支命令执行控制器中估计所述反转标志。在一个实施例中,分支执行逻辑434以逐个命令为基础(以逐个指令为基础)对从存储区域431接收到的操作码进行解码,基于从逻辑433输出的控制信号转换(例如,反转)操作码中已混淆的条件分支命令,接着以命令的反转形式或未反转形式执行所述命令。[0069]例如,逻辑433可以执行异或运算。当状态标志位和反转标志具有相同的值(即,两者均为真或两者均为假)时,逻辑433生成指示当前操作码命令或指令将在不反转的情况下由分支命令执行控制器执行的控制信号。当状态标志位和反转标志具有不同的值(即一个为真,另一个为假)时,逻辑433生成指示当前操作码命令或指令将在执行之前由分支命令执行控制器435反转的控制信号。[0070]因此,通过混淆由图1的控制器执行的操作码,即使攻击者能够采集存储在ic芯片中的操作码,也可以防止恶意攻击者理解的方式唯一地混淆硬件(例如,条件分支逻辑)和软件(操作码)两者。更具体地说,在一个实施例中,执行芯片的硬件和软件的组合混淆,所述组合混淆可能被证实比分别地混淆芯片的硬件和软件的实施例更有效。此外,本文中所描述的实施例可以单独方式或与其它混淆和/或安全措施一起应用。[0071]图6示出了根据本文中所描述的一个或多个实施例的可以通过混淆转换的未混淆操作码的可能变化6101到6104的例子。在此例子中,用于混淆原始操作码命令的转换包括反转操作,例如反转一个或多个bne命令以使其看起来像beq命令。当beq命令和bne命令成对时,将未混淆代码的以下变化转换成beq/beq对620:beq/beq、beq/bne、bne/beq和bne/bne。在一个实施例中,所述对中的每一命令可以包括其自身的反转标志,以指示所述命令中的对应命令是否已反转(混淆)。[0072]图7示出了图1的控制器可以如何针对混淆操作码中的预定数量的beq命令中的每一个和预定数量的bne命令中的每一个生成反转标志的例子。在此例子中,预定数量的beq命令和预定数量的bne命令可以为相同的数量或不同的数量。在一个实施例中,命令可以根据图6所指示的变化成对。[0073]参考图7,用于成对的命令中的第一条件分支交换命令的反转标志710是基于执行分配给所述第一条件分支交换命令的puf与puf密钥之间的异或运算而生成的,所述puf和puf密钥分别为puf1和puf_key1。用于成对的命令中的第二条件分支交换命令的反转标志720是基于执行分配给所述第二条件分支交换命令的puf与puf密钥之间的异或运算而生成的,所述puf和puf密钥分别为puf2和puf_key2。如表2所示且根据先前所论述的beq/bne混淆例子,当第一命令和第二命令之一(或两者)的未混淆版本为bne时,对应的反转标志具有逻辑一值(基于puf和puf密钥值的逻辑组合)。同样,当第一命令和第二命令之一(或两者)的未混淆版本为beq时,对应的反转标志具有逻辑零值(基于puf和puf密钥值的逻辑组合)。在表2中,符号i1到i4指示对应的变化(6101到6104)并且功能指示对应的一对条件分支交换命令。[0074][0075]根据一个或多个实施例,puf密钥存储器(或表)可以被配置成使得存储器/表地址的数量与命令密钥的数量之间不存在一一对应的关系。例如,考虑操作码包括一百万(1m)个命令的情况。为了支持一一对应的关系,指令指针(ip)地址范围也必须为1m,以在用于存储相同数量的对应puf密钥的puf密钥存储器/表中提供存储位置。提供存储器或表来容纳1m个ip地址太大了,以至于对于许多应用来说是低效或不可能的。尤其是在当考虑到用于存储1m个puf密钥的存储区域/存储器可以具备针对逆向工程的特定保护特征的情况下。[0076]根据一个实施例,可以明显减小存储puf密钥(ip)的存储器/表的大小。例如,对于许多应用,可能仅需要混淆100个条件分支命令,以实现对操作码的足够防护级别。通过减少要混淆的命令的数量(而不是混淆所有命令或指令),要存储的puf密钥的数量以及puf密钥存储器/表的大小可以成比例地减小一个或多个数量级。例如,如果仅混淆了100个条件分支命令,则puf密钥存储器/表的大小可以减小到包括例如仅1,000个地址,以存储ip、puf以及关于存储在那些地址中的puf密钥的反转标志信息。在一个实施例中,可以在与所述ip值的分支命令相同的cpu循环中提供puf_key(ip)位和根据所述puf_key(ip)位计算的反转标志。[0077]在一个实施例中,并且根据前述例子,在1,000(1k)个地址的puf密钥存储器中,puf_key(ip)对ip值的条目可以在整个ip地址空间上分布。覆盖1m地址空间的1k存储器将具有ip地址0、1k、2k、…、1023k的条目,如图8所指示。在ip值未由条件分支命令覆盖的情况下,相应的反转标志可以设置为0。这是不相关的情况,因为不存在条件分支命令。仅在ip值处存在条件分支命令的情况下,相应的puf_key(ip)位才是相关的,并且可以和相应的puf(ip)位逻辑地组合(例如,进行异或运算)以获得反转标志。因此,转换器只可能选择混淆由puf_key存储器覆盖的那些分支命令。考虑到常见操作码中较多数量的现有分支命令,选择要混淆的较少数量的分支命令提高了效率和性能,同时还提供了足够的防黑客保护。[0078]图9示出了可以包括在芯片的处理器中的逻辑的例子,所述逻辑用于生成指示要执行的当前操作码命令是否具有存储在puf密钥存储器中的指令指针(ip)值的控制信号。此控制信号可以由相关联的芯片中的处理器用以选择性地确定当前操作码命令是否呈需要转换成未混淆形式的混淆形式。[0079]参考图9,逻辑900包括从ip堆栈接收指令指针值的门910。门910可以为例如或非门,所述或非门接收与要在芯片中执行的当前操作码命令相对应的指令指针值的地址的预定数量的最低有效位。出于说明性目的,整个ip值的长度示出为20位(0、…、19),并且所述数量的最低有效位的长度示出为10位(0、…、9)。在一个实施例中,逻辑900可以包括用以将最低有效位路由到或非门910的路由逻辑。所述或非门的输出产生指示当前操作码命令是否具有puf密钥存储器中的指令指针(且因此具有puf密钥值)的控制信号(ip_in_lookup_table)。如果具有所述指令指针,则可以基于当前操作码命令的对应反转标志的逻辑值执行所述当前操作码命令(不进行反转或进行反转)。[0080]图10示出了用于转换混淆操作码以供在半导体装置中执行的方法的实施例。可以例如根据本文中所描述的集成电路实施例中的任一个执行所述方法。[0081]参考图10,在1010,所述方法包括从芯片中的第一存储区域获得第一值。第一值可以为例如从先前所描述的puf发生器获得的芯片的puf。在1020,所述方法包括从芯片中的第二存储区域获得第二值。第二值可以为与从芯片中的存储区域22接收的所存储混淆操作码命令相对应的puf密钥值。可以例如基于对应的指令指针值获得puf密钥值和/或puf值。在1030,基于第一值和第二值生成第三值。所述第三值可以为通过逻辑地组合puf密钥值和puf值获得的混淆命令的反转标志。在1040,一旦已恢复反转标志的值,就基于所恢复的反转标志的值将混淆操作码命令转换成其对应的未混淆操作码命令。在1050,可以接着执行未混淆操作码命令,以执行芯片的预期应用。如先前所指示,混淆操作码命令和未混淆操作码命令可以分别为例如beq命令和bne命令。[0082]图11示出了用于转换存储在芯片1100中的混淆操作码接着执行所述代码的另一实施例。此实施例包括图4中所阐述的逻辑,以选择性地控制操作码分支命令的执行。[0083]参考图11,集成电路芯片1100可以包括与集成电路芯片400中的特征相同的特征,不同之处在于此实施例包括ip_in_lookup_table门1110和额外逻辑1120。如先前所指示,ip_in_lookup_table门1110连续地从ip堆栈接收指令指针值,接着确定操作码命令是否具有存储在puf密钥存储器中的对应puf密钥。例如,可以基于如先前所描述的ip值中的每一个的最低有效位而执行这一操作。[0084]从ip_in_lookup_table门1110输出的控制信号确定当前操作码命令是否呈混淆形式,且因此需要在执行之前进行转换(例如,反转)。这可以通过以下方式来实现:通过与门1120逻辑地组合异或门的输出(对应于图4的实施例中的反转标志)与从ip_in_lookup_table门1110输出的控制信号。如果门1110的输出为逻辑一,则与门输出指示当前命令存在puf密钥且需要转换成未混淆形式的反转标志。否则,如果门1110的输出为逻辑零,则与门不会输出反转标志,并且会在不执行反转操作的情况下执行当前操作码命令。[0085]在一个实施例中,可以执行硬件和软件加水印操作。因为使用独特的puf可以实现此加水印,这确保了从制造商的角度出发,每一ic芯片的puf_key存储器通过其独特的puf_key表进行编程。在一个或多个实施例中,这也是可能的,因为混淆操作码可能是特定于ic的。这提供了加水印的可能,它可以提供针对某些威胁的额外保护,例如针对不可信的芯片制造商、测试中心和其它类型的第三方的威胁。这可能会防止制造商生产过量的晶片以在水货市场上出售所述晶片或者报告在实际封装和出售管芯时晶片的破损情况,或者防止测试中心出售略有故障的ic。[0086]在一个实施例中,可以实施一种或多种保护以防止硬件和软件克隆。硬件混淆技术妨碍了对ic芯片的网表的读取和理解所述网表的能力,因此可以实施所述硬件混淆技术以防止恶意攻击者重新构建ic并将恶意软件、木马,软件后门等添加到芯片。然而,硬件混淆不会例如基于从不可信的晶片制造器获得的gds2‑布局文件而自动妨碍直接克隆芯片的布局的能力。[0087]然而,根据本文中所描述的实施方案,可以使用puf来防止克隆,所述puf使得每一将要进行的克隆变得“独特”且因此不可用。同时,可通过使用如本文中所描述的反转标志和puf密钥值(还特定于芯片的puf中的相应puf)来恢复对使硬件和软件两者混淆的puf的使用。因此,即使克隆了硬件,克隆的软件(操作码)也将不会在芯片上运行,这是因为每一芯片的puf是独特和未知的,且因此无法克隆。[0088]根据本文中所描述的一个或多个实施例执行的混淆可以如下方式实施,所述方式不会不利地影响或以其它方式干扰可以针对芯片处理器(cpu)实施的任何优化技术。例如,本文中所描述的混淆可能不会使混淆操作码的执行慢于未混淆操作码的执行。例如,可以实施混淆,从而不添加可能会损害代码效率的额外指令。同样,可以实施本文中所描述的混淆,以保持分支对称性(可以创建安全关键的操作码,使得例如“如果”表述的两个分支具有相同数量的命令、采用相同数量的计算周期等)。同样,在一个或多个实施例中,可以保持高速缓存效率(例如,可以从快速高速缓存而不是慢速存储器获取的存储器内容的百分比)。[0089]另外,一个或多个实施例可以不损害芯片的以下特征:分支预测(例如,关于未来分支的成功预测的百分比)、推测执行(例如,对执行推测执行以及在预测错误的情况下逆转结果的努力)以及代码存储器效率(例如,使用基于页面的访问来快速获得页面,而不是缓慢地获得分散的数据)。[0090]可以通过本文中所描述的一个或多个实施例来满足对防止芯片的这些方面受到损害的要求,特别是(但不排他地)当混淆操作码中的条件分支命令的反转是所执行的唯一修改时。在这些实施例中,混淆操作码的结构可能恰好与未混淆操作码的结构相同。[0091]另外,根据一个或多个实施例实施硬件混淆可以在芯片的功耗、面积需求、puf实施方案(例如,面积消耗、对特殊处理选项的需求等)和时序(例如,在时序关键的路径上不添加额外延迟)方面花费最小开销。例如,可以实现这些有利影响,这是因为对于至少一些实施例,主要硬件修改仅涉及在安全otp、puf发生器中添加puf密钥表以及反转处理器(cpu)分支单元中的分支命令。不需要在核心库中进行任何更改,也不需要对过程进行任何更改。此外,在一个或多个实施例中,仅可以使用入侵性最小且满足所有相关设计规则的标准数字逻辑单元(例如,触发器、多路复用器等)。不需要(增加成本和设计复杂性的)专用硬件。因此,可以从成本和设计角度方面有效地执行硬件混淆。[0092]本文中所描述的硬件和软件混淆技术还可以具有协同效应。例如,混淆硬件和软件两者仅允许在对应硬件上执行预期软件。这提高了逆向工程的弹性,同时防止了芯片硬件的明显增加。此外,基于puf和puf密钥结合反转标志执行混淆改进了本文中所描述的实施例的稳定性和效率。[0093]可以实现前述实施例的变型和/或组合,以形成额外的特征和/或实施例。例如,在一个实施例中,可以使用特定于ic的puf密钥表来实施混淆,并且对于来自制造商的多个ic芯片,混淆操作码可以为相同的。例如,就条件beq和bne命令而言,beq分支命令可以在不具有bne命令的混淆操作码中使用(这是因为bne命令已混淆为beq命令)。以此方式,所有ic具有相同的混淆操作码,但基于对每一单个ic芯片唯一的不同puf而具有不同的puf_key表。[0094]在另一实施例中,puf密钥表和混淆操作码可以为特定于ic芯片的。例如,生成混淆操作码的转换器不仅可以针对多个(或所有)混淆分支命令使用一个分支命令(例如,beq),还可以使用beq命令和bne命令的(真或伪)随机混合。可以相应地调整puf_key值。然后,每一ic芯片不仅可以具有专用puf_key表,还可以具有仅可在所述芯片上执行的专用混淆操作码。此实施例的一个优点在于,提供了防止复制(操作码)软件的额外保护。[0095]在另一实施例中,使混淆操作码成为特定于ic芯片的,并且puf密钥表对于多个ic芯片来说可以为相同的。因为puf_key值对于多个ic芯片来说是相同的,所以混淆操作码可以根据芯片的唯一puf值puf(id)包含beq分支命令和bne分支命令。这可以允许在没有puf密钥存储器/表的情况下使用实施例。[0096]在另一实施例中,多个ic芯片可以具有相同的混淆操作码和相同的编码表。因此,不使用ic芯片特有的puf。同样,不使用ic芯片特有的puf密钥表。在一些情况下,此实施例可能更容易在生产和编程中处理,同时仍为操作码提供保护,以使所述操作码免受想要理解其的攻击者的攻击。[0097]在另一实施例中,转换器可以混淆除条件分支命令之外的操作码中的命令或指令。例如,可以将操作码命令seq(若等于则设置)和操作码命令sne(若不等于则设置)之一混淆为这两个命令中的另一者。[0098]本文中所描述的方法、过程、系统和/或操作可以通过将由计算机、处理器、控制器或其它信号处理装置执行的代码或指令来执行。根据一个或多个实施例,代码或指令可以存储在非暂时性计算机可读介质中。介质可以存储指令,所述指令在由一个或多个处理器执行时执行本文中所描述的实施例的操作。因为详细描述了形成方法(或计算机、处理器、控制器或其它信号处理装置的操作)的基础的算法,所以用于实施方法实施例的操作的指令可以将计算机、处理器、控制器或其它信号处理装置变换成用于执行本文中方法的专用处理器。[0099]处理器、转换器、逻辑、发生器、控制器、门以及本文中所公开的实施例的其它信息生成、处理和计算特征可以逻辑实施,所述逻辑例如可以包括硬件、软件或硬件和软件两者。当至少部分地以硬件实施时,处理器、转换器、逻辑、发生器、控制器、门以及实施例的其它信息生成、处理和计算特征可以是例如各种集成电路中的任一个,包括但不限于专用集成电路、现场可编程门阵列、逻辑门的组合、芯片上系统、微处理器或另一类型的处理或控制电路。[0100]当至少部分地以软件实施时,处理器、转换器、逻辑、发生器、控制器、门以及实施例的其它信息生成、处理和计算特征可以包括例如存储器或其它存储装置,用于存储将由例如计算机、处理器、微处理器、控制器或其它信号处理装置执行的代码或指令。因为详细描述了形成方法(或计算机、处理器、微处理器、控制器或其它信号处理装置的操作)的基础的算法,所以用于实施方法实施例的操作的代码或指令可以将计算机、处理器、控制器或其它信号处理装置变换成用于执行本文中的方法的专用处理器。[0101]从前述描述中将显而易见的是,可以硬件实施本发明的各种示例性实施例。此外,各种示例性实施例可以实施为存储在非暂时性机器可读存储介质——例如易失性或非易失性存储器上的指令,所述指令可以由至少一个处理器读取和执行,以执行本文中详细描述的操作。非暂时性机器可读存储介质可以包括用于以机器可读形式存储信息的任何机构,例如个人计算机或膝上型计算机、服务器或其它计算装置。因此,非暂时性机器可读存储介质可以包括只读存储器(rom)、随机存取存储器(ram)、磁盘存储介质、光学存储介质、快闪存储器装置以及类似的存储介质,但不包括暂时性信号。[0102]尽管已特别参考各种示例性实施例的某些示例性方面来详细描述了各种示例性实施例,但应理解,本发明容许其它示例实施例,并且本发明的细节容许在各种显而易见的方面的修改。如本领域的技术人员容易显而易见的,可以进行变化和修改,同时保持在本发明的精神和范围内。所述实施例可以进行组合以形成额外的实施例。因此,前述公开内容和附图仅出于说明目的,并且不以任何方式限制本发明,本发明仅由权利要求书限定。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献