用于验证电子设备的平台软件的完整性的方法和设备的制作方法

文档序号:7610617阅读:196来源:国知局
专利名称:用于验证电子设备的平台软件的完整性的方法和设备的制作方法
技术领域
本发明涉及用于使应用软件能够验证电子设备的平台软件的完整性的方法和设备。
背景技术
在电子设备上的软件平台是用来加载和执行软件的操作系统或者运行时间环境(如Java或者移动代理平台)。典型的一款软件例如是可以在具有适当软件平台的设备上执行的游戏应用。为了提供多样化的兼容设备和软件应用,不同的制造商可以在它们的产品上使用同一软件平台。尽管因此软件平台或者操作系统是相似的或者甚至是相同的,然而配备有它的产品通常包括很特定的硬件。另外,尽管平台软件的核心可能相同,但是有许多可能并不相同或者甚至完全就存在于不同电子设备中的如设备驱动这样的其它部件。
因此可能出现要在具有不适当的软件平台或者硬件的设备上执行软件应用这一情形。至于不适当性的一些原因例如是用于存储所需数据的随机存取存储器(RAM)数量不足、显示器没有充足的分辨率和/或颜色数目、失去在线连接性(W-LAN、蓝牙等)或者键盘不含充分的控制键和动作键。如果任何这些要求没有满足,则在这样的设备上使用相应的应用就可能无法满足用户,而用户将对所购置的这款软件不满意。在一些情况下,在错误的设备上运行应用甚至可能导致可能需要昂贵的修复服务的用户数据损失和/或设备故障。
一般而言,关于软件平台和导入软件即来自外部来源的软件也存在另一种威胁,即恶意软件或者所谓的“malware”。已经有大量关注投入到用于软件平台验证导入软件的完整性的各种方法。然而,也可以重视相反的情形,即软件平台也可能搅乱导入软件的操作。时下有许多保护方案是基于各种标识,比如设备ID或者多媒体卡ID。换而言之,软件应用依赖于用以取回所需ID的某款平台软件。如果攻击者能够骗取所需ID,则整个保护方案会崩溃。因此,应用本身应当能够验证它是安装在能够并且被授权运行它的设备上。
在现有技术中,软件应用可以通过为平台软件的所选软件模块计算密码散列并且将该散列与在软件应用的验证例程中所含的散列进行比较来验证软件平台的完整性。如果散列彼此对应,则成功地验证了平台并且可以在设备上执行软件应用。所选软件模块例如可以是如设备驱动这样的软件或者是为了运行该应用而需要的某一其它款的软件。利用应用中的固定预期散列值这一常规方式的缺点在于,平台的软件模块的任何更新或者更换都造成平台的否定验证,这又造成无法执行较旧应用。由于如移动电话的电子设备的软件等将必须在它们的寿命期中加以更新例如以便消除安全缺陷和软件错误是相当普遍的,所以这样的常规方式不适合于应对这些需求。

