CN102461058A - 具有输入相关编码的白盒密码系统 - Google Patents

具有输入相关编码的白盒密码系统 Download PDF

Info

Publication number
CN102461058A
CN102461058A CN2010800143147A CN201080014314A CN102461058A CN 102461058 A CN102461058 A CN 102461058A CN 2010800143147 A CN2010800143147 A CN 2010800143147A CN 201080014314 A CN201080014314 A CN 201080014314A CN 102461058 A CN102461058 A CN 102461058A
Authority
CN
China
Prior art keywords
scheme
coding
recompile
output
basic
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
Application number
CN2010800143147A
Other languages
English (en)
Other versions
CN102461058B (zh
Inventor
W·P·A·J·米彻尔斯
P·M·H·M·A·高芮森
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.)
Ai Dide Technology Co., Ltd.
Original Assignee
Irdeto 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 Irdeto BV filed Critical Irdeto BV
Publication of CN102461058A publication Critical patent/CN102461058A/zh
Application granted granted Critical
Publication of CN102461058B publication Critical patent/CN102461058B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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

Abstract

提供了一种白盒密码系统,其中使用输入相关编码表示它的内部值中的至少一个。该系统包括被布置为共同执行密码操作的多个基本块的网络。编码器被布置为根据多种编码方案中的一种选择的编码方案把所述多个基本块中的第一基本块的输出数据编码为编码器输出,所述选择取决于该系统的输入消息。补偿器被布置为对中间数据重新编码以根据多种重新编码方案中的一种选择的重新编码方案补偿所述编码的影响。替代于固定编码使用可变编码使白盒密码系统的反向工程变得复杂。

Description

