执行软件应用程序的方法、系统以及安全处理器的制作方法

文档序号:6427326阅读:134来源:国知局
专利名称:执行软件应用程序的方法、系统以及安全处理器的制作方法
技术领域
本发明大体上涉及一种计算机软件并且具体地涉及一种计算机软件的拷贝保护 (copy protection)0
背景技术
本部分旨在向读者介绍可能与以下描述和/或要求权利的本发明的各个方面有关的技术的各个方面。相信本论述有助于向读者提供背景信息以便促进对本发明的各个方面的更好的理解。从而,应该理解的是以要鉴于此来阅读这些陈述,而不是作为对现有技术的承认。由于在物理介质上分发的软件经常遭受非法复制,自然地已经开发了许多技术以便尝试并阻碍这样的复制。这些技术包括 向每个客户提供唯一的序列号,例如印在物理介质上的、在注册阶段将要拨入的随机数字,或已经由服务器针对目标主机制作的许可文件。该技术的主要特征在于受保护的软件将该值与其代码中的参考值相比较。当然这个比较就是攻击者的目标点(target point)0 使用被称为保护锁(dongle)的、应答来自软件的询问(challenge)外部装置。 错误的应答造成软件停止其执行。攻击者将再一次地试图绕过出现的这些询问。 应该具有一些由软件测量的定义的特征(诸如盘旋转速度以及对预定扇区的存取时间)的实际物理介质的存在的验证。使用两种类型的攻击对抗这种技术。第一种类型如在之前的情况中识别测试的位置并且绕过它们。第二种攻击使用精确地仿真物理介质的复杂的虚拟驱动器软件,诸如Alcohol 120%以及Virtual Daemon。本申请人在WO 2009/074686中提供了另一种解决方案。使用一种对于软件的每种实例唯一的辅助安全处理器,并且在该处理器中而不是在主处理器中存储并执行代码的一些元素。该安全处理器的缺失使得软件不可能执行。由于安全处理器难以克隆,所以该解决方案对于偶然的非法闯入(casual hacking)具有鲁棒性。虽然这种解决方案工作良好,但其最初局限于用于保护唯一的软件程序;每个标题(title)都需要其自身的安全处理器。在一些情况下,例如标题的电子递送,具有保护若干标题的安全处理器是方便的。由于安全处理器执行的软件代码依赖于标题,所以存在两种选项 预先向安全处理器加载若干标题的软件代码加载安全处理器。该选项简单但是具有预先必须知晓要保护的标题以及必须可得到这些标题的缺点。 当执行标题时在安全处理器中实时加载软件代码。存在在安全处理器中安全地加载软件代码的现有的解决方案,诸如Java Card和Sim Tool kit。通常通过电子下载提供代码。对于进一步细节,参见 K. Markantonakis 和 K. Mayes 的 Smart Cards, Tokens, Security and Applications, Springer-Verlag New York Inc. ,2008。然而,这些角军决方案仍可改进。
4
因此要认识到存在一种对在允许用户仅仅访问其已经获得授权的标题的同时,使得能够保护多个不同软件标题的系统的需求。此外,即便当预先不知道标题时,该系统也应该工作。本发明提供了这样一种系统。