发明内容
因此,本发明的目的在于消除或者至少缓解上文讨论的问题。
为了实现此目的,本发明提供用于实现电子设备的平台软件的完整性的验证的方法和设备。
根据本发明的第一方面,提供一种用于验证电子设备的平台软件的完整性的方法。该方法包括访问平台软件的模块;获得签名;获得验证密钥,其中该验证密钥对应于签名密钥;将验证密钥用于对该签名是否是通过以签名密钥对平台软件模块进行签名来导出的进行验证;以及如果验证成功则建立平台软件模块的肯定验证。以这一方式,平台软件的完整性可以由应用软件验证以确保它将在经授权的和适当的平台上运行。以此方式,旧应用在仍然能够验证完整性的同时也将与平台软件模块的新版本或者更新版本兼容。
根据一个示例性实施例,在获得所述签名之前对平台软件模块执行散列函数以导出经计算的散列;获得预期散列;以及比较经计算的散列和预期散列。如果散列彼此对应,则执行后续方法的步骤。另外,签名的验证包括通过使用验证密钥来对该签名是否为通过以签名密钥对预期散列进行签名来导出的进行验证。使用散列是实现验证的简便方式,在检验签名之前也对散列进行附加检验就提供了提高的安全性。
根据一个示例性实施例,在访问平台软件的模块之前访问监视模块;对监视模块执行散列函数以导出第二经计算的散列;然后获得第二预期散列;以及比较散列。如果散列彼此对应,则该方法包括调用监视模块以执行如前所述的后续步骤。如果监视软件在平台软件的新部分被安装时不太可能有变化,则以下方式可能是有利的检查监视模块的完整性以及使用监视模块以针对应用来执行平台软件的完整性检验。以此方式,应用软件可以保持得更简单并且仅需更少步骤以便进行自身验证。
应当注意,密钥SK(签名密钥)和VK(验证密钥)可以是来自适当的公共密钥数字签名方案如RSL或者DSS的非对称密钥对中的相应密钥。然而,SK和VK也有可能是要与对称密钥数字签名方案如HMAC_SHA1一起使用的同一保密密钥K(K=SK=VK)。后一情况可以在使用监视模块的本发明实施例中尤其有用,因为平台软件模块和监视模块假定地由同一开发者提供,从而将共享对称密钥用于签名是易于处理的。这里的优点将是签名会小得多。
为了提供从应用的观点来看更可靠的完整性检验,可以在应用中嵌入第二预期散列。
根据一个实施例,如果散列不对应,则建立监视模块的否定验证并且拒绝监视模块的调用。
根据另一实施例,如果散列不对应,则建立平台软件模块的否定验证并且拒绝对平台软件模块的进一步访问。如果签名的验证不成功,则也建立平台软件模块的否定验证并且拒绝对平台软件模块的进一步访问。因此,只有在两个检验均成功时才可以建立肯定检验,这提供更可靠的验证。
根据一个示例性实施例,验证密钥嵌入于执行验证的应用中或者监视模块中。与前述相似,这可以有助于提高可靠性,因为验证密钥来自于明显受信的来源。
根据一个示例性实施例,预期散列由平台软件模块提供。签名也可以由平台软件模块提供。一种用以提供散列和签名的方式将是使它们中的一个或者二者作为静态变量包含于软件模块中。
根据本发明的第二方面,提供一种用于提供平台软件模决以便实现电子设备的平台软件的完整性的验证。该方法包括获得平台软件模块;获得签名密钥;通过以签名密钥对平台软件模块进行签名来导出签名;以及在电子设备中提供平台软件模块和签名。
根据一个示例性实施例,该方法还包括对所述平台软件模块执行散列函数以导出预期散列;以及还在所述电子设备中提供所述预期散列。另外,所述签名的导出包括以所述签名密钥对所述预期散列进行签名。
根据一个示例性实施例,在电子设备中提供平台软件模块,预期散列作为静态变量集成到平台软件模块中。这是用以提供散列的简便和可靠方式。
根据一个示例性实施例,在与平台软件模块相分离的电子设备中提供签名。这在平台软件模块存储于攻击者不能篡改它的位置如ROM等时可能是有利的。然后也可以分开地提供签名。
根据另一实施例,在电子设备中提供平台软件模块,并且签名作为静态变量被集成到平台软件模块中。与前述相似,这是用以提供签名的简便和可靠方式。
签名密钥和验证密钥可以是例如公共密钥/私有密钥方案这样的非对称密钥对中的相应密钥。
在本发明的另一实施例中,签名密钥和验证密钥可以是对称密钥对中的相应密钥。正如已经提到的,这可以提供较小的签名并且简化验证,同时必须注意向可信赖的实体保持对称(保密)密钥。
根据本发明的第三方面,提供一种计算机程序产品,包括用于在程序产品运行于计算机或者网络设备上时实现上述方法的程序代码装置。
根据本发明的第四方面,提供一种包括存储于计算机可读介质上的程序代码装置的计算机程序产品,该程序代码装置用于在软件工具运行于计算机或者网络设备上时实现上述方法。
根据本发明的第五方面,提供一种包括程序代码装置的计算机程序产品,该程序代码装置可从服务器上下载,用于在程序产品运行于计算机或者网络设备上时实现上述方法。
根据本发明的第六方面,提供一种用于实现电子设备的平台软件的完整性的验证的电子设备。该电子设备包括适于访问平台软件的模块的加载器部件和适于获得签名和验证密钥的接收器部件。该设备也包括适于使用验证密钥来验证签名的验证部件。
根据一个示例性实施例,该电子设备还包括散列计算器部件,适于对所述平台软件模块执行散列函数以导出经计算的散列;以及比较器部件,适于比较来自散列计算机器部件的经计算的散列和来自接收器部件的预期散列。接收器部件还适于获得预期散列,而验证部件还适于对签名是否为通过以签名密钥对预期散列进行签名来导出的进行验证。


