著录项信息
专利名称 | 数字数据处理单元的防篡改系统和方法 |
申请号 | CN200780026267.6 | 申请日期 | 2007-06-27 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2009-07-22 | 公开/公告号 | CN101491001 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L9/06 | IPC分类号 | H;0;4;L;9;/;0;6查看分类表>
|
申请人 | 皇家飞利浦电子股份有限公司 | 申请人地址 | 荷兰霍夫多普
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 爱迪德技术有限公司 | 当前权利人 | 爱迪德技术有限公司 |
发明人 | W·P·A·J·米基尔斯;P·M·H·M·A·戈里森 |
代理机构 | 中国国际贸易促进委员会专利商标事务所 | 代理人 | 屠长存 |
摘要
一种用于提高数字数据处理单元的防篡改性的系统,包括第一单元(901),该第一单元包括处理装置(906),所述处理装置用于根据基于所接收的数字数据中的值而在至少一个查找表(916)中查找的值来处理所接收的数字数据。所述系统还包括第二单元(902),该第二单元包括用于计算用于包含在所述数字数据中的至少一个值的装置(912),所述至少一个值导致第一单元(901)在处理所述数字数据时在所述查找表(916)中查找至少一个预定值。该系统包括:插入器(910),用于将所述至少一个值包含在所述数字数据中;以及输出端(908),用于将所述数字数据发送到第一单元。
1.一种用于提高数字数据处理单元的防篡改性的系统,包括
第一单元(901),包括:
输入端(904),用于接收所述数字数据,以及
处理装置(906),用于根据基于所接收的数字数据中的值而在至少一个查找表(916)中查找的预定值来处理所接收的数字数据;以及
第二单元(902),包括
用于计算用于包含在所述数字数据中的至少一个值的装置(912),所述至少一个值导致第一单元(901)在处理所述数字数据时在所述查找表(916)中查找至少一个预定值,以便检查所述预定值的存在,
插入器(910),用于将所述至少一个值包含在所述数字数据中,以及
输出端(908),用于将所述数字数据发送到第一单元。
2.依照权利要求1的系统,其中
第二单元包括用于将加密的内容包含在所述数字数据中的加密装置;
所述插入器被布置用于将所述至少一个值包含在所述加密的内容中;以及所述处理装置被布置用于基于查找操作对所述加密的内容进行解密。
3.依照权利要求1的系统,还包括验证装置,用于将所述处理装置的输出与参考值进行比较。
4.依照权利要求1的系统,其中所述处理装置被布置用于以预定的顺序处理所述数字数据,其中所查找的预定值影响其处理在所述查找操作之后开始的数据的处理结果。
5.依照权利要求1的系统,其中所述插入器被布置用于将所述至少一个值置于所述数字数据中以便导致所述处理装置在处理所述数字数据的预定分块之前在所述查找表中查找所述至少一个预定值。
6.依照权利要求1的系统,其中
第一单元包括用于存储要由该第一单元执行的软件的比特表示的存储器,并且该软件的比特表示的至少一部分由所述处理装置用作所述查找表的至少一部分;以及所述查找表中的至少一个预定值出现在该软件的比特表示的至少一部分中。
7.依照权利要求6的系统,其中所述软件的比特表示的至少一部分包含作为所述处理装置的操作的一部分而执行的指令。
8.一种用于提高数字数据处理单元的防篡改性的系统(902),包括
用于计算用于包含在数字数据中的至少一个值的装置(912),所述至少一个值使得所述处理单元在处理所述数字数据时在查找表中查找至少一个预定值,以便检查所述预定值的存在,并使所述处理单元根据在查找表中查找的预定值来处理所述数字数据,插入器(910),用于将所述至少一个值包含在所述数字数据中,以及
输出端(908),用于将所述数字数据分发到所述处理单元。
9.一种用于提高数字数据处理单元的防篡改性的系统(901),包括
输入端(904),用于接收所述数字数据;以及
处理装置(906),用于根据基于所接收的数字数据中的值而在至少一个查找表(916)中查找的预定值来处理所接收的数字数据;
其中所述数字数据包含至少一个值,所述至少一个值导致所述处理装置在处理所述数字数据时在所述查找表中查找至少一个预定值,以便检查所述预定值的存在。
10.一种提高数字数据处理单元的防篡改性的方法,包括
在第一单元(901)中:
接收(904)所述数字数据,以及
根据基于所接收的数字数据中的值而在至少一个查找表(916)中查找的预定值来处理(906)所接收的数字数据;以及
在第二单元(902)中:
计算(912)用于包含在所述数字数据中的至少一个值,所述至少一个值使得第一单元在解码所述数字数据时在所述查找表中查找至少一个预定值,以便检查所述预定值的存在,
将所述至少一个值包含(910)在所述数字数据中,以及
将所述数字数据发送(908)到第一单元。
数字数据处理单元的防篡改系统和方法\n技术领域\n[0001] 本发明涉及提高数字数据处理单元的防篡改。 \n[0002] 背景技术\n[0003] 互联网向用户提供了方便而普遍存在的对数字内容的访问。由于互联网作为有力分配渠道的潜在可能性,许多消费电子(CE)产品努力争取直接接入互联网或者与PC平台(到互联网的主导性入口)互操作。CE产品包括但不限于数字机顶盒、数字电视、游戏控制台、PC以及越来越多的手持设备,诸如PDA、移动电话以及移动存储和呈现设备(例如苹果公司的iPod)。使用互联网作为用于有版权内容的分发媒介形成了对保护内容提供商利益的不得不接受的挑战。特别地,要求保证内容提供商的版权和商业模式。越来越多地,通过使用加载有适当软件的处理器来操作CE平台。这种软件可以包括用于呈现(回放)数字内容(例如音频和/或视频)的主要功能部分。回放软件的控制是实现内容所有者的利益的一种方式,这些利益包括可以使用所述内容的条款和条件。在传统上,许多CE平台(除了PC和PDA之外)常常是封闭的,而如今越来越多的平台是至少部分地开放的。特别是对于PC平台而言,可以假设一些用户对于提供对所述内容的访问的硬件和软件具有完全的控制以及具有大量的时间和资源来攻击和旁路绕过任何内容保护机制。结果,内容提供商必须通过到其中不是所有的用户或设备都可以被信任的社区的不利网络来递交内容给合法用户。 \n[0004] 一般而言,数字权利管理系统使用基于分块密码的加密技术,其使用一系列加密/解密步骤(称为回合(round))来以块为单位处理数据流。在每个回合期间,执行回合特定的功能。该回合特定的功能可以基于在回合特定的子密钥的控制下执行的相同回合功能。\n对于许多加密系统而言,可以使用映射表或者查找表来规定该回合功能。即使没有使用显式的表格,然而经常的是,为功能的不同部分使用表格以便在加密/解密功能的软件有效地执行。计算机代码访问表格值或者将表格值结合到所述功能的范围值中。代替分发可能是用户特定的密钥的是,分发用户特定的算法而不是用于加密或解密算法的密钥变得日益令人感兴趣。这些算法(在大多数情况下是函数(映射))必须被混淆(obfuscate)(隐藏)以便防止重新设计或者禁止重新计算如密钥这样的元素。在计算机上,伴随某些计算机代码的表格通常代表了这些函数。 \n[0005] 内容提供商必须通过到其中不是所有的用户或设备都可以被信任的社区的不利网络来递交内容给合法用户。特别是对于PC平台而言,必须假设用户对于提供对所述内容的访问的硬件和软件具有完全的控制以及具有无限数量的时间和资源以便攻击和旁路绕过任何内容保护机制。强制可以依据其使用所述内容的条款和条件的软件代码必须不可以被篡改。在数字权利管理中用于分发到PC的受保护内容的一般方法是加密数字内容,例如DES(数据加密标准)、AES(高级加密标准),或者使用WO9967918中公开的方法,并且使用解密密钥。 \n[0006] 依赖于加密的数字权利管理的弱点的两个主要领域是强制使用内容的条款和条件的软件插件以及密钥分发和处理。 \n[0007] 一般而言,插件强制要依据其使用内容的条款和条件。意欲移除这些条款和条件的攻击者可尝试通过篡改包含在所述软件插件中的程序代码来实现这一点。 \n[0008] 关于密钥处理,对于回放而言,媒体播放器必须从许可证数据库中获取解密密钥。\n然后,它必须将该解密密钥存储在存储器中的某处以用于解密经加密的内容。这给攻击者留下了两个攻击密钥的选项。首先,许可证数据库接入功能的逆向工程技术可能导致黑盒软件(即攻击者不必理解软件功能的内部工作),从而允许攻击者从所有许可证数据库中获取资产密钥。其次,通过在内容解密期间观察对存储器的访问,有可能获取所述资产密钥。在这两种情况下,都认为密钥受到损害。 \n[0009] 防篡改软件之所以这样被称呼的原因在于,对于该软件的目标导向篡改被复杂化了。存在各种用于提高软件应用的防篡改性的技术。这些技术中的大多数基于通过在软件应用的控制和数据路径中添加随机性和复杂性掩饰(veil)来隐藏该应用的嵌入知识。其背后的思想在于,仅仅通过代码检查来提取信息变得更加困难。因此,发现例如处理应用的访问和许可控制的代码并且从而改变它变得更加困难。 \n[0010] 2002年8月15-16日,Stanley Chow,Philip Eisen,HaroldJohnson和Paul C.Van Oorschot在Selected Areas in Cryptography:9th Annual International Workshop,SAC 2002,St.John′s,Newfoundland,Canada的论文“White-Box Cryptography and an AESImplementation”(此后称为“Chow 1”)以及2002年11月18日,Stanley Chow,Phil Eisen,Harold Johnson和Paul C.van Oorschot在Digital Rights Management:\nACM CCS-9 Workshop,DRM 2002,Washington,DC,USA 的 论 文“A White-Box DES Implementation forDRM Applications”(此后称为“Chow 2”)中公开了目的在于隐藏密钥的方法,该方法通过下列的组合来进行,即:利用代表组成(composition)而不是单独步骤的随机双射(bijection)编码其表格,以及通过将密码边界进一步向外推向包含应用来扩展该密码边界。WO 2006/046187公开了在系统中服务器如何以混淆的形式向执行设备提供密码函数F。该函数F使用阿贝尔群(Abelian group)算子 组合多个映射表Ti(0≤i≤n;n≥1)的输出。处理器选择表格O和C,以使得 并且\n创建表格T′i,0≤i≤m;n≤m≤n+1,其中对于0≤i≤n,,每个表格T′i代表各自的相应表格Ti,并且至少一个表格 0≤o1≤n,通过 和O的阿贝尔组合来形成,至少一个表格 0≤c1≤m,c1≠o1通过包括C的阿贝尔组合来形成。使用了装置用于将表格T′i提供给执行设备。该执行设备包括用于接收所述表格的装置以及用于执行函数F’的处理器,该函数F’通过表格T′i的阿贝尔组合而在功能上等效于密码函数F。 发明内容\n[0011] 有利的是拥有用于提高数字数据处理单元的防篡改性的改进系统。为了更好地解决这一问题,在本发明的第一方面中,提供的系统包括: \n[0012] 第一单元(901),其包括: \n[0013] 输入端(904),用于接收数字数据,以及 \n[0014] 处理装置(906),用于根据基于所接收的数字数据中的值而在至少一个查找表(916)中查找的值来处理所接收的数字数据;以及 \n[0015] 第二单元(902),其包括 \n[0016] 用于计算用于包含在所述数字数据中的至少一个值的装置(912),所述至少一个值使得第一单元在处理所述数字数据时在所述查找表中查找至少一个预定值, [0017] 插入器(910),用于将所述至少一个值包含在所述数字数据中,以及 \n[0018] 输出端(908),用于将所述数字数据发送到第一单元。 \n[0019] 第一单元执行的处理可以包括数据的呈现。该数据可以包括编码的音频和/或视频内容。第一单元包括一个或多个查找表(916),并且对数字数据的处理通过执行若干个表格查找来至少部分地执行。在许多系统中,所述数据和/或伪随机处理确定哪个查找表条目用于解码。在这样的系统上,可能发生特定查找表条目未被使用,或者仅在已经解码了所述数据的相对较大部分后才被使用。本发明的这个方面允许第二单元在查找表中指定将在处理所述数据时被访问的至少一个预定值。第二单元可以通过将至少一个值包含在所述数据中来指定这一点,其中这样选择所述至少一个值以使得它将导致在所述处理中访问和使用所述预定值。如果所述查找表中的预定值已经被攻击者改变了,那么所述处理会失败,这是因为成功的处理要求使用没有被改变的值。 \n[0020] 第一单元可以例如是用户终端、计算机、机顶盒或者电视。第二单元可以例如是内容提供商或者服务器。第一和第二单元也可以是单个物理设备的部分。 \n[0021] 依照本发明的一个方面,第二单元包括用于将加密的内容包含在所述数字数据中的加密装置;所述插入器被布置为用于将所述至少一个值包含在所述加密的内容中;并且所述处理装置被布置为用于基于查找操作来解密所述加密的内容。 \n[0022] 解密和加密可以通过使用查找表来有效地实现。通过将所述值插入到加密的内容中,解码器将访问预定的查找表条目,而不必能够将这样插入的值与所述加密的数据中出现的任何其他值区分开。在解密之后,解密的数据可以包含标识所插入值的解密结果的标签,其将允许用于处理的装置丢弃所插入值的解密结果。 \n[0023] 依照本发明的一个方面,所述系统包括用于将处理装置的输出与参考值进行比较的验证装置。 \n[0024] 该验证装置可以包含于第一单元、第二单元或者第三单元中并且接收处理的结果。该检验装置将处理的结果与被认为是正确结果的值进行比较。如果查找表中的预定值不包含它应当包含的值,那么该比较失败并且该验证单元检测到篡改。 \n[0025] 依照本发明的一个方面,所述处理装置被布置用于以预定的顺序处理所述数字数据,其中所查找的值影响其处理在查找操作之后开始的数据的处理结果。 \n[0026] 这个方面具有的优点在于,如果所述查找表值已经被篡改,那么所述数据的相对较大的部分将不会被正确地处理。在这种篡改情况下,所述插入值之后的许多数据将被错误地处理。 \n[0027] 依照本发明的一个方面,所述插入器被布置用于将所述至少一个值置于所述数字数据中以便使得用于解码的装置在处理所述数字数据的预定分块之前在查找表中查找所述至少一个预定值。 \n[0028] 这将确保很好地保护数字内容的预定分块以防止在已经受到篡改的系统上被处理。 \n[0029] 依照本发明的一个方面,第一单元包括存储器,用于存储要由该第一单元执行的软件的比特表示,并且该软件的比特表示的至少一部分由所述处理装置用作查找表的至少一部分;并且所述查找表中的至少一个预定值出现在所述软件的比特表示的至少一部分中。 \n[0030] 存储位置用于两个独立的目的这一事实使得篡改存储位置更加困难,这是因为如果做出改变以便实现与存储位置的第一用途有关的目标,那么该改变也将以难以克服的方式影响存储位置的第二用途。 \n[0031] 应当指出的是,共同待决的专利申请EP06116693.0(代理人案卷号PH005600)公开了一种提高软件系统的防篡改性的方法,其包括步骤: \n[0032] 基于多个参数编制多个用于处理数字数据的计算机可执行指令; \n[0033] 在这些参数的比特表示中标识与在所述处理期间可读的计算机可执行代码的比特表示相等的部分; \n[0034] 将这些指令布置用于在这些指令执行期间,使用保持所述代码的比特表示的至少一个存储地址以用于通过引用来读取所述参数的比特表示的相等部分。 \n[0035] 依照本发明的一个方面,所述软件的比特表示的至少一部分包含 作为所述处理装置的操作的一部分而执行的指令。 \n[0036] 查找表以及作为所述处理装置的一部分而执行的指令通过联合它们并且存储单个副本到存储器中而受到保护。所述处理装置再次可以包括解密装置、加密装置或者(解)压缩装置。 \n附图说明\n[0037] 此后,将参照附图阐述本发明的这些和其他方面,其中 \n[0038] 图1为示出AES回合中的操作的示图; \n[0039] 图2为示出混淆表格的实例示图; \n[0040] 图3为示出一个实施例的示图; \n[0041] 图4为示出处理步骤的流程图; \n[0042] 图5为示出一个实施例的示图。 \n具体实施例\n[0043] 图3示出了本发明的一个实施例。该图示出第一单元901和第二单元902。第一单元901使用输入端904来通过输出端908从第二单元902接收数据。输入端904可以包括具有例如TCP/IP支持的网络输入端或者用于从可移除存储介质(例如DVD、CD、磁带)读取数据的单元。输出端908相应地包括网络输出端或者例如盘片操纵设备。连接输出端\n908和输入端904的箭头代表用于将数据从输出端908传输到输入端904的分发通道。第二单元902还包括数据存储器或者数据发生器914。可以以诸如ZIP、MPEG、MP3之类的任何特定格式编码数据914,也可以对该数据914进行加密。第二单元还包括用于将特定值插入到数据流中的插入器910。插入器910可以具有某些嵌入的智能以便确保包括插入值的数据遵循原始数据914的格式。如果该数据是动态地产生的,那么插入器可以与数据发生器协作以便正确地以数据格式包容插入值。此外,可以给插入值添加标签以使得可以因此识别它们。这将防止第一单元错误地处理这些插入值。然而,所述加标签仅在已经进行了某种处理之后才变得明显。 \n[0044] 第一单元901还包括处理装置906和一个或多个查找表916。该处理装置处理进入的数据。它可以解释数据呈现的格式(ZIP、MPEG、MP3、加密等等)。例如,ZIP格式意指所述处理包含解压缩。处理装置还被 布置用于解码MPEG、MP3或者其他格式。作为最后的实例,所述处理装置可以被布置用于解密或者加密进入的数据。处理装置906通过在查找表916之一中查找从数据导出的值来至少部分地执行所述处理。所查找的值可以用于进一步的处理,例如用于定义下一个表查找,或者它们可以代表输出数据。这些查找表在所述数据的处理中起着重要的作用。如果攻击者改变了查找表条目,并且该查找表条目的使用与数据有关,那么所述处理装置可能产生经过错误处理的数据。这使得攻击者进行成功的改变更加困难。 \n[0045] 假设一方对于第一单元901的完整性感兴趣。该方可以使用第二单元902来检验第一单元901的完整性。当然,可以通过从输入数据导出的查找来连续地检查完整性。然而,第二单元902可以用来检查特定预定义值的存在性。为此目的,插入器910将专门计算的值插入到数据流中。第二单元902还包括用于计算用于包含于所述数字数据中的值的装置912。该值是以这样的方式来计算,以便作为第一单元901的一部分的处理装置906在其处理所述数据时将查找该特定的预定义值。为此目的,用于计算该值的装置912具有有关处理装置906和/或查找表916的一些知识。 \n[0046] 在一些情况下,该插入值不应当在被处理的数据中使用,因为该插入值仅仅被包含来检查查找表条目。为此目的,插入器910可以被布置成将标记(marker)包含到所述数据中以便标识插入值。优选地,该标记仅在通过处理装置906处理所述数据之后变得可见,这是因为不然的话,攻击者可能篡改处理装置906以便跳过该插入值。此外,所述编码通常使得该插入值还影响该插入值周围的一些数据。如果查找表条目已经被改变了,那么这将使得该插入值周围的数据不可用,这正是所希望的。此外还可能的是,第二单元902要求第一单元901将被处理的数据(的部分)返回给第二单元902。然后,第二单元902可以检验所述被处理的数据,并且从而发现所述预定义查找表条目是否被改变了。 \n[0047] 在下文中,解释了如何可以通过使用混淆的查找表来使得算法的实现更加具有防篡改性。此外,解释了代码和表格值的联合。给出了AES和DES的实例。然而,所述方法可以应用到许多不同种类的算法,尤其是可以通过使用一个或多个查找表来实现的算法。 [0048] 混淆查找表 \n[0049] 在软件应用的控制和数据路径中添加随机性和复杂性掩饰的方法没有阻止该软件遭受篡改,而只是使得确定需要做出什么改变以便达到篡改者的目的变得更加困难。防篡改背后的一般原理可以概括如下。程序P可以表示为访问控制和/或许可X与功能Y的组合。攻击者可能希望篡改该程序,使得在不影响所述功能的情况下移除访问控制或许可。\n然后,可以运行被篡改的程序而不需要访问控制或许可,或者至少可以运行而忽略这些控制。下面将主要针对Y包括处理功能的情况来解释本发明。所述功能可以包括加密、解密、压缩、解压缩、呈现、验证、认证。本发明适用于任何种类的功能Y。 \n[0050] 理想情况下,对于防篡改程序而言,篡改X应当立即导致Y的损失,而不管该篡改如何小。换言之,X和Y应当是不可分离的,或者至少是在非常大难度的情况下才可分离。\n一种实现不可分离性的方式是在X和Y之间建立一定关系,以使得对于X的任何故意的改变导致对于Y的非故意的改变,这将从Y中除去所述功能。为了恢复Y的功能,将需要进一步改变Y。由于已经使得所述功能和程序的控制元素不可分离,因而攻击变得困难得多。\n如果在程序的代码上建立起这种不可分离性,那么在不需要一定遮盖该程序代码的情况下就可以使得该程序具有防篡改性。防篡改软件是一种其中执行目标导向的篡改是复杂的软件。 \n[0051] AES是一种分块尺寸为128比特或16字节的分块密码。明文被划分成16字节的若干个分块,其形成编码算法的初始状态,并且编码算法的最终状态是密文。为了从概念上解释AES,将所述状态的字节组织成4×4字节的矩阵。AES包括若干个回合。每个回合包括在所述状态矩阵的字节、行或列上进行操作的相似处理步骤,每个回合在这些处理步骤中使用不同的回合密钥。 \n[0052] 图1示出了AES的基本回合的一些主要处理步骤。这些处理步骤包括: [0053] AddRoundKey 2——所述状态的每个字节与回合密钥的字节进行异或(XOR)。 [0054] SubBytes 4——使用查找表的字节到字节的置换。 \n[0055] ShiftRows 6——所述状态中的每行按顺序循环固定数量的字节。 \n[0056] MixColumns 8——使用在GF(28)中的模乘来处理每列。 \n[0057] 步骤SubBytes 4、ShiftRows 6和MixColumns 8独立于所用的特定密钥。该密钥在步骤AddRoundKey 2中应用。除了步骤ShiftRows 6之外,可以在所述4×4状态矩阵的每列上执行这些处理步骤而不需要了解其他列的情况。因此,可以认为它们是32比特的操作,这是因为每列包括4个8比特值。虚线10表示重复该过程,直到已经执行了所要求数量的回合为止。 \n[0058] 这些步骤中的每一个或者步骤的组合可以由查找表或者由查找表网络(S盒)来表示。也可以用查找表网络替换AES的完整回合。例如,AddRoundKey步骤可以通过简单地与回合密钥进行异或来实现,而SubBytes、ShiftRows和MixColumns步骤使用表查找来实现。然而,这意味着所述密钥在白盒攻击环境下对于攻击者仍然是可见的。AddRoundKey步骤也可以嵌入到查找表中,这使得找出该密钥不是那么明显。如图所示的步骤2、4、6和\n8的顺序通常用于加密。对于解密而言,这些步骤以相反的顺序来执行。然而,可以重申该解密过程,使得其使用如图所示的步骤2、4、6和8的顺序。 \n[0059] 图2示出了使得提取所述密钥甚至更加困难的方式。令X和Y为两个函数。考虑如图示12所述的操作YοX(c)=Y(X(c)),其中c为输入值,例如为4字节状态列。然而,该方法适用于任何类型的输入值c。映射X和Y可以实现为可存储在存储器中的查找表,但是,当它们存储在存储器中时所述值可能被攻击者所读取。图示14示出了所述查找表的-1\n内容可以如何通过使用输入编码F和输出编码H来混淆。如图所示,存储对应于XοF 和HοY的查找表而不是存储X和Y,这使得提取X和Y更加困难。图示16示出了如何添加附加的、例如随机的双射函数G,来使得这两个表格的中间结果也被编码。在这种情况下,两个-1 -1\n表格存储在存储器中:X′=GοXοF 和Y′=HοYοG 。这再次示于示图18中: [0060] Y′οX′=(HοYοG-1)ο(GοXοF-1)=Hο(YοX)οF-1\n[0061] 其中,ο表示通常的函数组合(即按照定义,对于任何两个函数f(x)和g(x),fοg(x)=f(g(x))),X和Y为适合借助于查找表来实现的函数。类似地,可以对包括多于-1\n两个函数的网络进行编码。通过在单个查找 表中组合HοYοG 以及在单个查找表中组合-1\nGοXοF 来混淆对X和Y进行编码的实际表格。只要F、G和/或H保持未知,那么攻击者就不能从这些查找表中提取有关X和/或Y的信息,并且因此攻击者不能提取作为X和/或Y的基础的密钥。其他密码算法,包括DES和Rijndael(AES是其特定实例)内,也可以被编码成可以以与上面相似的方式混淆的查找表(级联或网络)。本发明不限于所述的示例性密码算法。 \n[0062] Chow 1公开了一种目的在于通过利用代表组合而不是单独步骤的随机双射对表格进行编码来隐藏密钥的方法。阻止秘密密钥提取的优点在于,阻止攻击者提取允许在其他机器上旁路绕过软件保护目标的密钥材料,或者阻止攻击者公布有效地建立“全球破解”的密钥材料,所述“全球破解”在所安装软件的大量用户基础上击败安全性措施。给定纯软件解决方案以及不利主机现实的限制下,它提供了提高的保护程度。在Chow 1的方法中,通过(1)使用用于组合而不是单独步骤的表格;(2)利用随机双射编码这些表格;以及(3)将密码边界扩展到密码算法本身之外以进一步向外扩展到包含应用中来隐藏所述密钥,以迫使攻击者(逆向工程师)理解大得多的代码段来达到其目标。Chow 1讨论了固定的密钥方法:通过关于密钥(多个)的部分求值将所述密钥嵌入到实现方式中,从而不是必需需要密钥输入。部分求值意味着尽可能合理地对涉及所述密钥的表达式进行求值,并且将结果放入所述代码而不是完整的表达式中。攻击者可以提取密钥特定的实现方式并且使用该实现方式而不是所述密钥,然而,密码系统通常是更大的包含系统的部件,所述包含系统可以以为密码部件设计的操纵或编码的形式向该密码部件提供输入,该部件是针对所述操纵或编码的形式而设计的,但是对手将发现难于移除所述形式。参考编码表格的步骤,由于编码是任意的,因而结果仅在一个步骤的输出编码与下一个步骤的输入编码相匹配的情况下才有意义。例如,如果步骤X之后是步骤Y(导致YοX的计算),那么所述计算可以被编码成 [0063] Y′οX′=(HοYοG-1)ο(GοXοF-1)=Hο(YοX)οF-1\n[0064] 通过这种方式,尽管输入需要利用F来编码并且输出需要利用H-1来解码,但是却正确地计算了YοX。这些步骤单独地表示成与Y’和X’相应的表格,以便隐藏F、G和H以及X和Y。 \n[0065] 除了这种混淆步骤之外,Chow 1借助于线性(双射)变换来使用 扩散步骤,以便进一步掩盖下面的操作。术语混合双射用来描述这种线性变换。Chow 1的实现方式以操纵的形式获得输入并且以不同操纵的形式产生输出,从而使得防白盒攻击环境(WBAC)的AES难于与其包含应用相分离。 \n[0066] Chow 2讨论了一种被设计成耐白盒攻击环境的DES的密码实现,其目的在于阻止从程序中提取秘密密钥。这篇论文中讨论的有关混淆查找表网络的技术大部分也适用于包括AES等在内的其他密码算法。当控制执行环境的攻击者可以明显地使用软件本身(例如用于解密)而不必显式提取所述密钥时,迫使攻击者使用手头安装的实例通常对于数字权利管理(DRM)系统提供商是有价值的。大体而言,Chow 2中的方法致力于完全由替换盒组成的实现方式,其中没有一个替换盒实现仿射变换。Chow 2中描述了若干个支持所述一般方法所需的技术。其中一些技术是I/O分块编码、组合函数编码、旁路编码、分裂路径编码以及输出分裂。 \n[0067] 部分求值意味着对基于实现时(部分)已知的值的表达式进行预先求值。在一个简化的实例中,当密钥为“5”并且原始实现方式包含表达式“2*密钥”时,不是将“2*5”并入到所述实现方式中,相反将预先求值的表达式“10”放入该实现中。通过这种方式,密钥“5”不直接存在于代码中。在具有固定密钥的DES的情况下,这涉及利用密钥特定的预先求值的S盒(在编译时或之前根据所述密钥计算)替换标准的S盒(在运行时根据所述密钥计算)。依照Chow 2的混合双射为双射仿射变换,其被设计成使得每个输出比特取决于大量的输入比特。I/O分块编码是一种用于处理大量输入和输出比特的编码方法。在这种情况下,所述编码/解码可以形成为一连串的编码,其中每个编码处理所述输入/输出比特的子集。组合函数编码意味着如果可以并行地处理两个或更多操作,那么将单个编码函数应用到这些并行操作的输入(相应输出)的串接。它或多或少与I/O分块编码相反。旁路编码意味着所述编码变换将若干个多余比特的熵添加到待混淆的变换的输入和/或输出中并且重新设计要混淆的变换以便“旁路”这些多余的比特,以使得它们不影响这个过程的最终输出。分裂路径编码意味着将函数修改成提供附加的输出比特以便混淆必要的信息比特。输出分裂意味着将函数的输出分布在若干个部分函数上,其中必须以非明显的方式组合所有部 分函数的输出以便获得该函数的原始输出。 \n[0068] Chow 2提出建立编码的网络以便构造具有比如32比特或者甚至96比特的宽输入的S盒。将代表仿射变换的这种宽输入S盒划分成S盒网络,每个S盒具有更窄的输入和输出;每个S盒通过在该S盒中并入编码函数而被编码。在处理该S盒的输出的S盒中并入编码函数的逆。 \n[0069] 联合代码与查找表值 \n[0070] 在本发明的一个方面中,提供了用于允许实现数字数据的防篡改分布的方法。所述数据需要通过计算机代码来处理,该计算机代码包括该数字数据的接收器可用的指令。\n该处理的目的可以是呈现由所述数据代表的音频/视频信号。该处理可以包括加密、解密、压缩、解压缩或者其他处理。该方法包括编写组成用于处理所述数字数据的处理算法的实现的多个指令。所述多个指令构成计算机程序,例如用户终端上成功地回放所分发的内容所需的媒体播放器或者插件。该处理算法基于参数。在解密的情况下,这些参数可以代表密钥。可以使用相应的加密密钥对所分发的数据进行(部分)加密。 \n[0071] 标识出与处理器指令的一部分相等的所述参数的一部分。更特别地,所述参数的比特表示的一部分等于所述指令的比特表示的一部分。这些参数的其余部分可以与任何处理器指令不同。所标识出的参数可以等于包含在所述处理算法的实现中的处理器指令。然而,这些标识出的参数同样可以等于出现在所述系统中别处的处理器指令的比特表示。例如,它们可以等于出现在操作系统内核中的某个特定比特串,或者出现在诸如TCP/IP通信栈之类的系统的某个驱动器中的比特。 \n[0072] 这样布置所述处理器指令,以使得在执行期间,通过引用所述处理器指令的比特表示中的所述部分的存储位置来读取所述参数的相等部分(以便例如在解密处理中使用)。所述参数的相等部分没有被单独地存储在存储器中,这是因为所需要的比特表示已经存在于保持相一致处理器指令的存储地址处。实际上,相同的存储地址以两种方式使用:作为解密算法的参数的存储位置,以及同时作为要执行的处理器指令的存储位置。一般而言,读取作为参数的存储位置的指令本身存储在不同的存储位置处,并且通过引用来访问保持该参数的存储位 置。这些指令形成程序代码。这些指令符合其中执行该程序代码的执行环境。例如,它们是处理器指令或者诸如虚拟机指令(例如java字节码)之类的伪代码指令。 \n[0073] 在本发明的另一个方面中,这样选择所述参数以使得它们包含相对较大的相等部分。单个存储地址可以保持可以两种似乎不相关的方式使用的数据:作为处理器指令以及作为参数值。其效果在于,如果攻击者改变了处理器指令,那么这些参数可能变得无效,反之,如果攻击者改变了这些参数,那么所述处理器指令变得无效。因此,攻击者执行目标导向的篡改就可能变得更加困难。 \n[0074] 图4示出了步骤:编写实现603,标识所述参数的相一致部分613,以及布置所述实现615。这些参数可以包括例如形成查找表网络的一个或多个查找表。可以例如根据密钥来计算这种查找表网络(步骤604)。选择所述处理器指令的比特表示中的字(步骤606)以用于包含于该网络的查找表的至少一个中。通过向查找表中的元素施加变换(步骤608)来实现该字的包含。这个变换通过施加补偿变换(步骤610)而得到补偿,其中补偿变换对所述变换对于其他查找表中的至少一个元素的影响进行反转。通常,至少两个经变换的查找表通过所述查找表网络而连接起来。该经变换的查找表网络而不是原始的查找表网络用作所述密码算法的参数。 \n[0075] 一个实施例包括选择所述指令的比特表示中的多个字并且创建包含该指令的比特表示的查找表以便形成“包含代码”的查找表。该包含代码的查找表包含于构成数据处理程序的参数的查找表网络中。通常,通过将适当选择的查找表包含在查找表网络中来补偿该包含代码的查找表的效果。这样布置构成所述程序代码的指令,以使得保持出现在该包含代码的查找表中的指令的存储地址也用于读取该包含代码的查找表的值。 [0076] 强制表查找 \n[0077] 在一个实施例中,返回到图3,第二单元902包括用于将加密的内容包含在数字数据914中的加密装置。插入器910将所计算的值包含在经过加密的数据流中以便由处理装置906进行解密。处理装置906包括用于对包含插入值的加密内容进行解密的解密装置。\n该解密装置 以所述方式之一来使用查找表916。优选地,使用解密算法的白盒实现。这可以是类似于Chow 1和Chow 2的AES或DES实现,但是,同样可以使用任何其他实现或解密方案。 \n[0078] 在一个实施例中,所述处理装置被布置用于以预定的顺序解码所述数字数据。取决于更早先被处理的数据来处理数据。实现这点的可能性之一是加密方法。它适用于例如流式密码。它也适用于使用密码分块链(CBC)模式的解码方案,其中代替密文(或者除密文之外还)利用明文来创建依赖关系。 \n[0079] 所述插入器可以被布置成将测试所述预定义查找表条目的值放置在重要的数据分块之前,以使得正确地处理该重要的数据分块需要所述测试的肯定结果。例如,将每个值测试不同的预定查找表条目的一系列值插入到数据流的开始处。通过这种方式,对于所测试条目中的任何一个的改变使得整个数据流不可用。 \n[0080] 在存储器中进行联合代码和密钥可以用于提高防篡改性。待处理的数据通常决定在处理中将使用哪些查找表条目。因此,甚至在篡改代码之后,也可能发生所述处理的相对较大的部分被成功地执行,这是因为处理数据不需要被篡改的存储值。例如,如果在8比特-k比特查找表(对于任何k>0)中改变了一个字节,并且处理代码分块仅需要一个8比特值,以及256个8比特值中的每一个出现的概率相等,那么被改变的字节用于所述处理中的概率是1/256或者0.4%。将希望提高这个概率,即提高在代码的一个或多个字节发生改变之后所述处理将失败的概率和/或确保所述处理对于数据的较大部分会失败。可以理解的是,同样可能希望访问没有与代码联合但是可能具有某种其他特殊意义的预定义查找表条目。此外,如果怀疑某个值可能已经被改变了,那么也希望检查该值。 \n[0081] 令X为必须由白盒实现来处理(例如来加密或解密)的(可能为空的)数据分块流。可以在X中插入若干个分块B1,B2,...,Bm,这些分块以这样的方式来选择以便它们在白盒实现中访问特定的查找表条目(即密钥的特定部分)。也可以让分块B1,B2,...,Bm居于X之前。 \n[0082] 一种在所述代码的一个或多个字节发生改变之后提高所述处理对于所述数据的较大部分失败的概率的方法如下。可以选择分块密码模 式,其中不正确的解密通过进一步的解密而传播。相比较而言,在“电子码书”(ECB)模式中,其中可以与其他密文分块无关地解密每个密文分块,每个分块具有访问被篡改的查找表条目的独立概率(在上例中为\n0.4%)。可以例如通过使得分块的解密过程依赖于先前解密的分块的解密结果来使得不正确的解密进一步传播到接下来的解密。在其解密结果错误的第一数据分块之后,所有后续分块也将被错误地解密。这使得如果所述代码的被测试部分已经被篡改了的话,那么所述数据的大得多的部分不能被正确地处理。 \n[0083] 在一个实施例中,白盒实现用于某种传播错误(出于上面讨论的原因)的模式中。\n例如,使用密码分块链接(CBC)模式的变体,其中利用明文而不是密文创建依赖关系。例如,在“正常”CBC模式中,数据分块i在将其与加密的数据分块i-1进行异或(XOR)之后被加密。在“提出”的变体中,数据分块i在将其与未加密的(明文)数据分块i-1进行异或之后被加密。“正常”CBC模式使得数据流更加随机。所“提出”的变体使得单个解密错误被传播到所有后续的数据分块。具有待加密的内容的流S之前有若干个目的在于访问特定查找表条目、特别是包含代码的条目的分块。如果所述联合的代码中的一个或多个比特被改变了,那么S的任何分块都不会被正确地解密。同样可能的是,通过利用明文和前面分块的密文二者来创建依赖关系(例如进行异或)来将“正常”CBC模式与所“提出”的CBC模式相结合。通过这种方式,组合了这两种模式的可能优点(随机性和错误传播)。 [0084] 可以这样计算数据分块,以使得在解密处理期间(或者在可适用的加密处理期间)访问特定的查找表条目。考虑使用查找表的AES解密(或加密)算法的标准(非白盒)实现。此外,考虑该实现的以下问题:给定回合r以及该回合的输入Ir。找出所述解密算法的第一回合的输入I1,以使得到回合r的输入为Ir。应当清楚的是,利用该问题的解决方案,本领域技术人员能够设计这样的数据块以使得解密算法的预定义非白盒实现访问特定的查找表条目。令fi为标准(非白盒)AES的回合i中计算的函数,即如果其输入由Ii-1\n给定,那么fi(Ii)为回合i的输出。容易计算回合fi的逆fi ,这是因为fi的计算中的所有步骤(AddRoundKey、SubBytes、ShiftRows、MixColumns)都是容易求逆的。结果,可以将I1计算为 \n[0085] 可以对该算法进行修改以导出强制白盒解密算法访问例如II型表格T中的特定行1的数据分块。该修改的算法以导出到回合包含的表格T的(编码)输入以便访问行1而开始。从该输入中移除编码以便获得到AES(非白盒)实现的回合的输入。前面段落中概括的算法现在可以用来导出数据分块,其中白盒实现为该数据分块访问行1。通常,可以从到查找表网络的特定查找表的编码输入中移除编码,所述编码输入引起对该特定查找表中的行1的访问,并且可以通过使用没有编码的处理算法的版本来反转所述处理。这些没有编码的处理步骤比白盒实现的编码查找表更易于反转。所述编码只能由具有这些编码的知识的人员或系统移除,而不能由没有该知识的攻击者移除。 \n[0086] 应当指出的是,代替导出访问所述网络中的一个特定表格的一个特定行1的数据分块的是,可以导出使得所述程序访问所述查找表网络中的多个对应查找表的每一个中的预定条目的数据分块。其原因在于,在多个表格上分布分块的输入比特,因此可以选择分布到每个表格的多个比特以便访问对应的预定查找表条目。 \n[0087] 还应当指出的是,被定义成访问回合r中的特定行的数据分块同样访问其他回合中的行,因为这些回合是所述查找表网络的一部分。这些附加访问的行中的一些也可以与代码联合。结果,需要包含较少的分块以便实现一定数量与代码联合的字节由所述算法来访问。 \n[0088] 除了所讨论的CBC模式之外,也可以使用计数器(CTR)模式。在这种模式中,可以对计数器(例如值的伪随机序列)而不是所述数据本身进行加密。数据与加密的计数器流进行异或(XOR)。对于这种模式而言,选择计数器值的自由度可以用来将希望的值(对应于预定表查找)包含在所述计数器流中。例如,可以使得一组计数器值出现在所述数据流的开头附近,这将使得联合的表条目的大部分被访问。如果所述计数器流的加密再次在所“提出”的CBC模式中执行,那么在联合代码中的改变对于对所述数据流的大部分的处理将导致失败。在这里,使用CTR模式的优点在于,不存在多余的解密/加密,因为所选择的计数器值的加密结果与加密的数据进行异或以便获得有效的明文。 \n[0089] 该方法也可以用于二值图像的验证。通过快速地访问查找表中的所有条目,快速地验证这些查找表中的值是否正确。此外,无需另外处理实际的数据。首先,导出强制访问所有S盒条目的一组数据分块。 这可以利用所描述的算法来进行。接下来,对于该组中的所有数据分块,测试所述查找表是否给出正确的答案。如果是这样的情况,则二值图像很可能是正确的。当使用以上解释的密码分块链接模式时,仅需要验证最后的结果,这是因为只有所有前面的操作都正确的情况下它才是正确的。 \n[0090] 图5示出了本发明的一个实施例。该图示出了通信端口95,例如用于与数字内容提供商相连接的到互联网的连接。也可以从诸如DVD或CD之类的介质96中获得所述内容。\nPC上的数字内容一般通过使用媒体播放器来呈现,所述媒体播放器由使用存储器91的处理器92来执行。对于特定的内容格式而言,这样的播放器可以执行相应的插件,以便执行与经由通信端口95和/或介质96获得的内容相对应的格式特定的解码。这些内容格式可以包括AVI、DV、运动JPEG、MPEG-1、MPEG-2、MPEG-4、WMV、音频CD、MP3、WMA、WAV、AIFF/AIFC、AU等等。对于数字权利管理目的而言,可以使用不仅对所述内容解码而且对所述内容进行解密的安全插件。该插件包括存储在存储器91中的处理器指令和参数(例如混淆的查找表)。这些处理器指令和参数可以像所述的那样重叠;在这种情况下,存储器91中的一些存储位置包含代表所述插件执行期间的处理器指令和参数值的值。在所述内容中,插入了数据分块以便确保在数据分块的解码/解密期间一些预定义的存储位置用作查找表条目。\n例如,可以寻址代表处理器指令和参数值二者的存储位置。可以提供用户输入端94来从用户获得指示要呈现的内容的命令,并且提供了显示器93和/或扬声器用于呈现解码和/或解密的内容。 \n[0091] 应当理解,本发明还扩展到计算机程序,特别是载体上或载体中的适于将本发明付诸实践的计算机程序。该程序可以是源代码、目标代码、介于源代码和目标代码之间的代码(例如部分编译的形式)的形式,或者任何其他适合在依照本发明的方法实现中使用的形式。载体可以是能够携带程序的任何实体或设备。例如,载体可以包括存储介质,诸如ROM(例如CD ROM)或半导体存储器,或者磁性记录介质,例如软盘或硬盘。此外,载体可以是可传输的载体,例如电信号或光学信号,其可以通过电缆或光缆或者通过无线电或其他方式来传送。当程序包含于这种信号中时,所述载体可以由这种缆线或其他设备或装置来构成。可替换地,所述载体可以是其中嵌入了所述程序的集成 电路,该集成电路适于执行相关的方法或者在执行相关的方法中使用。 \n[0092] 应当指出的是,上述实施例说明而不是限制了本发明,并且本领域技术人员在不脱离所附权利要求的范围的情况下应当能够设计出许多可替换的实施例。在权利要求中,置于括号中的任何附图标记都不应当被视为限制了该权利要求。动词“包括”及其变体的使用并没有排除权利要求中未列出的元件或步骤的存在。元件之前的冠词“一”或者“一个”并没有排除多个这样的元件的存在。本发明可以借助于包括若干不同元件的硬件以及借助于经过适当编程的计算机来实现。在列举了若干装置的设备权利要求中,这些装置中的一些可以由同一硬件项来实现。在相互不同的从属权利要求中陈述某些技术措施这一事实并不意味着这些技术措施的组合不可以加以利用。
法律信息
- 2019-06-11
未缴年费专利权终止
IPC(主分类): H04L 9/06
专利号: ZL 200780026267.6
申请日: 2007.06.27
授权公告日: 2012.03.14
- 2015-09-02
专利权人的姓名或者名称、地址的变更
专利权人由耶德托公司变更为爱迪德技术有限公司
地址由荷兰霍夫多普变更为荷兰霍夫多普
- 2015-02-04
专利权的转移
登记生效日: 2015.01.14
专利权人由爱迪德有限责任公司变更为耶德托公司
地址由荷兰霍夫多普变更为荷兰霍夫多普
- 2013-09-18
专利权人的姓名或者名称、地址的变更
专利权人由耶德托公司变更为爱迪德有限责任公司
地址由荷兰霍夫多普变更为荷兰霍夫多普
- 2012-03-14
- 2010-05-12
专利申请权的转移
登记生效日: 2010.04.02
申请人由皇家飞利浦电子股份有限公司变更为耶德托公司
地址由荷兰艾恩德霍芬变更为荷兰霍夫多普
- 2009-09-16
- 2009-07-22
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| | 暂无 |
2004-12-02
| | |
2
| |
2001-03-21
|
1999-01-14
| | |
3
| |
2006-06-14
|
2005-12-08
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |