CN105024992B - 在单个白箱实现中实现使用相关安全性设置 - Google Patents

在单个白箱实现中实现使用相关安全性设置 Download PDF

Info

Publication number
CN105024992B
CN105024992B CN201510208403.XA CN201510208403A CN105024992B CN 105024992 B CN105024992 B CN 105024992B CN 201510208403 A CN201510208403 A CN 201510208403A CN 105024992 B CN105024992 B CN 105024992B
Authority
CN
China
Prior art keywords
message
password
cryptographic
input
output
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.)
Active
Application number
CN201510208403.XA
Other languages
English (en)
Other versions
CN105024992A (zh
Inventor
W·P·A·J·米歇尔斯
简·胡格布鲁格
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.)
NXP BV
Original Assignee
NXP 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 NXP BV filed Critical NXP BV
Publication of CN105024992A publication Critical patent/CN105024992A/zh
Application granted granted Critical
Publication of CN105024992B publication Critical patent/CN105024992B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network 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
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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/04Masking or blinding
    • H04L2209/043Masking or blinding of tables, e.g. lookup, substitution or mapping
    • 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

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

在单个白箱实现中实现使用相关安全性设置
技术领域
这里公开的多种示例性实施例一般地涉及在单个白箱实现中实现使用相关安全性设置。
背景技术
互联网给用户带来了对数字内容的便捷且普及的访问。由于互联网是强大的分发通道,所以许多用户设备都力求能够直接访问互联网。用户设备可以包括个人计算机、膝上型计算机、机顶盒、互联网启用的媒体播放器、移动电话、智能手机、平板电脑、移动热点或能够访问互联网的任意其它设备。将互联网用作版权内容的分发介质在确保内容提供商的利益方面带来了极大的挑战。用户设备越发普遍地使用加载了适当软件的处理器来呈现(回放)数字内容(比如音频和/或视频)。对回放软件的控制是加强内容拥有者的利益的一种手段,其中包括可以使用所述内容的条款和条件。此前,许多用户设备是封闭系统。如今,越来越多的平台变为部分开放的。一些用户可以被假定为能够完全地控制和访问提供内容访问的硬件和软件,并拥有大量时间和资源来攻击和绕过任意内容保护机制。结果,内容提供商必须在社区的恶意网络上将内容递送给合法用户,其中所述社区中并不是所有用户或用户设备都是可信的。
可以访问安全软件应用来执行多种功能,比如用来保护和认证数字内容的密码功能。为了对抗攻击,必须对这些算法进行模糊处理(隐藏),以防止对算法进行反向工程和修改或禁止获得用户特定安全信息。从而,可以通过如实现安全软件的处理器的指令集所限定的多种功能来执行安全软件应用的功能。例如,一种用来掩盖这些功能的手段是使用查找表。
对数字版权管理(DRM)和其它安全软件的广泛使用引起了对于寻求使得对软件的篡改更加复杂的安全、防篡改的软件的需求。存在多种用来提高软件应用的防篡改的技术。这些技术大多基于以下方面:通过在软件应用的控制和数据路径中都加入随机性和复杂性掩饰来隐藏所述应用的嵌入知识。其背后的构思在于,只通过代码检查来提取信息将更加困难。因此,找到处理安全应用的访问和许可控制的代码并进而将其改变是更加困难的。
本文所使用的白箱密码包括在攻击者已经对运行白箱密码软件的系统完全控制的环境中执行密码功能的安全软件应用。从而,攻击者可以修改输入和输出,追踪软件的操作,在任意时刻对软件所使用的存储器进行采样和监测,甚至修改软件。从而,需要通过防止公开安全功能中使用的秘密信息的方式来执行安全功能。可以通过多种方式来实现白箱密码功能。这些方法包括:掩盖软件代码;使用掩盖秘密信息的使用的复杂数学函数;使用查找表;使用有限状态机;或执行密码功能但隐藏这些安全功能所需的秘密信息的任何其它方法。白箱实现还可以包含包括反调试和防篡改属性的组件。
密码算法的软件实现比硬件实现更受欢迎有多种理由。比如,可以是因为在密钥泄漏的情况下软件方案是可更新的、因为其成本低、或因为应用开发者不对实现白箱系统的硬件有任何影响。
发明内容
下文给出了对多种示例性实施例的简要概述。以下概述中可以进行一些简化和省略,其是为了强调和介绍多种示例性实施例的一些方面,而不是为了限制本发明的范围。随后的内容中将对足以使得本领域技术人员能够实施和使用发明构思的示例性实施例进行详细描述。
多种示例性实施例涉及一种编码有指令的非瞬时机器可读存储介质,所述指令由白箱系统执行以实施安全性设置,所述非瞬时机器可读存储介质包括:用于由所述白箱系统接收与多个安全性设置中的第一安全性设置相关联的第一输入消息的指令;用于由所述白箱系统执行将所述第一输入消息映射到第一输出消息的带密钥密码操作的指令,其中当所述白箱系统被授权用于所述第一安全性设置时,所述带密钥密码操作产生正确输出消息,其中所述多个安全性设置中的每一个安全性设置具有相关联的输入消息集,其中所述输入消息集不重叠。
描述了多种实施例,其中,输入消息集中的每个消息包括相关联的安全性设置的值。
描述了多种实施例,还包括:用于确定所述白箱系统的系统标识符的指令;以及用于将所述系统标识符与所述第一输出消息进行组合的指令,其中当所述白箱系统被授权执行所述带密钥密码功能时,产生所述正确输出消息。
描述了多种实施例,其中,将所述系统标识符与所述第一输出消息进行组合包括:将系统标识符与所述输出消息的一部分进行异或处理。
描述了多种实施例,其中,所述系统标识符包括所述白箱系统的硬件标识符。
描述了多种实施例,其中,所述系统标识符包括白箱系统上的软件的软件标识符。
描述了多种实施例,还包括:用于接收具有第二安全性设置的第二输入消息的指令;以及用于由所述白箱系统执行将所述第二输入消息映射到第二输出消息的带密钥密码操作的指令,其中当所述白箱系统被授权用于所述第二安全性设置时,所述带密钥密码操作产生正确输出消息。
描述了多种实施例,还包括:用于接收具有第二安全性设置的第二输入消息的指令;以及用于由所述白箱系统执行将所述第二输入消息映射到第二输出消息的带密钥密码操作的指令,其中当所述白箱系统未被授权用于所述第二安全性设置时,所述带密钥密码操作产生不正确输出消息。
描述了多种实施例,其中,所述白箱系统包括查找表的网络。
描述了多种实施例,还包括:用于确定所述白箱系统的系统标识符的指令;以及用于访问所述查找表的网络中的一个查找表中的丢失条目以及输出来自所述查找表的取决于所述系统标识符的值的指令,其中当所述白箱系统被授权执行所述带密钥密码功能时,产生所述正确输出消息。
描述了多种实施例,还包括:用于确定所述白箱系统的系统标识符的指令;以及用于在已经接收到正确的系统标识符时产生所述正确输出消息的指令。
描述了多种实施例,其中,所述白箱系统包括有限状态机的网络。
描述了多种实施例,其中,所述密码操作是高级加密系统(AES)或数据加密标准(DES)之一。
此外,多种示例性实施例涉及一种产生将输入消息映射到输出消息的密码操作的白箱实现的方法,其中所述白箱实现实施安全性设置,所述方法包括:产生所述密码操作的白箱实现;接收标识将由所述白箱实现应用的安全性设置的信息,其中每个标识的安全性设置具有相关联的输入消息集,其中所述输入消息集不重叠;基于所接收的标识所述安全性设置的信息修改所述白箱实现,以使得:当所接收的输入消息与所接收的安全性设置之一相关联时,所述白箱实现输出与所接收的输入消息相关联的正确输出消息。
描述了多种实施例,其中,输入消息集中的每个消息包括相关联的安全性设置的值。
描述了多种实施例,其中,当所接收的输入消息不与接收的安全性设置之一相关联时,所述白箱实现输出与所接收的输入消息相关联的不正确输出消息。
描述了多种实施例,其中,修改所述白箱实现还包括:确定与第一安全性设置相关联的系统标识符;以及修改所述白箱实现的仅关联于与所述第一安全性设置相关联的输入消息的部分。
描述了多种实施例,其中,修改所述白箱实现的一部分还包括:通过所述系统标识符修改所述密码实现的从与所述第一安全性设置相关联的输入消息得到的输出消息;修改所述密码实现以在操作期间接收实现所述密码实现的密码系统的系统标识符;以及修改所述密码实现以在操作期间将所接收的系统标识符与所述密码实现的所述输出消息进行组合。
描述了多种实施例,其中,所述系统标识符包括所述密码系统的硬件标识符。
描述了多种实施例,其中,所述系统标识符包括密码系统上的软件的软件标识符。
描述了多种实施例,其中,所述密码系统包括查找表的网络。
描述了多种实施例,其中,修改所述密码实现的一部分还包括:修改所述密码实现以在操作期间接收实现所述密码实现的密码系统的系统标识符;通过消除所述多个查找表中的第一查找表的条目来修改所述第一查找表;修改所述密码实现,以在所述查找表的输入访问第一表中的已消除条目时,输出来自所述第一查找表的取决于所述系统标识符的值,以使得当所述密码系统被授权执行所述带密钥密码功能时,输出所述正确输出消息。
描述了多种实施例,其中,修改所述密码实现还包括:确定与第一安全性设置相关联的系统标识符;以及通过将所述系统标识符与查找表中产生输出消息的一部分的行的部分进行异或处理,修改所述查找表的产生所述输出消息的一部分的部分,其中所述输出消息的所述部分仅关联于与所述第一安全性设置相关联的输入消息;修改所述密码实现以在操作期间接收实现所述密码实现的密码系统的系统标识符;以及修改所述密码实现以在操作期间将所接收的系统标识符与所述密码实现的所述输出消息进行组合。
描述了多种实施例,其中,所述系统标识符包括所述密码系统的硬件标识符。
描述了多种实施例,其中,所述系统标识符包括密码系统上的软件的软件标识符。
描述了多种实施例,其中,所述密码系统包括有限状态机的网络。
此外,多种示例性实施例涉及一种在密码系统中实施安全性设置的方法,包括:由所述密码系统接收与多个安全性设置中的第一安全性设置相关联的第一输入消息;由所述密码系统执行将所述第一输入消息映射到第一输出消息的带密钥密码操作,其中,所述带密钥密码操作在所述密码系统被授权用于所述第一安全性设置时产生正确输出消息,其中所述多个安全性设置中的每一个安全性设置具有相关联的输入消息集,其中所述输入消息集不重叠。
描述了多种实施例,其中,输入消息集中的每个消息包括相关联的安全性设置的值。
描述了多种实施例,还包括:确定所述密码系统的系统标识符;以及将所述系统标识符与所述第一输出消息进行组合,其中当所述密码系统被授权执行所述带密钥密码功能时,产生所述正确输出消息。
描述了多种实施例,其中,将所述系统标识符与所述第一输出消息进行组合包括:将系统标识符与所述输出消息的一部分进行异或处理。
描述了多种实施例,其中,所述系统标识符包括所述密码系统的硬件标识符。
描述了多种实施例,其中,所述系统标识符包括密码系统上的软件的软件标识符。
描述了多种实施例,还包括:接收具有第二安全性设置的第二输入消息;以及由所述密码系统执行将所述第二输入消息映射到第二输出消息的带密钥密码操作,其中当所述密码系统被授权用于所述第二安全性设置时,所述带密钥密码操作产生正确输出消息。
描述了多种实施例,还包括:接收具有第二安全性设置的第二输入消息;以及由所述密码系统执行将所述第二输入消息映射到第二输出消息的带密钥密码操作,其中当所述密码系统未被授权用于所述第二安全性设置时,所述带密钥密码操作产生不正确输出消息。
描述了多种实施例,其中,所述密码系统包括查找表的网络。
描述了多种实施例,还包括:确定所述密码系统的系统标识符;以及访问所述查找表的网络中的一个查找表中的丢失条目以及输出来自所述查找表的取决于所述系统标识符的值,其中当所述密码系统被授权执行所述带密钥密码功能时,产生所述正确输出消息。
描述了多种实施例,还包括:确定所述密码系统的系统标识符;以及在已经接收到正确的系统标识符时,产生所述正确输出消息。
描述了多种实施例,其中,所述密码系统包括有限状态机的网络。
描述了多种实施例,其中,所述密码操作是高级加密系统(AES)或数据加密标准(DES)之一。
附图说明
为了更好地理解各种示例性实施例,对附图进行参考,其中:
图1示出了AES的一个回合的主要步骤;
图2示出了在对回合的输入进行固定编码的情况下的白箱AES实现;
图3示出了借助查找表的网络对一个输出半字节的计算;
图4示出了通过对输入和输出进行编码而模糊处理的图3的网络表的一部分;以及
图5是示出了利用使用相关安全性设置实现白箱实现的方法的流程图。
为了便于理解,使用相同的附图标记来指代具有基本相同或相似的结构和/或基本相同或相似的功能的元素。
具体实施方式
说明书和附图示出了本发明的原理。从而,将理解的是,本领域技术人员能够设想出实现本发明的原理并包括在其范围内的多种布置(尽管此处并未明确描述或示出)。此外,这里所述的所有示例明显主要用于教导目的,以辅助读者理解本发明的原理以及发明人为推进现有技术而贡献的构思,其被认为不限于具体描述的示例和条件。此外,本文中使用的术语“或”指代非排他性的或(即和/或),除非另作指示(例如“或其它”或“或在备选方式中”)。此外,本文所述的多种实施例不必是互斥的,一些实施例可以与一个或多个其它实施例进行组合以形成新的实施例。
以下讨论涉及白箱密码,其原因在于它是最有挑战性的攻击模型。此外,在受到白箱攻击的环境中部署和使用了许多密码实现。还存在黑箱攻击模型和灰箱攻击模型。在黑箱攻击模型中,假定攻击者只能访问所述实现的输入和输出。在灰箱攻击模型中,假定除了访问所述实现的输入和输出之外,攻击者还能够访问关于对实现的执行的侧通道信息。这种侧通道信息可以包括功率、定时、电子发射等。因此,下述实施例的益处可用来防止这些攻击级别以及其它可被定义的攻击级别中的任意一种。因此,在描述了白箱实现的情况下,它们还意在包括使用以下实施例中所述的各种方法的黑箱实现以及灰箱实现。
为了使系统中的密码密钥的数量保持较小,可能会期望针对不同的应用使用相同的密钥。这意味着可将相同的密钥与不同的安全性设置一起使用。以下实施例示出了在通过白箱实现来实现密码算法的情况下如何来实现这一点。
密码密钥在许多系统的安全性方面起到重要的作用。例如,它们用于认证、完整性检查以及确保数据的机密性。在这种系统中,隐藏密码密钥是至关重要的。如果对手能够提取密钥,则这将破坏安全性。
白箱密码是在软件中实现密码算法以使得攻击者很难找到密钥的规则。这里,假定最强的可想到的(对于软件,最实际的)攻击模型,其中假定对手具有对白箱实现的完全控制和完全访问。
相应地,期望使联网系统中的密码密钥的数量保持较小。这并不只是由于存储器需要,而且还由于简化密钥操纵和防止需要对相同数据进行多重加密。从而,优选地,可将相同的密钥用于不同的应用以及不同的用户。然而,其难点在于不同的应用可能具有不同的安全性需求并且不同的用户可能具有不同的授权权利。例如,针对一些安全性敏感应用,可能期望将对密钥的使用与特定设备绑定(例如针对银行业务),而针对其它安全性不那么敏感的应用,则可能更期望用户能够将密钥拷贝到用户的所有设备(例如针对购物卡)。另一示例是针对数字电视的有条件访问系统,其中并不是所有用户都可以访问相同的内容。如果以传统的方式来实现密码算法,则针对相同密钥的不同使用,不能实现不同的安全性设置。
下文所述的实施例示出了如何使用白箱实现来针对相同密钥的不同使用实现不同的安全性目标。这可通过将消息空间分成多个消息组来实现,其中特定安全性设置可与一个消息组相关联。在一种实施例中,通过让消息经由对适当填充(padding)的选择来选择其安全性设置,使这一方式起作用。
现在描述在白箱实现中提供不同的安全性设置的下述实施例的特征。在消息空间(例如,在AES中,2128个128比特消息)中,可标识k个子集M1、M2、…、Mk,其中k≥2。可通过白箱实现WB来实现密码算法。令WB(m)为白箱实现的用于消息m的部分。类似地,WB(Mi)可被定义为白箱实现的用于来自Mi的消息的部分,即从而,针对任意i、j(i≠j),如果对来自Mi的消息运行白箱实现,则其使用白箱实现的未用于来自Mj的任何消息的部分,反之亦然,即
其中AΔB=(A-B)∪(B-A),表示集A和B之间的对称差别。白箱实现的部分δi,j用来实现针对Mi(相对Mj)唯一的安全性测量,反之亦然。在白箱实现的不同实例之间可能不同的安全性属性的示例包括:绑定到平台;软件的完整性检查;对特定材料的访问控制(例如实现针对Mi正常工作,从而允许访问Mi,但不针对Mj正常工作,从而拒绝访问Mj);以及防止拷贝白箱实现(代码提举)。由于如果并且则具有针对Mj(或Mi)的特定白箱实现并不直接给出Mi(或Mj)的白箱实现,所以该最后一个属性可能总是存在。
提供使用相关安全性设置的白箱实现可提供k种可能的安全性设置。为了在第i个安全性设置中进行操作,将来自Mi的消息提供给白箱实现。注意到,当声明将来自Mi的消息提供给白箱实现时,这包括白箱实现接收来自Mi的消息作为明文或密文。这意味着通过在消息中选择填充,选择了安全性设置。
以下文献中提出了对于高级加密标准(AES)和数据加密标准(DES)的白箱实现的基于表的方式:“White-Box Cryptography and an AES Implementation”,Stanley Chow,Philip Eisen,Harold Johnson,and Paul C.Van Oorschot,Selected Areas inCryptography:9th Annual International 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-9 Workshop,DRM2002,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)等),可以将任意块密码用作流密码。
可以使用多个基本块实施白箱实现。采用将一些块构建在一个或多个之前的块的输出上的方式,将多个基本块互连。还可将基本块实现在运行于通用计算机芯片(例如微处理器)上的软件中。例如,基本块可以使用多个计算机指令,其中包括算术指令,这些指令一起实现基本块的功能。基本块的一种广泛使用的实现是查找表。例如,Chow 1和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中可以找到对这一实现的进一步详细描述。此外,可以使用查找表实现的其它变形,这些变形在本发明的范围之内。
基于表的白箱实现和有限状态机实现都具有以下属性:实现中的所有中间值都被编码(与标准实现相比)。使用有限状态机的白箱实现的示例公开于标题为“DataProcessing Method”的美国专利公开2007/0014394中,以及由Wulf Harder和AtisStraujums在2008年3月11日在重新信任第六次季度会议上所作的题为“SynchrosoftMCFACTTM Secure 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的回合包括以下操作:AddRoundKey110、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箱的输出的第1个半字节。输入状态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的第1个半字节。可采用相同的方式使用另外的Q箱以及相似的XOR网络计算输出状态340的输出z2,3的第二个半字节。此外,可实现表的另外集合,以通过接收来自输入状态的字节列并将其转换成输出状态的相应列的输出来完全地将输入状态310转换成输出状态340。
步骤2:对表和中间值进行模糊处理
在图3中所示的实现中,可以容易地从Q箱提取密钥。仅将逆MixColumns乘法和逆S箱应用到所述输出会显露出清晰的AddRoundKey操作。为了防止这一点,使用任意双射函数对所有查找表的输入和输出进行编码。在Chow 1中描述了这一点。这意味着将查找表与对输出进行编码的编码函数以及对输入进行解码的解码函数合并。编码被选为使得对一个表的输出编码与接下来的表中假定的输入编码相匹配。在图4中,针对第一回合,描述了图3中的实现的一部分。在该示例中,为了与AES一致,所述回合的输入未被编码,但所述回合的输出被编码。在下一回合中处理输出编码。也就是说,与第一回合不同,第二回合(以及之后的回合)假定输入被编码。备选地,第一回合可接收编码输入。然后,该输入编码必须应用于包含白箱实现的软件程序中的其它地方。类似地,根据输出是否将与AES一致,最后一个回合可以包括或不包括输出编码。注意到,在所获得的白箱实现中,查找表和中间值两者都被模糊处理。
上述对基于表查找的白箱实现的描述是为了AES的加密操作。注意到,通过使用SubBytes、ShiftRows和MixColumns操作的逆操作(invSubBytes、invShiftRows和invMixColumns),可以容易地将所述描述调整用于加密操作。从而,假定在以下实施例中可根据需要将上述描述用于对AES的加密或解密操作。
在白箱实现中实现使用相关安全性设置的实施例可分为两部分描述。在第一部分中,所讨论的白箱实现具有存在k个消息集Mi的属性,从而针对任意i、j(i≠j),如果对来自Mi的消息运行白箱实现,则其使用白箱实现的未用于来自Mj的任何消息的部分。在第二部分中,示出了如何修改该白箱实现以使得针对不同的集Mi得到不同的安全性设置。
第一部分:白箱实现
在该实施例中将使用AES。如上所述,AES对16字节的数据块进行操作。它们被写为4x4的字节矩阵,称为状态。
AES的最后一个回合针对输入状态的16个字节中的每一个只包括输入编码8到8比特查找表。这16个查找表合并操作invAddRoundKey、invSubBytes和invAddRoundKey。更正式地,这意味着以下内容,其中,为了便于呈现,最后一个回合的invShiftRows操作被忽略,因为这只是对索引的重新编号。令(针对所述状态的每个字节xi,j)字节到字节函数Ti,j被定义为然后,Chow 1的白箱实现的最后一个回合包含实现函数的16个字节到字节查找表,其中fi,j是随机选择的双射函数。添加函数fi,j以对Ti,j的输入进行编码。对查找表设置输入和输出编码,以使得一个表的输出编码与接下来的表中所假定的输入编码匹配。
现在定义k=16个消息集M1、M2、…、Mk,以使得Mi(i=1,2,…,16)是明文消息集,针对该明文消息集的最后1个半字节给出值i的二进制表示。注意到,每个集包括2124个消息。这导致以下期望的属性:针对任意i、j(i≠j),如果对来自Mi的消息运行白箱实现,则其使用白箱实现的未用于来自Mj的任何消息的部分。毕竟,针对来自Mi的消息,仅针对以值i的二进制表示结尾的那些行,访问针对所计算的16字节结果的最后一个字节的查找表
第二部分:实现不同的安全性设置
举例来讲,现在定义以下16个安全性设置,其中每个安全性设置是可单独寻址的。在该示例中,如上所述,将16个安全性设置中的每一个规定为输出消息的最后1个半字节。
7个安全性设置(k=1、…、7),每个将所述实现绑定到不同的半字节si(i=1,…,7),其中半字节si是可从平台导出的并且标识应当在其上运行白箱实现的平台。这实现了平台绑定。
7个安全性设置(k=8、…、14),每个检查不同的软件程序Si(i=1,…,7)的完整性。这种完整性检查可包括验证正在使用的软件实例(或其中的一部分)的散列Hi
一个安全性设置(k=15)拒绝对内容的访问。这可通过未授权白箱软件为具有这一安全性设置的消息提供不正确的答案来实现。
一个安全性设置(k=16)中不实施任何特殊的安全性属性。这允许白箱实现正确地处理具有该设置的消息。
任意给定的白箱实现可以只是按照需要针对这些安全性设置之一或其任意组合正确地操作。例如,在设置将使得能够访问有线或卫星TV系统中的特定频道的情况下,白箱实现能够只正确地访问与用户被许可观看的频道有关的消息。此外,对于作为对所有用户都可用的基本包的一部分的频道,所述消息可以是具有允许处理所有这些消息的如上所述的k=16的安全性编码的消息。
可按照例如以下方式实现这些安全性设置。
在查找表中存在具有i的二进制表示的24行r,例如i=0对应于最后1个半字节为0000的行。因此,针对采用每个i(i=0,…,6)作为其最后1个半字节的情况,存在24行,并且针对这7个安全设置中的每一个,通过将r的第1个半字节与si进行异或处理,24行r被从原始行r获得的行r’替代。值si被关联到特定的授权平台。从而,在运行时间,白箱实现从运行白箱实现的平台获得平台特定值si,并将si与对应于i=0、...、6的行的第1个半字节进行异或处理。因此,针对对应于平台si的消息Mi,来自相关联的行的输出将给出正确的值,否则输出消息不正确。从而,如果使用安全性级别0、…、6的白箱实现被拷贝到另一平台,则其将不会正确地工作。
此外,针对采用每个i(i=7,…,13)作为其最后1个半字节的情况,查找表中存在24行r,并且针对这7个安全设置中的每一个,通过将ri的第1个半字节与Hi进行异或处理,24行r被从原始行r获得的行r’替代。值Hi是正在使用的软件Si(或其中的一部分)的散列。从而,在运行时间,白箱实现获得软件Si的散列值H并将H与对应于i=7,…,13的行中的每一个的第1个半字节进行异或处理。因此,针对对应于与Hi相关联软件Si的消息Mi,来自相关联的行的输出将给出正确的值,否则所述消息不正确。从而,如果使用安全性级别7、…、13的白箱实现被修改,则其将不会正确地工作。
此外,查找表中存在采用i=14作为其最后1个半字节的24行,并且通过将r的第1个半字节改变为不同的4比特值,这些行中的每一个被从r获得的行r’替代。从而,如果访问了这些行,则白箱实现给出不正确的答案。因此,针对对应于与等于14的安全性级别相关联的白箱实现的消息Mi,来自相关联的行的输出将给出不正确的值。
此外,查找表中存在采用i=15作为其最后1个半字节的24行,并且这些行中没有任何行被改变。从而,如果访问了这些行,则白箱实现给出正确的答案,即,针对当安全性设置等于15时的白箱实现,所有消息M15都被正确地解码。
举例来讲,现在可通过向白箱实现提供来自M10的消息(即以由10的二进制表示定义的半字节结尾的消息)来实现对软件程序S3的完整性检查。所得到的输出消息按如上所述与散列值H3组合并提供正确的输出。
上述实施例的应用的另一示例如下所述。内容提供商可在不同的模式中发送消息。这可通过将消息空间分割成子集来实现,其中每个子集是不同的模式。内容提供商可提供一种提供高级内容的模式和一种提供基本内容的模式。现在,当设计白箱实现时,针对每个模式,必须选择如何设置安全性设置。针对给定的示例,这意味着例如订购了高级内容的人没有针对两种模式的安全性设置,而没有订购的人则具有拒绝访问高级内容模式的安全性设置。
注意到,每个用户可基于用户有权享有的安全性访问接收他们自己的特定白箱实现。此外,如果用户的授权安全性访问改变,则他们可以基于新的安全性设置接收新的白箱实现。
在所描述的实施例中,填充数据只是导致16个安全性级别的字节的1个半字节。附加的级别可以是期望的。例如,在有线电视系统中,完整字节可用于填充,从而给出256个不同的集Mi,其中每个频道使用等于i的字节对其消息进行填充。然后,每个用户可订购到唯一的频道集。针对该用户的用于对经过编码的频道进行解码的白箱实现将提供对针对所订购的频道的每个消息的正确解码并且将提供对针对未订购的频道的每个消息的不正确解码。
在所述实施例中,不同集Mi的行为差别只是单个输出字节,其中所述字节的1个半字节包含填充数据。实际上,可期望更大的影响。从而,所描述的实施例可扩展到对所述行为具有更大的影响。例如,还可改变输出消息的其它字节,从而不正确的输出相对于正确输出有很大不同。
在多种实施例中,系统标识符可用来确定白箱实现或运行白箱实现的白箱系统的标识。上文给出了系统标识符的几个示例,比如白箱系统中的代码段的散列函数或系统的硬件标识符。还可通过其它方式导出系统标识符。例如,系统标识符可以是特定代码段或表条目。
此外,上文提到了防篡改的多种示例。存在多种防篡改方法并且它们与这里描述的实施例兼容。例如,查找表被定义为一段软件代码。从而,查找表具有双重解释:其既是软件又是查找表。这使得代码防篡改:改变代码意味着改变白箱实现的功能性。
根据本发明的实施例的方法可作为计算机实现方法实现于计算机上。针对根据本发明的方法的可执行代码可存储在计算机程序介质上。计算机程序介质的示例包括存储器设备、光存储设备、集成电路、服务器、在线软件等。从而,白箱系统可包括实现白箱计算机程序的计算机。这种系统还可包括其他硬件元件,其中包括存储设备、用于与外部系统以及在白箱系统的元件之间进行数据传输的网络接口。
在本发明的一种实施例中,计算机程序可以包括适于当计算机程序运行于计算机上时执行根据本发明的方法的所有步骤的计算机程序代码。优选地,计算机程序嵌入在非瞬时计算机可读介质上。
除了在非瞬时计算机可读介质上实现计算机程序之外,这种计算机程序还可被发送到用户或用户设备,以用于安装和使用。这可在任意通信网络(例如互联网)上实现。
此外,实现这里描述的实施例的用户设备可包括智能卡、支付卡、过境卡、访问卡和设备、移动电话、平板电脑、个人数字助理、便携式和台式计算机、机顶盒、数字视频记录、媒体流设备等。对上述实施例的使用可包括支付软件、安全访问、停车访问、过境访问和支付、银行业务、软件和数字媒体传输、安全通信、内容分发等。
此外,由于白箱密码通常是非常复杂的和/或模糊的,所以对于人们来说,写入会比较乏味。因此,具有一种用来以自动化的方式创建根据本发明的实施例的密码系统的方法是有利的。
创建根据本发明的密码系统的方法可作为计算机实现方法实现于计算机上或实现于专用硬件中或在两者的组合中。针对根据本发明的方法的可执行代码可存储在计算机程序介质上。在这种方法中,计算机程序可包括适于在计算机程序运行在计算机上时执行所述方法的所有步骤的计算机程序代码。计算机程序具体实现在非瞬时计算机可读介质上。
图5是示出了利用使用相关安全性设置实现白箱实现的方法的流程图。首先,方法开始(505)。然后,产生密码操作的白箱实现(510)。这可如上所述使用多种方法和实现来产生。接下来,可以接收标识将由白箱实现应用的安全性设置的信息(515)。每个所标识的安全性设置可具有相关联的输入消息集,其中所述输入消息集不重叠。在一些实施例中,输入消息集中的每个消息包括相关联的安全性设置的值。然后,可基于所接收的标识安全性设置的信息修改白箱实现(520),从而:当所接收的输入消息与所接收的安全性设置之一相关联时,白箱实现输出与所接收的输入消息相关联的正确输出消息;以及当所接收的输入消息不与所接收的安全性设置之一相关联时,白箱实现输出与所接收的输入消息相关联的不正确输出消息。然后,所述方法结束(525)。
用来实现本发明的实施例的处理器上运行的特定软件的任意组合构成特定的专用机器。
本文所使用的术语“非瞬时机器可读存储介质”将被理解为排除瞬时传播信号,但是包括所有形式的易失性和非易失性存储器。此外,本文所使用的术语“处理器”将被理解为涵盖多种设备,比如微处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)以及其它类似的处理设备。当软件实现在处理器上时,所述组合变成单个特定机器。
本领域技术人员应该理解的是,本文中的任意框图表示实现本发明的原理的说明性电路的概念视图。
虽然参考特定示例性方面详细描述了多种示例性实施例,但应该理解的是,本发明能够具有其它实施例,并且能够在多种显然的方面修改其细节。对本领域技术人员明显的是,在保持在本发明的精神和范围之内的同时,可以进行各种变形和修改。从而,前述公开、描述和附图只是说明性的,而决不用来限制本发明,本发明只由权利要求限定。