具有输入相关编码的白盒密码系统
技术领域
本发明涉及一种用于执行把输入消息映射到输出消息的带密钥密码操作(keyed cryptographic operation)的密码系统,该系统包括代表所述密钥的多个基本块的网络,至少一些基本块用于把输入数据映射到输出数据,所述多个基本块用于共同执行密码操作。
背景技术
互联网为用户提供了对数字内容的方便且无处不在的访问。由于互联网作为强大的分发通道的潜力,许多消费电子(CE)产品努力直接访问互联网或者与PC平台(通往互联网的主要入口)互操作。CE产品包括但不限于数字机顶盒、数字TV、游戏控制台、PC和日益增多的手持装置,诸如PDA、移动电话以及移动存储和渲染装置(例如,Apple的iPod)。使用互联网作为版权内容的分发介质对保护内容提供商的利益提出了很大的挑战。特别地,需要保证内容提供商的版权和商业模式。越来越多地使用载入了合适软件的处理器来操作CE平台。这种软件可包括用于数字内容(诸如,音频和/或视频)的渲染(回放)的功能的主要部分。回放软件的控制是用于加强内容所有者的利益的一种方式,包括可以使用内容的条款。在传统上许多CE平台(除了PC和PDA之外)习惯于封闭的情况下,当今越来越多的平台至少部分地是开放的。特别地,对于PC平台,可认为一些用户完全控制了提供对内容的访问的硬件和软件以及具有大量时间和资源来攻击和绕过任何内容保护机制。结果,内容提供商必须经过恶意网络把针对合法用户的内容传送给并非所有用户或装置能够被信任的群体。
典型地,数字权利管理系统使用基于使用一系列加密/解密步骤(称为回合)按照块处理数据流的块密码的加密技术。在每个回合中,执行回合专用函数。回合专用函数可基于在回合专用子密钥的控制下执行的相同的回合函数。对于许多加密系统,能够使用映射表或查找表指定回合函数。即使回合函数的规范明确地包括表的使用,但表频繁地用于函数的不同部分的实现从而实现加密/解密函数的软件中的高效执行。计算机代码访问表值或者把表值组合成函数的范围值。替代于分发可能为用户专用的密钥,分发用户专用算法而非用于加密或解密算法的密钥变得更为有趣。这些算法(常常为函数(映射))必须被混淆(隐藏)以防止重新设计或者阻止像密钥的元素的重新计算。在计算机上,带有一些计算机代码的表常代表这些函数。
内容提供商必须经恶意网络把针对合法用户的内容传送给并非所有用户或装置能够被信任的群体。特别地,对于PC平台,假定用户必须完全控制提供对内容的访问的硬件和软件并具有无限量的时间和资源以攻击并绕过任何内容保护机制。执行可使用内容的条款的软件代码必须不被篡改。用于分发给PC的保护内容的数字权利管理的一般方法是对数字内容加密,例如DES(数据加密标准)、AES(高级加密标准),或使用WO9967918中公开的方法以及使用解密密钥。
依赖于加密数字权利管理的两个主要弱点在于执行可使用内容的条款的软件插件以及密钥分发和处理。
典型地,该插件执行要使用内容所基于的条款。意图去除这些条款的攻击者可能通过篡改软件插件中包括的程序代码来实现这一点。
关于密钥处理,为了回放,媒体播放器必须从许可数据库找回解密密钥。它随后必须把这个解密密钥存储在存储器中的某处位置以用于加密内容的解密。这为攻击者留下了攻击密钥的两种选择。第一,许可数据库访问函数的反向工程能够导致黑盒软件(即,攻击者不必理解软件功能的内部工作),从而允许攻击者从所有许可数据库找回资产密钥。第二,通过内容解密期间对存储器的访问的观测,可以找回资产密钥。在这两种情况下,密钥都被视为泄露。在下面,提供关于通常如何可使软件防篡改的描述。
之所以称为防篡改软件是因为针对软件的目标导向的篡改很复杂。存在多种用于增加软件应用的防篡改性的技术。这些技术中的大多数基于通过在软件应用的控制和数据路径中都加入一定的随机性和复杂性而隐藏应用的嵌入知识。其后的思想是:仅通过代码检查来提取信息变得更加困难。因此更加难以找到例如处理应用的访问和许可控制的代码,因此也更加难以改变它。
在Selected Areas in Cryptography:9th Annual InternationalWorkshop(SAC 2002,St.John’s,Newfoundland,Canada,August15-16,2002)中由Stanley Chow,Philip Eisen,Harold Johnson和Paul C.Van Oorschot所著的“White-Box Cryptography and an AESImplementation”(以下称为“Chow 1”)和在Digital RightsManagement:ACM CCS-9 Workshop(DRM 2002,Washington,DC,USA,November 18,2002)中由Stanley Chow,Phil Eisen,HaroldJohnson和Paul C.Van Oorschot所著的“A White-Box DESImplementation for DRM Applications”(以下称为“Chow 2”)公开了:意图通过利用随机双射对它的表进行编码和通过把密码边界进一步外推到包含应用中来扩展密码边界的组合,来隐藏密钥的方法。
发明内容
然而,在Proceedings of the 15th Annual Workshop on SelectedAreas in Cryptography(SAC 2008)(Sackville,New Brunswick,Canada,2008)中由W.Michiel,P.Gorissen和H.D.L.Hollmann)所著的“Cryptanalysis of Generic Class of White-BoxImplementations”(以下称为“Michiels 1”)中指出了Chow的方法的弱点。这个弱点可能被攻击者利用并且在最坏的情况下可能导致泄露在白盒实现中隐藏的密钥。
由Michiels等人进行的密钥观测为:根据Chow的白盒实现中的各回合的个体输入字与普通非白盒实现中的对应输入字具有特定关系。在不参考除所述个体输入值之外的其它输入值的情况下能够表达这种关系。虽然这种关系是密钥相关的并且对于攻击者而言是未知的,但根据以上提及的论文中进行的进一步解释,这个特征提供了足以在大幅简化对白盒的破坏的结构。
有益地,应该实现一种用于执行把输入消息映射到输出消息的密码操作的改进密码系统。为了更好地解决这个问题,在本发明的第一方面,提出了一种用于执行把输入消息映射到输出消息的带密钥密码操作的密码系统。该密码系统包括代表所述密钥的多个基本块的网络,至少一些基本块被布置为把输入值映射到输出值,所述多个基本块被布置为共同执行密码操作。该网络包括:编码器,用于根据多种编码方案中选择的一种编码方案把所述多个基本块中的第一基本块的输出数据编码为编码器输出,该编码器被布置为根据取决于输入消息的选择值在所述多种编码方案中选择所选择的编码方案,所述多个基本块中的第二基本块被配置为通过所述网络接收它的根据所选择的编码方案编码并且依赖于所述编码器输出的输入;和补偿器,用于根据多种重新编码方案中选择的一种重新编码方案对取决于第二基本块的输出值的中间值重新编码以补偿所述编码的影响,该补偿器被布置为根据所述选择值在所述多种重新编码方案中选择所选择的重新编码方案。
更一般地讲,根据输入相关的编码方案对第一块的输出数据编码。补偿器稍后对该编码进行调整。
如该密钥观测中所指出的,Chow的构造易受攻击的一个原因在于存在于白盒实现中的各回合的个体输入值和普通非白盒实现中的个体输入值之间的固定关系。在本发明中,引入并非根据某一固定编码方案对值进行编码而是利用在多种编码之中选择的编码对值进行编码的编码器。这个特征打破了这种固定关系。编码器输出不再与密码操作的非白盒实现中的某一个体输入值具有固定关系。虽然将会存在某一关系,但它将会不仅取决于个体输入值还取决于其它输入值。这种复杂性足以挫败Michiels 1中提出的攻击。
通过打破值的固定编码,密码系统的反向工程变得更难,因为反向工程师更加难以把根据本发明的密码系统的工作与密码操作的非白盒版本的工作进行比较。
应该注意的是,“第一基本块”中的术语“第一”用于区分第一基本块与其它基本块。第一基本块不必为接收输入消息的基本块。
如上所述,对于许多密码操作,希望具有白盒实现。本发明可应用于例如对称和非对称密码操作。此外,本发明可应用于块密码、流密码、消息认证方案、签名方案等。需要注意的是,本发明还可应用于散列函数。后者在散列函数用作处理秘密信息(例如,密钥、秘密数据等)的构成块的情况下尤其有用。例如,本发明可应用于在带密钥散列消息认证码(HMAC或KHMAC)中使用的散列函数。公知的块密码包括:高级加密标准(AES)、安全和快速加密例程(SAFER和变型SAFER+及SAFER++)、Blowfish、数据加密标准(DES)等。公知的流密码是RC4。此外,任何块密码能够用作使用合适的操作模式(例如,密码反馈(CFB)、计数器模式(CTR)等)的流密码。
输入消息能够代表例如加密内容数据,诸如包括音频和/或视频数据的多媒体数据。加密内容数据也可以包括加密的软件,例如代表某一计算机应用(例如计算机游戏或办公室应用)的加密的计算机代码。输入消息也可以代表用于进一步密码操作的密钥。后者可用于例如密钥交换协议中,其中根据本发明的白盒实现对代表新密钥的数据进行加密和/或解密。输入数据也可以是明文数据,例如明文用户数据。后者在消息认证方案中尤其有益。根据本发明的白盒实现可具有这样的性质:该实现可仅用于加密、仅用于解密,而非既用于加密又用于解密。例如,如果该实现使用并非双射的查找表(例如,具有比输出位多的输入位的查找表),则能够实现这个性质。因此,如果用户仅具有白盒解密器,则他可以验证MAC码,但不能创建新的MAC。这加强了这种消息认证方案的不可抵赖性。
在所述多个基本块中的一些块建立在一个或多个在前块的输出上的意义上,所述多个基本块互相连接。基本块可实现为硬件,例如实现为计算机芯片。基本块可使用配电板、状态机或用于实现计算机硬件中的功能的任何其它合适的构造。基本块也可以实现为在通用计算机芯片(例如,微处理器)上运行的软件。例如,基本块可使用包括算术指令的多个计算机指令,所述多个计算机指令一起实现基本块的功能。可既用于软件又用于硬件的基本块的优选实现是查找表。查找表实现包括对于可能的输入值列出输出值的列表。在查找表中,输入值可以是显性的。在这种情况下,查找表实现能够通过在用于特定输入的输入值的列表中进行搜索把特定输入映射到特定输出。当找到特定输入时,那么也找到了特定输出。例如,特定输出可以与特定输入一起存储。优选地,输入值不是显性地存储而只是隐性地存储。例如,如果可能的输入例如是连续范围的数字或位串,则查找表可局限于存储输出值的列表。特定输入数字可例如映射到存储在由该数字指示的位置的特定输出。
例如,通过针对函数的可能的输入计算函数的输出值并把输出存储在列表中,可创建用于该函数的查找表。如果该函数依赖于多个输入,则可针对多个输入的所有可能组合计算输出并存储输出。查找表尤其适合实现以不规则方式把输入映射到输出的非线性函数。如以下所解释,通过把固定混淆输入编码和固定输出编码应用于白盒实现的一个或多个查找表能够进一步使白盒实现混淆。然后充分预评估应用固定混淆输入编码和输出编码的结果。使用这种技术,查找表将会由具有相同尺寸(即,它采用相同数量的输入位并产生相同数量的输出位)的混淆的查找表替代。在这种混淆中使用的输入编码和输出编码在最终白盒实现中不是显性的。在本发明中实现更好的混淆,该混淆引入并非固定而是取决于选择值的编码。应该注意的是,本文描述的可变编码能够有益地与传统的混淆技术组合,因为它们一起进一步使密码操作的内部工作模糊。
基本块的网络在它们被提供了输入消息时计算输出消息。典型地,由多个基本输入块操作该输入消息。多个另外的基本块可从一个或多个基本输入块和/或从该输入获取输入。再另外的基本块能够按照输入消息、基本输入块的输出和所述另外的基本块的输出的任何组合获得输入。最终,某一集合的基本输出块(即,至少一个基本输出块)产生输出消息的全部或一部分作为输出。以这种方式,共同计算从输入消息到输出消息的映射的基本块的网络形成。
使用的密钥优选地是密码密钥,并优选地包含足够的熵以承受预期的强力攻击。应该注意的是,在白盒实现中,密钥优选地并不显性地存在于该实现中。这将会使密钥遭受通过该实现的检查而被发现的风险。优选地,密钥仅隐性地存在。已知多种在密码系统中隐藏密钥的方式。优选地,至少使用部分评估的方法,其中在需要密钥输入的基本块不依赖于输入消息的情况下评估该基本块。例如,其中输入值、不依赖于输入消息的屏蔽值(例如,来自s盒的值)和密钥值需要被xor的基本操作能够通过预先对密钥值和屏蔽值一起进行xor从而被部分地评估。以这种方式,虽然密钥值不显性地存在于实现中,但该操作仍然依赖于密钥值。相反,仅密钥值和屏蔽值之间的xor存在于该实现中。需要注意的是,隐藏密钥的更复杂的方式和/或另外的方式与本发明兼容。
多种编码方案可用于本发明。编码方案给出代表数据值的新方式。编码方案是单射的。优选地,编码也是双射的,但这不是必需的。
可以以多种方式计算选择值,例如,可使用合适的硬件或软件从输入消息计算选择值,也可以根据该实现中的其它值例如从查找表中的一个或多个密钥相关值计算选择值。
第二基本块被布置为接收数据,但该数据被利用选择的编码进行了编码。在编码之后,该数据以编码形式在网络中前进。优选地,第二基本块不需要基于选择值调整。也就是说,第二基本块可针对选择值的每个值执行输入值到输出值的相同映射。可选地,第二基本块在基本上没有对编码数据的中间操作的情况下直接对编码器的输出执行操作。然而,也可以存在中间操作。特别地,在第二基本块之前可执行遵守选择的编码方案的操作。虽然遵守编码方案的操作仅接收编码的输入值,但它仍产生与输入值对应的正确输出值;然而,该输出值也被利用该编码方案编码。
例如,编码方案可独立地但以相同的方式作用于编码器输入的等划分部分中的不同部分。排列该划分的一部分的随后排列遵守该编码。例如,通过彼此独立地对第一和第二半字节编码可对一个字节进行编码,这两个半字节都具有某一特定半字节编码操作。第一和第二半字节的随后的调换(swap)遵守这种编码。
编码器可直接对它的输入值操作,例如可直接对与相同密码操作的非白盒实现中的值对应的输入值操作。另一方面,可使用某一混淆,例如某一类型的编码可用于编码器的输入值(即,第一基本块的输出值)。用于第一基本块的输出值的编码也可依赖于其它值,例如依赖于选择值。
例如,所述第一块(即,所述多个基本块中的所述第一基本块)可产生输出值x+v。编码器采用选择值v和输出值x+v作为输入。从这两个输入,编码器能够产生根据多种编码方案中的第v′编码方案编码的x。需要注意的是,可以以各种方式对输出值“x”编码和/或使输出值“x”混淆。例如,第一基本块可包括产生值“x1”和“x2”的两个查找表。编码器能够重构“x”例如作为“x1”和“x2”的串连。作为另一例子:令+ο是普通算术加法,即它不是XOR加法,第一基本块中的第一实体可产生第一值x+οv并且第一基本块中的第二实体可产生第二值2x+οv。从这两个值,编码器能够重构“x”(例如,作为第二值和第一值的算术减法)和“v”(例如,作为第一值的两倍和第二值的算术减法)。
如果x对应于针对相同密钥的密码操作的非白盒实现中使用的值,则能够看出:在本发明的密码系统中的编码步骤之后,根据取决于输入从多个编码方案中选择的编码方案对x编码。
当利用也可变的编码方案对输入值编码时,典型地,在执行第二基本操作之后,第二基本块(即,所述多个基本块中的第二基本块)的输出将可能会被显著地干扰。补偿器对第二基本块的输出重新编码以解决该编码的影响。当编码方案取决于该选择值时,选择也取决于该选择值的重新编码方案。补偿器也可以对依赖于第二基本块的输出的中间值重新编码。例如,XOR网络可布置在第二基本块和补偿器之间。
在优选实施例中,所述多种编码方案是第二基本块的自等效编码方案。输出编码方案对应于所述选择的编码方案。第二块的输出值根据该输出编码方案被编码。所述选择的重新编码方案把输出值从该输出编码方案重新编码为另外的编码方案。
基本操作的自等效编码方案具有对应的输出编码方案。这一对自等效编码方案和输出编码方案具有这样的性质:即使输入值使用一编码方案被编码,第二基本块也计算与该输入值对应的正确输出值,但随后利用输出编码方案对该正确输出值编码。输出编码方案可不同于输入编码方案。
在优选实施例中,编码方案是仿射函数。特别地,编码器使用选择值进行选择的编码优选地是仿射自等效编码。使用任何合适的方式能够确定仿射自等效编码;例如,如A.Biryukov,C.De Cannière,A.Braeken和B.Preneel的论文“A Toolbox for Cryptanalysis:Linearand Affine Equivalence Algorithms.”(Proceedings of Eurocrypt,2003,pp.33-50)中所述,以下称为Biryukov 1。
优选地使用仿射自编码,因为这意味着利用仿射函数对第二基本块的输出编码。以下描述如何可以相对容易地应用、重新编码或去除仿射编码。因此,如果编码是仿射的,则能够对它们进行补偿而无需很大的开销。例如,通过去除随后用来对第二块的输出进行编码的仿射编码,可补偿该仿射编码。
在优选实施例中,所述选择值是所述多个基本块中的第一基本块的输出的至少一部分。这仅需要很少的计算资源,但实现了内部使用的编码的多样化。
在补偿器已补偿了该编码之后,可由基本块(例如,由第三基本块)进一步对补偿的输出进行操作。在优选实施例中,密码系统包括:解码器,用于根据多种编码方案之一去除所述多个基本块中的第三基本块的输出上的编码。
在优选实施例中,所述多个基本块包括用于通过所述网络接收它的根据另一选择的编码方案编码的输入的至少另一第二基本块,所述补偿器用于根据所述另一第二基本块的另一输出值对另一中间值重新编码以根据多种重新编码方案中的另一选择的重新编码方案补偿另一编码的影响,所述重新编码方案用于把所述中间值重新编码为根据共同编码方案编码的第一值,所述另一重新编码方案用于把所述另一中间值重新编码为根据至多与所述共同编码方案在加法项上不同的编码方案编码的第二值。
可存在多个接收编码的输入的第二块。由于第二基本块和所述另一第二基本块通常不同,所以它们将会不同地影响它们的输入编码,因此具有能够以不同方式补偿这些差异的补偿器是有利的。此外,可利用相同的选择的编码对输入进行编码,但优选地根据不同的选择的编码对它们编码。特别地,优选地利用自等效编码(优选地,仿射编码)对第二基本块和所述另一第二基本块的输入进行编码。针对不同基本块的自等效编码的集合通常不同。在中间值和所述另一中间值被补偿之后根据相同的共同编码对它们编码将是有利的。这简化了进一步的处理。另一方面,使编码等同于加法项也是有利的。加法项(additive)是在编码、重新编码或解码步骤的应用期间相加的项。加法项的例子是在仿射编码中进行xor的值。优选地,该加法项是预先确定的。
例如,如果共同编码方案是仿射编码方案并且跟在补偿之后的操作是中间值和所述另一中间值的xor,则省略该加法项简化了计算。如果相同的加法项与两个值进行xor并且这两个值随后与彼此进行xor,则该加法项被消除。然而,如果该加法项仅与这些值中的一个值进行xor而不与另一个值进行xor,则该加法项将不会在随后的xor中被消除。应该注意的是,对于位,xor是GF(2)上的加法。
本发明的另一方面是一种用于执行把输入消息映射到输出消息的密码操作的密码方法。该方法包括:多个基本映射操作,每个基本映射操作用于把输入值映射到输出值,所述多个基本映射操作用于共同执行密码操作。该密码方法包括:根据输入消息在多种编码方案中选择一选择的编码方案,根据所述选择的编码方案把所述多个基本映射操作中的第一基本映射操作的输出值编码为编码输出,所述多个基本映射操作中的第二基本映射操作用于对作为输入值的至少所述编码器输出进行操作,根据选择值在多种重新解码方案中选择一选择的重新编码方案,根据第二基本映射操作的输出值对中间值重新编码以根据多种重新编码方案中的选择的重新编码方案补偿所述编码的影响。
本发明的另一方面是一种建立为了增加的防篡改性而执行密码操作的系统的方法。该系统包括多个基本块,每个基本块用于把输入值映射到输出值,所述多个基本块用于共同执行密码操作。该方法包括:识别所述多个基本块中的第一基本块和第二基本块,第二基本块被布置为接收第一基本块的输出作为输入;在第一基本块和第二基本块之间布置编码器,该编码器被布置为根据多种编码方案中的选择的编码方案把第一基本块的输出编码为编码器输出,第二基本块适于接收该编码器输出作为输入值;在第二块之后布置补偿器,该补偿器用于根据第二基本块的输出值对中间值重新编码以根据多种重新编码方案中的选择的重新编码方案补偿所述编码的影响,该补偿器被布置为根据选择值在所述多种重新编码方案中选择所述选择的重新编码方案。
例如,通过布置基本软件块和/或基本硬件块能够在第一基本块和第二基本块之间布置编码器,从而使编码器直接或间接地从第一块接收输入,第二块直接或间接地从编码器接收输入。类似地,通过布置补偿器以从第二块接收输入能够在第二块之后布置补偿器。
由于白盒密码术通常非常复杂和/或令人迷惑,所以对于人而言写白盒密码术是很厌烦的。因此有益地提供一种以自动方式创建根据本发明的密码系统的方法。
根据本发明的方法可在计算机上作为计算机执行方法实现或者在专用硬件中实现或者在二者的组合中实现。用于根据本发明的方法的可执行代码可存储在计算机程序产品上。计算机程序产品的例子包括存储器装置、光学存储装置、集成电路、服务器、在线软件等。
在优选实施例中,计算机程序包括适于当该计算机程序在计算机上运行时执行根据本发明的方法的所有步骤的计算机程序代码装置。
因此提供了一种白盒密码系统,其中使用输入相关编码表示它的内部值中的至少一个。该系统包括被布置为共同执行密码操作的多个基本块的网络。编码器被布置为根据多种编码方案中的一种选择的编码方案把所述多个基本块中的第一基本块的输出数据编码为编码器输出,所述选择取决于该系统的输入消息。补偿器被布置为对中间数据重新编码以根据多种重新编码方案中的一种选择的重现编码方案补偿所述编码的影响。替代于固定编码而使用可变编码,使白盒密码系统的反向工程变得复杂。
附图说明
在下文中将通过参照附图说明本发明的这些和其它方面,其中
图1是示出AES的一回合中的操作的示图,
图2是示出混淆表的例子的示图,
图3是示出白盒AES实现中的列的回合的示图,
图4是示出类型Ia表中所包括的映射的示图,
图5是示出类型II表中所包括的映射的示图,
图6是示出类型III表中所包括的映射的示图,
图7是示出类型IV表中所包括的映射的示图,
图8是示出类型Ib表中所包括的映射的示图,
图9是示出使用编码的白盒实现的示图,
图10是示出编码的示图,
图11是示出实施例的示图。
具体实施方式
AES是具有128位或16字节的块尺寸的块密码。明文被分成形成编码算法的初始状态的16字节的块,编码算法的最终状态是密文。为了在概念上解释AES,把状态的字节组织为4×4字节的矩阵。AES包括多个回合。每个回合包括对状态矩阵的字节、行或列操作的相似的处理步骤,每个回合在这些处理步骤中使用不同的回合密钥。
图1示出AES的一个回合的一些主要处理步骤。这些处理步骤包括:
AddRoundKey 2-把状态的每个字节与一字节的回合密钥进行XOR运算。
SubBytes 4-使用查找表的字节到字节排列。
ShiftRows 6-使状态的每一行旋转固定数量的字节。
MixColumns 8-使用GF(28)下的模乘法处理每一列。
步骤SubBytes 4、ShiftRows 6和MixColumns 8独立于使用的特定密钥。密钥应用于步骤AddRoundKey 2中。除了步骤ShiftRows 6之外,能够对4×4状态矩阵的每一列执行处理步骤而不必了解其它列。因此,它们能够被视为32位运算,因为每一列包括4个8位值。虚线10指示重复该过程直至已执行所需数量的回合。
这些步骤中的每个步骤或者步骤的组合可以由查找表或者由查找表的网络(S盒)代表。如果通过与回合密钥执行XOR执行AddRoundKey步骤,则在白盒攻击环境下,密钥对于攻击者是可见的。AddRoundKey步骤也能够被嵌入在查找表中,这使得不太容易找到密钥。事实上,可以由查找表的网络替换AES的整个回合。例如,可以使用表查找来实现SubBytes、ShiftRows和MixColumns。以下,将更充分地讨论AES的可能的白盒实现。
图2示出使提取密钥变得甚至更加困难的方法。在密码操作(诸如,AES加密)已被变换成基本操作的网络之后,可进行进一步的混淆。令X和Y是两个函数,即,基本操作。考虑表示为图解12的复合操作YοX=Y(X(c)),也就是说,为了获得该复合操作,在X之后执行Y。这里,c是输入值,例如4字节状态列。然而,该方法适用于任何类型的输入值c。映射X和Y能够实现为能够存储在存储器中的查找表,然而,当它们存储在存储器中时,值能够被攻击者读取。图解14表示如何能够通过使用输入编码F和输出编码H使查找表的内容混淆。如图中所示替代于X和Y存储与XοF-1和HοY对应的查找表,使得更加难以提取X和Y。图解16显示如何加入另外的(例如,随机的)双射函数G,从而使两个表的中间结果也被编码。在这种情况下,两个表存储在存储器中:X′=GοXοF-1和Y′=HοYοG-1。这在图解18中再一次示出:
Y ′οX′=(HοYοG-1)ο(GοXοF-1)=Hο(YοX)οF-1
其中ο如通常一样表示函数合成(即,对于任何两个函数f(x)和g(x),根据定义fοg(x)=f(g(x))),X和Y是适合借助查找表的实现的函数。同样地,由超过两个函数构成的网络能够被编码。通过在单个查找表中组合HοYοG-1以及在单个查找表中组合GοXοF-1,使对X和Y编码的实际表混淆。只要F、G和/或H保持未知,攻击者就不能从查找表提取关于X和/或Y的信息,因此攻击者不能提取作为X和/或Y的基础的密钥。包括DES和Rijndael(其中AES是特定实例)的其它密码算法也可以被编码为可以按照与以上类似的方式混淆的查找表(的级联或网络)。本发明不限于提及的示例性密码算法。
Chow 1公开了一种意图通过利用代表合成而非个体步骤的随机双射对它的表进行编码来隐藏密钥的方法。防止密钥提取具有这样的优点:防止攻击者提取将会允许在其它机器上绕过软件保护目标的密钥材料或者防止公布在安装软件的大用户基础上有效地创建击败安全性措施的“全局破译”的密钥材料。在给定仅使用软件的方案和恶意主机现实的约束下,它提供了更高程度的保护。在Chow 1的方案中,通过以下手段隐藏密钥:(1)使用用于合成而非个体步骤的表;(2)用随机双射对这些表编码;以及(3)把密码边界扩展超出密码算法自身之外进一步扩展到包含应用中,迫使攻击者(反向工程师)理解大得多的代码段以实现他们的目标。Chow 1讨论了一种固定密钥方法:通过关于密钥的部分评估把密钥嵌入在实现中,从而不需要密钥输入。部分评估意味着尽可能合理地评估涉及密钥的表达式,并且结果被放入代码中而非完整的表达式被放入在代码中。
可能的攻击情形是攻击者提取密钥专用实现并且使用它而不是密钥。通过设计适合用作更大的包含系统的组成部分的密钥专用实现,能够缓解这个问题。该更大的系统能够被布置为向该组成部分提供操纵形式或编码形式的输入。当密钥专用实现被攻击者移除并插入到不同的更大的系统中时,密钥专用实现将不会正常工作,因为该不同的更大的系统将不会以该密钥专用实现所期望的操纵形式提供它的输入。
参照编码表的步骤,由于编码是任意的,所以只要一个步骤的输出编码与下一步骤的输入编码匹配,结果就是有意义的。例如,如果步骤X后面跟着步骤Y(导致YοX的计算),则该计算能够编码为
Y′οX′=(HοYοG-1)ο(GοXοF-1)=Hο(YοX)οF-1
这样,尽管需要利用F对输入进行编码以及需要利用H-1对输出进行解码,但正确地计算了YοX。这些步骤分开地表示为与Y’和X’对应的表,从而隐藏F、G和H以及X和Y。
除了这种模糊步骤之外,Chow 1通过线性变换使用扩散步骤以进一步掩饰基础操作。术语混合双射用于描述在以上意义下使用的线性双射。Chow 1的实现采用操纵形式的输入,并产生不同操纵形式的输出,由此使得难以将白盒AES实现从它的包含应用分离。
Chow 2讨论了一种设计为承受旨在从程序提取密钥的白盒攻击的DES的密码实现。在关于混淆查找表网络的这篇论文中讨论的技术也把很大部分应用于包括AES和其它算法的其它密码算法。尽管控制执行环境的攻击者能够在不明确地提取密钥的情况下清楚地利用软件自身(例如,进行解密),但迫使攻击者使用手边的安装实例经常对于数字权利管理(DRM)系统提供商而言是有价值的。通常,Chow2中的方法在于努力获得完全由替换盒构成的实现,这些替换盒均不执行仿射变换。Chow 2中描述的多种技术支持一般方法。这些技术中的一些技术是I/O分块编码、组合函数编码、绕过编码、分割路径编码和输出分割。
部分评估意味着对基于在实现时(部分)已知的值的表达式进行预评估。在简化的例子中,当密钥(key)是“5”并且原始实现包含表达式“2*key”时,把预评估的表达式“10”放入实现中而非把“2*5”包括在实现中。这样,密钥“5”不直接存在于代码中。在具有固定密钥的DES的情况下,这涉及利用例如在编译时间或在编译时间之前从密钥计算的密钥专用预评估S盒替换标准S盒。根据Chow 2的混合双射是设计为使得每个输出位依赖于大量输入位的双射线性变换。I/O分块编码是用于处理大量输入和输出位的编码方法。在这种情况下,编码/解码能够形成为编码的串连,其中每个编码处理输入/输出位的一个子集。组合函数编码意味着如果能够并行处理两个或更多个操作,则把单个编码函数应用于所述并行操作的输入(或输出)的串连。它或多或少与I/O分块编码相反。绕过编码意味着编码变换把熵的许多多余位加入到要混淆的输入和/或输出,并重新设计要混淆的变换以“绕过(by-pass)”所述多余位从而使它们不影响该过程的最终输出。分割路径编码意味着修改函数以提供用于使必要信息位混淆的附加输出位。输出分割意味着函数的输出被分布在几个部分函数上,其中所有部分函数的输出必须被组合,优选地以非显而易见的方式组合,以便获得函数的原始输出。
Chow 2提出建立编码网络以构造具有例如32位甚至96位的宽输入的S盒。这种宽输入S盒被分成S盒的网络,每个S盒具有更窄的输入和输出;通过把编码函数包括在S盒中对每个S盒编码。编码函数的反函数被包括在处理该S盒的输出的S盒中。
为了提高阐述的清晰性,将首先描述块密码(在这种情况下为AES)的可能的白盒实现。以下将指出这种实现的问题以及如何可以修正它。应该注意的是,本发明试图解决的问题并不只限于以下给出的特定实现,而是一般的白盒实现具用的问题。参照Chow 1,特别地参照章节2.2至章节3.6,以获取更多关于已知白盒实现的细节。
白盒AES实现能够概况如下。AES加密和解密算法的输入是单个128位块。这个块由包括16个字节的4×4矩阵表示。对于AES-128,AES通常包括10个回合。每个回合更新形成AES的状态的一组十六个字节,因此每个AES回合处理128位。AES-128使用128位的密钥。这个密钥用作把该密钥转换成128位的不同回合密钥的算法的输入。基本回合包括四个部分:
-SubBytes
-ShiftRows
-MixColumns
-AddRoundKey。
该操作次序适用于AES加密。虽然AES解密的标准操作次序不同,但可以重写AES解密算法以使之具有与AES加密相同的操作次序。
在第一回合之前,发生额外的AddRoundKey操作,并且从回合十开始省略MixColumns操作。使用密钥的仅有部分是AddRoundKey,其它三个部分与密钥无关。在该实现中,改变回合的边界以把AddRoundKey步骤和下一回合的SubBytes步骤整合成一个步骤。一个回合以AddRoundKey和SubBytes开始,后面跟着ShiftRows,最后是MixColumns。
首先,通过把SubBytes步骤和AddRoundKey步骤一起组成一个步骤来隐藏密钥。这使得密钥不再单独可见。因为预先已知密钥,所以能够对包括密钥的操作进行预评估。这意味着能够利用密钥专用S盒替换步骤SubBytes中使用的标准S盒。为了产生AES-128的密钥专用实例,通过创建十六个如下定义的8×8(即,8位输入,8位输出)查找表把密钥整合在SubBytes变换中:
T i , j r ( x ) = S ( x ⊕ k i , j r - 1 ) , i = 0 , . . . , 3 ; j = 0 , . . . , 3 ; r - 1 , . . . , 9 ,
其中S是AES S盒(可逆8位映射),
Figure BPA00001444843300173
是在代表回合r的回合密钥的4×4矩阵的位置i,j处的AES子密钥字节。这些T盒组合SubBytes步骤与前一回合的AddRoundKey步骤。回合10T盒如下吸收后白化(post-whitening)密钥:
T i , j 10 ( x ) = S ( x ⊕ k i , j 9 ) ⊕ k sr ( i , j ) 10 , i = 0 , . . . , 3 ; j = 0 , . . . 3 ,
其中sr(i,j)表示在ShiftRows步骤之后基元(cell)i,j的新位置。T盒的总数是10×16=160。然而,能够容易地从T盒恢复密钥,因为S-1是公知的。这使得需要另外的编码。
线性变换用于扩散T盒的输入。这些线性变换称为混合双射并且能够表示为GF(2)上的8×8矩阵。通过较早的计算使混合双射反转以消除它们的影响。
图3表示(在应用T盒ShiftRows之后)针对状态的一个32位列在白盒AES的一个回合中包括的表。在这里介绍不同类型的表的名字。以下更详细地讨论它们。在回合之前,128位状态的每个字节被应用于各自的类型Ia表。这导致使用类型IV表的网络执行XOR的各128位值以提供分成四个32位值的128位输出。在这里概述每个32位值的处理步骤。32位值的四个字节被输入到四个相应的类型II表20。四个类型II表20中的每一个导致32位输出。使用类型IV表22对这些输出执行位XOR。每个类型IV表22执行4位的位XOR。如本领域技术人员所理解,通过正确连接类型IV表的输入和输出,能够实现四个32位输出的位XOR。这个步骤的结果是32位值。这个值的四个字节中的每个字节应用于相应的类型III表24。每个类型III表提供32位输出。再次使用类似于类型IV表22的网络的类型IV表26的网络,对这些输出执行位XOR。输出是指示状态的列的32位值。对于每个回合重复这个过程。
在已对四个32位值中的每一个执行回合之后,输出被组合成128位值。该128位值的每个字节被应用于类型Ib表;使用类型IV表的网络对结果执行XOR。
图4示出类型Ia表100。图5示出类型II表200。图6示出类型III表300。图7示出类型IV表400。图8示出类型Ib表500。
混合双射如下使用。AES状态由由字节组成的4×4矩阵表示。MixColumns步骤每次对一列(四个8位基元)进行操作。考虑32×32矩阵MC。如果这由表来表示,则这个表将会占用232×32=137438953472位=16GB。为了避免这种大的表,把该矩阵分块为四个部分。
MC被分块成四个32×8部分:MC0、MC1、MC2、MC3(块208)。通过把32位向量x=(x0,...,x31)的位分成四个字节并把MC的每个部分与这些字节之一相乘来完成向量x与MC的相乘,得出四个32位向量(z0,...,z3)。这后面跟着三次32位XOR,给出最终的32位结果z。四个表一共仅占用4×28×32=32768位=4KB。
这三次XOR将会分成24个4位XOR,每个XOR由可能的编码查找表表示,并且进行合适的串连(例如,((z[0,0],z[0,1],z[0,2],z[0,3])+(z[1,0],z[1,1],z[1,2]),z[1,3]))||((z[0,4],z[0,5],z[0,6],z[0,7])+(z[1,4],z[1,5],z[1,6]),z[1,7]))||...),其中||表示串连并且+表示XOR。通过使用这些条带和细分的XOR,每个步骤由小的查找表表示。特别地,对于i=0,...,3,使用8×32位表计算zi。一个8×32位表具有8位输入和32位输出。这种表可通过列出28个32位的输出值来实现。4位XOR变为24个8×4位表。图7示出输入解码402和输出编码406如何能够放在XOR 404周围。这些编码通常是随机选择的非线性4×4双射。XOR表称为类型IV表400。类型IV表采用来自两次先前计算中的每次计算的4位作为输入。那些计算的输出编码212与类型IV表的输入解码402匹配以彼此消除。针对4×4非线性双射的选择取决于表的大小。在这种情况下,类型IV表仅为28×4位=128字节。需要24个表,这一共占用3KB。如果XOR未被分割,则将会需要计算32位XOR的三个XOR表。T盒206和8×32位表208能够表示为单独的查找表。代替地,它们能够被组成以创建计算SubBytes和AddRoundKey变换以及MixColumns的一部分的新8×32位表200。这既节省(用于存储T盒的)空间又节省(用于执行表查找的)时间。
在如上所述把MC分割成MCi之前,MC将会被左乘选择为具有满秩的4×4子矩阵的非奇异矩阵的32×32混合双射MB(在图5中以标号210指示)。混合双射的使用增加了特定表的可能构造的数量。
图5示出包括4×4输入解码202和4×4输出编码212的8×32类型II表200。这些输出编码和输入解码是必须与类型IV表400的输入解码和输出编码匹配的非线性4×4双射。类型II表200后面跟着类型IV表400。为了对MB求逆,额外的一组表用于计算MB-1。令(x’0,...,x’31)是MixColumns的输入,令(z0,...,z31)是MixColumns之后的输出。令(z’0,...,z’31)T是与MB相乘后的结果。(z’0,...,z’31)T用作类型III表300的输入。要注意的是,在这里不需要考虑输入解码和输出编码,因为表的输出编码通过下一个表的输入解码消除。在类型III表300中,应用MB-1(304)以及下一回合的四个类型II表200的四个输入混合双射204的逆308。
图6示出包括4×4非线性输入解码和4×4非线性输出编码的8×32类型III表300。这些表后面跟着对应的类型IV表400。
数据操作的一个回合包括对128位状态矩阵的操作。对128位状态矩阵的四个32位条带中的每一个执行的数据操作如下。32位条带被分成四个8位字节。四个字节中的每一个字节被馈送给不同的类型II表200,得到四个32位输出值。使用混淆的类型IV表400对这些值执行XOR。为此,每个32位输出值被分成八个4位半字节,并且合适的半字节对被输入到相应的类型IV表,从而以编码形式获得四个32位输出值的XOR。
这个32位的获得的编码的XOR结果再次被分成字节,并且每个字节被输入到不同的类型III表300。类型III表的每个半字节的输入解码对应于上一应用的类型IV表的输出编码。类型III表再次得到使用混淆的类型IV表400再次执行XOR的四个32位输出值。
概括地讲,各回合通过查找表来实现。单个回合的查找表如下联网。数据被提供给类型II表。这些表的输出被馈送给代表编码XOR的类型IV表的网络。这个网络的输出被馈送给消除由类型II表插入的混合双射编码的类型III表。通过把类型III表的输出再次馈送给代表编码XOR的类型IV表的网络,最终获得该回合的编码输出。
另外,白盒实现在开始处包含类型I表(类型Ia表100)并且在结束处包含类型I表(类型Ib表500),用于分别抵消和插入外部编码。类型Ia表100能够用于通过应用单个表查找而应用如图4中所示的映射的串连。在该串连中,4位半字节输入解码102首先出现。然后,8位至128位映射104出现;这个映射是网络的输入和输出的编码的一部分;这个映射能够在程序中在别处被消除。除了线性8位至128位映射之外,其它表也可以是外部编码的一部分。例如,如果在第一回合中包括表100,则可包括102。类似地,如果在最后的回合中包括表100,则可包括106和108。映射104的结果被分成16个八位片,各8位双射106被应用于这些八位片。最后,应用输出半字节编码108。如上所述,预评估映射102、104、106和108的级联,并且在查找表中把最终结果列成表格。这导致具有至多256个128位条目的表。类型Ib表500中所包括的映射的串连示意性地显示在图8中。第一映射是输入半字节解码502,它后面跟着8位双射504、T盒Tr i,j506(其中r对应于上一回合)、用于提供输出编码的8位至128位映射、和输出半字节编码510。这种表的128位输出与其它类型Ib表的输出进行XOR,再次利用半字节输入和输出编码类型IV表400。在程序中在别处(即,在程序的密码部分之外)消除输出编码508。这使得攻击者更加难以仅通过分析程序的密码部分的输入和输出来破坏表的编码。
以下,描述AES的改进的白盒实现
诸如Chow 1和Chow 2中描述的白盒技术能够以多种方式彼此组合以获得多种多样的密码操作(包括块密码、流密码、消息认证码(MAC)等)的白盒实现。然而,如Michiels 1中所述,这种白盒实现都具有一个重要弱点。当使用诸如Chow 1和2中发现的技术使各中间回合的输入字节混淆时,对于每个输入字节,将会存在把该输入字节映射到AES的直接、非白盒实现的输入字节的关系。如果已知这种关系,则这会危害白盒实现的WBAC的安全性。对于密码领域的从业人员而言,已知对AES的中间回合的输入字节的知识,会泄露密码密钥。尤其是块密码中的较早和/或较晚回合特别地容易暴露内部数据。然而,情况表明,仅凭存在这种关系的事实就已经足以发起攻击。此外,如Michiels 1中所示,这种性质并非由Chow或在本文档中显示的AES或DES实现所特用的,事实上在能够表达为代入仿射变换密码的许多密码操作中是不可避免的。
概括地讲,如下实现了改进。本发明的发明人发现在中间数据流出第一回合并流入下一回合时必须避免利用固定编码来混淆中间数据。通过根据随白盒实现的输入而变化的编码方案的编码实现这一点。为了可读性起见,针对AES而非在任意代入仿射变换密码来解释改进的白盒技术。
在图9中,示意性地示出AES的白盒实现的一部分。显示了类型IV块422、类型II块423、类型IV块425和类型III块427,这些块从块421开始,相继对数据进行操作。在图9中,基本块的类型由罗马数字指示。在以上多次描述的白盒实现中能够找到这一系列操作,例如,在在第一类型III操作之后开始。在块之间,插入编码、重新编码和解码步骤。要注意的是,实际上可存在并行工作的多个基本块。例如,在AES实施例中,在图中显示的单个类型II块423中概括了16个类型II查找表。类似地,在XOR网络425中组合这些类型II表的输出,XOR网络425组合了24个类型IV查找表。
在类型IV块422(即,XOR网络)之前,放置编码器421,编码器421使用选择的编码方案对数据编码。使用取决于白盒实现的输入的选择值,从多种编码中选择编码方案。例如,选择值可基于输入(例如前几位,诸如前4位)的密码散列。然而,选择值也可以被选择为编码器自身的输入。优选地,选择所选择的编码以使得XOR网络遵守该编码。也就是说,XOR网络422的输出仍然根据该编码被编码。例如,通过使用仿射编码可以实现这一点。还要注意,一些密码可能完全不使用XOR操作,至少在此处不使用XOR操作。在这种情况下,如本领域技术人员能够确定的,可选择其它编码。
虽然编码器421能够紧挨着放在类型II基本块423前面,但在编码器421和类型II基本块423之间具有基本块(例如,块422)是有益的,因为它使得攻击者更加难以定位和分析实现中使用的编码的类型。此外,在图9显示的布置中,编码被嵌入在块密码的回合中。与分析回合之间的过渡相比,认为分析回合是更加困难的。
然后由T盒(类型II块423)对编码数据执行操作。由于依赖于AES S盒构造T盒,所以它不是线性的并且通常不会遵守由编码器421应用的编码。因此,利用不同编码对类型II块423的输出编码。典型地,该不同编码将会是高度非线性编码。此外,回想起必须在XOR网络类型IV块425中组合多个块423的输出。不同的T盒能够导致不同的编码。为此,把补偿器424放在类型II块423和XOR网络(类型IV块425)之间。补偿器424补偿块423对编码的影响以及补偿输出字节之间的编码的差异。优选地,补偿器424收集将会在后面的类型IV块425中一起执行XOR的输出字节,并确保利用相同的编码(优选地,仿射编码)对它们编码。如果如这个实施例中一样在XOR网络之后将去除编码,则可以任意地选择编码,但优选地选择仿射编码。例如,补偿器424可挑选不同编码之一并把所有其它数据转换成这种编码。优选地,当后面的块是XOR块时,补偿器424转换成仿射编码。可选地,补偿器424可为它的编码选择全新的编码而非挑选不同编码之一。此外,这种新编码可以是相关地从另外多种编码选择的输入。可选地,补偿器424可去除所有编码。
在XOR网络425之后,可执行类型III操作以消除引入到块423中使用的类型II表中的混合双射。为了准备块427之前的数据,解码器426去除由补偿器424和/或块423和/或块421引入的编码。要注意的是,通常,混合双射是可选的,它仅是进一步使密码操作的执行复杂化的一种方式。如果未把混合双射引入到块423的表中,则可以省略块427。此外,于是可以省略解码器426。可选地,解码器426可被包括在最后一回合中。
为了简化补偿器424的工作,自等效编码方案能够由编码器421使用。特别地,虽然根据输出编码方案编码,但对块423的输入施加的编码被变换成规则的输出。该输出编码方案属于与输入相同类型的编码。特别地,存在当施加于输入数据时导致仿射输出编码的自等效仿射编码。这种自等效编码相对少见,因为块423包括非线性S盒。然而,从论文Biryukov 1已知:存在这种自等效仿射编码。特别地注意该论文的章节4和5。特别地,对于AES 2040的S盒,存在自等效仿射编码。
要注意的是,只要数据相关性允许,可以至少部分地并行完成操作。
改进的白盒实现的详细描述
继续对白盒实现的实施例进行更详细的描述。
AES回合的开始如下。回合的输入被分割成字节。每个字节i与回合密钥的字节ki进行XOR。这个XOR的结果用作S盒的输入。在白盒实现的构造中,这两个操作被合并为单个所谓的T盒操作。这意味着对于该回合的每个输入字节i,通过
Figure BPA00001444843300241
定义8至8位双射映射Ti
要注意的是,其它密码可不使用字节甚至不使用半字节作为最基本的信息单位,虽然尺寸必须相应地改变,但这里针对AES给出的方法仍然适用。如上所述,这个T盒操作优选地并非孤立地使用,而是与其它操作整合。此外,如参照图2所解释的,可插入非线性混淆函数。
在白盒实现的构造中,这个T盒由查找表实现。查找表不仅实现T盒操作,还实现函数Ui(x)=a2οTiοal -1,其中a1是双射8至8位映射并且a2是不必为双射的8至m位映射。在使用Chow 1的术语的前面描述中,Ui可被视为m=32的类型II表。然而,应该注意的是,本发明可更一般地应用于具有自等效编码的基本操作。这使得具有白盒实现的下面的性质。正是这种性质被Michiels 1中提出的攻击所利用。
性质:令I是针对某一给定密钥的AES的标准参考实现,令WB是实现I的白盒版本。另外,令b是I中的回合的输入字节。然后,存在固定函数a1,从而WB得出值a1(b)。这个函数a1是固定的并且不取决于给予该实现的输入(不以该输入为参数)。要注意的是,对于不同的输入字节而言,函数a1可以不同。要注意的是,a1取决于特定白盒实现。
在根据本发明的白盒实现中,打破了标准实现和该白盒实现之间的这种关系。
如上所述,根据Chow等人的白盒AES实现包含实现函数Ui(x)=a2οTiοal -1的查找表。对于a1和a2的某特定选择,令Vi是函数对(α,β)的集合从而Ui=βοUiοα-1,并且令
Figure BPA00001444843300251
然后,对于任何(α,β)∈Vi,如果为Ui的查找表提供根据α编码的输入,则这导致根据β编码的输出。优选地,因此利用来自Wi的编码对Ui的查找表的输入进行编码,其中选择的编码不需要对于白盒实现的所有输入都是相同的。
由Chow 1提出的白盒实现包含两种类型的编码:线性编码和非线性编码。白盒实现的构造能够被分成两个步骤。在第一步骤中,构造仅包含线性编码的白盒实现,在第二步骤中,加入非线性编码。在这个实施例中,采用在第一步骤之后导出的白盒实现作为起点。因此,在讨论中,能够假设未应用非线性编码。如果需要,可以在以后应用非线性编码。
在白盒实现中,T盒被包含在8至32位表中,这个表称为类型II表。如果把这个表分割成四个8至8位表,则由第j个表实现的函数可被写为Ui,j=fi,jοTiοgi -1,其中gi和fi,j是线性函数。函数gi是双射的,并且通过适当地选择线性编码,也能够确保fi,j是双射的。在这个实施例中将会假设它们都是双射的。
实现Ui,j的查找表的后面跟着实现XOR的查找表,也就是说,类型II表的输出由类型IV表进一步处理。更准确地讲,XOR表执行下面的计算。16个T盒的集合被划分成4个包含4个T盒的集合(如果T盒与在AES的ShiftRows步骤之后来自同一列的字节关联,它们处于相同的集合中)。令(i1,i2,i3,i4}是这样的集合,令yi,j是函数Ui,j=fi,jοTiοgi -1的结果。然后,XOR表对于每个j=1,2,3,4计算值 y i 1 , j , y i 2 , j , y i 3 , j , y i 4 , j 的XOR。
实现Ui,j的查找表的前面也是实现XOR的查找表。令xi是函数Ui,j的输入。然后,位于Ui,j前面的XOR表从4个字节xi,1、xi,2、xi,3和xi,4计算字节xi
要注意的是,当把本发明应用于Ui,j而非Ui时,需要加入对以上定义的集合Vi和Wi的索引中的j的相关性。如上所述,通过非恒定编码对函数Ui,j的输入编码。能够相对于上述白盒实现做出的改变涉及三个问题:对函数Ui,j的输入执行哪种编码,即,如何定义集合Vi,j和Wi,j?如何对一个值执行编码?在哪里对一个值执行编码?以下给出这些问题中的每个问题的可能的答案。
这个部分描述对函数Ui,j的输入执行哪种编码
对于S盒S,令集合ΦS是仿射函数的所有对的集合,从而
Figure BPA00001444843300263
Biryukov 1给出对于任何S盒导出该集合的算法。对于AES S盒,这个集合包括2040对的函数。从这个集合,能够容易地针对任何函数Ui,j导出仿射函数对(α,β)的集合Vi,j,从而Ui,j=βοUi,jοα-1。记住
Figure BPA00001444843300264
其中fi,j和gi是线性的双射函数并且其中
Figure BPA00001444843300265
表示函数
Figure BPA00001444843300266
更精确地讲,能够显示由
Figure BPA00001444843300267
给出的集合Vi,j具有这样的性质:对于所有α,β∈Vi,j,有Ui,j=βοUi,jοα-1。这个集合的基数对于ΦS是相同的,即2040。这个集合Vi,j定义对Ui,j的输入执行的编码的集合Wi,j。也就是说,由
Figure BPA00001444843300268
的仿射函数α∈Wi,j对Ui,j的输入进行编码。
在这个部分,讨论通常如何利用仿射变换对值进行编码。这种技术可用于初始编码,也可用于重新编码和解码。编码器能够按照下面的方式对值进行编码。首先,关注线性编码。令v是从白盒实现的输入M导出的4位选择值。值v可以是例如输入M的半字节。或者v能够至少部分地从希望对其编码的值(即,x)获得。另外,令E是包括对8位的24个种线性编码的集合,即,E包括24个矩阵A1、A2、...A16,其中每个矩阵是8×8位可逆矩阵。在编码的情况下,回想起这些矩阵可能例如被选择为以上定义的集合Vi,j中的仿射编码的线性部分。通过稍微滥用符号,如果N是矩阵,则也将用N表示由与N的矩阵乘法定义的函数,即N(x)=Nx。通过把值v解释为1和16之间的数,能够参照编码Av。现在显示如何在白盒实现中实现通过线性编码Av对8位中间值x进行编码。要注意的是,针对编码的数量可以有不同基数。例如,通过把v限制为1位值,仅需要两种编码方案。
首先,把x分成两个半字节x1和x2。另外,对于任何Ai,把Ai,1定义为由Ai的前四列定义的矩阵,并且把Ai,2定义为由Ai的最后四列定义的矩阵。然后,
A i ( x ) = A i , 1 ( x 1 ) ⊕ A i , 2 ( x 2 ) .
因此,能够如下从x计算Av(x)。定义把4位值x1和v映射到Av,1(x1)的8至8位表τ1,并且定义把4位值x2和v映射到Av,2(x2)的8至8位表τ2。通过(例如,经由XOR表)对这些表的结果执行XOR,获得Av(x)。
这结束了我们的对字节x执行线性编码的方法。现在讨论对字节执行仿射编码的类似方法。再一次,4位值v被用来指示来自包括16种编码的集合E的编码。然而,在这种情况下,编码的集合E包括对8位的仿射编码,即,函数
Figure BPA00001444843300272
其中A是8×8位二元矩阵并且a是8位常数。由v指示的编码由
Figure BPA00001444843300273
表示。
现在以针对线性编码相同的方式继续执行。也就是说,首先,把x分成两个半字节x1和x2。另外,如前面一样定义矩阵Ai,1和Ai,2,这意味着Ai,1表示由Ai的前四列定义的矩阵并且Ai,2表示由Ai的最后四列定义的矩阵。然后,
A i ( x ) = A i , 1 ( x 1 ) ⊕ A i , 2 ( x 2 ) .
因此,能够如下从x计算αv(x)。定义把4位值x1和v映射到
Figure BPA00001444843300281
的8至8位表τ1,并且定义把4位值x2和v映射到Av,2(x2)的8至8位表τ2。通过(例如,经由XOR表)对这些表的结果执行XOR,获得αv(x)。
编码器网络表示在图10中。编码器网络布置为根据选择值v对值x编码。查找表431布置为接收两个4位大小的输入:x1和v。它布置为产生一个8位输出。类似地,查找表432布置为接收两个4位大小的输入:x2和v,并且产生8位输出。这两个8位值在XOR网络433中彼此进行XOR。XOR网络433包括用于执行XOR的两个类型IV表并分别地对半字节进行操作。
以上,讨论了如何对尚未编码的值执行编码。现在,假设通过编码把值x编码并且想要例如使用补偿器424把该编码改变为另一编码。更精确地讲,令E和
Figure BPA00001444843300282
是两个可能不同的集合,这两个集合中的每一个集合包括16个仿射编码。写出αv(v=1,2,...,16)表示E中的编码并且写出
Figure BPA00001444843300283
表示
Figure BPA00001444843300284
中的编码。然后考虑想要把字节x的编码从αv改变为
Figure BPA00001444843300285
的问题。这个问题与对尚未编码的值执行编码的问题相同,其中从包括28=256种编码的集合
Figure BPA00001444843300286
中获取编码。因此,能够再次使用上述方法。唯一的差别在于:8至8位表τ1和τ2现在具有12位输入,因为需要8位来识别
Figure BPA00001444843300287
中的元素。
以下的内容回答了在哪里执行值的编码的问题。这个问题的答案分成两个部分:编码的引入和编码的去除。
编码的引入:
可在XOR网络422之前引入编码,但是需要小心。例如,如果替代于线性编码使用仿射编码,则并非XOR网络的所有输入可以按照相同方式编码。假设对于任何仿射函数函数是函数α的线性部分。另外,令
Figure BPA000014448433002810
是包含Wi,j中的仿射函数的线性部分的集合。也就是说,
Figure BPA000014448433002811
如上所述,通过对字节xi,1、xi,2、xi,3和xi,4执行XOR,构造函数Ui,j的输入值xi。为了对函数Ui,j的输入xi执行编码αv,应用下面的方法。首先,从白盒实现的输入获得4位值v。这可以以任意的方式完成。使用值v通过编码αv对值xi,1进行编码并且通过编码
Figure BPA00001444843300291
对值xi,2、xi,3和xi,4进行编码。对这些值执行XOR得到值αv(x)。这结束了编码的引入。
编码的去除:
如上所述,基本白盒实现使函数
Figure BPA00001444843300292
的输出与三个其它表
Figure BPA00001444843300295
的输出进行XOR。对于这个实施例,假设如下完成XOR。首先,
Figure BPA00001444843300297
进行XOR。接下来,把这个结果(称为r1)与进行XOR。这个第二次XOR的结果r2最后与
Figure BPA00001444843300299
进行XOR以获得值yj
令βi,j表示用来对值yi,j编码的仿射编码。在对值进行XOR之前,通过的编码的线性部分(即,通过)对所有值
Figure BPA000014448433002912
Figure BPA000014448433002913
编码。以上,解释了如何能够实现这一点。现在对编码值 β i 1 , j ( y i 1 , j ) , β i 1 , j lin ( y i 2 , j ) , β i 1 , j lin ( y i 3 , j )
Figure BPA000014448433002915
进行XOR。要注意的是,对编码值
Figure BPA000014448433002916
进行XOR得到编码值
Figure BPA000014448433002918
把这个值与进行XOR得到
Figure BPA000014448433002921
Figure BPA000014448433002922
进行XOR得到
Figure BPA000014448433002923
从值
Figure BPA000014448433002924
最终去除编码。要注意的是,去除编码能够以与加入编码相同的方式完成(它对应于加入编码的逆)。
图11示出本发明的实施例。该图显示通信端口95,诸如用于连接到数字内容的提供商的与互联网的连接。也能够从介质96(诸如,DVD或CD)获得内容。PC上的数字内容典型地通过使用由处理器92使用存储器91执行的媒体播放器渲染。这种播放器能够对于特定内容格式执行用于执行与经通信端口95和/或介质96获得的内容对应的格式专用解码的相应插件。这些内容格式可包括AVI、DV、运动JPEG、MPEG-1、MPEG-2、MPEG-4、WMV、音频CD、MP3、WMA、WAV、AIFF/AIFC、AU等。为了数字权利管理目的,可使用不仅对内容解码还对内容解密的安全插件。这种插件包括存储在存储器91中的处理器指令和参数。处理器指令可使该过程执行根据本发明的方法。参数包括本文阐述的查找表。可提供用户输入94以获得来自用户的指示要渲染的内容的命令,可提供显示器93和/或扬声器以用于渲染解码和/或解密的内容。
应该理解,本发明还扩展至适于实施本发明的计算机程序,特别是载体上或载体中的计算机程序。该程序可具有源代码、目标代码、代码中间源和诸如部分编译形式的目标代码的形式,或者具有适合用于实现根据本发明的方法的任何其它形式。载体可以是能够携带该程序的任何实体或装置。例如,载体可包括存储介质,诸如ROM(例如,CD ROM或半导体ROM)或磁记录介质(例如,软盘或硬盘)。另外,载体可以是可传输载体,诸如可经电缆或光缆或者通过无线电或其它装置传送的电信号或光信号。当程序被实施为这种信号时,可由这种线缆或其它装置或方式构成载体。或者,载体可以是嵌入了程序的集成电路,该集成电路适于执行相关方法或用于相关方法的执行。
应该注意的是,上述实施例例示本发明而非限制本发明,并且本领域技术人员将能够在不脱离所附权利要求的范围的情况下设计许多替换的实施例。在权利要求中,位于括号之间的任何标号不应解释为限制权利要求。动词“包括”及其变化的使用不排除除权利要求中陈述的元素或步骤之外的元素或步骤的存在。元素前面的冠词“a”或“an”不排除多个这种元素的存在。本发明可通过包括几个不同元件的硬件以及通过合适地编程的计算机来实现。在列举几个装置的设备权利要求中,这些装置中的几个装置可由同一个硬件实现。在相互不同的从属权利要求中记载某些措施的事实并不表示不能有益地使用这些措施的组合。

