使得能够在硬件设备上执行软件应用的制作方法

xiaoxiao2020-7-22  12

使得能够在硬件设备上执行软件应用的制作方法
【专利摘要】本发明提供了一种用于使得能够依赖于硬件电路在硬件设备上执行软件应用、同时防止在另一硬件设备中执行应用的二进制拷贝的一种方法、硬件电路和硬件设备。源自于软件应用的询问数据被输入到硬件设备的硬件电路,其中,所述硬件电路被配置成执行确定性函数。响应数据由硬件设备生成,其被用来操纵软件应用的至少一部分以从而使得能够执行软件应用。
【专利说明】使得能够在硬件设备上执行软件应用
【技术领域】
[0001]本发明涉及保护软件应用。更具体地,本发明涉及使得能够在硬件设备上执行软件应用。
【背景技术】
[0002]软件混淆是一种用于实现软件程序、使得其难以逆向工程的已知技术。这种技术通常包括用表查找操作序列来替换软件函数并将函数查找与使得要发现函数和函数参数基本上不可行的变换函数合并。所得到的安全软件程序执行由已变换参数组成的输入和/或输出操作。这些已变换参数可能要求与安全软件程序对接的模块中的特定自适应。
[0003]数据和软件混淆技术利用变换函数来混淆中间结果。变换函数的概念不同于一般地参考图1说明的加密。
[0004]假设在未变换数据空间中存在具有多个数据元素的输入域ID。定义使用某个秘钥的加密函数E,其被配置成接受输入域ID的数据元素作为输入以在输出域OD中输送相应的已加密数据元素。通过应用使用与加密函数E所使用的秘钥相对应的秘钥的解密函数D,能够通过对输出域OD的数据元素应用解密函数D来获得输入域ID的原始数据元素。在非安全环境(通常称为“白盒”)中,假设对手知道输入和输出数据元素且在执行期间可访问加密函数E的内部。在此环境中除非特别警惕,否则秘钥可能被导出。
[0005]通过向输入域ID和输出域OD应用变换函数,能够在非安全环境中获得附加安全,即变换函数是输入和输出操作。变换函数T1将来自输入域ID的数据元素映射到已变换数据空间的已变换输入域ID’的已变换数据元素。类似地,变换函数T2将来自输出域OD的数据元素映射到已变换输出域0D’。现在能够在ID’与0D’之间定义已变换加密和解密函数E’和D’。在要执行逆变换的情况下,例如当要将结果传送至未变换空间时,T1和T2是注入项。
[0006]连同加密技术使用变换函数1\、T2意味着,通过应用变换函数T1来将域ID’的已变换数据元素输入到已变换加密函数E’,而不是将输入域ID的数据元素输入到加密函数E以获得输出域OD的已加密数据元素。已变换加密函数E’在加密操作中将逆变换函数T广与变换函数T2组合以保护机密信息,诸如秘钥。然后获得域0D’的已变换加密数据元素。当在已变换数据空间中分析输入数据和输出数据时,不能检索用于加密函数E或解密函数D的秘钥。
[0007]变换函数1\、T2选中的一个应是非平凡函数。在T1是平凡函数的情况下,输入域ID和ID’通常是同一域。在T2是平凡函数的情况下,输出域通常是同一域。
[0008]一般地,安全软件应用使用已变换中间结果,其在被拦截时是不可用的。这种性质使得能够保护安全软件应用中的机密数据。为了使得安全软件应用能够将其功能局限于几个(或一个)特定设备,若干技术是已知的。
[0009]变换技术能够用来保护各种各样的软件程序。图2和图3图示出如何能够用智能卡功能的安全软件实现(参见图3)来替换在数字TV环境(参见图2)中使用的物理智能卡的已知示例。应理解的是本发明不限于数字TV领域。
[0010]图2示意性地示出了典型数字TV接收机2a的示例,其从头端器I接收已加密数字TV内容并向输出设备4输出信号以便向最终用户显示数字TV内容。箭头指示如所指示的方向上的数据流。头端器I将数字TV内容发射到大量接收机2a。接收机2a使用输入模块21来获取已发射的数字TV信号,其随后被提供给内容处理模块22a。内容处理模块22a通常是基于用安全电子电路24a扩展以实现诸如加密、解密和安全秘钥存储的安全功能的通用处理单元23a(例如使用32位CPU)。此类处理可以涉及到在可拆卸附接的智能卡3中实现的处理步骤。内容处理的结果是适合于在诸如电视机的输出设备4上呈现的信号。[0011 ] 头端器1、安全电路24a和智能卡3是被实现成使得攻击者难以修改其预定操作的安全模块。输入模块21、处理单元23a、输出设备4和模块之间的接口通常是攻击者可访问的,因此不能依赖于其正确操作。
[0012]图3示意性地示出了已知数字TV接收机2a的替换示例,其从头端器I接收已加密数字TV内容并向输出设备4输出信号以便向最终用户显示数字TV内容。箭头指示如所指示的方向上的数据流。头端器I将数字TV内容发射到大量接收机2b。接收机2b使用输入模块21来获取已发射的数字TV信号,其随后被提供给内容处理模块22b。内容处理模块22b通常是基于用安全电子电路24b扩展以实现诸如加密、解密和安全秘钥存储的安全功能的通用处理单元23b (例如使用32位CPU)。
[0013]给定安全电路模块24b的一般可用性,能够用在内容处理模块22b中运行的安全软件实现来替换图2的智能卡3。关于这一点,处理单元23b配置有用于过去由智能卡实现的功能的附加软件。
[0014]如在图2的示例中,头端器I和安全电路24b是被实现成使得攻击者难以修改其预定操作的安全模块。输入模块21、处理单元23b、输出设备4和模块之间的接口通常是攻击者可访问的,因此不能依赖于其正确操作。为了在处理单元23b的攻击者可访问环境中保护智能卡功能,使用软件技术来实现该功能。安全电路24b包含用于一组秘密秘钥的存储器,其与处理单元23b的输出一起被用来导出内容秘钥以供在安全电路24b的解扰电路中使用。在制造过程期间安装秘密秘钥中的一个。这种所谓的芯片秘密秘钥被用来安全地加载其他秘密秘钥。秘钥加载消息被嵌入安全软件中,并被用来在安全模块中加载已知秘密秘钥。安全软件还具有固定秘钥加密例程以用以已加密形式存储在秘钥加载消息中的秘密秘钥来将内容秘钥加密。安全软件应用中的固定秘钥加密例程限制应用在能够将与安全软件应用相关联的秘钥加载消息解密的设备上执行。
[0015]用于使得能够在特定硬件设备上执行被混淆软件应用的已知技术(也称为节点锁定)具有共同点,即运行被混淆软件的处理单元的输出被安全电路用作到安全电路的一个或多个安全函数的输入。如果处理电路的输出是不正确的,则安全电路将不能正确地执行安全函数。虽然能够执行软件应用本身,但其并未被阻止。例如,在图2和图3的示例中,处理单元23a、23b的输出被安全电路24a、24b用作使得能够实现数字TV内容的解密的输入秘钥或作为接收机2a、2b知道(秘密)秘钥的限定符(qualifier)。
[0016]已知的是在处理单元中运行的软件应用可以对预定义存储器位置进行轮询并在应用的进一步执行中使用所得到的数据。如果所得到的数据是不正确的,则软件应用将正确地停止运行。存储器位置是例如包含例如唯一值或密码秘钥的特定硬件寄存器。由这种轮询方法提供的安全是有限的,因为存储器位置的内容可以被修改。
[0017]已知的是在处理单元中实现的探测函数可以例如激活物理不可克隆函数(PUF),其基于提供给函数的询问输入而产生响应结果。PUF难以实现,因为其具有初始化问题。与PUF相关联的另一问题是询问输入的发送器需要预先知道由询问输入触发时的PUF的可能响应输出,因为每个接收机中的每个PUF是唯一的,并且产生对询问的不可预测的响应。只能用询问-响应对的适当大型集合来表征PUF,其可以在制造时或在设备部署中的稍后阶段中通过测量对询问的响应来获得。
[0018]需要一种改进的技术,其使得能够在硬件设备中执行通用软件应用,同时防止应用或应用的二进制拷贝在另一硬件设备中的执行,而没有上文识别的现有技术的缺点。

