保护白盒feistel网络实施方案以防错误攻击的制作方法

文档序号:12729820阅读:264来源:国知局
保护白盒feistel网络实施方案以防错误攻击的制作方法与工艺

本文中所公开的各种示例性实施例大体上涉及保护使用Feistel网络执行密码函数以防错误攻击的软件组件。



背景技术:

互联网向用户提供对数字内容的方便并且广泛的访问。因为互联网是强大的分布式通道,许多用户装置力求直接访问互联网。用户装置可包括个人计算机、膝上型计算机、机顶盒、有互联网功能的媒体播放器、移动电话、智能电话、平板电脑、移动无线热点、或能够访问互联网的任何其它装置使用互联网作为受到版权保护的内容的分配媒体对保护内容提供者的利益造成了巨大的挑战。用户装置越来越多地使用加载有合适的软件的处理器来再现(重放)例如音频和/或视频等数字内容。重放软件的控制是一种强制执行内容所有者的利益(包括使用所述内容所依据的条款和条件)的方式。以前许多用户装置是封闭系统。当今越来越多的平台在某种程度上是开放的。可假定一些用户具有对于提供对内容的访问的硬件和软件的完全控制及访问权,以及大量时间和资源来攻击和绕过任何内容保护机制。其结果是,内容提供者必须跨越通向其中并非所有用户或用户装置都能信任的团体的敌对网络将内容递送到合法用户。

可调用安全软件应用来实行例如用于保护和鉴认数字内容的密码函数等各种函数。为了对抗攻击,这些算法必须经过模糊处理(隐藏)以便防止算法的逆向编写和修改或禁止获得用户特定安全信息。因此,安全软件应用的功能可通过由实施该安全软件的处理器的指令集定义的各种函数来执行。例如,对这些函数进行模糊处理的一种方式是通过使用查找表。

内容提供者必须跨越通向其中并非所有用户或装置都能信任的团体的敌对网络将内容递送到合法用户。这样引起了白盒加密的开发。在白盒加密情形中,假定用户具有对提供内容访问的硬件和软件的完全控制以及攻击和绕过任何内容保护机制的不受限制的时间量和资源。强制执行使用内容所依据的条款和条件的安全软件代码应当有防篡改功能。数字权限管理为安全软件应用中的一种常见应用。用于分配到用户装置的受保护内容的数字版权管理中的一般方法是使用例如DES(数据加密标准)、AES(高级加密标准)或使用其它已知加密方案对数字内容进行加密,且使用解密密钥恢复数字内容。这些解密密钥必须被保护以防止对受保护材料的未授权的访问。

在数字版权管理的情形中,攻击者具有对强制执行受保护内容的管理和访问的软件的完全控制。因此,攻击者可以更改软件并且还试图获得用于对受保护内容进行加密的密码密钥。此类密钥可通过分析软件来发现。

关于密钥分配,媒体播放器必须从许可证数据库检索解密密钥以便重放媒体。媒体播放器随后必须将此解密密钥存储在存储器中某处以用于经加密内容的解密。这样就让攻击者有两种选择来攻击密钥。首先,攻击者可以逆向编写许可证数据库访问函数,从而允许攻击者从所有许可证数据库中检索资产密钥。在此情况下,攻击者不需要理解密码函数的内部工作。其次,攻击者可以观察内容解密期间对存储器的访问,因而攻击者可以检索解密密钥。在这两种情况下,密钥都被视为被破解。

数字权限管理(DRM)和其它安全软件的广泛使用产生了对安全的防篡改软件的需要,该软件力图使软件窜改变得复杂。存在各种用于提高软件应用的防篡改性能的技术。大多数这些技术是基于通过在软件应用的控制和数据路径中添加随机性和复杂度遮罩而隐藏对应用的嵌入了解。这背后的概念是仅仅通过代码检测提取信息变得更难。因而更难找到例如处理对安全应用的访问和许可控制的代码并因此更改代码。

