为白盒实施方案的输入和输出加水印的制作方法

文档序号:11775121阅读:184来源:国知局
为白盒实施方案的输入和输出加水印的制作方法与工艺

本文所公开的各种示例性实施例大体上涉及为密码编译函数的白盒实施方案的输入和输出加水印。



背景技术:

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

密码编译算法通常在考虑到黑色攻击模式的情况下予以设计。这意味着假定攻击者仅具有对所述算法的输入/输出行为的访问权。然而,实际上,攻击者通常能够访问更多信息。举例来说,攻击者可访问关于算法的执行的邻信道信息。在这种情况下,攻击模式被称作灰盒。在被称作白盒攻击模式的最极端情况下,攻击者甚至可完全访问和完全控制运行所述算法的执行环境。

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

内容提供商必须跨越与一群体敌对的网络将内容递送到合法用户,所述群体中并非所有用户或装置可信任。在一些情况下,用户装置可具有辅助内容的散布的硬件密码编译解决方案。即使这种硬件解决方案可能仅允许观测输入和输出,攻击者也有可能如上所述获得对邻信道信息的访问权,该邻信道信息允许攻击者破解密码编译函数。

硬件密码编译解决方案行不通的情形引发白盒密码编译术的发展。在白盒密码编译术情形中,假定用户完全控制提供对内容的访问权的硬件和软件,并且具有无限量的时间和资源来攻击和绕过任何内容保护机构。强制执行可使用内容所依据的条款和条件的安全软件代码应当有防篡改功能。数字权限管理是安全软件应用程序中的一种常见应用。用于散布到用户装置的受保护内容的数字权限管理的一般方法是使用例如数据加密标准(dataencryptionstandard,des)、高级加密标准(advancedencryptionstandard,aes)或使用其它已知加密方案来对数字内容进行加密,并且使用解密密钥恢复数字内容。这些解密密钥必须被保护以防止对受保护材料的未授权的访问。

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



技术实现要素:

下文呈现各种示例性实施例的简要概述。在以下概述中可能做出一些简化和省略,旨在突出并介绍各种示例性实施例的一些方面,而非限制本发明的范围。在稍后的章节中将描述足以允许本领域的普通技术人员获得且使用本发明概念的示例性实施例的详细描述。

各种实施例涉及一种非暂时性机器可读存储媒体,该非暂时性机器可读存储媒体编码有用于通过带密钥的密码编译加密运算而将输入消息映射到输出消息的指令,其中所述带密钥的密码编译加密运算包括第一轮,包括:用于对输入消息的第一部分执行替换函数以产生输出的指令,其中所述替换函数并有密码编译密钥的一部分;以及用于对所述输出执行加水印函数的指令,其中所述加水印函数在所述第一输入部分具有特定预定值时产生水印输出,其中所述水印输出唯一地识别带密钥的密码编译加密运算。

另外各种实施例涉及一种通过带密钥的密码编译加密运算将输入消息映射到输出消息的方法,其中所述带密钥的密码编译加密运算包括第一轮,包括:对所述输入消息的第一部分执行替换函数以产生输出,其中所述替换函数并有密码编译密钥的一部分;以及对所述输出执行加水印函数,其中所述加水印函数在所述第一输入部分具有特定预定值时产生水印输出,其中所述水印输出唯一地识别所述带密钥的密码编译加密运算。

描述各种实施例,其中加水印函数在第一输入部分具有除所述特定预定值之外的值时产生加权输出。

描述各种实施例,其中:所述密码编译加密运算是高级加密标准(aes)操作;并且所述加水印函数实施aes列混合操作的一部分。

描述各种实施例,其中产生水印输出是进一步基于水印条件,其中所述水印条件是基于输入消息的第二部分。

描述各种实施例,其中所述输入的第一部分是第一ascii值,且其中水印值是具有类似于第一ascii值的外观的不同的第二ascii值。

描述各种实施例,其中带密钥的密码编译加密运算包括多个查找表。

描述各种实施例,其中带密钥的密码编译加密运算包括多个有限状态机。