【发明内容】

[0019]本发明的目的是提供一种使得能够在硬件设备中执行软件应用、同时防止在另一硬件设备中执行应用或应用的二进制拷贝的技术。
[0020]根据本发明的一方面,提出了一种计算机实现方法,其用于使得能够依赖于硬件设备中的硬件电路在硬件设备上执行软件应用。该方法包括向硬件设备的硬件电路输入源自于软件应用的询问数据。该硬件电路被配置成执行确定性函数。该方法还包括使用以询问数据作为到函数的输入的函数来生成响应数据。该方法还包括使用响应数据来操纵软件应用的至少一部分以从而使得能够执行软件应用。
[0021]根据本发明的一方面,提出了一种硬件电路,用于使得能够在包括硬件电路的硬件设备上且依赖于硬件电路来执行软件应用。该硬件电路被配置成执行确定性函数,其使用源自于软件应用的询问数据作为到函数的输入以生成用于操纵软件应用的至少一部分以从而使得能够执行软件应用的响应数据。
[0022]确定性函数不同于诸如PUF的非确定性函数。确定性函数通常在其被用特定的一组输入值调用的任何时间返回相同的结果。非确定性函数通常每当其被用特定的一组输入值调用时返回不同的结果。此外,确定性函数通常能够用数学方式来表示,而诸如PUF的非确定性函数不能用数学方式来表示。
[0023]软件应用的操作(或其操作的至少某些方面)取决于具有确定性函数的硬件电路的存在。因此,使得硬件设备能够将软件应用的使用解锁的是硬件电路的存在。因此,软件应用的执行被锚定至硬件电路,从而使得能够仅在包括具有确定性函数的硬件电路的特定硬件设备上执行软件应用。
[0024]应理解的是使得能够执行软件应用意味着能够正确地或按照意图来执行软件应用。来自并不意图与软件应用一起使用的硬件电路的响应数据可以用来操纵软件应用,但在这种情况下,软件应用将被不正确地操纵,导致例如执行软件应用而产生无意义的输出或中断。
[0025]权利要求2和15的实施例有利地使得能够在有限数目的硬件设备中执行软件应用。如果函数是一个硬件电路所独有的,则只有包括具有唯一函数的硬件电路的一个硬件设备能够执行软件应用。如果函数是一组硬件电路所独有的,则只有包括来自该组硬件设备电路的硬件电路的硬件设备能够执行软件应用。
[0026]权利要求3—6和16的实施例有利地使得能够在硬件电路中使用同样地已知的嵌入硬件中的密码函数。适当密码函数的示例是加密函数、解密函数、秘钥散列函数和伪随机数发生器。
[0027]权利要求7的实施例有利地使得能够当在硬件设备中执行时将软件应用锚定至硬件电路。可能的是逆响应数据是使得能够导出询问数据的数据或者其中询问数据已经由例如硬件电路进一步处理的数据。
[0028]权利要求8的实施例有利地使得能够当在硬件设备中执行时将软件应用中的密码函数锚定至硬件电路。
[0029]权利要求9的实施例有利地使得能够当在硬件设备中执行时使用固定秘钥密码函数将软件应用锚定至硬件电路。
[0030]权利要求10的实施例有利地使得能够当在硬件设备中执行时以替换方式将软件应用锚定至硬件电路。逆函数将硬件设备中的函数的输出与安全软件模块中的另一函数的输出相比较并使用比较结果来生成逆响应数据。如果比较结果是不正确的,则逆响应数据应被生成为使得其不同于询问数据,从而禁止软件应用的进一步执行。
[0031]权利要求11的实施例使得能够实现所述7 —10的实施例的替换。
[0032]权利要求12的实施例有利地使得能够将被锚定至硬件电路的已加密软件应用进行解密。
[0033]根据本发明的一方面,提出了一种用于向已加密软件应用添加随机数块的计算机实现方法。该方法包括将已加密软件应用的软件映像划分成等长度块。该方法还包括确定替换块,该代替块是将被随机数据块替换的块中的一个。该方法还包括向各块应用基于块密码的消息认证码(CMAC)函数直至该替换块。该方法还包括从最后一个块开始向各块应用反向的基于块密码的消息认证码(CMAC)函数直至该替换块之后的块。标签T等于用来将已加密软件加密的加密秘钥。使用CMAC秘钥K来将标签T解密。已解密标签T被添加到CMAC秘钥相关值V1和最后一个块以获得中间结果。使用CMAC秘钥K将中间结果解密。已解密中间结果被添加到前一块以获得另一中间结果并重复其他中间结果的解密和添加直至该替换块。该方法还包括将来自基于块密码的消息认证码(CMAC)函数的最后一个结果与反向的基于块密码的消息认证码(CMAC)函数的最后一个结果相加以获得随机数据块。该方法还包括用随机数据块来替换所述替换块。CMAC秘钥K对应于硬件设备的硬件电路中的另一 CMAC秘钥K。
[0034]因此,能够获得已加密软件应用,该解密被锚定至特定硬件设备的硬件电路。
[0035]权利要求17的实施例有利地使得能够在现有芯片或芯片组中嵌入硬件电路。
[0036]根据本发明的一方面,提出了一种硬件设备,包括具有上述特征中的一个或多个的硬件电路。
[0037]权利要求18和19的实施例有利地使得能够在频繁使用的硬件设备上执行软件应用。
[0038]根据本发明的一方面,提出了一种软件应用,其在被处理器执行时适于操纵软件应用的至少一部分以从而使得能够通过使用响应数据依赖于硬件设备中的硬件电路在硬件设备上执行软件应用,该响应数据是使用硬件电路中的使用询问数据作为到函数的输入的确定性函数生成的,其中,所述询问数据源自于软件应用。
[0039]在下文中将更详细地描述本发明的实施例。然而,应认识到的是可以不将这些实施例理解为限制用于本发明的保护范围。
【专利附图】