如本文所使用,白盒加密包括一种安全软件应用,其在攻击者对运行白盒加密软件的系统具有完全控制权的环境中执行密码函数。因此,攻击者可以修改输入和输出,追踪软件操作,采样和监视软件在任何时间使用的存储器,甚至修改软件。因此,需要用防止揭露安全功能性中使用的机密信息的方式执行安全功能。白盒加密功能可以用各种方式实施。这样的方法包括:对软件代码进行模糊处理;使用对机密信息使用进行模糊处理的复杂的数学函数;使用查找表;使用有限状态机;或任何其它执行密码函数但是隐藏那些安全功能所需的机密信息的方法。白盒实施方案还可包括一些组件,其包括防调试和防篡改属性。

相对于硬件实施方案优选密码算法的软件实施方案存在若干原因。这(例如)可能是因为软件解决方案在密钥泄露的情况下可再生,因为它的成本较低,或者因为应用开发者对实施白盒系统的硬件没有影响。



技术实现要素:

下文提供各种示例性实施例的简要概述。在以下概述中可以做出一些简化和省略,该概述意在突出并介绍各种示例性实施例的一些方面,但不限制本发明的范围。随后在后续部分提供示例性实施例的详细描述,其足以允许本领域普通技术人员制作且使用本发明性概念。

各种示例性实施例涉及一种通过密钥密码运算将输入消息映射成输出消息的方法,其中所述密钥密码运算包括使用Feistel网络的多轮,所述方法包括:接收具有第一半部和第二半部的输入;通过基本块对所述第二半部执行轮函数的一部分以产生编码输出的一部分,并且其中所述基本块提供所述第二半部的一部分,作为对下一轮的编码第一输入的一部分;以及对所述编码输出的所述部分和所述第一半部的一部分进行异或操作,以产生对所述下一轮的编码第二输入的一部分。

另外的各种示例性实施例涉及一种非暂时性机器可读存储媒体,其通过用于实施通过密钥密码运算将输入消息映射成输出消息的指令编码,其中所述密钥密码运算包括使用Feistel网络的多轮,所述指令包括:用于接收具有第一半部和第二半部的输入的指令;用于通过基本块对所述第二半部执行轮函数的一部分以产生编码输出的一部分的指令,并且其中所述基本块提供所述第二半部的一部分,作为对下一轮的编码第一输入的一部分;以及用于对所述编码输出的所述部分和所述第一半部的一部分进行异或操作,以产生对所述下一轮的编码第二输入的一部分的指令。

描述各种实施例,其中轮函数包括密钥添加、取代函数、排列函数和扩展运算。

描述各种实施例,其中密钥密码函数是数据加密标准。

描述各种实施例,其中基本块是查找表。

描述各种实施例,其中基本块是有限状态机。

另外的各种示例性实施例涉及一种通过数据加密标准(DES)密码运算将输入消息映射成输出消息的方法,其中所述DES密码运算包括多个基本块,所述方法包括:接收具有第一半部和第二半部的输入,第一半部包括八个至少4位的部分,第二半部包括八个至少4位的部分;通过八个基本块对所述第二半部执行轮函数的一部分以产生编码输出的八个经过编码的至少4位部分,并且其中所述多个基本块提供所述第二半部的所述八个至少4位部分,作为对下一轮的编码第一输入;以及对所述编码输出的八个经过编码的至少4位部分和所述第一半部的所述八个至少4位部分执行八个异或操作,以产生对下一轮的编码第二输入的八个至少4位部分。

另外的各种示例性实施例涉及一种非暂时性机器可读存储媒体,其通过用于实施通过数据加密标准(DES)密码运算将输入消息映射成输出消息的指令编码,其中所述DES密码运算包括多个基本块,所述指令包括:用于接收具有第一半部和第二半部的输入的指令,第一半部包括八个至少4位的部分,第二半部包括八个至少4位的部分;用于通过八个基本块对所述第二半部执行轮函数的一部分以产生编码输出的八个经过编码的至少4位部分的指令,并且其中所述多个基本块提供所述第二半部的所述八个至少4位部分,作为对下一轮的编码第一输入;以及用于对所述编码输出的八个经过编码的至少4位部分和所述第一半部的所述八个至少4位部分执行八个异或操作,以产生对下一轮的编码第二输入的八个至少4位部分的指令。

描述各种实施例,其中轮函数包括密钥添加、取代函数、排列函数和扩展运算。

描述各种实施例,其中所述基本块中的每一个包括接收至少4位输入,对所述至少4位输入执行密钥添加,将所述密钥添加的输出输入到取代函数,以及对取代函数的输出应用线性映射以产生基本块输出。

