CN105024808B - 无需改变密钥的安全性补丁 - Google Patents

无需改变密钥的安全性补丁 Download PDF

Info

Publication number
CN105024808B
CN105024808B CN201510207986.4A CN201510207986A CN105024808B CN 105024808 B CN105024808 B CN 105024808B CN 201510207986 A CN201510207986 A CN 201510207986A CN 105024808 B CN105024808 B CN 105024808B
Authority
CN
China
Prior art keywords
message
password
realized
input
collection
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
CN201510207986.4A
Other languages
English (en)
Other versions
CN105024808A (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 CN105024808A publication Critical patent/CN105024808A/zh
Application granted granted Critical
Publication of CN105024808B publication Critical patent/CN105024808B/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
    • 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/16Program or content traceability, e.g. by watermarking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Technology Law (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)
  • Storage Device Security (AREA)

Abstract

一种在密码系统中在不改变密钥的情况下对密码实现打补丁的方法,包括:向所述密码实现发送来自第一消息集的消息,其中所述第一消息使用所述密码实现的第一部分;决定对所述密码实现打补丁;在决定对所述密码实现打补丁之后,向所述密码实现发送来自第二消息集的第二消息,其中所述第二消息使用所述密码实现的不用于所述第一消息集中的任何消息的第二部分。

Description

无需改变密钥的安全性补丁
技术领域
这里公开的多种示例性实施例一般地涉及在不改变密码密钥的情况下在白箱实现中打安全性补丁。
背景技术
互联网给用户带来了对数字内容的便捷且普及的访问。由于互联网是强大的分发通道,所以许多用户设备都力求能够直接访问互联网。用户设备可以包括个人计算机、膝上型计算机、机顶盒、互联网启用的媒体播放器、移动电话、智能手机、平板电脑、移动热点或能够访问互联网的任意其它设备。将互联网用作版权内容的分发介质在确保内容提供商的利益方面带来了极大的挑战。用户设备越发普遍地使用加载了适当软件的处理器来呈现(回放)数字内容(比如音频和/或视频)。对回放软件的控制是加强内容拥有者的利益的一种手段,其中包括可以使用所述内容的条款和条件。此前,许多用户设备是封闭系统。如今,越来越多的平台变为部分开放的。一些用户可以被假定为能够完全地控制和访问提供内容访问的硬件和软件,并拥有大量时间和资源来攻击和绕过任意内容保护机制。结果,内容提供商必须在社区的恶意网络上将内容递送给合法用户,其中所述社区中并不是所有用户或用户设备都是可信的。
可以访问安全软件应用来执行多种功能,比如用来保护和认证数字内容的密码功能。为了对抗攻击,必须对这些算法进行模糊处理(隐藏),以防止对算法进行反向工程和修改或禁止获得用户特定安全信息。从而,可以通过如实现安全软件的处理器的指令集所限定的多种功能来执行安全软件应用的功能。例如,一种用来掩盖这些功能的手段是使用查找表。
对数字版权管理(DRM)和其它安全软件的广泛使用引起了对于寻求使得对软件的篡改更加复杂的安全、防篡改的软件的需求。存在多种用来提高软件应用的防篡改的技术。这些技术大多基于以下方面:通过在软件应用的控制和数据路径中都加入随机性和复杂性掩饰来隐藏所述应用的嵌入知识。其背后的构思在于,只通过代码检查来提取信息将更加困难。因此,找到处理安全应用的访问和许可控制的代码并进而将其改变是更加困难的。
本文所使用的白箱密码包括在攻击者已经对运行白箱密码软件的系统完全控制的环境中执行密码功能的安全软件应用。从而,攻击者可以修改输入和输出,追踪软件的操作,在任意时刻对软件所使用的存储器进行采样和监测,甚至修改软件。从而,需要通过防止公开安全功能中使用的秘密信息的方式来执行安全功能。可以通过多种方式来实现白箱密码功能。这些方法包括:掩盖软件代码;使用掩盖秘密信息的使用的复杂数学函数;使用查找表;使用有限状态机;或执行密码功能但隐藏这些安全功能所需的秘密信息的任何其它方法。白箱实现还可以包含包括反调试和防篡改属性的组件。
密码算法的软件实现比硬件实现更受欢迎有多种理由。比如,可以是因为在密钥泄漏的情况下软件方案是可更新的、因为其成本低、或因为应用开发者不对实现白箱系统的硬件有任何影响。
发明内容
下文给出了对多种示例性实施例的简要概述。以下概述中可以进行一些简化和省略,其是为了强调和介绍多种示例性实施例的一些方面,而不是为了限制本发明的范围。随后的内容中将对足以使得本领域技术人员能够实施和使用发明构思的示例性实施例进行详细描述。
多种示例性实施例涉及一种在密码系统中在不改变密钥的情况下对密码实现打补丁的方法,包括:向所述密码实现发送来自第一消息集的消息,其中所述第一消息使用所述密码实现的第一部分;决定对所述密码实现打补丁;在决定对所述密码实现打补丁之后,向所述密码实现发送来自第二消息集的第二消息,其中所述第二消息使用所述密码实现的不用于所述第一消息集中的任何消息的第二部分。
描述了多种实施例,其中,所述第一消息使用所述密码实现的不用于不在所述第一消息集中的任何消息的所述第一部分,并且所述第二消息使用所述密码实现的不用于不在所述第二消息集中的任何消息的所述第二部分。
描述了多种实施例,来自所述第二消息集的消息能够使用所述密码实现的所述第一部分的任意部分。
描述了多种实施例,还包括:在决定对所述密码实现打补丁之后,使用所述密码实现的所述第二部分更新所述密码实现。
描述了多种实施例,还包括:在决定对所述密码实现打补丁之后,继续发送来自所述第一消息集的消息。
描述了多种实施例,其中,决定对所述密码实现打补丁还包括:接收关于已经复制了所述密码实现的指示。
描述了多种实施例,其中,决定对所述密码实现打补丁在时间段(time period)已经期满之后发生。
描述了多种实施例,其中,所述密码实现包括有限状态机的网络。
描述了多种实施例,其中,所述密码实现包括查找表的网络。
描述了多种实施例,其中,所述密码操作是高级加密系统AES或数据加密标准DES之一。
此外,多种示例性实施例涉及一种在密码系统中产生将输入消息映射到输出消息的带密钥密码操作的密码实现的方法,其中能够在不改变密码密钥的情况下对所述密码实现打补丁,所述方法包括:接收指定多个消息组的信息;基于所接收的指定所述多个消息组的信息来修改所述密码实现,以使得:当所述密码实现接收到来自第一消息集的消息时,所述第一消息使用所述密码实现的第一部分;当所述密码实现在决定对所述密码实现打补丁之后接收到来自第二消息集的第二消息时,所述第二消息使用所述密码实现的不用于所述第一消息集中的任何消息的第二部分。
描述了多种实施例,其中,所述第一消息使用所述密码实现的不用于不在所述第一消息集中的任何消息的所述第一部分,并且所述第二消息使用所述密码实现的不用于不在所述第二消息集中的任何消息的所述第二部分。
描述了多种实施例,其中,来自所述第二消息集的消息能够使用所述密码实现的所述第一部分的任意部分。
描述了多种实施例,其中,所述密码实现被进一步修改为处理来自与所述密码实现的第一部分相关联的第一消息组的消息,并且所述密码实现被配置为在接收到来自与所述密码实现的所述第二部分相关联的第二消息组的消息之前接收所述密码实现的第二部分。
描述了多种实施例,其中,密码实现包括多个函数,并且修改所述密码实现,以使得:第一函数的输出包括关于所述第一函数的输入与处于所述多个消息组之一中的所接收的输入消息相对应的指示;以及基于关于所述第一函数的输入与所述多个组之一中的消息相对应的指示,仅使用第二函数的与和所接收的输入消息相关联的消息组相对应的部分。
描述了多种实施例,其中,所述密码实现包括有限状态机的网络。
描述了多种实施例,其中,所述密码实现包括查找表的网络。
描述了多种实施例,其中,所述密码操作是高级加密系统AES或数据加密标准DES之一。
此外,多种示例性实施例涉及一种在密码系统中的带密钥密码操作的密码实现中将输入消息映射到输出消息的方法,其中能够在不改变密码密钥的情况下对所述密码实现打补丁,所述方法包括:由所述密码系统接收与第一消息集相关联的第一输入消息,其中所述第一消息集与所述密码实现的第一部分相关联;由所述密码系统执行将所述第一输入消息映射到第一输出消息的带密钥密码操作,其中对所述第一输入消息执行所述映射使用所述密码实现的所述第一部分;由所述密码系统接收与第二消息集相关联的第二输入消息,其中所述第二消息集与所述密码实现的第二部分相关联;由所述密码系统执行将所述第二输入消息映射到第二输出消息的带密钥密码操作,其中对所述第二输入消息执行所述映射使用所述密码实现的不用于所述第一消息集中的任何消息的所述第二部分。
描述了多种实施例,其中,所述第一输入消息使用所述密码实现的不用于不在所述第一消息集中的任何输入消息的所述第一部分,并且所述第二输入消息使用所述密码实现的不用于不在所述第二消息集中的任何输入消息的所述第二部分。
描述了多种实施例,其中,来自所述第二消息集的输入消息能够使用所述密码实现的所述第一部分的任意部分。
描述了多种实施例,还包括:在接收到所述第二输入消息之前,接收所述密码实现的第二部分。
描述了多种实施例,其中,所述密码实现包括多个函数,第一函数的输出包括关于所述第一函数的输入与处于所述第二消息组中的所接收的第二输入消息相对应的指示;以及基于关于所述第一函数的输入与所述第二消息组中的所接收的第二输入消息相对应的指示,仅使用第二函数的与所述第二消息组相对应的部分。
描述了多种实施例,其中,所述密码实现包括有限状态机的网络。
描述了多种实施例,其中,所述密码实现包括查找表的网络。
描述了多种实施例,其中,所述密码操作是高级加密系统AES或数据加密标准DES之一。
此外,多种示例性实施例涉及一种编码有指令的非瞬时机器可读存储介质,所述指令由密码系统中的带密钥密码操作的密码实现来执行以用于将输入消息映射到输出消息,其中能够在不改变密码密钥的情况下对所述密码实现打补丁,所述非瞬时机器可读存储介质包括:用于接收与第一消息集相关联的第一输入消息的指令,其中所述第一消息集与所述密码实现的第一部分相关联;用于执行将所述第一输入消息映射到第一输出消息的带密钥密码操作的指令,其中对所述第一输入消息执行所述映射使用所述密码实现的所述第一部分;用于接收与第二消息集相关联的第二输入消息的指令,其中所述第二消息集与所述密码实现的第二部分相关联;用于执行将所述第二输入消息映射到第二输出消息的带密钥密码操作的指令,其中对所述第二输入消息执行所述映射使用所述密码实现的不用于所述第一消息集中的任何消息的所述第二部分。
描述了多种实施例,其中,所述第一输入消息使用所述密码实现的不用于不在所述第一消息集中的任何输入消息的所述第一部分,并且所述第二输入消息使用所述密码实现的不用于不在所述第二消息集中的任何输入消息的所述第二部分。
描述了多种实施例,其中,来自所述第二消息集的输入消息能够使用所述密码实现的所述第一部分的任意部分。
描述了多种实施例,还包括:用于在接收到所述第二输入消息之前,接收所述密码实现的第二部分的指令。
描述了多种实施例,其中,所述密码实现包括多个函数,第一函数的输出包括关于所述第一函数的输入与处于所述第二消息组中的所接收的第二输入消息相对应的指示;以及基于关于所述第一函数的输入确实与所述第二消息组中的所接收的第二输入消息相对应的指示,仅使用第二函数的与所述第二消息组相对应的部分。
描述了多种实施例,其中,所述密码实现包括有限状态机的网络。
描述了多种实施例,其中,所述密码实现包括查找表的网络。
描述了多种实施例,其中,所述密码操作是高级加密系统AES或数据加密标准DES之一。
附图说明
为了更好地理解各种示例性实施例,对附图进行参考,其中:
图1示出了AES的一个回合的主要步骤;
图2示出了在对回合的输入进行编码的情况下的白箱AES实现;
图3示出了借助查找表的网络对一个输出半字节的计算;
图4示出了通过对输入和输出进行编码而模糊处理的图3的网络表的一部分;
图5示出了实现安全性补丁的白箱实现的实施例,该白箱实现是图3中所示的白箱实现的扩展;
图6示出了白箱实现的实施例的回合9的计算输出字节的第2个半字节的部分;以及
图7示出了产生可以被安全打补丁的白箱实现的方法的流程图。
为了便于理解,使用相同的附图标记来指代具有基本相同或相似的结构和/或基本相同或相似的功能的元素。
具体实施方式
说明书和附图示出了本发明的原理。从而,将理解的是,本领域技术人员能够设想出实现本发明的原理并包括在其范围内的多种布置(尽管此处并未明确描述或示出)。此外,这里所述的所有示例明显主要用于教导目的,以辅助读者理解本发明的原理以及发明人为推进现有技术而贡献的构思,其被认为不限于具体描述的示例和条件。此外,本文中使用的术语“或”指代非排他性的或(即和/或),除非另作指示(例如“或其它”或“或在备选方式中”)。此外,本文所述的多种实施例不必是互斥的,一些实施例可以与一个或多个其它实施例进行组合以形成新的实施例。
以下讨论涉及白箱密码,其原因在于它是最有挑战性的攻击模型。此外,在受到白箱攻击的环境中部署和使用了许多密码实现。还存在黑箱攻击模型和灰箱攻击模型。在黑箱攻击模型中,假定攻击者只能访问所述实现的输入和输出。在灰箱攻击模型中,假定除了访问所述实现的输入和输出之外,攻击者还能够访问关于对实现的执行的侧通道信息。这种侧通道信息可以包括功率、定时、电子发射等。因此,下述实施例的益处可用来防止这些攻击级别以及其它可被定义的攻击级别中的任意一种。因此,在描述了白箱实现的情况下,它们还意在包括使用以下实施例中所述的各种方法的黑箱实现以及灰箱实现。
用软件而不是硬件实现安全性具有几个优点。其中之一是可更新性(renewability)。这意味着如果实现的安全性机制由于恶意攻击而变得不足,则可以经由软件更新来对其打补丁。虽然与硬件补丁相比,软件补丁是相对低成本的,但是仍然期望将软件更新的数量保持很小。第一个原因是打补丁仍然引起了成本,这是因为对软件解决方案打补丁通常需要联网系统的所有节点发生改变。第二,频繁的软件更新可能打扰用户。第三,安全性补丁通常需要替换密码密钥。因此,如果快速地进行替换,则设备将停止工作,直到安装软件补丁为止。替换越缓慢,则越复杂,并且与尽可能快地修复安全性脆弱点的目标相抵触。
恶意用户的常见目的是非法向其他用户分发密码密钥。对于白箱实现而言,该目标可能难以实现,这是因为它们被设计为隐藏密码密钥。然而,对手可能足以通过代码提举来分发复杂的白箱实现。也即是说,攻击者分发密钥的功能性,而不是提取和分发密码密钥。这里所述的实施例的思想是针对某一给定k进行所谓的k-可刷新白箱实现。如果白箱实现“被刷新”,则可以保持并使用相同的潜在密码密钥,但是取而代之地,所使用的是白箱实现的之前未使用的部分。通过这种方式,对手必须重新开始其隔离白箱实现的任务及其回避白箱实现中包含的可能平台绑定机制的努力。
为了展示本发明的实施例,现在将描述AES的示例白箱实现。白箱密码是在软件中实现密码算法以使得攻击者很难找到密钥的规则。这里,假定最强的可想到的(对于软件,最实际的)攻击模型,其中假定对手具有对白箱实现的完全控制和完全访问。
以下文献中提出了对于高级加密标准(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-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)等),可以将任意块密码用作流密码。
可以使用多个基本块实施白箱实现。采用将一些块构建在一个或多个之前的块的输出上的方式,将多个基本块互连。还可将基本块实现在运行于通用计算机芯片(例如微处理器)上的软件中。例如,基本块可以使用多个计算机指令,其中包括算术指令,这些指令一起实现基本块的功能。基本块的一种广泛使用的实现是查找表。例如,Chow 1和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)中的模乘法来处理每一列。
步骤SubBytes 120、ShiftRows 130和MixColumns 140独立于所使用的特定密钥。在步骤AddRoundKey 110中应用密钥。除了步骤ShiftRows130,可在不知道其他列的情况下,对4x4状态矩阵的每一列执行处理步骤。因此,由于每一列由四个8比特值构成,所以它们可被认为是32比特操作。虚线150指示在已经执行了所需数量的回合之前重复所述处理。
这些步骤中的每一个或步骤的组合可由查找表或由查找表网络表示。如果AddRoundKey 110步骤是通过与回合密钥进行异或处理实现的,则密钥在白箱攻击的情况下对于攻击者来讲是可见的。还可将AddRoundKey 110步骤嵌入到查找表中,这使得不那么明显找到密钥。事实上,能够使用查找表网络来替代AES的完整回合。例如,可以使用表查找来实现SubBytes 120、ShiftRows 130和MixColumns 140步骤。下文中充分详细地讨论了AES的可能白箱实现,以描述以下发明的实施例,但是在Chow 1中可以找到对这一实现的进一步详细描述。此外,可以使用查找表实现的其它变形,这些变形在本发明的范围之内。
基于表的白箱实现和有限状态机实现都具有以下属性:实现中的所有中间值都被编码(与标准实现相比)。使用有限状态机的白箱实现的示例公开于标题为“DataProcessing Method”的美国专利公开2007/0014394中,以及由WulfHarder和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的回合包括以下操作: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个输出字节yl,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一致,最后一个回合可以包括或不包括输出编码。注意到,在所获得的白箱实现中,查找表和中间值两者都被模糊处理。
上述对基于表查找的白箱实现的描述是为了AES的加密操作。注意到,通过使用SubBytes、ShiftRows和MixColumns操作的逆操作(invSubBytes、invShiftRows和invMixColumns),可以容易地将所述描述调整用于解密操作。从而,假定在以下实施例中可根据需要将上述描述用于对AES的加密或解密操作。
这里所述的本发明的实施例的实质特征是使用k-可刷新白箱实现来从非法分发恢复。k-可刷新白箱实现是白箱实现以及消息空间的k+1个子集M0,M1,M2,...,Mk,使得以下内容成立。令WB(m)是白箱实现的用于消息m的部分。类似地,将WB(Mi)定义为白箱实现的用于来自Mi的消息的部分,即,然后,针对任意m∈Mi,如果对m运行白箱实现,则它使用白箱实现的不用于来自M0,...,Mi-1中的消息中的任意一个的部分。正式地,这意味着:k-可刷新白箱实现可以按如下方式使用。首先,从M0得到消息。备选地,可以以较高概率从M0得到消息。在第i(i=1,2,...,k)次刷新白箱实现之后,从Uj≤iMj得到消息(或者如先前一样,以非常高的概率得到),并且以相当大的概率(例如,20%或者甚至100%)从Mi得到消息。在一个实施例中,白箱实现的所有部分可能对于用户是可用的。在其他实施例中,在进行刷新时,可以提供白箱实现的与刷新相关联的部分。
注意,这给出了上文提到的可更新行为。如果白箱实现“被刷新”,则使用相同的潜在密码密钥,但是所使用的是白箱实现的之前未使用的部分。通过这种方式,对手必须重新开始隔离白箱实现以及回避白箱实现中包含的可能平台绑定机制的过程。
在一个实施例中,定义M0,...,Mk,使得如果生成随机消息,则它们以非常小的概率存在于M1,...,Mk中。这用于防止攻击者基于自生成的随机消息隔离白箱实现。
这里所述的实施例可以应用于任何白箱实现,即,密码算法的模糊实现。最普遍的白箱实现是上文例如在Chow 1和Chow 2中所述的基于表的白箱实现。
将使用基于表的AES白箱解密实现来描述第一实施例。如上所述,AES对16字节的数据块进行操作。这些数据块被写为4x4字节的矩阵,称作状态。AES的回合由以下操作构成:AddRoundKey、InvSubBytes、InvShiftRows和invMixColumns。第10个回合和最后一个回合仅由操作AddRoundKey、InvSubBytes、InvShiftRows、AddRoundKey构成。针对该实施例,考虑Chow 1的白箱实现的以下方面,其中,省略了外部编码。
最后一个回合针对输入状态的16个字节中的每一个仅包括经过输入编码的8到8比特查找表。这16个查找表合并了操作AddRoundKey、InvSubBytes和AddRoundKey。更正式地,这意味着以下内容,其中,为了便于呈现,忽略最后一个回合的InvShiftRows操作,这是因为这仅是索引的重新编号。令针对状态的每一个字节xi,j,通过 来定义字节到字节函数Ti,j。然后,Chow 1的白箱实现的最后一个回合包含实现函数的16个字节到字节查找表,其中,fi,j是随机选择的双射函数。添加函数fi,j以对Ti,j的输入进行编码。对查找表进行输入编码和输出编码,使得一个表的输出编码与后续表中假设的输入编码相匹配。
利用该信息,现在可以描述第一实施例。假设k=15并且将Mi(i=0,1,...,15)定义为明文消息集,针对该明文消息集,最后1个半字节给出了值i的二进制表示。注意,每个集包括2124个消息。该白箱实现和这些消息集定义了k-可刷新白箱实现。
可以以如下方式使用k-可刷新白箱实现的第一实施例。首先,从M0得到消息。这意味着首先所有消息以值0000结尾(即,填充(pad)有该值)。因此,针对以值0000结尾的那些行,仅访问针对计算出的16字节结果的最后一个字节的查找表现在假设恶意用户已经在互联网上违法分发实现。然后,消息可以填充有0001而不是0000。这暗指在之前未访问过的位置访问查找表如果恶意用户已经通过使用来自M0的消息观测其执行来隔离白箱实现,则恶意用户很可能未复制这些表条目。当查找表散布在存储器上而不是作为28个连续字节存储在存储器中时尤其如此。实现这一点的方式如下。在产生白箱实现期间,考虑的具有字节值br的行r。然后,可以在存储器中搜索值br(例如,在代码段中),并且例如使用指针搜索该值的参考。备选地,值br还可以作为某一平台特性被发现。
在上面的实施例中,k=15,并且当白箱实现已经在没有授权的情况下被复制和使用时,可以刷新白箱实现。备选地,可以定期(例如,每月一次)刷新白箱实现。此外,在刷新之后,从M0和M1二者得到消息。因此,可以在复制的白箱实现中正确地处理来自M0的消息,但是将不会正确地处理来自M1的消息。
上面的实施例的缺点是对手可以通过对较大随机消息集运行白箱实现来识别所有表访问,这是因为消息以1/16的概率处于集Mi中。如果通过更长的二进制字符串来规定Mi,则可以得到改善的实施例。如果二进制字符串是例如多于60个比特,则所提出的攻击不再可行。该更大填充字符串的缺点是针对真实消息存在较小空间。可以通过在第i次更新之后不从Mi得到所有消息(但是仅偶尔或者为了特定目的(例如,仅为了认证)),来减轻该问题。
在第二实施例中,更大的比特字符串可以用于填充消息,以规定不同的消息组Mi。为了描述该实施例,将使用上述Chow 1的白箱实现的简化版本。此外,假设不存在外部编码。此外,使用经过修改的AES版本,其中,最后两个回合(即,回合9和回合10)不具有InvShiftRows操作,这是因为包括该操作将使讨论相当复杂,因此为了便于描述实施例,不包括该操作。实际上,可以容纳InvShiftRows操作。
与先前的实施例中一样,设k=15。然而,对集Mi进行不同地选择。将Mi(i=0,1,...,15)定义为明文消息集,针对该明文消息集,状态阵列中的最后两列均为0,并且第二列的最后一个半字节是值i的二进制表示。注意,每一个集包括260个消息。注意,消息集的该特定确定仅是示例,该示例用于说明用于在不改变密钥的情况下对白箱实现打补丁的方法的实施例的操作。其他各种标准可以用于定义多种消息集Mi。此外,可以选择任意数量的集,并且在每一个集中可以存在任意数量的消息。
现在的目标是修改白箱实现,使得针对每一个集Mi,可以识别白箱实现的仅针对来自Mi的消息访问但是针对任何其他消息不访问的部分。如果这一点完成,则k-可刷新白箱实现产生。此外,该实施例具有附加属性,即,攻击者不再能像先前实施例中可能的那样通过对较大随机消息集运行复杂的白箱实现来定位该白箱实现。毕竟随机消息在集Mi中的概率仅为2-68
可以通过扩展图3的表网络来实现在不改变密钥的情况下安全打补丁的白箱实现。此外,还可以通过以与图4中所示的方式相同的方式应用编码来进一步修改白箱实现。在该实施例中,仅表网络的最后两个回合(即,回合9和回合10)被修改。可以修改其他回合,但是为了便于说明实施例的操作而使用回合9和回合10。首先,考虑图3中所示的回合9。针对每一个Mi,认为其所有消息在最后两列中具有8个0字节。因为假设AES的变形(其中,回合9和回合10不具有InvShiftRows操作),因此根据回合9的输入状态x的最后两列x3,x4得到输出的最后两列。设X3,X4是32比特值,当回合9的输入状态x的最后两列x3,x4为X3,X4时,该32比特值导致白箱实现的在最后两列中具有8个零字节的输出。唯一地定义值X3,X4
图5示出了实现安全性补丁的白箱实现的实施例,该白箱实现是图3中所示的白箱实现的扩展。设字节z1,3和z1,4是输出状态的最后两列z的第一字节550。注意,针对z1,3和z1,4的第1个半字节的计算,描述以下扩展。首先,可以将每一个Q表Q(1) i,j,l520、522、524、526的输出扩展1个比特。这意味着Q表变成8到5比特查找表。附加比特指示xi,j是否等于Xi,j
此外,接续Q表520、522、524、526的XOR表530、532被扩展为10到5比特表,使得除了最初的XOR操作之外,Q表520、522、524、526还计算两个输入自变量的新引入比特的AND。针对最后一个XOR表534进行相同的操作,最后一个XOR表534输出字节z1,3以及指示x3=X3是否成立的比特560。相同的过程可以用于计算z1,4以及指示x4=X4是否成立的比特。作为扩展的结果,不仅计算字节z1,3和z1,4,而且还计算指示x3=X3和x4=X4是否成立的两个布尔值。
图6示出了白箱实现的实施例的回合9的计算输出字节z2,4的第2个半字节的部分。诸如上述Q箱等的Q箱620、622、624、626与XOR 630、632、634一起用于计算输出字节z2,4的第2个半字节。此外,指示x3=X3和x4=X4是否成立的两个布尔值输入查找表640。查找表640可以计算指示x3=X3和x4=X4是否成立的这两个布尔值的AND,从而导致布尔值b,其中当且仅当(x3,x4)=(X3,X4)时,b才为1。布尔值b可以用于计算z2,4的第2个半字节,其中,z是回合9的输出状态。也即是说,布尔值b用于计算z的第二列的最后一个字节,其值帮助定义消息集Mi
设y(2) i,j是用于计算z2,4的Q表620、622、624、626的输出。然后,对前两个输出y(2) 1,2和y(2) 2,2进行XOR的8到4比特XOR表630可以扩展到以b作为附加第三白变量的9到4比特XOR表。新XOR表计算 在执行另一XOR 632之后,结果可以输入到回合10的T表650。注意,如第一实施例中所解释的,最后一个回合从T表而不是Q表开始,即,它不具有invMixColumn操作。最初在图3和图4的白箱实现中,最后一个回合的T表是具有输入自变量半字节z(1) 2,4和z(2) 2,4的8到8比特查找表。在图6中,该T表650可以被修改以去除对b的依赖性。可以通过将表变换为9到8比特查找表(其将最初的T箱操作和对和000b的XOR操作进行合并,以获得适合的输入z(2) 2,4)来完成这一点。注意,可以通过如在图4中进行的一样应用编码函数来完成k-可刷新白箱实现。
如上所述,目标是得到具有以下属性的白箱实现:针对每一个集Mi,可以识别白箱实现的一部分,该部分仅针对来自Mi的消息访问但是针对任何其他消息不访问。图5和图6中的实施例的白箱实现具有该属性。在图6的经过修改的T表650中,针对来自Mi的消息访问但是针对其他消息不访问与b=1相关联(即,在当消息Mi的最后8个字节均为0时的所述实施例中)并且以i的二进制表示结尾的行。注意,在该实施例中,存在16个条目。
可以通过在消息Mi中使用更多比特将该实施例扩展到更大数量(即,k)的消息集Mi。此外,每一个消息集Mi中的消息数量可以根据用于标识所述集的比特的数量发生改变。
如果对手在不具有白箱实现的Mi特定部分的情况下对来自Mi的消息运行白箱实现,则对手仍然可以通过猜测丢失值来成功完成执行。在给出的两个实施例中,甚至在不正确猜测的情况下,这都向对手提供了正确结果的主要部分。其原因在于计算中的Mi特定部分被限制于单个输出字节a的计算,其包含其第2个半字节中的i的编码。因此,真实信息中仅1个半字节丢失。用于i的比特的数量可以被扩展以使得对手更难猜测丢失部分。针对i使用4个比特是为了便于描述。
根据本发明的实施例的方法可作为计算机实现方法实现于计算机上。针对根据本发明的方法的可执行代码可存储在计算机程序介质上。计算机程序介质的示例包括存储器设备、光存储设备、集成电路、服务器、在线软件等。从而,白箱系统可包括实现白箱计算机程序的计算机。这种系统还可包括其他硬件元件,其中包括存储设备、用于与外部系统以及在白箱系统的元件之间进行数据传输的网络接口。
在本发明的一种实施例中,计算机程序可以包括适于当计算机程序运行于计算机上时执行根据本发明的方法的所有步骤的计算机程序代码。优选地,计算机程序嵌入在非瞬时计算机可读介质上。
除了在非瞬时计算机可读介质上实现计算机程序之外,这种计算机程序还可被发送到用户或用户设备,以用于安装和使用。这可在任意通信网络(例如互联网)上实现。
此外,实现这里描述的实施例的用户设备可包括智能卡、支付卡、过境卡、访问卡和设备、移动电话、平板电脑、个人数字助理、便携式和台式计算机、机顶盒、数字视频记录、媒体流设备等。对上述实施例的使用可包括支付软件、安全访问、停车访问、过境访问和支付、银行业务、软件和数字媒体传输、安全通信、内容分发等。
此外,由于白箱密码通常是非常复杂的和/或模糊的,所以对于人们来说,写入会比较乏味。因此,具有一种用来以自动化的方式创建根据本发明的实施例的密码系统的方法是有利的。
创建根据本发明的密码系统的方法可作为计算机实现方法实现于计算机上或实现于专用硬件中或在两者的组合中。针对根据本发明的方法的可执行代码可存储在计算机程序介质上。在这种方法中,计算机程序可包括适于在计算机程序运行在计算机上时执行所述方法的所有步骤的计算机程序代码。计算机程序具体实现在非瞬时计算机可读介质上。
图7是示出了产生可以安全打补丁的白箱实现的方法的流程图。首先,方法开始(705)。然后,产生密码操作的白箱实现(710)。这可如上所述使用多种方法和实现来产生。接下来,接收标识多种消息组的信息(715)。如上所述,可以定义用于传达由白箱实现处理的信息的一组消息集M1...Mk。标识信息可以承载在输入消息m的最后一个半字节中,从而按如上所述将完整的消息空间划分为16个组。在上述另一实施例中,将整个消息集描述为包括16字节消息中最后8个字节均为0的那些消息。此外,第8个字节的最后1个半字节可以用于在整个消息集中定义16个组。也可以使用其它定义消息组的方式。然后,可以基于标识信息720来修改白箱实现,使得:当输入消息m在消息组Mi中时,白箱实现中存在仅用于处理消息m而不用于处理来自其他消息组的消息的与消息组Mi相关联的部分。
备选地,可以基于标识信息来修改白箱实现,使得:当输入消息m在输入组Mi中时,白箱实现中存在仅用于处理消息m而不用于处理来自组M0...Mi-1的消息的与消息组Mi相关联的部分。此外,消息m可以使用组M0...Mi-1.的任意部分。这允许使用新消息组Mi的补丁使用相对于组M0...Mi-1的白箱实现的新部分,并且当其是白箱实现的新打补丁的部分时,消息m可以使用组M0...Mi的先前仅由该组使用的部分。上述多种实施例提供了可以在白箱实现中实现该能力的不同方式。然后,该方法可以结束(725)。
用来实现本发明的实施例的处理器上运行的特定软件的任意组合构成特定的专用机器。
本文所使用的术语“非瞬时机器可读存储介质”将被理解为排除瞬时传播信号,但是包括所有形式的易失性和非易失性存储器。此外,本文所使用的术语“处理器”将被理解为涵盖多种设备,比如微处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)以及其它类似的处理设备。当软件实现在处理器上时,所述组合变成单个特定机器。
本领域技术人员应该理解的是,本文中的任意框图表示实现本发明的原理的说明性电路的概念视图。
虽然参考特定示例性方面详细描述了多种示例性实施例,但应该理解的是,本发明能够具有其它实施例,并且能够在多种显然的方面修改其细节。对本领域技术人员明显的是,在保持在本发明的精神和范围之内的同时,可以进行各种变形和修改。从而,前述公开、描述和附图只是说明性的,而决不用来限制本发明,本发明只由权利要求限定。