发明内容
在第一方面,本发明针对一种在系统中执行软件应用程序(application)的方法,所述系统包括具有处理器的主机、与主机操作性地连接的安全处理器以及远程服务器。 该主机读取软件应用程序的主机软件代码和安全处理器软件代码并且将后者从远程服务器传递至请求用于软件应用程序的激活序列的安全处理器。安全处理器接收用于软件应用程序的激活序列并使用其使得安全处理器软件代码可执行。主机执行主机软件代码并且调用安全处理器中的可执行的安全处理器软件代码的例程,所述安全处理器执行可执行的安全处理器软件代码的例程以便获取对返回的调用的响应。在第一优选实施例中,安全处理器软件代码受保护并且安全处理器对受保护的安全处理器软件代码进行解除保护(unprotect)。这是有利地通过加密来保护受保护的安全处理器软件代码、激活序列是解密密钥、以及安全处理器通过使用解密密钥的解密来对受保护的安全处理器软件代码进行解除保护。在第二优选实施例中,安全处理器验证安全处理器软件代码的完整性。在第三优选实施例中,从以下的组中选择激活序列密码、补充(complement)安全处理器软件代码的代码段、以及旨在由安全处理器执行的以便为安全处理器软件代码准备代码的二进制代码。在第四优选实施例中,安全处理器在存储器中存储激活序列。在第五优选实施例中,安全处理器被适配为保护多个软件应用程序。在第六优选实施例中,主机读取用于软件应用程序的标题标识符并且向在请求中包括该标题标识符的安全处理器传递该标题标识符。在第二方面,本发明针对一种用于执行软件应用程序的系统。该系统包括具有处理器的主机以及与该主机操作性地相连接的安全处理器。主机被适配为读取该软件应用程序的主机软件代码以及安全处理器软件代码;向安全处理器传递安全处理器软件代码;执行主机软件代码;以及当执行软件代码时,调用安全处理器中的可执行安全处理器软件代码的例程。安全处理器被适配为接收安全处理器软件代码;从远程服务器请求用于软件应用程序的激活序列;从远程服务器接收用于软件应用程序的激活序列;使用激活序列使得安全处理器软件代码可执行;执行可执行的安全处理器软件代码的例程以便获得对调用的响应;以及返回对调用的响应。在第三方面,本发明针对一种用于执行软件应用程序的系统中的安全处理器。该系统还包括具有处理器并且操作性地与安全处理器相连接的主机。安全处理器被适配为从主机接收安全处理器软件代码;从远程服务器请求用于软件应用程序的激活序列;从远程服务器接收用于软件应用程序的激活序列;将激活序列应用于安全处理器软件代码以使得其可执行;从主机接收用于安全处理器软件代码的例程的调用;执行可执行的安全处理器软件代码的例程以便获得对调用的响应;以及向主机返回对调用的响应。


