用于改进代码和数据签署的方法和设备的制作方法

文档序号:6349014阅读:154来源:国知局
专利名称:用于改进代码和数据签署的方法和设备的制作方法
技术领域
本发明大体上涉及计算机安全性技术,且更特定来说,涉及用于改进其中检验和签署代码和数据文件的方法的方法和设备。
背景技术
在计算机系统中,实施多种机制和系统以防范恶意软件和已在无授权的情况下经修改的软件。最常见方法中的一者是提供代码或数据的数字签名,在执行或存取所述代码或数据之前检查所述数字签名。用于以数字方式签署代码和数据的方法广泛用于针对移动装置(例如,蜂窝式电话)编写的软件,这是因为需要保护蜂窝式网络的安全性且移动装置实施恶意软件保护软件的能力有限。通过数字签名保护完整性的代码或数据在其被出售或另外分配之前由认证授权方或“签署服务器” “签署”。经签署的代码或数据包含含有经加密值的数字签名,所述经加密值可结合检验算法使用以检验所述代码或数据与其被“签署”时相同。如图1中说明,在典型的实施方案中,计算装置(例如,移动装置)通过以下操作确认应用值得信任将代码或数据拆开以获得签名,步骤2 ;在应用代码和/或数据上运行散列函数(或执行某一其它检验算法),步骤4 ;将签名解密以获得签名内所含的散列值,步骤6 ;确认签名曾由有效证书签署,步骤8 ;以及将所得散列与数字签名内所含的散列进行比较,步骤10。如果两个散列值相等(测试12),那么信任所述代码或数据。例如移动装置等计算机可包含存储器中的证书链以使其能够将数字证书解密并确认签名曾由有效证书签署。如果签名由有效证书签署且散列值相等(即,测试12 = “是”),那么信任所述代码或数据且客户端可执行所述代码或使用所述数据。签署代码和数据在大多数情况下提供有效的安全屏障。然而,此安全体系是静态的,且因此不能响应于安全环境中的变化。举例来说,如果在客户端核心密码组件的任一者的实施方案中发现弱点或如果发现针对核心散列函数或公共密钥算法的新的脆弱性,或如果暴露逻辑或应用层级错误,那么客户端装置可能不能保护其自身免受此类脆弱性影响。 更糟糕的是,此情形可在代码和数据完成且被分配之后的若干年以及客户端装置在商业上部署之后的若干年发生。

发明内容
各种实施例提供用于更新并改进用于检验可执行计算机文件和数据文件的签署和检验过程的方法和系统。各种实施例提供一种用于通过提供可由客户端计算机装置接入的签署服务器的可更新环境而增强现有代码和数据签署系统的灵活的机制。此能力提供用于从何物将通常发展成代码签署系统中的灾难性弱点的发现中恢复的系统和方法。各种实施例包含签署服务器,其经配置以确定客户端计算机装置上的软件是否值得信任并向客户端计算机提供经更新的检验方法和签名。在一实施例中,经更新的检验方法和签名可提供于第二签名文件(本文称为“签名2文件”)中。当计算装置将供执行的应用拆开时,其可检查第二签名文件是否与应用文件相关联。如果否,那么计算装置可连接到签署服务器以请求用于软件的第二签名文件。所述签署服务器接着可请求足以使其能够确定所述软件是否值得信任的来自计算装置的与所述软件有关的信息。如果所述软件确定为值得信任,那么所述签署服务器可将第二签名文件发送到所述计算机装置以供用于此后检验所述软件。 所述第二签名文件可包含新的或经修改的检验方法和新的签名。


并入本文中并构成本说明书的部分的