另外各种实施例涉及一种非暂时性机器可读存储媒体,该非暂时性机器可读存储媒体编码有用于通过带密钥的密码编译解密运算而将输入消息映射到输出消息的指令,其中所述带密钥的密码编译解密运算包括最后一轮和一状态,包括:用于在输入到最后一轮之前对所述状态的第一部分执行加水印函数的指令,其中所述加水印函数在所述第一部分具有特定预定值时产生第一输出;用于在最后一轮中对第一输出执行替换函数以产生水印输出的指令,其中所述替换函数并有密码编译密钥的一部分,其中所述水印输出唯一地识别带密钥的密码编译加密运算。

另外各种实施例涉及一种通过带密钥的密码编译解密运算将输入消息映射到输出消息的方法,其中所述带密钥的密码编译解密运算包括最后一轮和一状态,包括:在输入到最后一轮之前对所述状态的第一部分执行加水印函数,其中所述加水印函数在所述第一部分具有特定预定值时产生第一输出;在最后一轮中对第一输出执行替换函数以产生水印输出,其中所述替换函数并有密码编译密钥的一部分,其中所述水印输出唯一地识别带密钥的密码编译加密运算。

描述各种实施例,其中加水印函数在第一输入部分具有除特定预定值之外的值时产生等于所述第一输入部分的输出。

描述各种实施例,其中产生所述水印输出是进一步基于水印条件,其中所述水印条件是基于所述状态的第二部分。

描述各种实施例,其中所述密码编译解密运算属于高级加密标准(aes)操作。

描述各种实施例,其中当所述状态的第一部分被输入到替换函数时,得到第一ascii值,且其中水印值是具有类似于所述第一ascii值的外观的不同的第二ascii值。

描述各种实施例,其中带密钥的密码编译解密运算包括多个查找表。

描述各种实施例,其中带密钥的密码编译解密运算包括多个有限状态机。

附图说明

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

图1示出aes的一轮回的主要步骤;

图2示出具有对各轮回的输入的固定编码的白盒aes实施方案;

图3示出借助于查找表的网络的一个输出半字节的计算;

图4示出通过对输入和输出进行编码来混淆的图3的网络表的一部分;

图5示出将水印应用到用于状态的特定字节的解密运算的输出的表网络;

图6示出具有与四个乘表一起使用的单个t表的表网络;

图7示出对图6的表网络的修改;

图8示出将水印应用到用于所述输入的特定字节的加密运算的输入的表网络;以及

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

为了促进理解,相同附图标号用于指代具有基本上相同或类似结构和/或基本上相同或类似功能的元件。

具体实施方式

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

如上文所描述,白盒密码编译术有关于在软件中实施密码编译算法,使得攻击者难以提取密钥。即使白盒实施方案的设计者很好地实现这一点,攻击者也可能不公开密钥,而是公开被解密的内容本身。一种已知的克服这个问题的方法是给内容加水印,使得内容提供商可以寻找泄露的源头。本文描述包括一种用于以隐秘方式给内容加水印的方法的实施例。也就是说,替代显式地在白盒实施方案的输出上加水印,所述方法将用于在内容上加水印的算法整合于解密算法的实施方案中。虽然这样并不直接防止非法散布,但间接有作用,因为这使内容提供商能够随非法副本追溯到泄露者。知道了泄露者,内容提供商接下来能够采取充分措施,例如拒绝向泄露者提供更多内容。

颁给katzenbeisser等的美国专利us8726029(简称katzenbeisser)描述了一种添加水印到白盒实施方案的输出的方式。简单来说,katzenbeisser的方法将加水印算法实施成查找表网络,并且把所述查找表网络紧附于白盒实施方案的结尾。本文所描述的实施例使用了一种替代技术。这种替代技术识别纯文本块集合w。接下来,建构对于不在w中的所有块而言正常执行的白盒实施方案。对于w的各块,对纯文本块进行改变。对于白盒实施方案的不同实例化,这些改变有所不同。为有效地作为水印,可选择所述集合w和所述改变的类型,使得所述改变难以察觉。

此外,替代将水印置于解密算法的输出上以实现泄露者追踪,所述替代技术也可用于将水印置于加密算法的输入上。这给出一种用于对消息进行签名的方法,因为置于所述输入上的水印与产生该水印的白盒实施方案有关。

