首页> 中国专利> 在单个白箱实现中实现使用相关安全性设置

在单个白箱实现中实现使用相关安全性设置

摘要

一种在密码系统中实施安全性设置的方法,所述方法包括:由密码系统接收与多个安全性设置中的第一安全性设置相关联的第一输入消息;由密码系统执行将第一输入消息映射到第一输出消息的带密钥密码操作,其中,所述带密钥密码操作在密码系统被授权用于第一安全性设置时产生正确输出消息,其中所述多个安全性设置中的每一个具有相关联的输入消息集,其中所述输入消息集不重叠。

著录项

  • 公开/公告号CN105024992A

    专利类型发明专利

  • 公开/公告日2015-11-04

    原文格式PDF

  • 申请/专利权人 恩智浦有限公司;

    申请/专利号CN201510208403.X

  • 申请日2015-04-28

  • 分类号H04L29/06(20060101);H04L9/00(20060101);G06F21/10(20130101);

  • 代理机构11021 中科专利商标代理有限责任公司;

  • 代理人王波波

  • 地址 荷兰艾恩德霍芬

  • 入库时间 2023-12-18 11:42:56

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-01-25

    授权

    授权

  • 2015-12-02

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20150428

    实质审查的生效

  • 2015-11-04

    公开

    公开

说明书

技术领域

这里公开的多种示例性实施例一般地涉及在单个白箱实现中实现使 用相关安全性设置。

背景技术

互联网给用户带来了对数字内容的便捷且普及的访问。由于互联网 是强大的分发通道,所以许多用户设备都力求能够直接访问互联网。用 户设备可以包括个人计算机、膝上型计算机、机顶盒、互联网启用的媒 体播放器、移动电话、智能手机、平板电脑、移动热点或能够访问互联 网的任意其它设备。将互联网用作版权内容的分发介质在确保内容提供 商的利益方面带来了极大的挑战。用户设备越发普遍地使用加载了适当 软件的处理器来呈现(回放)数字内容(比如音频和/或视频)。对回放 软件的控制是加强内容拥有者的利益的一种手段,其中包括可以使用所 述内容的条款和条件。此前,许多用户设备是封闭系统。如今,越来越 多的平台变为部分开放的。一些用户可以被假定为能够完全地控制和访 问提供内容访问的硬件和软件,并拥有大量时间和资源来攻击和绕过任 意内容保护机制。结果,内容提供商必须在社区的恶意网络上将内容递 送给合法用户,其中所述社区中并不是所有用户或用户设备都是可信的。

可以访问安全软件应用来执行多种功能,比如用来保护和认证数字 内容的密码功能。为了对抗攻击,必须对这些算法进行模糊处理(隐藏), 以防止对算法进行反向工程和修改或禁止获得用户特定安全信息。从而, 可以通过如实现安全软件的处理器的指令集所限定的多种功能来执行安 全软件应用的功能。例如,一种用来掩盖这些功能的手段是使用查找表。

对数字版权管理(DRM)和其它安全软件的广泛使用引起了对于寻 求使得对软件的篡改更加复杂的安全、防篡改的软件的需求。存在多种 用来提高软件应用的防篡改的技术。这些技术大多基于以下方面:通过 在软件应用的控制和数据路径中都加入随机性和复杂性掩饰来隐藏所述 应用的嵌入知识。其背后的构思在于,只通过代码检查来提取信息将更 加困难。因此,找到处理安全应用的访问和许可控制的代码并进而将其 改变是更加困难的。

本文所使用的白箱密码包括在攻击者已经对运行白箱密码软件的系 统完全控制的环境中执行密码功能的安全软件应用。从而,攻击者可以 修改输入和输出,追踪软件的操作,在任意时刻对软件所使用的存储器 进行采样和监测,甚至修改软件。从而,需要通过防止公开安全功能中 使用的秘密信息的方式来执行安全功能。可以通过多种方式来实现白箱 密码功能。这些方法包括:掩盖软件代码;使用掩盖秘密信息的使用的 复杂数学函数;使用查找表;使用有限状态机;或执行密码功能但隐藏 这些安全功能所需的秘密信息的任何其它方法。白箱实现还可以包含包 括反调试和防篡改属性的组件。

密码算法的软件实现比硬件实现更受欢迎有多种理由。比如,可以 是因为在密钥泄漏的情况下软件方案是可更新的、因为其成本低、或因 为应用开发者不对实现白箱系统的硬件有任何影响。

发明内容

下文给出了对多种示例性实施例的简要概述。以下概述中可以进行 一些简化和省略,其是为了强调和介绍多种示例性实施例的一些方面, 而不是为了限制本发明的范围。随后的内容中将对足以使得本领域技术 人员能够实施和使用发明构思的示例性实施例进行详细描述。

多种示例性实施例涉及一种编码有指令的非瞬时机器可读存储介质, 所述指令由白箱系统执行以实施安全性设置,所述非瞬时机器可读存储 介质包括:用于由所述白箱系统接收与多个安全性设置中的第一安全性 设置相关联的第一输入消息的指令;用于由所述白箱系统执行将所述第 一输入消息映射到第一输出消息的带密钥密码操作的指令,其中当所述 白箱系统被授权用于所述第一安全性设置时,所述带密钥密码操作产生 正确输出消息,其中所述多个安全性设置中的每一个安全性设置具有相 关联的输入消息集,其中所述输入消息集不重叠。

描述了多种实施例,其中,输入消息集中的每个消息包括相关联的 安全性设置的值。

