CN103608820A - 使得能够在硬件设备上执行软件应用 - Google Patents

使得能够在硬件设备上执行软件应用 Download PDF

Info

Publication number
CN103608820A
CN103608820A CN201280026330.7A CN201280026330A CN103608820A CN 103608820 A CN103608820 A CN 103608820A CN 201280026330 A CN201280026330 A CN 201280026330A CN 103608820 A CN103608820 A CN 103608820A
Authority
CN
China
Prior art keywords
function
secret key
hardware circuit
software application
software
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201280026330.7A
Other languages
English (en)
Other versions
CN103608820B (zh
Inventor
J.M.杜门
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Irdeto BV
Original Assignee
Irdeto BV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Irdeto BV filed Critical Irdeto BV
Publication of CN103608820A publication Critical patent/CN103608820A/zh
Application granted granted Critical
Publication of CN103608820B publication Critical patent/CN103608820B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明提供了一种用于使得能够依赖于硬件电路在硬件设备上执行软件应用、同时防止在另一硬件设备中执行应用的二进制拷贝的一种方法、硬件电路和硬件设备。源自于软件应用的询问数据被输入到硬件设备的硬件电路,其中,所述硬件电路被配置成执行确定性函数。响应数据由硬件设备生成,其被用来操纵软件应用的至少一部分以从而使得能够执行软件应用。

Description

使得能够在硬件设备上执行软件应用
技术领域
本发明涉及保护软件应用。更具体地,本发明涉及使得能够在硬件设备上执行软件应用。
背景技术
软件混淆是一种用于实现软件程序、使得其难以逆向工程的已知技术。这种技术通常包括用表查找操作序列来替换软件函数并将函数查找与使得要发现函数和函数参数基本上不可行的变换函数合并。所得到的安全软件程序执行由已变换参数组成的输入和/或输出操作。这些已变换参数可能要求与安全软件程序对接的模块中的特定自适应。
数据和软件混淆技术利用变换函数来混淆中间结果。变换函数的概念不同于一般地参考图1说明的加密。
假设在未变换数据空间中存在具有多个数据元素的输入域ID。定义使用某个秘钥的加密函数E,其被配置成接受输入域ID的数据元素作为输入以在输出域OD中输送相应的已加密数据元素。通过应用使用与加密函数E所使用的秘钥相对应的秘钥的解密函数D,能够通过对输出域OD的数据元素应用解密函数D来获得输入域ID的原始数据元素。在非安全环境(通常称为“白盒”)中,假设对手知道输入和输出数据元素且在执行期间可访问加密函数E的内部。在此环境中除非特别警惕,否则秘钥可能被导出。
通过向输入域ID和输出域OD应用变换函数,能够在非安全环境中获得附加安全,即变换函数是输入和输出操作。变换函数T1将来自输入域ID的数据元素映射到已变换数据空间的已变换输入域ID'的已变换数据元素。类似地,变换函数T2将来自输出域OD的数据元素映射到已变换输出域OD'。现在能够在ID'与OD'之间定义已变换加密和解密函数E'和D'。在要执行逆变换的情况下,例如当要将结果传送至未变换空间时,T1和T2是注入项。
连同加密技术使用变换函数T1、T2意味着,通过应用变换函数T1来将域ID'的已变换数据元素输入到已变换加密函数E',而不是将输入域ID的数据元素输入到加密函数E以获得输出域OD的已加密数据元素。已变换加密函数E'在加密操作中将逆变换函数Τ1 -1与变换函数T2组合以保护机密信息,诸如秘钥。然后获得域OD'的已变换加密数据元素。当在已变换数据空间中分析输入数据和输出数据时,不能检索用于加密函数E或解密函数D的秘钥。
变换函数T1、T2选中的一个应是非平凡函数。在T1是平凡函数的情况下,输入域ID和ID'通常是同一域。在T2是平凡函数的情况下,输出域通常是同一域。
一般地,安全软件应用使用已变换中间结果,其在被拦截时是不可用的。这种性质使得能够保护安全软件应用中的机密数据。为了使得安全软件应用能够将其功能局限于几个(或一个)特定设备,若干技术是已知的。
变换技术能够用来保护各种各样的软件程序。图2和图3图示出如何能够用智能卡功能的安全软件实现(参见图3)来替换在数字TV环境(参见图2)中使用的物理智能卡的已知示例。应理解的是本发明不限于数字TV领域。
图2示意性地示出了典型数字TV接收机2a的示例,其从头端器1接收已加密数字TV内容并向输出设备4输出信号以便向最终用户显示数字TV内容。箭头指示如所指示的方向上的数据流。头端器1将数字TV内容发射到大量接收机2a。接收机2a使用输入模块21来获取已发射的数字TV信号,其随后被提供给内容处理模块22a。内容处理模块22a通常是基于用安全电子电路24a扩展以实现诸如加密、解密和安全秘钥存储的安全功能的通用处理单元23a(例如使用32位CPU)。此类处理可以涉及到在可拆卸附接的智能卡3中实现的处理步骤。内容处理的结果是适合于在诸如电视机的输出设备4上呈现的信号。
头端器1、安全电路24a和智能卡3是被实现成使得攻击者难以修改其预定操作的安全模块。输入模块21、处理单元23a、输出设备4和模块之间的接口通常是攻击者可访问的,因此不能依赖于其正确操作。
图3示意性地示出了已知数字TV接收机2a的替换示例,其从头端器1接收已加密数字TV内容并向输出设备4输出信号以便向最终用户显示数字TV内容。箭头指示如所指示的方向上的数据流。头端器1将数字TV内容发射到大量接收机2b。接收机2b使用输入模块21来获取已发射的数字TV信号,其随后被提供给内容处理模块22b。内容处理模块22b通常是基于用安全电子电路24b扩展以实现诸如加密、解密和安全秘钥存储的安全功能的通用处理单元23b(例如使用32位CPU)。
给定安全电路模块24b的一般可用性,能够用在内容处理模块22b中运行的安全软件实现来替换图2的智能卡3。关于这一点,处理单元23b配置有用于过去由智能卡实现的功能的附加软件。
如在图2的示例中,头端器1和安全电路24b是被实现成使得攻击者难以修改其预定操作的安全模块。输入模块21、处理单元23b、输出设备4和模块之间的接口通常是攻击者可访问的,因此不能依赖于其正确操作。为了在处理单元23b的攻击者可访问环境中保护智能卡功能,使用软件技术来实现该功能。安全电路24b包含用于一组秘密秘钥的存储器,其与处理单元23b的输出一起被用来导出内容秘钥以供在安全电路24b的解扰电路中使用。在制造过程期间安装秘密秘钥中的一个。这种所谓的芯片秘密秘钥被用来安全地加载其他秘密秘钥。秘钥加载消息被嵌入安全软件中,并被用来在安全模块中加载已知秘密秘钥。安全软件还具有固定秘钥加密例程以用以已加密形式存储在秘钥加载消息中的秘密秘钥来将内容秘钥加密。安全软件应用中的固定秘钥加密例程限制应用在能够将与安全软件应用相关联的秘钥加载消息解密的设备上执行。
用于使得能够在特定硬件设备上执行被混淆软件应用的已知技术(也称为节点锁定)具有共同点,即运行被混淆软件的处理单元的输出被安全电路用作到安全电路的一个或多个安全函数的输入。如果处理电路的输出是不正确的,则安全电路将不能正确地执行安全函数。虽然能够执行软件应用本身,但其并未被阻止。例如,在图2和图3的示例中,处理单元23a、23b的输出被安全电路24a、24b用作使得能够实现数字TV内容的解密的输入秘钥或作为接收机2a、2b知道(秘密)秘钥的限定符(qualifier)。
已知的是在处理单元中运行的软件应用可以对预定义存储器位置进行轮询并在应用的进一步执行中使用所得到的数据。如果所得到的数据是不正确的,则软件应用将正确地停止运行。存储器位置是例如包含例如唯一值或密码秘钥的特定硬件寄存器。由这种轮询方法提供的安全是有限的,因为存储器位置的内容可以被修改。
已知的是在处理单元中实现的探测函数可以例如激活物理不可克隆函数(PUF),其基于提供给函数的询问输入而产生响应结果。PUF难以实现,因为其具有初始化问题。与PUF相关联的另一问题是询问输入的发送器需要预先知道由询问输入触发时的PUF的可能响应输出,因为每个接收机中的每个PUF是唯一的,并且产生对询问的不可预测的响应。只能用询问-响应对的适当大型集合来表征PUF,其可以在制造时或在设备部署中的稍后阶段中通过测量对询问的响应来获得。
需要一种改进的技术,其使得能够在硬件设备中执行通用软件应用,同时防止应用或应用的二进制拷贝在另一硬件设备中的执行,而没有上文识别的现有技术的缺点。
发明内容
本发明的目的是提供一种使得能够在硬件设备中执行软件应用、同时防止在另一硬件设备中执行应用或应用的二进制拷贝的技术。
根据本发明的一方面,提出了一种计算机实现方法,其用于使得能够依赖于硬件设备中的硬件电路在硬件设备上执行软件应用。该方法包括向硬件设备的硬件电路输入源自于软件应用的询问数据。该硬件电路被配置成执行确定性函数。该方法还包括使用以询问数据作为到函数的输入的函数来生成响应数据。该方法还包括使用响应数据来操纵软件应用的至少一部分以从而使得能够执行软件应用。
根据本发明的一方面,提出了一种硬件电路,用于使得能够在包括硬件电路的硬件设备上且依赖于硬件电路来执行软件应用。该硬件电路被配置成执行确定性函数,其使用源自于软件应用的询问数据作为到函数的输入以生成用于操纵软件应用的至少一部分以从而使得能够执行软件应用的响应数据。
确定性函数不同于诸如PUF的非确定性函数。确定性函数通常在其被用特定的一组输入值调用的任何时间返回相同的结果。非确定性函数通常每当其被用特定的一组输入值调用时返回不同的结果。此外,确定性函数通常能够用数学方式来表示,而诸如PUF的非确定性函数不能用数学方式来表示。
软件应用的操作(或其操作的至少某些方面)取决于具有确定性函数的硬件电路的存在。因此,使得硬件设备能够将软件应用的使用解锁的是硬件电路的存在。因此,软件应用的执行被锚定至硬件电路,从而使得能够仅在包括具有确定性函数的硬件电路的特定硬件设备上执行软件应用。
应理解的是使得能够执行软件应用意味着能够正确地或按照意图来执行软件应用。来自并不意图与软件应用一起使用的硬件电路的响应数据可以用来操纵软件应用,但在这种情况下,软件应用将被不正确地操纵,导致例如执行软件应用而产生无意义的输出或中断。
权利要求2和15的实施例有利地使得能够在有限数目的硬件设备中执行软件应用。如果函数是一个硬件电路所独有的,则只有包括具有唯一函数的硬件电路的一个硬件设备能够执行软件应用。如果函数是一组硬件电路所独有的,则只有包括来自该组硬件设备电路的硬件电路的硬件设备能够执行软件应用。
权利要求3—6和16的实施例有利地使得能够在硬件电路中使用同样地已知的嵌入硬件中的密码函数。适当密码函数的示例是加密函数、解密函数、秘钥散列函数和伪随机数发生器。
权利要求7的实施例有利地使得能够当在硬件设备中执行时将软件应用锚定至硬件电路。可能的是逆响应数据是使得能够导出询问数据的数据或者其中询问数据已经由例如硬件电路进一步处理的数据。
权利要求8的实施例有利地使得能够当在硬件设备中执行时将软件应用中的密码函数锚定至硬件电路。
权利要求9的实施例有利地使得能够当在硬件设备中执行时使用固定秘钥密码函数将软件应用锚定至硬件电路。
权利要求10的实施例有利地使得能够当在硬件设备中执行时以替换方式将软件应用锚定至硬件电路。逆函数将硬件设备中的函数的输出与安全软件模块中的另一函数的输出相比较并使用比较结果来生成逆响应数据。如果比较结果是不正确的,则逆响应数据应被生成为使得其不同于询问数据,从而禁止软件应用的进一步执行。
权利要求11的实施例使得能够实现所述7—10的实施例的替换。
权利要求12的实施例有利地使得能够将被锚定至硬件电路的已加密软件应用进行解密。
根据本发明的一方面,提出了一种用于向已加密软件应用添加随机数块的计算机实现方法。该方法包括将已加密软件应用的软件映像划分成等长度块。该方法还包括确定替换块,该代替块是将被随机数据块替换的块中的一个。该方法还包括向各块应用基于块密码的消息认证码(CMAC)函数直至该替换块。该方法还包括从最后一个块开始向各块应用反向的基于块密码的消息认证码(CMAC)函数直至该替换块之后的块。标签T等于用来将已加密软件加密的加密秘钥。使用CMAC秘钥K来将标签T解密。已解密标签T被添加到CMAC秘钥相关值V1和最后一个块以获得中间结果。使用CMAC秘钥K将中间结果解密。已解密中间结果被添加到前一块以获得另一中间结果并重复其他中间结果的解密和添加直至该替换块。该方法还包括将来自基于块密码的消息认证码(CMAC)函数的最后一个结果与反向的基于块密码的消息认证码(CMAC)函数的最后一个结果相加以获得随机数据块。该方法还包括用随机数据块来替换所述替换块。CMAC秘钥K对应于硬件设备的硬件电路中的另一CMAC秘钥K。
因此,能够获得已加密软件应用,该解密被锚定至特定硬件设备的硬件电路。
权利要求17的实施例有利地使得能够在现有芯片或芯片组中嵌入硬件电路。
根据本发明的一方面,提出了一种硬件设备,包括具有上述特征中的一个或多个的硬件电路。
权利要求18和19的实施例有利地使得能够在频繁使用的硬件设备上执行软件应用。
根据本发明的一方面,提出了一种软件应用,其在被处理器执行时适于操纵软件应用的至少一部分以从而使得能够通过使用响应数据依赖于硬件设备中的硬件电路在硬件设备上执行软件应用,该响应数据是使用硬件电路中的使用询问数据作为到函数的输入的确定性函数生成的,其中,所述询问数据源自于软件应用。
在下文中将更详细地描述本发明的实施例。然而,应认识到的是可以不将这些实施例理解为限制用于本发明的保护范围。
附图说明
将通过参考图中所示的示例性实施例更详细地解释本发明的各方面,在所述附图中:
图1是大体上说明变换函数和加密的图;
图2是用于处理已加密数字TV内容的现有技术数字TV接收机系统的示意图;
图3是用于处理已加密数字TV内容的另一现有技术数字TV接收机系统的示意图;
图4是根据本发明的示例性实施例的用于处理已加密数字TV内容的数字TV接收机系统的示意图;
图5是根据本发明的示例性实施例的被锚定至硬件电路的软件应用的示意图;
图6是根据本发明的示例性实施例的如在硬件电路中使用的CMAC函数的示意图;
图7是根据本发明的另一示例性实施例的如在硬件电路中使用的CMAC函数的示意图;
图8是根据本发明的另一示例性实施例的如在硬件电路中使用的CMAC函数的示意图;
图9是根据本发明的另一示例性实施例的被锚定至硬件电路的软件应用的示意图;
图10是根据本发明的另一示例性实施例的被锚定至硬件电路的软件应用的示意图;
图11是根据本发明的另一示例性实施例的被锚定至硬件电路的软件应用的示意图;
图12是根据本发明的另一示例性实施例的被锚定至硬件电路的软件应用的示意图;
图13是根据本发明的示例性实施例的用于创建被锚定至硬件电路的软件应用的CMAC函数的示意图;
图14是根据本发明的示例性实施例的如在硬件电路中使用的加密函数的示意图。
具体实施方式
本发明使得能够在硬件设备中执行软件应用,同时防止在另一硬件设备中执行应用或应用的二进制拷贝。向硬件设备的硬件电路输入源自于软件应用的询问数据。询问数据包括运行时间数据,诸如当在处理单元中执行时的应用的状态信息或参数值。替换地,询问数据包括应用本身的软件映像的至少一部分。硬件电路使用确定性函数来处理询问数据,其优选地是针对特定硬件电路唯一地定义的,并返回响应数据以用于软件应用的进一步处理。
可以使用各种技术来实现硬件电路。该硬件电路例如可以使用芯片上的晶体管网络来实现。另一示例是由同一芯片上的单独微控制器或在隔离过程中使用软件的实施方式。另一示例是使用密码协处理器的软件过程中的实施方式。另一示例是在同一印刷电路板(PCB)上但在包含CPU的主芯片外部使用节点锁定芯片。应理解的是硬件电路的实施方式不限于这些示例,并且可以使用其他已知技术来实现能够被配置成执行确定性函数的硬件电路。
确定性函数不同于诸如PUF的非确定性函数。确定性函数通常在其被用特定的一组输入值调用的任何时间返回相同的结果。非确定性函数通常每当其被用特定的一组输入值调用时返回不同的结果。此外,确定性函数通常能够用数学方式来表示,而诸如PUF的非确定性函数不能用数学方式来表示。已知的是可以通过向输出应用例如纠错机制来使得PUF的输出是确定性的,但是这不会使得PUF本身是确定性的。
安全和非安全软件应用两者都能够受益于本发明,但是为了获得最佳结果,使用例如软件混淆技术来保护软件应用,因为非安全软件应用可以被修改以忽视硬件电路。
在执行安全软件应用的情况下,安全软件应用的第一模块将运行时间数据作为询问数据发送到硬件电路。该硬件电路使用优选地唯一函数来处理询问数据并将响应数据返回至安全软件应用的第二模块以执行优选地唯一函数的逆运算以消除硬件电路的效果。由此,将软件应用有效地锚定至硬件电路。
在询问数据包括应用本身的软件映像的至少一部分的情况下,询问数据被输入到硬件电路。硬件电路使用优选地唯一函数来处理数据并返回响应数据,其可能在某些转换操作之后被用作解密秘钥以将软件映像解密。由此,将软件应用有效地锚定至硬件电路。
硬件电路的唯一性质及其输出的关联进一步处理使得基本上不可能在与其意图用于的设备不同的设备上运行软件应用。
可以在各种各样的CPU(包括嵌入式设备)、GPS和可编程I/O外围设备中包括硬件电路。
图4示意性地示出了如何能够在数字TV环境中使用本发明的示例。应理解的是本发明不限于数字TV领域,而是可以用来将任何软件应用锚定至包含硬件电路的CPU。硬件电路允许将抵抗白盒攻击的软件坚固地耦合到单个设备。本发明将硬件电路的唯一性扩展至被有效地锚定至硬件电路的软件应用。此类锚定软件应用能够在例如诸如数字TV接收机的嵌入式设备中或在例如PC、平板PC、智能电话、因特网(云)服务器、图形卡或任何其他I/O设备中使用。
在图4的示例中,数字TV接收机2c从头端器1接收已加密数字TV内容,并向输出设备4输出信号以便向最终用户显示数字TV内容。箭头指示如所指示的方向上的数据流。头端器1将数字TV内容发射到大量接收机2c。接收机2c使用输入模块21来获取已发射的数字TV信号,其随后被提供给内容处理模块22c。内容处理模块22c是基于用硬件电路24c扩展或嵌入的通用处理单元23c(例如使用32位CPU)。用于处理已加密数字TV内容的安全软件应用在处理单元23c中运行。内容处理的结果是适合于在诸如TV机的输出设备4上呈现的信号。
头端器1和硬件电路24c被实现成使得攻击者难以修改或观察其操作。输入模块21、在处理单元23c上执行的软件、输出设备4和模块之间的接口通常是攻击者可访问的,因此不能依赖于其正确操作。
硬件电路24c实现处理包含例如来自安全应用的状态信息的询问数据的唯一函数。由硬件电路24c实现的函数的逆运算是在安全软件应用的模块中实现的以恢复初始状态。替换地,由模块输出使得能够导出初始状态的数据或其中进一步处理初始状态的数据。安全软件模块继承了由安全电路24c实现的函数的唯一性。由于安全软件模块优选地是唯一的,所以具有不同硬件电路的其他设备不能执行软件应用的二进制拷贝。用另一实现来替换安全软件模块要求由硬件电路24c实现的优选地唯一函数的知识或由安全软件模块实现的逆函数的知识。通过逆向工程,只能获取两个类型的知识。由于硬件电路24c和安全硬件模块两者的实现都非常难以逆向工程,所以在另一设备上执行应用的拷贝或修改拷贝是非常困难的。
图5示出了被锚定到硬件电路的软件应用的示例性实施例。软件应用或软件应用的一部分被实现为安全软件模块序列,即图5中的用101a指示的安全软件模块i和用103a指示的安全软件模块i+1。每个安全软件模块101a、103a在变换域中交换参数和/或状态信息。通过将应用锚定至设备的硬件电路24c而将案件软件应用锚定至特定设备。
硬件电路24c配置有优选地唯一函数或优选地唯一数据,其驱动与在逆安全软件模块102a中实现的逆函数相对应的公共函数。由于安全软件模块之间的接口通过变换而受到保护,所以如果安全软件模块i 101a的输出被直接输入到逆安全软件模块102a,则安全软件应用将不会正确地操作。换言之,绕过硬件锚是不可能的,因为其导致不可运行的安全软件应用。
逆安全软件模块102a和安全软件模块i+1 103a能够被实现为将两者的功能组合的单个模块。
在图中未示出的替换示例性实施例中,硬件电路24c和逆安全软件模块102a的顺序被反向。在本实施例中,逆安全软件模块执行硬件电路24c的功能,并且硬件电路执行逆安全软件模块102a的功能。在本实施例中,逆安全软件模块和安全软件模块i 101a能够被实现为将两者的功能组合的单个模块。
能够使用例如具有诸如AES的集成块密码的现有密码协处理器来实现硬件电路。也称为消息认证码(MAC)的秘钥散列函数能够被用作锚函数。通过在硬件电路的个性化期间将唯一(或可唯一地导出的)秘钥放置在每个单独芯片组中而使得这些及其他密码函数是唯一的。其他秘钥加载机制也是可能的。诸如基于密码的MAC(CMAC)的基于块密码的MAC函数是特别适当的。CMAC标准适用于任何块密码,诸如,例如AES。CMAC标准也称为RFC-4493。
以下示例示出了使用CMAC标准的硬件锚的实现。应理解的是本发明不限于诸如CMAC的秘钥散列函数,并且本发明不限于AES块密码。
图6示出了用于b位消息M的CMAC计算的流程图的示例,即密码的块尺寸是b且消息M具有b位的长度。CMAC的输出称为标签T。由于块密码被用作基本构建块,所以标签T在尺寸方面也将是b。使用加法函数                                               
Figure DEST_PATH_IMAGE001
将消息M与秘钥相关值V2相加,并且然后使用加密函数用秘钥K来将消息M加密。
如果消息块短于b位,则对消息进行填充,如图7中所示。填充位用10...0来指示。在这种情况下,使用不同的秘钥相关值V2
参考图8,为了计算用于任意长度输入消息M的CMAC,首先将该消息划分成长度b的消息块Mi。在图8的示例中,消息M具有1×b位的长度,并且消息M因此被划分成消息块M1、M2... Ml。每个块Mi在同一秘钥K下被用所选块密码加密,加密函数的输出被添加到下一个消息块。针对最后的块Ml,在此加密之前也添加秘钥相关值V1
如果消息M的长度不是b的精确倍数,则如图7中所示填充最后一个消息块Ml。在这种情况下,将使用秘钥相关值V2而非V1
如下定义V1和V2的推导,其中,‘Encryptk’表示使用秘钥K的加密(例如,AES-128加密),‘0b’表示b位的全零向量,‘MSB’表示最高有效位,‘<<’表示向左位旋转,并且
Figure 401333DEST_PATH_IMAGE001
表示异或。
Figure 256157DEST_PATH_IMAGE002
在步骤1中,将具有秘钥K的AES-128应用于全零输入块。在步骤2中,通过以下操作导出V1:如果L的最高有效位等于0,则V1是L的1位的左移位。否则,V1是Rb与L的1位的左移位的异或。在步骤3中,通过以下操作导出V2:如果V1的最高有效位等于0,则V2是V1的1位的左移位。否则,V2是Rb与V1的1位的左移位的异或。在这里,Rb是在CMAC标准中预定义的常数。例如对于b=128而言,R128=012010000111。
由于V1和V2仅取决于秘钥K,所以能够对其进行预编译一次,并且随后用于许多CMAC计算。V1和V2能够例如被存储在非易失性存储器中,或在第一次使用时计算一次。
秘钥K必须安全地对于实现例如CMAC函数的密码函数的硬件电路可用。应理解的是本发明不限于以下示例,并且可以使用其他替换解决方案来安全地使得秘钥K对于硬件电路可用。
秘钥K能够实现为附加秘钥,个性化到硅中。替换地,秘钥K可以是可以某种方式从现有唯一芯片组秘钥(CSUK)导出的,例如通过使用Davies-Meyer类型的构造。替换地,可以使用从使用会话秘钥将控制字安全地发送到解扰器模块已知的秘钥阶梯解决方案来将秘钥K提供给硬件电路,该秘钥阶梯适于替代地将秘钥K安全地发送到硬件电路。替换地,可以使用如在题为“Key Transport Protocol”且具有参考号15464的申请人的共同待决专利申请中公开的秘钥传输协议,其被整体地通过引用结合到本文中。
秘钥传输协议使得发送器能够将秘钥加载消息传送至接收机。接下来,将秘钥加载到接收机上。为了创建秘钥加载消息,发送器首先生成虚拟秘钥,表示为
Figure DEST_PATH_IMAGE003
。其次,发送器保护虚拟秘钥以保护虚拟秘钥的真实性和保密性,从而产生安全虚拟秘钥。然后将安全虚拟秘钥作为秘钥加载消息的一部分从发送器传输至接收机。可以使用与接收机相关联的公共秘钥将虚拟秘钥加密。可以通过使用与发送器相关联的安全秘钥来添加签名而创建安全虚拟秘钥。由发送器生成的虚拟秘钥
Figure 973577DEST_PATH_IMAGE003
和与发送器相关联的签名验证秘钥被用作到密码函数的输入以产生输出。密码函数通常是硬件电路的密码函数的一部分。所述输出包括秘钥K。
图14示出了用于b位消息M的输出值T的计算的流程图的示例,其是图6的示例的简化版本。直接使用加密函数用秘钥K对b位消息M进行加密。此变体的很大的优点是通过利用使用标准秘钥阶梯的存储器间加密,其能够在现有硅上获得支持。然而,其可能不那么灵活,因为其不能处理任意长度输入。
在以下示例中,软件应用的安全部分使用如在例如AES密码术中所使用的查找表被锚定至硬件电路。该硬件电路锚是使用CMAC和AESS密码协处理器实现的。本发明不限于AES。在密码协处理器中可以使用任何其他块密码。
软件混淆通常将密码函数实现为查找表序列。参考图5,在本示例中,硬件锚24c被实现为两个“正规”安全软件表101a和103a之间的附加查找表。这有效地将安全软件唯一地绑定至硬件。
安全软件表i 101a和安全软件表i+1 103a表示被锚定至硬件的安全软件应用的一部分。来自安全软件表i 101a的输出被用作到硬件锚24c的询问数据,其提供较宽的输出。在本示例中,来自安全软件表i 101a的响应数据是8位,并且硬件锚24c的输出是128位。用逆安全软件表102a来扩展安全软件实现的安全软件表i+1 103a,其将锚24c的宽输出变换回到预期输入。
优选地将逆安全软件表102a和安全软件表i+1 103a集成以获得高水平的混淆。
根据包含唯一硬件秘钥K的耦合硬件电路24c将每个安全软件应用个性化。还可以对一批硬件电路给定相同的秘钥。此动作减少了唯一实现的数目。
在硬件锚24c具有8位的输入和128位的输出的情况下,逆表102a具有2128×8的表尺寸。
可以使用CMAC来产生较短输出T,例如通过使用32个最高有效位而不是全128位。这将导致较小的逆表102a,即上述示例中的232×8(≈4096兆字节)的逆表尺寸。可以将甚至更小的逆表尺寸与甚至更短的输出一起使用。下表图示出用于不同的输出尺寸(按位计)和8位的输入的表尺寸。  
输入 输出 表尺寸
8 10 210×8≈1千字节
8 12 212×8≈4千字节
8 14 214×8≈16千字节
8 16 216×8≈64千字节
8 32 232×8≈4096兆字节
可以优化逆表102a。针对8位输入,仅存在28个可能的(128位)输出向量。这意味着逆表102a只需要包含那些128位向量以及其8位原始输入。这样,逆表尺寸编程28×(128+8)位或约4.25千字节。下表图示出用于不同输入尺寸(按位计)和128位的输出的表尺寸。  
输入 输出 表尺寸
8 128 28×(128+8)位≈4千字节
10 128 210×(128+10)位≈17千字节
12 128 212×(128+12)位≈70千字节
14 128 214×(128+14)位≈284千字节
16 128 216×(128+16)位≈1152千字节
图9示出了包括被锚定至在运行时间期间所使用的硬件电路24d的安全软件部分的被混淆软件应用的示例性实施例。箭头指示数据流。
由第一部分101b和第二部分103b组成的原始安全软件应用在任意点处分离。在这一点,原始安全软件应用的第一部分101b的执行停止,并且提取其输出的b=128位(在硬件锚24d中的AES的情况下),并作为询问数据馈送到硬件锚24d。原始安全软件应用的输出的其余部分被保持原样,其被示为箭头104。为了将硬件锚24d的响应数据求逆,作为如图5中所示的查找表的替代,使用逆固定秘钥安全软件模块102b。在此过程之后,该执行使用由被与内部状态104的其余部分组合的逆固定秘钥安全软件模块102b重构的第一部分101b的输出来继续原始安全软件应用的第二部分103b。
为了增加安全性,优选地,第一部分101b与硬件锚24d之间的变换空间不同于逆固定秘钥安全软件模块102b与第二部分103b之间的变换空间。
图10示出了包括被锚定至在运行时间期间所使用的硬件电路24d的安全软件部分的被混淆软件应用的替换示例性实施例。箭头指示数据流。
由第一安全软件部分101b和第二安全软件部分103b组成的原始安全软件应用在任意点处分离。在这一点,原始安全软件应用的第一安全软件部分101b的执行停止,并提取其状态且作为询问数据输入到硬件锚24d。该状态还被输入到软件CMAC安全软件模块105。为了对硬件锚24d的响应数据求逆,使用性质相关变换(PDT)模块102c或任何其他已知比较机制,其将CMAC安全软件模块105的输出与硬件锚25d的响应数据相比较。在此过程之后,该执行使用从PDT变换模块102c接收到的第一部分101b的状态在原始安全软件应用的第二部分103b中继续。
图10的示例的优点是能够将状态向量的任何尺寸作为输入来处理。为了这样做,将图8的整个CMAC构造结合到CMAC安全软件模块105中,其重复地调用安全软件加密模块,就如硬件电路24d一样。
最后,CMAC安全软件模块105和硬件电路24d两者都已计算标签T。为了比较结果,使用性质相关变换(PDT)或其他比较机制。
应理解的是被作为询问数据馈送到硬件电路24d的状态能够采取已变换形式。不存在硬件学习纯粹(未变换)值的需要。
图11示出了使得能够以已加密形式实现(安全)软件应用的安全传输或存储的示例性实施例,其中,使用硬件电路24e来计算软件应用唯一解密秘钥以便将软件应用的已加密部分解密。
软件应用包括加载程序代码部分101c和已加密软件部分103c,并被创建成将在具有硬件电路24e的特定设备上使用。软件应用例如是从应用商店下载或购买的。
完整加载程序代码101c的一部分被作为询问数据输入到硬件锚24d。所得到的设备唯一响应数据被用作用于将已加密软件部分103c解密的解密秘钥。当如前述示例性实施例中所示地使用AES协处理器时,解密秘钥将是128位值。
图12示出了使得能够以已加密形式实现软件应用的安全传输或存储的替换示例性实施例,其中,使用硬件电路24e来计算软件应用唯一解密秘钥以便将软件应用的已加密部分解密。
软件应用包括加载程序代码部分106和已加密软件部分103c,并被创建成将在具有硬件电路24e的特定设备上使用。随机数据块107是已加密软件部分103c的一部分,使得已加密软件部分103c是唯一的。
完整已加密软件部分103c的一部分被输入到硬件电路24d。当如前述示例性实施例中所示地使用AES协处理器时,解密秘钥将是128位值。
已加密软件部分103c中的随机数块107可以如下由已加密软件应用的提供商创建。最初随机地挑选加密秘钥,并且然后使其退回随机数据块107的(密码电文)值应该是的值。
图13示出了由提供商进行的随机数块107的计算的示例。作为示例,假设将使用软件应用的第二块C2作为随机数块107来插入任意密码电文块并挑选秘钥T。应理解的是可以使用任何和多个块作为随机数块107。
与块M1类似地处理第一块C1,如图8中所示。针对其他块C2…Cl,与图8相比计算被反向:首先用硬件锚秘钥K将秘钥T(用来将软件加密)解密,其然后被添加到秘钥相关值V1和已加密软件的最后一个块。结果再次被解密,并添加到已加密软件的前一块,等等。这样,两个计算相遇并被相加以产生“遗漏”块C2。这样计算的块C2被作为随机数据块107插入已加密软件部分103c中。
可以由具有配置有硬件锚秘钥K的硬件电路24d的最终用户设备来导出正确的解密秘钥。
应理解的是可以与诸如图11和图12中所示的解密保护相结合地应用诸如图9和图10中所示的运行时间保护。
在图5、9和10中所示的示例性实施例中,在软件应用的两个部分之间中使用硬件电路24c、24d和逆模块102a、102b、102c。应理解的是在软件应用开头处或结尾处可以使用硬件电路和逆模块。如果刚好位于开头处,例如到软件应用的第一输入被用作询问数据。如果刚好位于结尾处,例如软件应用的最后输出被用作询问数据。
本发明的一个实施例可以实现为程序产品以便与计算机系统一起使用。该程序产品的一个或多个程序定义实施例的功能(包括本文所述方法),并且能够在各种非瞬态计算机可读存储介质上体现。说明性计算机可读存储介质包括但不限于:(i)非可写存储介质(例如,计算机内的只读存储器件,诸如可被CD-ROM驱动器读取的CD-ROM磁盘、ROM芯片或任何类型的固态非易失性半导体存储器),信息被永久地存储在其上面;以及(ii)可写存储介质(例如,闪速存储器、磁盘驱动器内的软盘或硬盘驱动器或任何类型的固态随机存取半导体存储器),可变信息被存储在其上面。

Claims (20)

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. 一种软件应用在被处理器执行时适于操纵软件应用的至少一部分以从而使得能够通过使用响应数据依赖于硬件设备中的硬件电路在硬件设备上执行软件应用,该响应数据是使用硬件电路中的使用询问数据作为到函数的输入的确定性函数生成的,其中,所述询问数据源自于软件应用。
CN201280026330.7A 2011-03-30 2012-03-19 用于使得软件应用能够在硬件设备上执行的计算机实现方法和硬件 Expired - Fee Related CN103608820B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP11160420.3A EP2506174B1 (en) 2011-03-30 2011-03-30 Enabling a software application to be executed on a hardware device
EP11160420.3 2011-03-30
PCT/EP2012/054826 WO2012130658A1 (en) 2011-03-30 2012-03-19 Enabling a software application to be executed on a hardware device

Publications (2)

Publication Number Publication Date
CN103608820A true CN103608820A (zh) 2014-02-26
CN103608820B CN103608820B (zh) 2017-05-03

Family

ID=44146285

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280026330.7A Expired - Fee Related CN103608820B (zh) 2011-03-30 2012-03-19 用于使得软件应用能够在硬件设备上执行的计算机实现方法和硬件

Country Status (6)

Country Link
US (2) US9910970B2 (zh)
EP (2) EP3518128B1 (zh)
CN (1) CN103608820B (zh)
AU (1) AU2012234508B2 (zh)
CA (2) CA2831457C (zh)
WO (1) WO2012130658A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105404794A (zh) * 2014-09-04 2016-03-16 腾讯科技(深圳)有限公司 Java应用软件的保护方法和装置
CN107836081A (zh) * 2015-07-15 2018-03-23 西门子公司 用于产生设备特定的标识的方法和装置和包括个性化的可编程电路模块的设备

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3518128B1 (en) 2011-03-30 2021-04-28 Irdeto B.V. Enabling a software application to be executed on a hardware device
US10373149B1 (en) 2012-11-12 2019-08-06 Square, Inc. Secure data entry using a card reader with minimal display and input capabilities having a display
WO2014153728A1 (en) 2013-03-27 2014-10-02 Irdeto B.V. A challenge-response method and associated client device
US9613353B1 (en) 2013-12-26 2017-04-04 Square, Inc. Passcode entry through motion sensing
CN106796624B (zh) 2014-09-26 2021-05-04 爱迪德技术有限公司 挑战响应方法、相关联的计算设备和相关联的计算机可读介质
US9430635B2 (en) 2014-10-29 2016-08-30 Square, Inc. Secure display element
US9483653B2 (en) 2014-10-29 2016-11-01 Square, Inc. Secure display element
US10673622B2 (en) * 2014-11-14 2020-06-02 Square, Inc. Cryptographic shader in display hardware
GB201505438D0 (en) 2015-03-30 2015-05-13 Irdeto Bv Accessing content at a device
US10742413B2 (en) * 2017-04-25 2020-08-11 International Business Machines Corporation Flexible verifiable encryption from lattices
US10608822B2 (en) * 2017-04-26 2020-03-31 Nxp B.V. Efficient calculation of message authentication codes for related data
EP3413500A1 (en) * 2017-06-09 2018-12-12 Koninklijke Philips N.V. Device and method to compute a block cipher
US20190362085A1 (en) * 2017-06-23 2019-11-28 Mitsubishi Electric Corporation Ladder program unauthorized-use prevention system and ladder program unauthorized-use prevention method
US10630462B2 (en) * 2017-10-27 2020-04-21 Nxp B.V. Using white-box in a leakage-resilient primitive
US11321466B2 (en) * 2018-03-09 2022-05-03 Qualcomm Incorporated Integrated circuit data protection
DE102018208066A1 (de) * 2018-05-23 2019-11-28 Robert Bosch Gmbh Datenverarbeitungseinrichtung und Betriebsverfahren hierfür
US11654635B2 (en) 2019-04-18 2023-05-23 The Research Foundation For Suny Enhanced non-destructive testing in directed energy material processing
US12013970B2 (en) 2022-05-16 2024-06-18 Bank Of America Corporation System and method for detecting and obfuscating confidential information in task logs

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480959B1 (en) * 1997-12-05 2002-11-12 Jamama, Llc Software system and associated methods for controlling the use of computer programs
WO2005064433A1 (en) * 2003-12-22 2005-07-14 Koninklijke Philips Electronics N.V. Software execution protection using an active entity
CN1904793A (zh) * 2005-07-28 2007-01-31 国际商业机器公司 用于处理加密软件的方法和中央处理单元
US20080263366A1 (en) * 2007-04-19 2008-10-23 Microsoft Corporation Self-verifying software to prevent reverse engineering and piracy

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530752A (en) * 1994-02-22 1996-06-25 Convex Computer Corporation Systems and methods for protecting software from unlicensed copying and use
US5473692A (en) * 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
JP3507594B2 (ja) * 1995-07-31 2004-03-15 株式会社東芝 コンピュータ
DE69704684T2 (de) * 1996-02-23 2004-07-15 Fuji Xerox Co., Ltd. Vorrichtung und Verfahren zur Authentifizierung von Zugangsrechten eines Benutzers zu Betriebsmitteln nach dem Challenge-Response-Prinzip
US6523119B2 (en) * 1996-12-04 2003-02-18 Rainbow Technologies, Inc. Software protection device and method
US6363486B1 (en) * 1998-06-05 2002-03-26 Intel Corporation Method of controlling usage of software components
US7243236B1 (en) * 1999-07-29 2007-07-10 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
US6792528B1 (en) * 2000-05-17 2004-09-14 Chien-Tzu Hou Method and apparatus for securing data contents of a non-volatile memory device
US7111167B1 (en) * 2000-06-30 2006-09-19 Intel Corporation Digital watermarks with values derived from remote platforms
CA2327911A1 (en) * 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
US7117376B2 (en) * 2000-12-28 2006-10-03 Intel Corporation Platform and method of creating a secure boot that enforces proper user authentication and enforces hardware configurations
US7418737B2 (en) * 2001-06-13 2008-08-26 Mcafee, Inc. Encrypted data file transmission
US20040218762A1 (en) * 2003-04-29 2004-11-04 Eric Le Saint Universal secure messaging for cryptographic modules
US7111285B2 (en) * 2001-07-17 2006-09-19 Liquid Machines, Inc. Method and system for protecting software applications against static and dynamic software piracy techniques
FR2834361B1 (fr) * 2001-12-28 2004-02-27 Bull Sa Module de securisation de donnees par chiffrement/dechiffrement et/ou signature/verification de signature
JP2003280754A (ja) * 2002-03-25 2003-10-02 Nec Corp 隠蔽化ソースプログラム、ソースプログラム変換方法及び装置並びにソース変換プログラム
US6880149B2 (en) * 2002-04-01 2005-04-12 Pace Anti-Piracy Method for runtime code integrity validation using code block checksums
US8438392B2 (en) * 2002-06-20 2013-05-07 Krimmeni Technologies, Inc. Method and system for control of code execution on a general purpose computing device and control of code execution in a recursive security protocol
KR100974448B1 (ko) * 2003-04-24 2010-08-10 엘지전자 주식회사 광디스크의 복사 방지 정보 관리방법
GB0311208D0 (en) * 2003-05-15 2003-06-18 British Telecomm Feature based caricaturing
US7091887B2 (en) * 2004-04-28 2006-08-15 Kabushiki Kaisha Toshiba Modulator, modulation method, and method of manufacturing an optical recordable medium with enhanced security for confidential information
WO2006071380A2 (en) * 2004-11-12 2006-07-06 Pufco, Inc. Securely field configurable device
US7818585B2 (en) * 2004-12-22 2010-10-19 Sap Aktiengesellschaft Secure license management
US8312297B2 (en) * 2005-04-21 2012-11-13 Panasonic Corporation Program illegiblizing device and method
US8295492B2 (en) * 2005-06-27 2012-10-23 Wells Fargo Bank, N.A. Automated key management system
US8051299B2 (en) * 2006-03-20 2011-11-01 Hewlett-Packard Development Company, L.P. Computer security method and computer system
RU2296363C1 (ru) * 2006-04-27 2007-03-27 Общество с ограниченной ответственностью "АСТРОМА" Способ и средство защиты программного обеспечения от несанкционированного использования
US20080077805A1 (en) * 2006-09-26 2008-03-27 Catherman Ryan C Securing Data Exchanged in Memory
US7886162B2 (en) * 2007-05-29 2011-02-08 International Business Machines Corporation Cryptographic secure program overlays
US8887270B2 (en) * 2007-11-12 2014-11-11 Micron Technology, Inc. Smart storage device
DE102009002396A1 (de) * 2009-04-15 2010-10-21 Robert Bosch Gmbh Verfahren zum Manipulationsschutz eines Sensors und von Sensordaten des Sensors und einen Sensor hierzu
US20110091035A1 (en) * 2009-10-20 2011-04-21 Sun Microsystems, Inc. Hardware kasumi cypher with hybrid software interface
US8336771B2 (en) * 2010-04-27 2012-12-25 BBPOS Limited Payment card terminal dongle for communications devices
US8971535B2 (en) * 2010-05-27 2015-03-03 Bladelogic, Inc. Multi-level key management
EP2461534A1 (en) 2010-12-01 2012-06-06 Irdeto B.V. Control word protection
EP3518128B1 (en) 2011-03-30 2021-04-28 Irdeto B.V. Enabling a software application to be executed on a hardware device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480959B1 (en) * 1997-12-05 2002-11-12 Jamama, Llc Software system and associated methods for controlling the use of computer programs
WO2005064433A1 (en) * 2003-12-22 2005-07-14 Koninklijke Philips Electronics N.V. Software execution protection using an active entity
CN1904793A (zh) * 2005-07-28 2007-01-31 国际商业机器公司 用于处理加密软件的方法和中央处理单元
US20080263366A1 (en) * 2007-04-19 2008-10-23 Microsoft Corporation Self-verifying software to prevent reverse engineering and piracy

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105404794A (zh) * 2014-09-04 2016-03-16 腾讯科技(深圳)有限公司 Java应用软件的保护方法和装置
CN105404794B (zh) * 2014-09-04 2019-09-20 腾讯科技(深圳)有限公司 Java应用软件的保护方法和装置
CN107836081A (zh) * 2015-07-15 2018-03-23 西门子公司 用于产生设备特定的标识的方法和装置和包括个性化的可编程电路模块的设备

Also Published As

Publication number Publication date
US20140229744A1 (en) 2014-08-14
EP2506174B1 (en) 2019-01-09
US10552588B2 (en) 2020-02-04
EP3518128B1 (en) 2021-04-28
WO2012130658A1 (en) 2012-10-04
EP3518128A1 (en) 2019-07-31
CA3179648A1 (en) 2012-10-04
US20180232502A1 (en) 2018-08-16
EP2506174A1 (en) 2012-10-03
AU2012234508B2 (en) 2017-07-06
CA2831457C (en) 2023-01-24
CA2831457A1 (en) 2012-10-04
US9910970B2 (en) 2018-03-06
CN103608820B (zh) 2017-05-03
AU2012234508A1 (en) 2013-10-31

Similar Documents

Publication Publication Date Title
CN103608820B (zh) 用于使得软件应用能够在硬件设备上执行的计算机实现方法和硬件
CN100592683C (zh) 来自数字权利管理加密解密器的受保护的返回路径
EP2491510B1 (en) Distribution system and method for distributing digital information
CN101790865B (zh) 更新密码密钥数据
US10853497B2 (en) Method and system for providing an update of code on a memory-constrained device
US20200374100A1 (en) Cryptography device having secure provision of random number sequences
CN110490008B (zh) 安全装置及安全芯片
US8392723B2 (en) Information processing apparatus and computer readable medium for preventing unauthorized operation of a program
JP6517436B2 (ja) 暗号化デバイス及び符号化デバイス
CN102238430B (zh) 个性化白箱解扰器
TWI517653B (zh) 電子裝置及密碼材料供應之方法
US9571273B2 (en) Method and system for the accelerated decryption of cryptographically protected user data units
CN108667598B (zh) 用于实现安全密钥交换的设备和方法及安全密钥交换方法
CN101681408B (zh) 数据安全性
JP6888122B2 (ja) 半導体装置、更新データ提供方法、更新データ受取方法およびプログラム
WO2020044748A1 (ja) Idベースハッシュ証明系構成装置、idベース暗号装置、idベースハッシュ証明系構成方法及びプログラム
CN103250372B (zh) 获得控制字以揭示客户端设备标识
US11283632B2 (en) Integrated circuit, control device, information distribution method, and information distribution system
US11061996B2 (en) Intrinsic authentication of program code
US20230275745A1 (en) Device, method and program for secure communication between white boxes
JP2009271884A (ja) 情報処理装置及び情報処理プログラム
Haria et al. Enhanced image encryption using AES algorithm with CBC mode: a secure and efficient approach
CN111917698A (zh) 数据共享装置及其数据共享方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: Holland Hoofddorp

Applicant after: Ai Dide Technology Co., Ltd.

Address before: Holland Hoofddorp

Applicant before: Irdeto B.V.

COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM:

Free format text: CORRECT: APPLICANT; FROM: IRDETO B.V. TO: IRDETO B. V.

GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170503

Termination date: 20210319