颁给michiels等的标题为“白盒实施方案中的行为指纹(behavioralfingerprintinawhite-boximplementation)”的美国专利申请案第14/263,372号(简称“michiels”)描述了实施例,其中尤其是白盒实施方案被修改,使得对于输入的小型集合v,白盒实施方案给出不正确答案。此外,这些不正确答案对于不同用户有所不同。因此,所述不正确答案可用作白盒实施方案的指纹:如果用户非法散布其白盒实施方案,则非法散布的白盒实施方案可具备来自v的输入,从而发现泄露的源头。

替代将指纹置于白盒实施方案上,本文描述的实施例将水印施加在白盒实施方案的输入或输出上。对于解密算法,这意味着虽然michiels描述一种用于追踪非法散布白盒实施方案的泄露者的方法,但本文所描述的实施例的方法意在追踪非法散布白盒实施方案的结果(例如,内容)的泄露者。

为了明白与michiels的不同,扼要重述michiels的两个基本特征:

●michiels识别具有k个指纹消息的小型集合v,白盒实施方案对该小型集合v给出不正确答案。可选择所述集合v和所述值k,使得在正常执行中遇到所述消息的机率可忽略。举例来说,v可选择为具有一个随机选择的消息的单元素集合;以及

●针对来自v的消息的白盒实施方案结果可以是任意的,即,该结果并不受必须满足的一些条件限制。

另一方面,本文所描述的当前实施例包括以下特征:

●识别具有l个水印纯文本消息的小型集合w,白盒实施方案对该小型集合w给出不同答案。选择所述集合w和所述值l,使得如果某一内容需要加水印,该内容具有至少一个来自集合w的消息的机率几乎为1;以及

●白盒实施方案对来自w的消息所进行的改变使得所述改变很难察觉。

这可如下实现。白盒实施方案(例如,基于表的白盒实施方案)是密码编译算法a的混淆化实施方案。在这样的实施方案中,以混淆化方式合并谓词p(m)∈{0,1,...,l}的计算。所述谓词使得如果m并非是来自w的l个消息中的一者,则p(m)=0,并且如果m是来自w的第j个消息,则p(m)=j。当时p(m)>0时,a的实施方案包括干预(例如,通过改变中间值),使得该实施方案可提供不同但很难察觉的答案。当p(m)=0时,a的实施方案不提供不正确答案。由于整个实施方案大量地混淆化,因此难以检测和去除水印部分。

相对于硬件实施方案,优选密码编译算法的软件实施方案存在若干原因。举例来说,这可能是因为软件解决方案在密钥泄露的情况下可再生,因为软件解决方案具有较低成本,或因为应用程序开发者对实施有白盒系统的硬件没有影响。虽然以下实施例的描述是针对在处理器上运行的软件实施方案,但应注意,这些实施例也可部分或完全地在硬件中实施。所描述的查找表和有限状态机可在硬件中实施以执行所描述的各种函数。

一种用于高级加密标准(aes)和数据加密标准(des)的白盒实施方案的基于表的方法在以下论文中提出:“白盒密码编译术和aes实施方案(white-boxcryptographyandanaesimplementation)”,由stanleychow、philipeisen、haroldjohnson和paulc.vanoorschot在2002年8月15-16日于加拿大纽芬兰圣约翰在“密码编译选定区(selectedareasincryptography):第9届年度国际研讨会,sac2002”中提出,以下称作“chow1”;以及“用于drm应用程序的白盒des实施方案(awhite-boxdesimplementationfordrmapplications)”,由stanleychow、phileisen、haroldjohnson和paulc.vanoorschot在2002年11月18日于美国华盛顿特区在“数字权限管理(digitalrightsmanagement):acmccs-9研讨会,drm2002”中提出,以下称作“chow2”。chow1和chow2公开了使用基于表的方法,所述方法通过随机双映射对表进行编码与通过将密码编译边界推进到包含应用程序中而延伸该密码编译边界的组合来隐藏密码编译密钥。