描述了多种实施例,还包括:用于确定所述白箱系统的系统标识符 的指令;以及用于将所述系统标识符与所述第一输出消息进行组合的指 令,其中当所述白箱系统被授权执行所述带密钥密码功能时,产生所述 正确输出消息。

描述了多种实施例,其中,将所述系统标识符与所述第一输出消息 进行组合包括:将系统标识符与所述输出消息的一部分进行异或处理。

描述了多种实施例,其中,所述系统标识符包括所述白箱系统的硬 件标识符。

描述了多种实施例,其中,所述系统标识符包括白箱系统上的软件 的软件标识符。

描述了多种实施例,还包括:用于接收具有第二安全性设置的第二 输入消息的指令;以及用于由所述白箱系统执行将所述第二输入消息映 射到第二输出消息的带密钥密码操作的指令,其中当所述白箱系统被授 权用于所述第二安全性设置时,所述带密钥密码操作产生正确输出消息。

描述了多种实施例,还包括:用于接收具有第二安全性设置的第二 输入消息的指令;以及用于由所述白箱系统执行将所述第二输入消息映 射到第二输出消息的带密钥密码操作的指令,其中当所述白箱系统未被 授权用于所述第二安全性设置时,所述带密钥密码操作产生不正确输出 消息。

描述了多种实施例,其中,所述白箱系统包括查找表的网络。

描述了多种实施例,还包括:用于确定所述白箱系统的系统标识符 的指令;以及用于访问所述查找表的网络中的一个查找表中的丢失条目 以及输出来自所述查找表的取决于所述系统标识符的值的指令,其中当 所述白箱系统被授权执行所述带密钥密码功能时,产生所述正确输出消 息。

描述了多种实施例,还包括:用于确定所述白箱系统的系统标识符 的指令;以及用于在已经接收到正确的系统标识符时产生所述正确输出 消息的指令。

描述了多种实施例,其中,所述白箱系统包括有限状态机的网络。

描述了多种实施例,其中,所述密码操作是高级加密系统(AES) 或数据加密标准(DES)之一。

此外,多种示例性实施例涉及一种产生将输入消息映射到输出消息 的密码操作的白箱实现的方法,其中所述白箱实现实施安全性设置,所 述方法包括:产生所述密码操作的白箱实现;接收标识将由所述白箱实 现应用的安全性设置的信息,其中每个标识的安全性设置具有相关联的 输入消息集,其中所述输入消息集不重叠;基于所接收的标识所述安全 性设置的信息修改所述白箱实现,以使得:当所接收的输入消息与所接 收的安全性设置之一相关联时,所述白箱实现输出与所接收的输入消息 相关联的正确输出消息。

描述了多种实施例,其中,输入消息集中的每个消息包括相关联的 安全性设置的值。

描述了多种实施例,其中,当所接收的输入消息不与接收的安全性 设置之一相关联时,所述白箱实现输出与所接收的输入消息相关联的不 正确输出消息。

描述了多种实施例,其中,修改所述白箱实现还包括:确定与第一 安全性设置相关联的系统标识符;以及修改所述白箱实现的仅关联于与 所述第一安全性设置相关联的输入消息的部分。

描述了多种实施例,其中,修改所述白箱实现的一部分还包括:通 过所述系统标识符修改所述密码实现的从与所述第一安全性设置相关联 的输入消息得到的输出消息;修改所述密码实现以在操作期间接收实现 所述密码实现的密码系统的系统标识符;以及修改所述密码实现以在操 作期间将所接收的系统标识符与所述密码实现的所述输出消息进行组合。

描述了多种实施例,其中,所述系统标识符包括所述密码系统的硬 件标识符。

描述了多种实施例,其中,所述系统标识符包括密码系统上的软件 的软件标识符。

描述了多种实施例,其中,所述密码系统包括查找表的网络。

描述了多种实施例,其中,修改所述密码实现的一部分还包括:修 改所述密码实现以在操作期间接收实现所述密码实现的密码系统的系统 标识符;通过消除所述多个查找表中的第一查找表的条目来修改所述第 一查找表;修改所述密码实现,以在所述查找表的输入访问第一表中的 已消除条目时,输出来自所述第一查找表的取决于所述系统标识符的值, 以使得当所述密码系统被授权执行所述带密钥密码功能时,输出所述正 确输出消息。

描述了多种实施例,其中,修改所述密码实现还包括:确定与第一 安全性设置相关联的系统标识符;以及通过将所述系统标识符与查找表 中产生输出消息的一部分的行的部分进行异或处理,修改所述查找表的 产生所述输出消息的一部分的部分,其中所述输出信息的所述部分仅关 联于与所述第一安全性设置相关联的输入消息;修改所述密码实现以在 操作期间接收实现所述密码实现的密码系统的系统标识符;以及修改所 述密码实现以在操作期间将所接收的系统标识符与所述密码实现的所述 输出消息进行组合。

描述了多种实施例,其中,所述系统标识符包括所述密码系统的硬 件标识符。

描述了多种实施例,其中,所述系统标识符包括密码系统上的软件 的软件标识符。

描述了多种实施例,其中,所述密码系统包括有限状态机的网络。

此外,多种示例性实施例涉及一种在密码系统中实施安全性设置的 方法,包括:由所述密码系统接收与多个安全性设置中的第一安全性设 置相关联的第一输入消息;由所述密码系统执行将所述第一输入消息映 射到第一输出消息的带密钥密码操作,其中,所述带密钥密码操作在所 述密码系统被授权用于所述第一安全性设置时产生正确输出消息,其中 所述多个安全性设置中的每一个安全性设置具有相关联的输入消息集, 其中所述输入消息集不重叠。