描述各种实施例,其中产生编码输出的八个经过编码的至少4位部分进一步包括组合来自所述八个基本块的基本块输出以产生48位编码输出。

描述各种实施例,其中所述多个基本块是多个查找表。

描述各种实施例,其中所述多个基本块是多个有限状态机。

附图说明

为了更好地理解各种示例性实施例,参看附图,其中:

图1示出DES密文;

图2、图3和图4示出DES的替代公式;

图5示出仅仅使用查找表的DES密文的轮函数和异或函数的白盒实施方案;

图6示出图3的白盒实施方案的模糊处理;

图7示出作为的计算的一部分输出E(L1)的图5的修改方案;

图8示出修改后的Qi表;以及

图9示出用于提供用户装置安全内容以及处理所述安全内容的软件应用的系统。

为了便于理解,相同参考标号用于表示具有大体上相同或类似结构和/或大体上相同或类似功能的元件。

具体实施方式

描述和图式说明本发明的原理。因此将了解,本领域的技术人员将能够设计各种布置,尽管本文中未明确地描述或示出所述布置,但其具体实施了本发明的原理且包括在其范围内。此外,本文中所述的所有例子主要明确地意在用于教学目的以辅助读者理解本发明的原理及由发明人所提供的概念,从而深化所属领域,且所有例子不应解释为限于此类具体陈述的例子及条件。另外,除非另外指明(例如,“或另外”或“或在替代方案中”),否则如本文所使用的术语“或”指代非排他性的“或”(即,“和/或”)。并且,本文所描述的各种实施例不一定相互排斥,因为一些实施例可与一或多个其它实施例组合从而形成新的实施例。

相对于硬件实施方案优选密码算法的软件实施方案存在若干原因。这(例如)可能是因为软件解决方案在密钥泄露的情况下可再生,因为其成本较低,或因为应用开发者对其中实施白盒系统的硬件没有影响。虽然下面的实施例的描述涉及在处理器上运行的软件实施方案,但应指出这些实施例也可同样部分或完全地在硬件中实施。所述的查找表和有限状态机可在硬件中实施以执行所述的各种功能。

下面的论文提出了针对高级加密标准(AES)和数据加密标准(DES)的白盒实施方案的基于表格的方法:由Stanley Chow、Philip Eisen、Harold Johnson和Paul C.Van Oorschot在2002年8月15-16日在加拿大纽芬兰岛圣约翰SAC2002第9届“加密术的选定区(Selected Areas in Cryptography)”国际研讨会的“White-Box Crytography and an AES Implementation(白盒加密术和AES实施方案)”,该论文在下文中被称为“Chow 1”;以及由Stanley Chow、Phil Eisen、Harold Johnson和Paul C.Van Oorschot在2002年11月18日在美国华盛顿特区数字权限管理:DRM 2002 ACM CCS-9研讨会的“A White-Box DES Implementation for DRM Applications(用于DRM应用的白盒DES实施方案)”,该论文在下文中被称为“Chow 2”。Chow 1和Chow 2公开了使用基于表格的方法,通过随机双映射编码表格并通过将密码边界推送到包括应用中而延伸该密码边界的组合来隐藏密码密钥的方法。

如所提到的,对于许多加密运算而言,需要具有白盒实施方案。本发明可应用(例如)于对称和不对称密码运算。并且,本发明可应用于块密文、流密文、消息鉴认方案、签名方案等。应指出,本发明也可应用于散列函数。后者在散列函數用作构建块的情况下尤其有用,所述构建块处理例如机密密钥、机密数据等机密信息。举例来说,本发明可应用于密钥散列消息鉴认码(HMAC或KHMAC)中使用的散列函数。众所周知的块密文包括:高级加密标准(AES)、安全和快速加密例程、(SAFER,以及变型SAFER+和SAFER++)、Blowfish、数据加密标准(DES)等。众所周知的流密文为RC4。此外,任何块密文可使用例如密文反馈(CFB)、计数器模式(CTR)等适当操作模式而用作流密文。