如所指出,对于许多密码编译运算来说,希望具有白盒实施方案。本发明可应用于(例如)对称和不对称密码编译运算。另外,本发明可应用于分块密码、流密码、消息认证方案、签名方案等。应注意,本发明也可应用于散列函数。后者在散列函数用作处理(例如)机密密钥、机密数据等机密信息的构建块的情况下尤其有用。举例来说,本发明可应用于在带密钥的散列消息认证码(keyed-hashmessageauthenticationcode,hmac或khmac)中使用的散列函数。众所周知的分块密码包括:高级加密标准(aes)、安全快速加密例程(secureandfastencryptionroutine,safer,以及变体safer+和safer++)、blowfish、数据加密标准(des)等。众所周知的流密码是rc4。另外,任何分块密码可使用合适的操作模式(例如,密码反馈(cipherfeedback,cfb)、计数器模式(countermode,ctr)等)用作流密码。

输入消息可表示(例如)已加密内容数据,例如包含音频和/或视频数据的多媒体数据。已加密内容数据还可包括已加密软件,例如表示某一计算机应用程序(例如计算机游戏或办公应用程序)的已加密计算机代码。输入消息还可表示用于另一密码编译运算的密钥。后者可用在(例如)密钥交换协议中,其中,根据本发明的白盒实施方案对表示新密钥的数据进行加密和/或解密。输入数据还可以是纯数据,例如,纯用户数据。后者在消息认证方案中尤其有利。根据本发明的白盒实施方案可具有如下属性:该实施方案仅可用于加密、仅可用于解密,但不同时用于两者。举例来说,如果所述实施方案使用不是双映射的查找表(例如输入位比输出位多的查找表),那么这个属性可以实现。因此,如果用户仅具有白盒解密器,则该用户可以验证mac代码但不能创建新的mac。这强化了此种消息认证方案的不可否认属性。

白盒实施方案可使用多个基本块来实施。一些块是基于先前块中的一个或多个块的输出而构建,在这个意义上,所述多个基本块互连。基本块可(例如)作为计算机芯片在硬件中实施。基本块可使用开关板、状态机或用于在计算机硬件中实施函数的任何其它合适的建构。基本块还可实施于在通用计算机芯片(例如微处理器)上运行的软件中。举例来说,基本块可使用包括算术指令的多个计算机指令,所述多个计算机指令一起实施该基本块的功能性。在软硬件中均可使用的基本块的广泛使用的实施方案是查找表。举例来说,chow1和chow2采用这种方法来实施aes和des分块密码。查找表实施方案包括列出可能的输入值、输出值的列表。查找表中的输入值可能是显式的。在此情况下,通过在输入值列表中搜索特定输入,所述查找表实施方案可以将特定输入映射到特定输出。当发现特定输入时,也会接着发现特定输出。举例来说,特定输出可存储在特定输入旁边。优选地,仅隐式地而非显式地存储输入值。举例来说,如果可能的输入是连续范围(例如)的数字或位串,那么查找表可限于存储输出值的列表。例如,特定输入数字可映射到存储在由该数字指示的位置的特定输出。此外,有限状态机或代码混淆处理可用于实施白盒实施方案。

举例来说,函数的查找表可通过计算该函数的对于它可能的输入的输出值,并且将所述输出存储在列表中而创建。如果该函数取决于多个输入,那么可针对所述多个输入的全部可能组合来计算并且存储输出。查找表尤其适合实施非线性函数,所述非线性函数以不规律的方式将输入映射到输出。通过将固定混淆输入编码和固定输出编码应用于白盒实施方案的一或多个查找表,可进一步对该白盒实施方案进行混淆化,如下文所解释。接着,全面地预评估应用固定混淆输入编码和输出编码的结果。通过使用此技术,查找表将被具有相同维度的混淆化查找表代替,该混淆化查找表采用相同数目的输入位,并且产生相同数目的输出位。用于此类混淆处理中的输入编码和输出编码在最终的白盒实施方案中不是显式的。

基本块的网络被布置成在向它们呈现输入消息时计算输出消息。通常,输入消息通过多个基本输入块来运算。数个另外的基本块可采用来自一个或多个基本输入块和/或输入的输入。又另外的基本块可采用输入消息、基本输入块的输出与所述另外的基本块的输出的任何组合中的输入。最后,基本退出块的某个集合(即至少一个基本退出块)产生全部或部分输出消息作为输出。以此方式,显现共同计算从输入消息到输出消息的映射的基本块网络。