描述了多种实施例,其中,输入消息集中的每个消息包括相关联的 安全性设置的值。

描述了多种实施例,还包括:确定所述密码系统的系统标识符;以 及将所述系统标识符与所述第一输出消息进行组合,其中当所述密码系 统被授权执行所述带密钥密码功能时,产生所述正确输出消息。

描述了多种实施例,其中,将所述系统标识符与所述第一输出消息 进行组合包括:将系统标识符与所述输出消息的一部分进行异或处理。

描述了多种实施例,其中,所述系统标识符包括所述密码系统的硬 件标识符。

描述了多种实施例,其中,所述系统标识符包括密码系统上的软件 的软件标识符。

描述了多种实施例,还包括:接收具有第二安全性设置的第二输入 消息;以及由所述密码系统执行将所述第二输入消息映射到第二输出消 息的带密钥密码操作,其中当所述密码系统被授权用于所述第二安全性 设置时,所述带密钥密码操作产生正确输出消息。

描述了多种实施例,还包括:接收具有第二安全性设置的第二输入 消息;以及由所述密码系统执行将所述第二输入消息映射到第二输出消 息的带密钥密码操作,其中当所述密码系统未被授权用于所述第二安全 性设置时,所述带密钥密码操作产生不正确输出消息。

描述了多种实施例,其中,所述密码系统包括查找表的网络。

描述了多种实施例,还包括:确定所述密码系统的系统标识符;以 及访问所述查找表的网络中的一个查找表中的丢失条目以及输出来自所 述查找表的取决于所述系统标识符的值,其中当所述密码系统被授权执 行所述带密钥密码功能时,产生所述正确输出消息。

描述了多种实施例,还包括:确定所述密码系统的系统标识符;以 及在已经接收到正确的系统标识符时,产生所述正确输出消息。

描述了多种实施例,其中,所述密码系统包括有限状态机的网络。

描述了多种实施例,其中,所述密码操作是高级加密系统(AES) 或数据加密标准(DES)之一。

附图说明

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

图1示出了AES的一个回合的主要步骤;

图2示出了在对回合的输入进行固定编码的情况下的白箱AES实现;

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

图4示出了通过对输入和输出进行编码而模糊处理的图3的网络表的 一部分;以及

图5是示出了利用使用相关安全性设置实现白箱实现的方法的流程 图。

为了便于理解,使用相同的附图标记来指代具有基本相同或相似的 结构和/或基本相同或相似的功能的元素。

具体实施方式

说明书和附图示出了本发明的原理。从而,将理解的是,本领域技 术人员能够设想出实现本发明的原理并包括在其范围内的多种布置(尽 管此处并未明确描述或示出)。此外,这里所述的所有示例明显主要用于 教导目的,以辅助读者理解本发明的原理以及发明人为推进现有技术而 贡献的构思,其被认为不限于具体描述的示例和条件。此外,本文中使 用的术语“或”指代非排他性的或(即和/或),除非另作指示(例如“或其 它”或“或在备选方式中”)。此外,本文所述的多种实施例不必是互斥的, 一些实施例可以与一个或多个其它实施例进行组合以形成新的实施例。

以下讨论涉及白箱密码,其原因在于它是最有挑战性的攻击模型。 此外,在受到白箱攻击的环境中部署和使用了许多密码实现。还存在黑 箱攻击模型和灰箱攻击模型。在黑箱攻击模型中,假定攻击者只能访问 所述实现的输入和输出。在灰箱攻击模型中,假定除了访问所述实现的 输入和输出之外,攻击者还能够访问关于对实现的执行的侧通道信息。 这种侧通道信息可以包括功率、定时、电子发射等。因此,下述实施例 的益处可用来防止这些攻击级别以及其它可被定义的攻击级别中的任意 一种。因此,在描述了白箱实现的情况下,它们还意在包括使用以下实 施例中所述的各种方法的黑箱实现以及灰箱实现。

为了使系统中的密码密钥的数量保持较小,可能会期望针对不同的 应用使用相同的密钥。这意味着可将相同的密钥与不同的安全性设置一 起使用。以下实施例示出了在通过白箱实现来实现密码算法的情况下如 何来实现这一点。

密码密钥在许多系统的安全性方面起到重要的作用。例如,它们用 于认证、完整性检查以及确保数据的机密性。在这种系统中,隐藏密码 密钥是至关重要的。如果对手能够提取密钥,则这将破坏安全性。

白箱密码是在软件中实现密码算法以使得攻击者很难找到密钥的规 则。这里,假定最强的可想到的(对于软件,最实际的)攻击模型,其 中假定对手具有对白箱实现的完全控制和完全访问。

相应地,期望使联网系统中的密码密钥的数量保持较小。这并不只 是由于存储器需要,而且还由于简化密钥操纵和防止需要对相同数据进 行多重加密。从而,优选地,可将相同的密钥用于不同的应用以及不同 的用户。然而,其难点在于不同的应用可能具有不同的安全性需求并且 不同的用户可能具有不同的授权权利。例如,针对一些安全性敏感应用, 可能期望将对密钥的使用与特定设备绑定(例如针对银行业务),而针对 其它安全性不那么敏感的应用,则可能更期望用户能够将密钥拷贝到用 户的所有设备(例如针对购物卡)。另一示例是针对数字电视的有条件访 问系统,其中并不是所有用户都可以访问相同的内容。如果以传统的方 式来实现密码算法,则针对相同密钥的不同使用,不能实现不同的安全 性设置。

