CN101491000B - 用于混淆密码函数的方法和系统 - Google Patents

用于混淆密码函数的方法和系统 Download PDF

Info

Publication number
CN101491000B
CN101491000B CN2007800262163A CN200780026216A CN101491000B CN 101491000 B CN101491000 B CN 101491000B CN 2007800262163 A CN2007800262163 A CN 2007800262163A CN 200780026216 A CN200780026216 A CN 200780026216A CN 101491000 B CN101491000 B CN 101491000B
Authority
CN
China
Prior art keywords
execution environment
parameters
program module
computer program
content
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.)
Expired - Fee Related
Application number
CN2007800262163A
Other languages
English (en)
Other versions
CN101491000A (zh
Inventor
W·P·A·J·米奇尔斯
P·M·H·M·A·戈里森
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.)
Ai Dide Technology Co., Ltd.
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 CN101491000A publication Critical patent/CN101491000A/zh
Application granted granted Critical
Publication of CN101491000B publication Critical patent/CN101491000B/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/107License processing; Key processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Abstract

一种保护数字处理系统的完整性的方法。该方法包括确定待保护的数据串,该数据串的完整性指示所述数据处理系统的完整性。计算代表预定数据处理功能的一组参数,使用该组参数中的冗余性来将所述数据串并入到该组参数的比特表示中。允许所述系统依照该组参数来处理数据。该组参数代表包括密码密钥的密码算法的至少一部分。该组参数代表查找表网络。该查找表网络包括数据处理算法的白盒实现方式的多个查找表。所述数据处理算法包括密码算法。

Description

