CN105721134A - 使用带有多个外部编码的单个白盒实现 - Google Patents
使用带有多个外部编码的单个白盒实现 Download PDFInfo
- Publication number
- CN105721134A CN105721134A CN201510943337.0A CN201510943337A CN105721134A CN 105721134 A CN105721134 A CN 105721134A CN 201510943337 A CN201510943337 A CN 201510943337A CN 105721134 A CN105721134 A CN 105721134A
- Authority
- CN
- China
- Prior art keywords
- output
- coding
- input
- input message
- password operations
- 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
- 238000000034 method Methods 0.000 claims abstract description 58
- 238000012886 linear function Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 abstract description 8
- 230000006870 function Effects 0.000 description 49
- 230000008569 process Effects 0.000 description 23
- 238000004590 computer program Methods 0.000 description 12
- 238000013478 data encryption standard Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000001447 compensatory effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000005728 strengthening 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
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- 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/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
-
- 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
-
- 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/106—Enforcing content protection by specific content processing
- G06F21/1066—Hiding content
-
- 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)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Storage Device Security (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种使用带有多个外部编码的单个白盒实现。一种通过将编码输入消息映射到输出消息的密码系统来执行密钥式密码操作的方法,包括:接收编码选择参数p;接收编码输入消息,其中对输入消息的编码与编码选择参数p相对应;使用默认输入编码的逆对输入消息进行解码;对解码输入消息计算密码操作的第一部分,以产生第一部分输出;以及基于编码选择参数p补偿第一部分输出。
Description
技术领域
本文公开的各实施例总体上涉及确保执行针对攻击的密码功能的软件组件的安全,所述密码功能包括在白盒实现中实现填充。
背景技术
互联网给用户带来了对数字内容的便捷且普及的访问。由于互联网是强大的分发通道,所以许多用户设备都力求能够直接访问互联网。用户设备可以包括个人计算机、膝上型计算机、机顶盒、互联网启用的媒体播放器、移动电话、智能手机、平板电脑、移动热点或能够访问互联网的任意其它设备。将互联网用作版权内容的分发介质在确保内容提供商的利益方面带来了极大的挑战。用户设备越发普遍地使用加载了适当软件的处理器来呈现(回放)数字内容(比如音频和/或视频)。对回放软件的控制是加强内容拥有者的利益的一种手段,其中包括可以使用所述内容的条款和条件。此前,许多用户设备是封闭系统。如今,越来越多的平台变为部分开放的。一些用户可以被假定为能够完全地控制和访问提供内容访问的硬件和软件,并拥有大量时间和资源来攻击和绕过任意内容保护机制。结果,内容提供商必须在社区的恶意网络上将内容递送给合法用户,其中所述社区中并不是所有用户或用户设备都是可信的。
可以访问安全软件应用来执行多种功能,比如用来保护和认证数字内容的密码功能。为了对抗攻击,必须对这些算法进行混淆处理(隐藏),以防止对算法进行反向工程和修改或禁止获得用户特定安全信息。从而,可以通过如实现安全软件的处理器的指令集所限定的多种功能来执行安全软件应用的功能。例如,一种用来掩盖这些功能的手段是使用查找表。
内容提供商必须在社区的恶意网络上将内容递送给合法用户,其中所述社区中并不是所有用户或用户设备都是可信的。这必然导致白箱密码学的发展。在白箱密码学场景中,假定用户具有对提供内容访问的硬件和软件的完全控制,并拥有无限的时间和资源来攻击和绕过任意内容保护机制。加强能够使用内容所需的条款和条件的安全软件代码应当是防篡改的。数字版权管理是安全软件应用的常见应用。数字版权管理中针对分发给用户设备的一般方法是使用例如DES(数据加密标准)、AES(高级加密标准)或者使用其他已知加密方案对数字内容进行加密,并且使用解密密钥来恢复数字内容。必须保护这些解密密钥,以防止对保护材料的非授权访问。
在数字版权管理场景中,攻击者具有对加强所保护内容的管理和访问的软件的完全控制。因此,攻击者可以修改并试图获得用于对保护内容进行加密的密码密钥。通过分析软件,可以获得这些密钥。
就密钥分发而言,媒体播放器必须从证书数据库获取解密密钥以回放媒体。然后,媒体播放器必须将该解密密钥存储在存储器中某处,以便对加密内容进行解密。这样,攻击者就有两个选择来攻击密钥。第一,攻击者可以对证书数据库访问功能进行反向工程,从而允许攻击者从全部证书数据库中获取资产密钥。在这种情形中,攻击者不需要理解密码功能的内部工作。第二,攻击者可以在内容解密期间观察存储器访问,从而攻击者可以获取解密密钥。在这两种情形中,密钥都被认为受到损害的。
对数字版权管理(DRM)和其它安全软件的广泛使用引起了对于寻求使得对软件的篡改更加复杂的安全、防篡改的软件的需求。存在多种用来提高软件应用的防篡改的技术。这些技术大多基于以下方面:通过在软件应用的控制和数据路径中都加入随机性和复杂性掩饰来隐藏所述应用的嵌入知识。其背后的构思在于,只通过代码检查来提取信息将更加困难。因此,找到处理安全应用的访问和许可控制的代码并进而将其改变是更加困难的。
本文所使用的白箱密码包括在攻击者已经对运行白箱密码软件的系统完全控制的环境中执行密码功能的安全软件应用。从而,攻击者可以修改输入和输出,追踪软件的操作,在任意时刻对软件所使用的存储器进行采样和监测,甚至修改软件。从而,需要通过防止公开安全功能中使用的秘密信息的方式来执行安全功能。可以通过多种方式来实现白箱密码功能。这些方法包括:掩盖(obscure)软件代码;使用掩盖对秘密信息的使用的复杂数学函数;使用查找表;使用有限状态机;或执行密码功能但隐藏这些安全功能所需的秘密信息的任何其它方法。白箱实现还可以包含包括反调试和防篡改属性的组件。
密码算法的软件实现比硬件实现更受欢迎有多种理由。比如,可以是因为在密钥泄漏的情况下软件方案是可更新的、因为其成本低、或因为应用开发者不对实现白箱系统的硬件有任何影响。
发明内容
下文给出了对多种示例性实施例的简要概述。以下概述中可以进行一些简化和省略,其是为了强调和介绍多种示例性实施例的一些方面,而不是为了限制本发明的范围。随后的内容中将对足以使得本领域技术人员能够实施和使用发明构思的示例性实施例进行详细描述。
各实施例涉及一种编码有指令的非瞬态机器可读存储介质,所述指令由将编码输入消息映射到输出消息的密码系统通过执行密钥式密码操作来执行,所述非瞬态机器可读存储介质包括:用于接收编码选择参数p的指令;用于接收编码输入消息的指令,其中对输入消息的编码与编码选择参数p相对应;用于使用默认输入编码的逆(inverse)对输入消息进行解码的指令;用于对解码输入消息计算密码操作的第一部分以产生第一部分输出的指令;以及用于基于编码选择参数p补偿第一部分输出的指令。
此外,各示例性实施例涉及一种编码有指令的非瞬态机器可读存储介质,所述指令由将输入消息映射到编码输出消息的密码系统通过执行密钥式密码操作来执行,所述非瞬态机器可读存储介质包括:用于接收编码选择参数p的指令;用于接收输入消息的指令;用于对输入消息计算密码操作的第一部分以产生第一部分输出的指令;用于基于编码选择参数p补偿第一部分输出的指令;用于对补偿后的第一部分输出执行密码操作的第二部分以产生第二部分输出的指令;以及用于使用默认输出编码对第二部分输出进行编码的指令。
此外,各示例性实施例涉及一种通过将编码输入消息映射到输出消息的密码系统来执行密钥式密码操作的方法,包括:接收编码选择参数p;接收编码输入消息,其中对输入消息的编码与编码选择参数p相对应;使用默认输入编码的逆对输入消息进行解码;对解码输入消息计算密码操作的第一部分,以产生第一部分输出;以及基于编码选择参数p,补偿第一部分输出。
此外,各示例性实施例涉及一种通过将输入消息映射到编码输出消息的密码系统来执行密钥式密码操作的方法,包括:接收编码选择参数p;接收输入消息;对输入消息计算密码操作的第一部分,以产生第一部分输出;基于编码选择参数p,补偿第一部分输出;对补偿后的第一部分输出执行密码操作的第二部分,以产生第二部分输出;以及使用默认输出编码对第二部分输出进行编码。
附图说明
为了更好地理解各种示例性实施例,对附图进行参考,其中:
图1示出了AES的一个回合的主要步骤;
图2示出了带有对回合的输入的固定编码的白箱AES实现;
图3示出了借助查找表的网络对一个输出半字节的计算;
图4示出了通过对输入和输出进行编码而混淆处理的图3的网络表的一部分;
图5示出了带有多输入编码的白箱实现的实施例;
图6示出了根据到回合9的输入的外部编码输出字节的计算;
图7示出了包括两个可能的不同外部编码的白箱实现的实施例;以及
图8示出了提供用户设备安全内容和处理该安全内容的软件应用的系统。
为了便于理解,使用相同的附图标记来指代具有基本相同或相似的结构和/或基本相同或相似的功能的元素。
具体实施方式
说明书和附图示出了本发明的原理。从而,将理解的是,本领域技术人员能够设想出实现本发明的原理并包括在其范围内的多种布置(尽管此处并未明确描述或示出)。此外,这里所述的所有示例明显主要用于教导目的,以辅助读者理解本发明的原理以及发明人为推进现有技术而贡献的构思,其被认为不限于具体描述的示例和条件。此外,本文中使用的术语“或”指代非排他性的或(即和/或),除非另作指示(例如“或其它”或“或在备选方式中”)。此外,本文所述的多种实施例不必是互斥的,一些实施例可以与一个或多个其它实施例进行组合以形成新的实施例。
密码算法的软件实现比硬件实现更受欢迎有多种理由。比如,可以是因为在密钥泄漏的情况下软件方案是可更新的、因为其成本低、或因为应用开发者对实现白箱系统的硬件没有影响力。虽然以下对实施例的描述涉及在处理器上运行的软件实现,需要注意的是,这些实施例还可以部分或完全在硬件中实现。所描述的查找表或有限状态机可以在硬件中实现,以执行所述的各种功能。
以下文献中提出了对于高级加密标准(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)等),可以将任意块密码用作流密码。
输入消息可以表示例如加密内容数据(比如,包括音频和/或视频数据的多媒体数据)。加密内容数据还可以包括加密软件,例如表示一些计算机应用(例如,计算机游戏或办公应用)的加密计算机代码。输入消息还可以表示另一个密码操作中使用的密钥,其中根据本发明的白箱实现对表示新密钥的数据进行加密和/或解密。输入数据也可以是明文数据,例如,明文用户数据。后者在消息认证方案中具有明显的优点。根据本发明的白箱实现可以具有如下属性:该实现仅用于加密,仅用于解密,但不同时用于二者。例如,如果该实现使用不是双射的查找表(例如,输入比特多于输出比特的查找表),则可以实现这一属性。因此,如果用户仅有白箱解码器,则他可以验证MAC代码,但是不可以创建新的MAC。这样就增强了该消息认证方案的拒绝(repudiation)属性。
可以使用多个基本块实施白箱实现。采用将一些块构建在一个或多个之前的块的输出上的方式,将多个基本块互连。基本块在例如计算机芯片的硬件中实现。基本块可以使用切换盘(switchboard)、状态机或者用于实现计算机硬件中的功能的任意其他合适结构。还可将基本块实现在运行于通用计算机芯片(例如微处理器)上的软件中。例如,基本块可以使用多个计算机指令,其中包括算术指令,这些指令一起实现基本块的功能。可在软件和硬件中使用的基本块的一种广泛使用的实现是查找表。例如,Chow1和Chow2采用这种方式来实现AES和DES块密码。查找表实现包括列表,该列表针对可能的输入值列出输出值。输入值在查找表中可以是显式的。在这种情况中,通过在输入值列表中搜索特定输入,查找表实现可以将特定输入映射到特定输出。当找到特定输入时,也找到了特定输出。例如,特定输出可以与特定输入存储在一起。优选地,输入值没有被显式地存储,而只是隐式地存储。例如,如果可能的输入是连续范围的编号或比特串,则查找表可被限制为存储输出值的列表。特定的输入编号可被映射到存储在由所述编号所指示的位置处的特定输出。此外,有限状态机或代码混淆可以用来实施白箱实现。
例如,可通过针对函数的可能输入计算其输出值并将所述输出存储在列表中来创建针对所述函数的查找表。如果所述函数取决于多个输入,则可针对多个输入的所有可能组合计算并存储所述输出。查找表尤其适于实现非线性函数,其不定期地将输入映射到输出。如下文所释,通过向其查找表中的一个或多个应用固定的混淆输入编码和固定的输出编码,可进一步对白箱实现进行混淆处理。从而,应用固定的混淆输入编码和输出编码的结果被完全预先评估。通过使用这一技术,查找表可被具有相同尺寸(其获取相同数量的输入比特,并产生相同数量的输出比特)的混淆查找表替代。在最终的白箱实现中,在这种混淆处理中使用的输入编码和输出编码不是显式的。
基本块的网络被布置为在被呈现了输入消息时计算输出消息。通常,通过多个基本输入块来对输入消息进行操作。多个进一步的基本输入块可从一个或多个所述基本输入块和/或从所述输入获取输入。再进一步的基本块可获取采用以下各项的任意组合形式的输入:输入消息、基本输入块的输出和所述进一步的基本块的输出。最终,基本退出块的某集合(即至少一个)产生输出消息的全部或部分,作为输出。通过这一方式,出现了基本块的网络,该网络总体地计算从输入消息到输出消息的映射。
所使用的密钥可以是密码密钥,并且可包含足够的熵来承受所预计的蛮力攻击。注意到,在白箱实现中,密钥通常并不显式地存在于所述实现中。这将冒着通过对实现进行检查来发现所述密钥的风险。通常,密钥只是隐式存在的。已知有多种方式来将密钥隐藏在密码系统中。通常,至少使用部分评估的方法,其中只要需要密钥输入的基本块不取决于输入消息,则对其进行评估。例如,可通过事先对密钥值和掩码值一起进行异或处理来部分地评估基本操作(其中输入值、掩码值(其不取决于输入消息(例如来自S箱的值))和密钥值需要进行异或处理)。通过这种方式,操作仍然取决于密钥值,但是密钥值在所述实现中并不是显式存在的。取而代之地,所述实现中只存在密钥值和掩码值之间的异或处理。注意到,隐藏所述密钥的更为复杂的方式和/或进一步的方式与本发明的实施例是兼容的。
以下示例性实施例是使用AES(高级加密标准)块密码描述的,这是因为AES已经成为块密码的广泛使用的标准。AES是块大小为128比特或16字节的块密码。明文被分成16字节的块,这些块形成加密算法的初始状态,并且加密算法的最终状态是密码文本。在加密算法的任意给定点,这些16字节是加密算法的状态。为了在概念上解释AES,所述状态的字节被组织为4×4字节的矩阵。AES包括多个回合,所述多个回合取决于密钥大小。每个回合包括对状态矩阵的字节、列或行进行操作的相似的处理步骤,每个回合在这些处理步骤中使用不同的回合密钥。在使用AES作为示例的讨论中,注意到,AES以特定的方式定义回合。在以下实施例中,回合是步骤的任意群组,所述群组包括至少一个非线性映射函数,比如AES中的S箱。从而,下文所述的回合包括一个非线性映射函数和所述密码功能的其它步骤的任意组合。此外,回合的边界可以开始于非线性映射函数(例如S箱)或者与非线性映射函数合并的任意其他操作,例如密钥添加。
图1示出了AES的一个回合的一些主要处理步骤。所述处理步骤包括:
AddRoundKey(添加回合密钥)110——所述状态的每个字节与回合密钥的字节进行异或处理;
SubBytes(替换字节)120——使用查找表进行字节到字节的置换;
ShiftRows(移位行)130——所述状态的每一行旋转固定数量的字节;以及
MixColumns(混合列)140——使用GF(28)中的模乘法来处理每一列。
步骤SubBytes120、ShiftRows130和MixColumns150独立于所使用的特定密钥。在步骤AddRoundKey110中应用密钥。除了步骤ShiftRows140,可在不知道其他列的情况下,对4x4状态矩阵的每一列执行处理步骤。因此,由于每一列由四个8比特值构成,所以它们可被认为是32比特操作。虚线150指示在已经执行了所需数量的回合之前重复所述处理。
这些步骤中的每一个或步骤的组合可由查找表或由查找表网络表示。如果AddRoundKey110步骤是通过与回合密钥进行异或处理实现的,则在白箱攻击的语境下密钥对于攻击者来讲是可见的。还可将AddRoundKey110步骤嵌入到查找表中,这使得密钥找起来不那么明显。事实上,能够使用查找表网络来替代AES的完整回合。例如,可以使用表查找来实现SubBytes120、ShiftRows130和MixColumns150步骤。下文中充分详细地讨论了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,l可被解释为“回合的输入字节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一致,最后一个回合可以包括或不包括输出编码。注意到,在所获得的白箱实现中,查找表和中间值两者都被混淆处理。
图4示出了通过对输入和输出进行编码而混淆处理的图3的网络表的一部分。查找表420、422、424、426对应于图3的查找表320、322、324、326。分别用函数E9、E10、E11、E12对查找表420、422、424、426的输入进行编码。分别用函数f1、f2、f3、f4对查找表420、422、424、426的输出进行编码。XOR430对应于XOR330。XOR430的输入使用f1 -1和f2 -1来解码输入。然后用函数f5对XOR430的输出进行编码。通过类似的方式,XOR432、434具有如图所示的输入解码和输出编码。使用f7将输出z2,3编码。
除了隐藏密钥,可以使用白箱实现来实现多个感兴趣目标。例如,如Chow等所示,其可用于将密码功能钩连(hook)到周边程序。此外,2014年3月20递交的题为“SECURITYMODULEFORSECUREFUNCTIONEXECUTINONUNTRUSTEDPLATFORM”美国专利申请No.14/220,321描述了如何可以将白箱实现用于以安全方式对数据进行内部编码。该申请基于将外部编码添加到白箱实现。也就是说,通过一些保密函数对输入和/或输出进行编码,而不使用包括与所实现的密文相关联的明文文本和密文文本的输入和输出在内的白箱实现。因为白箱实现通常较大,所以可能需要限制必须存储起来的这些实现的数量。本文描述的实施例示出了一种为单个白箱实现提供多个不同外部编码的方法。
为了为单个白箱实现实现多个外部编码,上述白箱实现可扩展为包括处理多个外部输入和/或输出编码的能力。这意味着白箱实现必须扩展为补偿外部输入编码中的差异,并且其可以根据不同外部输出编码来计算输出。此外,白箱实现可以接收指示应用于输入或者要应用于输出的编码的值。其可以通过两种不同方式来完成。第一,白箱实现可以接收附加输入参数,该附加输入参数指定应当应用的外部输入编码和/或外部输出编码。第二,编码可以由输入属性来指定,例如,在输入消息中填充可以指示特定外部输入和/或输出编码。
首先,将描述具有多输入编码的白箱实现的实施例。在示例性实施例中描述了两个不同编码,但是其可以扩展至任意数量的附加编码。
白箱实现可以接收指示可以使用两个不同输入编码中哪一个的输入参数p。两个外部输入编码可以表示为E1=(E1,1,E1,2,…,E1,16)和E2=(E2,1,E2,2,…,E2,16),其中Ep,j是根据外部输入编码Ep对第j个输入字节进行编码的双射函数。针对每个i,令外部编码Ep的第i个分量满足以下等式
其中表示与第i个输入字节有关的密钥添加操作,Ap是随机选择的双射线性函数,并且E0,i是图4所示的默认外部字节编码。如果E0,i是随机选择的并且有以下等式(2)和(3),则该等式在p=1、2时成立:
以及
带有多输入编码的白箱实现的实施例可以通过扩展图4的表网络来描述,其中为清楚起见省略了内部编码fi。这些内部编码可以在后期处理步骤中应用于所获得的扩展表网络。
图5示出了带有多输入编码的白箱实现500的实施例。白箱实现500是图4的白箱实现的扩展,其具有输入解码但不具有内部编码。令xi,j和yi,j如上文所定义。即,xi,j是在任意l的第(i,j,l)个Q箱下方的第(i,j,l)个T箱的输入,并且yi,j是该T箱的输出。从而,根据等式(1),在Qi,j,l下方的T箱Ti,j由Ap(yi,j)给出。因此,如果图4的网络不改变,则计算Ap(zi,j)来替代zi,j。也就是说,为补偿不同外部编码和输入解码移除p=1情形中的线性映射A1和p=2情形中的A2。其可以通过提供具有附加输入参数p的白箱实现并扩展表网络从而移除外部编码中的差异对中间值的影响来实现。图5示出了图4的表网络可以如何扩展,从而移除适当的线性映射。
白箱实现500包括接收编码字节的Q箱510、512、514、516。对输入字节的编码通过输入参数p来指定。Q箱510、512、514、516使用默认输入解码对输入进行解码。然后将Q箱510、512、514、516的输出馈送至包括XOR520、522、524的XOR网络以产生输出Ap(z2,3)。编码补偿器530接收输入p和Ap(z2,3),并产生z2,3作为输出。选择并应用函数Ap的逆。如上所述,白箱实现500可以复制,以处理在AES实现中接收的所有输入字节。此外,白箱实现500可以扩展为处理两个以上不同的输入编码。
输入参数p可以由白箱实现500独立接收。例如,可以使用编码E0对输入p进行编码。备选地,值p可以是输入中指定的特定比特数。可以使用例如编码E0对这些比特进行编码,或者可以不编码。编码补偿器530可以提取和使用指定p的比特。
现在描述使用多个编码输出的白箱实现的第二实施例。第二实施例将示出两个不同外部输出编码的使用。第二实施例和第一实施例类似。
在第一实施例中,起始点是图4中讨论的、描述第一回合的单个输出半字节的计算的白箱实现。仍然省略内部编码。这些内部编码可以应用于后期处理步骤中。
因为AES中的回合1-9具有相同的回合函数,所以针对这些回合的白箱实现看起来与图4的表网络相似。仅仅是回合1开始处的外部解码被之后的回合的内部编码所替换。最后一个回合函数不同。在回合10中,AES包括以下操作:AddRoundKey、SubBytes、ShiftRows以及AddRoundKey。因此,用AddRoundKey替换了MixColumns操作。如果ShiftRows被忽略(因为仅仅是对索引的重新编号),则最后舍入可以通过以下方式用16字节到字节(byte-to-byte)的表来实现。针对该状态的每个字节xi,j,通过来定义字节到字节的函数Ti,j。此外,令e0=(e0,1,e0,2,…,e0,16)是默认外部字节编码。从而,白箱实现的最后回合通过实现函数e0,i,jοTi,j的16字节到字节查找表来定义。图6示出了根据到回合9的输入计算外部编码输出字节(因此,其示出了回合9和10)。
图6中,回合9的Q箱610、612、614、616接收输入字节并产生输出字节。通过包括XOR620、622、624的XOR网络将来自Q箱610、612、614、616的输出字节组合,以产生输出z2,3。输出z2,3可以输入到回合10的T箱640。回合10的T箱640应用默认外部编码e0。图6的白箱实现可以扩展为图7所示的实施例。
图7示出了包括两个可能不同外部编码的白箱实现的实施例。两个外部输出编码可以是e1=(e1,1,e1,2,…,e1,16)和e2=(e2,1,e2,2,…,e2,16)。针对每个i,令外部编码ep的第i个分量满足以下等式:
其中,Ap仍然是随机选择双射线性函数。如果e1是随机选择的,则如果有以下(5)和(6),该等式在p=1,2时成立:
以及
令zi,j表示回合9的输出字节(i,j),并且令ci,j是不具有对其应用的外部编码的、回合10的第(i,j)个输出字节,即所实现的密文的回合10的第(i,j)个输出字节。根据等式(4)可知,如果具有默认外部编码E0的回合10中的所有T箱Ti,j设置有Ap(zi,j)而不是zi,j,则使用作为目标的外部编码ep对输出字节ci,j进行编码。
图7的白箱实现700在图6的白箱实现600中添加编码补偿器730。编码补偿器730接收p和z2,3作为输入,并产生输出Ap(z2,3)。这时,T箱640接收Ap(z2,3)作为输入,并产生通过ep而非e0来编码的输出字节ci,j。
可以用上述参照第一实施例描述的相同方式来接收值p。此外,可以将第一和第二实施例包括在单个白箱实现中,以提供基于p的多输入和输出。此外,第二实施例可以扩展为包括多于2个的不同编码。
根据本发明的实施例的方法可作为计算机实现方法实现于计算机上。针对根据本发明的方法的可执行代码可存储在计算机程序介质上。计算机程序介质的示例包括存储器设备、光存储设备、集成电路、服务器、在线软件等。从而,白箱系统可包括实现白箱计算机程序的计算机。这种系统还可包括其他硬件元件,其中包括存储设备、用于与外部系统以及在白箱系统的元件之间进行数据传输的网络接口。
在本发明的一种实施例中,计算机程序可以包括适于当计算机程序运行于计算机上时执行根据本发明的方法的所有步骤的计算机程序代码。优选地,计算机程序嵌入在非瞬时计算机可读介质上。
此外,由于白箱密码通常是非常复杂的和/或混淆的,所以由人来写入过于冗繁。因此,具有一种用来以自动化的方式创建根据本发明的实施例的密码系统的方法是有利的。
创建根据本发明的密码系统的方法可作为计算机实现方法实现于计算机上或实现于专用硬件中或在两者的组合中。针对根据本发明的方法的可执行代码可存储在计算机程序介质上。在这种方法中,计算机程序可包括适于在计算机程序运行在计算机上时执行所述方法的所有步骤的计算机程序代码。计算机程序具体实现在非瞬时计算机可读介质上。
本文所述的密码系统可实现在用户设备上,例如移动电话、平板电脑、计算机、机顶盒、智能电视等。内容提供商(例如,电视网络、视频流服务、金融机构、音乐流服务等)可向用户设备提供软件,以便从内容提供商接收加密内容。该软件中可以嵌入如上所述的加密密钥,并且还可包括如上所述的绑定串。然后,内容提供商可向用户设备发送加密内容,然后用户设备可使用所提供的软件进行解密并使用内容。
图8示出了提供用户设备安全内容和处理该安全内容的软件应用的系统。系统包括内容服务器800,应用服务器880、用户设备850、852,以及数据网络840。用户设备850、852可以经由数据网络840请求对内容服务器800提供的安全内容的访问。数据网络可以是提供用户设备850、853、内容服务器800以及应用服务器880之间的连接的任意数据网络。用户设备850、852可以是多个设备中的一个,例如机顶盒、媒体流传输器、数字视频记录器、平板、移动电话、膝上型计算机、便携式媒体设备、智能手表、桌面计算机、媒体服务器等。
针对访问的用户请求可以先获取可用于处理内容服务器800提供的安全内容的软件应用的下载。使用上文描述的技术并且如上文操作,可以混淆软件应用。一旦用户设备850、852安装软件应用,则用户设备可以从内容服务器800下载安全内容,并使用下载的软件应用来访问安全内容。例如,下载的软件应用可以对从内容服务器接收的加密内容进行解密。在其他实施例中,软件应用可以执行其他安全操作,例如,加密、数字签名生成和验证等。
内容服务器800可以控制对提供给用户设备850、852的安全内容的访问。因此,当内容服务器800接收针对安全内容的请求时,内容服务器200可以向请求用户设备发送安全内容。类似地,应用服务器820可以控制向用户设备850、852提供的软件应用的访问。因此,当应用服务器820接收针对软件应用的请求时,应用服务器820可以向请求用户设备发送软件应用。在用户设备提供软件应用或安全内容前,各服务器还可以认证请求软件应用或安全内容的用户设备。
内容服务器800可以包括经由一个或多个系统总线808互连的处理器802、存储器804、用户接口806、网络接口810、以及内容储存器812。将要理解的是,图2包括一定程度的抽象并且设备800的组件的实际组织可以比所示出的更为复杂。
处理器802可以是能够执行存储在存储器804或储存器812中的指令的任何硬件设备。因此,处理器可以包括微处理器、现场可编程门阵列(FPGA)、应用专用集成电路(ASIC)、或者其他类似设备。
存储器804可以包括各种内容,例如L1、L2、L3缓存或系统存储器。因此,存储器802可以包括静态随机访问存储器(SRAM)、动态RAM(DRAM)、闪存、只读存储器(ROM)、或者其他类似存储设备。
用户接口806可以包括用于实现与诸如管理员的用户的通信的一个或多个设备。例如,用户接口806可以包括显示器、鼠标、以及用于接收用户命令的键盘。
网络接口210可以包括用于实现与其他硬件设备的通信的一个或多个设备。例如,网络接口210可以包括配置成根据以太网协议进行通信的网络接口卡(NIC)。此外,网络接口810可以实现用于根据TCP/IP协议的通信的TCP/IP栈。网络接口810的各种备选或附加的硬件或配置将是显而易见的。
内容储存812可以包括一个或多个机器可读内容存储介质,例如,只读存储器(ROM)、随机访问存储器(RAM)、磁盘存储介质、光存储介质、闪存设备、或类似存储介质。在各实施例中,内容存储器812可以存储要提供给用户的内容。
应用服务器820包括与内容服务器800中的元件相似的元件,并且对内容服务器800中的相似元件的描述适用于应用服务器820。此外,应用储存器832替换内容储存器812。此外,应该注意的是,内容服务器和应用服务器可以在单个服务器上实现。而且,这样的服务器可以实现在分布式计算机系统以及云的计算机系统上。
用来实现本发明的实施例的处理器上运行的特定软件的任意组合构成特定的专用机器。
本文所使用的术语“非瞬时机器可读存储介质”将被理解为排除瞬时传播信号,但是包括所有形式的易失性和非易失性存储器。此外,本文所使用的术语“处理器”将被理解为涵盖多种设备,比如微处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)以及其它类似的处理设备。当软件实现在处理器上时,所述组合变成单个特定机器。
本领域技术人员应该理解的是,本文中的任意框图表示实现本发明的原理的说明性电路的概念视图。
虽然参考特定示例性方面详细描述了多种示例性实施例,但应该理解的是,本发明能够具有其它实施例,并且能够在多种显然的方面修改其细节。对本领域技术人员明显的是,在保持在本发明的精神和范围之内的同时,可以进行各种变形和修改。从而,前述公开、描述和附图只是说明性的,而决不用来限制本发明,本发明只由权利要求限定。
Claims (14)
1.一种通过将编码输入消息映射到输出消息的密码系统来执行密钥式密码操作的方法,包括:
接收编码选择参数p;
接收编码输入消息,其中对输入消息的编码与编码选择参数p相对应;
使用默认输入编码的逆对输入消息进行解码;
对解码输入消息计算密码操作的第一部分,以产生第一部分输出;以及
基于编码选择参数p来补偿第一部分输出。
2.根据权利要求1所述的方法,其中,编码参数p是作为编码输入消息的一部分接收的。
3.根据权利要求1所述的方法,其中,第一部分输出是通过基于Ap的函数来编码的,并且补偿第一部分输出包括应用基于Ap的函数的逆。
4.根据权利要求3所述的方法,其中,Ep是对输入消息的编码,其中E0是与默认解码相对应的编码,其中函数Ap是随机选择的线性函数,其中E1是随机选择的编码,并且其中满足以下条件:
以及
5.根据权利要求1所述的方法,其中,所述密码操作是AES加密操作。
6.根据权利要求1所述的方法,其中,查找表实现密钥式密码操作。
7.根据权利要求1所述的方法,其中,有限状态机实现密钥式密码操作。
8.一种通过将输入消息映射到编码输出消息的密码系统来执行密钥式密码操作的方法,包括:
接收编码选择参数p;
接收输入消息;
对输入消息计算密码操作的第一部分,以产生第一部分输出;
基于编码选择参数p,补偿第一部分输出;
对补偿后的第一部分输出执行密码操作的第二部分,以产生第二部分输出;以及
使用默认输出编码对第二部分输出进行编码。
9.根据权利要求8所述的方法,其中,编码参数p是作为输入消息的一部分接收的。
10.根据权利要求9所述的方法,其中,补偿第一部分输出包括应用函数Ap。
11.根据权利要求10所述的方法,其中,ep是对输出消息的编码,e0是与默认解码相对应的编码,其中Ap函数是随机选择的线性函数,其中e1是随机选择的编码,并且其中满足以下条件:
以及
其中,是在倒数第二回合中应用密钥,并且是在最后一回合中应用密钥。
12.根据权利要求8所述的方法,其中,所述密码操作是AES密码操作。
13.根据权利要求8所述的方法,其中,查找表实现密钥式密码操作。
14.根据权利要求8所述的方法,其中,有限状态机实现密钥式密码操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/575,972 | 2014-12-18 | ||
US14/575,972 US9639674B2 (en) | 2014-12-18 | 2014-12-18 | Using single white-box implementation with multiple external encodings |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105721134A true CN105721134A (zh) | 2016-06-29 |
CN105721134B CN105721134B (zh) | 2019-07-23 |
Family
ID=54770893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510943337.0A Active CN105721134B (zh) | 2014-12-18 | 2015-12-16 | 使用带有多个外部编码的单个白盒实现 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9639674B2 (zh) |
EP (1) | EP3035584B1 (zh) |
CN (1) | CN105721134B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111656733A (zh) * | 2017-12-28 | 2020-09-11 | 皇家飞利浦有限公司 | 密钥消息验证码的白盒计算 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016112338A1 (en) * | 2015-01-08 | 2016-07-14 | Intertrust Technologies Corporation | Cryptographic systems and methods |
KR102311340B1 (ko) * | 2015-01-15 | 2021-10-15 | 한국전자통신연구원 | 암호화 장치 및 방법 |
US10567159B2 (en) | 2017-06-07 | 2020-02-18 | Nxp B.V. | CMAC computation using white-box implementations with external encodings |
FR3112643B1 (fr) * | 2020-07-15 | 2024-05-03 | Banks And Acquirers Int Holding | Dispositif, méthode et programme pour une communication sécurisée entre boîtes blanches |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050259814A1 (en) * | 2004-05-24 | 2005-11-24 | Gebotys Catherine H | Table masking for resistance to power analysis attacks |
CN101536398A (zh) * | 2006-11-17 | 2009-09-16 | 皇家飞利浦电子股份有限公司 | 用于白盒实现的加密方法 |
US20120002807A1 (en) * | 2009-03-10 | 2012-01-05 | Irdeto Coporate B.V. | White-box cryptographic system with input dependent encodings |
CN102484581A (zh) * | 2009-06-19 | 2012-05-30 | 耶德托公司 | 使用中间数据更改的具有可配置密钥的白盒密码系统 |
US20120163582A1 (en) * | 2010-12-23 | 2012-06-28 | Electronics And Telecommunications Research Institute | Data encoding and decoding apparatus and method thereof for verifying data integrity |
CN103081398A (zh) * | 2010-03-31 | 2013-05-01 | 埃德图加拿大公司 | 用于保护密码资产免受白盒攻击的系统和方法 |
Family Cites Families (7)
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 |
WO2009034504A2 (en) * | 2007-09-13 | 2009-03-19 | Koninklijke Philips Electronics N.V. | Cryptographic processing of content |
US8175265B2 (en) * | 2008-09-02 | 2012-05-08 | Apple Inc. | Systems and methods for implementing block cipher algorithms on attacker-controlled systems |
US8966285B2 (en) * | 2011-01-10 | 2015-02-24 | Apple Inc. | Securing implementation of a cryptographic process having fixed or dynamic keys |
KR20150090438A (ko) * | 2014-01-29 | 2015-08-06 | 한국전자통신연구원 | 화이트박스 암호 장치 및 그 방법 |
EP2960891B1 (en) | 2014-06-24 | 2019-01-16 | Nxp B.V. | Method for introducing dependence of white-box implementationon a set of strings |
US9569639B2 (en) | 2014-09-12 | 2017-02-14 | Nxp B.V. | Remapping constant points in a white-box implementation |
-
2014
- 2014-12-18 US US14/575,972 patent/US9639674B2/en active Active
-
2015
- 2015-11-30 EP EP15197079.5A patent/EP3035584B1/en active Active
- 2015-12-16 CN CN201510943337.0A patent/CN105721134B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050259814A1 (en) * | 2004-05-24 | 2005-11-24 | Gebotys Catherine H | Table masking for resistance to power analysis attacks |
CN101536398A (zh) * | 2006-11-17 | 2009-09-16 | 皇家飞利浦电子股份有限公司 | 用于白盒实现的加密方法 |
US20120002807A1 (en) * | 2009-03-10 | 2012-01-05 | Irdeto Coporate B.V. | White-box cryptographic system with input dependent encodings |
CN102461058A (zh) * | 2009-03-10 | 2012-05-16 | 爱迪德有限责任公司 | 具有输入相关编码的白盒密码系统 |
CN102484581A (zh) * | 2009-06-19 | 2012-05-30 | 耶德托公司 | 使用中间数据更改的具有可配置密钥的白盒密码系统 |
CN103081398A (zh) * | 2010-03-31 | 2013-05-01 | 埃德图加拿大公司 | 用于保护密码资产免受白盒攻击的系统和方法 |
US20120163582A1 (en) * | 2010-12-23 | 2012-06-28 | Electronics And Telecommunications Research Institute | Data encoding and decoding apparatus and method thereof for verifying data integrity |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111656733A (zh) * | 2017-12-28 | 2020-09-11 | 皇家飞利浦有限公司 | 密钥消息验证码的白盒计算 |
Also Published As
Publication number | Publication date |
---|---|
CN105721134B (zh) | 2019-07-23 |
US20160180066A1 (en) | 2016-06-23 |
EP3035584B1 (en) | 2021-05-19 |
US9639674B2 (en) | 2017-05-02 |
EP3035584A1 (en) | 2016-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105187364B (zh) | 保护白盒实现方案不受攻击 | |
US9602273B2 (en) | Implementing key scheduling for white-box DES implementation | |
EP3174238A1 (en) | Protecting white-box feistel network implementation against fault attack | |
US20150270950A1 (en) | Splitting s-boxes in a white-box implementation to resist attacks | |
EP3169017B1 (en) | Split-and-merge approach to protect against dfa attacks | |
CN105184115B (zh) | 用于将隐式完整性或可信性检查包括到白箱实现中的方法 | |
CN105095695B (zh) | 经由白箱实现的不正确功能行为实现授权 | |
CN105024803A (zh) | 白箱实现中的行为指纹 | |
CN105024992B (zh) | 在单个白箱实现中实现使用相关安全性设置 | |
CN105721134A (zh) | 使用带有多个外部编码的单个白盒实现 | |
CN106888081A (zh) | 白盒实施方案内中间值的宽编码 | |
CN107273724B (zh) | 为白盒实施方案的输入和输出加水印 | |
CN105022937B (zh) | 用于将白箱实现紧附到周围程序的接口兼容方法 | |
CN105978680B (zh) | 一种加密钥的加密运算方法 | |
EP2960891B1 (en) | Method for introducing dependence of white-box implementationon a set of strings | |
CN105281893B (zh) | 用于引入白箱实现对串集合的依赖性的方法 | |
EP3413509B1 (en) | Cmac computation using white-box implementations with external encodings | |
CN105024808A (zh) | 无需改变密钥的安全性补丁 | |
EP2940925B1 (en) | Implementing use-dependent security settings in a single 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 |