下文所述的实施例示出了如何使用白箱实现来针对相同密钥的不同 使用实现不同的安全性目标。这可通过将消息空间分成多个消息组来实 现,其中特定安全性设置可与一个消息组相关联。在一种实施例中,通 过让消息经由对适当填充(padding)的选择来选择其安全性设置,使这 一方式起作用。

现在描述在白箱实现中提供不同的安全性设置的下述实施例的特征。 在消息空间(例如,在AES中,2128个128比特消息)中,可标识k个子集 M1、M2、...、Mk,其中k≥2。可通过白箱实现WB来实现密码算法。令 WB(m)为白箱实现的用于消息m的部分。类似地,WB(Mi)可被定义为白 箱实现的用于来自Mi的消息的部分,即从而, 针对任意i、j(i≠j),如果对来自Mi的消息运行白箱实现,则其使用白箱 实现的未用于来自Mj的任何消息的部分,反之亦然,即

其中AΔB=(A-B)∪(B-A),表示集A和B之间的对称差别。白箱实现 的部分δi,j用来实现针对Mi(相对Mj)唯一的安全性测量,反之亦然。在 白箱实现的不同实例之间可能不同的安全性属性的示例包括:绑定到平 台;软件的完整性检查;对特定材料的访问控制(例如实现针对Mi正常 工作,从而允许访问Mi,但不针对Mj正常工作,从而拒绝访问Mj);以 及防止拷贝白箱实现(代码提举)。由于如果并且则具有针对Mj(或Mi)的特定白箱实现并 不直接给出Mi(或Mj)的白箱实现,所以该最后一个属性可能总是存在。

提供使用相关安全性设置的白箱实现可提供k种可能的安全性设置。 为了在第i个安全性设置中进行操作,将来自Mi的消息提供给白箱实现。 注意到,当声明将来自Mi的消息提供给白箱实现时,这包括白箱实现接 收来自Mi的消息作为明文或密文。这意味着通过在消息中选择填充,选 择了安全性设置。

以下文献中提出了对于高级加密标准(AES)和数据加密标准(DES) 的白箱实现的基于表的方式:“White-Box Cryptography and an AES  Implementation”,Stanley Chow,Philip Eisen,Harold Johnson,and Paul C. Van Oorschot,Selected Areas in Cryptography:9th Annual International  Workshop,SAC 2002,St.John’s,Newfoundland,Canada,Aug.15-16,2002, 下文称为“Chow 1”;以及“A White-Box DES Implementation for DRM  Applications”,Stanley Chow,Phil Eisen,Harold Johnson,and Paul C.van  Oorschot,Digital Rights Management:ACM CCS-9Workshop,DRM 2002, Washington,D.C.,USA,Nov.18,2002,下文称为“Chow 2”。Chow 1和 Chow 2公开了通过以下操作的组合来使用基于表的方式隐藏密码密钥 的方法:使用随机双射对其表进行编码、以及通过将其进一步推入包含 应用来扩展密码边界。

如上所述,针对许多密码操作,期望具有白箱实现。本发明可适用 于例如对称或非对称密码操作。此外,本发明可以适用于块密码、流密 码、消息认证方案、签名方案等。注意的是,本发明还可适用于散列函 数。如果散列函数用作拥有秘密信息(例如秘密密钥、秘密数据等)的 建造块,则后者尤其有用。例如,本发明可适用于带密钥(keyed)散列 消息认证代码(HMAC或KHMAC)中使用的散列函数。熟知的块密码 包括:高级加密标准(AES)、安全快速加密例程(SAFER,以及变形 SAFER+和SAFER++)、Blowfish、数据加密标准(DES)等。熟知的流 密码是RC4。此外,通过使用适当的操作模式(例如密码反馈(CFB)、 计数器模式(CTR)等),可以将任意块密码用作流密码。

可以使用多个基本块实施白箱实现。采用将一些块构建在一个或多 个之前的块的输出上的方式,将多个基本块互连。还可将基本块实现在 运行于通用计算机芯片(例如微处理器)上的软件中。例如,基本块可 以使用多个计算机指令,其中包括算术指令,这些指令一起实现基本块 的功能。基本块的一种广泛使用的实现是查找表。例如,Chow 1和Chow  2采用这种方式来实现AES和DES块密码。查找表实现包括列表,该列表 针对可能的输入值列出输出值。输入值在查找表中可以是显式的。在这 种情况中,通过在输入值列表中搜索特定输入,查找表实现可以将特定 输入映射到特定输出。当找到特定输入时,也找到了特定输出。例如, 特定输出可以与特定输入存储在一起。优选地,输入值没有被显式地存 储,而只是隐式地存储。例如,如果可能的输入是连续范围的编号或比 特串,则查找表可被限制为存储输出值的列表。特定的输入编号可被映 射到存储在由所述编号所指示的位置处的特定输出。此外,有限状态机 或代码模糊可以用来实施白箱实现。

例如,可通过针对函数的可能输入计算其输出值并将所述输出存储 在列表中来创建针对所述函数的查找表。如果所述函数取决于多个输入, 则可针对多个输入的所有可能组合计算并存储所述输出。查找表尤其适 于实现非线性函数,其不定期地将输入映射到输出。如下文所释,通过 向其查找表中的一个或多个应用固定的模糊输入编码和固定的输出编码, 可进一步对白箱实现进行模糊处理。然后,应用固定的模糊输入编码和 输出编码的结果被完全预先评估。通过使用这一技术,查找表可被具有 相同尺寸(其获取相同数量的输入比特,并产生相同数量的输出比特) 的模糊查找表替代。在最终的白箱实现中,在这种模糊处理中使用的输 入编码和输出编码不是显式的。