所使用的密钥可以是密码编译密钥,并且可含有足够的熵来承受预见的强行攻击。应注意,在白盒实施方案中,密钥通常不是显式地存在于该实施方案中。这样会有通过检测该实施方案发现密钥的风险。通常,该密钥仅隐式地存在。已知将密钥隐藏于密码编译系统中的各种方式。通常,至少使用部分评价的方法,其中对需要密钥输入的基本块进行评估,因为到目前为止,该基本块并不取决于输入消息。例如,其中输入值、不取决于输入消息的掩蔽值(例如,来自替换盒(s盒)的值)以及密钥值需要进行异或运算的基本运算可以通过对该密钥值和该掩蔽值一起预先进行异或运算来进行部分评估。以此方式,所述运算仍然取决于密钥值,尽管该密钥值并非显式地存在于该实施方案中。实际上,仅有密钥值与掩蔽值之间的异或存在于该实施方案中。应注意,隐藏密钥的更复杂的方式和/或另外的方式与本发明的实施例兼容。

以下白盒实施例使用高级加密标准(aes)分块密码来描述,因为aes已成为分块密码的广泛使用标准。aes是具有128位或16字节的块大小的分块密码。纯文本被划分为形成加密算法的初始状态的16字节的块,加密算法的最终状态是密码文本。在加密算法中的任何给定点,这些16字节是该加密算法的状态。为了从概念上解释aes,所述状态的字节被组织为4×4字节的矩阵。aes包含取决于密钥大小的轮回次数。每一轮包括对状态矩阵的字节、行或列操作的类似处理步骤,在这些处理步骤中,每一轮使用不同的轮回密钥。应注意,在使用aes作为例子的论述中,aes以特定方式限定轮回。在以下实施例中,轮回是包括至少一个非线性映射函数(例如aes中的s盒)的步骤的任何分组。因此,下文所描述的轮回包括一个非线性映射函数以及密码编译函数的其它步骤的任何组合。此外,轮回的边界可开始于非线性映射函数(例如,s盒)或可与该非线性映射函数合并的任何其它运算(例如,密钥加法)。

图1示出aes的轮回的一些主要处理步骤。所述处理步骤包括:

addroundkey110-状态的每一字节与轮回密钥的字节进行异或运算;

subbytes120-使用查找表的字节到字节排列;

shiftrows130-将状态的每一行旋转固定字节数;以及

mixcolumns140-使用gf(28)中的模乘(modulomultiplication)来处理每一列。

步骤subbytes120、shiftrows130和mixcolumns140与所使用的特定密钥无关。所述密钥在步骤addroundkey110中应用。可在不知晓其它列的情况下对4×4状态矩阵的每一列执行所述处理步骤,除步骤shiftrows130以外。因此,所述处理步骤可视为32位运算,因为每一列由四个8位值构成。虚线150指示重复该过程直到已执行所需次数的轮回。

这些步骤中的每一者或步骤的组合可由查找表或由查找表的网络表示。如果步骤addroundkey110通过与轮回密钥进行异或运算来实施,则在白盒攻击情形下,密钥是攻击者可见的。步骤addroundkey110也可嵌入于查找表中,这使得不太容易找出密钥。实际上,有可能利用查找表的网络替换aes的完整轮回。举例来说,步骤subbytes120、shifirows130和mixcolumns140可使用表查找来实施。下文中,以充分细节论述aes的可能白盒实施方案,从而在下文描述本发明的实施例,但是此种实施方案的另外详细描述在chow1中可见。而且,可使用查找表实施方案的属于本发明的范围内的其它变体。

基于表的白盒实施方案和有限状态机实施方案两者均具有以下属性:实施方案中的所有中间值被编码(相比于标准实施方案)。使用有限状态机的白盒实施方案的例子在标题为“数据处理方法(dataprocessingmethod)”的美国专利公开案2007/0014394中公开,并且在由wulfharder和atisstraujums于2008年3月11日在名为“协同软件mcfacttm安全数据处理技术(synchrosoftmcfacttmsecuredataprocessingtechnology)”的re-trust第六次季度会议(re-trustsixthquarterlymeeting)的演示文稿中公开,上述各者出于所有目的以引用的方式并入本文中,如同在本文中完全阐述。图2示出在轮回的输入上(即在s盒的输入上)具有固定编码的白盒aes实施方案。如所示,16个输入字节中的每一者由fi编码,并且输出字节中的每一者由gi编码。