Claims (26)

1.一种产生将输入消息映射到输出消息的密码操作的密码实现的方法,其中所述密码实现实施安全性设置,所述方法包括:
产生所述密码操作的密码实现;
接收标识将由所述密码实现应用的安全性设置的信息,其中每个标识的安全性设置具有相关联的输入消息集,其中所述输入消息集不重叠;
基于所接收的标识所述安全性设置的信息修改所述密码实现,以使得:
当所接收的输入消息与所接收的安全性设置之一相关联时,所述密码实现输出与所接收的输入消息相关联的正确输出消息;
其中输入消息空间包括输入到带密钥密码操作的所有可能输入消息,多个消息组包括输入消息空间中的所有输入消息。
2.根据权利要求1所述的方法,其中,输入消息集中的每个消息包括相关联的安全性设置的值。
3.根据权利要求1所述的方法,其中,当所接收的输入消息不与接收的安全性设置之一相关联时,所述密码实现输出与所接收的输入消息相关联的不正确输出消息。
4.根据权利要求1所述的方法,其中,修改所述密码实现还包括:
确定与第一安全性设置相关联的系统标识符;以及
修改所述密码实现的仅关联于与所述第一安全性设置相关联的输入消息的部分。
5.根据权利要求4所述的方法,其中,修改所述密码实现的一部分还包括:
通过所述系统标识符修改所述密码实现的从与所述第一安全性设置相关联的输入消息得到的输出消息;
修改所述密码实现以在操作期间接收实现所述密码实现的密码系统的系统标识符;以及
修改所述密码实现以在操作期间将所接收的系统标识符与所述密码实现的所述输出消息进行组合。
6.根据权利要求5所述的方法,其中,所述系统标识符包括所述密码系统的硬件标识符。
7.根据权利要求5所述的方法,其中,所述系统标识符包括密码系统上的软件的软件标识符。
8.根据权利要求1所述的方法,其中,所述密码系统包括查找表的网络。
9.根据权利要求8所述的方法,其中,修改所述密码实现的一部分还包括:
修改所述密码实现以在操作期间接收实现所述密码实现的密码系统的系统标识符;
通过消除多个所述查找表中的第一查找表的条目来修改所述第一查找表;
修改所述密码实现,以在所述查找表的输入访问第一表中的已消除条目时,输出来自所述第一查找表的取决于所述系统标识符的值,以使得当所述密码系统被授权执行所述带密钥密码操作时,输出所述正确输出消息。
10.根据权利要求8所述的方法,其中,修改所述密码实现还包括:
确定与第一安全性设置相关联的系统标识符;以及
通过将所述系统标识符与查找表中产生输出消息的一部分的行的部分进行异或处理,修改所述查找表的产生所述输出消息的一部分的部分,其中所述输出消息的所述部分仅关联于与所述第一安全性设置相关联的输入消息;
修改所述密码实现以在操作期间接收实现所述密码实现的密码系统的系统标识符;以及
修改所述密码实现以在操作期间将所接收的系统标识符与所述密码实现的所述输出消息进行组合。
11.根据权利要求10所述的方法,其中,所述系统标识符包括所述密码系统的硬件标识符。
12.根据权利要求10所述的方法,其中,所述系统标识符包括密码系统上的软件的软件标识符。
13.根据权利要求1所述的方法,其中,所述密码系统包括有限状态机的网络。
14.一种在密码系统中实施安全性设置的方法,包括:
由所述密码系统接收与多个安全性设置中的第一安全性设置相关联的第一输入消息;
由所述密码系统执行将所述第一输入消息映射到第一输出消息的带密钥密码操作,其中,所述带密钥密码操作在所述密码系统被授权用于所述第一安全性设置时产生正确输出消息,
其中所述多个安全性设置中的每一个安全性设置具有相关联的输入消息集,其中所述输入消息集不重叠;
其中输入消息空间包括输入到带密钥密码操作的所有可能输入消息,多个消息组包括输入消息空间中的所有输入消息。
15.根据权利要求14所述的方法,其中,输入消息集中的每个消息包括相关联的安全性设置的值。
16.根据权利要求14所述的方法,还包括:
确定所述密码系统的系统标识符;以及
将所述系统标识符与所述第一输出消息进行组合,其中当所述密码系统被授权执行所述带密钥密码功能时,产生所述正确输出消息。
17.根据权利要求16所述的方法,其中,将所述系统标识符与所述第一输出消息进行组合包括:将系统标识符与所述输出消息的一部分进行异或处理。
18.根据权利要求16所述的方法,其中,所述系统标识符包括所述密码系统的硬件标识符。
19.根据权利要求16所述的方法,其中,所述系统标识符包括密码系统上的软件的软件标识符。
20.根据权利要求14所述的方法,还包括:
接收具有第二安全性设置的第二输入消息;以及
由所述密码系统执行将所述第二输入消息映射到第二输出消息的带密钥密码操作,其中当所述密码系统被授权用于所述第二安全性设置时,所述带密钥密码操作产生正确输出消息。
21.根据权利要求14所述的方法,还包括:
接收具有第二安全性设置的第二输入消息;以及
由所述密码系统执行将所述第二输入消息映射到第二输出消息的带密钥密码操作,其中当所述密码系统未被授权用于所述第二安全性设置时,所述带密钥密码操作产生不正确输出消息。
22.根据权利要求14所述的方法,其中,所述密码系统包括查找表的网络。
23.根据权利要求22所述的方法,还包括:
确定所述密码系统的系统标识符;以及
访问所述查找表的网络中的一个查找表中的丢失条目以及输出来自所述查找表的取决于所述系统标识符的值,其中当所述密码系统被授权执行所述带密钥密码功能时,产生所述正确输出消息。
24.根据权利要求22所述的方法,还包括:
确定所述密码系统的系统标识符;以及
在已经接收到正确的系统标识符时,产生所述正确输出消息。
25.根据权利要求14所述的方法,其中,所述密码系统包括有限状态机的网络。
26.根据权利要求14所述的方法,其中,所述密码操作是高级加密系统AES或数据加密标准DES之一。
CN201510208403.XA 2014-04-28 2015-04-28 在单个白箱实现中实现使用相关安全性设置 Active CN105024992B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/263,247 2014-04-28
US14/263,247 US9380033B2 (en) 2014-04-28 2014-04-28 Implementing use-dependent security settings in a single white-box implementation