基本块的网络被布置为在被呈递了输入消息时计算输出消息。通常, 通过多个基本输入块来对输入消息进行操作。多个进一步的基本输入块 可从一个或多个所述基本输入块和/或从所述输入获取输入。再进一步的 基本块可获取采用以下各项的任意组合形式的输入:输入消息、基本输 入块的输出和所述进一步的基本块的输出。最终,基本退出块的某集合 (即至少一个)产生输出消息的全部或部分,作为输出。通过这一方式, 出现了基本块的网络,该网络共同地计算从输入消息到输出消息的映射。

所使用的密钥可以是密码密钥,并且可包含足够的熵来承受所预计 的蛮力攻击。注意到,在白箱实现中,密钥通常并不显式地存在于所述 实现中。这将冒着通过对实现的检查发现所述密钥的风险。通常,密钥 只是隐式存在的。在其它实施例中,密钥可包括动态密钥,该动态密钥 例如获取隐式密钥信息并将其与某种动态信息进行组合,以产生密码功 能中使用的密钥。已知有多种方式来将密钥隐藏在密码系统中。通常, 至少使用部分评估的方法,其中只要需要密钥输入的基本块不取决于输 入消息,则对其进行评估。例如,可通过事先对密钥值和掩码值一起进 行异或处理来部分地评估基本操作(其中输入值、掩码值(其不取决于 输入消息(例如来自S箱的值))和密钥值需要进行异或处理)。通过这 种方式,操作仍然取决于密钥值,但是密钥值在所述实现中并不是显式 存在的。取而代之地,所述实现中只存在密钥值和掩码值之间的异或处 理。注意到,隐藏所述密钥的更为复杂的方式和/或进一步的方式与本发 明是兼容的。

以下示例性实施例是使用AES(高级加密标准)块密码描述的,这 是因为AES已经成为块密码的广泛使用的标准。AES是块大小为128比特 或16字节的块密码。明文被分成16字节的块,这些块形成加密算法的初 始状态,并且加密算法的最终状态是密码文本。在加密算法的任意给定 点,这些16字节是加密算法的状态。为了在概念上解释AES,所述状态 的字节被组织为4×4字节的矩阵。AES包括多个取决于密钥大小的回合。 每个回合包括对状态矩阵的字节、列或行进行操作的相似的处理步骤, 每个回合在这些处理步骤中使用不同的回合密钥。在使用AES作为示例 的讨论中,注意到,AES以特定的方式定义回合。在以下实施例中,回 合是步骤的任意群组,所述群组包括至少一个非线性映射函数,比如AES 中的S箱。从而,下文所述的回合包括一个非线性映射函数和所述密码 功能的其它步骤的任意组合。

图1示出了AES的一个回合的一些主要处理步骤。所述处理步骤包括:

AddRoundKey(添加回合密钥)110——所述状态的每个字节与回合 密钥的字节进行异或处理;

SubBytes(替换字节)120——使用查找表进行字节到字节的置换;

ShiftRows(移位行)130——所述状态的每一行旋转固定数量的字 节;以及

MixColumns(混合列)140——使用GF(28)中的模乘法来处理每 一列。

步骤SubBytes 120、ShiftRows 130和MixColumns 140独立于所使用 的特定密钥。在步骤AddRoundKey 110中应用密钥。除了步骤ShiftRows  130,可在不知道其他列的情况下,对4x4状态矩阵的每一列执行处理步 骤。因此,由于每一列由四个8比特值构成,所以它们可被认为是32比特 操作。虚线150指示在已经执行了所需数量的回合之前重复所述处理。

这些步骤中的每一个或步骤的组合可由查找表或由查找表网络表示。 如果AddRoundKey 110步骤是通过与回合密钥进行异或处理实现的,则 密钥在白箱攻击的情况下对于攻击者来讲是可见的。还可将 AddRoundKey 110步骤嵌入到查找表中,这使得不那么明显找到密钥。 事实上,能够使用查找表网络来替代AES的完整回合。例如,可以使用 表查找来实现SubBytes 120、ShiftRows 130和MixColumns 140步骤。下 文中充分详细地讨论了AES的可能白箱实现,以描述以下发明的实施例, 但是在Chow 1中可以找到对这一实现的进一步详细描述。此外,可以使 用查找表实现的其它变形,这些变形在本发明的范围之内。

基于表的白箱实现和有限状态机实现都具有以下属性:实现中的所 有中间值都被编码(与标准实现相比)。使用有限状态机的白箱实现的示 例公开于标题为“Data Processing Method”的美国专利公开2007/0014394 中,以及由WulfHarder和Atis Straujums在2008年3月11日在重新信任第六 次季度会议上所作的题为“Synchrosoft MCFACTTM Secure Data  Processing Technology”的报告,它们均通过引用并入本文以用于所有目 的,如同在本文中完全阐述一样。图2示出了对回合的输入(即对S箱的 输入)进行固定编码的白箱AES实现。如图所示,16个输入字节中的每 一个都被fi编码,输出字节中的每一个都被gi编码。