输入消息可表示例如经加密内容数据,例如多媒体数据,包括音频和/或视频数据。经加密内容数据还可包括经加密软件,例如表示例如计算机游戏或办公室应用等某一计算机应用的经加密计算机代码。输入消息还可表示用于在另一密码运算中使用的密钥。后者可(例如)在密钥交换协议中使用,其中根据本发明的白盒实施方案加密和/或解密表示新密钥的数据。输入数据还可为(例如)纯用户数据等纯数据。后者在消息鉴认方案中尤其有利。根据本发明的白盒实施方案可具有该实施方案仅可用于加密、仅可用于解密而非用于两者的属性。例如,如果实施方案使用不是双映射的查找表,例如输入位比输出位更多的查找表,则可以实现此属性。因此,如果用户仅具有白盒解密器,则他可以验证MAC代码而非创建新的MAC。这强化了此消息鉴认方案的抗抵赖特性。

白盒实施方案可使用多个基本块来实施。多个基本块为互连的,在这个意义上,一些块根据先前块中的一或多者的输出构建。基本块可例如作为计算机芯片在硬件中实施。基本块可使用开关板、状态机或用于在计算机硬件中实施功能的任何其它合适的构造。基本块也可在运行在通用计算机芯片,例如微处理器上的软件中实施。例如,基本块可使用多个计算机指令,包括算术指令,它们一起实现该基本块的功能。可在软件和硬件中使用的基本块的广泛使用的实施方案是查找表。例如,Chow 1和Chow 2采用此方法来实施AES和DES块密文。查找表实施方案包括列出可能的输入值、输出值的列表。查找表中的输入值可能是显式的。在此情况下,通过在输入值列表中搜索特定输入,查找表实施方案可以将特定输入映射成特定输出。在发现特定输入时,则也发现特定输出。例如,特定输出可与特定输入在一起存储。优选地,输入值不是显式存储,而仅是隐式存储。举例来说,如果可能的输入是连续范围,(例如)数字或位串,则查找表可能限于存储输出值的列表。例如,特定输入数值可被映射到存储在由该数值所指示的位置的特定输出。另外,有限状态机或代码模糊处理可用于实施白盒实施方案。

例如,通过计算函数的可能输入对应的它的输出值并在列表中存储该输出,可形成该函数的查找表。如果函数取决于多个输入,则可计算并存储该多个输入的所有可能组合所对应的输出。查找表特别适合于实施非线性函数,其以不规律的方式将输入映射到输出。通过向白盒实施方案的一或多个查找表应用固定的模糊处理输入编码和固定输出编码,可以对该白盒实施方案进一步进行模糊处理,如下面所解释。接着,彻底预评估应用固定模糊处理输入编码和输出编码的结果。通过使用此技术,查找表将被具有相同维度的模糊查找表代替,其采用相同数量的输入位并产生相同数量的输出位。用在此类模糊处理中的输入编码和输出编码在最终的白盒实施方案中不是显式的。

基本块的网络被布置成在向它们呈现输入消息时计算输出消息。通常,通过多个基本输入块对输入消息进行操作。多个另外基本块可从一或多个基本输入块提取输入和/或从其输入提取。另外基本块可以采用输入消息、基本输入块的输出和另外基本块的输出的任何组合的输入。最后,基本出口块的某个集合,即至少一个基本出口块,作为输出产生全部或部分输出消息。以此方式显现基本块的网络,其共同计算从输入消息到输出消息的映射。

所使用的密钥可为密码密钥,且可包括足够的熵来承受预见的强行攻击。应指出,在白盒实施方案中,该实施方案中通常并不显式存在密钥。这样会有通过检测该实施方案发现密钥的风险。通常,仅隐式地存在密钥。在加密系统中隐藏密钥的各种方式是已知的。通常,至少使用局部评估的方法,其中,需要密钥输入的基本块被评估为到目前为止其并不取决于输入消息。

在差异性错误分析(DFA)攻击中,当在白盒实施方案中的单个位置中注入错误时,研究白盒实施方案的输入/输出行为。在白盒实施方案中注入错误并观察改变的行为,这是从密码算法的白盒实施方案中提取密码密钥的强大的工具。在白盒环境内,注入错误特别简单。攻击者不但能改变中间结果,他甚至还能将中间结果非常精确地设置成任何期望值。