Publications (2)

Publication Number Publication Date
CN105024992A CN105024992A (zh) 2015-11-04
CN105024992B true CN105024992B (zh) 2019-01-25

Family

ID=54335864

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510208403.XA Active CN105024992B (zh) 2014-04-28 2015-04-28 在单个白箱实现中实现使用相关安全性设置

Country Status (2)

Country Link
US (1) US9380033B2 (zh)
CN (1) CN105024992B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US9582420B2 (en) * 2015-03-18 2017-02-28 International Business Machines Corporation Programmable memory mapping scheme with interleave properties
EP3391583B1 (en) * 2015-12-15 2019-07-24 Koninklijke Philips N.V. A computation device and method
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
US11632231B2 (en) * 2020-03-05 2023-04-18 Novatek Microelectronics Corp. Substitute box, substitute method and apparatus thereof
CN111681662B (zh) * 2020-06-01 2023-07-25 科大讯飞股份有限公司 车内交互音频加密方法、装置及设备
CN114279235B (zh) * 2021-12-29 2024-05-10 博锐尚格科技股份有限公司 基于黑箱模型与灰箱模型切换的冷却塔运行控制方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101953111A (zh) * 2007-12-21 2011-01-19 科库数据控股有限公司 用于保密数据的系统和方法
US8418006B1 (en) * 2010-12-07 2013-04-09 Xilinx, Inc. Protecting a design for an integrated circuit using a unique identifier