为了描述本发明的实施例,将描述基于表的白盒aes实施方案的基本描述。对于用于实施基于表的白盒aes的方法的更详细描述,请参看chow1。chow1示出使用指定大小的表来分解某些函数的特定实施方案。当然,可对表进行各种其它划分,从而产生查找表的不同函数和不同大小。此外,虽然下文所描述的本发明的实施例使用基于表的aes的白盒实施方案,但根据所描述的实施例,可实施其它密码和密码编译函数。而且,可使用不是基于表的实施方案的其它类型的白盒实施方案,例如,有限状态实施方案。

基于表的白盒aes的描述分为两个步骤。在第一步骤中,aes的轮回被描述为查找表的网络。在第二步骤中,通过对表的输入和输出进行编码而混淆所述表。

步骤1:将aes实施为查找表的网络。

对16字节的数据块执行aes运算。这些数据块通常被描述为4×4字节矩阵,称为包括字节x1,1、x1,2、x1,3、...、x4,4的状态。如上所述关于图1的aes轮回包括以下运算:addroundkey110、subbytes120、shiftrows130和mixcolumns140。前两个运算addroundkey和subbytes可合并到单个t盒运算中。也就是说,我们可以将输入字节xij的字节到字节函数tij定义为其中,kij是基于aes密钥的16字节轮回密钥的单个字节。令yi,j为ti,j的输出。shiftrows运算仅仅是输出字节yi,j的下标重新编号。为易于呈现,此运算在本说明书中省略,但可被并入到实施ti,j的查找表中或实施为状态矩阵的单独操纵。在mixcolumns步骤中,利用gf(28)中用于一些常数mcl,r的代数表达式从4个输出字节y1,j、y2,j、y3,j和y4,j计算出轮回的输出字节zi,j。

现限定用于每一字节到字节函数qij,l(xi,j)=mcl,i·ti,j(xi,j)的查找表,其中i,j,l=1,2,...,16。接着可通过对这些查找表的结果进行异或运算计算出任何输出字节z1,j,即,应注意,q盒的下标i、j、l可以被解释为“轮回的输入字节i、j对该轮回的输出字节l、j的贡献”。可实施异或运算来对作为查找表的两个半字节(即,4位值)中的每一者进行运算以减小异或表的大小。因此,可实施q盒以产生输出半字节,以便减小表的大小。因此,aes轮回的每一输出字节zl,j的计算已被描述为查找表的网络。计算字节z2,3的单个输出半字节的查找表的网络在图3中示出。

图3示出借助于查找表的网络而对一个输出半字节的计算。q盒中的上标(1)指示各表仅提供q盒的输出的第一半字节。在输入状态310中的一组输入字节x1,3、x2,3、x3,3和x4,3被输入到q盒320、322、324、326中。查找表320和322的输出u1、u2被馈送到异或330中,并且查找表324和异或330的输出u3、u5被馈送到异或332中。表326和异或332的输出u4、u6被馈送到异或334。xor334的输出是输出状态340的输出z2,3的第一半字节。输出状态340的输出z2,3的第二半字节可通过使用额外q盒连同类似异或网络一起以相同方式进行计算。此外,可实施额外表集合,通过接收来自输入状态的字节列并将它们转换成输出状态的对应列的输出来以将输入状态310完全转换到输出状态340。

步骤2:混淆各表和中间值

在图3中所描述的实施方案中,可从q盒轻易地提取出密钥。仅将逆mixcolumns乘法和逆s盒应用于输出揭示了纯addroundkey运算。为防止这一情况,所有查找表的输入和输出用任意双映射函数予以编码。chow1中描述了这一点。这意味着,查找表与对输出进行编码的编码函数合并,并且与对输入进行解码的解码函数合并。选择编码,以使得一个表的输出编码与在下一个表中采用的输入编码匹配。针对第一轮的图3的实施方案的一部分在图4中示出。在此例子中,未对轮回的输入进行编码,以便与aes兼容,但对该轮回的输出进行了编码。输出编码在下一轮回中被处理。也就是说,不同于第一轮,第二轮(以及后续轮回)假设其输入被编码。可替换的是,第一轮可接收已编码的输入。接着,此输入编码必须被应用在包含白盒实施方案的软件程序中的其它地方。类似地,最后一轮可根据输出是否与aes兼容而包括或不包括输出编码。应注意,在所获得的白盒实施方案中,查找表和中间值两者都经过混淆处理。