Feistel密码(其中DES是最众所周知的例子)具有以下结构。数据块拆分成两个等份:左半部和右半部。密文对这些半部进行多轮操作。每一轮用轮密钥参数化。通过(Lr,Rr)表示对轮r的输入,并且通过Kr表示它的轮密钥,其中Lr是左半部,Rr是右半部,则对于轮函数f,一轮如下计算:

如果它不是最后一轮,则

Lr+1=Rr

如果它是最后一轮,则

Rr+1=Rr

这个结构对于密文的加密部分和解密部分是相同的。

迭代密文的概念是,虽然单轮并不非常安全(这意味着能容易从它的输入-输出行为提取轮密钥),但是如果一轮重复足够的次数,它就变安全了。因此,当构建白盒实施方案时,重要的是攻击者无法从实施方案中提取单轮的纯输入和输出。如果密文的输入是纯的,即,未通过外部编码被编码,则这暗示第一轮的输出应当隐藏。这在白盒实施方案中总体上通过编码所有中间结果而实现。

考虑Feistel密文的第一轮,可以看出来自R0的位用作轮函数的输入和下一轮的左半部。假设白盒实施方案使得来自用于这2种用途的R0的位的值可以独立设置。这表示当R0用作轮函数的输入时可以改变来自R0的位的值,而在用于新的左半部L1时,并不改变它的值。

假设攻击者使用这个属性来改变来自轮函数的输入的几个(例如一个)位,其中这些位的值仅仅影响轮函数的输出中的有限数目的位。接着假设V是轮函数的输出可以改变的位置集合。对于DES,举例来说,当扩展算子未复制轮函数的单个输入位时,改变这单个位可能仅仅会影响输出中的4位。显然,攻击者可以通过更改位于来自V的位置的L0的左半部位的值而撤销轮函数结果的这个变化。此外,必须更改那些值的方式揭露了轮函数的变化。

因此,这样为攻击者提供了一种推导出轮函数的初始输入、对于这个初始输入的一组变化以及对于这些变化中的每一个在轮函数输出中的所得变化的方法。如果轮函数本身未提供充分的安全性,则这样就足以提取密钥。如上所述,总体上是这样的情况:轮函数只有在应用足够的次数时才能提供足够的安全性。

应注意,在白盒环境中,这种攻击很容易执行。攻击者可以在第一轮开始时引入错误,攻击者只需要观察算法输出处的结果即可。因此,攻击者在理解(逆向编写)白盒实施方案时不需要耗费很大工作量。

如上所述,密码算法的实施方案可以看作基本块网络,其中基本块是无法中断的函数的实施方案。举例来说,在Chow等人的基于表格的白盒实施方案中,查找表是基本块。在有限状态机方法中,有限状态机是基本块。在另一个实例中,通过源到源代码模糊处理变换经过模糊处理的标准实施方案包括各个指令,这些指令是基本块。

本发明的实施例可以包括以下内容。假设b是来自Feistel密文的右半输入R0的位,并且假设B是具有b或b的编码作为输入的基本块。于是,不可能通过用与b的变化影响轮函数输出相同的方式改变左半输入L0的值来补偿B的输入中的b的变化。换言之,无法改变(1)B的输入中的b位和(2)左半输入L0,使得完整的密文的输出在施加(1)和(2)的变化之前和之后提供相同的输出。

在更具体的例子中,这意味着基本块B的输出的一部分被加到L0以获得R1,其中这个部分依赖于b,于是B的输出也获得依赖于促成L1的b的一部分。

现在将示出将上述概念应用于基于表格的白盒DES实施方案的实施例。首先,将简要论述DES密文。接下来,将描述DES的白盒实施方案。这个白盒实施方案是Chow等人提出的白盒实施方案的简化版本。这个白盒实施方案将具有上述弱点。最后将示出上述概念可以如何用来针对这些攻击提供保护。

Chow提出了用于AES和DES的白盒实施方案。这些白盒实施方案的共同之处是它们借助于经过模糊处理的表格网络来实施密文。因为这些白盒实施方案论述起来很复杂,所以将使用更简单的实施方案来解释本文所述的实施例。然而,这个更简单的白盒实施方案仍然具有Chow的白盒实施方案的基本属性,也即,所有运算被写成经过模糊处理的查找表,并且所有中间结果经过编码。下面论述这个简化的白盒DES实施方案。