【附图说明】
[0040]将通过参考图中所示的示例性实施例更详细地解释本发明的各方面,在所述附图中:
图1是大体上说明变换函数和加密的图;
图2是用于处理已加密数字TV内容的现有技术数字TV接收机系统的示意图;
图3是用于处理已加密数字TV内容的另一现有技术数字TV接收机系统的示意图;
图4是根据本发明的示例性实施例的用于处理已加密数字TV内容的数字TV接收机系统的不意图;
图5是根据本发明的示例性实施例的被锚定至硬件电路的软件应用的示意图;
图6是根据本发明的示例性实施例的如在硬件电路中使用的CMAC函数的示意图;
图7是根据本发明的另一示例性实施例的如在硬件电路中使用的CMAC函数的示意
图;
图8是根据本发明的另一示例性实施例的如在硬件电路中使用的CMAC函数的示意
图;
图9是根据本发明的另一示例性实施例的被锚定至硬件电路的软件应用的示意图;
图10是根据本发明的另一示例性实施例的被锚定至硬件电路的软件应用的示意图;图11是根据本发明的另一示例性实施例的被锚定至硬件电路的软件应用的示意图;图12是根据本发明的另一示例性实施例的被锚定至硬件电路的软件应用的示意图;图13是根据本发明的示例性实施例的用于创建被锚定至硬件电路的软件应用的CMAC函数的示意图;
图14是根据本发明的示例性实施例的如在硬件电路中使用的加密函数的示意图。【具体实施方式】
[0041]本发明使得能够在硬件设备中执行软件应用,同时防止在另一硬件设备中执行应用或应用的二进制拷贝。向硬件设备的硬件电路输入源自于软件应用的询问数据。询问数据包括运行时间数据,诸如当在处理单元中执行时的应用的状态信息或参数值。替换地,询问数据包括应用本身的软件映像的至少一部分。硬件电路使用确定性函数来处理询问数据,其优选地是针对特定硬件电路唯一地定义的,并返回响应数据以用于软件应用的进一步处理。
[0042]可以使用各种技术来实现硬件电路。该硬件电路例如可以使用芯片上的晶体管网络来实现。另一示例是由同一芯片上的单独微控制器或在隔离过程中使用软件的实施方式。另一示例是使用密码协处理器的软件过程中的实施方式。另一示例是在同一印刷电路板(PCB)上但在包含CPU的主芯片外部使用节点锁定芯片。应理解的是硬件电路的实施方式不限于这些示例,并且可以使用其他已知技术来实现能够被配置成执行确定性函数的硬件电路。
[0043]确定性函数不同于诸如PUF的非确定性函数。确定性函数通常在其被用特定的一组输入值调用的任何时间返回相同的结果。非确定性函数通常每当其被用特定的一组输入值调用时返回不同的结果。此外,确定性函数通常能够用数学方式来表示,而诸如PUF的非确定性函数不能用数学方式来表示。已知的是可以通过向输出应用例如纠错机制来使得PUF的输出是确定性的,但是这不会使得PUF本身是确定性的。
[0044]安全和非安全软件应用两者都能够受益于本发明,但是为了获得最佳结果,使用例如软件混淆技术来保护软件应用,因为非安全软件应用可以被修改以忽视硬件电路。
[0045]在执行安全软件应用的情况下,安全软件应用的第一模块将运行时间数据作为询问数据发送到硬件电路。该硬件电路使用优选地唯一函数来处理询问数据并将响应数据返回至安全软件应用的第二模块以执行优选地唯一函数的逆运算以消除硬件电路的效果。由此,将软件应用有效地锚定至硬件电路。
[0046]在询问数据包括应用本身的软件映像的至少一部分的情况下,询问数据被输入到硬件电路。硬件电路使用优选地唯一函数来处理数据并返回响应数据,其可能在某些转换操作之后被用作解密秘钥以将软件映像解密。由此,将软件应用有效地锚定至硬件电路。
[0047]硬件电路的唯一性质及其输出的关联进一步处理使得基本上不可能在与其意图用于的设备不同的设备上运行软件应用。
[0048]可以在各种各样的CPU (包括嵌入式设备)、GPS和可编程I/O外围设备中包括硬件电路。
[0049]图4示意性地示出了如何能够在数字TV环境中使用本发明的示例。应理解的是本发明不限于数字TV领域,而是可以用来将任何软件应用锚定至包含硬件电路的CPU。硬件电路允许将抵抗白盒攻击的软件坚固地耦合到单个设备。本发明将硬件电路的唯一性扩展至被有效地锚定至硬件电路的软件应用。此类锚定软件应用能够在例如诸如数字TV接收机的嵌入式设备中或在例如PC、平板PC、智能电话、因特网(云)服务器、图形卡或任何其他I/o设备中使用。
[0050]在图4的示例中,数字TV接收机2c从头端器I接收已加密数字TV内容,并向输出设备4输出信号以便向最终用户显示数字TV内容。箭头指示如所指示的方向上的数据流。头端器I将数字TV内容发射到大量接收机2c。接收机2c使用输入模块21来获取已发射的数字TV信号,其随后被提供给内容处理模块22c。内容处理模块22c是基于用硬件电路24c扩展或嵌入的通用处理单元23c (例如使用32位CPU)。用于处理已加密数字TV内容的安全软件应用在处理单元23c中运行。内容处理的结果是适合于在诸如TV机的输出设备4上呈现的信号。
[0051]头端器I和硬件电路24c被实现成使得攻击者难以修改或观察其操作。输入模块
21、在处理单元23c上执行的软件、输出设备4和模块之间的接口通常是攻击者可访问的,因此不能依赖于其正确操作。
[0052]硬件电路24c实现处理包含例如来自安全应用的状态信息的询问数据的唯一函数。由硬件电路24c实现的函数的逆运算是在安全软件应用的模块中实现的以恢复初始状态。替换地,由模块输出使得能够导出初始状态的数据或其中进一步处理初始状态的数据。安全软件模块继承了由安全电路24c实现的函数的唯一性。由于安全软件模块优选地是唯一的,所以具有不同硬件电路的其他设备不能执行软件应用的二进制拷贝。用另一实现来替换安全软件模块要求由硬件电路24c实现的优选地唯一函数的知识或由安全软件模块实现的逆函数的知识。通过逆向工程,只能获取两个类型的知识。由于硬件电路24c和安全硬件模块两者的实现都非常难以逆向工程,所以在另一设备上执行应用的拷贝或修改拷贝是非常困难的。
[0053]图5示出了被锚定到硬件电路的软件应用的示例性实施例。软件应用或软件应用的一部分被实现为安全软件模块序列,即图5中的用IOla指示的安全软件模块i和用103a指示的安全软件模块i+Ι。每个安全软件模块101a、103a在变换域中交换参数和/或状态信息。通过将应用锚定至设备的硬件电路24c而将案件软件应用锚定至特定设备。
[0054]硬件电路24c配置有优选地唯一函数或优选地唯一数据,其驱动与在逆安全软件模块102a中实现的逆函数相对应的公共函数。由于安全软件模块之间的接口通过变换而受到保护,所以如果安全软件模块i IOla的输出被直接输入到逆安全软件模块102a,则安全软件应用将不会正确地操作。换言之,绕过硬件锚是不可能的,因为其导致不可运行的安全软件应用。
[0055]逆安全软件模块102a和安全软件模块i+1 103a能够被实现为将两者的功能组合的单个模块。
[0056]在图中未示出的替换示例性实施例中,硬件电路24c和逆安全软件模块102a的顺序被反向。在本实施例中,逆安全软件模块执行硬件电路24c的功能,并且硬件电路执行逆安全软件模块102a的功能。在本实施例中,逆安全软件模块和安全软件模块i IOla能够被实现为将两者的功能组合的单个模块。
[0057]能够使用例如具有诸如AES的集成块密码的现有密码协处理器来实现硬件电路。也称为消息认证码(MAC)的秘钥散列函数能够被用作锚函数。通过在硬件电路的个性化期间将唯一(或可唯一地导出的)秘钥放置在每个单独芯片组中而使得这些及其他密码函数是唯一的。其他秘钥加载机制也是可能的。诸如基于密码的MAC (CMAC)的基于块密码的MAC函数是特别适当的。CMAC标准适用于任何块密码,诸如,例如AES。CMAC标准也称为RFC-4493。
[0058]以下示例示出了使用CMAC标准的硬件锚的实现。应理解的是本发明不限于诸如CMAC的秘钥散列函数,并且本发明不限于AES块密码。
[0059]图6示出了用于b位消息M的CMAC计算的流程图的示例,即密码的块尺寸是b且消息M具有b位的长度。CMAC的输出称为标签T。由于块密码被用作基本构建块,所以标签T在尺寸方面也将是b。使用加法函数φ将消息M与秘钥相关值V2相加,并且然后使用加密函数用秘钥K来将消息M加密。
[0060]如果消息块短于b位,则对消息进行填充,如图7中所示。填充位用10...0来指示。在这种情况下,使用不同的秘钥相关值v2。
[0061]参考图8,为了计算用于任意长度输入消息M的CMAC,首先将该消息划分成长度b的消息块%。在图8的示例中,消息M具有IXb位的长度,并且消息M因此被划分成消息块札12...Mp每个块Mi在同一秘钥K下被用所选块密码加密,加密函数的输出被添加到下一个消息块。针对最后的块M1,在此加密之前也添加秘钥相关值%。
[0062]如果消息M的长度不是b的精确倍数,则如图7中所示填充最后一个消息块M115在这种情况下,将使用秘钥相关值V2而非
[0063]如下定义V1和V2的推导,其中,‘Encrypt,’表示使用秘钥K的加密(例如,AES-128加密),‘0b’表示b位的全零向量,‘MSB’表示最高有效位,‘〈〈’表示向左位旋转,并且φ表示异或。
【权利要求】
1.一种计算机实现方法,其用于使得能够依赖于硬件设备中的硬件电路在硬件设备上执行软件应用的计算机实现方法,该方法包括: 将源自于软件应用的询问数据输入到硬件设备的硬件电路,其中,该硬件电路被配置成执行确定性函数; 使用以询问数据作为到函数的输入的函数来生成响应数据;以及 使用响应数据来操纵软件应用的至少一部分以从而使得能够执行软件应用。
2.根据权利要求1所述的方法,其中,所述函数是一个或多个硬件电路所独有的。
3.根据权利要求1或权利要求2所述的方法,其中,所述函数是密码函数。
4.根据权利要求3所述的方法,其中,所述密码函数使用秘钥,其为在硬件电路的存储器中预先配置的秘钥和从在硬件电路的存储器中预先配置的唯一秘钥导出的秘钥中的一个。
5.根据权利要求4所述的方法,其中,所述密码函数使用从已从外部源接收到的秘钥加载消息导出的秘钥。
6.根据权利要求5所述的方法,其中,所述秘钥加载机制是硬件设备所独有的。
7.根据权利要求1一6中的任一项所述的方法,其中,所述软件应用包括第一安全软件部分、第二安全软件部分和被配置成执行逆函数以对硬件电路的函数求逆的逆模块,其中,所述询问数据包括当在处理单元中执行时第一安全软件部分结尾处的软件应用的运行时间数据的至少一部分,并且其中,响应数据的使用包括: 将响应数据输入到逆模块中的逆函数以从而获得逆响应数据,其中,如果逆模块中的逆函数与硬件电路中的函数匹配,则该逆响应数据等于询问数据;以及 将逆响应数据提供给第二安全软件部分以用于软件应用的进一步执行。
8.根据权利要求7所述的方法,其中,第一安全软件部分包括密码函数的第一部分,其中,第二安全软件部分包括密码函数的第二部分,并且其中,运行时间数据表示由密码函数的第一部分输出的密码函数的中间结果。
9.根据权利要求7所述的方法,其中,硬件电路中的函数包括被配置成使用固定秘钥的固定秘钥密码函数,并且其中,逆函数包括被配置成使用固定秘钥的逆固定秘钥密码函数。
10.根据权利要求7所述的方法,其中,所述软件应用还包括被配置成执行与硬件电路中的函数相同的另一函数的安全软件模块,该方法还包括: 将询问数据输入到安全软件模块; 使用被输入到所述另一函数的询问数据从所述另一函数生成另一响应数据;以及 将所述另一响应数据输入到逆模块中的逆函数以从而获得另一逆响应数据,其中,如果逆模块中的逆函数与安全软件模块中的所述另一函数匹配,则所述另一逆响应数据等于询问数据, 并且其中,所述逆函数包括比较函数以将响应数据与所述另一响应数据相比较。
11.根据权利要求7—10中的任一项所述的方法,其中,硬件电路和逆模块的顺序被反向,其中,所述硬件电路被配置成执行逆函数,并且其中,所述逆模块被配置成执行确定性函数。
12.根据权利要求1一6中的任一项所述的方法,其中,所述软件应用是已加密软件应用,其中,所述询问数据包括软件应用的软件映像的至少一部分,并且其中,响应数据的使用包括: 使用响应数据作为解密秘钥以将已加密软件应用的至少一部分解密。
13.一种用于向已加密软件应用添加随机数据块的计算机实现方法,该方法包括: 将已加密软件应用的软件映像划分成等长度块; 确定替换块,该代替块是将被随机数据块替换的块中的一个; 向各块应用基于块密码的消息认证码(CMAC)函数直至该替换块; 从最后一个块开始向各块应用反向的基于块密码的消息认证码(CMAC)函数直至该替换块之后的块,其中,标签T等于用来将已加密软件加密的加密秘钥,其中,使用CMAC秘钥K来将标签T解密,其中,已解密标签T被添加到CMAC秘钥相关值V1和最后一个块以获得中间结果,其中,使用CMAC秘钥K将中间结果解密,其中,已解密中间结果被添加到前一块以获得另一中间结果并重复其他中间结果的解密和添加直至该替换块; 将来自基于块密码的消息认证码(CMAC)函数的最后一个结果与反向的基于块密码的消息认证码(CMAC)函数的最后一个结果相加以获得随机数据块;以及 用随机数据块来替换所述替换块,其中,CMAC秘钥K对应于硬件设备的硬件电路中的另一 CMAC秘钥K。
14.一种用于使得能够在包括硬件电路的硬件设备上并依赖于硬件电路来执行软件应用的硬件电路,其中,所述硬件电路被配置成执行确定性函数,该确定性函数使用源自于软件应用的询问数据作为到函数的输入以生成用于操纵软件应用的至少一部分以从而使得能够执行软件应用的响应数据。
15.根据权利要求14所述的硬件电路,其中,所述函数是各硬件设备的一个或多个硬件电路所独有的以使得能够在各硬件设备上执行软件应用。
16.根据权利要求14或权利要求15所述的硬件电路,其中,所述函数是使用秘钥的密码函数,该秘钥是以下各项中的一个: 在硬件电路的存储器中预先配置的秘钥, 从在硬件电路的存储器中预先配置的唯一秘钥导出的秘钥,以及 从已从外部源接收到的秘钥加载消息导出的秘钥。
17.根据权利要求14一16中的任一项所述的硬件电路,其中,所述硬件电路被嵌入CPU、GPU和可编程I/O外围设备中的一个中。
18.—种包括根据权利要求14一 17中的任一项所述的硬件电路的硬件设备。
19.根据权利要求18所述的硬件设备,其中,所述硬件设备是数字TV接收机、PC、平板PC、智能电话、因特网(云)服务器和图形卡中的一个。
20.一种软件应用在被处理器执行时适于操纵软件应用的至少一部分以从而使得能够通过使用响应数据依赖于硬件设备中的硬件电路在硬件设备上执行软件应用,该响应数据是使用硬件电路中的使用询问数据作为到函数的输入的确定性函数生成的,其中,所述询问数据源自于软件应用。
【文档编号】G06F21/12GK103608820SQ201280026330
【公开日】2014年2月26日 申请日期:2012年3月19日 优先权日:2011年3月30日
【发明者】J.M.杜门 申请人:耶德托公司

最新回复(0)