保护白盒实现方案不受攻击的制作方法

文档序号:9435993阅读:299来源:国知局
保护白盒实现方案不受攻击的制作方法
【技术领域】
[0001] 本文所公开的多种示例实施例总体上涉及执行抗攻击的密码功能的安全软件组 件。
【背景技术】
[0002] 互联网向用户提供了对数字内容进行访问的方便性和普遍性。由于互联网是强大 的分发渠道(distributionchannel),许多用户设备力图直接访问互联网。用户设备可以 包括个人计算机、膝上型计算机、机顶盒、支持互联网的媒体播放器、移动电话、智能电话、 平板、移动热点或能够访问互联网的任何其它设备。将互联网用作正版内容的分发媒介产 生了关于保护内容提供者利益的紧迫问题。越来越多的用户设备使用加载有适合软件的处 理器来运行,以便呈现(回放)诸如音频和/或视频等数字内容。对回放软件进行控制是 强加内容所有者利益的一种方式,包括可以使用内容的条款和条件。以前的许多用户设备 是封闭式系统。现今,越来越多的平台是部分开放的。可以假定一部分用户具有对硬件和 软件的完全控制并接入硬件和软件,其中硬件和软件提供对内容的访问,并且具有大量时 间和资源来攻击和避开任何内容保护机制。因此,内容提供者必须在恶意网络社区上向合 法用户传递内容,在所述恶意网络社区中,并非所有用户或用户设备是可以信任的。
[0003] 例如,安全软件应用一旦被调用就执行多种功能,例如用于保护并认证数字内容 的密码功能。为了抵御攻击,这些算法必须是混乱的(隐藏的),以便防止对所述算法进行 反向工程和修改,或禁止获得特定用户安全信息。因此,可以通过由实现安全软件的处理器 的指令集限定的多种功能,执行安全软件应用功能。例如,模糊这些功能的一种方式是通过 使用查找表。
[0004] 内容提供者必须在恶意网络社区上向合法用户传递内容,在所述恶意网络社区上 并非所有用户或设备是可以信任的。这样引起白盒密码学的开发。在白盒密码学情境下, 假定用户完全控制对内容提供访问的硬件和软件,并具有无限量的时间和资源来攻击和避 开任何内容保护机制。强加可以使用内容的条款和条件的安全软件代码应是防篡改的。数 字版权管理是安全软件应用的普通应用。对分布于用户设备上的受保护内容进行数字版权 管理的一般方法是使用例如DES(数据加密标准)、AES(高级加密标准)或使用其它已知加 密原理来对数字内容进行加密,并使用解密密钥来恢复数字内容。必须保护这些解密密钥 以便防止对受保护的内容进行未授权访问。
[0005] 依赖于加密的数字版权管理的弱点的两个主要方面包括强加可以使用内容的条 款和条件的软件模块,以及密钥分布和处理。通常,软件模块强加要使用所述内容的条款和 条件。为了避开这些条款和条件的攻击者可以试图通过篡改软件模块的程序代码来实现该 目标。
[0006] 至于密钥分布,媒体播放器必须从许可数据库检索解密密钥,以便回放所述媒体。 然后,媒体播放器必须将所述解密密钥存储在存储器的某处,以便对加密内容进行解密。这 样给攻击者留下了对所述密钥进行攻击的两个机会。首先,攻击者可以对许可数据库访问 功能进行反向工程,允许攻击者从所有许可数据库检索有用的密钥。在这种情况下,攻击者 不需要理解密码学功能的内部工作。其次,攻击者可以观察在内容解密期间对存储器的访 问,因此,攻击者可以检索所述解密密钥。在这两种情况下,所述密钥都被认为是缺乏抵抗 力的。
[0007] 广泛使用DRM和其它安全软件引起了对安全的、防篡改的软件的需要,安全的、防 篡改的软件设法使利用软件的篡改变得复杂化。存在多种用于增加软件应用的防篡改的技 术。大部分的这种技术是基于通过在所述软件应用的控制路径和数据路径二者中添加随机 性和复杂性的面纱,来隐藏所包含的应用知识。这种技术的构思在于仅通过代码检查(code inspection)来使得提取信息变得更加困难。因此,更难以寻找例如处理对所述安全应用的 访问和准许控制的代码,并对其进行改变。
[0008] 如本文所用,白盒密码学包括在攻击者完全控制运行白盒密码软件的系统的环境 下,执行密码功能的安全软件应用。因此,攻击者可以修改输入和输出,跟踪所述软件的运 算,在任何时刻采样并监控所述软件使用的存储器,甚至修改软件。因此,需要以防止公开 在所述安全功能中使用的安全信息的方式来执行安全功能。可以以多种方式来执行白盒密 码功能。这种方法包括:模糊(obscuring)软件代码;使用模糊对秘密信息的使用的复杂数 学函数;使用查找表;使用有限状态机;或执行密码功能并隐藏安全函数所需的秘密信息 的任意其它方法。白盒实现方案还可以包含包括抗调试和防篡改特性的组件。
[0009] 存在若干个原因使得密码算法的软件实现方案优于硬件实现方案。例如,这可以 是以下情况:由于在密钥被泄露的情况下软件解决方案是可更新的,由于软件解决方案成 本较低,或由于应用开发者对实现白盒系统的硬件没有影响。

