专利名称:数字数据处理单元的防篡改的制作方法
技术领域:
本发明涉及提高数字数据处理单元的防篡改。
背景技术:
互联网向用户提供了方便而普遍存在的对数字内容的访问。由于
互联网作为有力分配渠道的潜在可能性,许多消费电子(CE)产品努 力争取直接接入互联网或者与PC平台(到互联网的主导性入口 )互操 作。CE产品包括但不限于数字机顶盒、数字电视、游戏控制台、PC以 及越来越多的手持设备,诸如PDA、移动电话以及移动存储和呈现设备 (例如苹果公司的iPod)。使用互联网作为用于有版权内容的分发媒
介形成了对保护内容提供商利益的不得不接受的挑战。特别地,要求 保证内容提供商的版权和商业模式。越来越多地,通过使用加栽有适 当软件的处理器来操作CE平台。这种软件可以包括用于呈现(回放) 数字内容(例如音频和/或视频)的主要功能部分。回放软件的控制是 实现内容所有者的利益的一种方式,这些利益包括可以使用所述内容 的条款和条件。在传统上,许多CE平台(除了 PC和PDA之外)常常 是封闭的,而如今越来越多的平台是至少部分地开放的。特别是对于 PC平台而言,可以假设一些用户对于提供对所述内容的访问的硬件和 软件具有完全的控制以及具有大量的时间和资源来攻击和旁路绕过任 何内容保护机制。结果,内容提供商必须通过到其中不是所有的用户 或设备都可以被信任的社区的不利网络来递交内容给合法用户,
一般而言,数字权利管理系统使用基于分块密码的加密技术,其 使用一系列加密/解密步骤(称为回合(round))来以块为单位处理 数据流。在每个回合期间,执行回合特定的功能。该回合特定的功能 可以基于在回合特定的子密钥的控制下执行的相同回合功能。对于许 多加密系统而言,可以使用映射表或者查找表来规定该回合功能。即 使没有使用显式的表格,然而经常的是,为功能的不同部分使用表格 以便在加密/解密功能的软件有效地执行。计算机代码访问表格值或者 将表格值结合到所述功能的范围值中。代替分发可能是用户特定的密钥的是,分发用户特定的算法而不是用于加密或解密算法的密钥变得 日益令人感兴趣。这些算法(在大多数情况下是函数(映射))必须
被混淆(obfuscate)(隐藏)以便防止重新设计或者禁止重新计算如 密钥这样的元素。在计算机上,伴随某些计算机代码的表格通常代表 了这些函数。
内容提供商必须通过到其中不是所有的用户或设备都可以被信任 的社区的不利网络来递交内容给合法用户。特别是对于PC平台而言,
制以及具有无限数量的时间和资源以便攻击和旁路绕过任何内容保护 机制。强制可以依据其使用所述内容的条款和条件的软件代码必须不 可以被篡改。在数字权利管理中用于分发到PC的受保护内容的一般方 法是加密数字内容,例如DES(数据加密标准)、AES(高级加密标准), 或者使用W09967918中公开的方法,并且使用解密密钥。
依赖于加密的数字权利管理的弱点的两个主要领域是强制使用内 容的条款和条件的软件插件以及密钥分发和处理。
一般而言,插件强制要依据其使用内容的条款和条件。意欲移除
序代码来实现这一点。
关于密钥处理,对于回放而言,媒体播放器必须从许可证数据库 中获取解密密钥。然后,它必须将该解密密钥存储在存储器中的某处 以用于解密经加密的内容。这给攻击者留下了两个攻击密钥的选项。 首先,许可证数据库接入功能的逆向工程技术可能导致黑盒软件(即 攻击者不必理解软件功能的内部工作),从而允许攻击者从所有许可 证数据库中获取资产密钥。其次,通过在内容解密期间观察对存储器 的访问,有可能获取所述资产密钥。在这两种情况下,都认为密钥受 到损害。
防篡改软件之所以这样被称呼的原因在于,对于该软件的目标导 向篡改被复杂化了。存在各种用于提高软件应用的防篡改性的技术。
机性和复杂性掩饰(veil)来隐藏该应用的嵌入知识。其背后的思想 在于,仅仅通过代码检查来提取信息变得更加困难。因此,发现例如 处理应用的访问和许可控制的代码并且从而改变它变得更加困难。
52002年8月15-16日,Stanley Chow, Philip Eisen, Harold
Johnson和Paul C. Van Oorschot在Selected Areas in Cryptography:
9th Annual International Workshop, SAC 2002, St. John's,
Newfoundland, Canada的论文"White-Box Cryptography and an AES
Implementation"(此后称为"Chow 1")以及2002年11月18日,
Stanley Chow, PhilEisen, Harold Johnson和Paul C. van Oorschot
在Digital Rights Management: ACM CCS-9 Workshop, ■ 2002,
Washington, DC, USA的论文"A White-Box DBS Implementation for
DRM Applications"(此后称为"Chow 2")中公开了目的在于隐藏
密钥的方法,该方法通过下列的組合来进行,即利用代表组成
(composition)而不是单独步骤的随机双射(bijection)编码其表
格,以及通过将密码边界进一步向外推向包含应用来扩展该密码边界。 W0 2006/046187公开了在系统中服务器如何以混淆的形式向执行 设备提供密码函数F。该函数F使用阿贝尔群(Abelian group )算子》 组合多个映射表L (0《i《n; r^l)的输出。处理器选择表格0和C,
以使得('W⑧"W-o,v^",并且创建表格7"',0^^^"/^" + 1,,其中对 于o《"",,每个表格7',代表各自的相应表格'A',并且至少一个表格 /'",'()s",通过'/;和o的阿贝尔组合来形成,至少一个表格 /;'()"、《w,e'"通过包括c的阿贝尔组合来形成。使用了装置用于将
表格7',提供给执行设备。该执行设备包括用于接收所述表格的装置以 及用于执行函数F,的处理器,该函数F,通过表格卩的阿贝尔组合而在 功能上等效于密码函数F。
发明内容
有利的是拥有用于提高数字数据处理单元的防篡改性的改进系 统。为了更好地解决这一问题,在本发明的笫一方面中,提供的系统 包括
第一单元(901),其包括
输入端(904 ),用于接收数字数据,以及 处理装置(906 ),用于根据基于所接收的数字数据中的值而 在至少一个查找表(916)中查找的值来处理所接收的数字数据;以及 第二单元(902 ),其包括用于计算用于包含在所述数字数据中的至少一个值的装置(912), 所述至少一个值使得第一单元在处理所述数字数据时在所述查找表中 查找至少一个预定值,
插入器(910),用于将所述至少一个值包含在所述数字数据中,
以及
输出端(908 ),用于将所述数字数据发送到第一单元。 第一单元执行的处理可以包括数据的呈现。该数据可以包括编码 的音频和/或视频内容。第一单元包括一个或多个查找表(916),并 且对数字数据的处理通过执行若干个表格查找来至少部分地执行。在 许多系统中,所述数据和/或伪随机处理确定哪个查找表条目用于解 码。在这样的系统上,可能发生特定查找表条目未被使用,或者仅在 已经解码了所述数据的相对较大部分后才被使用。本发明的这个方面 允许第二单元在查找表中指定将在处理所述数据时被访问的至少一个
预定值。第二单元可以通过将至少一个值包含在所述数据中来指定这 一点,其中这样选择所述至少一个值以使得它将导致在所述处理中访 问和使用所述预定值。如果所述查找表中的预定值已经被攻击者改变 了,那么所述处理会失败,这是因为成功的处理要求使用没有被改变的值。
第一单元可以例如是用户终端、计算机、机顶盒或者电视。第二 单元可以例如是内容提供商或者服务器。第一和第二单元也可以是单 个物理设备的部分。
依照本发明的一个方面,第二单元包括用于将加密的内容包含在 所述数字数据中的加密装置;所迷插入器被布置为用于将所述至少一 个值包含在所述加密的内容中;并且所述处理装置被布置为用于基于 查找操作来解密所述加密的内容。
解密和加密可以通过使用查找表来有效地实现。通过将所述值插 入到加密的内容中,解码器将访问预定的查找表条目,而不必能够将 这样插入的值与所述加密的数据中出现的任何其他值区分开。在解密 之后,解密的数据可以包含标识所插入值的解密结果的标签,其将允 许用于处理的装置丢弃所插入值的解密结果。
依照本发明的一个方面,所述系统包括用于将处理装置的输出与 参考值进行比较的验证装置。
7该验证装置可以包含于第一单元、第二单元或者第三单元中并且 接收处理的结果。该检验装置将处理的结果与被认为是正确结果的值 进行比较。如果查找表中的预定值不包含它应当包含的值,那么该比 较失败并且该验证单元检测到篡改。
依照本发明的一个方面,所述处理装置被布置用于以预定的顺序 处理所述数字数据,其中所查找的值影响其处理在查找操作之后开始 的数据的处理结果。
这个方面具有的优点在于,如果所述查找表值已经被墓改,那么 所述数据的相对较大的部分将不会被正确地处理。在这种篡改情况下, 所述插入值之后的许多数据将被错误地处理。
依照本发明的一个方面,所述插入器被布置用于将所述至少一个 值置于所述数字数据中以便使得用于解码的装置在处理所述数字数据 的预定分块之前在查找表中查找所述至少一个预定值。
这将确保很好地保护数字内容的预定分块以防止在已经受到篡改 的系统上被处理。
依照本发明的一个方面,第一单元包括存储器,用于存储要由该 第一单元执行的软件的比特表示,并且该软件的比特表示的至少一部
分由所述处理装置用作查找表的至少一部分;并且所述查找表中的至 少一个预定值出现在所述软件的比特表示的至少一部分中。
存储位置用于两个独立的目的这一事实使得篡改存储位置更加困 难,这是因为如杲做出改变以便实现与存储位置的第一用途有关的目 标,那么该改变也将以难以克服的方式影响存储位置的第二用途。
应当指出的是,共同待决的专利申请EP06116693. 0 (代理人案巻 号PH005600 )公开了一种提高软件系统的防篡改性的方法,其包括步 骤
基于多个参数编制多个用于处理数字数据的计算机可执行指令;
在这些参数的比特表示中标识与在所述处理期间可读的计算机可 执行代码的比特表示相等的部分;
将这些指令布置用于在这些指令执行期间,使用保持所述代码的 比特表示的至少一个存储地址以用于通过引用来读取所述参数的比特 表示的相等部分。
依照本发明的一个方面,所述软件的比特表示的至少一部分包含
8作为所述处理装置的操作的一部分而执行的指令。
查找表以及作为所述处理装置的一部分而执行的指令通过联合它 们并且存储单个副本到存储器中而受到保护。所述处理装置再次可以 包括解密装置、加密装置或者(解)压缩装置。
此后,将参照附图阐述本发明的这些和其他方面,其中
图1为示出AES回合中的操作的示图; 图2为示出混淆表格的实例示图; 图3为示出一个实施例的示图; 图4为示出处理步骤的流程图; 图5为示出一个实施例的示图。
具体实施例
图3示出了本发明的一个实施例。该图示出第一单元901和第二 单元902。第一单元901使用输入端904来通过输出端908从第二单元 902接收数据。输入端904可以包括具有例如TCP/IP支持的网络输入 端或者用于从可移除存储介质(例如DVD、 CD、磁带)读取数据的单元。 输出端908相应地包括网络输出端或者例如盘片操纵设备。连接输出 端908和输入端904的箭头代表用于将数据从输出端908传输到输入 端904的分发通道。第二单元902还包括数据存储器或者数据发生器 914。可以以诸如ZIP、 MPEG、 MP3之类的任何特定格式编码数据914, 也可以对该数据914进行加密。第二单元还包括用于将特定值插入到 数据流中的插入器910。插入器910可以具有某些嵌入的智能以便确保 包括插入值的数据遵循原始数据914的格式。如果该数据是动态地产 生的,那么插入器可以与数据发生器协作以便正确地以数据格式包容 插入值。此外,可以给插入值添加标签以使得可以因此识别它们。这 将防止第一单元错误地处理这些插入值。然而,所述加标签仅在已经 进行了某种处理之后才变得明显。
第一单元901还包括处理装置906和一个或多个查找表916。该处 理装置处理进入的数据。它可以解释数据呈现的格式(ZIP、 MPEG、 MP3、 加密等等)。例如,ZIP格式意指所述处理包含解压缩。处理装置还被布置用于解码MPEG、 MP3或者其他格式。作为最后的实例,所述处理装置可以被布置用于解密或者加密进入的数椐。处理装置906通过在查找表916之一中查找从数据导出的值来至少部分地执行所迷处理。所查找的值可以用于进一步的处理,例如用于定义下一个表查找,或者它们可以代表输出数据。这些查找表在所述数据的处理中起着重要的作用。如果攻击者改变了查找表条目,并且该查找表条目的使用与数据有关,那么所述处理装置可能产生经过错误处理的数据。这使得攻击者进行成功的改变更加困难。
假设一方对于第一单元901的完整性感兴趣。该方可以使用第二单元902来检验第一单元901的完整性。当然,可以通过从输入数据导出的查找来连续地检查完整性。然而,第二单元902可以用来检查特定预定义值的存在性。为此目的,插入器910将专门计算的值插入到数据流中。第二单元902还包括用于计算用于包含于所述数字数据中的值的装置912。该值是以这样的方式来计算,以便作为第一单元901的一部分的处理装置906在其处理所述数据时将查找该特定的预定义值。为此目的,用于计算该值的装置912具有有关处理装置906和/或查找表916的一些知识。
在一些情况下,该插入值不应当在被处理的数据中使用,因为该插入值仅仅被包含来检查查找表条目。为此目的,插入器910可以被布置成将标记(marker)包含到所述数据中以便标识插入值。优选地,该标记仅在通过处理装置906处理所述数据之后变得可见,这是因为不然的话,攻击者可能篡改处理装置906以便跳过该插入值。此外,所述编码通常使得该插入值还影响该插入值周围的一些数据。如果查找表条目已经被改变了 ,那么这将使得该插入值周围的数据不可用,这正是所希望的。此外还可能的是,第二单元902要求第一单元901将被处理的数据(的部分)返回给第二单元902。然后,第二单元902可以检验所述被处理的数据,并且从而发现所述预定义查找表条目是否被改变了。
在下文中,解释了如何可以通过使用混淆的查找表来使得算法的实现更加具有防篡改性。此外,解释了代码和表格值的联合。给出了AES和DES的实例。然而,所述方法可以应用到许多不同种类的算法,尤其是可以通过使用一个或多个查找表来实现的算法。
10混淆查找表
在软件应用的控制和数据路径中添加随机性和复杂性掩饰的方法没有阻止该软件遭受篡改,而只是使得确定需要做出什么改变以便达到篡改者的目的变得更加困难。防篡改背后的 一般原理可以概括如下。
程序P可以表示为访问控制和/或许可X与功能Y的组合。攻击者可能希望篡改该程序,使得在不影响所述功能的情况下移除访问控制或许可。然后,可以运行被篡改的程序而不需要访问控制或许可,或者至少可以运行而忽略这些控制。下面将主要针对Y包括处理功能的情况来解释本发明。所述功能可以包括加密、解密、压缩、解压缩、呈现、验证、认证。本发明适用于任何种类的功能Y。
理想情况下,对于防篡改程序而言,篡改X应当立即导致Y的损失,而不管该篡改如何小。换言之,X和Y应当是不可分离的,或者至少是在非常大难度的情况下才可分离。 一种实现不可分离性的方式是在X和Y之间建立一定关系,以使得对于X的任何故意的改变导致对于Y的非故意的改变,这将从Y中除去所述功能。为了恢复Y的功能,将需要进一步改变Y。由于已经使得所述功能和程序的控制元素不可分离,因而攻击变得困难得多。如果在程序的代码上建立起这种不可分离性,那么在不需要一定遮盖该程序代码的情况下就可以使得该程序具有防篡改性。防墓改软件是一种其中执行目标导向的篡改是复杂的软件。
AES是一种分块尺寸为128比特或16字节的分块密码。明文被划分成16字节的若干个分块,其形成编码算法的初始状态,并且編码算法的最终状态是密文。为了从概念上解释AES,将所述状态的字节组织成4x4字节的矩阵。AES包括若干个回合。每个回合包括在所述状态矩阵的字节、行或列上进行操作的相似处理步骤,每个回合在这些处理
步骤中使用不同的回合密钥。
图1示出了 AES的基本回合的一些主要处理步骤。这些处理步骤包括
AddRoundKey 2——所述状态的每个字节与回合密钥的字节进行异或(X0R)。
SubBytes 4——使用查找表的字节到字节的置换。的每行按顺序循环固定数量的字节。 MixColumns 8——使用在GF U8)中的模乘来处理每列。 步骤SubBytes 4、 ShiftRows 6和MixColumns 8独立于所用的特 定密钥。该密钥在步骤AddRoundKey 2中应用。除了步骤ShiftRows 6 之外,可以在所述4x4状态矩阵的每列上执行这些处理步骤而不需要 了解其他列的情况。因此,可以认为它们是32比特的操作,这是因为 每列包括4个8比特值。虚线10表示重复该过程,直到已经执行了所 要求数量的回合为止。
这些步骤中的每一个或者步骤的组合可以由查找表或者由查找表 网络(S盒)来表示。也可以用查找表网络替换AES的完整回合。例如, AddRoundKey步骤可以通过简单地与回合密钥进4亍异或来实现,而 SubBytes、 ShiftRows和MixColumns步骤使用表查找来实现。然而,
这意味着所述密钥在白盒攻击环境下对于攻击者仍然是可见的。 AddRoundKey步骤也可以嵌入到查找表中,这使得找出该密钥不是那么 明显。如图所示的步骤2、 4、 6和8的顺序通常用于加密。对于解密 而言,这些步骤以相反的顺序来执行。然而,可以重申该解密过程, 使得其使用如图所示的步骤2、 4、 6和8的顺序。
图2示出了使得提取所述密钥甚至更加困难的方式。令X和Y为 两个函数。考虑如图示12所述的搮作r〃"'^^^。),其中c为输入 值,例如为4字节状态列。然而,该方法适用于任何类型的输入值c。 映射X和Y可以实现为可存储在存储器中的查找表,但是,当它们存 储在存储器中时所述值可能被攻击者所读取。图示14示出了所述查找 表的内容可以如何通过使用输入编码F和输出编码H来混淆。如图所
示,存储对应于义。厂'和〃。y的查找表而不是存储x和Y,这使得提取
X和Y更加困难。图示16示出了如何添加附加的、例如随机的双射函 数G,来使得这两个表格的中间结果也被编码。在这种情况下,两个表 格存储在存储器中义^G。U,'和r-f/。y。G'。这再次示于示图18
中
、' X' = (〃 o y 。 G ') 。 (G' 。
。 /广')=f/〇(K 。义)。F.'
其中,。表示通常的函数组合(即按照定义,对于任何两个函数f (x) 和g(x), = ) , X和Y为适合借助于查找表来实现的函数。
类似地,可以对包括多于两个函数的网络进行编码。通过在单个查找
12表中组合〃 。r 。 G'—'以及在单个查找表中组合G 。义。'来混淆对X和Y进
行编码的实际表格。只要F、 G和/或H保持未知,那么攻击者就不能 从这些查找表中提取有关X和/或Y的信息,并且因此攻击者不能提取 作为X和/或Y的基础的密钥。其他密码算法,包括DES和Rijndael (AES是其特定实例)内,也可以被编码成可以以与上面相似的方式混 淆的查找表(级联或网络)。本发明不限于所述的示例性密码算法。
Chow 1公开了一种目的在于通过利用代表组合而不是单独步骤的 随机双射对表格进行编码来隐藏密钥的方法。阻止秘密密钥提取的优 点在于,阻止攻击者提取允许在其他机器上旁路绕过软件保护目标的 密钥材料,或者阻止攻击者公布有效地建立"全球破解,,的密钥材料, 所述"全球破解"在所安装软件的大量用户基础上击败安全性措施。给 定纯软件解决方案以及不利主机现实的限制下,它提供了提高的保护 程度。在Chow 1的方法中,通过(1 )使用用于组合而不是单独步骤 的表格;(2 )利用随机双射编码这些表格;以及(3 )将密码边界扩 展到密码算法本身之外以进一步向外扩展到包含应用中来隐藏所述密
钥,以迫使攻击者(逆向工程师)理解大得多的代码段来达到其目标。 Chow l讨论了固定的密钥方法通过关于密钥(多个)的部分求值将 所述密钥嵌入到实现方式中,从而不是必需需要密钥输入。部分求值 意味着尽可能合理地对涉及所述密钥的表达式进行求值,并且将结果 放入所述代码而不是完整的表达式中。攻击者可以提取密钥特定的实 现方式并且使用该实现方式而不是所述密钥,然而,密码系统通常是 更大的包含系统的部件,所述包含系统可以以为密码部件设计的操纵 或编码的形式向该密码部件提供输入,该部件是针对所述操纵或编码 的形式而设计的,但是对手将发现难于移除所述形式。参考编码表格 的步骤,由于编码是任意的,因而结果仅在一个步骤的输出编码与下 一个步骤的输入编码相匹配的情况下才有意义。例如,如果步骤X之 后是步骤Y (导致y。义的计算),那么所述计算可以被编码成
通过这种方式,尽管输入需要利用F来编码并且输出需要利用H一1 来解码,但是却正确地计算了 r。X。这些步骤单独地表示成与Y,和X, 相应的表格,以便隐藏F、 G和H以及X和Y。
除了这种混淆步骤之外,Chow 1借助于线性(双射)变换来使用
13扩散步骤,以便进一步掩盖下面的操作。术语混合双射用来描述这种
线性变换。Chow 1的实现方式以操纵的形式获得输入并且以不同操纵 的形式产生输出,从而使得防白盒攻击环境(WBAC)的AES难于与其 包含应用相分离。
Chow 2讨论了一种被设计成耐白盒攻击环境的DES的密码实现, 其目的在于阻止从程序中提取秘密密钥。这篇论文中讨论的有关混淆 查找表网络的技术大部分也适用于包括AES等在内的其他密码算法。 当控制执行环境的攻击者可以明显地使用软件本身(例如用于解密) 而不必显式提取所述密钥时,迫使攻击者使用手头安装的实例通常对 于数字权利管理(DRM)系统提供商是有价值的。大体而言,Chow2中 的方法致力于完全由替换盒組成的实现方式,其中没有一个替换盒实 现仿射变换。Chow 2中描述了若干个支持所述一般方法所需的技术。 其中一些技术是I/O分块编码、组合函数编码、旁路编码、分裂路径 编码以及输出分裂。
部分求值意味着对基于实现时(部分)已知的值的表达式进行预 先求值。在一个简化的实例中,当密钥为"5"并且原始实现方式包含表 达式"2*密钥"时,不是将"2*5"并入到所述实现方式中,相反将预先求 值的表达式"10"放入该实现中。通过这种方式,密钥"5"不直接存在于 代码中。在具有固定密钥的DES的情况下,这涉及利用密钥特定的预 先求值的S盒(在编译时或之前根据所述密钥计算)替换标准的S盒 (在运行时根据所述密钥计算)。依照Chow 2的混合双射为双射仿射 变换,其被设计成使得每个输出比特取决于大量的输入比特。1/0分块 编码是一种用于处理大量输入和输出比特的编码方法。在这种情况下, 所述编码/解码可以形成为一连串的编码,其中每个编码处理所述输入 /输出比特的子集。组合函数编码意味着如果可以并行地处理两个或更 多操作,那么将单个编码函数应用到这些并行操作的输入(相应输出) 的串接。它或多或少与I/O分块编码相反。旁路编码意味着所述编码
并且重新设计要混淆的变换以便"旁路,,这些多余的比特,以;吏得它们 不影响这个过程的最终输出。分裂路径编码意味着将函数修改成提供 附加的输出比特以便混淆必要的信息比特。输出分裂意味着将函数的 输出分布在若干个部分函数上,其中必须以非明显的方式组合所有部分函数的输出以便获得该函数的原始输出。
Chow 2提出建立编码的网络以便构造具有比如32比特或者甚至 96比特的宽输入的S盒。将代表仿射变换的这种宽输入S盒划分成S 盒网络,每个S盒具有更窄的输入和输出;每个S盒通过在该S盒中 并入编码函数而被编码。在处理该S盒的输出的S盒中并入编码函数的逆。
联合代码与查找表值
在本发明的一个方面中,提供了用于允许实现数字数据的防篡改 分布的方法。所述数据需要通过计算机代码来处理,该计算机代码包 括该数字数据的接收器可用的指令。该处理的目的可以是呈现由所述 数据代表的音频/视频信号。该处理可以包括加密、解密、压缩、解压 缩或者其他处理。该方法包括编写组成用于处理所述数字数据的处理 算法的实现的多个指令。所述多个指令构成计算机程序,例如用户终 端上成功地回放所分发的内容所需的媒体播放器或者插件。该处理算 法基于参数。在解密的情况下,这些参数可以代表密钥。可以使用相 应的加密密钥对所分发的数据进行(部分)加密。
标识出与处理器指令的一部分相等的所述参数的一部分。更特别 地,所述参数的比特表示的一部分等于所述指令的比特表示的一部分。 这些参数的其余部分可以与任何处理器指令不同。所标识出的参数可 以等于包含在所述处理算法的实现中的处理器指令。然而,这些标识 出的参数同样可以等于出现在所述系统中别处的处理器指令的比特表 示。例如,它们可以等于出现在操作系统内核中的某个特定比特串, 或者出现在诸如TCP/IP通信栈之类的系统的某个驱动器中的比特。
这样布置所述处理器指令,以使得在执行期间,通过引用所述处 理器指令的比特表示中的所述部分的存储位置来读取所述参数的相等 部分(以便例如在解密处理中使用)。所述参数的相等部分没有被单 独地存储在存储器中,这是因为所需要的比特表示已经存在于保持相 一致处理器指令的存储地址处。实际上,相同的存储地址以两种方式 使用作为解密算法的参数的存储位置,以及同时作为要执行的处理 器指令的存储位置。 一般而言,读取作为参数的存储位置的指令本身
存储在不同的存储位置处,并且通过引用来访问保持该参数的存储位
15置。这些指令形成程序代码。这些指令符合其中执行该程序代码的执
行环境。例如,它们是处理器指令或者诸如虛拟机指令(例如java字 节码)之类的伪代码指令。
在本发明的另 一个方面中,这样选择所述参数以使得它们包含相 对较大的相等部分。单个存储地址可以保持可以两种似乎不相关的方 式使用的数据作为处理器指令以及作为参数值。其效果在于,如果 攻击者改变了处理器指令,那么这些参数可能变得无效,反之,如果 攻击者改变了这些参数,那么所述处理器指令变得无效。因此,攻击 者执行目标导向的篡改就可能变得更加困难。
图4示出了步骤编写实现603,标识所述参数的相一致部分613, 以及布置所述实现615。这些参数可以包括例如形成查找表网络的一个 或多个查找表。可以例如根据密钥来计算这种查找表网络(步骤6 04 )。 选择所述处理器指令的比特表示中的字(步骤606 )以用于包含于该网 络的查找表的至少一个中。通过向查找表中的元素施加变换(步骤608 ) 来实现该字的包含。这个变换通过施加补偿变换(步骤610)而得到补 偿,其中补偿变换对所述变换对于其他查找表中的至少一个元素的影 响进行反转。通常,至少两个经变换的查找表通过所述查找表网络而 连接起来。该经变换的查找表网络而不是原始的查找表网络用作所述 密码算法的参数。
一个实施例包括选择所述指令的比特表示中的多个字并且创建包 含该指令的比特表示的查找表以便形成"包含代码"的查找表。该包含 代码的查找表包含于构成数据处理程序的参数的查找表网络中。通常, 通过将适当选择的查找表包含在查找表网络中来补偿该包含代码的查 找表的效果。这样布置构成所述程序代码的指令,以使得保持出现在 该包含代码的查找表中的指令的存储地址也用于读取该包含代码的查 找表的值。
强制表查找
在一个实施例中,返回到图3,第二单元902包括用于将加密的内 容包含在数字数据914中的加密装置。插入器910将所计算的值包含 在经过加密的数据流中以便由处理装置906进行解密。处理装置906 包括用于对包含插入值的加密内容进行解密的解密装置。该解密装置以所述方式之一来使用查找表916。优选地,使用解密算法的白盒实现。 这可以是类似于Chow 1和Chow 2的AES或DES实现,但是,同样可 以使用任何其他实现或解密方案。
在一个实施例中,所述处理装置被布置用于以预定的顺序解码所 述数字数据。取决于更早先被处理的数据来处理数据。实现这点的可 能性之一是加密方法。它适用于例如流式密码。它也适用于使用密码 分块链(CBC)模式的解码方案,其中代替密文(或者除密文之外还) 利用明文来创建依赖关系。
所述插入器可以被布置成将测试所述预定义查找表条目的值放置 在重要的数据分块之前,以使得正确地处理该重要的数据分块需要所 述测试的肯定结果。例如,将每个值测试不同的预定查找表条目的一 系列值插入到数据流的开始处。通过这种方式,对于所测试条目中的 任何一个的改变使得整个数据流不可用。
在存储器中进行联合代码和密钥可以用于提高防篡改性。待处理 的数据通常决定在处理中将使用哪些查找表条目。因此,甚至在篡改 代码之后,也可能发生所述处理的相对较大的部分被成功地执行,这 是因为处理数据不需要被篡改的存储值。例如,如果在8比特-k比特 查找表(对于任何k>0)中改变了一个字节,并且处理代码分块仅需要 一个8比特值,以及256个8比特值中的每一个出现的概率相等,那 么被改变的字节用于所述处理中的概率是1/"6或者0. 4、将希望提 高这个概率,即提高在代码的一个或多个字节发生改变之后所述处理 将失败的概率和/或确保所述处理对于数据的较大部分会失败。可以理 解的是,同样可能希望访问没有与代码联合但是可能具有某种其他特 殊意义的预定义查找表条目。此外,如果怀疑某个值可能已经被改变 了,那么也希望检查该值。
令X为必须由白盒实现来处理(例如来加密或解密)的(可能为 空的)数据分块流。可以在X中插入若干个分块B,, B2, .,., BB,这 些分块以这样的方式来选择以便它们在白盒实现中访问特定的查找表 条目(即密钥的特定部分)。也可以让分块B,, B2, ..., B^居于X之
月'J 。
一种在所述代码的一个或多个字节发生改变之后提高所述处理对 于所述数据的较大部分失败的概率的方法如下。可以选择分块密码模
17式,其中不正确的解密通过进一步的解密而传播。相比较而言,在"电
子码书"(ECB)模式中,其中可以与其他密文分块无关地解密每个密 文分块,每个分块具有访问被篡改的查找表条目的独立概率(在上例 中为0.4%)。可以例如通过使得分块的解密过程依赖于先前解密的分 块的解密结果来使得不正确的解密进一步传播到接下来的解密。在其 解密结果错误的第 一数据分块之后,所有后续分块也将被错误地解密。 这使得如果所述代码的被测试部分已经被墓改了的话,那么所述数据 的大得多的部分不能被正确地处理。
在一个实施例中,白盒实现用于某种传播错误(出于上面讨论的 原因)的模式中。例如,使用密码分块链接(CBC)模式的变体,其中 利用明文而不是密文创建依赖关系。例如,在"正常"CBC模式中,数据 分块i在将其与加密的数据分块i-1进行异或(X0R)之后被加密。在 "提出"的变体中,数据分块i在将其与未加密的(明文)数据分块i-l 进行异或之后被加密。"正常"CBC模式使得数据流更加随机。所"提出" 的变体使得单个解密错误被传播到所有后续的数据分块。具有待加密 的内容的流S之前有若干个目的在于访问特定查找表条目、特别是包 含代码的条目的分块。如果所述联合的代码中的一个或多个比特被改 变了,那么S的任何分块都不会被正确地解密。同样可能的是,通过 利用明文和前面分块的密文二者来创建依赖关系(例如进行异或)来 将"正常"CBC模式与所"提出,,的CBC模式相结合。通过这种方式,组合
了这两种模式的可能优点(随机性和错误传播)。
可以这样计算数据分块,以使得在解密处理期间(或者在可适用 的加密处理期间)访问特定的查找表条目。考虑使用查找表的AES解 密(或加密)算法的标准(非白盒)实现。此外,考虑该实现的以下 问题给定回合r以及该回合的输入I"找出所述解密算法的第一回 合的输入I!,以使得到回合r的输入为I"应当清楚的是,利用该问 题的解决方案,本领域技术人员能够设计这样的数据块以使得解密算 法的预定义非白盒实现访问特定的查找表条目。令fi为标准(非白盒) AES的回合i中计算的函数,即如果其输入由Ii给定,那么fi(Ii)为回 合i的输出。容易计算回合fi的逆fi ',这是因为fi的计算中的所有步 骤(AddRoundKey、 SubBytes、 ShiftRows、 MixCol醒s )都是容易求
逆的。结果,可以将11计算为/1=〃'。《'。'''。/;:;(0。可以对该算法进行修改以导出强制白盒解密算法访问例如II型表
格T中的特定行1的数据分块。该修改的算法以导出到回合包含的表 格T的(编码)输入以便访问行1而开始。从该输入中移除编码以便 获得到AES (非白盒)实现的回合的输入。前面段落中概括的算法现在 可以用来导出数据分块,其中白盒实现为该数据分块访问行1。通常, 可以从到查找表网络的特定查找表的编码输入中移除编码,所述编码 输入引起对该特定查找表中的行1的访问,并且可以通过使用没有编 码的处理算法的版本来反转所述处理。这些没有编码的处理步骤比白 盒实现的编码查找表更易于反转。所述编码只能由具有这些编码的知 识的人员或系统移除,而不能由没有该知识的攻击者移除
应当指出的是,代替导出访问所述网络中的一个特定表格的一个 特定行1的数据分块的是,可以导出使得所述程序访问所述查找表网 络中的多个对应查找表的每一个中的预定条目的数据分块。其原因在 于,在多个表格上分布分块的输入比特,因此可以选择分布到每个表 格的多个比特以便访问对应的预定查找表条目。
还应当指出的是,被定义成访问回合r中的特定行的数据分块同 样访问其他回合中的行,因为这些回合是所述查找表网络的一部分。 这些附加访问的行中的一些也可以与代码联合。结果,需要包含较少 的分块以便实现 一 定数量与代码联合的字节由所述算法来访问。
除了所讨论的CBC模式之外,也可以使用计数器(CTR)模式。在 这种模式中,可以对计数器(例如值的伪随机序列)而不是所述数据 本身进行加密。数据与加密的计数器流进行异或(X0R)。对于这种模 式而言,选择计数器值的自由度可以用来将希望的值(对应于预定表 查找)包含在所述计数器流中。例如,可以使得一组计数器值出现在 所述数据流的开头附近,这将使得联合的表条目的大部分被访问。如 果所述计数器流的加密再次在所"提出"的CBC模式中执行,那么在联 合代码中的改变对于对所述数据流的大部分的处理将导致失败。在这 里,使用CTR模式的优点在于,不存在多余的解密/加密,因为所选择 的计数器值的加密结果与加密的数据进行异或以便获得有效的明文。
该方法也可以用于二值图像的验证。通过快速地访问查找表中的 所有条目,快速地验证这些查找表中的值是否正确。此外,无需另外 处理实际的数据。首先,导出强制访问所有S盒条目的一组数据分块。这可以利用所描述的算法来进行。接下来,对于该组中的所有数据分 块,测试所述查找表是否给出正确的答案。如果是这样的情况,则二 值图像很可能是正确的。当使用以上解释的密码分块链接模式时,仅 需要验证最后的结果,这是因为只有所有前面的操作都正确的情况下 它才是正确的。
图5示出了本发明的一个实施例。该图示出了通信端口95,例如 用于与数字内容提供商相连接的到互联网的连接。也可以从诸如DVD 或CD之类的介质96中获得所述内容。PC上的数字内容一般通过使用 媒体播放器来呈现,所述媒体播放器由使用存储器91的处理器92来 执行。对于特定的内容格式而言,这样的播放器可以执行相应的插件, 以便执行与经由通信端口 95和/或介质96获得的内容相对应的格式特 定的解码。这些内容格式可以包括AVI、DV、运动JPEG、MPEG-l、MPEG-2、 MPEG-4、 WMV、音频CD、 MP3、 WMA、 WAV、 AIFF/AIFC、 AU等等。对于 数字权利管理目的而言,可以使用不仅对所述内容解码而且对所述内 容进行解密的安全插件。该插件包括存储在存储器91中的处理器指令 和参数(例如混淆的查找表)。这些处理器指令和参数可以像所述的 那样重叠;在这种情况下,存储器91中的一些存储位置包含代表所述 插件执行期间的处理器指令和参数值的值。在所述内容中,插入了数 据分块以便确保在数据分块的解码/解密期间一些预定义的存储位置 用作查找表条目。例如,可以寻址代表处理器指令和参数值二者的存 储位置。可以提供用户输入端94来从用户获得指示要呈现的内容的命 令,并且提供了显示器93和/或扬声器用于呈现解码和/或解密的内容。
应当理解,本发明还扩展到计算机程序,特别是载体上或载体中 的适于将本发明付诸实践的计算机程序。该程序可以是源代码、目标 代码、介于源代码和目标代码之间的代码(例如部分编译的形式)的 形式,或者任何其他适合在依照本发明的方法实现中使用的形式。栽 体可以是能够携带程序的任何实体或设备。例如,栽体可以包括存储 介质,诸如R0M (例如CD ROM)或半导体存储器,或者磁性记录介质, 例如软盘或硬盘。此外,栽体可以是可传输的载体,例如电信号或光 学信号,其可以通过电缆或光缆或者通过无线电或其他方式来传送。 当程序包含于这种信号中时,所述载体可以由这种缆线或其他设备或 装置来构成。可替换地,所述栽体可以是其中嵌入了所述程序的集成
20电路,该集成电路适于执行相关的方法或者在执行相关的方法中使用。 应当指出的是,上述实施例说明而不是限制了本发明,并且本领 域技术人员在不脱离所附权利要求的范围的情况下应当能够设计出许 多可替换的实施例。在权利要求中,置于括号中的任何附图标记都不 应当被视为限制了该权利要求。动词"包括,,及其变体的使用并没有排 除权利要求中未列出的元件或步骤的存在。元件之前的冠词"一"或者 "一个"并没有排除多个这样的元件的存在。本发明可以借助于包括 若千不同元件的硬件以及借助于经过适当编程的计算机来实现。在列 举了若干装置的设备权利要求中,这些装置中的一些可以由同一硬件 项来实现。在相互不同的从属权利要求中陈述某些技术措施这一事实 并不意味着这些技术措施的组合不可以加以利用.
权利要求
1. 一种用于提高数字数据处理单元的防篡改性的系统,包括第一单元(901),包括输入端(904),用于接收所述数字数据,以及处理装置(906),用于根据基于所接收的数字数据中的值在至少一个查找表(916)中查找的值来处理所接收的数字数据;以及第二单元(902),包括用于计算用于包含在所述数字数据中的至少一个值的装置(912),所述至少一个值导致第一单元(901)在处理所述数字数据时在所述查找表(916)中查找至少一个预定值,插入器(910),用于将所述至少一个值包含在所述数字数据中,以及输出端(908),用于将所述数字数据发送到第一单元。
2. 依照权利要求l的系统,其中第二单元包括用于将加密的内容包含在所述数字数据中的加密装置;所述插入器被布置用于将所述至少一个值包含在所迷加密的内容中;以及所述处理装置被布置用于基于查找操作对所述加密的内容进行解密。
3. 依照权利要求l的系统,还包括验证装置,用于将所述处理装 置的输出与参考值进行比较。
4. 依照权利要求l的系统,其中所述处理装置被布置用于以预定 的顺序处理所述数字数据,其中所查找的值影响其处理在所迷查找操 作之后开始的数据的处理结果。
5. 依照权利要求l的系统,其中所迷插入器被布置用于将所迷至 少一个值置于所述数字数据中以便导致所述处理装置在处理所述数字 数据的预定分块之前在所述查找表中查找所述至少一个预定值。
6. 依照权利要求l的系统,其中第一单元包括用于存储要由该第一单元执行的軟件的比特表示的 存储器,并且该软件的比特表示的至少一部分由所述处理装置用作所 述查找表的至少一部分;以及所述查找表中的至少一个预定值出现在该软件的比特表示的至少 一部分中。
7. 依照权利要求6的系统,其中所述软件的比特表示的至少一部 分包含作为所述处理装置的操作的一部分而执行的指令。
8. —种用于提高数字数据处理单元的防篡改性的系统(902 ),包括用于计算用于包含在所述数字数据中的至少一个值的装置(912), 所述至少一个值使得所述处理单元在处理所述数字数据时在查找表中 查找至少一个预定值,插入器(910),用于将所述至少一个值包含在所述数字数据中,以及输出端(908 ),其用于将所述数字数据分发到所述处理单元。
9. 一种用于提高数字数据处理单元的防篡改性的系统(901),包括输入端(904 ),用于接收所述数字数据;以及处理装置(906 ),用于根据基于所接收的数字数据中的值而在至 少一个查找表(916)中查找的值来处理所接收的数字数据;其中所述数字数据包含至少一个值,所述至少一个值导致所述处 理单元在处理所述数字数据时在所述查找表中查找至少一个预定值。
10. —种提高数字数据处理单元的防篡改性的方法,包括 在第一单元(901)中接收(904 )所述数字数据,以及根据基于所接收的数字数据中的值而在至少一个查找表 (916)中查找的值来处理(906 )所接收的数字数据;以及 在第二单元(902 )中计算(912)用于包含在所述数字数据中的至少一个值,所述 至少一个值使得第一单元在解码所述数字数据时在所述查找表中查找 至少一个预定值,将所述至少一个值包舍(910)在所述数字数据中,以及 将所述数字数据发送(908 )到第一单元。
11. 一种用于使得处理器执行依照权利要求IO的方法的计算机程 序产品。
全文摘要
一种用于提高数字数据处理单元的防篡改性的系统,包括第一单元(901),该第一单元包括处理装置(906),所述处理装置用于根据基于所接收的数字数据中的值而在至少一个查找表(916)中查找的值来处理所接收的数字数据。所述系统还包括第二单元(902),该第二单元包括用于计算用于包含在所述数字数据中的至少一个值的装置(912),所述至少一个值导致第一单元(901)在处理所述数字数据时在所述查找表(916)中查找至少一个预定值。该系统包括插入器(910),用于将所述至少一个值包含在所述数字数据中;以及输出端(908),用于将所述数字数据发送到第一单元。
文档编号H04L9/06GK101491001SQ200780026267
公开日2009年7月22日 申请日期2007年6月27日 优先权日2006年7月12日
发明者P·M·H·M·A·戈里森, W·P·A·J·米基尔斯 申请人:皇家飞利浦电子股份有限公司