Claims (26)

1.一种在密码系统中在不改变密钥的情况下对带密钥密码操作的密码实现打补丁的方法,包括:
向所述密码实现发送来自第一消息集的消息,其中所述来自第一消息集的消息使用所述密码实现的第一部分;
决定对所述密码实现打补丁;
在决定对所述密码实现打补丁之后,向所述密码实现发送来自第二消息集的第二消息,其中所述第二消息使用所述密码实现的第二部分,所述第二部分不用于所述第一消息集中的任何消息。
2.根据权利要求1所述的方法,其中,所述来自第一消息集的消息使用所述密码实现的所述第一部分,所述第一部分不用于不在所述第一消息集中的任何消息,并且所述第二消息使用所述密码实现的所述第二部分,所述第二部分不用于不在所述第二消息集中的任何消息。
3.根据权利要求1所述的方法,其中,来自所述第二消息集的消息能够使用所述密码实现的所述第一部分中的任意部分。
4.根据权利要求1所述的方法,还包括:在决定对所述密码实现打补丁之后,使用所述密码实现的所述第二部分更新所述密码实现。
5.根据权利要求1所述的方法,还包括:在决定对所述密码实现打补丁之后,继续发送来自所述第一消息集的消息。
6.根据权利要求1所述的方法,其中,决定对所述密码实现打补丁还包括:接收关于已经复制了所述密码实现的指示。
7.根据权利要求1所述的方法,其中,决定对所述密码实现打补丁在时间段已经期满之后发生。
8.根据权利要求1所述的方法,其中,所述密码实现包括有限状态机的网络。
9.根据权利要求1所述的方法,其中,所述密码实现包括查找表的网络。
10.根据权利要求1所述的方法,其中,所述密码操作是高级加密系统AES或数据加密标准DES之一。
11.一种在密码系统中产生将输入消息映射到输出消息的带密钥密码操作的密码实现的方法,其中能够在不改变密码密钥的情况下对所述密码实现打补丁,所述方法包括:
接收指定多个消息组的信息;
基于所接收的指定所述多个消息组的信息来修改所述密码实现,以使得:
当所述密码实现接收到来自第一消息集的消息时,所述来自第一消息集的消息使用所述密码实现的第一部分;
当在决定对所述密码实现打补丁之后所述密码实现接收到来自第二消息集的第二消息时,所述第二消息使用所述密码实现的第二部分,所述第二部分不用于所述第一消息集中的任何消息。
12.根据权利要求11所述的方法,其中,所述来自第一消息集的消息使用所述密码实现的所述第一部分,所述第一部分不用于不在所述第一消息集中的任何消息,并且所述第二消息使用所述密码实现的所述第二部分,所述第二部分不用于不在所述第二消息集中的任何消息。
13.根据权利要求11所述的方法,其中,来自所述第二消息集的消息能够使用所述密码实现的所述第一部分中的任意部分。
14.根据权利要求11所述的方法,其中,所述密码实现被进一步修改为处理来自与所述密码实现的第一部分相关联的第一消息组的消息,并且所述密码实现被配置为在接收到来自与所述密码实现的所述第二部分相关联的第二消息组的消息之前接收所述密码实现的第二部分。
15.根据权利要求11所述的方法,其中,密码实现包括多个函数,并且修改所述密码实现,以使得:
第一函数的输出包括关于所述第一函数的输入与处于所述多个消息组之一中的所接收的输入消息相对应的指示;以及
基于关于所述第一函数的输入与所述多个消息组之一中的消息相对应的指示,仅使用第二函数的部分,所述部分与所接收的输入消息相关联的消息组相对应。
16.根据权利要求11所述的方法,其中,所述密码实现包括有限状态机的网络。
17.根据权利要求11所述的方法,其中,所述密码实现包括查找表的网络。
18.根据权利要求11所述的方法,其中,所述密码操作是高级加密系统AES或数据加密标准DES之一。
19.一种在密码系统中的带密钥密码操作的密码实现中将输入消息映射到输出消息的方法,其中所述密码实现能够在不改变密码密钥的情况下打补丁,所述方法包括:
由所述密码系统接收与第一消息集相关联的第一输入消息,其中所述第一消息集与所述密码实现的第一部分相关联;
由所述密码系统执行将所述第一输入消息映射到第一输出消息的带密钥密码操作,其中对所述第一输入消息执行所述映射使用所述密码实现的所述第一部分;
由所述密码系统接收与第二消息集相关联的第二输入消息,其中所述第二消息集与所述密码实现的第二部分相关联;
由所述密码系统执行将所述第二输入消息映射到第二输出消息的带密钥密码操作,其中对所述第二输入消息执行所述映射使用所述密码实现的所述第二部分,所述第二部分不用于所述第一消息集中的任何消息。
20.根据权利要求19所述的方法,其中,所述第一输入消息使用所述密码实现的所述第一部分,所述第一部分不用于不在所述第一消息集中的任何输入消息,并且所述第二输入消息使用所述密码实现的所述第二部分,所述第二部分不用于不在所述第二消息集中的任何输入消息。
21.根据权利要求19所述的方法,其中,来自所述第二消息集的输入消息能够使用所述密码实现的所述第一部分中的任意部分。
22.根据权利要求19所述的方法,还包括:在接收到所述第二输入消息之前,接收所述密码实现的第二部分。
23.根据权利要求19所述的方法,其中,
所述密码实现包括多个函数,
第一函数的输出包括关于所述第一函数的输入与处于所述第二消息组中的所接收的第二输入消息相对应的指示;以及
基于关于所述第一函数的输入与所述第二消息组中的所接收的第二输入消息相对应的指示,仅使用第二函数的与所述第二消息组相对应的部分。
24.根据权利要求19所述的方法,其中,所述密码实现包括有限状态机的网络。
25.根据权利要求19所述的方法,其中,所述密码实现包括查找表的网络。
26.根据权利要求19所述的方法,其中,所述密码操作是高级加密系统AES或数据加密标准DES之一。
CN201510207986.4A 2014-04-28 2015-04-28 无需改变密钥的安全性补丁 Active CN105024808B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/263,308 US9338145B2 (en) 2014-04-28 2014-04-28 Security patch without changing the key
US14/263,308 2014-04-28