Family Cites Families (6)

* Cited by examiner, † Cited by third party
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
CN101401348B (zh) 2006-03-10 2011-08-31 耶德托公司 用于使密码函数模糊的方法和系统
US20080005806A1 (en) * 2006-06-30 2008-01-03 Nokia Corporation Apparatus, network entity and associated methods and computer program products for selectively enabling features subject to digital rights management
US7870273B2 (en) * 2007-09-28 2011-01-11 Disney Enterprises, Inc. Method and system for indentifying a device implementing a digital rights management protocol
US9274976B2 (en) * 2010-11-05 2016-03-01 Apple Inc. Code tampering protection for insecure environments
KR20120072011A (ko) * 2010-12-23 2012-07-03 한국전자통신연구원 무결성 검증이 가능한 데이터 암호장치, 복호장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101953111A (zh) * 2007-12-21 2011-01-19 科库数据控股有限公司 用于保密数据的系统和方法
US8418006B1 (en) * 2010-12-07 2013-04-09 Xilinx, Inc. Protecting a design for an integrated circuit using a unique identifier

Also Published As

Publication number Publication date
US9380033B2 (en) 2016-06-28
CN105024992A (zh) 2015-11-04
US20150312224A1 (en) 2015-10-29

Similar Documents

Publication Publication Date Title
CN105024992B (zh) 在单个白箱实现中实现使用相关安全性设置
CN105024803B (zh) 白箱实现中的行为指纹
CN105187364B (zh) 保护白盒实现方案不受攻击
CN105184115B (zh) 用于将隐式完整性或可信性检查包括到白箱实现中的方法
CN106888080B (zh) 保护白盒feistel网络实施方案以防错误攻击
CN105095695B (zh) 经由白箱实现的不正确功能行为实现授权
CN106888081B (zh) 白盒实施方案内中间值的宽编码
CN106953723B (zh) 防止dfa攻击的拆分和合并方法
US20150270950A1 (en) Splitting s-boxes in a white-box implementation to resist attacks
CN105022937B (zh) 用于将白箱实现紧附到周围程序的接口兼容方法
CN105721135B (zh) 使用替换盒实施加密操作的方法
CN107273724B (zh) 为白盒实施方案的输入和输出加水印
CN105721134B (zh) 使用带有多个外部编码的单个白盒实现
CN105978680B (zh) 一种加密钥的加密运算方法
CN105281893B (zh) 用于引入白箱实现对串集合的依赖性的方法
EP2960891B1 (en) Method for introducing dependence of white-box implementationon a set of strings
CN105024808B (zh) 无需改变密钥的安全性补丁
EP2940917A1 (en) Behavioral fingerprint in a white-box implementation
EP2940925B1 (en) Implementing use-dependent security settings in a single 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