图4示出通过对输入和输出进行编码来混淆的图3的表的网络的一部分。查找表420、422、424、426对应于图3的查找表320、322、324、326。查找表420、422、424、426的输入分别通过函数e9、e10、e11、e12进行编码。查找表420、422、424、426的输出分别通过函数f1、f2、f3、f4进行编码。异或430对应于异或330。异或430的输入使用f1-1和f2-1对输入进行解码。异或430的输出接着通过函数f5进行编码。异或432、434以类似方式具有如所说明的输入解码和输出编码。输出z2,3使用f7来编码。

现描述解密电子邮件的白盒实施方案的实施例。作为该实施例的第一方面,需要用于给电子邮件添加水印的方法,使得该水印不会分散注意力地存在于最终结果中。一种可能的方法是利用数字“1”(一)改变字母“1”(l)的出现。为方便阅读下文描述,将对数字“1”斜体处理,而字母“l”将使用正常字体。将电子邮件存储为ascii意指电子邮件中的所有字符都存储为字节。因此,如果使用128位aes对电子邮件进行加密,则每一数据块包括16个字符。就此实施例而言,水印w可定义为数据块中除第一字节位置和最末字节位置以外的字节位置集合,即,此种水印描述字母“l”的全部出现由数字“1”替换的位置。此外,为了使水印更隐秘且较不分散注意力,当存在2个连续出现的字母“l”时,不执行所述替换。举例来说,假设含有来自“helloworld”的字母的数据块在第一11位置处被解密。w={10}则水印w={10}利用“helloworld”替换这个短语,但水印w={3}和w={4}并不改变该短语,因为在第三位置处的“l”后边跟着第四位置处的“l”。因为{2,3,...,15}的子集的数目由214给出,所以这一方法产生214个不同的水印,且因此产生区分来自高达214个不同用户的内容的可能性。

在ascii中,字母“1”和数字“1”分别通过0x6c和0x31给定。因此,如果i∈w,则水印w需要白盒实施方案被修改,使得如果白盒实施方案的第i个输出字节等于0x6c,那么该输出字节需要改变为0x31。然而,如果字节i-1或i+1也由0x6c给定,则这个情况不发生。“11”情形的存在可称为将用于确定是否应用水印的水印条件。也可限定其他水印条件。

现将描述针对w={7}(即,将第7字节从“1”改变为“1”)的实施例。如果aes的4×4字节输出状态通过对它的4个行排序而解释为128位串,则字节数7定位于输出状态中的位置(2,3)处。因此,目标是给予上文所论述的白盒实施方案如下功能性:如果输出字节(2,3)具有值“l”且先前字节(2,2)和后续字节(2,4)不具有值“l”,则字节(2,3)的值“l”改变成数字“1”。这意味着图3的表网络会扩展到包括这一功能性。对所述网络的混淆处理可接下来如针对图4所提出的相同方式予以完成。

因此,考虑图3中导出的查找表实施方案。如所论述,轮回10仅包括将查找应用于轮回9的每一输出字节zi,j。因此,当且仅当时,输出字节(i,j)才等于0x6c(它对“l”进行编码)。因此,如果图5中所描绘的表网络在轮回9之后但在轮回10之前插入,则所要功能性添加到所述表网络。

图5示出将水印应用到用于状态的特定字节的解密运算的输出的表网络。表网络500将z2,2、z2,3和z2,4接收为输入。表505确定先前字节是否等于“l”,即,表505确定是否并且相应地输出布尔值(booleanvalue)。同样,表510确定下一字节是否等于“l”,即,表510确定是否并且相应地输出布尔值。表505和510的布尔输出指示水印条件。表515接收来自表505和510的布尔值以及值z2,3。如果表515将不产生输出值“l”或如果先前字节或下一字节将产生输出“l”,则表515输出z2,3。表515的输出在所述输入将产生输出值“l”时且在不论先前字节还是下一字节都将不产生输出“1”时将输出这更正式地指示为:

表515的输出接着输入到将是下一轮回的部分的表520。表520基于它的输入来计算t2,3。这就结束了有关水印w={7}的实施例。