Claims (11)

1.一种用于执行把输入消息映射到输出消息的带密钥密码操作的密码系统,该系统包括:
-代表所述密钥的多个基本块的网络,至少一些所述基本块被布置为把输入数据映射到输出数据,所述多个基本块被布置为共同执行密码操作,
其中所述网络包括:
-编码器,用于根据多种编码方案中的一种选择的编码方案把所述多个基本块中的第一基本块的输出数据编码为编码器输出,编码器被布置为根据取决于输入消息的选择数据在所述多种编码方案中选择所述选择的编码方案,所述多个基本块中的第二基本块被布置为通过所述网络接收它的根据所述选择的编码方案编码并且依赖于所述编码器输出的输入,
-补偿器,用于对取决于第二基本块的输出数据的中间数据重新编码以根据多种重新编码方案中的一种选择的重新编码方案补偿所述编码的影响,补偿器被布置为根据所述选择数据在所述多种重新编码方案中选择所述选择的重新编码方案。
2.如权利要求1所述的密码系统,其中所述多种编码方案是第二基本块的自等效编码方案,输出编码方案对应于所述选择的编码方案,第二块的输出数据根据该输出编码方案被编码,所述选择的重新编码方案把输出数据从该输出编码方案重新编码为另外的编码方案。
3.如前面权利要求中任一项所述的密码系统,其中所述多种编码方案是仿射编码方案。
4.如权利要求2和3所述的密码系统,其中第一块的输出数据是利用取决于所述选择数据的编码方案进行编码的。
5.如前面权利要求中任一项所述的密码系统,其中所述选择数据是所述多个基本块中的第一基本块的输出的至少一部分。
6.如前面权利要求中任一项所述的密码系统,包括:解码器,用于根据多种编码方案之一去除所述多个基本块中的第三基本块的输出上的编码。
7.如前面权利要求中任一项所述的密码系统,其中所述多个基本块至少包括被布置为通过所述网络接收它的根据另一选择的编码方案编码的输入的另一第二基本块,所述补偿器被布置为对取决于该另一第二基本块的另一输出数据的另一中间数据重新编码以根据多种重新编码方案中的另一选择的重新编码方案补偿另一编码的影响,所述重新编码方案被布置为把所述中间数据重新编码为根据共同编码方案编码的第一数据,所述另一重新编码方案被布置为把所述另一中间数据重新编码为根据至多与所述共同编码方案在加法项上不同的编码方案编码的第二数据。
8.一种用于执行把输入消息映射到输出消息的密码操作的密码方法,该方法包括:
-多个基本映射操作,每个基本映射操作被布置为把输入数据映射到输出数据,所述多个基本映射操作被布置为共同执行密码操作,
其中
-该密码方法包括根据所述输入消息在多种编码方案中选择一选择的编码方案,
-根据所述选择的编码方案把所述多个基本映射操作中的第一基本映射操作的输出数据编码为编码输出,所述多个基本映射操作中的第二基本映射操作被布置为对作为输入数据的至少编码器输出进行操作,
-根据选择数据在多种重新编码方案中选择一选择的重新编码方案,
-对取决于第二基本映射操作的输出数据的中间数据重新编码以根据多种重新编码方案中的一种选择的重新编码方案补偿所述编码的影响。
9.一种建立为了提高防篡改性而执行密码操作的系统的方法,该系统包括多个基本块,每个基本块被布置为把输入数据映射到输出数据,所述多个基本块被布置为共同执行密码操作,该方法包括:
-识别所述多个基本块中的第一基本块和第二基本块,第二基本块被布置为接收第一基本块的输出作为输入,
-在第一基本块和第二基本块之间布置编码器,该编码器被布置为根据多种编码方案中的一种选择的编码方案把第一基本块的输出编码为编码器输出,第二基本块适于接收该编码器输出作为输入数据,
-在第二块之后布置补偿器,该补偿器用于对取决于第二基本块的输出数据的中间数据重新编码以根据多种重新编码方案中的一种选择的重新编码方案补偿所述编码的影响,该补偿器被布置为根据选择数据在所述多种重新编码方案中选择所述选择的重新编码方案。
10.一种计算机程序,包括当该计算机程序在计算机上运行时执行如权利要求8和9中任一项所述的所有步骤的计算机程序代码装置。
11.一种存储如权利要求10所述的计算机程序的计算机可读介质。
CN201080014314.7A 2009-03-10 2010-03-05 具有输入相关编码的白盒密码系统 Active CN102461058B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP09154698 2009-03-10
EP09154698.6 2009-03-10
PCT/EP2010/052846 WO2010102960A1 (en) 2009-03-10 2010-03-05 White-box cryptographic system with input dependent encodings