Publications (2)

Publication Number Publication Date
CN105024808A CN105024808A (zh) 2015-11-04
CN105024808B true CN105024808B (zh) 2019-04-16

Family

ID=54335865

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510207986.4A Active CN105024808B (zh) 2014-04-28 2015-04-28 无需改变密钥的安全性补丁

Country Status (2)

Country Link
US (1) US9338145B2 (zh)
CN (1) CN105024808B (zh)

Families Citing this family (3)

* 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
DE102015014038A1 (de) * 2015-10-30 2017-05-04 Giesecke & Devrient Gmbh Alternative Darstellung des Krypto-Algorithmus DES
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7350085B2 (en) * 2000-04-12 2008-03-25 Cloakware Corporation Tamper resistant software-mass data encoding
CN101401348B (zh) * 2006-03-10 2011-08-31 耶德托公司 用于使密码函数模糊的方法和系统
CN102461058A (zh) * 2009-03-10 2012-05-16 爱迪德有限责任公司 具有输入相关编码的白盒密码系统
CN102484581A (zh) * 2009-06-19 2012-05-30 耶德托公司 使用中间数据更改的具有可配置密钥的白盒密码系统
CN101536398B (zh) * 2006-11-17 2012-11-07 耶德托公司 用于白盒实现的加密方法
CN103067333A (zh) * 2011-10-18 2013-04-24 华为终端有限公司 验证机顶盒接入身份的方法和认证服务器

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2327911A1 (en) 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
DE10319435B4 (de) 2003-04-25 2018-07-26 Whitecryption Corporation Verfahren zur Verarbeitung von Daten zum Schutz eines Softwareprogramms vor Rekonstruktion
EP2104987A2 (en) 2007-01-11 2009-09-30 Koninklijke Philips Electronics N.V. Tracing copies of an implementation
KR101744748B1 (ko) * 2011-01-05 2017-06-09 한국전자통신연구원 화이트박스 암호 테이블을 이용한 콘텐츠 보호 장치, 콘텐츠 암호화 및 복호화 장치

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7350085B2 (en) * 2000-04-12 2008-03-25 Cloakware Corporation Tamper resistant software-mass data encoding
CN101401348B (zh) * 2006-03-10 2011-08-31 耶德托公司 用于使密码函数模糊的方法和系统
CN101536398B (zh) * 2006-11-17 2012-11-07 耶德托公司 用于白盒实现的加密方法
CN102461058A (zh) * 2009-03-10 2012-05-16 爱迪德有限责任公司 具有输入相关编码的白盒密码系统
CN102484581A (zh) * 2009-06-19 2012-05-30 耶德托公司 使用中间数据更改的具有可配置密钥的白盒密码系统
CN103067333A (zh) * 2011-10-18 2013-04-24 华为终端有限公司 验证机顶盒接入身份的方法和认证服务器

Also Published As

Publication number Publication date
US20150312225A1 (en) 2015-10-29
CN105024808A (zh) 2015-11-04
US9338145B2 (en) 2016-05-10

Similar Documents

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