现在将通过非限制性示例,参照附图描述本发明的优选特征,附图中图1大体上图示了本发明的系统;图2图示了本发明的系统的优选实施例;以及图3图示了根据本发明的优选实施例的应用程序的物理拷贝的生成。
具体实施例方式正如WO 2009/074686中所描述的解决方案,图1中图示的本发明的系统100包括两个元件主机Iio和安全处理器120。安全处理器120能够保护与软件标题对应的多个应用程序,诸如一族应用程序。每个应用程序130包括三个主要部分用于主机110的软件代码131( “主机软件代码”)、用于安全处理器120的软件代码132( “安全处理器软件代码”) 以及激活序列133 ;至少激活序列133可以与主机软件代码131分离地递送至主机100。安全处理器软件代码132优选地进行机密性和完整性二者的保护,使得仅仅被授权的安全处理器120能够执行它。当主机110加载应用程序130时,其保留主机软件代码131并且向安全处理器120传递安全处理器软件代码132。主机110然后正常执行主机软件代码131。安全处理器120是安全的在于其存储的至少一部分代码及其计算通过设计来保护,使得它们难以由非授权人员和装置进行访问,优选地近乎不可能进行访问。安全处理器的一般示例包括智能卡以及防篡改加密处理器。当安全处理器120要执行接收到的安全处理器软件代码132时,其优选地 例如,通过解密、通过置换软件代码块,或通过将其它的预定指令替换为某些指令而对软件代码进行解除保护(unprotect)。 检验现在去保护的软件代码的完整性。应该注意到,检验受保护的软件代码的完整性自然地也是可能的。 等待正确的激活序列133。激活序列133可以是用于该标题(或者标题组)通用的,或者是与给定的应用程序130和给定的安全处理器120进行配对而特别制作的。可通过远程服务器安全地递送该激活序列。应该注意到安全处理器120包括用于解除保护、完整性检验、以及与主机110通信的其它一些的驻留软件代码(未示出)。通过安全处理器120将激活序列133应用于安全处理器软件代码132以便使其可用(即,可执行);在没有正确的激活序列133的情况下,安全处理器软件代码132优选地是不可执行的。激活序列133可以采取许多不同的形式,诸如用于解密安全处理器软件代码132的密钥(这种情况下需要激活序列来解除保护代码),安全处理器软件代码132为了工作所需要的“密码”,安全处理器软件代码132中缺失的优选的软件的实质部分(范围从一条指令至整个程序部分),或者甚至是安全处理器120准备安全处理器软件代码132应该执行的二进制代码。理想地,安全处理器120具有存储多重激活序列133的能力,该情况下,有利地是安全处理器120不需要请求其已经占有的激活序列133。在优选实施例中,如图2中图示,主机210为对因特网240进行访问的通用计算机。主机210包括至少一个处理器、存储器、因特网接口等等。安全处理器220为智能卡,或者智能卡类型的装置,包括用于存储激活序列等的存储器221,并且优选地经由USB总线 250与主机210相连接。安全处理器220能够通过主机210打开到远程服务器沈0的虚拟直接连接观0。本优选实施例的目的在于为安全处理器220保护由软件供应商提供的一族应用程序。在优选实施例中,将应用程序230存储在诸如⑶-ROM、DVD-ROM或蓝光盘之类的物理光学存储介质270上,作为主机代码271、加密代码272和标题ID 273。应用程序230包括主代码271和安全处理器代码275,安全处理器代码275继而包括三个部分 标题ID 273,用于标题的唯一(非受保护的)标识符, 通用代码277,即,可被不止一个标题使用的代码,以及 标题特定的代码278,即,标题特定的代码。从加密代码272生成通用代码277和标题特定代码278。通用代码277和标题特定代码278是当执行应用程序230时要被安全处理器220执行的软件代码。图3图示了根据本发明的优选实施例的应用程序的物理拷贝的生成。 随机128比特密钥标题密钥305被选择310。标题密钥305和标题ID273形成激活序列。 使用标题密钥305将标题特定代码278AES加密320,生成受保护的标题代码 308。 对通用代码277和受保护的标题代码308,使用2048比特供应商私密密钥315 计算330RSA签名,生成标题签名318。每个安全处理器220 (与供应商相链接的)存储对应的2048比特供应商公用密钥。 使用128比特供应商对称密钥335对通用代码277、受保护的标题代码308以及标题签名318进行AES加密340,生成加密的代码272。每个安全处理器220 (与提供商相链接的)还存储供应商对称密钥335。 主机代码271、加密代码272和标题ID 273然后被存储350在该物理拷贝上,诸如光学存储介质270上。当读取物理光学存储介质270时,主机210向安全处理器220提供加密的代码272 和标题ID 273。安全处理器然后 使用其供应商对称密钥335对加密的代码272解密。 使用其供应商公用密钥,验证标题签名318正确。 在肯定签名验证的情况下,验证其激活序列存储器221是否存储与标题ID 273 对应的激活序列233。〇如果激活序列存储器221没有存储这样的激活序列233,则安全处理器从服务器260请求激活序列233。这个优选地是通过使用安全处理器中单独唯一密钥对的任何合适的现有技术安全鉴别信道(SAC)来完成。〇在接收到被请求的激活序列233时,安全处理器220将其安全地存储在激活序列存储器221中。 使用由激活序列233提供的标题密钥305来解密标题特定代码278。 执行由通用代码277和标题特定代码278形成的代码。
当主机210执行主机代码271时,其调用安全处理器220中的通用代码277和标题特定代码278的例程,安全处理器220执行被请求的例程并且返回对应的响应。如果安全处理器220缺失,如果其包含错误代码(例如,仅仅与另一个标题对应的代码),或者如果其缺少正确的激活序列233,则不返回应答或者是返回的应答不正确并且标题的执行不能正常工作。应认识,优选实施例仅支持一个软件供应商。技术人员将认识到将本构思扩展至若干供应商是简明的。每个供应商将具有其自身的供应商对称密钥、以及其自身的供应商公用密钥和供应商私密密钥的密钥对。应用程序将包括识别发行供应商的附加信息。技术人员将认识到本发明可保护一族软件或多个软件程序。例如,被动态地适配为保护每个标题的本发明的安全处理器可保护由给定的编辑者或发行商提供的任何软件。 相比于每个软件使用一个令牌(token),这种可能性可以更具有用于友好性。本说明书和(在适当的情况下)权利要求书和附图中公开的每个特征可单独或以任何适当的结合来提供。被描述为以硬件实施的特征还可以以软件实施,并且反之亦然。权利要求中出现的参考标记仅仅是说明性的并且对权利要求的范围应不具有限制影响。
权利要求
1.一种在系统(100)中执行软件应用程序(130)的方法,所述系统包括具有处理器的主机(110)、与所述主机(110)操作性地相连接的安全处理器(120)以及远程服务器 O60),所述方法包括以下步骤通过所述主机(110)读取所述软件应用程序(130)的主机软件代码(131)以及安全处理器软件代码(132);将所述安全处理器软件代码(13 传递至所述安全处理器(120); 通过所述安全处理器(120)从所述远程服务器(沈0)请求用于所述软件应用程序 (130)的激活序列(133);通过所述安全处理器(120)从所述远程服务器(沈0)接收用于所述软件应用程序 (130)的所述激活序列(133);通过所述安全处理器(120)使用所述激活序列(13 使得所述安全处理器软件代码 (132)可执行;通过所述主机(110)执行所述主机软件代码(131);通过在所述主机(110)上执行的所述主机软件代码(131)调用所述安全处理器(120) 中的可执行安全处理器软件代码(132)的例程;通过所述安全处理器(120)执行所述可执行安全处理器软件代码(13 的例程以便获得对调用的响应;以及通过所述安全处理器(120)返回对所述调用的响应。
2.如权利要求1所述的方法,其中所述安全处理器软件代码(132)受保护,并且所述方法还包括以下步骤通过所述安全处理器(120)来解除保护受保护的安全处理器软件代码 (132)。
3.如权利要求2所述的方法,其中,通过加密来保护所述受保护的安全处理器软件代码(132),所述激活序列(13 是解密密钥,并且所述安全处理器(120)通过使用所述解密密钥进行解密来解除保护所述受保护的安全处理器软件代码。
4.如权利要求1所述的方法,还包括以下步骤通过所述安全处理器(120)验证所述安全处理器软件代码(13 的完整性。
5.如权利要求1所述的方法,其中,从以下的组中选择所述激活序列(133)密码、补充所述安全处理器软件代码(13 的代码段、以及旨在由所述安全处理器执行以便为所述安全处理器软件代码(13 准备代码的二进制代码。
6.如权利要求1所述的方法,还包括以下步骤通过所述安全处理器(120)在存储器 (221)中存储所述激活序列(133)。
7.如权利要求1所述的方法,所述安全处理器(120)被适配为保护多个软件应用程序。
8.如权利要求1所述的方法,还包括以下步骤通过所述主机(110)读取所述软件应用程序(130)的标题标识符073);以及通过所述主机(110)向所述安全处理器(120)传递所述标题标识符073);并且其中,所述安全处理器(120)在请求中包括所述标题标识符073)。
9.一种用于执行软件应用程序(130)的系统,所述系统(100)包括具有处理器的主机 (110)和与所述主机操作性地相连接的安全处理器(120),其中,所述主机(110)被适配为读取所述软件应用程序(130)的主机软件代码(131)以及安全处理器软件代码 (132);将所述安全处理器软件代码(13 传递至所述安全处理器(120); 执行所述主机软件代码(131);以及当执行所述主机软件代码(131)时,调用所述安全处理器(120)中的可执行安全处理器软件代码(132)的例程;并且所述安全处理器(120)被适配为 接收所述安全处理器软件代码(132);从远程服务器(沈0)请求用于所述软件应用程序(130)的激活序列(133); 从所述远程服务器(260)接收用于所述软件应用程序(130)的所述激活序列(133); 使用所述激活序列(13 使得所述安全处理器软件代码(13 可执行; 执行所述可执行安全处理器软件代码(132)的例程以便获得对调用的响应;以及返回对调用的响应。
10. 一种在用于执行软件应用程序(130)的系统(100)中的安全处理器(120),所述系统(100)还包括具有处理器并且与所述安全处理器(120)操作性地相连接的主机(110),所述安全处理器(120)被适配为从所述主机(110)接收安全处理器软件代码(132);从远程服务器(沈0)请求用于所述软件应用程序(130)的激活序列(133);从所述远程服务器(260)接收用于所述软件应用程序(130)的激活序列(133);使用所述激活序列(13 使得所述安全处理器软件代码(13 可执行;从所述主机(110)接收对所述安全处理器软件代码(13 的例程的调用;执行所述可执行安全处理器软件代码(13 的例程以便获得对调用的响应;以及向所述主机(110)返回对调用的响应。
全文摘要
用于执行软件应用程序的方法、系统和安全处理器。其中,主机(110)读取软件应用程序(130)的主机软件代码(131)以及安全处理器软件代码(132)并且将安全处理器软件代码(132)传递至从远程服务器(260)请求用于软件应用程序(130)的激活序列(133)的安全处理器(120)。安全处理器(120)接收用于软件应用程序(130)的激活序列(133)并且将其应用于安全处理器软件代码(132)以便使其可执行。主机(110)执行主机软件代码(131)并且调用安全处理器(120)中的可执行的安全处理器软件代码(132)的例程,所述安全处理器(120)执行该可执行的安全处理器软件代码(132)的例程以便获取然后返回的调用的响应。激活序列(133)有利地是软件代码。本发明通过使用为每个标题动态地适配的单个安全处理器可以使得能够对多个软件标题进行保护。
文档编号G06F9/445GK102298528SQ20111017659
公开日2011年12月28日 申请日期2011年6月28日 优先权日2010年6月28日
发明者E.迪尔 申请人:汤姆森特许公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1