本发明的更多特征和优点将从以下描述和附图中变得明显,在附图中图1是本发明方法的实施例的示意流程图;图2是本发明方法的可选实施例在图1所示步骤之前的步骤的示意流程图;图3是利用平台软件模块来执行的本发明方法的另一实施例的示意图;图4是示出了根据本发明的方法的实施例的步骤的图,这些步骤由应用软件执行;图5是示出了根据本发明的方法的实施例的步骤的图,这些步骤由应用软件执行;图6是示出了根据本发明的方法的实施例的步骤的图,这些步骤由监视软件模块执行;以及图7示出了根据本发明的电子设备。
具体实施例方式
在图1中,在流程图中示出了本发明的实施例的步骤。该过程从对电子设备的平台软件的软件模块进行访问即步骤102开始。此模块例如可以是设备驱动或者平台软件的任何其它模块。在步骤104中对该模块执行散列函数以导出散列Hc。可以使用所有可能的各种函数作为散列函数。在步骤106中,获得另一散列即预期He。此散列He可以由访问的软件模块提供,但是其它来源也是可以想到的。在步骤108中,比较散列Hc和He以确定它们是否对应。在它最简单的实施中,这将意味着确定两个散列是否完全相同。然而,也有可能检验散列中的仅预定段是否相同,即检验它们是否在某一方面对应。如果Hc和He不彼此对应(步骤110),则验证失败而该过程以否定结果而告终(步骤112)。然而,如果Hc和He确实对应,在步骤114中获得签名S。此签名S可以仍由软件模块提供,但是也可以由其它源提供。在步骤116中获得验证密钥VK,例如私有密钥/公共密钥对中的公共密钥。必须从受信源获得验证密钥VK,因此例如可将此密钥VK嵌入到应用软件中。然而,也可以从另一来源接收它,只要可以信任此来源即可。在步骤118中使用验证密钥VK来验证签名S。这种验证过程本身是已知的,所以在这里省略详细的说明。如果验证成功(步骤120),则验证过程以肯定结果而告终(步骤122),平台软件模块现在被验证并且可以由应用软件使用。在步骤120中是否定验证的情况下,验证失败(步骤112),从而拒绝对平台软件模块的进一步访问。
图2描述了本发明的可选实施例。在步骤202中,访问作为平台软件一部分的监视模块。可以在平台软件中提供这样的监视模块用于验证其它平台软件模块。为了使用此监视模块,软件必须首先验证此监视模块的完整性。由于预计监视模块不像平台软件的其它部分那样变化,所以其可以使用静态完整性量度来执行。在步骤204中,对监视模块执行散列函数以计算散列Hc2。在步骤206中获得散列He2。与图1中的过程相似,比较散列Hc2和He2以确定它们是否对应。如果在步骤210中确认它们确实对应,则该过程继续到步骤214。当然,否则验证会失败(步骤212),就无法验证并且也不会调用监视模块。在步骤214中将在监视模块的完整性的肯定验证之后调用该监视模块。现在,开始与图1中所示过程几乎相同的过程,其中的主要区别在于不是应用软件而是监视模块将执行该过程。至于更多步骤,请参见图1的描述。
图3是根据本发明用于提供软件模块2的本发明的实施例的图示。以下步骤将由相应软件模块的软件提供商执行。对软件模块的一些或者所有段执行散列函数(步骤300)以导出散列Hc。然后使用签名密钥SK对散列Hc进行签名(步骤302)以导出签名S,该签名密钥SK可以是公共/私有密钥对中的私有或者公共密钥。为了在电子设备中提供软件模块,一种优选方式是包括在软件模块中集成的计算散列Hc和对应签名S。这样的集成例如可以是包括作为静态变量的签名S和散列Hc。当随后执行散列函数以便对软件模块进行验证时,此部分当然是不使用的。然而在特殊情况下,可以与电子设备中的软件模块相分离地提供签名S以及甚至散列Hc。出于这样的目的,可以使用存储器设备如只读存储器ROM等以便提供针对可能的攻击者不允许访问的模块。
当要验证这里描述的软件模块时,应用软件或者本发明的另一实施例中监视模块将对软件模块执行304所示的散列函数。当然,散列Hc和签名S如果包含在内则不会被散列函数使用。应用软件或者监视模块也将访问散列Hc和签名S(由306和308所示)以便进行验证。
图4是示出了根据本发明的方法的实施例的步骤的图,这些步骤由应用软件4执行。当要验证软件模块(未示出,见图3)时,应用软件4将对软件模块执行散列函数,如304所示,以导出经计算的散列Hc。当然,散列He和签名S如果包含在软件模块中则不会被散列函数使用。应用软件4也将访问散列He和签名S(306和308所示)以便进行验证。在步骤402中,该验证从比较散列Hc和He开始。如果它们不相同和对应,则验证失败(步骤410)。否则该验证继续到步骤404,使用验证密钥VK来验证签名S。验证密钥VK可以嵌入于应用软件4中,但是也可以从外部来源(因特网服务器等)获得。如果验证成功,即如果确认(步骤406)签名S是通过以与验证密钥VK相对应的签名密钥(未示出)对散列He进行签名而导出的,则已经成功地达成完整性验证。当然,如果不是这样,即如果散列Hc或者He与签名S不匹配,或者未以肯定的方式验证签名S,该验证将失败(步骤410)。在肯定验证的情况下,相应软件模块的完整性是完好的,并且它可以随后由应用软件4使用。在失败验证的情况下,将拒绝对相应软件模块的进一步访问。
将结合图6来阅读图5,此二图已经出于易于理解的考虑而加以分离。图5描绘了本发明的实施例中由应用软件8执行的步骤。先在步骤402中对监视模块执行散列函数以导出经计算的散列Hc2,该监视(未示出,见图6)模块是电子设备的平台软件的一部分。获得预期散列He2,该散列可以嵌入到应用软件8中或者从外部来源接收该散列。由于监视模块是未被假定为要变化的部分,所以此散列He2可以通过网络等来发布。在步骤602中,比较散列Hc2和He2以确定它们是否匹配或者对应。在它们不匹配或者对应的情况下,监视模块的验证以失败结果而告终(步骤610),因此将不对它进行调用以继续验证。否则根据此实施例,调用监视模块以执行验证过程的主要部分(见图6)。如果监视模块返回“是”所示的肯定验证,则完整性验证已经成功(步骤608)。也可能接收否定验证结果(未示出),或者如果在某一时间帧中监视模块没有给出肯定答复则应用软件8可能导出否定结果。应用软件8现在可以安全地使用经监视模块检验过的相应软件模块(未示出)。如果监视模块没有返回肯定验证,则验证将失败(步骤612)。
图6描绘了在结合图5所描述的监视模块的调用之后的步骤。当要验证软件模块(未示出,见图3)时,监视模块6将对软件模块执行散列函数,如304所示,以导出经计算的散列Hc。当然,散列He和签名S如果包含在软件模块中时将不被散列函数使用。监视模块6也将访问散列He和签名S(306和308所示)以便进行验证。在步骤502中,在调用之后,根据图6中的描述,该验证从比较散列Hc和He开始。如果它们不相同或者对应,则验证失败(步骤508)。否则该验证继续到步骤504,使用验证密钥VK来验证签名S。验证密钥VK可以嵌入于监视模块6中,但是也可以通过充分可新赖的方式从外部来源(因特网服务器等)获得。如果验证成功,即如果可以确认(步骤506)签名S是通过以与验证密钥VK相对应的签名密钥(未示出)对散列He进行签名来导出的,则已经成功地达成完整性验证。将“是”的所示的验证的肯定结果发送到应用软件(未示出)。现在在监视模块一侧上完成了验证。当然,如果不是这样,即如果散列Hc与He不匹配,或者签名S未被肯定地验证,该验证将失败(步骤508)。否定验证结果也可以发送(未示出)到应用。另一可能是使用某一时间帧。如果在那一时间帧中没有肯定验证发送到应用,则可以导出其否定结果。在肯定验证的情况下,相应软件模块的完整性是完好的,而它可以随后由应用软件使用。在失败验证的情况下,监视模块将拒绝对相应软件模块的进一步访问。
使用这样的监视模块可以是有利的,这是因为应用软件本身可以使用很简单的检验以验证监视模块的完整性,而监视模块本身执行验证过程的大部分。监视模块可以容易地集成到平台软件中。
图7示出了根据本发明的电子设备20,该电子设备可以是移动电话、PDA等。它包括加载器部件10、散列计算器部件12、接收器部件14、比较器部件16和验证部件18。散列计算器部件12与加载器部件10和比较器部件16这二者连接。接收器部件14与比较器部件16和验证部件18这二者连接。加载器部件10适于访问电子设备20的平台软件的模块。散列计算器部件12适于对平台软件模块执行散列函数以导出经计算的散列。接收器部件14适于获得预期散列、签名和验证密钥。比较器部件16适于比较来自散列计算器部件12的经计算的散列和来自接收器部件14的预期散列。验证部件18适于通过将验证密钥应用于签名来验证签名。
本发明利用(密码)散列函数和非对称密码密钥,即所谓的公共/私有密钥对。散列函数取任意二进制数据作为输入并且产生固定大小的二进制串作为输出。这样的散列执行以及具有公共密钥和私有密钥的非对称密码本身是已知的,因此这里省略具体描述。尽管非对称密钥主要用于对数据进行加密,但是它们也可以用于签名用途。通过使用私有密钥,签名例如可以由软件提供商导出以使他的客户能够验证所发布的软件的来源。客户可以将公共密钥应用于签名以验证软件是可靠的。
根据本发明的示例性实施例,应用软件验证电子设备的平台软件的完整性。应用软件例如可以是游戏应用、办公应用、绘图应用、日历应用或者要在设备上执行的应用软件的某一部分。要验证的平台软件可以例如在计算机、移动电话、个人数字助理(PDA)等上实施。
平台软件的验证通过应用软件来实现,从而应用软件访问平台软件的软件模块并且对软件模块执行散列函数以导出散列Hc。散列函数可以是用于验证软件一部分的任何适当种类的函数。将导出的散列Hc与由平台软件模块提供的预期的散列He进行比较。散列He是通过对所选平台软件模块执行散列函数来创建的,并且包含于平台软件模块中;这些步骤将通常由平台软件的提供商来执行。然后利用签名密钥SK对散列He进行签名以导出签名S,该签名可以包含于平台软件模块中,或者可选地,在平台软件模块存储于不可篡改的位置如ROM等中的情况下,该签名可以在与平台软件模块相分离的某处。在这样的情况下将平台软件模块和签名S相分离可以是有利,特别地如果软件模块不能容易地被攻击者触及的话,如上所述。在另一示例性实施例中,散列He和签名密钥SK是包含于平台软件模块中的静态变量。
如果散列Hc和He分别匹配或者对应,则应用软件接收签名S,然后该签名由验证密钥VK来验证。根据一个实施例,验证密钥VK嵌入于应用软件中,而签名S由平台软件模块提供。如果两个前述检验的验证结构均是肯定的,即已经确认软件模块的可靠性,则验证成功并且允许对相应平台软件模块的进一步访问。另一方面,在软件模块的否定验证情况下,即如果散列Hc和He不匹配或者如果签名S的验证不成功,则拒绝对平台软件模块的进一步访问。
根据一个示例性实施例,在验证平台软件模块的完整性时利用监视软件模块。通常,监视软件将包含于平台软件模块中,而且并不预期在新的平台软件模块被安装和/或更新时会有变化。换而言之,在这一实施例中,验证例程是平台软件模块本身的部分。因此,应用软件首先需要确认此监视模块是可靠的。由于假设此监视模块根本不变化,所以这可以通过使用(静态)完整性量度来实现。应用软件对监视软件模块执行散列函数以导出散列Hc2。然后将散列Hc2与在应用软件中嵌入的预期散列He2进行比较。如果散列Hc2和He2匹配或者对应,则调用监视软件模块以验证平台软件模块的完整性。另一方面,在监视软件模块的否定验证情况下,即如果散列Hc2和散列He2不匹配,则拒绝对监视软件模块的进一步访问。这将通常意味着应用软件将不执行,这是因为无法利用监视模块来执行完整性检验。
如果监视软件模块的验证成功,则监视软件模块验证平台软件模块的完整性。与没有监视模块的前述实施例相似,监视软件模块针对平台软件模块执行散列函数以导出散列Hc1并且比较散列Hc1与预期散列He1。通常,散列He1由平台软件模块例如作为模块中所含变量来提供。如果散列Hc1和He1匹配,则监视软件使用在监视软件模块中嵌入的验证密钥VK以验证由平台软件模块提供的签名S。如果结果是肯定的,即两个前述安全检验均给出肯定结果,则验证成功并且监视模块允许应用软件进一步访问平台软件。另一方面,在软件模块的否定验证情况下,即如果散列Hc1和He1不匹配或者如果签名S的验证不成功,则监视模块拒绝对相应平台软件模块的进一步访问。这当然将意味着应用软件将不执行。
特别而言,当然必须从受信源获得验证密钥。这对于预期散列而言基本上成立,然而伪造这样的散列将不足以完全地规避本发明的概念,因为攻击者于是将必须也伪造签名,而这一点在没有保密签名密钥时无法在不被注意的情况下完成。虽然在具有监视模块的实施例中,软件的开发者在所有情况之下都必须从受信来源获得监视模块的预期散列,否则保护方案当然就不起作用。
要注意这些方法也可以间接地用于硬件平台的验证。换而言之,应用软件验证操作系统模块,该操作系统模块又能够验证它在其上运行的硬件。这是为了确保例如游戏应用不会在不适当的平台上执行。由于相同或者甚至不同制造商的许多电子设备共享相同的操作系统和/或软件的部分是很普遍的,所以必须采取防范以确保具体应用将仅在那些被授权并且适当地被配备用来使用该应用的设备上运行。
例如,被设计用来仅在移动游戏板(deck)如NokiaN-Gage上运行的游戏在原理上也可以在使用同一操作系统的移动电话上执行。由于电话将很有可能没有分别提供足够的RAM存储器,处理能力或者所需控制键和动作键等,所以并不希望游戏可以在电话上执行。用户在他不能适当地控制游戏时当然会有所不满。如果游戏使用电话上不存在的特殊键来终止游戏,则甚至可能强制用户通过取出电池来关闭电话从而返回到正常操作。例如如果游戏用尽所有可用存储器,则可能出现的其它问题是崩溃或者出现数据丢失。这样的影响将为本发明所避免。一方面,这提高了使用性和用户舒适度。另一方面,它可以为电子设备的制造商和应用软件的供应商这二者提供对允许哪种软件在哪些设备上运行的细调控制。
如上所述,必须以可新赖的方式获得验证所需数据以便确保它的完整性。当在应用软件中嵌入数据(VK或者He2)时,必需保护它免遭不可检测的修改。这例如通过使用软件混淆技术来实现。
当使用对称密钥数字签名时,除完整性以外也必须保证密钥K的保密性。同样,这可以通过使用软件混淆技术来实现。
要注意本发明不直接地涉及到检验是否存在有应用所需的某些硬件或者软件特征。然而,这可以由平台软件实现,而本发明确保此平台软件是可靠的,或者换而言之,它的完整性是有效的。平台软件然后能够执行所述检验,并且如果必要则以平台软件的提供商或相应电子设备的制造商所希望的方式来拒绝执行应用。
权利要求
1.一种用于验证电子设备的平台软件的完整性的方法,包括-访问(102)所述平台软件的模块;-获得(114)签名(S);-获得(116)验证密钥(VK),所述验证密钥(VK)对应于签名密钥(SK);-通过使用所述验证密钥(VK)来对所述签名(S)是否是通过以所述签名密钥(SK)对所述平台软件模块进行签名来导出的进行验证(118);以及-如果所述验证成功则建立(122)所述平台软件模块的肯定验证。
2.根据权利要求1所述的方法,其中在获得所述签名之前-对所述平台软件模块执行(104)散列函数以导出经计算的散列(Hc);-获得(106)预期散列(He);-比较(108)所述散列(Hc)和(He),并且如果所述散列(Hc)和(He)彼此对应,其中所述签名(S)的所述验证包括通过使用所述验证密钥(VK)来对所述签名(S)是否是通过以所述签名密钥(SK)对所述预期散列(He)进行签名来导出的进行验证(118)。
3.根据权利要求1或者2所述的方法,其中在所述访问所述平台软件的所述模块之前-访问(202)监视模块;-对所述监视模块执行(204)散列函数以导出第二经计算的散列(Hc2);-获得(206)第二预期散列(He2);-比较(208)所述散列(Hc2)和(He2),并且如果所述散列(Hc2)和(He2)彼此对应,-调用(214)所述监视模块以执行后续方法步骤。
4.根据权利要求3所述的方法,其中所述第二预期散列(He2)嵌入于执行所述验证的应用中。
5.根据权利要求3或者4所述的方法,其中如果所述散列(Hc2)和(He2)不对应,则建立所述监视模块的否定验证并且拒绝所述监视模块的调用。
6.根据权利要求2至5中任一权利要求所述的方法,其中如果所述散列(Hc)和(He)不对应,则建立所述平台软件模块的否定验证并且拒绝对所述平台软件模块的进一步访问。
7.根据任一前述权利要求所述的方法,其中如果所述签名(S)的所述验证不成功,则建立所述平台软件模块的否定验证并且拒绝对所述平台软件模块的进一步访问。
8.根据任一前述权利要求所述的方法,其中所述验证密钥(VK)嵌入于执行所述验证的所述应用中或者所述监视模块中。
9.根据任一前述权利要求所述的方法,其中所述预期散列(He)由所述平台软件模块提供。
10.根据任一前述权利要求所述的方法,其中所述签名(S)由所述平台软件模块提供。
11.一种用于提供平台软件模块以便实现电子设备的平台软件的完整性的验证的方法,包括-获得平台软件模块;-获得签名密钥(SK);-通过以所述签名密钥(SK)对所述平台软件模块进行签名(302)来导出签名(S);以及-在所述电子设备中提供所述平台软件模块和所述签名(S)。
12.根据权利要求11所述的方法,还包括-对所述平台软件模块执行(300)散列函数以导出预期散列(He);以及-在所述电子设备中提供所述预期散列(He),其中所述签名的所述导出包括以所述签名密钥(SK)对所述预期散列(He)进行签名(302)。
13.根据权利要求12所述的方法,其中在所述电子设备中提供所述平台软件模块,所述预期散列(He)作为静态变量集成到所述平台软件模块中。
14.根据权利要求11至13中任一权利要求所述的方法,其中在与所述平台软件模块相分离的所述电子设备中提供所述签名(S)。
15.根据权利要求11至13中任一权利要求所述的方法,其中在所述电子设备中提供所述平台软件模块,所述签名(S)作为静态变量集成到所述平台软件模块中。
16.根据任一前述权利要求所述的方法,其中所述签名密钥(SK)和所述验证密钥(VK)是非对称密钥对的相应密钥。
17.根据任一前述权利要求所述的方法,其中所述签名密钥(SK)和所述验证密钥(VK)是对称密钥对的相应密钥。
18.一种计算机程序产品,包括用于在所述程序产品运行于计算机或者网络设备上时实现根据权利要求1至17中任一权利要求所述的方法的程序代码装置。
19.一种计算机程序产品,包括存储于计算机可读介质上的程序代码装置,用于在所述软件工具运行于计算机或者网络设备上时实现根据权利要求1至17中任一权利要求所述的方法。
20.一种包括程序代码装置的计算机程序产品,该程序代码装置可从服务器下载,用于在所述程序产品运行于计算机或者网络设备上时实现根据权利要求1至17中任一权利要求所述的方法。
21.一种电子设备(20),用于使应用能够验证电子设备的平台软件的完整性,包括-加载器部件(10),适于访问所述平台软件的模块;-接收器部件(14),适于获得签名(S)和验证密钥(VK);以及-验证部件(18),适于使用所述验证密钥(VK)来验证所述签名(S)。
22.根据权利要求21所述的电子设备,还包括-散列计算器部件(12),适于对所述平台软件模块执行散列函数以导出经计算的散列(Hc,Hc2);以及-比较器部件(16),适于比较来自所述散列计算器部件的经计算的散列(Hc,Hc2)和来自所述接收器部件的预期散列(He,He2),其中所述接收器部件(14)还适于获得预期散列(He,He2),而所述验证部件(18)还适于对所述签名(S)是否是通过以所述签名密钥(SK)对所述预期散列(He)进行签名来导出的进行验证。
全文摘要
提供一种用于验证电子设备的平台软件的完整性的方法,该方法包括访问所述平台软件的模块;获得签名;获得验证密钥(VK),所述验证密钥(VK)对应于签名密钥(SK);通过使用所述验证密钥(VK)来对所述签名(S)是否是通过以所述签名密钥(SK)对所述平台软件模块进行签名来导出的进行验证;以及如果所述验证成功则建立所述平台软件模块的肯定验证。本发明也提供一种用于提供平台软件模块以执行上述方法的方法和一种可以在其上执行上述方法的设备。
文档编号H04L29/06GK101065716SQ200480044447
公开日2007年10月31日 申请日期2004年11月22日 优先权日2004年11月22日
发明者N·阿索康, J·芒特伊拉, R·泽拉法特 申请人:诺基亚公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1