【发明内容】

[0010] 下文提出对多种示例实施例的简要概述。可能在以下概述中进行了一部分简化和 省略,简化和省略是为了强调和介绍所述多种示例实施例的一些方面,而不是为了限制本 发明的范围。下文是对示例实施例的详细描述,足以允许本领域技术人员利用本发明构思。
[0011] 多种示例实施例涉及一种执行将输入消息映射到输出消息的加密钥的密码运 算(keyedcryptographicoperation)的方法,其中所述密码运算包括至少一个回合(at leastoneround),所述至少一个回合包括配置为将输入数据映射到输出数据的非线性映 射函数,所述方法包括:将输入数据拆分为n个拆分输入数据,其中所述对输入数据的拆分 基于输入消息的值而改变;将每个拆分输入数据输入到非线性映射函数中,以便获得n个 拆分输出数据,其中n个拆分输出数据的组合表示输出数据,其中当将所述输入数据输入 到非线性映射函数中时,得到所述输出数据。
[0012] 描述了多种实施例,其中所述将每个拆分输入数据输入到非线性映射函数中包 括:将每个拆分输入数据输入到多个拆分映射函数中,其中对所述多个拆分映射函数进行 异或得到所述非线性映射函数。
[0013] 描述了多种实施例,其中所述拆分和输入步骤与当前回合的加密钥的密码运算有 关,所述当前回合产生当前回合的输出,作为加密钥的密码运算的下一回合的输入,其中所 述加密钥的密码运算对加密钥的密码运算的下一回合的输入重复所述拆分和输入步骤。
[0014] 描述了多种实施例,其中下一回合中的m值大于当前回合中的n值,其中所述下一 回合是加密钥的密码运算的第二到最后回合。
[0015] 描述了多种实施例,其中当前回合中的n值大于下一回合中的m值,其中所述当前 回合是加密钥的密码运算的第二回合。
[0016] 描述了多种实施例,其中所述将输入数据拆分为n个拆分输入数据是前一回合的 一部分,其中前一回合的输出成为当前回合的输入。
[0017] 描述了多种实施例,其中所述对输入数据的拆分依赖于输入数据的多个不同部 分。
[0018] 描述了多种实施例,其中查找表实现所述加密钥的密码运算。
[0019] 描述了多种实施例,其中有限状态机实现所述加密钥的密码运算。
[0020] 描述了多种实施例,其中所述将每个拆分输入数据输入到非线性映射函数中还 包括:输入f1 0a; 〇f(x),其中函数f对输入数据x执行密钥添加函数(keyaddition function),a;是第i个拆分输入数据。
[0021] 此外,多种示例实施例涉及一种执行加密钥的密码运算的方法,所述加密钥的密 码运算将输入消息映射到输出消息,其中所述密码运算包括至少一个回合,所述至少一个 回合包括配置为将输入数据映射到输出数据的非线性映射函数,所述方法包括:基于输入 数据选择n对映射,其中所述n对映射包括第一映射和第二映射,其中所述第一和第二映射 是非线性函数的自等价(self-equivalences)集合,其中当将输入数据输入到非线性函数 中时,非线性函数的输出的第二映射的组合得到非线性函数的输出的已知函数;通过针对 n个第一输入映射的每个计算输入数据的第一映射,将输入数据拆分为n个拆分输入数据; 将n个拆分输入数据中的每个输入到非线性映射函数中以便获得n个拆分输出数据。
[0022] 描述了多种实施例,其中将n个拆分输入数据中的每个输入到非线性映射函数中 包括:将n个拆分输入数据中的每个输入到多个拆分映射函数中,其中对所述多个拆分映 射函数进行异或得到非线性映射函数。
[0023] 描述了多种实施例,其中所述选择、拆分和输入步骤与当前回合的加密钥的密码 运算有关,所述当前回合产生当前回合的输出,作为加密钥的密码运算的下一回合的输入, 其中所述加密钥的密码运算对加密钥的密码运算的下一回合的输入重复所述选择、拆分和 输入步骤。
[0024] 描述了多种实施例,其中下一回合中的m值大于当前回合中的n值,其中所述下一 回合是加密钥的密码运算的第二到最后回合。
[0025] 描述了多种实施例,其中当前回合中的n值大于下一回合中的m值,其中所述当前 回合是加密钥的密码运算的第二回合。
[0026] 描述了多种实施例,其中所述将输入数据拆分为n个拆分输入数据是前一回合的 一部分,其中前一回合的输出成为当前回合的输入。
[0027] 描述了多种实施例,其中n个第一映射是仿射的。
[0028] 描述了多种实施例,其中n个第二映射是仿射的。
[0029] 描述了多种实施例,其中所述对输入数据的拆分依赖于输入数据的一部分。
[0030] 描述了多种实施例,其中所述对输入数据的拆分依赖于输入数据的多个不同部 分。
[0031] 描述了多种实施例,其中查找表实现所述加密钥的密码运算。
[0032] 描述了多种实施例,其中有限状态机实现所述加密钥的密码运算。
[0033] 描述了多种实施例,其中所述将每个拆分输入数据输入到非线性映射函数中还包 括:输入f1 〇ai〇f(x),其中函数f对输入数据x执行密钥添加函数,ai是第i个第一映 射。
[0034] 描述了多种实施例,其中已知函数(knownfunction)基于输入数据。
[0035] 此外,多种示例实施例涉及一种执行加密钥的密码运算的方法,所述加密钥的密 码运算将输入消息映射到输出消息,其中所述密码运算包括配置为将输入数据映射到输 出数据非线性映射函数,所述方法包括:针对每个小于或等于n的i值计算ai(x),其中 a;(x)被定义为基于输入消息的n对映射(a,0 )之一,所述n对映射(a,0 )是非线性 函数的自等价的集合,其中n> 1,且对于Vt ?; =/?〇;),h(y)是仿射的;将每个ai(x) 输入到非线性映射函数中以便获得My),其中当x是非线性映射函数的输入数据时,y是 输出数据。
[0036] 描述了多个实施例,其中将每个ai(x)输入到非线性映射函数中包括:将每个 ai(x)输入到多个拆分映射函数,其中对所述多个拆分映射函数进行异或得到非线性映射 函数,其中合并多个映射函数的输出以获得PJy)。
[0037] 描述了多种实施例,其中所述计算和输入步骤与当前回合的加密钥的密码运算有 关,所述当前回合产生当前回合的输出,作为加密钥的密码运算的下一回合的输入,其中所 述加密钥的密码运算对加密钥的密码运算的下一回合的输入重复所述计算和输入步骤。
[0038] 描述了多种实施例,其中下一回合中的m值大于当前回合中的n值,其中所述下一 回合是加密钥的密码运算的第二到最后回合。
[0039] 描述了多种实施例,其中当前回合中的n值大于下一回合中的m值,其中所述当前 回合是加密钥的密码运算的第二回合。
[0040] 描述了多种实施例
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1