为了描述本发明的实施例,将描述基于表的白箱AES实现的基本描 述。对用于实现基于表的白箱AES的方法的更具体地描述,参见Chow 1。 Chow 1示出了使用特定尺寸的表分解某些函数的特定实现。应该理解的 是,可以对表进行各种其它划分,从而导致查找表的不同函数以及不同 尺寸。此外,虽然本发明的下述实施例使用AES的基于表的白箱实现, 但是可根据所述实施例来实现其它密码和密码功能。此外,可使用其它 类型的白箱实现,而不是基于表的实现,例如有限状态实现。

将基于表的白箱AES的描述分为两个步骤。在第一个步骤中,AES 的回合被描述为查找表网络。在第二个步骤中,通过对表的输入和输出 进行编码来对表进行模糊处理。

步骤1:将AES实现为查找表网络

AES对16字节的数据块进行操作。它们通常被描述为4x4的字节矩阵, 称为状态,包括字节x1,1、x1,2、x1,3...x4,4。上文中参照图1描述的AES的 回合包括以下操作:AddRoundKey 110、SubBytes 120、ShiftRows 130 和MixColumns 140。前两个操作AddRoundKey和SubBytes可以合并为单 个T箱操作。也就是说,可以将针对输入字节xi,j的字节到字节函数Ti,j定 义为其中ki,j是基于AES密钥的16字节回合密钥的 单个字节。令yi,j为Ti,j的输出。ShiftRows操作仅是对输出字节yi,j进行索引 重新编号。为了便于表述,在此处将这一操作略去,但这一操作可并入 到实现Ti,j的查找表中或被实现为对状态矩阵的单独操控。在MixColumns 步骤中,针对一些常数MCl,r,经由GF(28)中的代数表达式从根据4个输出字节yl,j、y2,j、 y3,j和y4,j计算出所述回合的输出字节zi,j

现在针对每个字节到字节函数定义查找表Qi,j,l(xi,j)=MCl,i· Ti,j(xi,j)(其中i,j,l=1,2,...,16)。然后可通过对这些查找表的结果进行 异或处理计算出任何输出字节zl,j,即注意到,Q箱的索引i,j,li可被解释为“回合的输 入字节i,j对回合的输出比特l,j的贡献”。可实现XOR,以对两个半字节(即 4比特值)中的每一个进行操作,作为缩减XOR表的尺寸的查找表。从 而,可实现Q箱,以产生输出半字节,从而减少表的尺寸。因此,AES 回合的每个输出字节zl,j的计算被描述为查找表网络。图3示出了用来计 算字节z2,3的单个输出半字节的查找表网络。

图3示出了借助查找表的网络对一个输出半字节的计算。Q箱中的上 标索引(1)指示所述表只提供Q箱的输出的第1个半字节。输入状态310 中的输入字节x1,3、x2,3、x3,3和x4,3的集合输入到Q箱320、322、324、326 中。查找表320和322的输出馈入XOR 330,查找表324和326的输出馈入 XOR 332。XOR 330和332的输出馈入XOR 334。XOR 334的输出是输出 状态340的输出z2,3的第1个半字节。可采用相同的方式使用另外的Q箱以 及相似的XOR网络计算输出状态340的输出z2,3的第二个半字节。此外, 可实现表的另外集合,以通过接收来自输入状态的字节列并将其转换成 输出状态的相应列的输出来完全地将输入状态310转换成输出状态340。

步骤2:对表和中间值进行模糊处理

在图3中所示的实现中,可以容易地从Q箱提取密钥。仅将逆 MixColumns乘法和逆S箱应用到所述输出会显露出清晰的AddRoundKey 操作。为了防止这一点,使用任意双射函数对所有查找表的输入和输出 进行编码。在Chow 1中描述了这一点。这意味着将查找表与对输出进行 编码的编码函数以及对输入进行解码的解码函数合并。编码被选为使得 对一个表的输出编码与接下来的表中假定的输入编码相匹配。在图4中, 针对第一回合,描述了图3中的实现的一部分。在该示例中,为了与AES 一致,所述回合的输入未被编码,但所述回合的输出被编码。在下一回 合中处理输出编码。也就是说,与第一回合不同,第二回合(以及之后 的回合)假定输入被编码。备选地,第一回合可接收编码输入。然后, 该输入编码必须应用于包含白箱实现的软件程序中的其它地方。类似地, 根据输出是否将与AES一致,最后一个回合可以包括或不包括输出编码。 注意到,在所获得的白箱实现中,查找表和中间值两者都被模糊处理。

上述对基于表查找的白箱实现的描述是为了AES的加密操作。注意 到,通过使用SubBytes、ShiftRows和MixColumns操作的逆操作 (invSubBytes、invShiftRows和invMixColumns),可以容易地将所述描 述调整用于加密操作。从而,假定在以下实施例中可根据需要将上述描 述用于对AES的加密或解密操作。

在白箱实现中实现使用相关安全性设置的实施例可分为两部分描述。 在第一部分中,所讨论的白箱实现具有存在k个消息集Mi的属性,从而 针对任意i、j(i≠j),如果对来自Mi的消息运行白箱实现,则其使用白箱 实现的未用于来自Mj的任何消息的部分。在第二部分中,示出了如何修 改该白箱实现以使得针对不同的集Mi得到不同的安全性设置。

第一部分:白箱实现

在该实施例中将使用AES。如上所述,AES对16字节的数据块进行 操作。它们被写为4x4的字节矩阵,称为状态。

