CN105281893A - 用于引入白箱实现对串集合的依赖性的方法 - Google Patents
用于引入白箱实现对串集合的依赖性的方法 Download PDFInfo
- Publication number
- CN105281893A CN105281893A CN201510349391.2A CN201510349391A CN105281893A CN 105281893 A CN105281893 A CN 105281893A CN 201510349391 A CN201510349391 A CN 201510349391A CN 105281893 A CN105281893 A CN 105281893A
- Authority
- CN
- China
- Prior art keywords
- function
- string value
- output
- realizes
- white box
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/043—Masking or blinding of tables, e.g. lookup, substitution or mapping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/16—Obfuscation or hiding, e.g. involving white box
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
一种用于引入白箱实现对串集合的依赖性的方法。一种在密码系统中使用密码实现执行密码操作的方法,包括:由所述密码系统接收标识串值;由所述密码系统接收输入消息;由所述密码系统执行将输入消息映射到输出消息的带密钥密码操作,其中当所述标识串值是绑定串值的集合中的一个绑定串值时,输出消息是正确结果,其中所述集合包括多个绑定串值。
Description
本专利申请涉及Michiels等的题为“METHODFORINCLUDINGANIMPLICITINTEGRITYORAUTHENTICITYCHECKINTOAWHITE-BOXIMPLEMENTATION”的美国专利申请No.14/263,429(下文称为“相关申请”)。
技术领域
这里公开的多种示例性实施例一般地涉及用于引入白箱实现对串集合的依赖性的方法。
背景技术
互联网给用户带来了对数字内容的便捷且普及的访问。由于互联网是强大的分发通道,所以许多用户设备都力求能够直接访问互联网。用户设备可以包括个人计算机、膝上型计算机、机顶盒、互联网启用的媒体播放器、移动电话、智能手机、平板电脑、移动热点或能够访问互联网的任意其它设备。将互联网用作版权内容的分发介质在确保内容提供商的利益方面带来了极大的挑战。用户设备越发普遍地使用加载了适当软件的处理器来呈现(回放)数字内容(比如音频和/或视频)。对回放软件的控制是加强内容拥有者的利益的一种手段,其中包括可以使用所述内容的条款和条件。此前,许多用户设备是封闭系统。如今,越来越多的平台变为部分开放的。一些用户可以被假定为能够完全地控制和访问提供内容访问的硬件和软件,并拥有大量时间和资源来攻击和绕过任意内容保护机制。结果,内容提供商必须在社区的恶意网络上将内容递送给合法用户,其中所述社区中并不是所有用户或用户设备都是可信的。
可以访问安全软件应用来执行多种功能,比如用来保护和认证数字内容的密码功能。为了对抗攻击,必须对这些算法进行模糊处理(隐藏),以防止对算法进行反向工程和修改或禁止获得用户特定安全信息。从而,可以通过如实现安全软件的处理器的指令集所限定的多种功能来执行安全软件应用的功能。例如,一种用来掩盖这些功能的手段是使用查找表。
对数字版权管理(DRM)和其它安全软件的广泛使用引起了对于寻求使得对软件的篡改更加复杂的安全、防篡改的软件的需求。存在多种用来提高软件应用的防篡改的技术。这些技术大多基于以下方面:通过在软件应用的控制和数据路径中都加入随机性和复杂性掩饰来隐藏所述应用的嵌入知识。其背后的构思在于,只通过代码检查来提取信息将更加困难。因此,找到处理安全应用的访问和许可控制的代码并进而将其改变是更加困难的。
本文所使用的白箱密码包括在攻击者已经对运行白箱密码软件的系统完全控制的环境中执行密码功能的安全软件应用。从而,攻击者可以修改输入和输出,追踪软件的操作,在任意时刻对软件所使用的存储器进行采样和监测,甚至修改软件。从而,需要通过防止公开安全功能中使用的秘密信息的方式来执行安全功能。可以通过多种方式来实现白箱密码功能。这些方法包括:掩盖软件代码;使用掩盖秘密信息的使用的复杂数学函数;使用查找表;使用有限状态机;或执行密码功能但隐藏这些安全功能所需的秘密信息的任何其它方法。白箱实现还可以包含包括反调试和防篡改属性的组件。
密码算法的软件实现比硬件实现更受欢迎有多种理由。比如,可以是因为在密钥泄漏的情况下软件方案是可更新的、因为其成本低、或因为应用开发者不对实现白箱系统的硬件有任何影响。
发明内容
下文给出了对多种示例性实施例的简要概述。以下概述中可以进行一些简化和省略,其是为了强调和介绍多种示例性实施例的一些方面,而不是为了限制本发明的范围。随后的内容中将对足以使得本领域技术人员能够实施和使用发明构思的示例性实施例进行详细描述。
多种示例性实施例涉及一种编码有指令的非瞬时机器可读存储介质,所述指令由密码实现在密码系统中执行以用于执行密码操作,所述非瞬时机器可读存储介质包括:用于由所述密码系统接收标识串值的指令;用于由所述密码系统接收输入消息的指令;用于由所述密码系统执行将所述输入消息映射到输出消息的带密钥密码操作的指令,其中当所述标识串值是绑定串值的集合中的一个绑定串值时,所述输出消息是正确结果,其中所述集合包括多个绑定串值。
描述了多种实施例,其中,当所述标识串值不在所述绑定串值的集合中时,存在输出消息是不正确结果的输入消息。
描述了多种实施例,其中,所述标识串值基于所述密码实现的标识。
描述了多种实施例,其中,所述标识串值基于所述密码系统中的码的一部分的散列。
描述了多种实施例,其中,所述标识串值基于所述密码系统的标识。
描述了多种实施例,其中,所述标识串值基于用户密码。
描述了多种实施例,其中,密码实现包括多个函数,所述多个函数包括第一函数和第二函数,以及所述非瞬时机器可读存储介质还包括:用于基于所述标识串值对所述第一函数的输出进行编码的指令;以及用于对经编码的所述第一函数的输出执行所述第二函数的指令,其中所述第二函数包括:使用所述绑定串值的集合对所述第一函数的经编码的输出进行解码。
描述了多种实施例,其中,密码实现包括多个函数,所述多个函数包括第一函数和第二函数,以及所述非瞬时机器可读存储介质还包括:用于使用所述绑定串值的集合对所述第一函数的输出进行编码的指令;用于对经编码的所述第一函数的输出执行第二函数的指令,其中所述第二函数包括基于所述标识串值对所述第一函数的经编码的输出进行解码。
描述了多种实施例,其中密码实现包括多个函数,所述多个函数包括第一函数第二函数,以及所述非瞬时机器可读存储介质还包括:用于使用所述标识串值对所述第一函数的输出进行扰动的指令;以及用于对所述第一函数的经扰动的输出执行所述第二函数的指令,其中所述第二函数包括使用所述绑定串值的集合补偿所述第一函数的输出的扰动。
描述了多种实施例,其中,密码实现包括多个函数,所述多个函数包括第一函数和第二函数,以及所述非瞬时机器可读存储介质还包括:用于基于所述标识串值在所述第一函数的计算中引入扰动的指令;以及用于基于所述绑定串值的集合在所述第二函数的计算期间补偿所述第一函数的所述计算中的扰动的指令。
描述了多种实施例,其中,密码实现包括多个函数,所述多个函数包括第一函数和第二函数,以及所述非瞬时机器可读存储介质还包括:用于基于所述绑定串值的集合在所述第一函数的计算中引入扰动的指令;以及用于基于所述标识串值在所述第二函数的计算期间补偿所述第一函数的所述计算中的扰动的指令。
描述了多种实施例,其中,所述密码系统包括有限状态机的网络。
描述了多种实施例,其中,所述密码系统包括查找表的网络。
描述了多种实施例,其中,所述密码操作是高级加密系统(AES)或数据加密标准(DES)之一。
描述了多种实施例,其中,所述密码实现包括多个函数,所述多个函数包括第一函数和第二函数,以及所述非瞬时机器可读存储介质还包括:用于基于所述标识串值修改所述第一函数的指令。
描述了多种实施例,其中,所述第一函数是多个指令,并且基于所述标识串值修改所述第一函数包括:基于所述标识串值产生修改串值,并且其中使用所述修改串值来实现所述多个指令的一部分。
此外,多种示例性实施例涉及一种在密码系统中产生将输入消息映射到输出消息的密码操作的密码实现的方法,所述密码系统将所述密码实现绑定到绑定串值,所述方法包括:接收指定所述绑定串值的集合的信息;修改密码实现以接收标识串值;基于所接收的指定所述绑定串值的集合的信息修改所述密码实现,以使得:当所接收的标识串值是所述绑定串值的集合中的一个绑定串值时,所述密码实现输出正确输出消息。
描述了多种实施例,其中,当所接收的标识串值不是所述绑定串值的集合中一个绑定串值时,所述密码实现输出不正确输出消息。
描述了多种实施例,其中,所述标识串值基于所述密码实现的标识。
描述了多种实施例,其中,所述标识串值基于所述密码实现的一部分的散列。描述了多种实施例,其中,所述标识串值基于所述密码系统的标识。
描述了多种实施例,其中,所述标识串值基于用户密码。
描述了多种实施例,其中,所述密码实现包括多个函数,所述多个函数包括第一函数和第二函数,以及修改所述密码实现以使得:基于所述标识串值对所述第一函数之一的输出进行编码;以及对经编码的所述第一函数的输出执行第二函数,其中所述第二函数包括使用所述绑定串值的集合对所述第一函数的经编码的输出进行解码。
描述了多种实施例,其中,所述密码实现包括多个函数,所述多个函数包括第一函数和第二函数,以及修改所述密码实现以使得:基于所述绑定串值的集合对所述第一函数之一的输出进行编码;以及对经编码的所述第一函数的输出执行第二函数,其中所述第二函数包括基于所述标识串值对所述第一函数的经编码的输出进行解码。
描述了多种实施例,其中,所述密码实现包括多个函数,所述多个函数包括第一函数和第二函数,以及修改所述密码实现以使得:使用所述标识串值对所述第一函数之一的输出进行扰动;以及对经编码的所述第一函数的输出执行第二函数,其中所述第二函数包括使用所述绑定串值的集合补偿所述第一函数的输出的扰动。
描述了多种实施例,其中,所述密码实现包括多个函数,所述多个函数包括第一函数和第二函数,以及修改所述密码实现以使得:基于所述标识串值在所述第一函数的计算中引入扰动;以及基于所述绑定串值的集合在所述第二函数的计算期间补偿所述第一函数的所述计算中的扰动。
描述了多种实施例,其中,所述密码实现包括多个函数,所述多个函数包括第一函数和第二函数,以及修改所述密码实现以使得:基于所述绑定串值的集合在所述第一函数的计算中引入扰动;以及基于所述标识串值在所述第二函数的计算期间补偿所述第一函数的所述计算中的扰动。
描述了多种实施例,其中,所述密码系统包括有限状态机的网络。
描述了多种实施例,其中,所述密码系统包括查找表的网络。
描述了多种实施例,其中,所述密码操作是高级加密系统(AES)或数据加密标准(DES)之一。
描述了多种实施例,其中所述密码实现包括多个函数,所述多个函数包括第一函数,以及修改所述密码实现以使得:第一函数基于所述标识串值。
描述了多种实施例,其中所述第一函数是多个指令,并且修改所述密码实现使得所述第一函数基于所述标识串值包括:基于所述标识串值产生修改串值,并且其中使用所述修改串值来实现所述多个指令的一部分。
此外,多种示例性实施例涉及一种在密码系统中使用密码实现执行密码操作的方法,包括:由所述密码系统接收标识串值;由所述密码系统接收输入消息;由所述密码系统执行将所述输入消息映射到输出消息的带密钥密码操作,其中当所述标识串值是绑定串值的集合中的一个绑定串值时,所述输出消息是正确结果,其中所述集合包括多个绑定串值。
描述了多种实施例,其中,当所述标识串值不在所述绑定串值的集合中时,存在输出消息是不正确结果的输入消息。
描述了多种实施例,其中,所述标识串值基于所述密码实现的标识。
描述了多种实施例,其中,所述标识串值基于所述密码系统中的码的一部分的散列。
描述了多种实施例,其中,所述标识串值基于所述密码系统的标识。
描述了多种实施例,其中,所述标识串值基于用户密码。
描述了多种实施例,其中,密码实现包括多个函数,所述多个函数包括第一函数和第二函数,以及所述方法还包括:基于所述标识串值对所述第一函数的输出进行编码;以及对经编码的所述第一函数的输出执行所述第二函数,其中所述第二函数包括使用所述绑定串值的集合对所述第一函数的经编码的输出进行解码。
描述了多种实施例,其中,密码实现包括多个函数,所述多个函数包括第一函数和第二函数,以及所述方法还包括:使用所述绑定串值的集合对所述第一函数的输出进行编码,以及对经编码的所述第一函数的输出执行所述第二函数,其中所述第二函数包括基于所述标识串值对所述第一函数的经编码的输出进行解码。
描述了多种实施例,其中,密码实现包括多个函数,所述多个函数包括第一函数和第二函数,以及所述方法还包括:使用所述标识串值对所述第一函数的输出进行扰动;以及对所述第一函数的经扰动的输出执行所述第二函数,其中所述第二函数包括使用所述绑定串值的集合补偿所述第一函数的输出的扰动。
描述了多种实施例,其中,密码实现包括多个函数,所述多个函数包括第一函数和第二函数,以及所述方法还包括:基于所述标识串值在所述第一函数的计算中引入扰动;以及基于所述绑定串值的集合在所述第二函数的计算期间补偿所述第一函数的所述计算中的扰动。
描述了多种实施例,其中,密码实现包括多个函数,所述多个函数包括第一函数和第二函数,以及所述方法还包括:基于所述绑定串值的集合在所述第一函数的计算中引入扰动;以及基于所述标识串值在所述第二函数的计算期间补偿所述第一函数的所述计算中的扰动。
描述了多种实施例,其中,所述密码系统包括有限状态机的网络。
描述了多种实施例,其中,所述密码系统包括查找表的网络。
描述了多种实施例,其中,所述密码操作是高级加密系统(AES)或数据加密标准(DES)之一。
描述了多种实施例,其中所述密码实现包括多个函数,所述多个函数包括第一函数,并且所述方法还包括:基于所述标识串值修改所述第一函数。
描述了多种实施例,其中所述第一函数是多个指令,并且基于所述标识串值修改所述第一函数包括:基于所述标识串值产生修改串值,并且其中使用所述修改串值来实现所述多个指令的一部分。
附图说明
为了更好地理解各种示例性实施例,对附图进行参考,其中:
图1示出了AES的一个回合的主要步骤;
图2示出了在对回合的输入进行编码的情况下的白箱AES实现;
图3示出了借助查找表的网络对一个输出半字节的计算;
图4示出了通过对输入和输出进行编码而模糊处理的图3的网络表的一部分;
图5示出了绑定白箱实现的第一实施例;
图6示出了将模糊处理应用于图5的白箱实现;
图7示出了绑定白箱实现的第二实施例;以及
图8是示出了将白箱实现绑定到绑定串集合的方法的流程图。
为了便于理解,使用相同的附图标记来指代具有基本相同或相似的结构和/或基本相同或相似的功能的元素。
具体实施方式
说明书和附图示出了本发明的原理。从而,将理解的是,本领域技术人员能够设想出实现本发明的原理并包括在其范围内的多种布置(尽管此处并未明确描述或示出)。此外,这里所述的所有示例明显主要用于教导目的,以辅助读者理解本发明的原理以及发明人为推进现有技术而贡献的构思,其被认为不限于具体描述的示例和条件。此外,本文中使用的术语“或”指代非排他性的或(即和/或),除非另作指示(例如“或其它”或“或在备选方式中”)。此外,本文所述的多种实施例不必是互斥的,一些实施例可以与一个或多个其它实施例进行组合以形成新的实施例。
密码算法的软件实现中可能出现的问题之一是代码提举(codelifting),可通过将白箱实现绑定到任意给定的串s(即只有串s是可用的,白箱实现才能够正确地工作)来克服该问题。将白箱实现绑定到串s可用来实现节点所定、防软件篡改、用户绑定和叛逆者追踪等。之所以可能出现代码提举的问题,是因为密码算法的软件实现可能被拷贝并在未授权的节点上使用或被未授权的用户拷贝并使用。从而,白箱实现仍可作为整体分发(尽管其可有效地隐藏密码密钥)。该白箱实现与密钥本身一样有价值。例如,如果白箱实现实施了解密算法,则由于不具有密钥,接收方不能进行加密,但白箱实现足以进行解密。这意味着对手非法地将白箱实现作为整体分发,而不是分发深藏的密码密钥,其通常具有很高的价值,而不应以不受控的方式进行分发。通常,密钥只是隐式地存在。在其它实施例中,密钥可包括动态密钥,举例来讲,所述动态密钥获得隐式密钥信息并使用某种类型的动态信息对其进行改变以改变在密码功能中使用的密钥。
如上所述,对任意给定的串s的使用可被用来克服这些问题。Micheils的美国专利No.8,479,016(下文称为“Michiels”)中描述了针对使用任意给定串s的方案。串s可以是可从应当在其上运行白箱实现的设备导出并且不能在其它设备上导出的某一二进制串。例如,s可以被定义为设备的唯一标识符。在Michiels中,导出了包含s的白箱实现,且该白箱实现被设置设备上,其中省略了串s,其中串是白箱实现中使用的查找表或操作代码的一部分。结果,设备只能在其可以导出所省略的串s时才能执行白箱实现,然后当请求所省略的表条目或者提供操作代码中的正确指令时使用s的值,即白箱实现只能在合法的设备上执行。
在相关申请中,描述了实现用于将白箱实现绑定到任意串s(而不是将其包括在查找表的定义中)的备选方式的实施例。取而代之地,串s是白箱实现的函数的参数,即串s并不像Michiels中那样用于函数的设定(例如,查找表或操作代码)而是用作函数的参数。
在相关申请中,描述了用于将白箱实现绑定到任意串s的方法。以下包含了对此的描述。然后,Michiels和相关申请的实施例将扩展为允许将白箱实现绑定到多个串。
可以使用表示在其上运行白箱实现的系统的完整性或可信性的任意串s。例如,如果s是某一代码段的散列,则其强化了软件对篡改的抵御。此外,串s可用于节点锁定,其中s是白箱系统中的节点或硬件的唯一标识。串s的另一使用情况是叛逆者追踪。如果串是白箱实现的合法拥有者的名称,并且如果该白箱实现遭遇非法设备或互联网,则可将白箱实现追溯到泄漏源。此外,还可通过将s与用户密码或用户密码的散列相关联,使用s来标识用户。
相关申请和Michiels都描述了一种使白箱实现的正确运行依赖于任意给定串s的方法。这可用于通过以下方式来解决上述代码提举的问题。令串s是可从应正在运行白箱实现的设备得到并且无法从其他设备得到的某个二进制串。例如,s可定义为设备的唯一标识符。接下来,使用相关申请或Michiels的方案来使白箱实现依赖于s。然后,所获得的白箱实现可安装在设备上,其中串s被省略。然后,仅当设备可得到被省略的串s时,设备才可以执行白箱实现,即,白箱实现只能在合法设备上执行。类似地,通过令串s为密码或(数字化)指纹,可将白箱实现绑定到个人。
这两种方案的特点在于,一旦得到白箱实现,就不再选择需提供给实现以使其正确工作的串s,也就是说,当且仅当串s存在时,其针对所有消息才正确工作。也就是说,例如,如果白箱实现将被绑定至单个设备,便已足够。然而,假设将向用户提供可在多个设备上运行的白箱实现:例如,他们的移动电话及他们的平板电脑。那么针对这两种方案,必须向用户提供两个白箱实现,一个用于移动电话,一个用于平板电脑。以下是另一个示例,其中具有在多个串之间进行选择以获得正确运行的白箱实现的选项。假设经由表示密码的串s将白箱实现绑定于用户。那么忘记密码将使得白箱实现无用。当使用白箱实现来对有价值的数据进行解密时,这意味着将无法再次读取有价值的数据。一种方案可包括(除了密码串s)对于例如只有帮助台(helpdesk)所知的密码,白箱实现依然正确工作。在这种情形中,帮助台可帮助恢复有价值的数据。以下描述的本发明实施例使得在白箱实现针对串集合中的任意串(而不是集合中的所有串)都正确工作的意义上,白箱实现依赖于串集合。
为示出本发明的实施例,现在将描述AES的示例白箱实现。白箱密码是在软件中实现密码算法以使得攻击者很难找到密钥的规则。这里,假定最强的可想到的(对于软件,最实际的)攻击模型,其中假定对手具有对白箱实现的完全控制和完全访问。
以下文献中提出了对于高级加密标准(AES)和数据加密标准(DES)的白箱实现的基于表的方式:“White-BoxCryptographyandanAESImplementation”,StanleyChow,PhilipEisen,HaroldJohnson,andPaulC.VanOorschot,SelectedAreasinCryptography:9thAnnualInternationalWorkshop,SAC2002,St.John’s,Newfoundland,Canada,Aug.15-16,2002,下文称为“Chow1”;以及“AWhite-BoxDESImplementationforDRMApplications”,StanleyChow,PhilEisen,HaroldJohnson,andPaulC.vanOorschot,DigitalRightsManagement:ACMCCS-9Workshop,DRM2002,Washington,D.C.,USA,Nov.18,2002,下文称为“Chow2”。Chow1和Chow2公开了通过以下操作的组合来使用基于表的方式隐藏密码密钥的方法:使用随机双射对其表进行编码、以及通过将其进一步推入包含应用来扩展密码边界。
如上所述,针对许多密码操作,期望具有白箱实现。本发明可适用于例如对称或非对称密码操作。此外,本发明可以适用于块密码、流密码、消息认证方案、签名方案等。注意的是,本发明还可适用于散列函数。如果散列函数用作拥有秘密信息(例如秘密密钥、秘密数据等)的建造块,则后者尤其有用。例如,本发明可适用于带密钥(keyed)散列消息认证代码(HMAC或KHMAC)中使用的散列函数。熟知的块密码包括:高级加密标准(AES)、安全快速加密例程(SAFER,以及变形SAFER+和SAFER++)、Blowfish、数据加密标准(DES)等。熟知的流密码是RC4。此外,通过使用适当的操作模式(例如密码反馈(CFB)、计数器模式(CTR)等),可以将任意块密码用作流密码。
可以使用多个基本块实施白箱实现。采用将一些块构建在一个或多个之前的块的输出上的方式,将多个基本块互连。还可将基本块实现在运行于通用计算机芯片(例如微处理器)上的软件中。例如,基本块可以使用多个计算机指令,其中包括算术指令,这些指令一起实现基本块的功能。基本块的一种广泛使用的实现是查找表。例如,Chow1和Chow2采用这种方式来实现AES和DES块密码。查找表实现包括列表,该列表针对可能的输入值列出输出值。输入值在查找表中可以是显式的。在这种情况中,通过在输入值列表中搜索特定输入,查找表实现可以将特定输入映射到特定输出。当找到特定输入时,也找到了特定输出。例如,特定输出可以与特定输入存储在一起。优选地,输入值没有被显式地存储,而只是隐式地存储。例如,如果可能的输入是连续范围的编号或比特串,则查找表可被限制为存储输出值的列表。特定的输入编号可被映射到存储在由所述编号所指示的位置处的特定输出。此外,有限状态机或代码模糊可以用来实施白箱实现。
例如,可通过针对函数的可能输入计算其输出值并将所述输出存储在列表中来创建针对所述函数的查找表。如果所述函数取决于多个输入,则可针对多个输入的所有可能组合计算并存储所述输出。查找表尤其适于实现非线性函数,其不定期地将输入映射到输出。如下文所释,通过向其查找表中的一个或多个应用固定的模糊输入编码和固定的输出编码,可进一步对白箱实现进行模糊处理。然后,应用固定的模糊输入编码和输出编码的结果被完全预先评估。通过使用这一技术,查找表可被具有相同尺寸(其获取相同数量的输入比特,并产生相同数量的输出比特)的模糊查找表替代。在最终的白箱实现中,在这种模糊处理中使用的输入编码和输出编码不是显式的。
基本块的网络被布置为在被呈递了输入消息时计算输出消息。通常,通过多个基本输入块来对输入消息进行操作。多个进一步的基本输入块可从一个或多个所述基本输入块和/或从所述输入获取输入。再进一步的基本块可获取采用以下各项的任意组合形式的输入:输入消息、基本输入块的输出和所述进一步的基本块的输出。最终,基本退出块的某集合(即至少一个)产生输出消息的全部或部分,作为输出。通过这一方式,出现了基本块的网络,该网络共同地计算从输入消息到输出消息的映射。
所使用的密钥可以是密码密钥,并且可包含足够的熵来承受所预计的蛮力攻击。注意到,在白箱实现中,密钥通常并不显式地存在于所述实现中。这将冒着通过对实现的检查发现所述密钥的风险。通常,密钥只是隐式存在的。已知有多种方式来将密钥隐藏在密码系统中。通常,至少使用部分评估的方法,其中只要需要密钥输入的基本块不取决于输入消息,则对其进行评估。例如,可通过事先对密钥值和掩码值一起进行异或处理来部分地评估基本操作(其中输入值、掩码值(其不取决于输入消息(例如来自S箱的值))和密钥值需要进行异或处理)。通过这种方式,操作仍然取决于密钥值,但是密钥值在所述实现中并不是显式存在的。取而代之地,所述实现中只存在密钥值和掩码值之间的异或处理。注意到,隐藏所述密钥的更为复杂的方式和/或进一步的方式与本发明是兼容的。
以下示例性实施例是使用AES(高级加密标准)块密码描述的,这是因为AES已经成为块密码的广泛使用的标准。AES是块大小为128比特或16字节的块密码。明文被分成16字节的块,这些块形成加密算法的初始状态,并且加密算法的最终状态是密码文本。在加密算法的任意给定点,这些16字节是加密算法的状态。为了在概念上解释AES,所述状态的字节被组织为4×4字节的矩阵。AES包括多个取决于密钥大小的回合。每个回合包括对状态矩阵的字节、列或行进行操作的相似的处理步骤,每个回合在这些处理步骤中使用不同的回合密钥。在使用AES作为示例的讨论中,注意到,AES以特定的方式定义回合。在以下实施例中,回合是步骤的任意群组,所述群组包括至少一个非线性映射函数,比如AES中的S箱。从而,下文所述的回合包括一个非线性映射函数和所述密码功能的其它步骤的任意组合。
图1示出了AES的一个回合的一些主要处理步骤。所述处理步骤包括:
AddRoundKey(添加回合密钥)110——所述状态的每个字节与回合密钥的字节进行异或处理;
SubBytes(替换字节)120——使用查找表进行字节到字节的置换;
ShiftRows(移位行)130——所述状态的每一行旋转固定数量的字节;以及
MixColumns(混合列)140——使用GF(28)中的模乘法来处理每一列。
步骤SubBytes120、ShiftRows130和MixColumns140独立于所使用的特定密钥。在步骤AddRoundKey110中应用密钥。除了步骤ShiftRows130,可在不知道其他列的情况下,对4x4状态矩阵的每一列执行处理步骤。因此,由于每一列由四个8比特值构成,所以它们可被认为是32比特操作。虚线150指示在已经执行了所需数量的回合之前重复所述处理。
这些步骤中的每一个或步骤的组合可由查找表或由查找表网络表示。如果AddRoundKey110步骤是通过与回合密钥进行异或处理实现的,则密钥在白箱攻击的情况下对于攻击者来讲是可见的。还可将AddRoundKey110步骤嵌入到查找表中,这使得不那么明显找到密钥。事实上,能够使用查找表网络来替代AES的完整回合。例如,可以使用表查找来实现SubBytes120、ShiftRows130和MixColumns140步骤。下文中充分详细地讨论了AES的可能白箱实现,以描述以下发明的实施例,但是在Chow1中可以找到对这一实现的进一步详细描述。此外,可以使用查找表实现的其它变形,这些变形在本发明的范围之内。
基于表的白箱实现和有限状态机实现都具有以下属性:实现中的所有中间值都被编码(与标准实现相比)。使用有限状态机的白箱实现的示例公开于标题为“DataProcessingMethod”的美国专利公开2007/0014394中,以及由WulfHarder和AtisStraujums在2008年3月11日在重新信任第六次季度会议上所作的题为“SynchrosoftMCFACTTMSecureDataProcessingTechnology被的报告,它们均通过引用并入本文以用于所有目的,如同在本文中完全阐述一样。图2示出了对回合的输入(即对S箱的输入)进行编码的白箱AES实现。如图所示,16个输入字节中的每一个都被fi编码,输出字节中的每一个都被gi编码。
为了描述本发明的实施例,将描述基于表的白箱AES实现的基本描述。对用于实现基于表的白箱AES的方法的更具体地描述,参见Chow1。Chow1示出了使用特定尺寸的表分解某些函数的特定实现。应该理解的是,可以对表进行各种其它划分,从而导致查找表的不同函数以及不同尺寸。此外,虽然本发明的下述实施例使用AES的基于表的白箱实现,但是可根据所述实施例来实现其它密码和密码功能。此外,可使用其它类型的白箱实现,而不是基于表的实现,例如有限状态实现。
将基于表的白箱AES的描述分为两个步骤。在第一个步骤中,AES的回合被描述为查找表网络。在第二个步骤中,通过对表的输入和输出进行编码来对表进行模糊处理。
步骤1:将AES实现为查找表网络
AES对16字节的数据块进行操作。它们通常被描述为4x4的字节矩阵,称为状态,包括字节x1,1、x1,2、x1,3...x4,4。上文中参照图1描述的AES的回合包括以下操作:AddRoundKey110、SubBytes120、ShiftRows130和MixColumns140。前两个操作AddRoundKey和SubBytes可以合并为单个T箱操作。也就是说,可以将针对输入字节xi,j的字节到字节函数Ti,j定义为其中ki,j是基于AES密钥的16字节回合密钥的单个字节。令yi,j为Ti,j的输出。ShiftRows操作仅是对输出字节yi,j进行索引重新编号。为了便于表述,在此处将这一操作略去,但这一操作可并入到实现Ti,j的查找表中或被实现为对状态矩阵的单独操控。在MixColumns步骤中,针对一些常数MCl,r,经由GF(28)中的代数表达式 从根据4个输出字节y1,j、y2,j、y3,j和y4,j计算出所述回合的输出字节zi,j。
现在针对每个字节到字节函数定义查找表Qi,j,l(xi,j)=MCl,i·Ti,j(xi,j)(其中i,j,l=1,2,...,16)。然后可通过对这些查找表的结果进行异或处理计算出任何输出字节zl,j,即 注意到,Q箱的索引i,j,li可被解释为“回合的输入字节i,j对回合的输出比特l,j的贡献”。可实现XOR,以对两个半字节(即4比特值)中的每一个进行操作,作为缩减XOR表的尺寸的查找表。从而,可实现Q箱,以产生输出半字节,从而减少表的尺寸。因此,AES回合的每个输出字节zl,j的计算被描述为查找表网络。图3示出了用来计算字节z2,3的单个输出半字节的查找表网络。
图3示出了借助查找表的网络对一个输出半字节的计算。Q箱中的上标索引(1)指示所述表只提供Q箱的输出的第一个半字节。输入状态310中的输入字节x1,3、x2,3、x3,3和x4,3的集合输入到Q箱320、322、324、326中。查找表320和322的输出馈入XOR330,查找表324和326的输出馈入XOR332。XOR330和332的输出馈入XOR334。XOR334的输出是输出状态340的输出z2,3的第一个半字节。可采用相同的方式使用另外的Q箱以及相似的XOR网络计算输出状态340的输出z2,3的第二个半字节。此外,可实现表的另外集合,以通过接收来自输入状态的字节列并将其转换成输出状态的相应列的输出来完全地将输入状态310转换成输出状态340。
步骤2:对表和中间值进行模糊处理
在图3中所示的实现中,可以容易地从Q箱提取密钥。仅将逆MixColumns乘法和逆S箱应用到所述输出会显露出清晰的AddRoundKey操作。为了防止这一点,使用任意双射函数对所有查找表的输入和输出进行编码。在Chow1中描述了这一点。这意味着将查找表与对输出进行编码的编码函数以及对输入进行解码的解码函数合并。编码被选为使得对一个表的输出编码与接下来的表中假定的输入编码相匹配。在图4中,针对第一回合,描述了图3中的实现的一部分。在该示例中,为了与AES一致,所述回合的输入未被编码,但所述回合的输出被编码。在下一回合中处理输出编码。也就是说,与第一回合不同,第二回合(以及之后的回合)假定输入被编码。备选地,第一回合可接收编码输入。然后,该输入编码必须应用于包含白箱实现的软件程序中的其它地方。类似地,根据输出是否将与AES一致,最后一个回合可以包括或不包括输出编码。注意到,在所获得的白箱实现中,查找表和中间值两者都被模糊处理。
上述对基于表查找的白箱实现的描述是为了AES的加密操作。注意到,通过使用SubBytes、ShiftRows和MixColumns操作的逆操作(invSubBytes、invShiftRows和invMixColumns),可以容易地将所述描述调整用于解密操作。从而,假定在以下实施例中可根据需要将上述描述用于对AES的加密或解密操作。
相关申请描述了以下实施例。令s为白箱实现中的函数(例如查找表)的参数。即,s不用于函数的设定,而是作为函数的参数。在一种实施例中,可根据s选择白箱实现中的中间值的内部编码。在另一实施例中,在白箱实现中的计算值中可引入对s的依赖性,该依赖性在所述计算中被进一步消除,以使得可以获得正确的计算结果。
引入对任意串s的依赖性的方法可通过使用s对白箱实现进行参数化来起作用。在基于表的白箱实现中,每个查找表将另一查找表的输出(或输出的一部分)和/或所述实现的输入(或输入的一部分)(例如将被加密的明文)作为输入。从而,引入了将串s作为其输入的查找表或功能。
作为示例,包括4比特的单个串s可被绑定到白箱实现。串s可被称为绑定串值。通过将所描述的方法应用k次得到对具有4k比特的串的绑定,该实施例可以容易地扩展到更大的比特串。
图5示出了绑定白箱实现的第一实施例。图5与图3类似,但包括用来包括将串s绑定到白箱实现的扩展。可按如下方式来实现对任意4-比特串s的依赖性。令h0,...,h15为24个双射编码函数,令T为通过T(v,σ)=hσ(v)定义的8到4比特查找表550,其中v是来自Q箱520的输出半字节,半字节σ是标识串值。如图5所示,查找表T550从Q箱520Q(1) 1,3,2接收输入v,并且T550的输出被输入到接续的XOR表530。当σ=s时,XOR表530可补偿T550对v的影响。这可通过使用函数hs -1对XOR530的输入进行解码来完成。当σ=s时,这导致v的正确值被输入到XOR530。否则,输入到XOR530的值是不正确的并且导致白箱实现的不正确输出。注意到,越早在白箱实现中实现查找表T,当σ≠s时其对输出的改变就越大。
图6示出了将模糊处理应用于图5的白箱实现。Q箱620、622、624、626中的每一个对应于图5中的Q箱,但包括所示的输入解码gi和输出编码fi。此外,查找表650对应于图5中的查找表550,但包括输入解码f1 -1和输出编码f8。最后,XOR表630、632、634对应于图5中的XOR表530、532、534,但包括输入解码fi -1和输出编码fi。
现在将提供将图5的实施例扩展至包括多个绑定串的描述。令是4比特串的集合,并且令s∈W。则图5的实施例可被扩展为使得:如果则白箱实现产生不正确结果。定义h0,...,h15,使得如果i∈W,则对所有半字节v,hi(v)=hs(v),并且如果则存在至少一个使hi(v)≠hs(v)的半字节v。这将导致白箱实现的正确运行依赖于集合W中任意串的可用性。
可通过修改图5中所述的白箱实现来实现这一功能,如下所述。可修改表T550,从而对于W中的任意标识串值σ,定义hσ使得对全部半字节v都满足hσ(v)=hs(v)。另一方面,如果标识串值σ不在W中,则存在至少一个使hi(v)≠hs(v)的半字节v。这将导致当σ的值不在W中时,白箱实现不正确地运行。
图7示出了如相关申请所述的绑定白箱实现的第二实施例。在该实施例中,可基于σ或s对白箱实现中的第一函数的输出进行扰动。然后,在第二函数的输出中,可分别使用σ或s对扰动进行补偿。令v1、v2、v3、v4为由4个Q表720、722、724、726计算的4个半字节。对于在查找表Q(1) 1,3,2720之后计算的值v1,经由查找表T1750添加值h(σ,v1),其中h是具有8比特输入和4比特输出的任意函数。从而, 现在的想法是如何在σ=s时对添加h(σ,v1)进行补偿。这可按如下来完成。在添加T1750之后,网络计算值 同时需要被计算。为了对其进行补偿,可以添加查找表T2752和XOR查找表736,其中T2计算值h(s,v1),XOR表将h(s,v1)添加到这给出了一种实现,其中当且仅当所述实现接收到参数σ=s时才保证计算出正确值。再次,可按如上所述对图7中的查找表进行模糊处理,以获得最终的白箱实现。
现在将提供将图7的实施例扩展至包括多个绑定串的描述。假设白箱实现针对任何串σ∈W正确工作,其中W包括多个4比特串。在上述实施例中,h被定义为从8比特到4比特的任意函数。现在将h定义为具有以下性质的任意函数:针对所有σ∈W,h(v,σ)=h(v,s),否则,h(v,σ)≠h(v,s)。这导致以下性质,当且仅当σ∈W时,白箱实现才针对整个消息空间正确工作。
可通过修改图7中所述的白箱实现来实现这一功能,如下所述。可修改表T1750,使得对于W中的任意标识串值σ,定义hσ,使得对于全部半字节v都满足h(v,σ)=h(v,s)。另一方面,如果标识串值σ不在W中,则h(v,σ)≠h(v,s)。这将导致当σ的值不在W中时,白箱实现不正确地运行。
Michiels描述了一种使用绑定串s来指定在白箱实现中使用的查找表或软件代码的一部分的方法。因此,仅当存在与绑定串s相等的串σ时,白箱实现才能正确工作。然后,查找表或软件代码将正确地运行。否则,当串σ不等于绑定串s时,可能获得不正确的输出值。
现在,为将Michiels的实施例扩展至适应多个绑定串s,令为串集合,并且令s∈W。则如果那么白箱实现的计算受到干扰。可使用与上文所述相似的技术来使用Michiels的实施例得到相似的结果。
根据本发明的实施例的方法可作为计算机实现方法实现于计算机上。针对根据本发明的方法的可执行代码可存储在计算机程序介质上。计算机程序介质的示例包括存储器设备、光存储设备、集成电路、服务器、在线软件等。从而,白箱系统可包括实现白箱计算机程序的计算机。这种系统还可包括其他硬件元件,其中包括存储设备、用于与外部系统以及在白箱系统的元件之间进行数据传输的网络接口。
在本发明的一种实施例中,计算机程序可以包括适于当计算机程序运行于计算机上时执行根据本发明的方法的所有步骤的计算机程序代码。优选地,计算机程序嵌入在非瞬时计算机可读介质上。
此外,由于白箱密码通常是非常复杂的和/或模糊的,所以由人来写入过于冗繁。因此,具有一种用来以自动化的方式创建根据本发明的实施例的密码系统的方法是有利的。
创建根据本发明的密码系统的方法可作为计算机实现方法实现于计算机上或实现于专用硬件中或在两者的组合中。针对根据本发明的方法的可执行代码可存储在计算机程序介质上。在这种方法中,计算机程序可包括适于在计算机程序运行在计算机上时执行所述方法的所有步骤的计算机程序代码。计算机程序具体实现在非瞬时计算机可读介质上。
图8是示出了将白箱实现绑定到绑定串的方法的流程图。首先,方法开始(805)。然后,产生或接收密码操作的白箱实现(810)。这可如上所述的使用多种方法和实现来产生。接下来,可以接收标识使s∈W的串集合的信息(815)。串s可提供到特定软件实例集合或特定硬件系统集合的绑定。然后,可基于串s的集合修改白箱实现(820),使得:当接收到的输入σ是绑定串值的集合中的一个绑定串值时,白箱实现针对由白箱实现实现的密码操作产生正确的输出;以及当接收到的输入σ不是绑定串值的集合中的一个绑定串值时,白箱实现针对由白箱实现实现的密码操作产生不正确的输出。上文讨论的多种实施例提供可在白箱实现中实现该能力的不同方式。然后,所述方法可以结束(825)。
本文所述的密码系统可实现在用户设备上,例如移动电话、平板电脑、计算机、机顶盒、智能电视等。内容提供商(例如,电视网络、视频流服务、金融机构、音乐流服务等)可向用户设备提供软件,以便从内容提供商接收加密内容。该软件中可以嵌入如上所述的加密密钥,并且还可包括如上所述的绑定串。然后,内容提供商可向用户设备发送加密内容,然后用户设备可使用所提供的软件进行解密并使用内容。
用来实现本发明的实施例的处理器上运行的特定软件的任意组合构成特定的专用机器。
本文所使用的术语“非瞬时机器可读存储介质”将被理解为排除瞬时传播信号,但是包括所有形式的易失性和非易失性存储器。此外,本文所使用的术语“处理器”将被理解为涵盖多种设备,比如微处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)以及其它类似的处理设备。当软件实现在处理器上时,所述组合变成单个特定机器。
本领域技术人员应该理解的是,本文中的任意框图表示实现本发明的原理的说明性电路的概念视图。
虽然参考特定示例性方面详细描述了多种示例性实施例,但应该理解的是,本发明能够具有其它实施例,并且能够在多种显然的方面修改其细节。对本领域技术人员明显的是,在保持在本发明的精神和范围之内的同时,可以进行各种变形和修改。从而,前述公开、描述和附图只是说明性的,而决不用来限制本发明,本发明只由权利要求限定。
Claims (10)
1.一种在密码系统中使用密码实现执行密码操作的方法,包括:
由所述密码系统接收标识串值;
由所述密码系统接收输入消息;
由所述密码系统执行将所述输入消息映射到输出消息的带密钥密码操作,其中当所述标识串值是绑定串值的集合中的一个绑定串值时,所述输出消息是正确结果,其中所述集合包括多个绑定串值。
2.根据权利要求1所述的方法,其中,当所述标识串值不在所述绑定串值的集合中时,存在输出消息是不正确结果的输入消息。
3.根据权利要求1所述的方法,其中,所述标识串值基于所述密码实现的标识。
4.根据权利要求1所述的方法,其中,所述标识串值基于所述密码系统中的码的一部分的散列。
5.根据权利要求1所述的方法,其中,所述标识串值基于所述密码系统的标识。
6.根据权利要求1所述的方法,其中,所述标识串值基于用户密码。
7.根据权利要求1所述的方法,其中,所述密码实现包括多个函数,所述多个函数包括第一函数和第二函数,并且所述方法还包括:
基于所述标识串值对所述第一函数的输出进行编码;以及
对所述第一函数的经编码的输出执行所述第二函数,其中所述第二函数包括使用所述绑定串值的集合对所述第一函数的经编码的输出进行解码。
8.根据权利要求1所述的方法,其中,所述密码实现包括多个函数,所述多个函数包括第一函数和第二函数,并且所述方法还包括:
使用所述绑定串值的集合对所述第一函数的输出进行编码;以及
对所述第一函数的经编码的输出执行所述第二函数,其中所述第二函数包括基于所述标识串值对所述第一函数的经编码的输出进行解码。
9.根据权利要求1所述的方法,其中,所述密码实现包括多个函数,所述多个函数包括第一函数和第二函数,并且所述方法还包括:
使用所述标识串值对所述第一函数的输出进行扰动;以及
对所述第一函数的经扰动的输出执行所述第二函数,其中所述第二函数包括使用所述绑定串值的集合补偿所述第一函数的输出的扰动。
10.根据权利要求1所述的方法,其中,所述密码实现包括多个函数,所述多个函数包括第一函数和第二函数,并且所述方法还包括:
基于所述标识串值在所述第一函数的计算中引入扰动;以及
基于所述绑定串值的集合在所述第二函数的计算期间补偿所述第一函数的所述计算中的扰动。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/313,402 | 2014-06-24 | ||
US14/313,402 US10412054B2 (en) | 2014-06-24 | 2014-06-24 | Method for introducing dependence of white-box implementation on a set of strings |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105281893A true CN105281893A (zh) | 2016-01-27 |
CN105281893B CN105281893B (zh) | 2019-06-04 |
Family
ID=54870709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510349391.2A Active CN105281893B (zh) | 2014-06-24 | 2015-06-23 | 用于引入白箱实现对串集合的依赖性的方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10412054B2 (zh) |
CN (1) | CN105281893B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2960891B1 (en) | 2014-06-24 | 2019-01-16 | Nxp B.V. | Method for introducing dependence of white-box implementationon a set of strings |
CN108270550B (zh) * | 2018-01-10 | 2021-03-02 | 成都卫士通信息产业股份有限公司 | 一种基于sm4算法的安全高效的白盒实现方法及装置 |
JP7383985B2 (ja) * | 2019-10-30 | 2023-11-21 | 富士電機株式会社 | 情報処理装置、情報処理方法及びプログラム |
US11625498B2 (en) * | 2021-04-29 | 2023-04-11 | Arris Enterprises Llc | Cloud-based whitebox node locking |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060140401A1 (en) * | 2000-12-08 | 2006-06-29 | Johnson Harold J | System and method for protecting computer software from a white box attack |
CN101401348A (zh) * | 2006-03-10 | 2009-04-01 | 皇家飞利浦电子股份有限公司 | 用于使密码函数模糊的方法和系统 |
CN101491000A (zh) * | 2006-07-12 | 2009-07-22 | 皇家飞利浦电子股份有限公司 | 用于混淆密码函数的方法和系统 |
US20140101458A1 (en) * | 2010-11-05 | 2014-04-10 | Apple Inc. | Code tampering protection for insecure environments |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003003169A2 (en) | 2001-06-28 | 2003-01-09 | Cloakware Corporation | Secure method and system for biometric verification |
DE10319435B4 (de) | 2003-04-25 | 2018-07-26 | Whitecryption Corporation | Verfahren zur Verarbeitung von Daten zum Schutz eines Softwareprogramms vor Rekonstruktion |
US7482059B2 (en) * | 2004-05-10 | 2009-01-27 | Evident Technologies | Semiconductor nanocrystal complexes comprising a metal coating and methods of making same |
US7769165B2 (en) | 2005-10-14 | 2010-08-03 | Microsoft Corporation | Semi-public white-box cipher |
KR20080113277A (ko) * | 2006-04-28 | 2008-12-29 | 파나소닉 주식회사 | 프로그램 난독화시스템, 프로그램 난독화장치 및 프로그램 난독화방법 |
FR2922393A1 (fr) | 2007-10-10 | 2009-04-17 | France Telecom | Systeme tracable de chiffrement/dechiffrement de donnees numeriques diffusees |
US9710623B2 (en) | 2008-03-05 | 2017-07-18 | Irdeto B.V. | Cryptographic system |
CN100583057C (zh) | 2008-04-22 | 2010-01-20 | 中国科学院软件研究所 | 一种可信密码模块的测试用例生成方法及其测试系统 |
US8510726B2 (en) | 2008-05-23 | 2013-08-13 | Irdeto Canada Corporation | System and method for generating white-box implementations of software applications |
EP2406916A1 (en) | 2009-03-10 | 2012-01-18 | Irdeto Corporate B.V. | White-box cryptographic system with input dependent encodings |
KR20120072011A (ko) | 2010-12-23 | 2012-07-03 | 한국전자통신연구원 | 무결성 검증이 가능한 데이터 암호장치, 복호장치 및 방법 |
CN103797489B (zh) | 2011-03-21 | 2017-12-12 | 爱迪德技术有限公司 | 用于安全地将程序执行绑定到且节点锁定到受信任的签名授权机构的系统和方法 |
WO2014154273A1 (en) * | 2013-03-27 | 2014-10-02 | Irdeto B.V. | Aes implementation with error correction |
JP6064771B2 (ja) * | 2013-04-26 | 2017-01-25 | 株式会社Ihi | 二酸化炭素の回収方法及び回収装置 |
US9485226B2 (en) | 2014-04-28 | 2016-11-01 | Nxp B.V. | Method for including an implicit integrity or authenticity check into a white-box implementation |
-
2014
- 2014-06-24 US US14/313,402 patent/US10412054B2/en active Active
-
2015
- 2015-06-23 CN CN201510349391.2A patent/CN105281893B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060140401A1 (en) * | 2000-12-08 | 2006-06-29 | Johnson Harold J | System and method for protecting computer software from a white box attack |
CN101401348A (zh) * | 2006-03-10 | 2009-04-01 | 皇家飞利浦电子股份有限公司 | 用于使密码函数模糊的方法和系统 |
CN101491000A (zh) * | 2006-07-12 | 2009-07-22 | 皇家飞利浦电子股份有限公司 | 用于混淆密码函数的方法和系统 |
US20140101458A1 (en) * | 2010-11-05 | 2014-04-10 | Apple Inc. | Code tampering protection for insecure environments |
Also Published As
Publication number | Publication date |
---|---|
US10412054B2 (en) | 2019-09-10 |
US20150372989A1 (en) | 2015-12-24 |
CN105281893B (zh) | 2019-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105024803A (zh) | 白箱实现中的行为指纹 | |
CN105184115A (zh) | 用于将隐式完整性或可信性检查包括到白箱实现中的方法 | |
CN105187364A (zh) | 保护白盒实现方案不受攻击 | |
CN102484581A (zh) | 使用中间数据更改的具有可配置密钥的白盒密码系统 | |
US9602273B2 (en) | Implementing key scheduling for white-box DES implementation | |
CN105049400A (zh) | 在白盒实现方案中拆分s盒以防止攻击 | |
CN105721135B (zh) | 使用替换盒实施加密操作的方法 | |
JP7065888B6 (ja) | 暗号装置及び方法 | |
CN101578813A (zh) | 跟踪实现的拷贝 | |
CN105024992A (zh) | 在单个白箱实现中实现使用相关安全性设置 | |
CN105095695B (zh) | 经由白箱实现的不正确功能行为实现授权 | |
CN106888080A (zh) | 保护白盒feistel网络实施方案以防错误攻击 | |
CN107273724B (zh) | 为白盒实施方案的输入和输出加水印 | |
CN105022937B (zh) | 用于将白箱实现紧附到周围程序的接口兼容方法 | |
CN106888081A (zh) | 白盒实施方案内中间值的宽编码 | |
CN105721134B (zh) | 使用带有多个外部编码的单个白盒实现 | |
CN105007256A (zh) | 用于在非信任平台上执行安全功能的安全模块 | |
CN105978680B (zh) | 一种加密钥的加密运算方法 | |
EP2960891B1 (en) | Method for introducing dependence of white-box implementationon a set of strings | |
CN105281893A (zh) | 用于引入白箱实现对串集合的依赖性的方法 | |
CN108718232A (zh) | 基于aes和混沌的图像加密方法 | |
CN105024808A (zh) | 无需改变密钥的安全性补丁 | |
AB et al. | A New Security Mechanism for Secured Communications Using Steganography and CBA | |
EP2940677A1 (en) | Method for including an implicit integrity or authenticity check into a white-box implementation | |
EP2940919B1 (en) | Realizing authorization via incorrect functional behavior of a white-box implementation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |