CN105024803A - 白箱实现中的行为指纹 - Google Patents
白箱实现中的行为指纹 Download PDFInfo
- Publication number
- CN105024803A CN105024803A CN201510206756.6A CN201510206756A CN105024803A CN 105024803 A CN105024803 A CN 105024803A CN 201510206756 A CN201510206756 A CN 201510206756A CN 105024803 A CN105024803 A CN 105024803A
- Authority
- CN
- China
- Prior art keywords
- message
- output
- bout
- fingerprint identification
- state
- 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
- 230000003542 behavioural effect Effects 0.000 title 1
- 238000000034 method Methods 0.000 claims abstract description 60
- 238000013507 mapping Methods 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 description 41
- 238000004422 calculation algorithm Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 238000013478 data encryption standard Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 239000000654 additive Substances 0.000 description 2
- 230000000996 additive effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 241001441724 Tetraodontidae Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- 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
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
- H04L9/3231—Biological data, e.g. fingerprint, voice or retina
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- 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/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Biomedical Technology (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Biodiversity & Conservation Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Multimedia (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
- Computing Systems (AREA)
Abstract
一种在密码***中确定密码实现的指纹标识的方法,包括:由所述密码***接收作为指纹标识消息的输入消息;由所述密码***执行将所述指纹标识消息映射到包括指纹标识的输出消息的带密钥密码操作;以及输出所述输出消息。
Description
技术领域
这里公开的多种示例性实施例一般地涉及实现白箱实现中的行为指纹。
背景技术
互联网给用户带来了对数字内容的便捷且普及的访问。由于互联网是强大的分发通道,所以许多用户设备都力求能够直接访问互联网。用户设备可以包括个人计算机、膝上型计算机、机顶盒、互联网启用的媒体播放器、移动电话、智能手机、平板电脑、移动热点或能够访问互联网的任意其它设备。将互联网用作版权内容的分发介质在确保内容提供商的利益方面带来了极大的挑战。用户设备越发普遍地使用加载了适当软件的处理器来呈现(回放)数字内容(比如音频和/或视频)。对回放软件的控制是加强内容拥有者的利益的一种手段,其中包括可以使用所述内容的条款和条件。此前,许多用户设备是封闭***。如今,越来越多的平台变为部分开放的。一些用户可以被假定为能够完全地控制和访问提供内容访问的硬件和软件,并拥有大量时间和资源来攻击和绕过任意内容保护机制。结果,内容提供商必须在社区的恶意网络上将内容递送给合法用户,其中所述社区中并不是所有用户或用户设备都是可信的。
可以访问安全软件应用来执行多种功能,比如用来保护和认证数字内容的密码功能。为了对抗攻击,必须对这些算法进行模糊处理(隐藏),以防止对算法进行反向工程和修改或禁止获得用户特定安全信息。从而,可以通过如实现安全软件的处理器的指令集所限定的多种功能来执行安全软件应用的功能。例如,一种用来掩盖这些功能的手段是使用查找表。
对数字版权管理(DRM)和其它安全软件的广泛使用引起了对于寻求使得对软件的篡改更加复杂的安全、防篡改的软件的需求。存在多种用来提高软件应用的防篡改的技术。这些技术大多基于以下方面:通过在软件应用的控制和数据路径中都加入随机性和复杂性掩饰来隐藏所述应用的嵌入知识。其背后的构思在于,只通过代码检查来提取信息将更加困难。因此,找到处理安全应用的访问和许可控制的代码并进而将其改变是更加困难的。
本文所使用的白箱密码包括在攻击者已经对运行白箱密码软件的***完全控制的环境中执行密码功能的安全软件应用。从而,攻击者可以修改输入和输出,追踪软件的操作,在任意时刻对软件所使用的存储器进行采样和监测,甚至修改软件。从而,需要通过防止公开安全功能中使用的秘密信息的方式来执行安全功能。可以通过多种方式来实现白箱密码功能。这些方法包括:掩盖软件代码;使用掩盖秘密信息的使用的复杂数学函数;使用查找表;使用有限状态机;或执行密码功能但隐藏这些安全功能所需的秘密信息的任何其它方法。白箱实现还可以包含包括反调试和防篡改属性的组件。
密码算法的软件实现比硬件实现更受欢迎有多种理由。比如,可以是因为在密钥泄漏的情况下软件方案是可更新的、因为其成本低、或因为应用开发者不对实现白箱***的硬件有任何影响。
发明内容
下文给出了对多种示例性实施例的简要概述。以下概述中可以进行一些简化和省略,其是为了强调和介绍多种示例性实施例的一些方面,而不是为了限制本发明的范围。随后的内容中将对足以使得本领域技术人员能够实施和使用发明构思的示例性实施例进行详细描述。
多种示例性实施例涉及一种在密码***中确定密码实现的指纹标识的方法,包括:由所述密码***接收作为指纹标识消息的输入消息;由所述密码***执行将所述指纹标识消息映射到包括指纹标识的输出消息的带密钥密码操作;以及输出所述输出消息。
描述了多种实施例,其中,执行将所述指纹标识消息映射到输出消息的带密钥密码操作还包括:确定所述输入消息是指纹标识消息;以及当所述输入消息是指纹标识消息时,修改所述密码操作的输出。
描述了多种实施例,其中,修改所述密码操作的输出包括:使用用户特定值来修改所述输出。
描述了多种实施例,其中,将所述指纹标识消息映射到输出消息包括多个回合,其中所述回合包括非线性映射函数和带密钥密码操作的状态;所述回合之一包括:通过将所述回合中的状态的一部分与当所述输入消息是所述指纹标识消息时针对所述状态的一部分产生的值进行比较,来确定所述输入消息是所述指纹标识消息;以及所述一个回合包括:当所述输入消息是指纹标识消息时,修改所述密码操作的所述输出。
描述了多种实施例,其中,修改所述密码操作的所述输出包括:将用户特定值与所述状态的所述部分进行组合。
描述了多种实施例,其中,将所述回合中的状态的一部分与当所述输入消息是所述指纹标识消息时针对所述状态的一部分产生的值进行比较包括:将所述回合中的非线性函数的输出与当所述输入消息是所述指纹标识消息时从所述非线性函数产生的值进行比较。
描述了多种实施例,其中,所述密码***包括有限状态机的网络。
描述了多种实施例,其中,所述密码***包括查找表的网络。
描述了多种实施例,其中,所述密码操作是高级加密***AES或数据加密标准DES之一。
描述了多种实施例,其中,所述密码***包括查找表的网络,所述密码操作是高级加密***AES操作,所述AES操作包括所述AES操作的状态和多个回合,所述AES回合之一包括:通过将所述回合中的状态的一部分与当所述输入消息是所述指纹标识消息时针对所述状态的一部分产生的值进行比较,来确定所述输入消息是指纹标识消息;以及所述一个AES回合包括:当所述输入消息是指纹标识消息时,修改S箱的输出,以将用户特定值与所述S箱的所述输出进行组合。
描述了多种实施例,其中,将所述回合中的状态的一部分与当所述输入消息是所述指纹标识消息时针对所述状态的一部分产生的值进行比较包括:将所述回合中的S箱的输出与当所述输入消息是所述指纹标识消息时从所述S箱产生的值进行比较。
此外,多种示例性实施例涉及一种在密码***中产生将输入消息映射到输出消息的密码操作的密码实现的方法,所述密码***确定所述密码实现的指纹标识,所述方法包括:产生带密钥密码操作的密码实现;接收指定至少一个指纹消息和用户特定值的信息;基于所接收的指定指纹消息和用户特定值的信息来修改所述密码实现,使得:当接收的输入消息是所述指纹消息之一时,所述密码实现基于所述用户特定值输出输出消息;以及当接收的输入消息不是所述指纹消息之一时,所述密码实现基于所述密码操作输出与所接收的输入消息相关联的输出消息。
描述了多种实施例,其中,将所述指纹标识消息映射到输出消息包括多个回合,其中所述回合包括非线性映射函数和带密钥密码操作的状态,以及修改所述密码实现包括:修改所述回合之一,以通过将所述一个回合中的状态的一部分与当所述输入消息是所述指纹标识消息之一时针对所述状态的一部分产生的值进行比较,来确定所述输入消息是所述指纹标识消息之一,以及修改所述一个回合,以在所述输入消息是所述指纹标识消息之一时修改所述密码操作的所述输出。
描述了多种实施例,其中,修改所述密码操作的所述输出包括:将用户特定值与所述状态的所述部分进行组合。
描述了多种实施例,其中,接收指定至少一个指纹消息和用户特定值的信息包括:接收多个指纹消息和多个用户特定值,其中,每一个指纹消息与所述多个用户特定值之一相关联。
描述了多种实施例,其中,所述密码***包括有限状态机的网络。
描述了多种实施例,其中,所述密码***包括查找表的网络。
描述了多种实施例,其中,所述密码操作是高级加密***AES或数据加密标准DES之一。
描述了多种实施例,其中,所述密码***包括查找表的网络,所述密码操作是高级加密***AES操作,所述AES操作包括所述AES操作的状态和多个回合,以及修改所述密码实现包括:修改所述AES回合之一,以通过将所述一个回合中的状态的一部分与当所述输入消息是所述指纹标识消息之一时针对所述状态的一部分产生的值进行比较,来确定所述输入消息是所述指纹标识消息之一,以及修改所述一个AES回合,以在所述输入消息是所述指纹标识消息之一时修改所述S箱的所述输出,以将用户特定值与所述S箱的所述输出进行组合。
此外,多种示例性实施例涉及一种编码有指令的非瞬时机器可读存储介质,所述指令由加密实现在加密***中执行以用于确定指纹标识,所述非瞬时机器可读存储介质包括:用于由所述密码***接收作为指纹标识消息的输入消息的指令;用于由所述密码***执行将所述指纹标识消息映射到包括指纹标识的输出消息的带密钥密码操作的指令;以及用于输出所述输出消息的指令。
描述了多种实施例,其中,执行将所述指纹标识消息映射到输出消息的带密钥密码操作还包括:用于确定所述输入消息是指纹标识消息的指令;以及用于当所述输入消息是指纹标识消息时,修改所述密码操作的输出的指令。
描述了多种实施例,其中,修改所述密码操作的输出包括:使用用户特定值来修改所述输出。
描述了多种实施例,其中,将所述指纹标识消息映射到输出消息包括多个回合,其中所述回合包括非线性映射函数和带密钥密码操作的状态;所述回合之一包括:通过将所述回合中的状态的一部分与当所述输入消息是所述指纹标识消息时针对所述状态的一部分产生的值进行比较,来确定所述输入消息是所述指纹标识消息;以及所述一个回合包括:当所述输入消息是指纹标识消息时,修改所述密码操作的所述输出。
描述了多种实施例,其中,修改所述密码操作的所述输出包括:将用户特定值与所述状态的所述部分进行组合。
描述了多种实施例,其中,将所述回合中的状态的一部分与当所述输入消息是所述指纹标识消息时针对所述状态的一部分产生的值进行比较包括:将所述回合中的非线性函数的输出与当所述输入消息是所述指纹标识消息时从所述非线性函数产生的值进行比较。
描述了多种实施例,其中,所述密码***包括有限状态机的网络。
描述了多种实施例,其中,所述密码***包括查找表的网络。
描述了多种实施例,其中,所述密码操作是高级加密***AES或数据加密标准DES之一。
描述了多种实施例,其中,所述密码***包括查找表的网络,所述密码操作是高级加密***AES操作,所述AES操作包括所述AES操作的状态和多个回合,所述AES回合之一包括:通过将所述回合中的状态的一部分与当所述输入消息是所述指纹标识消息时针对所述状态的一部分产生的值进行比较,来确定所述输入消息是指纹标识消息;以及所述一个AES回合包括:当所述输入消息是指纹标识消息时,修改S箱的输出,以将用户特定值与所述S箱的所述输出进行组合。
描述了多种实施例,其中,用于将所述回合中的状态的一部分与当所述输入消息是所述指纹标识消息时针对所述状态的一部分产生的值进行比较的指令包括:用于将所述回合中的S箱的输出与当所述输入消息是所述指纹标识消息时从所述S箱产生的值进行比较的指令。
附图说明
为了更好地理解各种示例性实施例,对附图进行参考,其中:
图1示出了AES的一个回合的主要步骤;
图2示出了在对回合的输入进行固定编码的情况下的白箱AES实现;
图3示出了借助查找表的网络对一个输出半字节的计算;
图4示出了通过对输入和输出进行编码而模糊处理的图3的网络表的一部分;
图5示出了实现指纹标识的白箱实现;
图6示出了对比特进行组合以确定输入消息是否是指纹标识消息的网络;
图7示出了如图5中所示的掩盖(obscured)的白箱实现;
图8示出了如图6中所示的掩盖的白箱实现;以及
图9是示出了实现确定白箱实现的指纹标识的白箱实现的方法的流程图。
为了便于理解,使用相同的附图标记来指代具有基本相同或相似的结构和/或基本相同或相似的功能的元素。
具体实施方式
说明书和附图示出了本发明的原理。从而,将理解的是,本领域技术人员能够设想出实现本发明的原理并包括在其范围内的多种布置(尽管此处并未明确描述或示出)。此外,这里所述的所有示例明显主要用于教导目的,以辅助读者理解本发明的原理以及发明人为推进现有技术而贡献的构思,其被认为不限于具体描述的示例和条件。此外,本文中使用的术语“或”指代非排他性的或(即和/或),除非另作指示(例如“或其它”或“或在备选方式中”)。此外,本文所述的多种实施例不必是互斥的,一些实施例可以与一个或多个其它实施例进行组合以形成新的实施例。
以下讨论涉及白箱密码,其原因在于它是最有挑战性的攻击模型。此外,在受到白箱攻击的环境中部署和使用了许多密码实现。还存在黑箱攻击模型和灰箱攻击模型。在黑箱攻击模型中,假定攻击者只能访问所述实现的输入和输出。在灰箱攻击模型中,假定除了访问所述实现的输入和输出之外,攻击者还能够访问关于对实现的执行的侧通道信息。这种侧通道信息可以包括功率、定时、电子发射等。因此,下述实施例的益处可用来防止这些攻击级别以及其它可被定义的攻击级别中的任意一种。因此,在描述了白箱实现的情况下,它们还意在包括使用以下实施例中所述的各种方法的黑箱实现以及灰箱实现。
关于密码算法的软件实现的一个典型问题是代码提举(codelifting)。从而,白箱实现仍可作为整体分发(尽管其可有效地隐藏密码密钥)。该白箱实现与密钥本身一样有价值。例如,如果白箱实现实施了解密算法,则由于不具有密钥,接收方不能对消息进行加密,但白箱实现足以对消息进行解密。这意味着对手非法地将白箱实现作为整体分发,而不是分发深藏的密码密钥,其通常具有很高的价值,而不应以不受控的方式进行分发。
然而,在积极的方面,软件方案相对来讲更容易取代。也就是说,一旦由对白箱实现的非法分发所引起的(金融)损害过大,就可以选择使用新的白箱实现来替代该白箱实现。备选地,可以定期地改变所述密钥(即白箱实现),其中不将新的白箱实现提供给已经表现出非法行为的用户,以阻止非法行为并防止这些人员/设备尝试再次拷贝白箱实现。通常,密钥仅隐式地存在。在其他实施例中,密钥可以包括动态密钥,该动态密钥例如获取隐式密钥信息并将其与某种动态信息进行组合,以改变密码功能中使用的密钥。
为了进行该操作,需要确定泄露的白箱实现的原始所有者的方式。美国专利No.8,306,216描述了一种用于将指纹放入每一个白箱实现的方法。更具体地,其描述了一种用于构造基于表的白箱实现的方法,使得如果一个白箱实现泄露,则该方法可以通过检查实现中的查找表内容来追溯源。该方法的问题在于,在查找表集合中寻找指纹可能非常困难且耗时,这是因为对手可能已经向其应用了模糊处理技术。因此,仍然需要将指纹嵌入白箱实现中,使得可以通过白箱实现的功能行为来确定原始所有者。下述实施例示出了这种方法。
因此,为了标识特定的白箱实现的副本,无需对代码进行分析,而是取而代之地观测白箱实现的功能。可以通过不会显著地影响白箱实现的正常功能的方式来实现这一点。因此,对手不能通过对白箱实现进行模糊处理来隐藏所复制的白箱实现的指纹。
通常,密码算法的消息空间很大。例如,对于AES,128比特的数据块导致大小为2128的消息空间。下述实施例通过(例如,基于表的)白箱实现执行密码算法A,使得针对少量(k个)消息M,算法可以给出不正确的结果。这些不正确的结果使得针对每两个用户,认为其白箱实现至少针对k个消息之一具有不同的结果。针对k个消息M的结果用作实现的指纹,即,用于将其追溯到原始所有者。消息M也被称作指纹消息。
如上所述,值k应当很小。更具体地,这意味着k个指纹消息在正常执行期间出现的概率可忽略。例如,如果k=1并且如果M是随机选择的,则这成立。
这可以如下实现。白箱实现(例如,基于表的白箱实现)是密码算法A的模糊实现。在这种白箱实现中,可以以模糊方式实现断言(predicate)P(m)∈{0,1}的计算,其中,m是任何输入消息,并且其中,如果m不是可以针对其获得不正确的结果的k个消息之一,则P(m)=0,如果m是这k个消息之一,则P(m)=1。在P(m)=1的情况下,A的实现被改变,使得其导致不正确的答案。在P(m)=0的情况下,A的实现提供正确的答案。因为对整个白箱实现进行了大量模糊处理,因此难以对指纹部分进行检测和移除或修改。
现在将描述AES的示例白箱实现。白箱密码是在软件中实现密码算法以使得攻击者很难找到密钥的规则。这里,假定最强的可想到的(对于软件,最实际的)攻击模型,其中假定对手具有对白箱实现的完全控制和完全访问。
以下文献中提出了对于高级加密标准(AES)和数据加密标准(DES)的白箱实现的基于表的方式:“White-Box Cryptography and anAES Implementation”,Stanley Chow,Philip Eisen,Harold Johnson,andPaul C.Van Oorschot,Selected Areas in Cryptography:9th AnnualInternational Workshop,SAC 2002,St.John’s,Newfoundland,Canada,Aug.15-16,2002,下文称为“Chow 1”;以及“A White-Box DESImplementation for DRM Applications”,Stanley Chow,Phil Eisen,Harold Johnson,and Paul C.van Oorschot,Digital Rights Management:ACM CCS-9Workshop,DRM 2002,Washington,D.C.,USA,Nov.18,2002,下文称为“Chow 2”。Chow 1和Chow 2公开了通过以下操作的组合来使用基于表的方式隐藏密码密钥的方法:使用随机双射对其表进行编码、以及通过将其进一步推入包含应用来扩展密码边界。
如上所述,针对许多密码操作,期望具有白箱实现。本发明可适用于例如对称或非对称密码操作。此外,本发明可以适用于块密码、流密码、消息认证方案、签名方案等。注意的是,本发明还可适用于散列函数。如果散列函数用作拥有秘密信息(例如秘密密钥、秘密数据等)的建造块,则后者尤其有用。例如,本发明可适用于带密钥(keyed)散列消息认证代码(HMAC或KHMAC)中使用的散列函数。熟知的块密码包括:高级加密标准(AES)、安全快速加密例程(SAFER,以及变形SAFER+和SAFER++)、Blowfish、数据加密标准(DES)等。熟知的流密码是RC4。此外,通过使用适当的操作模式(例如密码反馈(CFB)、计数器模式(CTR)等),可以将任意块密码用作流密码。
可以使用多个基本块实施白箱实现。采用将一些块构建在一个或多个之前的块的输出上的方式,将多个基本块互连。还可将基本块实现在运行于通用计算机芯片(例如微处理器)上的软件中。例如,基本块可以使用多个计算机指令,其中包括算术指令,这些指令一起实现基本块的功能。基本块的一种广泛使用的实现是查找表。例如,Chow1和Chow 2采用这种方式来实现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)中的模乘法来处理每一列。
步骤SubBytes 120、ShiftRows 130和MixColumns 140独立于所使用的特定密钥。在步骤AddRoundKey 110中应用密钥。除了步骤ShiftRows 130,可在不知道其他列的情况下,对4x4状态矩阵的每一列执行处理步骤。因此,由于每一列由四个8比特值构成,所以它们可被认为是32比特操作。虚线150指示在已经执行了所需数量的回合之前重复所述处理。
这些步骤中的每一个或步骤的组合可由查找表或由查找表网络表示。如果AddRoundKey 110步骤是通过与回合密钥进行异或处理实现的,则密钥在白箱攻击的情况下对于攻击者来讲是可见的。还可将AddRoundKey 110步骤嵌入到查找表中,这使得不那么明显找到密钥。事实上,能够使用查找表网络来替代AES的完整回合。例如,可以使用表查找来实现SubBytes 120、ShiftRows 130和MixColumns 140步骤。下文中充分详细地讨论了AES的可能白箱实现,以描述以下发明的实施例,但是在Chow 1中可以找到对这一实现的进一步详细描述。此外,可以使用查找表实现的其它变形,这些变形在本发明的范围之内。
基于表的白箱实现和有限状态机实现都具有以下属性:实现中的所有中间值都被编码(与标准实现相比)。使用有限状态机的白箱实现的示例公开于标题为“Data Processing Method”的美国专利公开2007/0014394中,以及由Wulf Harder和Atis Straujums在2008年3月11日在重新信任第六次季度会议上所作的题为“Synchrosoft MCFACTTMSecure Data Processing Technology”的报告,它们均通过引用并入本文以用于所有目的,如同在本文中完全阐述一样。图2示出了对回合的输入(即对S箱的输入)进行固定编码的白箱AES实现。如图所示,16个输入字节中的每一个都被fi编码,输出字节中的每一个都被gi编码。
为了描述本发明的实施例,将描述基于表的白箱AES实现的基本描述。对用于实现基于表的白箱AES的方法的更具体地描述,参见Chow 1。Chow 1示出了使用特定尺寸的表分解某些函数的特定实现。应该理解的是,可以对表进行各种其它划分,从而导致查找表的不同函数以及不同尺寸。此外,虽然本发明的下述实施例使用AES的基于表的白箱实现,但是可根据所述实施例来实现其它密码和密码功能。此外,可使用其它类型的白箱实现,而不是基于表的实现,例如有限状态实现。
将基于表的白箱AES的描述分为两个步骤。在第一个步骤中,AES的回合被描述为查找表网络。在第二个步骤中,通过对表的输入和输出进行编码来对表进行模糊处理。
步骤1:将AES实现为查找表网络
AES对16字节的数据块进行操作。它们通常被描述为4x4的字节矩阵,称为状态,包括字节x1,1、x1,2、x1,3...x4,4。上文中参照图1描述的AES的回合包括以下操作:AddRoundKey 110、SubBytes 120、ShiftRows 130和MixColumns 140。前两个操作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的输出馈入XOR 330,查找表324和326的输出馈入XOR 332。XOR 330和332的输出馈入XOR 334。XOR 334的输出是输出状态340的输出z2,3的第一个半字节。可采用相同的方式使用另外的Q箱以及相似的XOR网络计算输出状态340的输出z2,3的第二个半字节。此外,可实现表的另外集合,以通过接收来自输入状态的字节列并将其转换成输出状态的相应列的输出来完全地将输入状态310转换成输出状态340。
步骤2:对表和中间值进行模糊处理
在图3中所示的实现中,可以容易地从Q箱提取密钥。仅将逆MixColumns乘法和逆S箱应用到所述输出会显露出清晰的AddRoundKey操作。为了防止这一点,使用任意双射函数对所有查找表的输入和输出进行编码。在Chow 1中描述了这一点。这意味着将查找表与对输出进行编码的编码函数以及对输入进行解码的解码函数合并。编码被选为使得对一个表的输出编码与接下来的表中假定的输入编码相匹配。在图4中,针对第一回合,描述了图3中的实现的一部分。在该示例中,为了与AES一致,所述回合的输入未被编码,但所述回合的输出被编码。在下一回合中处理输出编码。也就是说,与第一回合不同,第二回合(以及之后的回合)假定输入被编码。备选地,第一回合可接收编码输入。然后,该输入编码必须应用于包含白箱实现的软件程序中的其它地方。类似地,根据输出是否将与AES一致,最后一个回合可以包括或不包括输出编码。注意到,在所获得的白箱实现中,查找表和中间值两者都被模糊处理。
现在,描述了实现白箱实现的指纹标识的实施例,其中,k=1。也即是说,在总计2128个消息M中存在恰好一个消息M,使得针对这一个消息M,不同用户的白箱实现给出不同的行为。消息M可以称作指纹标识消息。此外,针对该指纹标识消息M的白箱实现的输出结果标识具体的白箱实现并且可以用于叛逆者(traitor)追踪。该输出结果可以称作指纹标识。注意,如果M是随机选择的,则偶然碰到M的概率是2-128,这明显是可忽略的(该概率与通过随机猜测发现AES密钥的概率一样大)。
用于描述指纹标识的起始点是如图3中所示的白箱实现的非模糊实现。为了便于描述该实施例,将假设所选择的消息M导致S箱的输出针对第一回合的所有输入字节都是0。如下所述,可对其这可以进行改变为,以适应任意随机选择的消息M。考虑直接接续图3中的Q表320、322、324和326的两个XOR表330、332。这些8到4比特XOR表330、332可以扩展到8到5比特表530、532,其中,当且仅当两个输入参数都为0时,添加的比特才等于1,这在消息M输入到如图5中所示的Q表时发生。图5示出了实现指纹标识的白箱实现。这两个比特被输入到表540,表540计算输入比特的AND。因此,当且仅当两个输入参数都为1时,该表的结果b2才等于1。换言之,当且仅当Q表的所有4个输出半字节都等于0时,b2=1。
针对输出状态的每一列,该扩展可以应用于单个输出字节zi,j的两个半字节的计算。这导致8个比特b1,...,b8。所有8个比特b1,...,b8可以输入到AND网络640,如图6中所示。图6示出了对比特进行组合以确定输入消息是否是指纹标识消息的网络。可以容易地看出,当且仅当S箱的输出针对第一回合的所有16个输入字节均为0时,计算出的比特bM才等于1。然后,将比特bM与在图5的表格网络中计算出的输出半字节z2,3 (1)一起输入到表格650。如果bM=1,则表格将用户特定值γu添加到z2,3 (1)。否则,什么也不做,也即是说,它仅传递z2,3 (1)的值。因此,如果b=0,则AES的实现不改变,因此其正确地工作。另一方面,如果b=1,则将γu添加到z2,3 (1),这导致不正确的计算。
此外,γu的不同值导致不同的结果。在该情况下,z2,3 (1)和γu均是4比特值。因此,这导致创建24=16(即,针对γu的选择数量)个不同白箱实现的方式,由于第一回合中的16个S箱中的每一个的结果为0这一属性,所以当在第一回合中输入唯一消息M时,不同的白箱实现均可以通过结果来唯一地标识。注意,针对γu=0的用户u,白箱实现针对b=1也给出了正确的结果。然而,由于其是16个用户中具有该属性的唯一一个用户,因此该由此产生的正确行为仍然用作指纹。
此外,实施例可以容易地适应可能随机选择的任何其他消息M。在该情况下,表格530、532将输入半字节与当消息M输入到白箱实现中时Q箱产生的值v1和v2进行比较。值v1和v2针对不同Q箱中的每一个可能不同,并且取决于被选择作为用于确定特定白箱实现的指纹的指纹标识消息的消息M。如上所述,可以在白箱实现中使用上面的动态密钥。实现动态密钥的一种方式是改变将密钥与S箱进行组合的Q箱。因此,然后值v1和v2将根据特定动态密钥而改变。因此,v1和v2的值可以是基于所使用的特定动态密钥编有索引的数据阵列,以确定何时接收到消息M。适应动态密钥的另一种方式是具有与每一个动态密钥相关联的特定消息M,其中,针对特定消息的输出导致标识特定白箱实现的指纹标识。其他方法可以用于实现动态密钥,并且这里所述的指纹能力可以应用于这些其他方法。
此外,虽然示出了评估Q箱的输出以确定何时输入消息M的示例,但是也可以对Q箱的输入或回合中的另一点进行检查。也即是说,可以针对将与输入消息M相对应的特定值在回合的任意位置检查状态或状态的一部分的值。此外,注意,任何两个半字节(或者任意数量的半字节)可以用于进行该比较以确定存在消息M。
此外,通过将图5的方式应用于多个输出半字节zi,j (n),可以实现多于16个带指纹的白箱实现。例如,如果γu是32比特的值,则可以实现232个不同的指纹。在该情况下,可以将值γu应用于不同输出半字节zi,j (n)中的8个半字节,从而导致232个不同的可能指纹标识。此外,如上所述,多于一个消息M可以用于生成指纹信息。在该情形下,产生包含指纹标识的特定输出消息的特定输入消息M可以关联至可以与特定用户或用户组相关联的白箱实现的特定实例。
在创建白箱实现的最后一个步骤中,可以如图7和图8所示对各种表进行模糊处理。在图7和图8中,具有类似附图标记的各个框对应于图5和图6中的框。此外,注意,在图7中,框834合并了图5中的两个框534和540。可以以与上面对基于表的AES白箱实现的最初描述中所述的方式相同的方式来进行该模糊处理。
根据本发明的实施例的方法可作为计算机实现方法实现于计算机上。针对根据本发明的方法的可执行代码可存储在计算机程序介质上。计算机程序介质的示例包括存储器设备、光存储设备、集成电路、服务器、在线软件等。从而,白箱***可包括实现白箱计算机程序的计算机。这种***还可包括其他硬件元件,其中包括存储设备、用于与外部***以及在白箱***的元件之间进行数据传输的网络接口。
在本发明的一种实施例中,计算机程序可以包括适于当计算机程序运行于计算机上时执行根据本发明的方法的所有步骤的计算机程序代码。优选地,计算机程序嵌入在非瞬时计算机可读介质上。
除了在非瞬时计算机可读介质上实现计算机程序之外,这种计算机程序还可被发送到用户或用户设备,以用于安装和使用。这可在任意通信网络(例如互联网)上实现。
此外,实现这里描述的实施例的用户设备可包括智能卡、支付卡、过境卡、访问卡和设备、移动电话、平板电脑、个人数字助理、便携式和台式计算机、机顶盒、数字视频记录、媒体流设备等。对上述实施例的使用可包括支付软件、安全访问、停车访问、过境访问和支付、银行业务、软件和数字媒体传输、安全通信、内容分发等。
此外,由于白箱密码通常是非常复杂的和/或模糊的,所以对于人们来说,写入会比较乏味。因此,具有一种用来以自动化的方式创建根据本发明的实施例的密码***的方法是有利的。
创建根据本发明的密码***的方法可作为计算机实现方法实现于计算机上或实现于专用硬件中或在两者的组合中。针对根据本发明的方法的可执行代码可存储在计算机程序介质上。在这种方法中,计算机程序可包括适于在计算机程序运行在计算机上时执行所述方法的所有步骤的计算机程序代码。计算机程序具体实现在非瞬时计算机可读介质上。
图9是示出了实现确定白箱实现的指纹标识的白箱实现的方法的流程图。首先,方法开始(905)。然后,产生密码操作的白箱实现(910)。这可如上所述使用多种方法和实现来产生。接下来,可以接收标识产生指纹的指纹标识消息M和特定指纹值γu的信息(915)。然后,可基于所接收的标识指纹标识消息M和用户特定值指纹标识的信息修改白箱实现(920),从而:当接收到输入的特定指纹标识消息M时,白箱实现产生标识与白箱实现的特定实例相关联的用户的指纹标识;并且当接收到任何其他消息时,白箱实现输出与输入消息相关联的正确输出消息。然后,所述方法可以结束(925)。应该注意到,可以接收多于一个指纹标识消息,这允许多种方式来得到指纹标识。此外,也可以提供多于一个用户特定值γu。例如,用户可以具有多个标识,并且每一个标识可能是由于不同的指纹标识消息引起的。
用来实现本发明的实施例的处理器上运行的特定软件的任意组合构成特定的专用机器。
本文所使用的术语“非瞬时机器可读存储介质”将被理解为排除瞬时传播信号,但是包括所有形式的易失性和非易失性存储器。此外,本文所使用的术语“处理器”将被理解为涵盖多种设备,比如微处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)以及其它类似的处理设备。当软件实现在处理器上时,所述组合变成单个特定机器。
本领域技术人员应该理解的是,本文中的任意框图表示实现本发明的原理的说明性电路的概念视图。
虽然参考特定示例性方面详细描述了多种示例性实施例,但应该理解的是,本发明能够具有其它实施例,并且能够在多种显然的方面修改其细节。对本领域技术人员明显的是,在保持在本发明的精神和范围之内的同时,可以进行各种变形和修改。从而,前述公开、描述和附图只是说明性的,而决不用来限制本发明,本发明只由权利要求限定。
Claims (19)
1.一种在密码***中确定密码实现的指纹标识的方法,包括:
由所述密码***接收作为指纹标识消息的输入消息;
由所述密码***执行将所述指纹标识消息映射到包括指纹标识的输出消息的带密钥密码操作;以及
输出所述输出消息。
2.根据权利要求1所述的方法,其中,执行将所述指纹标识消息映射到输出消息的带密钥密码操作还包括:
确定所述输入消息是指纹标识消息;以及
当所述输入消息是指纹标识消息时,修改所述密码操作的输出。
3.根据权利要求2所述的方法,其中,修改所述密码操作的输出包括:使用用户特定值来修改所述输出。
4.根据权利要求1所述的方法,其中,
将所述指纹标识消息映射到输出消息包括多个回合,其中所述回合包括非线性映射函数和带密钥密码操作的状态,
所述回合中的一个回合包括:通过将所述回合中的状态的一部分与当所述输入消息是所述指纹标识消息时针对所述状态的一部分产生的值进行比较,来确定所述输入消息是所述指纹标识消息,以及
所述一个回合包括:当所述输入消息是指纹标识消息时,修改所述密码操作的所述输出。
5.根据权利要求4所述的方法,其中,修改所述密码操作的所述输出包括:将用户特定值与所述状态的所述部分进行组合。
6.根据权利要求4所述的方法,其中,将所述回合中的状态的一部分与当所述输入消息是所述指纹标识消息时针对所述状态的一部分产生的值进行比较包括:将所述回合中的非线性函数的输出与当所述输入消息是所述指纹标识消息时从所述非线性函数产生的值进行比较。
7.根据权利要求1所述的方法,其中,所述密码***包括有限状态机的网络。
8.根据权利要求1所述的方法,其中,所述密码***包括查找表的网络。
9.根据权利要求1所述的方法,其中,所述密码操作是高级加密***AES或数据加密标准DES之一。
10.根据权利要求1所述的方法,其中,
所述密码***包括查找表的网络,
所述密码操作是高级加密***AES操作,所述AES操作包括所述AES操作的状态和多个回合,
所述AES中的一个AES回合包括:通过将所述回合中的状态的一部分与当所述输入消息是所述指纹标识消息时针对所述状态的一部分产生的值进行比较,来确定所述输入消息是指纹标识消息;以及
所述一个AES回合包括:当所述输入消息是指纹标识消息时,修改S箱的输出,以将用户特定值与所述S箱的所述输出进行组合。
11.根据权利要求10所述的方法,其中,将所述回合中的状态的一部分与当所述输入消息是所述指纹标识消息时针对所述状态的一部分产生的值进行比较包括:将所述回合中的S箱的输出与当所述输入消息是所述指纹标识消息时从所述S箱产生的值进行比较。
12.一种在密码***中产生将输入消息映射到输出消息的密码操作的密码实现的方法,所述密码***确定所述密码实现的指纹标识,所述方法包括:
产生带密钥密码操作的密码实现;
接收指定至少一个指纹消息和用户特定值的信息;
基于所接收的指定指纹消息和用户特定值的信息来修改所述密码实现,使得:
当接收的输入消息是所述指纹消息之一时,所述密码实现基于所述用户特定值输出输出消息;以及
当接收的输入消息不是所述指纹消息之一时,所述密码实现基于所述密码操作输出与所接收的输入消息相关联的输出消息。
13.根据权利要求12所述的方法,其中,
将所述指纹标识消息映射到输出消息包括多个回合,其中所述回合包括非线性映射函数和带密钥密码操作的状态,以及
修改所述密码实现包括:
修改所述回合中的一个回合,以通过将所述一个回合中的状态的一部分与当所述输入消息是所述指纹标识消息之一时针对所述状态的一部分产生的值进行比较,来确定所述输入消息是所述指纹标识消息之一,以及
修改所述一个回合,以在所述输入消息是所述指纹标识消息之一时修改所述密码操作的所述输出。
14.根据权利要求13所述的方法,其中,修改所述密码操作的所述输出包括:将用户特定值与所述状态的所述部分进行组合。
15.根据权利要求12所述的方法,其中,接收指定至少一个指纹消息和用户特定值的信息包括:接收多个指纹消息和多个用户特定值,其中,每一个指纹消息与所述多个用户特定值之一相关联。
16.根据权利要求12所述的方法,其中,所述密码***包括有限状态机的网络。
17.根据权利要求12所述的方法,其中,所述密码***包括查找表的网络。
18.根据权利要求12所述的方法,其中,所述密码操作是高级加密***AES或数据加密标准DES之一。
19.根据权利要求12所述的方法,其中,
所述密码***包括查找表的网络,
所述密码操作是高级加密***AES操作,所述AES操作包括所述AES操作的状态和多个回合,以及
修改所述密码实现包括:
修改所述AES回合中的一个AES回合,以通过将所述一个回合中的状态的一部分与当所述输入消息是所述指纹标识消息之一时针对所述状态的一部分产生的值进行比较,来确定所述输入消息是所述指纹标识消息之一,以及
修改所述一个AES回合,以在所述输入消息是所述指纹标识消息之一时修改所述S箱的所述输出,以将用户特定值与所述S箱的所述输出进行组合。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/263,372 | 2014-04-28 | ||
US14/263,372 US9455833B2 (en) | 2014-04-28 | 2014-04-28 | Behavioral fingerprint in a white-box implementation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105024803A true CN105024803A (zh) | 2015-11-04 |
CN105024803B CN105024803B (zh) | 2019-06-28 |
Family
ID=54335792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510206756.6A Active CN105024803B (zh) | 2014-04-28 | 2015-04-28 | 白箱实现中的行为指纹 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9455833B2 (zh) |
CN (1) | CN105024803B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105991776A (zh) * | 2016-06-29 | 2016-10-05 | 北京三快在线科技有限公司 | 一种密码锁控制方法、装置以及*** |
CN106888081A (zh) * | 2015-12-16 | 2017-06-23 | 恩智浦有限公司 | 白盒实施方案内中间值的宽编码 |
CN107273724A (zh) * | 2016-03-30 | 2017-10-20 | 恩智浦有限公司 | 为白盒实施方案的输入和输出加水印 |
CN108370311A (zh) * | 2015-12-15 | 2018-08-03 | 皇家飞利浦有限公司 | 计算设备和方法 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9838198B2 (en) | 2014-03-19 | 2017-12-05 | Nxp B.V. | Splitting S-boxes in a white-box implementation to resist attacks |
US9584310B2 (en) | 2014-03-19 | 2017-02-28 | Nxp B.V. | Protecting a white-box implementation against attacks |
US9363244B2 (en) | 2014-04-28 | 2016-06-07 | Nxp B.V. | Realizing authorization via incorrect functional behavior of a white-box implementation |
US10020932B2 (en) * | 2015-11-13 | 2018-07-10 | Nxp B.V. | Split-and-merge approach to protect against DFA attacks |
NL2015911B1 (en) * | 2015-12-07 | 2017-06-28 | Koninklijke Philips Nv | Calculating device and method. |
US10243937B2 (en) * | 2016-07-08 | 2019-03-26 | Nxp B.V. | Equality check implemented with secret sharing |
US10547449B2 (en) | 2017-05-30 | 2020-01-28 | Nxp B.V. | Protection against relay attacks in a white-box implementation |
US11269993B2 (en) * | 2017-08-10 | 2022-03-08 | Sony Corporation | Encryption device, encryption method, decryption device, and decryption method |
US11632231B2 (en) * | 2020-03-05 | 2023-04-18 | Novatek Microelectronics Corp. | Substitute box, substitute method and apparatus thereof |
CN112953890B (zh) * | 2021-01-12 | 2023-11-21 | 国电南瑞南京控制***有限公司 | 一种客户侧用能控制***的信息加密方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100296649A1 (en) * | 2007-09-13 | 2010-11-25 | Irdeto B.V. | Cryptographic processing of content |
US20110116630A1 (en) * | 2008-06-25 | 2011-05-19 | France Telecom | Traceable Method and System for Broadcasting Digital Data |
CN102419805A (zh) * | 2011-11-22 | 2012-04-18 | 中兴通讯股份有限公司 | 一种终端设备及其用户信息加密方法 |
CN102484581A (zh) * | 2009-06-19 | 2012-05-30 | 耶德托公司 | 使用中间数据更改的具有可配置密钥的白盒密码*** |
US8418006B1 (en) * | 2010-12-07 | 2013-04-09 | Xilinx, Inc. | Protecting a design for an integrated circuit using a unique identifier |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10319435B4 (de) | 2003-04-25 | 2018-07-26 | Whitecryption Corporation | Verfahren zur Verarbeitung von Daten zum Schutz eines Softwareprogramms vor Rekonstruktion |
US8306216B2 (en) | 2007-01-11 | 2012-11-06 | Irdeto B.V. | Method and system for tracking or identifying copy of implementation of computational method, and computation system |
EP2828782A1 (en) * | 2012-03-23 | 2015-01-28 | Irdeto B.V. | Software fingerprinting |
-
2014
- 2014-04-28 US US14/263,372 patent/US9455833B2/en active Active
-
2015
- 2015-04-28 CN CN201510206756.6A patent/CN105024803B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100296649A1 (en) * | 2007-09-13 | 2010-11-25 | Irdeto B.V. | Cryptographic processing of content |
US20110116630A1 (en) * | 2008-06-25 | 2011-05-19 | France Telecom | Traceable Method and System for Broadcasting Digital Data |
CN102484581A (zh) * | 2009-06-19 | 2012-05-30 | 耶德托公司 | 使用中间数据更改的具有可配置密钥的白盒密码*** |
US8418006B1 (en) * | 2010-12-07 | 2013-04-09 | Xilinx, Inc. | Protecting a design for an integrated circuit using a unique identifier |
CN102419805A (zh) * | 2011-11-22 | 2012-04-18 | 中兴通讯股份有限公司 | 一种终端设备及其用户信息加密方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108370311A (zh) * | 2015-12-15 | 2018-08-03 | 皇家飞利浦有限公司 | 计算设备和方法 |
CN106888081A (zh) * | 2015-12-16 | 2017-06-23 | 恩智浦有限公司 | 白盒实施方案内中间值的宽编码 |
CN106888081B (zh) * | 2015-12-16 | 2021-08-13 | 恩智浦有限公司 | 白盒实施方案内中间值的宽编码 |
CN107273724A (zh) * | 2016-03-30 | 2017-10-20 | 恩智浦有限公司 | 为白盒实施方案的输入和输出加水印 |
CN107273724B (zh) * | 2016-03-30 | 2023-05-16 | 恩智浦有限公司 | 为白盒实施方案的输入和输出加水印 |
CN105991776A (zh) * | 2016-06-29 | 2016-10-05 | 北京三快在线科技有限公司 | 一种密码锁控制方法、装置以及*** |
Also Published As
Publication number | Publication date |
---|---|
CN105024803B (zh) | 2019-06-28 |
US20150312039A1 (en) | 2015-10-29 |
US9455833B2 (en) | 2016-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105024803A (zh) | 白箱实现中的行为指纹 | |
CN105721135B (zh) | 使用替换盒实施加密操作的方法 | |
JP7065888B6 (ja) | 暗号装置及び方法 | |
CN105049400A (zh) | 在白盒实现方案中拆分s盒以防止攻击 | |
CN105184115B (zh) | 用于将隐式完整性或可信性检查包括到白箱实现中的方法 | |
CN105187364A (zh) | 保护白盒实现方案不受攻击 | |
CN105095695B (zh) | 经由白箱实现的不正确功能行为实现授权 | |
CN105024992B (zh) | 在单个白箱实现中实现使用相关安全性设置 | |
EP3477889B1 (en) | Using white-box in a leakage-resilient primitive | |
CN107273724B (zh) | 为白盒实施方案的输入和输出加水印 | |
CN105022937B (zh) | 用于将白箱实现紧附到周围程序的接口兼容方法 | |
CN106888081A (zh) | 白盒实施方案内中间值的宽编码 | |
CN105007256A (zh) | 用于在非信任平台上执行安全功能的安全模块 | |
CN105978680A (zh) | 在白盒实现方案中实现填充 | |
EP2960891B1 (en) | Method for introducing dependence of white-box implementationon a set of strings | |
CN105721134A (zh) | 使用带有多个外部编码的单个白盒实现 | |
CN105281893B (zh) | 用于引入白箱实现对串集合的依赖性的方法 | |
EP2940917B1 (en) | Behavioral fingerprint in a white-box implementation | |
CN105024808A (zh) | 无需改变密钥的安全性补丁 | |
EP2940677A1 (en) | Method for including an implicit integrity or authenticity check into a white-box implementation | |
EP2940920B1 (en) | Security patch without changing the key |
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 |