AES的最后一个回合针对输入状态的16个字节中的每一个只包括输 入编码8到8比特查找表。这16个查找表合并操作invAddRoundKey、 invSubBytes和invAddRoundKey。更正式地,这意味着以下内容,其中, 为了便于呈现,最后一个回合的invShiftRows操作被忽略,因为这只是对 索引的重新编号。令(针对所述状态的每个字节xi,j)字节到字节函数Ti,j被定义为然后,Chow 1的白箱实现的最后 一个回合包含实现函数的16个字节到字节查找表,其中fi,j是随机 选择的双射函数。添加函数fi,j以对Ti,j的输入进行编码。对查找表设置输 入和输出编码,以使得一个表的输出编码与接下来的表中所假定的输入 编码匹配。

现在定义k=16个消息集M1、M2、...、Mk,以使得Mi(i=1,2,...,16) 是明文消息集,针对该明文消息集的最后1个半字节给出值i的二进制表 示。注意到,每个集包括2124个消息。这导致以下期望的属性:针对任意 i、j(i≠j),如果对来自Mi的消息运行白箱实现,则其使用白箱实现的未 用于来自Mj的任何消息的部分。毕竟,针对来自Mi的消息,仅针对以值 i的二进制表示结尾的那些行,访问针对所计算的16字节结果的最后一个 字节的查找表

第二部分:实现不同的安全性设置

举例来讲,现在定义以下16个安全性设置,其中每个安全性设置是 可单独寻址的。在该示例中,如上所述,将16个安全性设置中的每一个 规定为输出消息的最后1个半字节。

7个安全性设置(k=1、...、7),每个将所述实现绑定到不同的半字 节si(i=1,...,7),其中半字节si是可从平台导出的并且标识应当在其上运 行白箱实现的平台。这实现了平台绑定。

7个安全性设置(k=8、...、14),每个检查不同的软件程序Si(i=1,...,7) 的完整性。这种完整性检查可包括验证正在使用的软件实例(或其中的 一部分)的散列Hi

一个安全性设置(k=15)拒绝对内容的访问。这可通过未授权白箱 软件为具有这一安全性设置的消息提供不正确的答案来实现。

一个安全性设置(k=16)中不实施任何特殊的安全性属性。这允许 白箱实现正确地处理具有该设置的消息。

任意给定的白箱实现可以只是按照需要针对这些安全性设置之一或 其任意组合正确地操作。例如,在设置将使得能够访问有线或卫星TV系 统中的特定频道的情况下,白箱实现能够只正确地访问与用户被许可观 看的频道有关的消息。此外,对于作为对所有用户都可用的基本包的一 部分的频道,所述消息可以是具有允许处理所有这些消息的如上所述的 k=16的安全性编码的消息。

可按照例如以下方式实现这些安全性设置。

在查找表中存在具有i的二进制表示的24行r,例如i=0对应 于最后1个半字节为0000的行。因此,针对采用每个i(i=0,...,6)作为其 最后1个半字节的情况,存在24行,并且针对这7个安全设置中的每一个, 通过将r的第1个半字节与si进行异或处理,24行r被从原始行r获得的行r’ 替代。值si被关联到特定的授权平台。从而,在运行时间,白箱实现从 运行白箱实现的平台获得平台特定值si,并将si与对应于i=0、...、6的行 的第1个半字节进行异或处理。因此,针对对应于平台si的消息Mi,来自 相关联的行的输出将给出正确的值,否则输出消息不正确。从而,如果 使用安全性级别0、...、6的白箱实现被拷贝到另一平台,则其将不会正 确地工作。

此外,针对采用每个i(i=7,...,13)作为其最后1个半字节的情况, 查找表中存在24行r,并且针对这7个安全设置中的每一个,通过 将ri的第1个半字节与Hi进行异或处理,24行r被从原始行r获得的行r’替代。 值Hi是正在使用的软件Si(或其中的一部分)的散列。从而,在运行时间, 白箱实现获得软件Si的散列值H并将H与对应于i=7,...,13的行中的每一个 的第1个半字节进行异或处理。因此,针对对应于与Hi相关联软件Si的消 息Mi,来自相关联的行的输出将给出正确的值,否则所述消息不正确。 从而,如果使用安全性级别7、...、13的白箱实现被修改,则其将不会正 确地工作。

此外,查找表中存在采用i=14作为其最后1个半字节的24行, 并且通过将r的第1个半字节改变为不同的4比特值,这些行中的每一个被 从r获得的行r’替代。从而,如果访问了这些行,则白箱实现给出不正确 的答案。因此,针对对应于与等于14的安全性级别相关联的白箱实现的 消息Mi,来自相关联的行的输出将给出不正确的值。

此外,查找表中存在采用i=15作为其最后1个半字节的24行, 并且这些行中没有任何行被改变。从而,如果访问了这些行,则白箱实 现给出正确的答案,即,针对当安全性设置等于15时的白箱实现,所有 消息M15都被正确地解码。

举例来讲,现在可通过向白箱实现提供来自M10的消息(即以由10 的二进制表示定义的半字节结尾的消息)来实现对软件程序S3的完整性 检查。所得到的输出消息按如上所述与散列值H3组合并提供正确的输出。

上述实施例的应用的另一示例如下所述。内容提供商可在不同的模 式中发送消息。这可通过将消息空间分割成子集来实现,其中每个子集 是不同的模式。内容提供商可提供一种提供高级内容的模式和一种提供 基本内容的模式。现在,当设计白箱实现时,针对每个模式,必须选择 如何设置安全性设置。针对给定的示例,这意味着例如订购了高级内容 的人没有针对两种模式的安全性设置,而没有订购的人则具有拒绝访问 高级内容模式的安全性设置。

