生成软件应用程序的白盒实现的系统和方法技术方案

技术编号:4957719 阅读:189 留言:0更新日期:2012-04-11 18:40
一种开发套件,用于利用白盒密码术生成诸如DRM保护文件之类的文件。该套件由代码生成工具、数据转换引擎和白盒数据生成工具以及白盒库组成。在白盒密码术环境中,数据转换引擎用于保护密码运算和周围代码之间的边界。具体而言,数据转换引擎用于将数据转换应用于密码运算的输入和输出。如果用户经由白盒参数化文件指定需要转换,则代码生成工具将由用户指定的信息翻译成数据转换引擎理解的形式,即作为有关数据变量和函数原型的修饰符。然后,数据转换引擎应用所指定的转换,并且将关于哪些转换被选定的信息传递给数据生成工具。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术一般涉及密码术(cryptography)。更具体地说,本专利技术涉及对被设计为在 攻击者已完全访问并控制正在执行的软件的环境中安全操作的软件应用程序的开发。
技术介绍
白盒密码(cryptographic)软件是在白盒攻击环境中执行密码功能的软件;也 就是说,在这样一种环境中,其中软件应用程序的至少部分并且有可能整个实现可能暴露 给攻击者,而该攻击者至少在某种程度上控制并且可能完全控制该软件正运行于其上的平台。例如,这种环境与诸如数字版权管理(DRM)之类的密码应用程序一起出现,其中 电视节目、电影、音乐等等被显示在个人计算机(PC)或其它类似的日用计算设备上,而非 经由广播或经由DVD播放器显示在传统电视上。虽然这种日用设备的许多所有者会遵守版 权法,但是还是有其它人企图通过制作并出售媒体内容的违法拷贝来盗取该内容而不为他 们的使用向其所有者付费,从而在面向PC或类似设备的媒体上获利。PC是一个特别暴露的 环境在行的攻击者可以获得对该设备的完全控制,并且可以详细监控软件运行并利用调 试器控制、中止或修改其执行,以及可以重复执行相同的代码以查找可以利用的行为模式寸寸。白盒密码软件被设计为在这种环境中运行。以白盒攻击环境为目标的密码功能, 虽然可以很好地实现传统密码,却是以极为非传统的方式来实现它,以便阻止攻击者获知 软件运行所采用的方式。例如,通常,要么通过部分赋值将密钥嵌入在白盒密码软件的余部 中,要么对密钥进行编码。此外,通常对密码的输入和输出文本进行编码,以使得攻击者拥 有的密码的传统实现的知识在对白盒密码实现发动攻击方面毫无用处。在过去,会要求用户确定和指定安全参数,这些安全参数会并入用户定义的软件 内,该用户定义的软件还包括用于访问白盒库工具的API调用。换句话说,在过去,通过将 已构造的白盒实现包含到软件中而后可选地利用诸如Cloakware Transcoder (克劳克维 尔代码转换机 )之类的混淆和/或防篡改工具保护它们的接口数据(例如,对于加密,这 通常包括密钥和明文输入以及密文输出)而将白盒加密运算注入到软件应用程序中。将使 用密码功能的软件和实现密码功能、密钥(或在公钥密码术的情况下为多个密钥)、文本输 入以及文本输出的软件正确地连接在一起的职责在于使用密码功能的程序员(程序员/用 户)。因为每一步都受程序员/用户控制,因此所有问题来自于人们对完美性能的期 望。当程序员/用户成功时,结果是该功能是所想要的。如果程序员/用户遗漏了一步或 者错误地执行了一步,则该功能可能在总体方式上或在细微方式上与所想要的不同。后者 更加危险总体错误通常在测试过程中被捕捉到;而细微的错误可能容易被遗漏。因此,明显的是,虽然白盒密码实现的出现已经使DRM内容分发系统更加可行,不 过,大的问题归于我们将怎么调用该实现的周围隐含(peri-cryptic)(在未加密文本进入或离开白盒实现的情况下)和相互隐含(inter-cryptic)(在加密文本从一种形式的加密 向另一种形式的加密移动的情况下)方面。我们已经确定,除了白盒密码或密码散列本身 之外,还需要改进白盒密码或密码散列驻留于其中的软件的构造,以及在系统使用多种加 密和散列的情况下不同密码组件中的连接的构造,所述多种加密和散列形成加密或散列内 容沿其传播的信息管道的“管件(plumbing) ”,其中软件的周围隐含部分和相互隐含部分从 前必须由在行的用户详细地手动构造。
技术实现思路
提供一种计算机实现的利用白盒密码术生成受保护的软件应用程序的方法,以及 一种具体实现该方法的计算机程序产品。该方法包括接收包括应用程序源代码和抽象的 白盒函数调用的至少一个输入源文件;并且接收包含用于每个抽象的白盒函数调用的密码 域参数的参数化文件。然后,根据每个抽象的白盒函数调用的密码域参数生成用于定义每 个抽象的白盒函数调用的白盒调用定义数据。然后,将诸如块密码或非对称密码之类的至 少一个数据转换应用于所述输入源文件和所述白盒调用定义数据,以分别生成转换后的源 文件和转换后的白盒调用定义数据。然后,根据所述白盒调用定义数据和所述转换后的白 盒调用定义数据生成包含用于每个白盒函数调用的特定实例数据的数据初始化。然后,编 译所述转换后的源文件、所述转换后的白盒定义数据以及所述数据初始化代码,并且将所 得到的编译代码链接到白盒库以提供可执行软件应用程序。所述白盒调用定义数据以自动 方式生成将白盒实现应用程序接口(API)链接到所述应用程序源代码的代码以及当白盒 实现API和另一白盒实现API必须通信时将白盒实现API链接到另一白盒实现API的代码。根据这方面的实施例,所述白盒调用定义数据可以包括白盒调用定义文件和指定 为每个白盒函数调用选定的参数的白盒元数据,并且将所述至少一个数据转换应用于所述 转换后的白盒调用定义数据生成转换后的白盒调用定义文件和指定为所选择的参数选定 的数据转换的转换元数据。生成所述数据初始化可以包括根据所述白盒元数据和所述转换 元数据生成数据初始化文件。附图说明在回顾了结合附图对本专利技术的特定实施例的下列描述之后,本专利技术的其它方面和 特征对于本领域普通技术人员来说将变得明显。现在将参照附图,仅仅以示例的形式描述本专利技术的实施例,其中图1是根据本专利技术实施例的白盒密码术集成的基本设计流程图;图2是根据本专利技术的实施例白盒密码术的扩展设计流程图。图3是根据本专利技术实施例的链式加密场景的图;图4是根据本专利技术实施例的使用链式加密API的链式加密场景的图;图5是示出本专利技术的实施例及其运算的示意图;以及图6是示出根据本专利技术实施例的用于编连健壮实现的步骤的图。具体实施例方式很明显,需要这样一种方法和系统通过它可以使构造使用白盒密码功能的应用程序的周围隐含和相互隐含部分的步骤自动操作,从而使得当前用于构建这种系统的容易 出错的方法可以由相当可靠的自动化方法来代替。为了实现这一点,公开了一些实施例,在 这些实施例中,应用程序的普通内部隐含(intra-cryptic)部分(实际执行白盒运算的部 分)与这些部分的惯常情况相比变得更加灵活,以适应于上述自动化系统。这种系统的好处类似于通过编译代码而非写手工汇编代码所得到的好处。理论 上,好的程序员应该能够以手工汇编代码的方式写应用程序。然而,实际上手工汇编代码极 其容易出错,并且编译器通过将低级的、高度详细的软件构造体制(regime)用更为自动化 的软件构造体制来替代,使得在汇编代码级别从未实现的复杂性的软件系统成为可能。本申请的一方面是要提供这样的系统和方法,通过它可以对白盒实现的周围隐含 和相互隐含方面进行抽象并使之自动操作,使得其用户可以实现在之前通过周围隐含和相 互隐含的手写编码软件要么难以实现要么不可实行的复杂性的级别上的白盒加密实现的 使用,同时还通过使它们更易于为程序员/用户创建,而有益于甚至更简单地使用白盒密 码术,正如非常简单的程序通过用从诸如C++之类的高级语言的源代码编译的代码取代手 工汇编代码而受益。这种自动操作的一方面是对表达不同形式的密码功能所采用的方式的统一。例 如,在诸如C++之类的编译语言中,相同的句法形式用于加法,无论正在被加的是两个整 数、两个浮点数还是两个复数。该语言及本文档来自技高网
...

【技术保护点】
一种计算机实现的利用白盒密码术生成受保护的软件应用程序的方法,包括:  接收包括应用程序源代码和抽象的白盒函数调用的至少一个输入源文件;  接收包含用于每个抽象的白盒函数调用的密码域参数的参数化文件;  根据每个抽象的白盒函数调用的密码域参数生成用于定义每个抽象的白盒函数调用的白盒调用定义数据;  将至少一个数据转换应用于所述输入源文件和所述白盒调用定义数据,以分别生成转换后的源文件和转换后的白盒调用定义数据;以及  根据所述白盒调用定义数据和所述转换后的白盒调用定义数据生成包含用于每个白盒函数调用的特定实例数据的数据初始化。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:菲利普阿兰艾森格兰特斯图尔特古德兹丹尼尔阿列默多克
申请(专利权)人:爱迪德加拿大公司
类型:发明
国别省市:CA[加拿大]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利