用于将白箱实现紧附到周围程序的接口兼容方式的制作方法
【技术领域】
[0001] 这里公开的多种示例性实施例一般地涉及用于将白箱实现紧附到周围程序 (surroundingprogram)的接口 兼容方式。
【背景技术】
[0002] 互联网给用户带来了对数字内容的便捷且普及的访问。由于互联网是强大的分发 通道,所以许多用户设备都力求能够直接访问互联网。用户设备可以包括个人计算机、膝上 型计算机、机顶盒、互联网启用的媒体播放器、移动电话、智能手机、平板电脑、移动热点或 能够访问互联网的任意其它设备。将互联网用作版权内容的分发介质在确保内容提供商的 利益方面带来了极大的挑战。用户设备越发普遍地使用加载了适当软件的处理器来呈现 (回放)数字内容(比如音频和/或视频)。对回放软件的控制是加强内容拥有者的利益 的一种手段,其中包括可以使用所述内容的条款和条件。此前,许多用户设备是封闭系统。 如今,越来越多的平台变为部分开放的。一些用户可以被假定为能够完全地控制和访问提 供内容访问的硬件和软件,并拥有大量时间和资源来攻击和绕过任意内容保护机制。结果, 内容提供商必须在社区的恶意网络上将内容递送给合法用户,其中所述社区中并不是所有 用户或用户设备都是可信的。
[0003] 可以访问安全软件应用来执行多种功能,比如用来保护和认证数字内容的密码功 能。为了对抗攻击,必须对这些算法进行模糊处理(隐藏),以防止对算法进行反向工程和 修改或禁止获得用户特定安全信息。从而,可以通过如实现安全软件的处理器的指令集所 限定的多种功能来执行安全软件应用的功能。例如,一种用来掩盖这些功能的手段是使用 查找表。
[0004] 对数字版权管理(DRM)和其它安全软件的广泛使用引起了对于寻求使得对软件 的篡改更加复杂的安全、防篡改的软件的需求。存在多种用来提高软件应用的防篡改的技 术。这些技术大多基于以下方面:通过在软件应用的控制和数据路径中都加入随机性和复 杂性掩饰来隐藏所述应用的嵌入知识。其背后的构思在于,只通过代码检查来提取信息将 更加困难。因此,找到处理安全应用的访问和许可控制的代码并进而将其改变是更加困难 的。
[0005] 本文所使用的白箱密码包括在攻击者已经对运行白箱密码软件的系统完全控制 的环境中执行密码功能的安全软件应用。从而,攻击者可以修改输入和输出,追踪软件的操 作,在任意时刻对软件所使用的存储器进行采样和监测,甚至修改软件。从而,需要通过防 止公开安全功能中使用的秘密信息的方式来执行安全功能。可以通过多种方式来实现白箱 密码功能。这些方法包括:掩盖软件代码;使用掩盖秘密信息的使用的复杂数学函数;使用 查找表;使用有限状态机;或执行密码功能但隐藏这些安全功能所需的秘密信息的任何其 它方法。白箱实现还可以包含包括反调试和防篡改属性的组件。
[0006] 密码算法的软件实现比硬件实现更受欢迎有多种理由。比如,可以是因为在密钥 泄漏的情况下软件方案是可更新的、因为其成本低、或因为应用开发者不对实现白箱系统 的硬件有任何影响。
【发明内容】
[0007] 下文给出了对多种示例性实施例的简要概述。以下概述中可以进行一些简化和省 略,其是为了强调和介绍多种示例性实施例的一些方面,而不是为了限制本发明的范围。随 后的内容中将对足以使得本领域技术人员能够实施和使用发明构思的示例性实施例进行 详细描述。
[0008] 多种示例性实施例涉及一种在密码系统中将密码功能的密码实现紧附到周围程 序的方法,包括:由密码系统接收输入消息;从周围程序接收计算值;由密码系统使用来自 周围程序的计算值执行将输入消息映射到输出消息的带密钥密码操作,其中当计算值具有 正确值时,输出消息是正确输出消息;以及输出所述输出消息。
[0009] 描述了多种实施例,其中计算值是通过第一指针从周围程序接收的。
[0010] 描述了多种实施例,其中周围程序使用第二指针设置通过第一指针所指向的计算 值。
[0011] 描述了多种实施例,其中输入消息和输出消息未被编码。
[0012] 描述了多种实施例,其中从周围程序接收的计算值基于以下各项之一:代码段的 散列值、系统标识符、用户密码和用户密码的散列。
[0013] 描述了多种实施例,其中从周围程序接收的计算值基于密码实现是否正在调试器 中运行。
[0014] 描述了多种实施例,其中密码实现包括函数的网络,并且其中当第一函数的输入 对应于特定输入时,基于所接收的计算值确定第一函数的输出。
[0015] 描述了多种实施例,其中密码实现包括函数的网络,其中所接收的计算值是第一 函数的输入的一部分。
[0016] 描述了多种实施例,其中基于所接收的计算值确定第一函数的输出包括:将所接 收的计算值与预定常数进行异或(X0R)处理。
[0017] 描述了多种实施例,其中密码操作是高级加密系统(AES)或数据加密标准(DES) 之一。
[0018] 描述了多种实施例,其中密码实现包括有限状态机的网络。
[0019] 描述了多种实施例,其中密码实现包括查找表的网络。
[0020] 描述了多种实施例,其中计算值是通过第一指针从周围程序接收的,周围程序使 用第二指针设置通过第一指针所指向的计算值,从周围程序接收的计算值基于以下各项之 一:代码段的散列值、系统标识符、用户密码和用户密码的散列,以及密码实现包括函数的 网络,其中第一函数取决于所接收的计算值。
[0021] 此外,多种示例性实施例涉及在将密码实现紧附到周围程序的密码系统中产生将 输入消息映射到输出消息的密码操作的密码实现的方法,包括:产生包括多个函数的带密 钥密码操作的密码实现;接收指定计算值的信息,其中第一函数取决于计算值;修改密码 实现,以从周围程序接收计算值;以及基于所接收的计算值修改密码实现,使得:当所接收 的计算值等于期望值时,密码实现输出正确的输出消息;以及当所接收的计算值不等于期 望值时,密码实现输出不正确的输出消息。
[0022] 描述了多种实施例,其中计算值是通过第一指针从周围程序接收的。
[0023] 描述了多种实施例,其中周围程序使用第二指针设置通过第一指针所指向的计算 值。
[0024] 描述了多种实施例,其中从周围程序接收的计算值基于以下各项之一:代码段的 散列值、系统标识符、用户密码和用户密码的散列。
[0025] 描述了多种实施例,其中从周围程序接收的计算值基于密码实现是否正在调试器 中运行。
[0026] 描述了多种实施例,其中当第一函数的输入对应于特定输入时,基于所接收的计 算值确定第一函数的输出。
[0027] 描述了多种实施例,其中基于所接收的计算值确定函数的输出包括:将所接收的 计算值与预定常数进行异或处理。
[0028] 描述了多种实施例,其中所接收的计算值是第一函数的输入的一部分。
[0029] 描述了多种实施例,其中密码操作是高级加密系统(AES)或数据加密标准(DES) 之一。
[0030] 描述了多种实施例,其中计算值是通过第一指针从周围程序接收的,周围程序使 用第二指针设置通过第一指针所指向的计算值,从周围程序接收的计算值基于以下各项之 一:代码段的散列值、系统标识符、用户密码和用户密码的散列,其中第一函数取决于所接 收的计算值。
[0031] 描述了多种实施例,其中函数是有限状态机。
[0032] 描述了多种实施例,其中函数是查找表。
[0033] 此外,多种示例性实施例涉及一种编码有指令的非瞬时机器可读存储介质,所述 指令用于由密码实现在用于将密码实现紧附到周围程序的密码系统中执行,所述密码实 现在密码系统中执行密码功能,非瞬时机器可读存储介质包括:用于由密码系统接收输入 消息的指令;用于从周围程序接收计算值的指令;用于由密码系统使用来自周围程序的计 算值执行将输入消息映射到输出消息的带密钥密码操作的指令,其中当计算值具有正确值 时,输出消息是正确输出消息;以及用于输出所述输出消息的指令。
[0034] 描述了多种实施例,其中计算值是通过第一指针从周围程序接收的。
[0035] 描述了多种实施例,其中周围程序使用第二指针设置通过第一指针所指向的计算 值。
[0036] 描述了多种实施例,其中输入消息和输出