用于混淆密码函数的方法和系统
技术领域
本发明涉及检验用于执行计算机程序模块的执行环境的至少一部分的真实性的方法和系统。
背景技术
互联网向用户提供了方便而普遍存在的对数字内容的访问。由于互联网作为有力分配渠道的潜在可能性,许多消费电子(CE)产品努力争取直接接入互联网或者与PC平台(到互联网的主导性入口)互操作。CE产品包括但不限于数字机顶盒、数字电视、游戏控制台、PC以及越来越多的手持设备,诸如PDA、移动电话以及移动存储和呈现设备(例如苹果公司的iPod)。使用互联网作为用于有版权内容的分发媒介形成了对确保内容提供商利益的不得不接受的挑战。特别地,要求保证内容提供商的版权和商业模式。越来越多地,通过使用加载有适当软件的处理器来操作CE平台。这种软件可以包括用于呈现(回放)数字内容(例如音频和/或视频)的主要功能部分。回放软件的控制是实现内容所有者的利益的一种方式,这些利益包括可以使用所述内容的条款和条件。在传统上,许多CE平台(除了PC和PDA之外)常常是封闭的,而如今越来越多的平台是至少部分地开放的。特别是对于PC平台而言,可以假设一些用户对于提供对所述内容的访问的硬件和软件具有完全的控制以及具有大量的时间和资源来攻击和旁路绕过任何内容保护机制。结果,内容提供商必须通过到其中不是所有的用户或设备都可以被信任的社区的不利网络来递交内容给合法用户。
一般而言,数字权利管理系统使用基于分块密码的加密技术,其使用一系列加密/解密步骤(称为回合(round))来以块为单位处理数据流。在每个回合期间,执行回合特定的功能。该回合特定的功能可以基于在回合特定的子密钥的控制下执行的相同回合功能。对于许多加密系统而言,可以使用映射表或者查找表来规定该回合功能。即使没有使用显式的表格,然而经常的是,为功能的不同部分使用表格以便在加密/解密功能的软件中有效地执行。计算机代码访问表格值或者将表格值结合到所述功能的范围值中。代替分发可能是用户特定的密钥的是,分发用户特定的算法而不是用于加密或解密算法的密钥变得日益令人感兴趣。这些算法(在大多数情况下是函数(映射))必须被混淆(obfuscate)(隐藏)以便防止重新设计或者禁止重新计算如密钥这样的元素。在计算机上,伴随某些计算机代码的表格通常代表了这些函数。
内容提供商必须通过到其中不是所有的用户或设备都可以被信任的社区的不利网络来递交内容给合法用户。特别是对于PC平台而言,必须假设用户对于提供对所述内容的访问的硬件和软件具有完全的控制以及具有无限数量的时间和资源以便攻击和旁路绕过任何内容保护机制。强制可以依据其使用所述内容的条款和条件的软件代码必须不可以被篡改。在数字权利管理中用于分发到PC的受保护内容的一般方法是加密数字内容,例如DES(数据加密标准)、AES(高级加密标准),或者使用WO9967918中公开的方法,并且使用解密密钥。
依赖于加密的数字权利管理的弱点的主要领域是强制使用内容的条款和条件的软件插件、密钥分发和处理以及其中执行所述DRM模块的执行环境。
一般而言,插件强制要依据其使用内容的条款和条件。意欲移除这些条款和条件的攻击者可尝试通过篡改包含在所述软件插件中的程序代码来实现这一点。
关于密钥处理,对于回放而言,媒体播放器必须从许可证数据库中获取解密密钥。然后,它必须将该解密密钥存储在存储器中的某处以用于解密经加密的内容。这给攻击者留下了两个攻击密钥的选项。首先,许可证数据库接入功能的逆向工程技术可能导致黑盒软件(即攻击者不必理解软件功能的内部工作),从而允许攻击者从所有许可证数据库中获取资产密钥。其次,通过在内容解密期间观察对存储器的访问,有可能获取所述资产密钥。在这两种情况下,都认为密钥受到损害。越来越多地,将解密算法的密钥和部分表示成形成软件实现的部分的查找(映射)表。使得软件防篡改已经获得了越来越多的关注。
防篡改软件之所以这样被称呼的原因在于,对于该软件的目标导向篡改被复杂化了。存在各种用于提高软件应用的防篡改性的技术。这些技术中的大多数基于通过在软件应用的控制和数据路径中添加随机性和复杂性掩饰(veil)来隐藏该应用的嵌入知识。其背后的思想在于,仅仅通过代码检查来提取信息变得更加困难。因此,发现例如处理应用的访问和许可控制的代码并且从而改变它变得更加困难。
2002年8月15-16日,Stanley Chow,Philip Eisen,HaroldJohnson和Paul C.Van Oorschot在Selected Areas in Cryptography:9th Annual International Workshop,SAC 2002,St.John′s,Newfoundland,Canada的论文“White-Box Cryptography and an AESImplementation”(此后称为“Chow 1”)以及2002年11月18日,Stanley Chow,Phil Eisen,Harold Johnson和Paul C.van Oorschot在Digital Rights Management:ACM CCS-9 Workshop,DRM 2002,Washington,DC,USA的论文“A White-Box DES Implementation forDRM Applications”(此后称为“Chow 2”)中公开了目的在于隐藏密钥的方法,该方法通过下列的组合来进行,即:利用代表组成(composition)而不是单独步骤的随机双射(bijection)编码其表格,以及通过将密码边界进一步向外推向包含应用来扩展该密码边界。
尽管到目前为止关注集中于保护密钥和DRM模块,不过已经变得清楚的是,执行环境值得信任也是重要的。当作为PC上索尼DRM安装(延长拷贝保护XCP软件)的一部分,Windows XP的一些文件同样以替换不容易被检测(隐藏在Windows XP的所谓的根工具包中)的方式来替换时,许多关注投向这个主题。所述替换无意地将PC暴露于某些类病毒攻击。蓝光(BD)光盘使得分发盘上的受保护内容以及要在BD播放器的虚拟机上运行的DRM软件模块成为可能。该DRM软件模块可以是内容特定的并且包括用于以任何适当的形式解密所述内容的类密钥信息。尽管存在用于检验软件的真实性的某些方法(例如使用签名方案和受信任方),但是到目前为止软件模块通常必须依赖于所述执行环境本身值得信任这一事实。
发明内容
有利的是具有一种检验用于执行计算机程序模块的执行环境的至少一部分的真实性的改进的方法。
为了更好地解决这一问题,在本发明的第一方面中,提供的方法包括检验用于执行计算机程序模块的执行环境的至少一部分的真实性,其中计算机程序模块可操作来导致根据多个预定数字参数来处理数字输入数据;并且该方法包括使用预定算法从所述执行环境的至少一部分导出所述多个预定数字参数之一的至少一部分。
依照本发明,所述计算机程序模块在其执行中依赖于执行环境。其参数至少部分地从所述执行环境导出。预定算法用来从所述执行环境导出这样的参数。通过这种方式,可以确保如果执行环境的被检验部分没有被篡改的话,那么在合理程度的概率下,该程序模块将仅以希望的方式处理其输入数据。这至少给出了对所述执行环境的隐含检验。由于所述程序模块的执行输出固有地依赖于该执行环境,因而难以篡改该执行环境的所述部分。该执行环境可以包括操作系统的部分(例如内核和/或重要库),但是也可以包括工作于操作系统之上的虚拟机,例如Java虚拟机。通过以这种方式检验所述执行环境,可以更好地避免例如数字内容(例如音频和/或视频)那样的有价值数字数据通过篡改的执行环境而泄漏。应当指出的是,已知例如以校验和的形式对软件模块执行某种形式的检验并且检验结果。这样的技术易受到包括设法跳过测试在内的各种攻击。依照本发明,所述执行环境的被检验部分中的改变可能意味着所述参数的改变并且因而导致程序模块的输出的改变。例如,可能错误地解密内容。如果攻击者不清楚这些参数之间的关系,那么篡改所述执行环境的被检验部分变得越来越困难。
依照本发明的一个方面,只有在所述多个参数满足预定准则的情况下,才执行所述计算机程序模块。因此,显式的测试可以例如通过对这些参数执行校验和而发生。其优点在于,可以警告用户所述执行环境已经被篡改了。没有这种警告,用户可能认为所述计算机程序模块有缺陷,这是因为如果该模块的参数错误的话,那么该模块就可能不产生期望的输出。在一个实施例中,可以对于所述执行环境的不同部分设计对应的测试,从而可以告知用户该环境的哪个部分不值得信任和/或应当被替换。即使所述测试本身可能是简单的(例如基于IF...THEN...ELSE或者类似的语句)并且可以由篡改领域的技术人员避免,在其中所述测试未被篡改的系统中,可以将充分的信息提供给用户。如果希望这样的话,已知的技术也可以用于使得所述测试更加具有防篡改性。
依照本发明的一个方面,所述检验通过使用所述多个参数在预定数字输入数据上执行所述计算机程序模块的至少一部分的运行来进行。然后,检验该试验运行的输出是否满足预定的准则。在这种情况下,不检验这些参数本身,而是检验利用这些参数产生的输出。该输出可能依赖于整套参数和选择的输入数据,这使得黑客更加难于确定正确的参数。
在一个实施例中,从服务器处接收作为挑战(challenge)的预定数字输入数据;并且将运行的输出提供给服务器,使得该服务器能够执行所述检验。例如,银行可以在例如通过提供更多的数据和/或软件继续之前按照这种方式首先来检查系统是否仍然安全。
依照本发明的另一个方面,所述预定算法通过使用用于将所述执行环境的表示转换成至少一个参数的计算机可执行指令来实现。通过使用程序来进行该表示,可以实现完全的灵活性。例如,可以自由地确定检查所述执行环境的哪个部分(例如该环境中的哪些数据元素、哪些计算机可执行指令等等)以及如何表示该部分(例如简单地拷贝、散列等)。如果这样希望的话,可以使用任何适当的技术来混淆该算法的软件实现。
依照本发明的一个方面,将所述执行环境的(部分)可执行指令与所述计算机软件模块的参数组(的部分)相联合。更详细地说,所述多个参数的比特表示的一部分等于所述执行环境的计算机可执行指令的比特表示的至少一部分;并且所述计算机程序模块的指令被布置用于在执行期间使用保持所述执行环境的指令的比特表示的所述部分的至少一个存储地址以便也用于通过引用读取所述参数的比特表示的相等部分。因此,至少一个存储地址具有“双重功能”;它用于存储用于所述软件程序模块(部分)参数以及用于存储所述执行环境的指令。因此,篡改该指令将自动地导致篡改这些参数,其风险是导致所述程序模块不再执行所希望的处理。这些可执行指令可以是处理器指令,但是同样可以是其他适当的指令,例如虚拟机指令或者翻译的伪代码指令。这些虚拟机指令可以例如是兼容Java或SPDC(自保护数字内容)的。
依照本发明的另一个方面,将所述计算机程序模块的(部分)可执行指令与该计算机程序模块的参数组(的部分)相联合。更详细地说,所述多个参数的比特表示的一部分等于所述计算机程序模块的计算机可执行指令的比特表示的至少一部分;并且其中这些指令被布置用于在这些指令的执行期间使用保持这些指令的比特表示的所述部分的至少一个存储地址,以便也用于通过引用读取所述参数的比特表示的相等部分。通过这种方式,同样使得所述计算机程序模块更加具有防篡改性。因此,对也用作参数的所述模块的指令进行篡改将自动地导致篡改这些参数,其风险是使得所述程序模块不再执行所希望的处理。
依照本发明的一个方面,附加于或者替换表示所述执行环境的指令的是,所述预定算法使得所述执行环境的至少一个数据元素用作所述多个参数的一个或多个或部分。通过这种方式,同样也可以检查所述执行环境的相关参数(例如常数)。例如,可以检验诸如从DVD获知的区域代码是否未被篡改。
依照本发明的一个方面,所述方法在与处理有价值内容的计算机程序模块相结合使用的情况下是特别有用的。这样的有价值内容可以例如是金融数据(例如电子银行)或者数字内容(例如音频和/或视频)。有价值内容通常不以黑客可以容易读取/使用的“明文”格式来分发。一般而言,在至少一些所述输入参数上至少执行密码操作(例如加密、认证)、编码操作(例如压缩)和/或加扰(scrambling)操作。为此目的,所述多个数字参数包括以下至少之一的表示:
-密码数据,例如密码密钥和/或密码算法;
-数字内容编码/解码数据,例如编码表和/或编码算法;
-数字内容加扰/解扰数据,例如加扰表和/或加扰算法。
在一个实施例中,所述数字输入数据为已经在内容特定的密钥的控制下经过加密、编码和/或加扰的数字内容;所述方法包括接收分别用于控制解密、解码和/或解扰的内容特定的密钥的表示,并且从所接收的内容特定的密钥的表示中导出所述多个预定数字参数之一的至少一部分。因此,在该实施例中,所述计算机程序模块的参数依赖于内容特定的密钥以及所述执行环境,其中所述执行环境一般而言改变得不及所述内容密钥频繁。如上所述,这些参数也可以依赖于所述计算机程序模块的指令。通过这种方式,可以实现高级别的安全性,同时仍然维持使用不同的内容特定的密钥的灵活性并且不必在每次所述内容密钥发生改变时更新所述计算机程序模块和/或执行环境。
在一个实施例中,所述数字参数的导出部分包括经混淆查找表的网络,其中已经根据所述执行环境的所述至少一部分混淆了至少一个表格并且所述算法被布置成从所述执行环境的至少一部分导出至少一个补偿元素并且将所述至少一个补偿元素插入经混淆查找表的另一个中,以使得所述经混淆查找表的网络在功能上等价于查找表网络。通过这种方式,可以实现内容特定的解密的白盒实现方式,其中选择混淆的自由度用来检验所述执行环境是正确与否。该执行环境至少部分地表示于所述经混淆的表格中。只有利用所述执行环境正存在的那部分才能在执行期间实现原始表格网络的功能。对于每个内容项,可以构造内容特定的密钥(以及可选的内容特定的解密算法)。只有这个需要为每个内容项进行分发。可以检查所述执行环境,并且如果希望的话,同样可以检查所述计算机程序模块。所述执行环境和计算机程序模块只需要被分发一次,而通过经由混淆将它们连接在一起仍然可以检验它们。
在一个优选实施例中,所述参数包括它们之中具有一定冗余的常数值,即可能通过对一个参数做出适当改变来补偿另一个参数的改变。例如,如果所述执行环境的某些可执行指令高度相关并且需要加以检验,那么这些指令可以以参数表示(例如简单地加以联合)。然后,选择其他参数以便这样补偿这些给定参数,以使得所述实现方式提供等效的功能,而不管是使用原始参数(改变之前)还是使用经改变的参数。
附图说明
此后,将参照附图来阐述本发明的这些和其他方面,其中
图1示出了其中可以使用所述方法的系统的框图;
图2示出了所述系统的结构的细节;以及
图3示出了混淆查找表网络的实例。
具体实施例
图1示出了其中可以使用本发明的装置110的框图。装置110可以是更大的系统100的一部分。装置110在软件的控制下操作。其功能的部分包含于一个或多个软件程序模块中。为此目的,该装置包括处理器120。该装置本身可以是任何适当的设备,例如个人计算机、专用媒体播放器(例如DVD、蓝光光盘播放器、HD-DVD播放器)、游戏机(例如X-Box、Playstation)。它也可以是便携式设备,例如PDA或智能电话。处理器120可以是任何适当的处理器,例如PC型的处理器或者包括数字信号处理器(DSP)在内的嵌入式处理器。所述装置可以包括工作存储器130(例如RAM)以及非易失性存储器140(例如硬盘、光学存储器或者闪存)。该装置包括计算机程序模块150。当加载到处理器120中时,计算机程序模块150可操作来导致根据多个预定数字参数154来处理数字输入数据152。该处理的输出是数字输出数据156。为了能够执行这种处理,在执行环境158中加载计算机程序模块150。这种环境158可以包括操作系统内核、库(例如诸如MP3或MPEG4解码器之类的媒体解码器、互联网协议等等)。执行环境158本身(或者至少有效部分)也由处理器120执行。如果例如模块150是DRM模块,那么模块150可以包括媒体播放器以及用于管理数字权利并且控制解密/解扰和/或解码的DRM特定的插件。这样的媒体播放器可能能够对于特定的内容格式执行对应的插件以便执行与数字内容相对应的格式特定的解码。这些内容格式可以包括AVI、DV、运动JPEG、MPEG-1、MPEG-2、MPEG-4、WMV、音频CD、MP3、WMA、WAV、AIFF/AIFC、AU等等。为了数字权利管理的目的,可以使用安全的插件,其不仅解码所述内容,而且还解密和/或解扰所述内容。这种功能的部分是否被重新使用并且为此目的被集成到执行环境158中是技术人员的选择。例如,模块150可以使用来自所述执行环境的媒体播放器并且仅作为这种媒体播放器中的插件来操作,例如以便实现特定的操作,例如解密或解码。还应当理解,执行环境158可以提供例如Java之类的虚拟机,其中模块150是由该虚拟机解释的代码。在图1中,示出了程序模块150、其参数154以及执行环境158存储于存储器140中。程序模块150和/或其参数154也可以存储在别处(例如存储在可移除光学存储器160上)或者根据要求通过通信接口170从装置110之外获取。例如,接口170可以给出对互联网172的访问。例如,可以从互联网中的服务器174处下载诸如音频和/或视频之类的数字内容(作为输入数据152)。该内容可以通过诸如加密、加扰、编码(例如压缩)之类的任何适当技术来保护,以使得该内容不可以可由恶意方直接使用的“明文”形式来获得。该数字内容也可以是其他的数字数据,特别是值得保护的数据,例如金融交易(网上银行),其中输入通过如互联网那样的通信网络来接收、经过安全处理并且通过该通信网络输出。这样,所述输出也可以通过如接口170那样的通信接口提供给装置110的外部,例如提供给如服务器174那样的银行服务器。如上所述,也可以从装置110外部获取所述计算机程序模块。在一个实施例中,所述计算机程序模块的至少一部分特别地被设计用于处理所述内容。例如,可能已经优选地通过使用唯一密钥或者内容特定的密钥加密了所述内容(例如利用电影特定的密钥加密每部电影)。所述计算机程序模块然后可能已经设计成使得它能够解密该内容。类似地,例如,对于金融交易而言,可以由银行负责提供特定于该交易的计算机程序模块。然后,该模块可以以特定的(优选为唯一的)方式处理所述金融数据并且可以作为输出的一部分也提供其身份。存在各种适当的水印技术并且这些技术可以用于将这种身份与输出结合。然后,银行可以检验已经使用了具有该身份的模块。在执行期间,可以在工作存储器130中加载程序模块150、执行环境158的有效部分以及参数154。装置110还可以包括用户输入装置(未示出),诸如遥控器、键盘、鼠标、用于音频输入的麦克风等等,以便从用户处获得用来指示要呈现的内容的命令。装置110还可以包括用于向用户提供信息和/或用于表示呈现的内容的用户输出装置(未示出),例如显示器93和/或扬声器。
依照本发明,使用了预定的算法来从执行环境158的至少一部分中导出所述多个预定数字参数154之一的至少一部分。如下面将要更加详细地描述的那样,这些参数附加地或者可替换地也可以从其他部分(例如程序模块150本身)导出。应当理解,为了提高安全性,可能希望从所述执行环境导出更高数量比特的参数。还应当理解,所述算法的复杂度决定了获得希望安全水平的比特数量。例如,如果该算法基于在所述执行环境的主要部分上确定的加密性强的散列,那么使用1024比特的参数可能已经给出非常强的安全性。因此,可以使用仅仅一个参数的一部分、若干参数的一部分(例如若干参数的最高有效位)、一个完整的参数或若干个完整的参数或者其组合。类似地,可以只检查所述执行环境的小部分(例如一个或一些高度相关的指令或常数),或者可以检查重要部分(例如一些相关库)。本领域技术人员可以确定需要检查所述执行环境的哪个部分(例如具有泄漏相关数据的最高可能性的部分)。
图2进一步示出了该原理。在附图中使用了相同附图标记的地方,这些附图标记指的是可能具有添加的更多细节的相同项。依照本发明,使用了预定算法200用于从执行环境158的至少一部分中导出所述多个预定数字参数154之一的至少一部分。在图2中,示出了这些参数的部分210从执行环境158导出。如下面将要更加详细地描述的,在本发明的实施例中,这些参数的部分212也可以从程序模块150本身导出,并且部分214可以从单独提供的参数(例如内容特定的解密密钥220)导出。实际上,这些参数可以是任何类型的参数。例如,对于音频/语音/视频信号的信号处理而言,这些参数可以是滤波器设置。对于类似于密码学的操作(例如解密或认证)或者解扰而言,这些参数可以代表密钥或类似于密钥的信息。对于解码而言,这些参数可以代表解码表。一般而言,这些参数为模块150或者执行环境158使用的常数。
应当指出的是,已知如何将密码学算法和类似的算法表示成要由软件执行的一个或多个映射表(通常为映射表网络)。例如,Chow 1和Chow 2分别描述了用于AES和DES的这种方法。这些表格表示类似于密钥的信息以及所述算法的部分。使用这样的表格的优点在于,耗时的算法步骤现在由快得多的映射操作代替了(代价是使用更多的存储空间来存储这些表格)。共同待决的专利申请No.061166930(代理人案卷号PH005600)中也给出了这种方法的详细描述。在这些所谓的算法的白盒软件实现中,假设黑客例如在表格加载到存储器130中时有权访问这样的表格。即使这些表格以加密的形式存储在存储器140中,在某个时刻,模块150将不得不使用实际解密的表格。在所述白盒方法中,原则上恶意方可以拷贝整个软件模块并且这在另一个装置中同样也可起作用。有若干方法可以用来阻止这点。例如,这些表格可以很大,以至于拷贝它们变得不合适。另一种方法是令这些表格代表原始用户可追踪的信息。于是,任何非法拷贝都可以被追溯回到原始用户。Chow 1和Chow 2描述了确保原始表格不以明文形式可用的若干方法。相反,这些原始表格被混淆。优选地,通过对所述表格中的至少一些的输入和输出施加编码来混淆所述查找表网络。这些编码对查找表的内容具有影响;改变该编码以可预测的方式改变该表格的内容。然而,攻击者可能难于解开这些编码,这是因为他只有最终的查找表的知识,该知识表示其输入和输出已经以相对较复杂的方式进行编码的映射。施加到查找表中的元素的变换可以通过适当地改变这些编码来实现。通过改变输出编码,可以将特定的值并入到所述表格中。通过改变输入编码,例如可以改变值出现于所述表格中的顺序。此后,输入编码也称为输入解码,这是因为它可以解码由前面的查找表的输出编码导致的数据编码。
通过改变输入和输出编码二者可以以最大的自由度操纵查找表。当改变允许改变至少一个表格的输入和输出编码时,考虑至少三个查找表。这样的改变可以通过改变至少两个其他表格的编码而得到补偿。图3示出了使得提取密钥更加困难的方式。令X和Y为两个函数。考虑示作图示310的操作YοX=Y(X(c))(其也可以表示为Y*X(c)=Y(X(c)),其中c为输入值,例如为4字节状态列。然而,该方法适用于任何类型的输入值c。映射X和Y可以实现为可存储在存储器中的查找表,但是,当它们存储在存储器中时,所述值可能被攻击者读取。示图320示出了所述查找表的内容可以如何通过使用输入编码F和输出编码H来混淆。如图所示,存储了对应于XοF-1和HοY的查找表而不是X和Y,这使得提取X和Y更加困难。图示330示出了如何添加附加的、例如随机双射函数G,使得这两个表格的中间结果也被编码。在这种情况下,将两个表格存储在存储器中:X′=GοXοF-1和Y′=HοYοG-1。这再次示于图示340中:
Y′οX′=(HοYοG-1)ο(GοXοF-1)=Hο(YοX)οF-1
其中,ο表示通常的函数组合(即按照定义,对于任何两个函数f(x)和g(x),fοg(x)=f(g(x))),X和Y为适合借助于查找表实现的函数。类似地,可以对包括多于两个函数的网络进行编码。编码X和Y的实际表格通过在单个查找表中结合HοYοG-1以及在单个查找表中结合GοXοF-1来混淆。只要F、G和/或H保持未知,那么攻击者就不能从这些查找表中提取有关X和/或Y的信息,并且因此攻击者不能提取作为X和/或Y的基础的密钥。其他密码算法也可以实现为可以以与上面相似的方式混淆的查找表(级联或网络)。本发明不限于所述的示例性密码算法。
使用这样的表格的优点在于,模块150执行的函数的重要部分实际上被表示成数据;在这种情况下表示成参数。因此,可以存在足够数量的参数,从而允许彻底地检查执行环境158。应当理解,如果使用更少的参数,该方法仍然起作用。因此,使用这样的映射表不是需要的,但是如果使用了这些映射表,则是一个优势。
通常情况下,程序模块150将被设计成使用特定的预定参数值。依照本发明,这些参数至少部分地从执行环境158导出。如果没有预防措施,那么所述模块使用这样的导出参数可能不会正确操作。该模块可以容易地被设计成使得它仍然产生希望的输出。例如,如果该模块被设计成使用参数(例如常数)z1,并且算法200基于执行环境158的正确版本产生值z2,那么模块150可以被设计成使得它使用参数z3XOR z2(式中XOR为逐比特异或),其中z3作为常数加载到参数154中并且已经被预先计算为z1 XOR z2。然后,该模块将计算z3 XOR z2并且如果所述执行环境未被篡改,那么算法200将产生z2的原始值。由于z3被预先计算为z1 XOR z2,因而该模块计算z3 XOR z2=(z1 XOR z2)XOR z2=z1。通过这种方式,实现了某种形式的补偿,从而一方面模块150在执行期间有效地使用了原始参数(例如z1),另一方面可以在表示成参数(例如z2)的同时检验其他部分。在这个实例中,参数z3纯粹用作补偿。
特别地,如果使用了经混淆表网络的更高级技术,那么在仍然使用正确的参数组的同时必须检查从例如执行环境158导出的参数进行补偿方面实现了更大的自由度。例如,在一个实施例中,模块150和/或执行环境158的部分可以通过使用映射表、特别是查找表网络来部分地实现。
在一个实施例中,可以通过使用输出和/或输入编码来混淆这些查找表。例如,所述查找表网络中的第一查找表f(t1(x))具有输出编码f。所述查找表网络中的第二查找表t2(f-1(x))具有输入解码f-1。该输入解码f具有反转所述输出编码的效果,例如t2(f-1(f(t1(x))))=t2(t1(x))。其特殊特征在于,可以选择这些解码f和f-1,以使得预定字包含在第一查找表f(t1(x))或者第二查找表t2(f-1(x))中。令例如t1(x0)=y0。为了将字w包含在查找表中,可以将f选择为使得f(y0)=w,这是因为在这种情况下f(t1(x))=f(y0)=w。这将w置于第一查找表中的位置x0处。为了进行补偿,这样选择f-1以使得f-1(w)=y0
这个特征可以用来检验所述执行环境。例如,令表格t1和t2代表模块150的原始(未公开的)表格。令算法200对执行环境158的处理给出值w。于是,可用确定混淆的第一和第二表格f(t1(x)和t2(f-1(x))。代替完全地提供这样的表格作为参数154的是,可以在第一表格中省略字w。算法200必须基于实际的执行环境158来产生字w并且将它插入到第一查找表中的适当位置处。只有在正确的字w插入到该表格中的正确位置处的情况下,经混淆表格的组合才会产生与原始表格t1和t2的组合相同的输出。在这个实例中,通过使用所述执行环境的知识来混淆模块150的表格(更一般地,参数)。这样,检验了所述执行环境。如果所述执行环境正确,那么该混淆的模块将正确地执行。与上面给出的z1、z2和z3的实例相比,z2可以被视为字w。通过使用表格网络,补偿z3不需要附加的参数,而是可以被并入到其他表格之一中。
皇家飞利浦电子公司的WO 2006/046187和WO 2005/060147公开了若干种混淆表格网络的方法。在WO 2006/046187中,使用了混淆表格O和补偿表格C。利用表格O混淆至少一个原始表格,并且利用表格C混淆其他原始表格中的至少一个。选择这种表格O的自由度可以用来在表格O中表示所述执行环境,并且使用表格O来混淆所述程序模块的至少一个原始表格。接着,所述执行环境也将自动地在补偿表格C中被表示。代替完全利用O来完全混淆原始表格以及完全利用C混淆另一个的是,这些表格中的一个或多个元素可以保持不被修改。例如,某个元素可以通过使用O来混淆,而另外的表格中的补偿元素不利用C来得到补偿。然后,算法200可以基于实际的执行环境构造表格C的丢失的补偿元素并且在涉及的表格上对其进行XOR,从而在执行期间实现补偿。
在WO 2005/060147中,置换pi用于所述混淆。在这里,同样地pi可以从执行环境导出。就没有实现混淆表格的整个网络的补偿效果的意义而言,利用p2i和p2i+1混淆的表格同样可以是仅仅“半”混淆的,(p2i或p2i+1中的的至少一个元素)未被使用。然后,所述算法用来基于实际执行环境来产生该丢失的补偿元素。
应当理解,原则上可以检验所述执行环境的任何部分。例如,可以通过直接用作参数(例如上面提到的字w)来检验一个或多个计算机指令或者部分这些指令。对于所述执行环境中的数据(例如常数,比如DVD播放器中使用的区域代码)而言同样如此。算法200可以使用所述指令/数据作为文字拷贝,但是也可以计算表示。在一个实施例中,该算法计算所述执行环境的(部分)散列,并且使用该散列作为参数的基础。例如,该散列可以形成字w。任何适当的散列都可以加以使用。
在依照本发明的一个实施例中,只有在所述多个参数满足预定准则的情况下才执行所述计算机程序模块。可以进行简单的测试,例如在参数154上计算散列并且检查这是否给出曾经基于正确的参数组预先计算的希望值。如果测试表明该参数组不正确,那么可以警告用户。也可以单独地测试所述参数的单独部分,例如部分210、212和214。通过这种方式,可以向用户给出有关哪个部分不再正确的详细信息。这种预测试主要用作向用户警告模块150的输出将很可能不正确。这样,仍然可以执行所述模块。实际上,如果恶意方移除该测试的话,则这不是问题,这是因为实际的检验作为模块150的正确输出156而获得。标准的混淆技术可以用来使得黑客发现并且移除所述测试更加困难。
在一个实施例中,替换或者附加于显式地检验所述参数组的是,使用所述多个参数154在预定数字输入数据152上执行计算机程序模块150的至少一部分的试运行,并且检验该试运行的输出156是否满足预定的准则。该准则可以仅仅是该试运行给出了已经通过使用在原始执行环境158中利用原始算法200执行的原始模块150实现的输出,并且以后在测试期间将使用相同的预定数字输入数据。此外,所述测试本身可以通过使用常规的技术来混淆。在一个实施例中,从诸如服务器174之类的服务器处接收作为挑战的预定数字输入数据。将所述运行的输出提供给该服务器,以使得该服务器能够执行所述检验。例如,银行可能在例如通过提供更多的数据和/或软件来继续之前按照这种方式首先来检查系统是否仍然安全。于是,不必(但是也可以附加地)在装置110中进行该检验。
在一个实施例中,所述预定算法200通过使用用于将所述执行环境158的表示转换成至少一个参数154的计算机可执行指令来实现。通过这种方式,算法200可以实现复杂的操作以便混淆执行环境158如何以参数154表示。例如,算法200可以包括加扰、加密、压缩和/或散列操作。该算法本身可以通过使用任何适当的技术(如Chow 1和/或Chow 2中公开的白盒技术)而被混淆。在一个实施例中,该算法结合模块150一起提供。因此,该算法也可以是模块150的一部分。例如,它可以形成模块150的初始化例程的一部分,该部分建立模块150的至少一些参数。应当理解,算法200也可以非常简单。例如,该算法可以是模块150中提供的一组指针,其指向执行模块158中要用作(例如被拷贝为)模块150的参数的数据或指令。可以使用任何适当形式的指针,例如绝对值或相对值。这种选择应当落入本领域技术人员的能力之内。因此,在一个实施例中,预定算法200使得所述执行环境的至少一个数据元素用作所述多个参数的一个或多个或部分。应当理解,算法200可以以硬件而不是软件来实现。
在本发明的一个方面中,执行模块158和/或模块150的计算机可读指令与参数154相联合。这意味着存储器130中的某些比特位置充当用于模块150的参数以及由处理器120执行的(执行环境158或模块150的)指令。
在一个实施例中,已经出现了参数210和执行环境158之间的联合。所述多个参数210的比特表示的一部分等于执行环境158的计算机可执行指令的比特表示的至少一部分。这意味着所述执行环境的这些指令从存储器130中的存储位置处加载以用于执行,该存储位置与由模块150的指令使用来从中获取参数的存储位置相同。应当理解,所述执行环境的一个或多个完整的指令通过这种方式也可以用作参数。如果这样希望的话,那么同样只有所述执行指令的部分(例如操作码字段、最重要字节等等)可以与这些参数相联合。
在一个实施例中,已经出现了参数212与模块150之间的联合。所述多个参数212的比特表示的一部分等于计算机程序模块150的计算机可执行指令的比特表示的至少一部分。这些指令被布置用于在这些指令的执行期间使用保持这些指令的比特表示的所述部分的至少一个存储地址,以便也用于通过引用读取所述参数的比特表示的相等部分。因此,存在从某个存储位置加载的模块150的至少一个指令,模块150中另一个指令从该特定存储位置获取参数。当然,代替加载整个指令或参数的是,相同的原理也适用于其部分。
在一个实施例中,所述多个数字参数包括以下至少之一的表示:
-密码数据,例如密码密钥和/或密码算法;
-数字内容编码/解码数据,例如编码表和/或编码算法;
-数字内容加扰/解扰数据,例如加扰表和/或加扰算法。
在另一个实施例中,数字输入数据152为在内容特定的密钥的控制下经过加密、编码和/或加扰的数字内容,例如音频/视频。于是,模块150使得处理器120将该数字输入数据转换成其中该数据可以呈现给用户或者可以进一步加以处理的明文形式(或者至少部分转换的形式)。为此目的,所述方法包括接收分别用于控制解密、解码和/或解扰的内容特定密钥的表示。例如,如果所述内容经过了加密,那么装置110接收解密密钥。它可以以任何方式来接收,例如从存储器160读取或者通过互联网172从服务器174处接收该密钥。然后,算法200用来从所接收的内容特定的密钥的表示中导出所述多个预定数字参数214之一的至少一部分。例如,该内容特定的密钥可以仅仅用作参数部分214。
在一个实施例中,例如以如上所述的方式,以包括混淆查找表网络的形式提供内容特定的密钥和/或内容特定的解密算法。如那里所表示的,所述混淆给出了选择表格中的常数的一定自由度。在上面给出了一个实例,其中从执行环境158导出的字w可以在另一个混淆的表格中(以及因而在模块150的另一个参数中)得到补偿。在一个实施例中,从执行环境158导出的参数(例如字w)在内容特定的解密密钥/算法220的混淆实现中得到补偿。然后,算法200被布置成将从执行环境158导出的参数(例如字w)加载到正确混淆表中的正确位置。于是,用作参数154的经混淆表网络彼此补偿并且执行原始预定的映射。这样,利用从所述执行环境导出的信息混淆了所述内容特定的解密。只有所述部分以未修改的形式存在,才能保证所述解密正确地执行。应当理解,相同的原理会同样适用于内容特定的编码和/或加扰。还应当理解,可以按照相同的方式利用从模块150导出的信息(例如从中导出的字w)混淆内容特定的参数/算法。
应当理解,本发明还扩展到计算机程序,特别是载体上或载体中适于将本发明付诸实践的计算机程序。该程序可以是源代码、目标代码、介于源代码和目标代码之间的代码的形式(例如部分编译的形式),或者任何其他适合用于依照本发明的方法的实现中的形式。载体可以是能够携带程序的任何实体或设备。例如,载体可以包括存储介质,诸如ROM(例如CD ROM或半导体存储器),或者磁性记录介质,例如软盘或硬盘。此外,载体可以是可传输的载体,例如电信号或光学信号,其可以通过电缆或光缆或者通过无线电或其他方式来传送。当程序包含于这种信号中时,所述载体可以由这种缆线或其他设备或装置来构成。可替换地,所述载体可以是其中嵌入了所述程序的集成电路,该集成电路适于执行相关的方法或者在执行相关的方法中使用。
应当指出的是,上述实施例说明而不是限制了本发明,并且本领域技术人员在不脱离所附权利要求的范围的情况下应当能够设计出许多可替换的实施例。在权利要求中,置于括号中的任何附图标记都不应当被视为限制了该权利要求。动词“包括”及其变体的使用并没有排除权利要求中未列出的元件或步骤的存在。元件之前的冠词“一”或者“一个”并没有排除多个这样的元件的存在。本发明可以借助于包括若干不同元件的硬件以及借助于经过适当编程的计算机来实现。在列举了若干装置的设备权利要求中,这些装置中的一些可以由同一硬件项来实现。在相互不同的从属权利要求中陈述某些技术措施这一事实并不意味着这些技术措施的组合不可以加以利用。

Claims (12)

1.一种检验用于执行计算机程序模块(150)的执行环境(158)的至少一部分的真实性的方法,其中所述计算机程序模块可操作来导致根据多个预定数字参数(154)来处理数字输入数据(152);该方法包括使用预定算法(200)从所述执行环境的所述至少一部分中导出所述多个预定数字参数之一的至少一部分。
2.如权利要求1所述的方法,包括只有在所述多个参数满足预定准则的情况下,才执行所述计算机程序模块。
3.如权利要求2所述的方法,包括通过使用所述多个参数在预定数字输入数据上执行所述计算机程序模块的至少一部分的至少一次运行、并且检验该运行的输出是否满足某个预定的准则,来检验所述多个参数是否满足所述预定准则
4.如权利要求3所述的方法,包括从服务器处接收作为挑战的所述预定数字输入数据;并且将所述运行的输出提供给该服务器,使得该服务器能够执行所述检验。
5.如权利要求1所述的方法,其中所述预定算法通过使用用于将所述执行环境的表示转换成所述多个预定数字参数之一的至少一部分的计算机可执行指令来实现。
6.如权利要求1所述的方法,其中所述多个参数的比特表示的一部分等于所述执行环境的计算机可执行指令的比特表示的至少一部分;并且其中所述计算机程序模块的指令被布置用于,在执行期间使用保持所述执行环境的指令的比特表示的所述部分的至少一个存储地址以便也用于通过引用读取所述参数的比特表示的相等部分。
7.如权利要求1所述的方法,其中所述多个参数的比特表示的一部分等于所述计算机程序模块的计算机可执行指令的比特表示的至少一部分;并且其中这些指令被布置用于,在这些指令的执行期间使用保持这些指令的比特表示的所述部分的至少一个存储地址以便也用于通过引用读取所述参数的比特表示的相等部分。
8.如权利要求1所述的方法,其中所述预定算法导致所述执行环境的至少一个数据元素用作所述多个参数的一个或多个或部分。
9.如权利要求1所述的方法,其中所述多个数字参数包括以下至少之一的表示:
-密码数据,包括以下至少之一:密码密钥和密码算法;
-数字内容编码/解码数据,包括以下至少之一:编码表和编码算法;
-数字内容加扰/解扰数据,包括以下至少之一:加扰表和加扰算法。
10.如权利要求8所述的方法,其中所述数字输入数据为在内容特定的密钥的控制下经过加密、编码和/或加扰的数字内容;所述方法包括接收分别用于控制解密、解码和/或解扰的内容特定的密钥的表示,并且从所接收的内容特定的密钥的表示导出所述多个预定数字参数之一的至少一部分。
11.如权利要求8所述的方法,其中所述数字参数的导出部分包括经混淆的查找表的网络,其中已经根据所述执行环境的所述至少一部分混淆了至少一个表格,并且所述算法被布置成从所述执行环境的所述至少一部分中导出至少一个补偿元素并且将所述至少一个补偿元素插入到经混淆的查找表的另一个中,以使得所述经混淆的查找表网络在功能上等价于所述查找表网络。
12.一种检验用于执行计算机程序模块(150)的执行环境(158)的至少一部分的真实性的系统(100);该系统包括处理器(120)和用于存储所述计算机程序模块以及所述执行环境的存储器(140),其中所述计算机程序模块可操作来导致所述处理器根据多个预定数字参数(154)来处理数字输入数据(152);并且其中该系统包括装置(200),该装置用于从所述执行环境的所述至少一部分中导出所述多个预定数字参数之一的至少一部分。
CN2007800262163A 2006-07-12 2007-07-04 用于混淆密码函数的方法和系统 Expired - Fee Related CN101491000B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP06117036 2006-07-12
EP06117036.1 2006-07-12
PCT/IB2007/052607 WO2008007305A2 (en) 2006-07-12 2007-07-04 Method and system for obfuscating a gryptographic function

Publications (2)

Publication Number Publication Date
CN101491000A CN101491000A (zh) 2009-07-22
CN101491000B true CN101491000B (zh) 2011-12-28

Family

ID=38778139

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800262163A Expired - Fee Related CN101491000B (zh) 2006-07-12 2007-07-04 用于混淆密码函数的方法和系统

Country Status (5)

Country Link
US (3) US8700915B2 (zh)
EP (1) EP2044723A2 (zh)
JP (1) JP5113169B2 (zh)
CN (1) CN101491000B (zh)
WO (1) WO2008007305A2 (zh)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008084433A2 (en) * 2007-01-11 2008-07-17 Koninklijke Philips Electronics N.V. Tracing copies of an implementation
EP2188944B1 (en) * 2007-09-13 2019-06-12 Irdeto B.V. Combined watermarking and decryption of content
JP5354914B2 (ja) * 2008-01-18 2013-11-27 三菱電機株式会社 暗号処理装置及び復号処理装置及びプログラム
CA2717625C (en) * 2008-03-05 2018-09-25 Irdeto B.V. Cryptographic system
CN101807239A (zh) * 2010-03-29 2010-08-18 山东高效能服务器和存储研究院 一种防止源代码反编译的方法
JP2012084071A (ja) 2010-10-14 2012-04-26 Toshiba Corp デジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置
KR20120042469A (ko) * 2010-10-25 2012-05-03 한국전자통신연구원 부가 정보와 암호키 결합을 이용한 콘텐츠 보호 장치 및 그 방법
CA2830100C (en) * 2011-03-15 2019-04-30 Irdeto B.V. Change-tolerant method of generating an identifier for a collection of assets in a computing environment using a secret sharing scheme
US8782420B2 (en) * 2011-07-22 2014-07-15 Netflix, Inc System and method for obfuscation initiation values of a cryptography protocol
US8661527B2 (en) 2011-08-31 2014-02-25 Kabushiki Kaisha Toshiba Authenticator, authenticatee and authentication method
JP5275432B2 (ja) 2011-11-11 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
JP5204291B1 (ja) 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、装置、システム
JP5112555B1 (ja) 2011-12-02 2013-01-09 株式会社東芝 メモリカード、ストレージメディア、及びコントローラ
JP5100884B1 (ja) 2011-12-02 2012-12-19 株式会社東芝 メモリ装置
JP5204290B1 (ja) 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、システム、及び装置
JP5275482B2 (ja) 2012-01-16 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
MX2014014102A (es) * 2012-05-25 2015-01-26 Koninkl Philips Nv Metodo, sistema y dispositivo para proteccion contra ingenieria inversa e/o intrusion con programas.
MX345372B (es) * 2012-11-07 2017-01-27 Koninklijke Philips Nv Dispositivo de computo que almacena tablas de consulta para calculo de una funcion.
MX343892B (es) * 2012-12-21 2016-11-28 Koninklijke Philips Nv Dispositivo de computo configurado con una red de tablas.
US9201811B2 (en) 2013-02-14 2015-12-01 Kabushiki Kaisha Toshiba Device and authentication method therefor
US8984294B2 (en) 2013-02-15 2015-03-17 Kabushiki Kaisha Toshiba System of authenticating an individual memory device via reading data including prohibited data and readable data
US9654279B2 (en) * 2014-03-20 2017-05-16 Nxp B.V. Security module for secure function execution on untrusted platform
EP3127271B1 (en) * 2014-03-31 2018-07-25 Irdeto B.V. Obfuscated performance of a predetermined function
US9641337B2 (en) * 2014-04-28 2017-05-02 Nxp B.V. Interface compatible approach for gluing white-box implementation to surrounding program
US10412054B2 (en) * 2014-06-24 2019-09-10 Nxp B.V. Method for introducing dependence of white-box implementation on a set of strings
SG10201405852QA (en) 2014-09-18 2016-04-28 Huawei Internat Pte Ltd Encryption function and decryption function generating method, encryption and decryption method and related apparatuses
DE102014016548A1 (de) * 2014-11-10 2016-05-12 Giesecke & Devrient Gmbh Verfahren zum Testen und zum Härten von Softwareapplikationen
EP3224982B1 (en) * 2014-11-27 2018-07-11 Koninklijke Philips N.V. Electronic calculating device for performing obfuscated arithmetic
JP6387466B2 (ja) * 2014-12-22 2018-09-05 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 電子計算装置
US10333696B2 (en) 2015-01-12 2019-06-25 X-Prime, Inc. Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency
US9940455B2 (en) * 2015-02-25 2018-04-10 International Business Machines Corporation Programming code execution management
US10505709B2 (en) * 2015-06-01 2019-12-10 Nxp B.V. White-box cryptography interleaved lookup tables
US10110566B2 (en) * 2015-07-21 2018-10-23 Baffle, Inc. Systems and processes for executing private programs on untrusted computers
US10061905B2 (en) * 2016-01-26 2018-08-28 Twentieth Century Fox Film Corporation Method and system for conditional access via license of proprietary functionality
US11093656B2 (en) * 2018-11-14 2021-08-17 Irdeto B.V. Change-tolerant method of generating an identifier for a collection of assets in a computing environment
CN110048834A (zh) * 2019-03-12 2019-07-23 深圳壹账通智能科技有限公司 动态密码发送方法、装置及计算机可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1365053A (zh) * 2001-01-09 2002-08-21 深圳市中兴集成电路设计有限责任公司 一种防止在计算机中运行的应用系统被攻击或篡改的方法
US20050071653A1 (en) * 2003-09-25 2005-03-31 Sun Microsystems, Inc., A Delaware Corporation Non-linear execution of application program instructions for application program obfuscation
WO2005060147A1 (en) * 2003-12-11 2005-06-30 Koninklijke Philips Electronics N.V. Block ciphering system, using permutations to hide the core ciphering function of each encryption round
FR2867929A1 (fr) * 2004-03-19 2005-09-23 Gemplus Card Int Procede d'authentification dynamique de programmes par un objet portable electronique
WO2006046187A1 (en) * 2004-10-28 2006-05-04 Koninklijke Philips Electronics N.V. Method and system for obfuscating a cryptographic function

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07129207A (ja) * 1993-10-28 1995-05-19 Fanuc Ltd 数値制御システム
US6157721A (en) * 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
EP1038370B1 (en) 1998-06-25 2006-09-06 Koninklijke Philips Electronics N.V. Synchronous stream cipher
US6651171B1 (en) * 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
FR2792141B1 (fr) 1999-04-09 2001-06-15 Bull Cp8 Procede de securisation d'un ou plusieurs ensembles electroniques mettant en oeuvre un meme algorithme cryptographique avec cle secrete, une utilisation du procede et l'ensemble electronique
JP2001103049A (ja) * 1999-09-30 2001-04-13 Hitachi Software Eng Co Ltd ユーザ認証方法
JP4005293B2 (ja) * 2000-02-29 2007-11-07 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ、その制御方法、記録媒体及び伝送媒体
US7237125B2 (en) * 2000-08-28 2007-06-26 Contentguard Holdings, Inc. Method and apparatus for automatically deploying security components in a content distribution system
CA2327911A1 (en) * 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
US7308717B2 (en) * 2001-02-23 2007-12-11 International Business Machines Corporation System and method for supporting digital rights management in an enhanced Java™ 2 runtime environment
JP2003050640A (ja) * 2001-08-07 2003-02-21 Matsushita Electric Ind Co Ltd ソフトウェア複製防止方法
US7346780B2 (en) * 2002-04-03 2008-03-18 Microsoft Corporation Integrity ordainment and ascertainment of computer-executable instructions
US7545931B2 (en) * 2002-04-12 2009-06-09 Microsoft Corporation Protection of application secrets
US7152243B2 (en) * 2002-06-27 2006-12-19 Microsoft Corporation Providing a secure hardware identifier (HWID) for use in connection with digital rights management (DRM) system
WO2004077294A1 (ja) * 2003-02-26 2004-09-10 Secure Ware Inc. 不正処理判定方法、データ処理装置、コンピュータプログラム、及び記録媒体
EP1688816A4 (en) * 2003-11-28 2012-04-25 Panasonic Corp DATA PROCESSING DEVICE
US7337324B2 (en) * 2003-12-01 2008-02-26 Microsoft Corp. System and method for non-interactive human answerable challenges
US7552337B2 (en) * 2004-06-12 2009-06-23 Microsoft Corporation Service protection
US8156488B2 (en) * 2004-10-20 2012-04-10 Nokia Corporation Terminal, method and computer program product for validating a software application
WO2007105126A2 (en) 2006-03-10 2007-09-20 Koninklijke Philips Electronics N.V. Method and system for obfuscating a cryptographic function
US20090119221A1 (en) * 2007-11-05 2009-05-07 Timothy Martin Weston System and Method for Cryptographically Authenticated Display Prompt Control for Multifunctional Payment Terminals

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1365053A (zh) * 2001-01-09 2002-08-21 深圳市中兴集成电路设计有限责任公司 一种防止在计算机中运行的应用系统被攻击或篡改的方法
US20050071653A1 (en) * 2003-09-25 2005-03-31 Sun Microsystems, Inc., A Delaware Corporation Non-linear execution of application program instructions for application program obfuscation
WO2005060147A1 (en) * 2003-12-11 2005-06-30 Koninklijke Philips Electronics N.V. Block ciphering system, using permutations to hide the core ciphering function of each encryption round
FR2867929A1 (fr) * 2004-03-19 2005-09-23 Gemplus Card Int Procede d'authentification dynamique de programmes par un objet portable electronique
WO2006046187A1 (en) * 2004-10-28 2006-05-04 Koninklijke Philips Electronics N.V. Method and system for obfuscating a cryptographic function

Also Published As

Publication number Publication date
US20170286685A1 (en) 2017-10-05
US8700915B2 (en) 2014-04-15
US20140365783A1 (en) 2014-12-11
JP5113169B2 (ja) 2013-01-09
EP2044723A2 (en) 2009-04-08
US20090313480A1 (en) 2009-12-17
WO2008007305A2 (en) 2008-01-17
WO2008007305A3 (en) 2008-03-06
CN101491000A (zh) 2009-07-22
JP2009543244A (ja) 2009-12-03

Similar Documents

Publication Publication Date Title
CN101491000B (zh) 用于混淆密码函数的方法和系统
JP5496663B2 (ja) デジタルデータ処理装置の耐改竄性
JP5249053B2 (ja) データ処理システムの完全性
CN101536398B (zh) 用于白盒实现的加密方法
US7464269B2 (en) Secure method and system for handling and distributing digital media
KR20070001893A (ko) 탬퍼-레지스턴트 트러스티드 가상 머신
CN101790865A (zh) 更新密码密钥数据
US20140122895A1 (en) Providing Security Support for Digital Rights Management in Different Formats
US9819486B2 (en) S-box in cryptographic implementation
US20170310488A1 (en) A challenge-response method and associated computing device
JP2011520150A (ja) 指数難読化
US8023651B2 (en) Block ciphering system, using permutations to hide the core ciphering function of each encryption round
US9025765B2 (en) Data security

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: YEDETO CO., LTD.

Free format text: FORMER OWNER: KONINKLIJKE PHILIPS ELECTRONICS N.V.

Effective date: 20100402

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: EINDHOVEN, NETHERLANDS TO: HOOFDDORP, NETHERLAND

TA01 Transfer of patent application right

Effective date of registration: 20100402

Address after: Holland Hoofddorp

Applicant after: Irdeto B.V.

Address before: Holland Ian Deho Finn

Applicant before: Koninklijke Philips Electronics N.V.

C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: IRDETO BV

Free format text: FORMER NAME: IRDETO B.V.

CP01 Change in the name or title of a patent holder

Address after: Holland Hoofddorp

Patentee after: Irdeto Corporate B. V.

Address before: Holland Hoofddorp

Patentee before: Irdeto B.V.

ASS Succession or assignment of patent right

Owner name: IRDETO B.V.

Free format text: FORMER OWNER: IRDETO BV

Effective date: 20150114

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150114

Address after: Holland Hoofddorp

Patentee after: Irdeto B.V.

Address before: Holland Hoofddorp

Patentee before: Irdeto Corporate B. V.

C56 Change in the name or address of the patentee

Owner name: IRDETO B. V.

Free format text: FORMER NAME: IRDETO B.V.

CP01 Change in the name or title of a patent holder

Address after: Holland Hoofddorp

Patentee after: Ai Dide Technology Co., Ltd.

Address before: Holland Hoofddorp

Patentee before: Irdeto B.V.

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

Granted publication date: 20111228

Termination date: 20200704

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