以上呈现将水印置于解密算法的输出上的情况的实施例。水印也可应用于加密算法。这里,纯文本被输入到算法中而非作为算法的输出结果。因此,这意味着所得白盒实施方案既在内容上添加水印又对内容进行了加密。如果以后消息被解密,则水印会显现。所述水印在这种情况下可视为一种签名。如果一则消息含有某一水印,则该水印可指向对该消息进行加密的白盒实施方案。

对于先前实施例,这个实施例通过指示如何修改图3的表网络以添加水印功能性来予以描述。同样,可如图4中所完成的通过添加编码函数来获得最终白盒实施方案。

如上文所描述,图3的q表是t函数和来源于mixcolumns运算的gf(28)乘法的合并。替代合并所述t函数与乘法,这些运算可保持分开。tt因为单个t函数合并到4个q表中,所以在所述运算分割的情况下,每4个乘表需要一个t表。图6示出具有与四个乘表一起使用的单个t表的表网络。表网络600包括产生馈入到四个乘表610、615、620、625中的输出的t表605。来自四个乘表610、615、620、625的输出由此与来自q表的输出相同。

表网络600可接着被修改成如图7中示出的表网络700。图7示出对图6的表网络的修改。表网络700包括t表705、710、715、720。t表705、710、715、720的输出y1,3、y2,3、y3,3、y4,3被分别输入到乘表725、730、735、740。乘表725、730、735、740的输出一起由异或表745、750、755进行异或运算以产生输出z2,3。

图8示出将水印应用到用于输入的特定字节的加密运算的输入的表网络。现将示出为输入添加水印w={7}的实施例。类似于上文所描述的解密实施例,如果表t2,3的输入通过字母“l”给定并且先前和后续字节也没有表现字母“l”,则白盒实施方案应计算对应于所述输入的密文,其中该“l”被替换成数字“1”。这一功能性改变通过利用图8的网络800替换图7中包括t表710和乘表730的加阴影区域而获得。所述网络包括t表805、810、815和乘表820。在网络800中,t表805、815(t2,2和t2,4)是图6和图7中示出的t表(除了不同下标)扩展了一个额外输出位。t表805确定它的输入(该输入是先前字节)是否等于“l”,即,t表805确定是否y2,2=t2,2(6c)并且相应地输出布尔值,该布尔值是额外输出字节。同样,t表815确定它的输入(该输入是下一字节)是否等于“l”,即,t表805确定是否y2,4=t2,4(6c)并且相应地输出布尔值,该布尔值是额外输出字节。表805和815的布尔输出指示水印条件。表820接收来自表805和815的布尔值以及来自t表805的值y2,3。如果输入值不是“l”或如果先前输入字节或者下一输入字节是“l”,则表820输出y2,3。在输入是“1”时并且在不论先前字节还是下一字节都是“1”时,表820的输出将输出t2,3(31)。这更正式地指示为:

表820的输出接着如上文所描述输入到异或网络。这就结束了有关水印w={7}的加密实施例。

应注意,虽然上文描述添加水印的加密和解密实施例的具体例子,但各种其它例子也属于本领域的技术。举例来说,可进行其它替换以指示输入或输出数据内的各种位置中的水印。此外,替换重复值可包括也可不包括于水印中。而且,虽然描述在ascii文本的情形下的替换,但也可进行其它类型的数据的替换。

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

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

此外,因为白盒密码编译术往往非常复杂和/或被混淆化,所以人工写入很繁琐。因此,具有以自动化的方式创建根据本发明的实施例的密码编译系统的方法是有利的。

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

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

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

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

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

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

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

存储器904可包括各种存储器,例如,l1、l2或l3高速缓冲存储器或系统存储器。因而,存储器902可包括静态随机访问存储器(staticrandomaccessmemory,sram)、动态ram(dynamicram,dram)、闪速存储器、只读存储器(readonlymemory,rom),或其它类似存储器装置。

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

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

内容存储装置912可包括一个或多个机器可读内容存储媒体,例如只读存储器(rom)、随机访问存储器(random-accessmemory,ram)、磁盘存储媒体、光学存储媒体、闪速存储器装置,或类似存储媒体。在各种实施例中,内容存储装置912可存储将提供给用户的内容。

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

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

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

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

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

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