本发明的示范性实施例,且连同上文给出的概括描述和下文给出的详细描述一起用以阐释本发明的特征。图1是用于检验经签署的代码和数据的现有技术方法的过程流程图。图2是有线和无线蜂窝式网络的系统框图。图3是说明一实施例方法的概况的过程流程图。图4是根据一实施例的应用数据文件的说明。图5是用于检验计算装置中的软件的一实施例方法的过程流程图。图6是用于检验计算装置中的软件的另一实施例方法的过程流程图。图7是用于检验签署服务器中的软件并更新客户端装置上的检验方法和签名的一实施例方法的过程流程图。图8是用于检验签署服务器中的软件并更新客户端装置上的检验方法和签名的另一实施例方法的过程流程图。图9是适宜与各种实施例一起使用的实例移动装置的电路框图。图10是适宜与各种实施例一起使用的实例个人计算机的电路框图。
具体实施例方式将参看附图来详细地描述各种实施例。只要可能,将在整个图式中使用相同的参考标号来指代相同或相似的部分。对具体实例和实施方案做出的参考是出于说明性目的, 且不希望限制本发明或权利要求书的范围。在此描述内容中,使用术语“示范性”来表示“充当一实例、例子或说明”。在本文中描述为“示范性”的实施方案不一定阐释为比其它实施方案优选或有利。在此描述内容中,术语“签署,,和“签名,,指代用于使计算装置能够确定软件代码或数据或代码与数据的组合(统称为“软件”)自从由签署授权方检验后是否已经修改的方法,包含此项技术中众所周知的方法和通过各种实施例实现的方法两者。此类众所周知的方法通常涉及产生散列或“指纹”值,其本质上将代码、数据或代码和数据浓缩为大数字 (例如,20字节值)中,所述大数字对于代码和/或数据中所含的特定信息几乎为唯一的。 此散列或指纹值接着根据众所周知的PKI加密方案使用私人密钥加密,所述私人密钥可通过存储在客户端装置中的公共密钥而解密。经加密的散列或指纹值称为签名,且产生签名的过程一般称为签署。使用若干不同类型的散列算法,且各种实施例实现对此类算法的进一步改变和精细化,且因此术语“签署”和“签名”的使用不希望将描述内容或权利要求书的范围限于任何特定形式的密码过程、散列函数或检验算法。各种实施例可应用于签署和检验应用软件指令(通常称为“代码”)、由应用处理或使用的数据,以及包含代码和数据两者的应用文件。因此,本文使用术语“软件”来大体上指代代码和数据两者任择其一,以及表示代码和数据联合。以下描述和权利要求书中对软件的参考不应解释为排除数据或要求可执行指令。如本文所使用,术语“移动装置”、“移动手持机”、“手持机”和“手持式装置”指代蜂窝式电话、具有无线调制解调器的个人数字助理(PDA)、无线电子邮件接收器(例如, Blackberry 和Treo 装置)、具备多媒体因特网功能的蜂窝式电话(例如,iPhone )、 无线电话接收器和类似的个人电子装置中的任一者或全部。在优选实施例中,移动装置为蜂窝式手持机装置(例如,手机)。然而,蜂窝式电话通信能力并非必需的,因为可在实施多种文本数据输入方法的计算装置上实施各种实施例。如本文所使用,术语“计算机”和“计算装置”希望涵盖可能存在或未来将开发的任何形式的可编程计算机,包含(例如)个人计算机、膝上型计算机、移动装置(例如,蜂窝式电话、个人数据助理(PDA)、掌上型计算机和多媒体移动装置)、主机计算机、服务器和集成计算系统。计算机通常包含耦合到存储器电路的软件可编程处理器,但可进一步包含下文参看图9和10描述的组件。如本文所使用,术语“服务器”指代经配置以在具有对网络的接入的客户端-服务器架构中操作的多种市售计算机系统中的任一者。特定来说,术语“服务器”指代web服务器,尤其是因特网可接入服务器,其通常包含处理器、存储器(例如,硬盘存储器)和经配置以将服务器处理器连接到网络(例如,因特网)的网络接口电路。服务器还可包含用于安全性目的的专门硬件。如本文所使用,术语“客户端”指代计算装置,例如移动装置或个人计算机,其具有能够执行计算机程序的处理器和用于与服务器通信的装置(例如,因特网连接或计算机程序);或指代计算机程序,例如web浏览器或操作系统,其包含用于与在其它操作系统上执行的计算机程序通信的链接(例如,因特网连接)。术语“客户端”和“服务器”本质上是描述性的,且不希望限制本发明或权利要求书的范围。许多计算环境通过仅执行经验证的软件来保护计算装置和网络。举例来说,操作无线二进制运行时环境(BREW )系统的移动装置(例如,蜂窝式电话)在执行每一应用代码之前对其进行检验。此保护其所连接到的移动装置和蜂窝式数据网络免受恶意软件攻击或利用。为了支持此环境,认证授权方在分配之前测试每一软件应用以确认其不具有恶意软件和可利用的脆弱性。如果确定应用为安全的,那么其由认证授权方签署并识别为经检验的软件包。移动装置可接着在执行代码之前下载并检验经认证的软件。如上文描述以及图1中说明,先前移动装置通过以下操作检验经认证的软件将应用拆开以获得代码和签名文件,步骤2 ;对经拆开的代码执行散列算法,步骤4 ;将签名文件解密以获得散列值,步骤6 ;确认签名曾用有效证书签署,步骤8 ;将所计算的散列值与这些签名所提供的散列值进行比较,步骤10 ;以及在两个散列值相等的情况下将所述软件视为受信任,测试12。虽然此用于认证软件的系统提供高安全级别,但其随着时间的过去仍可能容易变得过时且易受攻击。图1中说明的安全性方法是静态的,且与软件应用相关联的散列算法和签名在移动装置和软件的整个使用寿命期间保持不变。随着时间的过去,随着所述方法中的脆弱性变为已知的,密码安全性方法可“磨损”。用于签署软件的证书可能受到损害,且签署和检验过程中使用的散列函数可能受到攻击。因此,常规代码和数据签署方法的不灵活性质使其随着时间的过去可能容易受到攻击。在此之前,当发现密码组件或散列函数中的弱点时,将需要更新应用软件以便改变检验算法和相关联的签名。然而,下载新的应用文件耗费时间且消耗大量带宽。各种实施例提供用以通过使签署服务器能够在分配软件之后以及客户端装置离开制造商之后更新并控制客户端装置中实施的检验过程而克服代码和数据签署机制中的脆弱性的系统和方法。概括来说,客户端计算机可经由有线或无线网络接入签署服务器,且在建立连接的情况下,签署服务器可向客户端计算机请求信息和/或命令一系列动作以检验特定软件。客户端计算机执行所请求的动作且将结果发送到服务器,而不尝试解译所述信息。基于所接收的信息,服务器可确定其是否信任软件。如果是,那么签署服务器可告知客户端计算机接受代码/数据软件,且可任选地使用其信任的且信任客户端计算机实施的构造(即,检验算法)为代码/数据产生新的签名。最后,客户端计算机可使用新的签名和新的检验算法来进行软件的后续检验。或者,服务器可告知客户端计算机简单地拒绝软件, 这可在客户端计算机脆弱性如此差以致于服务器甚至不能信任客户端计算机信息或不能信任客户端计算机以安全方式实施所需动作的情况下发生。可在包含有线和无线数据网络两者(例如图2中说明)的通信网络20中实施各种实施例。通信网络20可包含因特网25和蜂窝式网络,其使例如移动手持机30和个人计算机观等客户端装置能够接入签署服务器沈以检验代码和/或数据并接收用于检验代码和/或数据的经更新的签名和检验方法。在此实例网络20中,基站21是包含操作网络所需的元件(例如,移动交换中心 (MSC) 22)的蜂窝式网络的一部分。在操作中,MSC 22能够在移动手持机30正发出和接收呼叫时经由基站21将呼叫和消息路由到移动手持机30以及从移动手持机30路由呼叫和消息。MSC 22还在移动手持机30正参与呼叫时提供到电话陆地线主干线(未图示)的连接。此外,MSC可耦合到服务器网关23,所述服务器网关23耦合到因特网25。经由服务器网关23,移动手持机30可经由因特网与签署服务器沈以及可从其下载软件应用的内容服务器27进行通信。并且,个人计算机观可使用(例如,因特网服务提供者所提供的)常规因特网接入方法经由因特网与签署服务器沈和内容服务器27进行通信。此类通信可使用文件传递协议(FTP)、超文本传递协议(HTTP)和安全套接层上的超文本传递协议 (HTTPS)发送。所述通信可由各种类型的文件组成,包含超文本标记语言(HTML)、图像文件和以例如JavMcript等语言编写的客户端侧脚本。另外。此类消息可包含与各种安全性方案有关的文件,例如数字证书和签署密钥。另外,此实例网络20包含证书授权方(CA)服务器对,其是经配置以充当证书授权方的服务器,包含向此示范性网络中的例如签署服务器沈和内容服务器27等web服务器发布数字签名以及公共和私人密钥的能力。此外,CA 服务器M可经由蜂窝式网络与移动手持机30通信以保持其根证书(root certificate) 集合为当前的。移动装置30可经由对基站21的无线数据网络接入而与签署服务器沈通信,基站 21经由网关服务器23耦合到因特网25。另外,移动装置30可通过经由数据电缆四或局域无线网(例如,经由Bluetooth 收发器)连接到个人计算机观而与因特网服务器通信, 其中个人计算机28经由多种因特网连接(例如,电话调制解调器、电缆调制解调器、WiFi、光纤连接等)接入因特网。通过将移动装置30连接到个人计算机观,可将应用软件和数据从内容服务器27上载到移动装置30。另外,移动装置30可通过经由电缆四与连接到因特网25的个人计算机洲通信而经由有线因特网连接与签署服务器沈通信。以此方式,可在移动装置30与签署服务器沈之间使用有线数据链路交换大量软件数据和代码,所述有线数据链路可具有比无线通信网络高的数据传递速率。在图3所示的过程流程图和图4所示的实例应用数据文件中说明各种实施例的概况。在各种实施例中,由计算装置使用以检验经签署软件的方法经修改以包含由签署服务器沈产生的第二签名文件。如在用于检验软件的常规方法中,计算装置观、30将待检验的代码和数据拆开并存取签名文件,步骤60。如图4中说明,应用文件50可包含可执行代码文件52、运行应用所需的相关联数据M、签名文件56和签名2( “sig2”)文件58。常规经签署应用包含可执行文件52、数据文件M和单一签名文件56。所添加的签名2文件58可包含新的或经修改的检验算法58a和新的签名58b。新的或经修改的检验算法58a可呈可执行命令(例如,XML命令)的形式,或可为空的,如下文更详细地论述。新的签名58b是由签署服务器沈通过将新的或经修改的检验算法58a应用于应用代码文件52和/或应用数据M而产生的签名。应用代码文件52和应用数据文件M在本文中一般称为软件。在将软件拆开且存取签名文件(步骤60)后,计算装置观、30确定签名2文件58 是否存在,测试62。如果签名2文件58存在于应用文件50中(即,测试62 = “是”),那么计算装置观、30使用新的或经修改的检验算法58a来产生与签名2值进行比较的检验值, 步骤64。通过使用与有效证书相关联的公共密钥将签名2文件58的签名2部分58b中所存储的数据解密而获得签名2值。如果通过将新的或经修改的检验算法应用于应用软件而产生的值与从签名2文件58获得的签名2值匹配,那么软件经检验且计算装置观、30继续执行所述代码或使用所述数据,步骤66。另一方面,如果应用文件50中不存在签名2文件58 ( S卩,测试62 = “否”),那么计算装置观、30尝试建立到签署服务器沈的通信链路以请求签名2文件,步骤64。签署服务器26接收包含待检验的软件的识别的请求且继续向发出请求的装置请求关于软件的信息,步骤70。在此过程中,签署服务器沈可向发出请求的装置观、30询问软件的多种样本, 以及要求发出请求的计算装置观、30对待检验的软件执行多种操作中的任一者。签署服务器26向计算装置观、30请求的特定信息和处理可基于此时的已知或潜在的安全威胁来确定。签署服务器沈接收所请求的信息,且使用所述所接收的信息确认软件是否已经修改或另外可信任,步骤72。如果软件经检验或确定为值得信任,那么签署服务器沈可向发出请求的计算装置观、30提供新的检验算法和呈签名2文件形式的新的签名(即,签名幻,步骤 74。发出请求的计算装置观、30从签署服务器沈接收签名2文件,存储所述文件(例如与应用代码和数据一起),且接着可使用所述签名2文件58来检验软件,步骤64。在步骤74中由签署服务器沈提供给计算装置观、30的签名2文件58可用于相关联的应用代码和/或数据的所有后续检验。因此,除非另一事件提示计算装置观、30联系签署服务器沈,否则签名2文件58将用于软件的所有后续检验。此过程允许软件分配者经由正常渠道出售和分配其软件,且接着在稍后的时间使用签署服务器26更新软件检验过程和签名。在一些实施例中,计算装置观、30可在稍后的时间再次联系签署服务器沈以确定是否存在需对签名2文件进行的任何更新,借此准许实施周期性的安全性更新。
任选地,如果计算装置观、30确定不存在签名文件(即,测试62 = “否”)但不能建立与签署服务器沈的联系,那么计算装置观、30可继续使用最初用应用文件50提供的初级签名文件56来检验软件(步骤64)。因此,如果签署服务器沈不可用或网络接入不可实现,那么可仍然在与现有技术中可实现的相同的程度上检验应用软件。虽然此检验可能容易遭受安全性损害,但其仍然在计算装置观、30可建立与签署服务器沈的联系以获得签名2文件58之前提供某一安全性措施。如图3中说明,各种实施例提供其中计算装置观、30和签署服务器沈各自执行检验过程的一部分的协作检验环境或系统。概括来说,计算装置观、30向签署服务器沈提供足够的信息以使服务器能够确认软件值得信任,且签署服务器沈提供经更新的检验例程和签名以使计算装置观、32能够随后检验代码和数据,而不必每当将执行应用时均联系签署服务器26。图5中说明可在计算装置观、30中执行的方法步骤的一实施例。在此实施例中,测试签名2文件58的存在以作为软件处理过程中的断言步骤。在此实施例中,计算装置28、 30处理器将应用软件拆开以存取相关联的签名文件,步骤100。在一些实施方案中,将软件拆开以获得签名文件的过程(步骤100)可存取存储器的其中维持签名2文件的另一部分 (即,签名2文件无需如图4中说明存储在应用文件50内或与之相邻)。与应用相关联的签名文件经检查以确定是否存在签名2文件,测试102。签名2文件通常将在计算装置观、 30已针对特定应用联系签署服务器沈之后存在。如果签名2文件存在,那么处理器在经拆开的软件上的签名2文件内执行检验例程,步骤104。如下文描述,签名2文件中的检验例程可为标准散列函数、经修改的标准散列函数,或击败针对特定应用出现的威胁所需的完全不同且独特的检验算法。处理器还将签名2文件内的数字签名解密以获得检验值,步骤 106。此解密可使用对应于发布到签署服务器沈的数字证书的公共密钥执行。在将签名2 文件解密的过程中,处理器还可确认签名曾由有效证书的持有者签署,步骤108。此检验确认签名2文件被受信任的签署授权方接收。所产生的检验值接着与通过将签名2文件解密而获得的检验值进行比较,步骤110。如果两个值相等(即,测试112 = “是”),那么向处理器通知软件可信任且因此执行将继续下去,步骤114。然而,如果两个值不相等(即,测试 112 = “否”),那么向处理器通知软件不可信任,且在大多数情况下将阻止应用代码执行,或从存储器删除所述数据。如果对经拆开的软件的检视揭露应用文件50中不存在签名2文件或不存在对应于应用文件50的签名2文件(即,测试102 = “否”),那么计算装置观、30的处理器可建立到签署服务器沈的连接,步骤116。如果未实现到签署服务器沈的连接(即,测试118 = “否”)(例如当网络不可由计算装置观、30使用或签署服务器沈未响应于连接请求时),那么计算装置处理器可使用上文参看图1所描述的常规检验方法来检验软件。如果建立到签署服务器沈的连接(即,测试118 = “是”),那么处理器可请求签名2文件且识别需要其检验信息的特定应用软件,步骤120。此信息应足以使签署服务器 26能够定位签署服务器的存储器内的对应的数据文件(例如,在签署服务器中维持的对策数据库内)。举例来说,计算装置观、30可提供特定应用软件的名称、识别符和/或序列号。 在一实施例中,提供给签署服务器26的软件识别信息可为唯一识别符(例如,序列号)、软件产品识别符(例如,软件产品和版本号)、随软件提供的原始数字签名、原始数字签名的一些部分或片段(例如,签署服务器沈所请求的特定部分或片段),或软件本身的一些部分或片段中的任一者或组合。提供软件识别符(包含上文提及的形式的识别符中的任一者) 的步骤可由计算装置观、30自主实现,或可在建立连接之后响应于接收从签署服务器沈接收的针对特定软件识别符的请求而实现。计算装置观、30还可向签署服务器沈通知其自身的构造或型号(例如通过提供型号识别符)以便使签署服务器26能够较好地确定应执行的检验的类型。一旦已将所述信息提供给签署服务器沈,计算装置观、30就可待命以接收并响应于其可从签署服务器26接收的对信息的请求。如果签署服务器沈已经配置以确认特定软件(例如当存在削弱或损害随应用软件提供的原始签名所提供的检验安全性的已知威胁时可能出现的情况),那么签署服务器沈将向计算装置观、30发送一个或一个以上对关于软件的信息的请求,步骤122。然而,如果签署服务器沈不具备针对特定应用软件的经更新的检验例程或签名(例如当不存在对软件的已知威胁时可能出现的情况),那么签署服务器26可跳过请求信息的步骤且简单地提供签名2文件(所述签名2文件包含使用初级签名和检验方法的指令或含有初级签名和使用标准初级检验散列例程的指令),步马聚122 ο如果计算装置观、30从签署服务器沈接收对数据的请求,那么其处理器执行所请求的步骤且经由所建立的网络连接传回所请求的数据,步骤122。预想签署服务器沈可经配置以向计算装置观、30请求检验特定软件所必需的广泛范围的数据和处理步骤。举例来说,签署服务器沈可请求在文件内的特定位置(例如,前50字节、最后50字节,和来自文件中间的一部分的50字节)所取得的软件的样本。或者,签署服务器沈可请求计算装置观、30对软件执行操作,例如执行特定散列函数并将所得值提供给签署服务器26。预想向计算装置观、30请求的特定信息将经配置以提供签署服务器沈可使用而以高置信度确定特定软件值得信任或执行起来安全的信息。因此,签署服务器26所请求的特定信息可随请求而不同,使得试图击败签署服务器的一方将不能准确预测可请求什么数据或计算装置 28,30可执行哪些操作。另外,签署服务器沈对所请求数据的使用可秘密维持,使得不能预见或以其它方式损害签署服务器所利用的检验过程。因此,签署服务器沈可请求比其用于确认软件多的数据以便进一步掩盖检验软件所借助的方法。借助实例,签署服务器沈可能指令计算装置观、30执行以下一连串步骤(a)将值X追加在软件内容之前;(b)将散列算法Y应用于如此修改的软件内容;(C)将散列算法 Z应用于如此修改的软件内容;(d)从散列Y和散列Z过程的结果创建散列的复合物;(e)报告复合散列值;⑴报告文件偏移A、B和C处的值;(g)报告软件正请求的运行时特权;(h) 报告软件正要求的许可证的条款;(i)报告软件所注册的通知或MIME类型;以及(j)报告客户端计算机正使用的密码库的版本。响应于此请求,在步骤122中,计算装置观、30执行所请求的过程且将所请求的数据传回到签署服务器26。签署服务器沈可接着使用此(或其它)信息和处理结果的一些或全部来确定软件是否已经修改、含有恶意软件或另外不值得信任。签署服务器26还可使用所述信息来确定计算装置观、30是否能够或可被信任以执行某些检验过程。签署服务器沈请求信息以及客户端计算装置观、30遵从请求的过程(步骤122) 可自主或半自主地实现。在一实施例中,客户端计算装置观、30自动响应于来自签署服务器26的对信息的请求而无用户的介入。在此实施例中,在计算装置观、30与签署服务器26之间交换信息的过程是用户不可见的,用户仅可注意到首次启动应用时的额外延迟。在另一实施例中,在计算装置观、30与签署服务器沈之间交换信息的过程可包含某一用户交互。举例来说,签署服务器沈可请求用户输入关于产品的信息,例如可提供在包装上或在下载时提供的许可证号或序列号。作为另一实例,签署服务器沈可请求用户识别其自身且输入其地址、移动装置电话号码和电子邮件地址。此关于用户的额外信息可使签署服务器 26能够注册用户并跟踪签名2文件的部署。具有用户电子邮件地址和/或移动装置电话号码的记录还可使签署服务器沈能够向计算装置观、31发出应获得新的签名2文件更新的通告(如当识别出显著的安全性威胁时可能必需的)。在半自主实施例中,签署服务器 26还可向用户提出关于待检验的软件的源的问题,其中此信息将使签署服务器沈能够确定软件是否值得信任。在其中签署服务器26搜集用户注册信息作为此过程的一部分的实施方案中,即使当初级签名和检验方法中不存在已知威胁或弱点时,签署服务器26也可向计算装置观、30请求所述信息。在任一实施例中,发送服务器沈可提供必要指令(例如, XML代码)以致使计算装置观、30获得所请求的数据或产生提示用户输入所请求的数据的显不。使用计算装置观、30所提供的信息,签署服务器沈可准备并向计算装置观、30发送新的签名2文件58 (计算装置观、30在步骤124中接收所述新的签名2文件58)。在软件不面对已知威胁或当分配时随软件提供的初级签名和检验方法适当的情况下,提供给计算装置观、32的签名2文件58可仅仅是使用初级签名和检验方法的命令。在一直存在对初级检验方法中所使用的软件或散列函数的轻微攻击的情形中,签名2文件58可包含对初级检验方法的简单修改,例如在运行散列函数之前连同新的签名一起向待检验的软件附加或在前面追加随机值。在一直存在对软件或散列函数的轻微攻击的情形中,签名2文件58 可包含连同新的签名一起使用不同的散列函数或全新检验方法的指令。在一些情形中,可需要下载全新的散列函数。在存在足够带宽以允许新散列函数的线上或空中下载的情形中,所述过程可立即实施。在不存在足够带宽以允许新散列函数的空中下载的情形中,签署服务器26可将指令提供给计算装置观、30以使其能够在稍后在其连接到具有足够带宽以完成下载的网络时下载新散列函数。预想签署服务器26将配置有用于提供签名2文件58 的指令,所述签名2文件58在已知威胁形成时根据此类威胁而裁定。通过提供使签署服务器沈能够在已部署装置和应用软件之后便将检验方法和签名传输到计算装置观、30的灵活的过程,各种实施例使得安全性措施能够响应于威胁的形成。在签署服务器沈传输新的签名2文件58且文件内容被计算装置观、30接收时, 将签名2文件58存储在存储器中,步骤124。在一实施例中,新的签名2文件58结合对应的应用文件50而存储,如图4中说明。在一替代实施例中,新的签名2文件58存储在存储器的为保存签名2文件而保留的单独部分中。在签名2文件58被接收且存储在存储器中的情况下,计算装置观、30的处理器可继续通过执行如上文描述的步骤100-112而检验应用文件。图6中说明可在计算装置观、30中执行的处理的一替代实施例。在此实施例中, 当不存在签名2文件58时,处理器执行初级检验方法以在处理器联系签署服务器沈之前确认软件在其产生时曾受信任。参看图6,此实施例包含如上文参看图5所描述的许多相同步骤。当选择应用以供执行时,将其软件拆开以便存取签名文件,步骤100。如果存在签名2文件58 (测试102), 那么实施对应的检验方法且在经适当检验的情况下执行所述软件,步骤104-114,如上文参看图5所描述。然而,如果签名2文件不存在(即,测试102= “否”),那么计算装置观、30 处理器继续执行在软件分配时随软件提供的初级检验程序。如上文论述,此可涉及对经拆开的软件执行初级检验方法,例如特定散列函数,步骤130。将签名文件56解密以便获得签名内所含的初级检验值,例如散列值,步骤132。评估签名以确定其曾被有效证书签署,步骤 134。将所计算的检验值与签名内所含的初级检验值进行比较,步骤136。如果两个检验值不相等(测试140),那么不信任所述软件且不可发生对软件的进一步处理。另一方面,如果两个检验值相等(即,测试140 = “是”),那么这表明软件曾至少一次值得信任,且因此计算装置18、30的处理器尝试建立到签署服务器沈的连接,步骤116。 如上文论述,此连接可借助具有对上面驻留有签署服务器沈的网络的接入权的任何有线或无线网络(例如,因特网)。如果到签署服务器沈的连接不可能(即,测试118= “否”), 那么可执行所述软件(步骤114),因为其已经由初级检验方法检验。如果建立了到签署服务器的连接(即,测试118= “是”),那么计算装置18、30处理器识别应用(例如通过提供软件识别符)且请求签名2文件(步骤120),并继续响应于签署服务器对信息的请求(步骤12 ,且接收并存储任何所得的签名2文件(步骤124),如上文参看图5更充分地描述。图7中说明可在签署服务器沈中实现的处理步骤的一实例实施例。签署服务器 26可接受与客户端计算装置观、30的连接,且接收对用于特定应用的签名2文件的请求, 步骤200。作为此请求的一部分,可向签署服务器沈通知应用名称、识别符或序列号,以及发出请求的计算装置观、30的构造和型号。使用此信息,签署服务器沈可存取含有对于检验在经识别的计算装置观、30内操作的特定应用代码和/或数据适当的询问步骤、检验方法和对应的签名的数据文件,步骤202。预期当对检验方法、证书和个别应用的威胁形成时,签署服务器沈内维持的对策数据库将用保持适当的询问步骤、检验方法和签名值以击败对特定应用的已知威胁的数据记录进行更新。以此方式,每当计算装置请求对用于特定应用的其签名2文件的更新时,签署服务器沈便能够使用用于检测和击败已知威胁的最新方法检验所述软件。使用存储在从服务器存储器检索的对应数据文件中的询问方法,签署服务器沈开始经由开放通信链路与客户端计算装置观、30的对话,步骤204。如上文所提及,如果特定应用或其初级检验方法中不存在已知威胁或弱点,那么可能不需要执行计算装置观、30 的询问,在所述情况下可跳过步骤204。即使不存在已知威胁或弱点,签署服务器沈可仍然向计算装置观、30请求足以记录已作出请求的信息。可作出对用户识别和联系信息的请求以便注册应用软件以及获得签署服务器沈可稍后在出现显著威胁的情况下使用以联系用户的信息。因此,各种实施例的过程可与许可证和/或被保证人注册过程组合。如上文论述,可向客户端计算装置观、30请求的信息的类型基本上无限制以便提供可能识别并击败可出现的任何将来安全性威胁的最大灵活性。举例来说,步骤204中的签署服务器可请求软件的样本,或请求客户端计算装置观、32对软件执行一个或一个以上功能(例如,一个或一个以上散列函数)且将结果提供给签署服务器26。作为另一实例,签署服务器26还可请求关于代码将需要存取的资源的信息,其可提供关于特定应用提出的潜在风险的信息。作为另一实例,签署服务器沈可请求传输随软件提供的签名以使签署服务器能够为其自身检验证书以及将所述签名与其在其数据记录中具有的任何签名进行比较。作为另一实例,签署服务器26可请求这些各种类型信息中的一些或全部以便较好地检测恶意软件或对软件的未经授权的修改。使用从客户端计算装置观、30接收的信息,签署服务器沈可执行与存储在服务器存储器中的信息的分析和比较以便确定软件是否值得信任、是否含有任何已知威胁或恶意软件,或是否容易遭受任何已知弱点,步骤206。此步骤206中执行的分析和比较的性质将取决于与特定应用相关联的任何威胁或易损性的性质。依据关于特定应用软件作出的确定,签署服务器沈可接着从存储器调用或另外产生签名2文件,步骤208。如果由签署服务器沈在步骤206中进行的软件的分析揭露软件不值得信任或含有恶意软件,那么步骤208 中产生的对应的签名2文件可为终止应用且不执行或存取软件的指令。如果由签署服务器 26在步骤206中进行的软件的分析揭露软件值得信任但存在已知易损性或威胁,那么签署服务器可从存储器存取或产生包含新检验方法和对应的新签名的签名2文件,步骤208。如果由签署服务器沈在步骤206中进行的软件的分析揭露软件值得信任且不存在已知易损性的威胁,那么所产生的签名2文件可简单地为实施使用初级检验签名的初级检验方法的指令。可从维持在签署服务器沈中的对策数据库再调用签名2文件,或可由签署服务器在那时产生签名2文件。一旦在步骤208中产生签名2文件,就将文件传输到客户端计算装置观、30,步骤210。最后,在过程完成时,签署服务器可结束与计算装置的连接,步骤216。在签署服务器沈中执行以检验应用代码和/或数据的分析和比较的性质可保密。 因此,尽管可跟踪对计算装置观、30的请求,但分析所接收数据的过程中所采取的实际步骤可保密以保护所述过程免受损害。图8中说明用于在签署服务器沈上实施的替代实施例。在此实施例中,签署服务器26利用与客户端计算装置观、30的开放连接来调查装置上是否存在其它应用软件。此实施例使签署服务器沈能够针对容易遭受自从签名2文件被提供给计算装置观、30之后已出现的威胁的其它应用而更新检验方法和签名。此能力使签署服务器沈能够定期针对应用实施安全性改进,因为可预期用户周期性地购买新的应用,所述新的应用当激活时将触发计算装置联系签署服务器26。参看图8,此实施例继续经过如上文参看图7所描述的步骤200-210。一旦在步骤 210中签名2文件已被传输到客户端计算装置观、30,签署服务器沈就可请求存储在客户端装置上的其它应用代码和/或数据的列表,步骤212。计算装置观、30可经配置以维持可以或应该检验的软件的列表,在所述情况下,将此列表提供给签署服务器26。在另一实施方案中,客户端计算装置观、30可简单地提供存储在存储器中的所有软件应用的列表,以使签署服务器26能够确定那些软件应用中的哪些需要检验更新。使用从客户端计算装置观、30接收的其它应用的列表,签署服务器沈确定那些应用中的任何应用是否需要新的签名2文件,测试214。这可通过将所接收列表中的每一项目与维持在签署服务器沈中的易损性或对策数据库中的易损应用的数据库进行比较来实现。如果签署服务器沈确定没有其它应用需要新的签名2文件(即,测试214 = “否”), 那么签署服务器沈可简单地终止与计算装置20、30的连接,步骤216,借此结束检验更新会话。然而,如果签署服务器沈确定客户端计算装置观、30上存在的至少一个应用需要经更新的签名2文件(即,测试214 = “是”),那么签署服务器沈可选择所述应用中的一者且存取对策数据库内的对应的数据记录,从而返回步骤202。使用从对策数据库检索的针对选定应用的信息,签署服务器26继续如上文参看图7描述的步骤204-210的检验和签名2文件更新过程。由于签署服务器沈已从客户端计算装置观、30获得应用的列表,所以请求此列表的步骤(步骤212)无需重复,且签署服务器沈可返回到确定是否存在需要签名2文件更新的另一应用,测试214。签署服务器沈可重复此循环直到客户端移动装置上不存在需要签名2文件更新的其它应用为止,此时签署服务器可结束与客户端装置的连接,步骤 216,借此终止应用评估和安全性更新会话。当出现对现有软件代码和数据的新的威胁时,可依据威胁的严重程度实施多种对策。如果威胁的性质不大可能导致计算装置中用有效签名2文件部署的应用软件的问题, 那么可能不需要进一步更新那些应用。举例来说,如果已检测到对特定游戏应用的威胁,那么所述威胁可能不延伸到已在计算装置上部署的游戏版本,因为可能不存在威胁可借以到达计算装置中的机制且当前部署的签名2文件足以提供保护。在此类情况下,签名2文件可仅在计算装置上激活新的应用时部署,例如上文参看图5或6所描述。如果威胁的性质可能导致已部署的应用的问题但并未达到需要立即行动以保护所有计算装置的量级,那么签署服务器26可经配置以识别此类易损应用,且每当计算装置针对其它应用联系其时提供经更新的签名2文件,例如上文参看图8所描述。如果威胁的性质可能导致紧急的问题使得需要针对所有计算装置立即采取校正行动,那么可将电子消息(例如,电子邮件或SMS消息)广播到具有易损应用的所有计算装置,从而引导其至少在再次执行特定应用之前联系签署服务器26。如上文描述,签署服务器26可获得足以能够广播此类消息的用户信息以作为提供初始签名2文件的过程的一部分。用于将电子消息发送到计算装置的多种方法是此项技术中众所周知的,其任一者可经实施以用于提供此类警告。在接收到特定应用正面对严重威胁的通告后,计算装置可简单地从那些应用删除签名2文件,这将提示装置在下一次选择应用以供执行时联系签署服务器沈,如上文参看图5和6所描述。各种实施例具有除了仅仅改进代码和数据的安全性环境以及改进代码/数据检验方法外的若干用途。其一,所述实施例也可用于验证未经签署的软件。为此,签署服务器 26可向客户端计算机观、30请求并从其接收足够的信息以确认在客户端计算机执行代码或处理数据之前软件是安全的。此用途可借助实例最佳说明。在关闭的客户端上运行未经签署/未经审查的代码的最有效方式之一是超越攻击签署系统本身,而是改为利用已经合法签署的代码中的瑕疵,且充分利用此瑕疵(例如经由缓冲器超出(buffer overrun))来运行恶意或未经授权的代码。在典型实例中,游戏控制台可要求签署用于所有游戏的代码。 然而,控制台制造商不可能坚持也签署个别游戏所处置的所有数据。对此有若干原因,最明显的原因是,此类数据通常不是静态的,且可频繁变化(例如,高游戏得分数据文件)。已知黑客会利用这一点,且通过创建专门制作的高得分文件来利用游戏中的弱点在控制台上运行恶意代码。为了克服此易损性,在一实施例中,可在启动或复制相关联的游戏之前将关于(未经签署的)高得分文件的信息上载到签署服务器沈进行检验。以此方式验证未经签署的数据可移除针对易损应用的风险。各种实施例的另一用途是识别且表征已经修改的软件,以试图回避签署系统。举例来说,如果客户端计算机发送到签署服务器的信息与预期信息不匹配,那么服务器可要求客户端计算机上载整个代码文件或数据集合。一旦获得此数据,服务器就在安全环境的安慰下随意对其进行分析。在确认所上载软件提出的安全或风险之后,签署服务器可接着提供新的签名和检验程序(即,sig2文件)以在此之后使用,如上文描述。各种实施例的另一用途使签署服务器能够使用在检验过程中从若干客户端获得的代码和数据信息以跟踪对软件和装置的攻击的爆发和扩散。即使签名验证回避法足够好以致能够在某一时间周期内欺骗客户端计算机和签署服务器沈两者,一旦已确定易损性, 签署服务器26就可追踪其记录以便确定利用的开始点和成长模式。此外,在签署服务器沈请求客户端计算机观、30下载整个软件文件以供检验的实施例中,签署服务器可俘获代码 /数据以进行分析。各种实施例提供优于用于保护计算机系统上的代码和数据的已知系统的若干优点。实施例安全机制是动态的,且因此可通过简单地修改签署准则而非做最坏的打算且立即拒绝任何合法签名而经修改来对抗客户端计算机中最新发现的易损性。实施例安全机制不要求更新客户端计算机实施方案,因此节省修改计算机和移动装置本身的成本和费用。 实施例安全机制在客户端计算机具有有限的存储和传输能力(例如,这是大多数移动装置的情况)以使得传输整个代码/数据图像的副本不可行的环境中较好地工作。实施例安全机制针对经签署和未经签署的代码/数据两者工作。实施例安全机制提供用于追踪回避签署系统的企图以及俘获所述企图中涉及的代码/数据的机制。本文描述的实施例可在多种移动装置的任一者上实施。通常,此类移动装置将共同具有图9中所说明的组件。举例来说,移动装置30可包含耦合到内部存储器32和显示器33的处理器31。另外,移动装置30将具有用于发送和接收电磁辐射的连接到无线数据链路的天线34,和/或耦合到处理器31的蜂窝式电话收发器35。在一些实施方案中,收发器35以及处理器31和存储器32的用于蜂窝式电话通信的部分被统称为空中接口,因为其经由无线数据链路提供数据接口。移动装置30通常还包含小键盘36或微型键盘以及菜单选择按钮或摇臂开关37,用于接收用户输入。移动装置30还可包含用于将数据电缆连接到处理器31的连接器插头38,例如火线连接器,或外部存储器装置(例如,USB存储器装置 (未图示))。上文描述的实施例还可在多种计算装置的任一者(例如,图10中说明的个人计算机28)上实施。此个人计算机28通常包含计算机组合件观0,计算机组合件280包含耦合到易失性存储器282和大容量非易失性存储器(例如,硬盘驱动器观幻的处理器观1。计算机组合件280还可包含耦合到处理器的软盘驱动器284和压缩盘(⑶)驱动器观5。 通常,计算机28还将包含比如键盘286和显示器287等用户输入装置。计算机组合件280 还可包含用于接纳耦合到处理器的外部存储器装置的若干连接器端口(例如,通用串行总线(USB)端口(未图示)),以及用于将处理器281耦合到网络的网络连接电路(未图示)°各种实施例可由执行经配置以实施所描述方法中的一者或一者以上的软件指令的计算装置处理器31、281实施。此类处理器可为微处理器单元、微计算机单元、可编程浮点门阵列(FPGA),和专用集成电路(ASIC),如所属领域的技术人员将了解。此类软件指令可作为单独应用、作为计算机的操作系统软件的一部分、作为由操作系统实施的一系列 API,或作为实施实施例方法的经编译软件而存储在存储器32、282、283中。此外,软件指令可存储在任何形式的有形处理器可读存储器中,包含随机存取存储器32、282、硬盘存储器观3、软盘(在软盘驱动器284中可读)、压缩盘(在⑶驱动器285中可读)、只读存储器 (例如,EEPR0M),和/或插入到计算机30、280中的存储器模块(未图示)(例如,外部存储器芯片或USB可连接外部存储器(例如,“快闪驱动器”))。或者,一些步骤或方法可由特定用于给定功能的电路执行。前述方法描述和过程流程图仅作为说明性实例而提供,且既定不需要或暗示必须以所呈现的次序执行各种实施例的步骤。如所属领域的技术人员将了解,前述实施例中的步骤次序可以任何次序执行。所属领域的技术人员应了解,可将结合本文中所揭示的实施例而描述的各种说明性逻辑块、模块、电路和算法步骤实施为电子硬件、计算机软件或两者的组合。为清楚说明硬件与软件的此互换性,上文已大致关于其功能性而描述了各种说明性组件、块、模块、电路及步骤。所述功能性是实施为硬件还是软件取决于特定应用及施加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式来实施所描述的功能性,但所述实施方案决定不应被解释为会导致脱离本发明的范围。结合本文中所揭示的实施例而描述的方法或算法的步骤可直接体现于硬件中、由处理器执行的软件模块中或所述两者的组合中。软件模块可驻存在处理器可读存储器中, 所述处理器可读存储器可以是RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM 存储器、寄存器、硬盘、可装卸磁盘、CD-ROM或此项技术中已知的任何其它形式的存储媒体中的任一者。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息并向存储媒体写入信息。在替代方案中,存储媒体可与处理器成一体式。处理器及存储媒体可驻留于ASIC中。ASIC可驻留于用户终端或移动装置中。在替代方案中,处理器和存储媒体可作为离散组件驻留于用户终端或移动装置中。另外,在一些方面中,方法或算法的步骤和/或动作可作为代码和/或指令中的一者或任何组合或集合而驻存于可并入到计算机程序产品中的机器可读媒体和/或计算机可读媒体上。提供各种实施例的上述描述以使任何所属领域的技术人员能够制作或使用本发明。所属领域的技术人员将容易明白对这些实施例的各种修改,且在不脱离本发明的精神或范围的情况下,本文所界定的一般原理可应用于其它实施例。因此,并不希望将本发明限于本文中所示的实施例,而是,应赋予权利要求书与本文中所揭示的原理和新颖特征一致的最广泛范围。
权利要求
1.一种用于检验和签署软件的方法,其包括从客户端计算机接收对用于软件的检验签名的请求; 从所述客户端计算机接收所述待检验的软件的识别符; 向所述客户端计算机请求关于所述软件的信息;基于所述客户端计算机提供的所述信息而确定所述软件是否值得信任;以及将用于所述软件的新检验方法和新签名发送到所述客户端计算机以由所述客户端计算机用于检验所述软件。
2.根据权利要求1所述的方法,其进一步包括向所述客户端计算机请求关于所述客户端计算机的用户的信息。
3.根据权利要求1所述的方法,其中所述软件的所述所接收的识别符包含所述软件的一部分。
4.根据权利要求1所述的方法,其中所述软件的所述所接收的识别符包含随所述软件提供的数字签名。
5.根据权利要求1所述的方法,其中所述软件的所述所接收的识别符包含随所述软件提供的数字签名的一部分。
6.根据权利要求1所述的方法,其中关于所述软件的所述所请求的信息包含所述软件的一部分。
7.根据权利要求1所述的方法,其中关于所述软件的所述所请求的信息包含对所述软件执行的散列函数的结果。
8.根据权利要求1所述的方法,其中关于所述软件的所述所请求的信息包含由所述软件存取的客户端计算机资源的识别。
9.根据权利要求1所述的方法,其中所述新检验方法包含在将散列函数应用于所述软件之前附加到所述软件或追加在所述软件之前的常数,且所述新签名是由将所述新检验方法应用于所述软件而产生的签名。
10.根据权利要求1所述的方法,其进一步包括使用所述软件的所述所接收的识别符存取数据文件,所述数据文件包含关于检验所述软件的信息,其中向所述客户端计算机请求关于所述软件的信息包含请求所述所存取的数据文件中识别的信息;确定所述软件是否值得信任包含执行所述所存取的数据文件中识别的步骤;且从所述所存取的数据文件获得所述新检验方法和新签名。
11.根据权利要求10所述的方法,其中从对策数据库存取所述所存取的数据文件。
12.一种用于检验和签署软件的方法,其包括 向签署服务器请求用于软件的检验签名;向所述签署服务器提供所述待检验的软件的识别符;响应于对从所述签署服务器接收的关于所述软件的信息的请求;从所述签署服务器接收用于所述软件的新检验方法和新签名以用于检验所述软件;存储所述所接收的新检验方法和新签名;以及使用所述新检验方法和新签名来检验所述软件。
13.根据权利要求12所述的方法,其中响应于对关于所述软件的信息的请求包含将所述软件的一部分发送到所述签署服务器。
14.根据权利要求12所述的方法,其中向所述签署服务器提供所述待检验的软件的识别符包含提供软件识别符。
15.根据权利要求12所述的方法,其中向所述签署服务器提供所述待检验的软件的识别符包含提供所述软件的一部分。
16.根据权利要求12所述的方法,其中向所述签署服务器提供所述待检验的软件的识别符包含提供随所述软件包含的数字签名。
17.根据权利要求12所述的方法,其中向所述签署服务器提供所述待检验的软件的识别符包含提供随所述软件包含的数字签名的一部分。
18.根据权利要求12所述的方法,其中响应于从所述签署服务器接收的对软件识别符的请求而执行向所述签署服务器提供所述待检验的软件的识别符,且所提供的所述软件识别符响应于所述所接收的请求。
19.根据权利要求12所述的方法,其中响应于对关于所述软件的信息的请求包含对所述软件执行散列函数并将结果发送到所述签署服务器。
20.根据权利要求12所述的方法,其中响应于对关于所述软件的信息的请求包含向所述签署服务器识别由所述软件存取的资源。
21.根据权利要求12所述的方法,其中将所述所接收的新检验方法和新签名存储在与所述软件相关联的第二签名文件中。
22.根据权利要求12所述的方法,其进一步包括 确定是否存在与所述软件相关联的第二签名;以及在不存在与所述软件相关联的第二签名的情况下,建立到所述签署服务器的连接。
23.一种服务器,其包括 处理器;网络接口电路,其耦合到所述处理器;所述网络接口电路经配置以使所述处理器能够经由网络通信;以及存储器,其耦合到所述处理器,其中所述处理器配置有用以执行包括以下操作的步骤的可执行指令 经由所述网络接口电路从客户端计算机接收对用于待检验的软件的检验签名; 经由所述网络接口电路从所述客户端计算机接收所述待检验的软件的识别符; 经由所述网络接口电路发送对来自所述客户端计算机的关于所述待检验的软件的信息的请求;基于所述客户端计算机提供的所述信息而确定所述待检验的软件是否值得信任;以及经由所述网络接口电路向所述客户端计算机发送用于所述软件的新检验方法和新签名以由所述客户端计算机用于检验所述软件。
24.根据权利要求23所述的服务器,其中所述处理器配置有用以执行进一步包括以下操作的步骤的可执行指令向所述客户端计算机请求关于所述客户端计算机的用户的信肩、ο
25.根据权利要求23所述的服务器,其中所述处理器配置有用以执行进一步包括以下操作的步骤的可执行指令经由所述网络接口电路将对用于所述待检验的软件的识别符的请求发送到所述客户端计算机。
26.根据权利要求23所述的服务器,其中所述处理器配置有用以执行进一步包括以下操作的步骤的可执行指令经由所述网络接口电路将对用于所述待检验的软件的识别符的请求发送到所述客户端计算机,所述识别符识别所述软件的将作为软件识别符传回的特定部分。
27.根据权利要求23所述的服务器,其中所述处理器配置有用以执行进一步包括以下操作的步骤的可执行指令经由所述网络接口电路将对所述待检验的软件的数字签名的请求发送到所述客户端计算机,所述数字签名将用作用于所述软件的所述识别符。
28.根据权利要求23所述的服务器,其中所述处理器配置有用以执行进一步包括以下操作的步骤的可执行指令经由所述网络接口电路将对用于所述待检验的软件的识别符的请求发送到所述客户端计算机,所述识别符识别所述软件的数字签名的将用作用于所述软件的所述识别符的特定部分。
29.根据权利要求23所述的服务器,其中所述处理器配置有用以执行进一步包括以下操作的步骤的可执行指令经由所述网络接口电路将对所述待检验的软件的一部分的请求发送到所述客户端计算机。
30.根据权利要求23所述的服务器,其中所述处理器配置有用以执行进一步包括以下操作的步骤的可执行指令经由所述网络接口电路将对待检验的所述软件执行散列函数并将结果传回到所述服务器的请求发送到所述客户端计算机。
31.根据权利要求23所述的服务器,其中所述处理器配置有用以执行进一步包括以下操作的步骤的可执行指令经由所述网络接口电路将识别由所述待检验的软件存取的客户端计算机资源的请求发送到所述客户端计算机。
32.根据权利要求23所述的服务器,其中所述新检验方法包含在将散列函数应用于所述软件之前附加到所述软件或追加在所述软件之前的常数,且所述新签名是由将所述新检验方法应用于所述待检验的软件而产生的签名。
33.根据权利要求23所述的服务器,其中所述处理器配置有用以执行进一步包括以下操作的步骤的可执行指令使用所述待检验的软件的所述所接收的识别符存取数据文件, 所述数据文件包含关于检验所述软件的信息,其中所述对来自所述客户端计算机的关于所述待检验的软件的信息的请求包含对所述所存取的数据文件中识别的信息的请求;确定所述待检验的软件是否值得信任包含执行所述所存取的数据文件中识别的步骤;且从所述所存取的数据文件获得所述新检验方法和新签名。
34.根据权利要求33所述的服务器,其中所述存储器中存储有对策数据库,且所述所存取的数据文件是从所述对策数据库存取。
35.一种计算机,其包括处理器;网络接口电路,其耦合到所述处理器;所述网络接口电路经配置以使所述处理器能够经由网络通信;以及存储器,其耦合到所述处理器,其中所述处理器配置有用以执行包括以下操作的步骤的可执行指令 经由所述网络接口电路向签署服务器发送对用于待检验的软件的检验签名的请求; 经由所述网络接口电路向所述签署服务器发送所述待检验的软件的识别符; 响应于对经由所述网络接口电路从所述签署服务器接收的关于所述待检验的软件的信息的请求;经由所述网络接口电路从所述签署服务器接收用于所述待检验的软件的新检验方法和新签名以用于检验所述软件;将所述所接收的新检验方法和新签名存储在所述存储器中;以及使用所述新检验方法和新签名来检验所述软件。
36.根据权利要求35所述的计算机,其中所述处理器配置有可执行指令,使得所述响应于对关于所述待检验的软件的信息的请求的步骤包含经由所述网络接口电路将所述软件的一部分发送到所述签署服务器。
37.根据权利要求35所述的计算机,其中所述处理器配置有可执行指令,使得所述向所述签署服务器发送所述待检验的软件的识别符的步骤包含发送软件识别符。
38.根据权利要求35所述的计算机,其中所述处理器配置有可执行指令,使得所述向所述签署服务器发送所述待检验的软件的识别符的步骤包含发送所述软件的一部分。
39.根据权利要求35所述的计算机,其中所述处理器配置有可执行指令,使得所述向所述签署服务器发送所述待检验的软件的识别符的步骤包含发送随所述软件包含的数字签名。
40.根据权利要求35所述的计算机,其中所述处理器配置有可执行指令,使得所述向所述签署服务器发送所述待检验的软件的识别符的步骤包含发送随所述软件包含的数字签名的一部分。
41.根据权利要求35所述的计算机,其中所述处理器配置有可执行指令,使得响应于从所述签署服务器接收的对软件识别符的请求而执行所述向所述签署服务器发送所述待检验的软件的识别符的步骤,且发送到所述签署服务器的所述软件识别符响应于所述所接收的请求。
42.根据权利要求35所述的计算机,其中所述处理器配置有可执行指令,使得所述响应于对关于所述待检验的软件的信息的请求的步骤包含对所述待检验的软件执行散列函数并经由所述网络接口电路将结果发送到所述签署服务器。
43.根据权利要求35所述的计算机,其中所述处理器配置有可执行指令,使得所述响应于对关于所述待检验的软件的信息的请求的步骤包含向所述签署服务器识别由所述软件存取的资源。
44.根据权利要求35所述的计算机,其中所述处理器配置有可执行指令,使得所述响应于对关于所述待检验的软件的信息的请求的步骤包含从所述签署服务器接收对关于所述计算机的用户的信息的请求; 提示用户所述所请求的信息; 接收来自所述用户的响应;以及经由网络接口连接将所述用户响应发送到所述签署服务器。
45.根据权利要求35所述的计算机,其中所述处理器配置有用以执行进一步包括以下操作的步骤的可执行指令将所述所接收的新检验方法和新签名存储在与存储在所述存储器中的所述软件相关联的第二签名文件中。
46.根据权利要求35所述的计算机,其中所述处理器配置有用以执行进一步包括以下操作的步骤的可执行指令确定是否存在与存储在所述存储器中的所述软件相关联的第二签名;以及在不存在与所述软件相关联的第二签名的情况下,经由所述网络接口电路建立到所述签署服务器的连接。
47.一种服务器,其包括用于从客户端计算机接收对用于待检验的软件的检验签名的装置;用于从所述客户端计算机接收所述待检验的软件的识别符的装置;用于向所述客户端计算机请求关于所述待检验的软件的信息的装置;用于基于所述客户端计算机提供的所述信息而确定所述待检验的软件是否值得信任的装置;以及用于向所述客户端计算机发送用于所述待检验的软件的新检验方法和新签名以由所述客户端计算机用于检验所述软件的装置。
48.根据权利要求47所述的服务器,其进一步包括用于向所述客户端计算机请求关于所述客户端计算机的用户的信息的装置。
49.根据权利要求47所述的服务器,其进一步包括用于经由所述网络接口电路将对用于所述待检验的软件的识别符的请求发送到所述客户端计算机的装置。
50.根据权利要求47所述的服务器,其进一步包括用于经由所述网络接口电路将对用于所述待检验的软件的识别符的请求发送到所述客户端计算机的装置,所述识别符识别所述软件的将作为软件识别符传回的特定部分。
51.根据权利要求47所述的服务器,其进一步包括用于经由所述网络接口电路将对所述待检验的软件的数字签名的请求发送到所述客户端计算机的装置,所述数字签名将用作用于所述软件的所述识别符。
52.根据权利要求47所述的服务器,其进一步包括用于经由所述网络接口电路将对用于所述待检验的软件的识别符的请求发送到所述客户端计算机的装置,所述识别符识别所述软件的数字签名的将用作用于所述软件的所述识别符的特定部分。
53.根据权利要求47所述的服务器,其中所述用于向所述客户端计算机请求关于所述软件的信息的装置包括用于请求所述待检验的软件的一部分的装置。
54.根据权利要求47所述的服务器,其中所述用于向所述客户端计算机请求关于所述软件的信息的装置包括用于请求所述客户端计算机对所述待检验的软件执行散列函数并传回结果的装置。
55.根据权利要求47所述的服务器,其中所述用于向所述客户端计算机请求关于所述软件的信息的装置包括用于请求由所述待检验的软件存取的客户端计算机资源的列表的直ο
56.根据权利要求47所述的服务器,其中所述新检验方法包含在将散列函数应用于所述软件之前附加到所述软件或追加在所述软件之前的常数,且所述新签名是由将所述新检验方法应用于所述待检验的软件而产生的签名。
57.根据权利要求47所述的服务器,其进一步包括用于使用所述软件的所述所接收的识别符存取数据文件的装置,所述数据文件包含关于检验所述软件的信息,其中所述用于向所述客户端计算机请求关于所述软件的信息的装置包括用于请求所述所存取的数据文件中识别的信息的装置;所述用于确定所述待检验的软件是否值得信任的装置包括用于执行所述所存取的数据文件中识别的步骤的装置;且所述用于向所述客户端计算机发送新检验方法和新签名的装置从所述所存取的数据文件获得所述新检验方法和新签名。
58.一种计算机,其包括用于向签署服务器请求用于待检验的软件的检验签名的装置;用于向所述签署服务器提供所述待检验的软件的识别符的装置;用于响应于对从所述签署服务器接收的关于所述待检验的软件的信息的请求的装置;用于从所述签署服务器接收用于所述待检验的软件的新检验方法和新签名以用于检验所述软件的装置;用于存储所述所接收的新检验方法和新签名的装置;以及用于使用所述新检验方法和新签名来检验所述软件的装置。
59.根据权利要求58所述的计算机,其中所述用于响应于对关于所述软件的信息的请求的装置包括用于将所述软件的一部分发送到所述签署服务器的装置。
60.根据权利要求58所述的计算机,其中所述用于向所述签署服务器提供所述软件的识别符的装置发送软件识别符。
61.根据权利要求58所述的计算机,其中所述用于向所述签署服务器提供所述软件的识别符的装置包含用于向所述签署服务器提供所述软件的一部分的装置。
62.根据权利要求58所述的计算机,其中所述用于向所述签署服务器提供所述软件的识别符的装置包含用于提供随所述软件包含的数字签名的装置。
63.根据权利要求58所述的计算机,其中所述用于向所述签署服务器提供所述软件的识别符的装置包含用于提供随所述软件包含的数字签名的一部分的装置。
64.根据权利要求58所述的计算机,其中所述用于向所述签署服务器提供所述软件的识别符的装置包含用于从所述签署服务器接收对软件识别符的请求的装置;以及用于将响应于所述所接收的请求的软件识别符提供给所述签署服务器的装置。
65.根据权利要求58所述的计算机,其中所述用于响应于对关于所述软件的信息的请求的装置包括用于对所述软件执行散列函数并将结果发送到所述签署服务器的装置。
66.根据权利要求58所述的计算机,其中所述用于响应于对关于所述软件的信息的请求的装置包括用于向所述签署服务器识别由所述软件存取的资源的装置。
67.根据权利要求58所述的计算机,其中所述用于响应于对关于所述软件的信息的请求的装置包括用于从所述签署服务器接收对关于所述计算机的用户的信息的请求的装置; 用于提示所述用户所述所请求的信息的装置;用于接收来自所述用户的响应的装置;以及用于将所述用户响应发送到所述签署服务器的装置。
68.根据权利要求58所述的计算机,其进一步包括用于将所述所接收的新检验方法和新签名存储在与所述软件相关联的第二签名文件中的装置。
69.根据权利要求58所述的计算机,其进一步包括用于确定是否存在与所述软件相关联的第二签名的装置;以及用于在不存在与所述软件相关联的第二签名的情况下建立到所述签署服务器的连接的装置。
70.—种上面存储有处理器可执行指令的有形存储媒体,所述处理器可执行指令经配置以致使服务器的处理器执行包括以下操作的步骤从客户端计算机接收对用于待检验的软件的检验签名;从所述客户端计算机接收所述待检验的软件的识别符;向所述客户端计算机请求关于所述待检验的软件的信息;基于所述客户端计算机提供的所述信息而确定所述待检验的软件是否值得信任;以及向所述客户端计算机发送用于所述软件的新检验方法和新签名以由所述客户端计算机用于检验所述软件。
71.根据权利要求70所述的有形存储媒体,其中所述有形存储媒体具有经配置以致使计算机的处理器执行包括以下操作的其它步骤的处理器可执行指令向所述客户端计算机请求关于所述客户端计算机的用户的信息。
72.根据权利要求70所述的有形存储媒体,其中所述有形存储媒体具有经配置以致使计算机的处理器执行包括以下操作的其它步骤的处理器可执行指令经由所述网络接口电路将对用于所述待检验的软件的识别符的请求发送到所述客户端计算机。
73.根据权利要求70所述的有形存储媒体,其中所述有形存储媒体具有经配置以致使计算机的处理器执行包括以下操作的其它步骤的处理器可执行指令经由所述网络接口电路将对用于所述待检验的软件的识别符的请求发送到所述客户端计算机,所述识别符识别所述软件的将作为软件识别符传回的特定部分。
74.根据权利要求70所述的有形存储媒体,其中所述有形存储媒体具有经配置以致使计算机的处理器执行包括以下操作的其它步骤的处理器可执行指令经由所述网络接口电路将对所述待检验的软件的数字签名的请求发送到所述客户端计算机,所述数字签名将用作用于所述软件的所述识别符。
75.根据权利要求70所述的有形存储媒体,其中所述有形存储媒体具有经配置以致使计算机的处理器执行包括以下操作的其它步骤的处理器可执行指令经由所述网络接口电路将对用于所述待检验的软件的识别符的请求发送到所述客户端计算机,所述识别符识别所述软件的数字签名的将用作用于所述软件的所述识别符的特定部分。
76.根据权利要求70所述的有形存储媒体,其中关于所述待检验的软件的所述所请求的信息包含所述软件的一部分。
77.根据权利要求70所述的有形存储媒体,其中关于所述待检验的软件的所述所请求的信息包含对所述软件执行的散列函数的结果。
78.根据权利要求70所述的有形存储媒体,其中关于所述待检验的软件的所述所请求的信息包含对由所述软件存取的客户端计算机资源的识别。
79.根据权利要求70所述的有形存储媒体,其中所述新检验方法包含在将散列函数应用于所述软件之前附加到所述软件或追加在所述软件之前的常数,且所述新签名是由将所述新检验方法应用于所述软件而产生的签名。
80.根据权利要求70所述的有形存储媒体,其中所述有形存储媒体具有经配置以致使计算机的处理器执行包括以下操作的其它步骤的处理器可执行指令使用所述待检验的软件的所述所接收的识别符存取数据文件,所述数据文件包含关于检验所述软件的信息,其中向所述客户端计算机请求关于所述待检验的软件的信息包含请求所述所存取的数据文件中识别的信息;确定所述待检验的软件是否值得信任包含执行所述所存取的数据文件中识别的步骤;且从所述所存取的数据文件获得所述新检验方法和新签名。
81.根据权利要求80所述的有形存储媒体,其中所述有形存储媒体上存储有对策数据库,且其中所述所存取的数据文件是从所述对策数据库存取。
82.—种上面存储有处理器可执行指令的有形存储媒体,所述处理器可执行指令经配置以致使计算机的处理器执行包括以下操作的步骤向签署服务器请求用于待检验的软件的检验签名;向所述签署服务器提供所述待检验的软件的识别符;响应于对从所述签署服务器接收的关于所述待检验的软件的信息的请求;从所述签署服务器接收用于所述待检验的软件的新检验方法和新签名以用于检验所述软件;存储所述所接收的新检验方法和新签名;以及使用所述新检验方法和新签名来检验所述软件。
83.根据权利要求82所述的有形存储媒体,其中所述有形存储媒体具有处理器可执行指令,所述处理器可执行指令经配置以致使计算机的处理器执行其它步骤,使得响应于对关于所述软件的信息的请求包含将所述软件的一部分发送到所述签署服务器。
84.根据权利要求82所述的有形存储媒体,其中所述有形存储媒体具有处理器可执行指令,所述处理器可执行指令经配置以致使计算机的处理器执行其它步骤,使得所述向所述签署服务器发送所述待检验的软件的识别符的步骤包含发送软件识别符。
85.根据权利要求82所述的有形存储媒体,其中所述有形存储媒体具有处理器可执行指令,所述处理器可执行指令经配置以致使计算机的处理器执行其它步骤,使得所述向所述签署服务器发送所述待检验的软件的识别符的步骤包含发送所述软件的一部分。
86.根据权利要求82所述的有形存储媒体,其中所述有形存储媒体具有处理器可执行指令,所述处理器可执行指令经配置以致使计算机的处理器执行其它步骤,使得所述向所述签署服务器发送所述待检验的软件的识别符的步骤包含发送随所述软件包含的数字签名。
87.根据权利要求82所述的有形存储媒体,其中所述有形存储媒体具有处理器可执行指令,所述处理器可执行指令经配置以致使计算机的处理器执行其它步骤,使得所述向所述签署服务器发送所述待检验的软件的识别符的步骤包含发送随所述软件包含的数字签名的一部分。
88.根据权利要求82所述的有形存储媒体,其中所述有形存储媒体具有处理器可执行指令,所述处理器可执行指令经配置以致使计算机的处理器执行其它步骤,使得响应于从所述签署服务器接收的对软件识别符的请求而执行所述向所述签署服务器发送所述待检验的软件的识别符的步骤,且发送到所述签署服务器的所述软件识别符响应于所述所接收的请求。
89.根据权利要求82所述的有形存储媒体,其中所述有形存储媒体具有处理器可执行指令,所述处理器可执行指令经配置以致使计算机的处理器执行其它步骤,使得响应于对关于所述软件的信息的请求包含对所述软件执行散列函数并将结果发送到所述签署服务ο
90.根据权利要求82所述的有形存储媒体,其中所述有形存储媒体具有处理器可执行指令,所述处理器可执行指令经配置以致使计算机的处理器执行其它步骤,使得响应于对关于所述软件的信息的请求包含向所述签署服务器识别由所述软件存取的资源。
91.根据权利要求82所述的有形存储媒体,其中所述有形存储媒体具有处理器可执行指令,所述处理器可执行指令经配置以致使计算机的处理器执行包括以下操作的其它步骤从所述签署服务器接收对关于所述计算机的用户的信息的请求; 提示所述用户所述所请求的信息; 接收来自所述用户的响应;以及经由网络接口连接将所述用户响应发送到所述签署服务器。
92.根据权利要求91所述的有形存储媒体,其中所述有形存储媒体具有处理器可执行指令,所述处理器可执行指令经配置以致使计算机的处理器执行包括以下操作的其它步骤将所述所接收的新检验方法和新签名存储在与所述软件相关联的第二签名文件中。
93.根据权利要求92所述的有形存储媒体,其中所述有形存储媒体具有处理器可执行指令,所述处理器可执行指令经配置以致使计算机的处理器执行包括以下操作的其它步骤确定是否存在与所述待检验的软件相关联的第二签名;以及在不存在与所述待检验的软件相关联的第二签名的情况下,建立到所述签署服务器的连接。
94.一种用于检验和签署软件的方法,其包括在客户端计算机中确定是否存在与所述软件相关联的第二签名; 在不存在与所述软件相关联的第二签名的情况下,建立到签署服务器的连接; 向所述签署服务器请求用于软件的检验签名; 向所述签署服务器提供所述待检验的软件的识别符; 向所述客户端计算机请求关于所述软件的信息; 响应于对从所述签署服务器接收的关于所述软件的信息的请求; 在所述签署服务器中基于从所述客户端计算机接收的所述信息而确定所述软件是否值得信任;以及将用于所述软件的新检验方法和新签名发送到所述客户端计算机以由所述客户端计算机用于检验所述软件;从所述签署服务器接收所述新检验方法和新签名; 将所述所接收的新检验方法和新签名存储在第二签名文件中;以及使用所述第二签名文件中的所述新检验方法和新签名来检验所述软件。
95. 一种系统,其包括 网络;至少一个计算装置,其耦合到所述网络;以及签署服务器,其耦合到所述网络, 其中所述至少一个计算机装置包括 装置处理器;网络接口电路,其耦合到所述装置处理器且耦合到所述网络,所述网络接口电路经配置以使所述装置处理器能够经由所述网络通信;以及存储器,其耦合到所述装置处理器,其中所述装置处理器配置有用以执行包括以下操作的步骤的软件指令经由所述网络将对用于待检验的软件的检验签名的请求发送到所述签署服务器;经由所述网络将所述待检验的软件的识别符发送到所述签署服务器;响应于对经由所述网络从所述签署服务器接收的关于所述待检验的软件的信息的请求;经由所述网络从所述签署服务器接收用于所述软件的新检验方法和新签名以用于检验所述软件;将所述所接收的新检验方法和新签名存储在所述存储器中;以及使用所述新检验方法和新签名来检验所述软件,且其中所述服务器包括 服务器处理器;服务器网络接口电路,其耦合到所述服务器处理器且耦合到所述网络,所述服务器网络接口电路经配置以使所述服务器处理器能够经由所述网络通信;以及服务器存储器,其耦合到所述服务器处理器,其中所述服务器处理器配置有用以执行包括以下操作的步骤的软件指令 经由所述网络从所述计算装置接收对用于所述待检验的软件的检验签名的请求; 经由所述网络从所述计算装置接收所述待检验的软件的识别符; 经由所述网络发送对来自所述计算机的关于所述待检验的软件的信息的请求; 基于所述计算装置提供的所述信息而确定所述待检验的软件是否值得信任;以及经由所述网络将用于所述软件的新检验方法和新签名发送到所述计算装置以由所述计算装置用于检验所述软件。
全文摘要
方法和计算装置使得能够使用可由签署服务器在分配之后更新的方法和签名来检验计算机装置上的代码和/或数据软件。经更新的检验方法和签名可提供在第二签名文件中。当计算装置将供执行的应用拆开时,其可检查第二签名文件是否与应用文件相关联。如果否,那么其可连接到签署服务器以请求用于所述软件的第二签名文件。所述签署服务器随后可请求与所述软件有关的足以确定所述软件是否值得信任的信息。如果确定为值得信任,那么所述签署服务器可将第二签名文件发送到所述计算机装置以用于在此后检验所述软件。所述第二签名文件可包含新的或经修改的检验方法和新签名。
文档编号G06F21/00GK102414689SQ201080018583
公开日2012年4月11日 申请日期2010年4月26日 优先权日2009年4月27日
发明者伊万·休·麦克莱恩 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1