图1示出DES密文。加密和解密仅仅在轮密钥的顺序方面彼此不同。DES密文100包括16轮。在第一轮之前存在初始排列(IP)110,并且在最后一轮之后,存在最终排列(FP)140。一轮的64位输入划分成两个32位的半部102、104。右半部变成下一轮的左半部。此外,向右半部应用轮函数(F)120,并且将结果与左半部进行异或运算130。这样会产生下一轮的右半部。此结构被称作Feistel方案。对于16轮重复这个轮结构。

图1的右侧描绘DES的轮函数(F)120。首先,扩展算子(E)122复制其16位(半字节的外侧2位),借此将其32位输入扩展至48位。将输出的扩展48位与轮的子密钥进行异或运算124。这样得到八个6位值,其被输入到8个不同的S盒(S1-S8)126中。对于不同轮而言,该组S盒(S1-S8)126中的每个S盒是相同的。每个S盒将其6位输入映射成4位输出。最后通过对S盒的输出应用固定的32位排列(P)128而获得轮函数的32位输出。

现在描述白盒DES实施方案。

首先如图2-图4中所示确定DES的替代公式200。不是拆分成32位左半部和32位右半部的64位数据块,而是中间值变成这两个值,扩展算子被应用于这两个值。对于第一轮,如图2中所示,这意味着输入必须用扩展算子经过预处理,对于最后一轮,如图4中所示,这意味着必须通过移除扩展算子重复的位的复本而对输出进行后处理。后处理运算表示为E-1。对于中间轮,如图3中所示,这意味着,不是向轮r的S盒的输入应用扩展算子,而是向前一轮r-1中的轮函数的输出应用扩展算子。也就是说,在排列运算之后应用扩展算子。通过将排列和扩展运算合并成与单个矩阵M的乘法,并且通过在S盒运算中并入密钥添加操作,获得图2、图3、图4、图5和图6中所描绘的公式。基于这些公式,将推导出白盒实施方案。

白盒实施方案的推导包括两个步骤。在第一步骤中,将实施方案写成查找表的网络。在第二步骤中,对获得的查找表网络进行模糊处理。

将DES写成查找表网络

首先,将矩阵M分割成4列8条,也就是说,Mi(其中i=1,2,…,8)被定义为48乘4的矩阵,使得M=(M1M2...M8)。为了简化符号表示,Mi也是作为与用Mi的矩阵乘法相关联的线性映射。接着,通过给出轮函数的48位输出。如果针对每个函数定义6到48位查找表Qi510,使得并且如果定义了用于两个3位字的异或操作的查找表,则可以将轮函数输出y的计算写成查找表网络,其中输出y被计算为此外,通过使用异或操作查找表520,可以通过仅仅使用查找表来实施Feistel结构。图5示出仅仅使用查找表的DES密码的轮函数和异或函数的白盒实施方案。为了实施DES密码的一轮,将需要具有多个异或查找表520的八个Q表Q1…Q8以组合所述八个Q表的输出。

查找表的模糊处理网络

在图5中说明的实施方案中,可易于从Q表提取密钥。仅向输出应用扩展运算(E)、排列操作(P)和S盒操作的逆操作,会得到纯密钥添加操作。为了防止这点,可以用任意双映射函数编码所有查找表的输入和输出。这意味着,查找表与编码函数合并,编码函数对输出进行编码并且与对输入进行解码的解码函数合并。编码被选择使得一个表格的输出编码与在下一个表格中采用的输入编码匹配。图6示出图5的白盒实施方案的模糊处理。更具体来说,图6示出使用函数对Q表的经过模糊处理的输入进行解码,并且使用函数fi,1...fi,12对Q表的十二个输出进行模糊处理。另外,使用适当的逆函数对Q表之后的异或表620的输入进行解码。接着使用函数h对异或表620的输出进行编码。在这个实例中,示出了两个Q表610、612,并且通过异或表620组合其输出的前3位。这个结构可以扩展以实施完整的轮函数。应注意,在所获得的白盒实施方案中,查找表和中间值两者都经过模糊处理。对于第一轮,Q表的输入不具有输入解码以便与DES兼容。出于相同原因,最后一轮的最后异或表上没有输出编码。