Publications (2)

Publication Number Publication Date
CN102461058A true CN102461058A (zh) 2012-05-16
CN102461058B CN102461058B (zh) 2015-06-03

Family

ID=42124476

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080014314.7A Active CN102461058B (zh) 2009-03-10 2010-03-05 具有输入相关编码的白盒密码系统

Country Status (7)

Country Link
US (1) US9654280B2 (zh)
EP (1) EP2406916A1 (zh)
JP (1) JP5688528B2 (zh)
KR (1) KR101715027B1 (zh)
CN (1) CN102461058B (zh)
CA (1) CA2754094C (zh)
WO (1) WO2010102960A1 (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104919750A (zh) * 2012-12-21 2015-09-16 皇家飞利浦有限公司 配置有表格网络的计算设备
CN105022937A (zh) * 2014-04-28 2015-11-04 恩智浦有限公司 用于将白箱实现紧附到周围程序的接口兼容方式
CN105024808A (zh) * 2014-04-28 2015-11-04 恩智浦有限公司 无需改变密钥的安全性补丁
CN105049400A (zh) * 2014-03-19 2015-11-11 恩智浦有限公司 在白盒实现方案中拆分s盒以防止攻击
CN105099666A (zh) * 2015-06-26 2015-11-25 中国科学院信息工程研究所 混淆轮边界的白盒密码系统和方法
CN105184115A (zh) * 2014-04-28 2015-12-23 恩智浦有限公司 用于将隐式完整性或可信性检查包括到白箱实现中的方法
CN105187364A (zh) * 2014-03-19 2015-12-23 恩智浦有限公司 保护白盒实现方案不受攻击
CN105718763A (zh) * 2014-12-19 2016-06-29 恩智浦有限公司 将白盒实现与精简安全单元绑定
CN105721134A (zh) * 2014-12-18 2016-06-29 恩智浦有限公司 使用带有多个外部编码的单个白盒实现
CN106209346A (zh) * 2015-06-01 2016-12-07 恩智浦有限公司 白盒密码技术交错查找表
CN106656500A (zh) * 2015-10-29 2017-05-10 三星Sds株式会社 加密装置及方法
CN106888081A (zh) * 2015-12-16 2017-06-23 恩智浦有限公司 白盒实施方案内中间值的宽编码
CN107005404A (zh) * 2014-11-10 2017-08-01 德国捷德有限公司 加固的白盒实现1
CN107005399A (zh) * 2014-11-27 2017-08-01 皇家飞利浦有限公司 用于执行混淆算术的电子计算设备
CN107637010A (zh) * 2015-05-19 2018-01-26 三星Sds株式会社 数据加密装置及方法和数据解密装置及方法
CN107968706A (zh) * 2017-11-21 2018-04-27 武汉珈港科技有限公司 具有流程保护功能的白盒密码方法及系统
CN109670320A (zh) * 2017-10-13 2019-04-23 三星电子株式会社 加密设备和解密设备、以及其操作方法
CN112997496A (zh) * 2018-11-14 2021-06-18 北京字节跳动网络技术有限公司 仿射预测模式的改进

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9274976B2 (en) * 2010-11-05 2016-03-01 Apple Inc. Code tampering protection for insecure environments
KR20120072011A (ko) * 2010-12-23 2012-07-03 한국전자통신연구원 무결성 검증이 가능한 데이터 암호장치, 복호장치 및 방법
EP2691906B1 (en) * 2011-03-31 2018-12-26 Irdeto B.V. Method and system for protecting execution of cryptographic hash functions
US9189425B2 (en) * 2011-09-01 2015-11-17 Apple Inc. Protecting look up tables by mixing code and operations
EP2829010B1 (en) * 2012-03-20 2020-11-04 Irdeto B.V. Updating key information
BR112015014470A2 (pt) 2012-12-21 2017-07-11 Koninklijke Philips Nv compilador configurado para compilar um programa de computador, dispositivo de computação configurado para executar um programa de computador compilado por um compilador, método para executar um programa de computador compilado por um compilador e programa de computador
US9264222B2 (en) 2013-02-28 2016-02-16 Apple Inc. Precomputing internal AES states in counter mode to protect keys used in AES computations
EP2885892A1 (en) * 2013-03-27 2015-06-24 Irdeto B.V. Aes implementation with error correction
CN105191206B (zh) * 2013-05-01 2019-05-28 皇家飞利浦有限公司 电子块密码设备、方法和相应的计算机可读存储介质
KR101807259B1 (ko) 2013-11-04 2017-12-08 한국전자통신연구원 암호화 장치 및 방법
US20160306954A1 (en) * 2013-12-02 2016-10-20 Identity Authentication Management Methods and systems for multi-key veritable biometric identity authentication
RU2680761C1 (ru) * 2013-12-20 2019-02-26 Конинклейке Филипс Н.В. Безопасные преобразования данных
US9576116B2 (en) * 2013-12-26 2017-02-21 Nxp B.V. Secure software components anti-reverse-engineering by table interleaving
US10944545B2 (en) * 2014-03-31 2021-03-09 Irdeto B.V. Obfuscated performance of a predetermined function
TWI712915B (zh) * 2014-06-12 2020-12-11 美商密碼研究公司 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體
US10412054B2 (en) 2014-06-24 2019-09-10 Nxp B.V. Method for introducing dependence of white-box implementation on a set of strings
EP2960891B1 (en) 2014-06-24 2019-01-16 Nxp B.V. Method for introducing dependence of white-box implementationon a set of strings
KR101527329B1 (ko) * 2014-09-12 2015-06-09 삼성에스디에스 주식회사 데이터 암호화 장치 및 방법
US9569639B2 (en) 2014-09-12 2017-02-14 Nxp B.V. Remapping constant points in a white-box implementation
SG10201405852QA (en) 2014-09-18 2016-04-28 Huawei Internat Pte Ltd Encryption function and decryption function generating method, encryption and decryption method and related apparatuses
CN106796765B (zh) * 2014-10-08 2020-10-20 日本电信电话株式会社 非减序列判定装置、非减序列判定方法以及记录介质
US9819486B2 (en) 2014-12-19 2017-11-14 Nxp B.V. S-box in cryptographic implementation
US9665699B2 (en) * 2015-03-13 2017-05-30 Nxp B.V. Implementing padding in a white-box implementation
US9602273B2 (en) 2015-05-06 2017-03-21 Nxp B.V. Implementing key scheduling for white-box DES implementation
US10097342B2 (en) * 2015-07-30 2018-10-09 Nxp B.V. Encoding values by pseudo-random mask
NL2015599B1 (en) * 2015-10-12 2017-05-02 Koninklijke Philips Nv A cryptographic device and an encoding device.
KR101989956B1 (ko) 2015-10-29 2019-06-17 삼성에스디에스 주식회사 암호화 장치 및 방법
NL2015911B1 (en) * 2015-12-07 2017-06-28 Koninklijke Philips Nv Calculating device and method.
JP6187624B1 (ja) 2016-03-17 2017-08-30 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
JP6877889B2 (ja) * 2016-04-08 2021-05-26 ソニーグループ株式会社 暗号化装置、暗号化方法、復号化装置、及び復号化方法
JP7031580B2 (ja) * 2016-05-23 2022-03-08 ソニーグループ株式会社 暗号化装置、暗号化方法、復号化装置、及び復号化方法
JP6135804B1 (ja) 2016-06-01 2017-05-31 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
US10243937B2 (en) * 2016-07-08 2019-03-26 Nxp B.V. Equality check implemented with secret sharing
EP3300291A1 (en) 2016-09-27 2018-03-28 Gemalto SA Method to counter dca attacks of order 2 and higher
KR101924067B1 (ko) 2016-10-28 2019-02-22 삼성에스디에스 주식회사 암호화 장치 및 방법
EP3407528A1 (en) * 2017-05-24 2018-11-28 Koninklijke Philips N.V. Cryptographic device and method
US10547449B2 (en) * 2017-05-30 2020-01-28 Nxp B.V. Protection against relay attacks in a white-box implementation
US10567159B2 (en) * 2017-06-07 2020-02-18 Nxp B.V. CMAC computation using white-box implementations with external encodings
US11436946B2 (en) * 2017-08-10 2022-09-06 Sony Corporation Encryption device, encryption method, decryption device, and decryption method
WO2019031025A1 (ja) * 2017-08-10 2019-02-14 ソニー株式会社 暗号化装置、暗号化方法、復号化装置、及び復号化方法
KR102602696B1 (ko) * 2017-10-13 2023-11-16 삼성전자주식회사 암호화 장치 및 복호화 장치, 이들의 동작방법
EP3506558A1 (en) * 2017-12-28 2019-07-03 Koninklijke Philips N.V. Whitebox computation of keyed message authentication codes
US10790991B2 (en) * 2018-08-30 2020-09-29 Nxp B.V. Deterministic digital signature method without using a hash function
JP7383949B2 (ja) 2019-09-20 2023-11-21 富士電機株式会社 情報処理装置及びプログラム
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002046890A2 (en) * 2000-12-08 2002-06-13 Cloakware Corporation System and method for protecting computer software from a white box attack
US6696992B1 (en) * 2001-10-02 2004-02-24 Allan Chu Efficient data encoding and decoding processes
WO2007105126A2 (en) * 2006-03-10 2007-09-20 Koninklijke Philips Electronics N.V. Method and system for obfuscating a cryptographic function
JP2008098690A (ja) * 2006-10-05 2008-04-24 Sharp Corp 暗号化装置、復号化装置、暗号化プログラム、復号化プログラム、暗号化プログラムが格納された記録媒体、復号化プログラムが格納された記録媒体、暗号化方法、復号化方法およびテーブル作成方法
CN101536398A (zh) * 2006-11-17 2009-09-16 皇家飞利浦电子股份有限公司 用于白盒实现的加密方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4317607B2 (ja) 1998-12-14 2009-08-19 株式会社日立製作所 情報処理装置、耐タンパ処理装置
JP2002247025A (ja) 2001-02-22 2002-08-30 Hitachi Ltd 情報処理装置
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
JP2006028600A (ja) 2004-07-16 2006-02-02 Kobe Steel Ltd 耐摩耗性と耐熱性に優れた積層皮膜
EP1865481A1 (en) 2005-03-31 2007-12-12 Matsushita Electric Industrial Co., Ltd. Data encryption device and data encryption method
CN101491001B (zh) * 2006-07-12 2012-03-14 耶德托公司 数字数据处理单元的防篡改系统和方法
JP4909018B2 (ja) 2006-11-16 2012-04-04 富士通株式会社 共通鍵暗号のための暗号化装置
JP2008233683A (ja) * 2007-03-22 2008-10-02 Toshiba Corp 暗号処理装置及びプログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002046890A2 (en) * 2000-12-08 2002-06-13 Cloakware Corporation System and method for protecting computer software from a white box attack
US20060140401A1 (en) * 2000-12-08 2006-06-29 Johnson Harold J System and method for protecting computer software from a white box attack
US6696992B1 (en) * 2001-10-02 2004-02-24 Allan Chu Efficient data encoding and decoding processes
WO2007105126A2 (en) * 2006-03-10 2007-09-20 Koninklijke Philips Electronics N.V. Method and system for obfuscating a cryptographic function
JP2008098690A (ja) * 2006-10-05 2008-04-24 Sharp Corp 暗号化装置、復号化装置、暗号化プログラム、復号化プログラム、暗号化プログラムが格納された記録媒体、復号化プログラムが格納された記録媒体、暗号化方法、復号化方法およびテーブル作成方法
CN101536398A (zh) * 2006-11-17 2009-09-16 皇家飞利浦电子股份有限公司 用于白盒实现的加密方法

Cited By (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594769B2 (en) 2012-12-21 2017-03-14 Koninklijke Philips N.V. Computing device configured with a table network
CN104919750A (zh) * 2012-12-21 2015-09-16 皇家飞利浦有限公司 配置有表格网络的计算设备
CN104919750B (zh) * 2012-12-21 2017-06-06 皇家飞利浦有限公司 计算关于函数‑输入值的数据函数的计算设备和方法
CN105049400B (zh) * 2014-03-19 2019-01-11 恩智浦有限公司 在白盒实现方案中拆分s盒以防止攻击
CN105049400A (zh) * 2014-03-19 2015-11-11 恩智浦有限公司 在白盒实现方案中拆分s盒以防止攻击
CN105187364B (zh) * 2014-03-19 2018-10-02 恩智浦有限公司 保护白盒实现方案不受攻击
US9838198B2 (en) 2014-03-19 2017-12-05 Nxp B.V. Splitting S-boxes in a white-box implementation to resist attacks
CN105187364A (zh) * 2014-03-19 2015-12-23 恩智浦有限公司 保护白盒实现方案不受攻击
CN105024808B (zh) * 2014-04-28 2019-04-16 恩智浦有限公司 无需改变密钥的安全性补丁
CN105022937A (zh) * 2014-04-28 2015-11-04 恩智浦有限公司 用于将白箱实现紧附到周围程序的接口兼容方式
CN105024808A (zh) * 2014-04-28 2015-11-04 恩智浦有限公司 无需改变密钥的安全性补丁
CN105184115B (zh) * 2014-04-28 2018-12-11 恩智浦有限公司 用于将隐式完整性或可信性检查包括到白箱实现中的方法
CN105022937B (zh) * 2014-04-28 2018-08-17 恩智浦有限公司 用于将白箱实现紧附到周围程序的接口兼容方法
CN105184115A (zh) * 2014-04-28 2015-12-23 恩智浦有限公司 用于将隐式完整性或可信性检查包括到白箱实现中的方法
CN107005404A (zh) * 2014-11-10 2017-08-01 德国捷德有限公司 加固的白盒实现1
CN107005404B (zh) * 2014-11-10 2020-11-03 捷德移动安全有限责任公司 实现密码算法的可执行的白盒掩码实施的处理器装置
CN107005399A (zh) * 2014-11-27 2017-08-01 皇家飞利浦有限公司 用于执行混淆算术的电子计算设备
CN105721134B (zh) * 2014-12-18 2019-07-23 恩智浦有限公司 使用带有多个外部编码的单个白盒实现
CN105721134A (zh) * 2014-12-18 2016-06-29 恩智浦有限公司 使用带有多个外部编码的单个白盒实现
CN105718763A (zh) * 2014-12-19 2016-06-29 恩智浦有限公司 将白盒实现与精简安全单元绑定
CN105718763B (zh) * 2014-12-19 2019-02-12 恩智浦有限公司 实现将白盒实现与精简安全单元绑定的方法的存储介质
CN107637010A (zh) * 2015-05-19 2018-01-26 三星Sds株式会社 数据加密装置及方法和数据解密装置及方法
CN107637010B (zh) * 2015-05-19 2021-05-18 三星Sds株式会社 数据加密装置及方法和数据解密装置及方法
CN106209346A (zh) * 2015-06-01 2016-12-07 恩智浦有限公司 白盒密码技术交错查找表
CN106209346B (zh) * 2015-06-01 2021-04-27 恩智浦有限公司 白盒密码技术交错查找表
CN105099666A (zh) * 2015-06-26 2015-11-25 中国科学院信息工程研究所 混淆轮边界的白盒密码系统和方法
CN106656500A (zh) * 2015-10-29 2017-05-10 三星Sds株式会社 加密装置及方法
CN106888081A (zh) * 2015-12-16 2017-06-23 恩智浦有限公司 白盒实施方案内中间值的宽编码
CN109670320A (zh) * 2017-10-13 2019-04-23 三星电子株式会社 加密设备和解密设备、以及其操作方法
CN109670320B (zh) * 2017-10-13 2023-04-25 三星电子株式会社 加密设备和解密设备、以及其操作方法
CN107968706A (zh) * 2017-11-21 2018-04-27 武汉珈港科技有限公司 具有流程保护功能的白盒密码方法及系统
CN112997496A (zh) * 2018-11-14 2021-06-18 北京字节跳动网络技术有限公司 仿射预测模式的改进

Also Published As

Publication number Publication date
CN102461058B (zh) 2015-06-03
KR20120030335A (ko) 2012-03-28
KR101715027B1 (ko) 2017-03-22
US20120002807A1 (en) 2012-01-05
US9654280B2 (en) 2017-05-16
CA2754094C (en) 2017-08-15
JP5688528B2 (ja) 2015-03-25
JP2012520589A (ja) 2012-09-06
WO2010102960A1 (en) 2010-09-16
EP2406916A1 (en) 2012-01-18
CA2754094A1 (en) 2010-09-16

Similar Documents

Publication Publication Date Title
CN102461058B (zh) 具有输入相关编码的白盒密码系统
CN101536398B (zh) 用于白盒实现的加密方法
CN102484581B (zh) 使用中间数据更改的具有可配置密钥的白盒密码系统
CN101491001B (zh) 数字数据处理单元的防篡改系统和方法
EP1997265B1 (en) Integrity of a data processing system using white-box for digital content protection
US9189425B2 (en) Protecting look up tables by mixing code and operations
EP2996278B1 (en) Remapping constant points in a white-box implementation
RU2666281C2 (ru) Электронное устройство блочного шифрования, подходящее для обфускации
CN105099666A (zh) 混淆轮边界的白盒密码系统和方法
CN105184115A (zh) 用于将隐式完整性或可信性检查包括到白箱实现中的方法
WO2010146140A1 (en) White-box cryptographic system with configurable key using block selection
CN105978680B (zh) 一种加密钥的加密运算方法
CN105281893B (zh) 用于引入白箱实现对串集合的依赖性的方法
Bai et al. An AES-like cipher and its white-box implementation
US20210143978A1 (en) Method to secure a software code performing accesses to look-up tables
EP2940918B1 (en) Interface compatible approach for gluing white-box implementation to surrounding program

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: IRDETO B.V.

Free format text: FORMER OWNER: IRDETO BV

Effective date: 20150127

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150127

Address after: Holland Hoofddorp

Applicant after: Irdeto B.V.

Address before: Holland Hoofddorp

Applicant before: Irdeto Corporate B. V.

C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: IRDETO B. V.

Free format text: FORMER NAME: IRDETO B.V.

CP01 Change in the name or title of a patent holder

Address after: Holland Hoofddorp

Patentee after: Ai Dide Technology Co., Ltd.

Address before: Holland Hoofddorp

Patentee before: Irdeto B.V.