注意到,每个用户可基于用户有权享有的安全性访问接收他们自己 的特定白箱实现。此外,如果用户的授权安全性访问改变,则他们可以 基于新的安全性设置接收新的白箱实现。

在所描述的实施例中,填充数据只是导致16个安全性级别的字节的1 个半字节。附加的级别可以是期望的。例如,在有线电视系统中,完整 字节可用于填充,从而给出256个不同的集Mi,其中每个频道使用等于i 的字节对其消息进行填充。然后,每个用户可订购到唯一的频道集。针 对该用户的用于对经过编码的频道进行解码的白箱实现将提供对针对所 订购的频道的每个消息的正确解码并且将提供对针对未订购的频道的每 个消息的不正确解码。

在所述实施例中,不同集Mi的行为差别只是单个输出字节,其中所 述字节的1个半字节包含填充数据。实际上,可期望更大的影响。从而, 所描述的实施例可扩展到对所述行为具有更大的影响。例如,还可改变 输出消息的其它字节,从而不正确的输出相对于正确输出有很大不同。

在多种实施例中,系统标识符可用来确定白箱实现或运行白箱实现 的白箱系统的标识。上文给出了系统标识符的几个示例,比如白箱系统 中的代码段的散列函数或系统的硬件标识符。还可通过其它方式导出系 统标识符。例如,系统标识符可以是特定代码段或表条目。

此外,上文提到了防篡改的多种示例。存在多种防篡改方法并且它 们与这里描述的实施例兼容。例如,查找表被定义为一段软件代码。从 而,查找表具有双重解释:其既是软件又是查找表。这使得代码防篡改: 改变代码意味着改变白箱实现的功能性。

根据本发明的实施例的方法可作为计算机实现方法实现于计算机上。 针对根据本发明的方法的可执行代码可存储在计算机程序介质上。计算 机程序介质的示例包括存储器设备、光存储设备、集成电路、服务器、 在线软件等。从而,白箱系统可包括实现白箱计算机程序的计算机。这 种系统还可包括其他硬件元件,其中包括存储设备、用于与外部系统以 及在白箱系统的元件之间进行数据传输的网络接口。

在本发明的一种实施例中,计算机程序可以包括适于当计算机程序 运行于计算机上时执行根据本发明的方法的所有步骤的计算机程序代码。 优选地,计算机程序嵌入在非瞬时计算机可读介质上。

除了在非瞬时计算机可读介质上实现计算机程序之外,这种计算机 程序还可被发送到用户或用户设备,以用于安装和使用。这可在任意通 信网络(例如互联网)上实现。

此外,实现这里描述的实施例的用户设备可包括智能卡、支付卡、 过境卡、访问卡和设备、移动电话、平板电脑、个人数字助理、便携式 和台式计算机、机顶盒、数字视频记录、媒体流设备等。对上述实施例 的使用可包括支付软件、安全访问、停车访问、过境访问和支付、银行 业务、软件和数字媒体传输、安全通信、内容分发等。

此外,由于白箱密码通常是非常复杂的和/或模糊的,所以对于人们 来说,写入会比较乏味。因此,具有一种用来以自动化的方式创建根据 本发明的实施例的密码系统的方法是有利的。

创建根据本发明的密码系统的方法可作为计算机实现方法实现于计 算机上或实现于专用硬件中或在两者的组合中。针对根据本发明的方法 的可执行代码可存储在计算机程序介质上。在这种方法中,计算机程序 可包括适于在计算机程序运行在计算机上时执行所述方法的所有步骤的 计算机程序代码。计算机程序具体实现在非瞬时计算机可读介质上。

图5是示出了利用使用相关安全性设置实现白箱实现的方法的流程 图。首先,方法开始(505)。然后,产生密码操作的白箱实现(510)。 这可如上所述使用多种方法和实现来产生。接下来,可以接收标识将由 白箱实现应用的安全性设置的信息(515)。每个所标识的安全性设置可 具有相关联的输入消息集,其中所述输入消息集不重叠。在一些实施例 中,输入消息集中的每个消息包括相关联的安全性设置的值。然后,可 基于所接收的标识安全性设置的信息修改白箱实现(520),从而:当所 接收的输入消息与所接收的安全性设置之一相关联时,白箱实现输出与 所接收的输入消息相关联的正确输出消息;以及当所接收的输入消息不 与所接收的安全性设置之一相关联时,白箱实现输出与所接收的输入消 息相关联的不正确输出消息。然后,所述方法结束(525)。

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

本文所使用的术语“非瞬时机器可读存储介质”将被理解为排除瞬时 传播信号,但是包括所有形式的易失性和非易失性存储器。此外,本文 所使用的术语“处理器”将被理解为涵盖多种设备,比如微处理器、现场 可编程门阵列(FPGA)、专用集成电路(ASIC)以及其它类似的处理设 备。当软件实现在处理器上时,所述组合变成单个特定机器。

本领域技术人员应该理解的是,本文中的任意框图表示实现本发明 的原理的说明性电路的概念视图。

虽然参考特定示例性方面详细描述了多种示例性实施例,但应该理 解的是,本发明能够具有其它实施例,并且能够在多种显然的方面修改 其细节。对本领域技术人员明显的是,在保持在本发明的精神和范围之 内的同时,可以进行各种变形和修改。从而,前述公开、描述和附图只 是说明性的,而决不用来限制本发明,本发明只由权利要求限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号