现在将示出可以如何如上所述修改以上实施方案以克服上述弱点。修改的描述是基于图2、图3、图4和图5中所描绘的基于未经模糊处理的表格的实施方案。接下来可以通过用与上文在图6中提出的相同的方式(即,通过合并查找表与编码和解码功能)对查找表网络进行模糊处理,借此获得使用具有经编码的中间结果的白盒实施方案。

可以如下制定本发明的实施例的基本特征:如果基本块B的输出的一部分被添加到L0以获得R1,其中这个部分依赖于右半输入位b,则B的输出也包括依赖于促成L1的b的部分。

在图5的实施方案中,基本块是查找表。因此,这意味着如果对于E(R0)使用查找表T的输出v的一部分,并且这个部分依赖于来自R0的输入位b,则T的输出也包括依赖于b并且促成E(L1)的部分。对于图5中所示的Qi表符合上述条件(1)和(2)。然而,这个表的输出显然不具有其用于E(L1)的部分的属性。因此,图5的白盒实施方案无法克服上述弱点。因为这一点,攻击者注入不符合轮函数使用的值的E(L1)的值,这会产生可能被用来提取密钥信息的弱点。

确保Qi表的输出也用于E(L1)的一种简单的方法是扩展表的输出使得除了轮函数之外,它还计算E(L1)。

为了看出可以如何实现这一点,首先注意可以如中图7所描绘的编写DES的第一轮。图7示出图5的修改方案,其作为计算的一部分输出E(L1)。因此,从S盒的输入而不是轮函数的输入中获得左侧值E(L1)。如果现在通过上述查找表网络实施这个(即,通过分裂矩阵M),则在图8中描绘包括表的DES结果的第一轮的实施方案,并且如上所述使用异或表来组合表的输出。图8示出了修改后的Qi表。这些Qi表具有6位输入;但是,Qi表的输出增加了6位,从48位变成54位。这6个另外的位变成值E(L1)的一部分,也即,可以组合八个Qi表的六个另外的位以形成值E(L1)。

可以检验这个查找表满足上述属性:对于的六个输入位中的任何位b,输出包括依赖于b并且促成E(R1)的部分,并且它包括依赖于b并且促成E(L1)的部分。因为这是在单个基本块中进行的,所以攻击者无法使b的两个不同的值用于白盒实施方案中。因此,可以克服上文指出的弱点。

根据本发明的实施例的方法可在计算机系统上实施为计算机实施的方法。用于根据本发明的方法的可执行码可存储在计算机程序媒体上。计算机程序媒体的实例包括存储器装置、光学存储装置、集成电路、服务器、在线软件等。因此,白盒系统可以包括实施白盒计算机程序的计算机。此系统还可包括其它硬件元件,包括存储装置、用于向外部系统以及在白盒系统的元件之间传输数据的网络接口。

在本发明的一实施例中,计算机程序可包括适于当计算机程序在计算机上运行时执行根据本发明的方法的所有步骤的计算机程序代码。优选地,计算机程序具体实施在非暂时性计算机可读媒体上。

另外,因为白盒加密术往往是非常复杂和/或模糊的,所以人类编写起来很繁琐。因此,具有以自动化的方式创建根据本发明的实施例的加密系统的方法是有利的。

创建根据本发明的加密系统的方法可在计算机上实施为计算机实施的方法,或在专用硬件中实施,或在这两者的组合中实施。用于根据本发明的方法的可执行码可存储在计算机程序媒体上。在此方法中,计算机程序可包括适于当计算机程序在计算机上运行时执行所述方法的所有步骤的计算机程序代码。计算机程序具体实施在非暂时性计算机可读媒体上。

本文所述的密码系统可以实施在例如移动电话、平板电脑、计算机、机顶盒、智能TV等用户装置上。例如电视网络、视频流服务、金融机构、音乐流式传输服务等内容提供者可以向用户装置提供软件以从内容提供者接收加密内容。软件可具有如上所述被嵌入在其中的密码密钥并且还可包括如上所述的绑定串。接着内容提供者可向用户装置发送加密内容,该用户装置接着可使用所供应的软件解密并使用该内容。

图9示出用于提供用户装置安全内容以及处理所述安全内容的软件应用的系统。该系统包括内容服务器900、应用服务器980、用户装置950、952和数据网络940。用户装置950、952可以请求访问内容服务器900经由数据网络940提供的安全内容。数据网络可以是提供用户装置950、952与内容服务器900和应用服务器980之间的连接性的任何数据网络。用户装置950、952可为多种装置中的一种,例如,机顶盒、媒体流式传输器、数字视频记录器、平板电脑、移动电话、膝上型计算机、便携式媒体装置、智能手表、台式计算机、媒体服务器等。

用户的访问请求可能首先需要下载可用于处理由内容服务器900提供的安全内容的软件应用。所述软件应用可从应用服务器980下载。软件应用可使用上文描述的技术来模糊处理并且如上文描述而操作。一旦用户装置950、952安装了软件应用,用户装置随后就可以从内容服务器900下载安全内容并且使用所下载的软件应用获取安全内容。举例来说,所下载的软件应用可执行从内容服务器接收的加密内容的解密。在其它实施例中,软件应用可执行其它安全操作,例如,加密、数字签名产生和验证等。

内容服务器900可控制对提供给用户装置950、952的安全内容的访问。因此,当内容服务器900接收到对于安全内容的请求时,内容服务器900可将安全内容传输给发出请求的用户装置。同样,应用服务器920可控制对提供给用户装置950、952的软件应用的访问。因此,当内容服务器920接收到对于软件应用的请求时,应用服务器920可将软件应用传输给发出请求的用户装置。在将软件应用或安全内容提供给用户装置之前,也可以通过相应的服务器来鉴认请求软件应用或安全内容的用户装置。

内容服务器900可以包括处理器902、存储器904、用户接口906、网络接口910和内容存储装置912,其经由一或多个系统总线980互相连接。将理解,在一些方面中,图9构成抽象图,并且装置900的组件的实际组织可能与图示的相比复杂的多。

处理器902可以是能够执行存储在存储器904或存储装置912中的指令的任何硬件装置。由此,处理器可以包括微处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或其它类似装置。

存储器904可包括各种存储器,比如,例如,L1、L2或L3高速缓冲存储器或系统存储器。因此,存储器902可以包括静态随机存取存储器(SRAM)、动态RAM(DRAM)、快闪存储器、只读存储器(ROM),或其它类似存储器装置。

用户接口906可包括用于实现与例如管理员的用户通信的一个或多个装置。例如,用户接口906可以包括用于接收用户命令的显示器、鼠标和键盘。

网络接口910可以包括用于实现与其它硬件装置的通信的一个或多个装置。例如,网络接口910可包括网络接口卡(NIC),该网络接口卡被配置成根据以太网协议通信。另外,网络接口910可实施TCP/IP堆栈以用于根据TCP/IP协议通信。用于网络接口910的各种替代的或另外的硬件或配置将是显而易见的。

内容存储装置912可以包括一个或多个机器可读内容存储媒体,例如只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒体、光学存储媒体、快闪存储器装置或类似存储媒体。在各种实施例中,内容存储装置912可存储待提供给用户的内容。

应用服务器920包括与内容服务器900中的元件一样的元件,并且对于内容服务器900中的相同的元件的描述适用于应用服务器920。并且,内容存储装置912被应用存储装置932代替。另外,应注意,内容服务器和应用服务器可以在单个服务器上实施。并且,此类服务器可以在分布式计算机系统上实施以及在云端计算机系统上实施。

在处理器上运行以实施本发明的实施例的特定软件的任何组合构成特定专门机器。

如本文所使用,术语“非暂时性机器可读存储媒体”将理解为排除暂时传播信号但包括所有形式的易失性和非易失性存储器。此外,如本文所使用,术语“处理器”将理解为包括多种装置,例如微处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)和其它类似处理装置。当软件在处理器上实施时,所述组合变为单个特定机器。

本领域的技术人员应了解,本文中的任何框图表示具体实施本发明的原理的示意性电路的概念视图。

尽管已经具体参考各种示例性实施例的特定示例性方面来详细地描述各种示例性实施例,但应理解,本发明能够容许其它实施例且其细节能够容许在各种显而易见的方面的修改。如对本领域的技术人员显而易见的,在保留在本发明的精神和范围内的同时可以实现变化和修改。因此,上述公开、描述和图式仅出于说明性目的并且并不以任何方式限制本发明,本发明仅由权利要求书限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1