ELF文件发布方法、ELF文件校验方法、服务器及终端与流程

文档序号:13888461阅读:429来源:国知局
本发明涉及互联网
技术领域
:,特别涉及一种elf文件发布方法、elf文件校验方法、服务器及终端。
背景技术
::目前,在andriod应用程序的开发过程中,为了提高应用程序的开发效率及安全性,通常会使用c语言或c++语言开发应用程序的部分功能,这部分功能以elf(executableandlinkableformat,可执行与可链接格式)文件格式存在。由于应用程序在发布过程中,elf文件可能会被非法篡改,因此,有必要对elf文件进行校验,以确保应用程序能够顺利运行。为了实现对elf文件的校验,应用程序开发人员预先会设置一对密钥,其中,公钥存储在终端中,私钥存储在服务器中。对于任一待发布的elf文件,服务器先对该elf文件的两节数据进行校验,得到第一校验值,并采用私钥对第一校验值进行签名,进而将包含签名信息的签名elf文件进行发布。当获取到签名elf文件时,终端从签名elf文件中读取这两节数据,并对这两节数据进行校验,得到第二校验值,进而采用公钥对签名elf文件中的签名信息进行解密,得到第一校验值,如果第一校验值与第二校验值相同,则对elf文件校验成功,如果第一校验值与第二校验值不相同,则对elf文件校验失败。在实现本发明的过程中,发明人发现现有技术至少存在以下问题:由于现有技术仅能对elf文件的两节数据进行校验,因此,校验结果准确性较低。且采用节加密解密的校验方式,当系统不支持该种校验方式时,将无法对elf文件进行校验,因而适配性较差。技术实现要素:为了解决现有技术的问题,本发明实施例提供了一种elf文件发布方法、elf文件校验方法、服务器及终端。所述技术方案如下:第一方面,提供了一种elf文件发布方法,所述方法包括:获取待发布的elf文件;对所述elf文件进行哈希计算,得到第一哈希值;获取所述elf文件的描述信息,所述描述信息至少包括版本名、版本号;将所述第一哈希值与所述描述信息进行拼接,得到拼接字符串;采用预先存储的私钥对所述拼接字符串进行加密,得到签名信息;至少根据所述elf文件和所述签名信息,生成签名文件;发布所述签名文件。第二方面,提供了一种elf文件校验方法,所述方法包括:获取签名文件,所述签名文件包括elf文件、签名标识、签名信息及签名文件长度信息,所述签名信息由服务器对拼接字符串加密得到,所述拼接字符串由所述服务器将第一哈希值和描述信息拼接得到,所述第一哈希值为所述服务器对elf文件进行哈希计算得到,所述描述信息至少包括版本名、版本号;对所述elf文件进行哈希计算,得到第二哈希值;采用预先存储的公钥对所述签名信息进行解密,得到所述第一哈希值和所述描述信息;根据所述第一哈希值与所述第二哈希值,对所述elf文件进行完整性校验;根据所述描述信息,对所述elf文件进行升级校验。第三方面,提供了一种服务器,所述服务器包括:第一获取模块,用于获取待发布的elf文件;计算模块,用于对所述elf文件进行哈希计算,得到第一哈希值;第二获取模块,用于获取所述elf文件的描述信息,所述描述信息至少包括版本名、版本号;拼接模块,用于将所述第一哈希值与所述描述信息进行拼接,得到拼接字符串;加密模块,用于采用预先存储的私钥对所述拼接字符串进行加密,得到签名信息;签名文件生成模块,用于至少根据所述elf文件和所述签名信息,生成签名文件;签名文件发布模块,用于发布所述签名文件。第四方面,提供了一种终端,所述终端包括:获取模块,用于获取签名文件,所述签名文件包括elf文件、签名标识、签名信息及签名文件长度信息,所述签名信息由服务器对拼接字符串加密得到,所述拼接字符串由所述服务器将第一哈希值和描述信息拼接得到,所述第一哈希值为所述服务器对elf文件进行哈希计算得到,所述描述信息至少包括版本名、版本号;计算模块,用于对所述elf文件进行哈希计算,得到第二哈希值;解密模块,用于采用预先存储的公钥对所述签名信息进行解密,得到所述第一哈希值和所述描述信息;第一校验模块,用于根据所述第一哈希值与所述第二哈希值,对所述elf文件进行完整性校验;第二校验模块,用于根据所述描述信息,对所述elf文件进行升级校验。本发明实施例提供的技术方案带来的有益效果是:本发明中服务器将对elf文件进行哈希计算得到的第一哈希值与描述信息拼接在一起,得到拼接字符串,并根据elf文件和对拼接字符串加密得到签名信息,生成签名文件,进而将签名文件发布。由于所发布发的签名文件是根据整个elf文件生成的,终端在获取到服务器所发布签名文件后,可实现对整个elf文件的校验,校验结果更为准确,且并不依赖于节加密解密的校验方式,无论终端的系统是否支持节加密解密,均可对elf文件进行校验,因而适配性较佳。另外,根据签名文件中的描述信息,终端还可对本地存储器中所存储的elf文件进行升级校验,丰富了校验内容。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明一个实施例提供的elf文件发布方法及elf文件校验方法所涉及的实施环境的示意图;图2是本发明另一个实施例提供的一种elf文件发布方法的流程图;图3是本发明另一个实施例提供的一种elf文件校验方法的流程图;图4是本发明另一个实施例提供的一种elf文件发布方法及elf文件校验方法的流程图;图5是本发明另一个实施例提供的一种加密后的签名文件格式的示意图;图6是本发明另一个实施例提供的一种elf文件发布过程的示意图;图7是本发明另一个实施例提供的一种elf文件校验过程的示意图;图8是本发明另一个实施例提供的一种服务器的装置结构示意图;图9是本发明另一个实施例提供的一种终端的装置结构示意图;图10其示出了本发明实施例所涉及的elf文件校验终端的结构示意图;图11是根据一示例性实施例示出的一种用于elf文件发布的服务器。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。请参考图1,其示出了本发明实施例提供的elf文件发布方法及elf文件校验方法所涉及的实施环境的示意图。参见图1,该实施环境包括服务器101和终端102。其中,服务器101为一种应用程序服务器,具备接收应用程序开发者发布的应用程序,并对应用程序中存在被篡改风险的elf文件进行加密,以及将生成的签名文件进行发布的能力。终端102可以为智能手机、平板电脑、个人电脑,本实施例不对终端102的产品形态作具体的限定。该终端102中安装有各种应用程序,如视频播放类应用、社交类应用程序、购物类应用程序、导航类应用程序、sdk(softwaredevelopmentkit,软件开发工具包)等等,并存储着每个应用程序不同功能的文件。本实施例中,终端102正是基于sdk实现对elf文件的完整性及版本信息进行校验的。为了实现对任一应用程序中elf文件进行校验,应用程序开发者在应用程序开发过程中,可采用加密算法为应用程序生成一对密钥,其中,公钥发送给终端进行存储,私钥发送给服务器进行存储。上述服务器101及终端102之间可通过有线网络或无线网络进行通信。本发明实施例提供了一种elf文件发布方法,参见图2,本实施例提供的方法流程包括:201、获取待发布的elf文件。202、对elf文件进行哈希计算,得到第一哈希值。203、获取elf文件的描述信息,该描述信息至少包括版本名、版本号。204、将第一哈希值与描述信息进行拼接,得到拼接字符串。205、采用预先存储的私钥对拼接字符串进行加密,得到签名信息。206、至少根据elf文件和签名信息,生成签名文件。207、发布签名文件。本发明实施例提供的方法,服务器将对elf文件进行哈希计算得到的第一哈希值与描述信息拼接在一起,得到拼接字符串,并根据elf文件和对拼接字符串加密得到签名信息,生成签名文件,进而将签名文件发布。由于所发布发的签名文件是根据整个elf文件生成的,终端在获取到服务器所发布签名文件后,可实现对整个elf文件的校验,校验结果更为准确,且并不依赖于节加密解密的校验方式,无论终端的系统是否支持节加密解密,均可对elf文件进行校验,因而适配性较佳。另外,根据签名文件中的描述信息,终端还可对本地存储器中所存储的elf文件进行升级校验,丰富了校验内容。在本发明的另一个实施例中,将第一哈希值与描述信息进行拼接,得到拼接字符串,包括:采用特定拼接符将第一哈希值与描述信息进行拼接,得到拼接字符串,特征拼接符为不包含于第一哈希值与描述信息中的任一字符。在本发明的另一个实施例中,采用预先存储的私钥对拼接字符串进行加密,得到签名信息,包括:将拼接字符串分为多个分片数据;采用预先存储的私钥对多个分片数据进行分片加密,得到签名信息。在本发明的另一个实施例中,至少根据elf文件和签名信息,生成签名文件,包括:当得到签名信息时,生成签名标识;在elf文件的末尾依次添加签名标识、签名信息及签名文件长度信息,得到签名文件。上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。本发明实施例提供了一种elf文件校验方法,参见图3,本发明实施例提供的方法流程包括:301、获取签名文件,该签名文件包括elf文件、签名标识、签名信息及签名文件长度信息,该签名信息由服务器对拼接字符串加密得到,该拼接字符串由服务器将第一哈希值和描述信息拼接得到,该第一哈希值为服务器对elf文件进行哈希计算得到,该描述信息至少包括版本名、版本号。302、对elf文件进行哈希计算,得到第二哈希值。303、采用预先存储的公钥对签名信息进行解密,得到第一哈希值和描述信息。304、根据第一哈希值与第二哈希值,对elf文件进行完整性校验。305、根据描述信息,对elf文件进行升级校验。本发明实施例提供的方法,通过获取服务器发布的签名文件,并将对签名文件中原文件计算得到的第二哈希值与解密得到的第一哈希值进行比较,实现了对elf文件的校验。由于签名文件的中的第一哈希值为对整个文件计算得到,根据该第一哈希值可实现对整个elf文件的校验,校验结果更为准确,且并不依赖于节加密解密的校验方式,无论系统是否支持节加密解密,均可对文件进行校验,适配性较佳。另外,根据签名文件中的描述信息,还可对本地存储器中所存储的elf文件进行升级校验,丰富了校验内容。在本发明的另一个实施例中,获取签名文件,包括:在本地存储器中查询是否存在与签名文件的文件名相同的文件;如果存在与签名文件的文件名相同的文件,则获取文件的偏移量,以偏移量为起始位置,获取签名文件;如果不存在签名文件的文件名相同的文件,全量获取签名文件。在本发明的另一个实施例中,对elf文件进行哈希计算,得到第二哈希值之前,还包括:读取签名文件的实际长度信息;如果签名文件长度信息与实际长度信息相同,则执行对elf文件进行哈希计算,得到第二哈希值的步骤。在本发明的另一个实施例中,采用预先存储的公钥对签名信息进行解密,得到第一哈希值和描述信息,包括:根据签名文件长度信息,查找签名标识;根据签名标识,从签名文件中读取签名信息;采用预先存储的公钥对签名信息进行解密,得到多个分片数据;将多个分片数据进行拼接,得到拼接字符串;根据特定拼接字符,从拼接字符串中,读取第一哈希值和描述信息。在本发明的另一个实施例中,根据描述信息,对elf文件进行升级校验,还包括:根据版本名,从本地已存储文件中,查找与版本名相同的目标文件;将版本号与目标文件的版本号进行比较;如果版本号高于目标文件的版本号,则对目标文件进行升级。上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。本发明实施例提供了一种elf文件发布方法及elf文件校验方法,以服务器及终端执行本实施例为例,参见图4,本实施例提供的方法流程包括:401、服务器获取待发布的elf文件。其中,elf文件为一种用于执行档、目的档、共享档和核心档转储的标准文件格式,同时也是类unix操作系统的二级制文件格式标准。elf文件由4部分组成,分别为elf头(elfheader)、程序头表(programheadertable)、节(section)和节头表(sectionheadertable)。当应用程序开发完成后,应用程序开发人员会将应用程序上传到服务器,服务器据此可获取到应用程序中的elf文件。402、服务器对elf文件进行哈希计算,得到第一哈希值。当获取到待发布的elf文件之后,服务器读取该待发布的elf文件,并采用指定哈希算法对该elf文件进行哈希计算,得到第一哈希值。其中,指定哈希算法包括加位哈希算法、位运算哈希算法、乘法哈希算法、除法哈希算法等等。403、服务器获取elf文件的描述信息。其中,描述信息至少包括elf文件的版本名、版本号、渠道号等,本实施例不对描述信息的内容作具体的限定。404、服务器将第一哈希值与描述信息进行拼接,得到拼接字符串。基于所获取到的第一哈希值与描述信息,服务器通过采用特定拼接符可将描述信息与第一哈希值进行拼接,得到拼接字符串。其中,拼接符为不包含于所述第一哈希值与所述描述信息中的任一字符,可以为分号、逗号、井号等,本实施例以采用分号作为拼接符为例。405、服务器采用预先存储的私钥对拼接字符串进行加密,得到签名信息。为了验证待发布的elf文件在发布过程中是否被第三方篡改,当采用指定哈希算法生成第一哈希值之后,服务器还将采用预先存储的私钥对拼接字符串进行加密,得到签名信息。具体实施时,服务器可按照预设分片规则将该拼接字符串进行分片,得到多个分片数据,进而采用预先存储的私钥对多个分片数据进行分片加密,得到签名信息。406、服务器至少根据elf文件和签名信息,生成签名文件。为了区分签名文件及elf文件,当任一待发布的elf文件被加密,得到签名信息时,服务器将生成一个签名标识,该签名标识可用tag表示,且该签名标识为一个四字节的特殊标记,用于验证签名文件中附加内容的起始位置。在本实施例中,服务器可按照签名文件格式,通过在elf文件的尾部依次添加签名标识、签名信息及签名文件长度信息,得到一个签名文件。其中,签名文件长度信息中记录了elf文件的长度、签名标识与签名信息的长度、以及签名标识和签名信息在签名文件中的位置。图5示出了一个签名文件,参见图5,elf文件位于签名文件的头部,在elf文件的尾部依次为签名标识、签名信息及签名文件长度信息。由于签名信息、签名标识及签名文件长度信息为服务器对elf文件进行加密处理过程中额外产生的信息,本实施例中将这些加密过程中额外产生的信息,称为附加内容。对于附加内容,在进行存储时,可采用4个字节的大端存储,也可以采用4个字节的小端存储,本实施例对此不作具体的限定。其中,大端存储是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式类似将数据当作字符串顺序处理,地址由小到大增加,而数据从高位向低位存储。小端存储是指数据的高字节保存在内存的高地址中,数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权重值高,低地址部分权重值低。407、服务器发布签名文件。至此,通过上述步骤401至407实现了文件的发布过程,为了便于理解上述文件发布过程,下面以图6为例进行说明。参见图6,对于任一待发布的elf文件,服务器读取该待发布的elf文件,并计算该elf文件的md5值(第一哈希值)。服务器获取该elf文件的描述信息,采用特定拼接符将md5值与描述信息拼接在一起,得到拼接字符串。之后,服务器采用预先存储的私钥对拼接字符串进行加密,生成签名信息,并按照签名文件格式,在elf文件的尾部依次添加签名标识、签名信息及签名文件长度信息,得到签名文件,进而将所得到的签名文件进行发布。408、终端获取签名文件。当签名文件发布以后,终端可从互联网上下载该签名文件,在下载签名文件的过程中,终端可在本地存储器中查询是否存在与该签名文件的文件名相同的文件,如果本地存储器中存在与该签名文件的文件名相同的文件,则可获取该文件的偏移量,并以偏移量为起始位置,获取该签名文件,从而节省了网络资源;如果本地存储器中不存在该签名文件的文件名相同的文件,终端将全量获取该签名文件。409、终端对elf文件进行哈希计算,得到第二哈希值。在实际应用中,当服务器将所生成的签名文件发布之后,第三方可能会对该签名文件进行篡改,因此,终端在获取到的签名文件后,需要对所获取到的签名文件进行校验,以判断该签名文件是否完整。在对签名文件进行完整性校验之前,终端可先从签名文件中读取elf文件,并采用指定哈希算法对原文件进行哈希计算,得到第二哈希值。其中,该指定哈希算法为与服务器对待发布的elf文件进行计算时所采用的哈希算法相同。为了节省对签名文件进行校验时的计算量,终端在获取签名文件之后,可先读取签名文件的实际长度信息,并根据该签名文件的实际长度信息及签名文件的长度信息,对签名文件进行合法性验证。如果签名文件长度信息与实际长度信息相同,则说明该签名文件为合法文件,此时终端再对签名文件中elf文件进行计算,如果签名文件的长度信息大于实际长度信息,则说明该签名文件为不合法文件,此时终端无需在对该签名文件进行计算。410、终端采用预先存储的公钥对签名信息进行解密,得到第一哈希值和描述信息。基于签名文件的格式,终端可根据该签名文件长度信息,查找签名标识,进而根据签名标识,从签名文件中读取签名信息。通过采用该种方式能够快速定位到签名信息所在的位置,提高了签名信息的获取速度。在获取到的签名信息之后,终端采用预先存储的公钥对签名信息进行解密,如果不能成功解密,说明该签名文件不并合法,流程结束;如果能够成功解密,得到多个分片数据,终端通过预设规则对多个分片数据进行拼接,得到拼接字符串,并根据特定拼接字符,从拼接字符串中,读取第一哈希和描述信息。需要说明的是,在本实施例中,终端采用指定哈希算法对elf文件进行计算得到第二哈希值过程与终端对签名信息进行解密得到第一哈希值和描述信息的过程并没有明确的先后顺序,也即是,终端可先执行步骤409对elf文件进行哈希计算,得到第二哈希值,后执行步骤410采用预先存储的公钥对签名信息进行解密,得到第一哈希值和描述信息,终端还可先执行步骤410采用预先存储的公钥对签名信息进行解密,得到第一哈希值和描述信息,后执行步骤409对elf文件进行哈希计算,得到第二哈希值。411、终端根据第一哈希值与第二哈希值,对elf文件进行完整性校验。基于对elf文件进行哈希计算得到的第二哈希值、以及对签名信息解密得到的第一哈希值,终端通过将第一哈希值与第二哈希值进行比较,可实现对签名文件的完整性校验。如果第一哈希值与第二哈希值相同,说明终端获取到的elf文件与服务器发布的elf文件相同,则终端可确定elf文件完整,并未被第三方篡改;如果第一哈希值与第二哈希值不相同,说明终端获取到的elf文件被篡改或者在丢失,则该elf文件并不完整。至此,通过上述步骤408至411实现了对elf文件的完整性校验,为了便于理解上述elf文件的校验过程,下面以图7为例进行说明。参见图7,当终端获取到签名文件后,终端读取签名文件末尾附加内容,并根据末尾附加内容的长度(签名文件的长度信息)判断签名文件是否合法,如果签名文件不合法,流程结束;如果签名文件合法,计算签名文件中elf文件的md5值(第二哈希值),根据附加内容的长度,查找tag(签名标识),并根据tag,读取签名信息,进而通过能否采用预先存储的公钥对签名信息进行解密,进一步判断签名文件是否合法,如果不能对签名信息进行解密,则流程结束,如果能够对签名信息进行解密,则将签名信息解密得到的md5值(第一哈希值)与计算得到的md5值(第二哈希值)进行比较,如果二者一致,说明elf文件完整,可确定对elf文件校验成功。412、终端根据描述信息,对elf文件进行升级校验。终端根据描述信息,对elf文件进行升级校验过程如下:第一步,终端根据描述信息中的版本名,从本地已存储文件中,查找与版本名相同的目标文件。第二步,终端将版本号与目标文件的版本号进行比较,如果版本号高于目标文件的版本号,则对目标文件进行升级;如果版本号低于或等于目标文件的版本号,则流程结束。本发明实施例提供的方法,服务器将对elf文件进行哈希计算得到的第一哈希值与描述信息拼接在一起,得到拼接字符串,并根据elf文件和对拼接字符串加密得到签名信息,生成签名文件,进而将签名文件发布。由于所发布发的签名文件是根据整个elf文件生成的,终端在获取到服务器所发布签名文件后,可实现对整个elf文件的校验,校验结果更为准确,且并不依赖于节加密解密的校验方式,无论终端的系统是否支持节加密解密,均可对elf文件进行校验,因而适配性较佳。另外,根据签名文件中的描述信息,终端还可对本地存储器中所存储的elf文件进行升级校验,丰富了校验内容。参见图8,本发明实施例提供了一种服务器,该服务器包括:第一获取模块801,用于获取待发布的elf文件;计算模块802,用于对elf文件进行哈希计算,得到第一哈希值;第二获取模块803,用于获取elf文件的描述信息,该描述信息至少包括版本名、版本号;拼接模块804,用于将第一哈希值与描述信息进行拼接,得到拼接字符串;加密模块805,用于采用预先存储的私钥对拼接字符串进行加密,得到签名信息;签名文件生成模块806,用于至少根据elf文件和签名信息,生成签名文件;签名文件发布模块807,用于发布签名文件。在本发明的另一个实施例中,拼接模块804,用于采用特定拼接符将第一哈希值与描述信息进行拼接,得到拼接字符串,特征拼接符为不包含于第一哈希值与描述信息中的任一字符。在本发明的另一个实施例中,加密模块805,用于将拼接字符串分为多个分片数据;采用预先存储的私钥对多个分片数据进行分片加密,得到签名信息。在本发明的另一个实施例中,签名文件生成模块806,用于当得到签名信息时,生成签名标识;在elf文件的末尾依次添加签名标识、签名信息及签名文件长度信息,得到签名文件。综上,本发明实施例提供的服务器,服务器将对elf文件进行哈希计算得到的第一哈希值与描述信息拼接在一起,得到拼接字符串,并根据elf文件和对拼接字符串加密得到签名信息,生成签名文件,进而将签名文件发布。由于所发布发的签名文件是根据整个elf文件生成的,终端在获取到服务器所发布签名文件后,可实现对整个elf文件的校验,校验结果更为准确,且并不依赖于节加密解密的校验方式,无论终端的系统是否支持节加密解密,均可对elf文件进行校验,因而适配性较佳。另外,根据签名文件中的描述信息,终端还可对本地存储器中所存储的elf文件进行升级校验,丰富了校验内容。参见图9,本发明实施例提供了一种终端,该终端包括:获取模块901,用于获取签名文件,该签名文件包括可执行与可链接格式elf文件、签名标识、签名信息及签名文件长度信息,该签名信息由服务器对拼接字符串加密得到,该拼接字符串由服务器将第一哈希值和描述信息拼接得到,该第一哈希值为服务器对elf文件进行哈希计算得到,该描述信息至少包括版本名、版本号;计算模块902,用于对elf文件进行哈希计算,得到第二哈希值;解密模块903,用于采用预先存储的公钥对签名信息进行解密,得到第一哈希值和描述信息;第一校验模块904,根据第一哈希值与第二哈希值,对elf文件进行完整性校验;第二校验模块905,用于根据描述信息,对elf文件进行升级校验。在本发明的另一个实施例中,获取模块901,用于在本地存储器中查询是否存在与签名文件的文件名相同的文件;当存在与签名文件的文件名相同的文件时,获取文件的偏移量,以偏移量为起始位置,获取签名文件;当不存在签名文件的文件名相同的文件时,全量获取签名文件。在本发明的另一个实施例中,终端还包括:信息读取模块,用于读取签名文件的实际长度信息;计算模块902,用于当签名文件长度信息与实际长度信息相同时,对elf文件进行哈希计算,得到第二哈希值。在本发明的另一个实施例中,解密模块903,用于根据签名文件长度信息,查找签名标识;根据签名标识,从签名文件中读取签名信息;采用预先存储的公钥对签名信息进行解密,得到多个分片数据;将多个分片数据进行拼接,得到拼接字符串;根据特定拼接字符,从拼接字符串中,读取第一哈希值和描述信息。在本发明的另一个实施例中,第二校验模块,用于根据版本名,从本地已存储文件中,查找与版本名相同的目标文件;将版本号与目标文件的版本号进行比较;当版本号高于目标文件的版本号时,对目标文件进行升级。本发明实施例提供的终端,通过获取服务器发布的签名文件,并将对签名文件中原文件计算得到的第二哈希值与解密得到的第一哈希值进行比较,实现了对elf文件的校验。由于签名文件的中的第一哈希值为对整个文件计算得到,根据该第一哈希值可实现对整个elf文件的校验,校验结果更为准确,且并不依赖于节加密解密的校验方式,无论系统是否支持节加密解密,均可对文件进行校验,适配性较佳。另外,根据签名文件中的描述信息,还可对本地存储器中所存储的elf文件进行升级校验,丰富了校验内容。参见图10,其示出了本发明实施例所涉及的elf文件校验终端的结构示意图,该终端可以用于实施上述实施例中提供的文件校验方法。具体来讲:终端1000可以包括rf(radiofrequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、wifi(wirelessfidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图10中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:rf电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,rf电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(sim)卡、收发信机、耦合器、lna(lownoiseamplifier,低噪声放大器)、双工器等。此外,rf电路110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于gsm(globalsystemofmobilecommunication,全球移动通讯系统)、gprs(generalpacketradioservice,通用分组无线服务)、cdma(codedivisionmultipleaccess,码分多址)、wcdma(widebandcodedivisionmultipleaccess,宽带码分多址)、lte(longtermevolution,长期演进)、电子邮件、sms(shortmessagingservice,短消息服务)等。存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端1000的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元140可用于显示由用户输入的信息或提供给用户的信息以及终端1000的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用lcd(liquidcrystaldisplay,液晶显示器)、oled(organiclight-emittingdiode,有机发光二极管)等形式来配置显示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图10中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。终端1000还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在终端1000移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端1000还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。音频电路160、扬声器161,传声器162可提供用户与终端1000之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经rf电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与终端1000的通信。wifi属于短距离无线传输技术,终端1000通过wifi模块170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图10示出了wifi模块170,但是可以理解的是,其并不属于终端1000的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。处理器180是终端1000的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行终端1000的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心;可选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。终端1000还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。尽管未示出,终端1000还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端1000的显示单元是触摸屏显示器,终端1000还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。一个或者一个以上程序包含用于执行以下操作的指令:获取签名文件,该签名文件包括可执行与可链接格式elf文件、签名标识、签名信息及签名文件长度信息,该签名信息由服务器对拼接字符串加密得到,拼接字符串由服务器将第一哈希值和描述信息拼接得到,该第一哈希值为服务器对elf文件进行哈希计算得到,该描述信息至少包括版本名、版本号;对elf文件进行哈希计算,得到第二哈希值;采用预先存储的公钥对签名信息进行解密,得到第一哈希值和描述信息;根据第一哈希值与第二哈希值,对elf文件进行完整性校验;根据描述信息,对elf文件进行升级校验。假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,终端的存储器中,还包含用于执行以下操作的指令:获取签名文件,包括:在本地存储器中查询是否存在与签名文件的文件名相同的文件;如果存在与签名文件的文件名相同的文件,则获取文件的偏移量,以偏移量为起始位置,获取签名文件;如果不存在签名文件的文件名相同的文件,全量获取签名文件。假设上述为第二种可能的实施方式,则在第二种可能的实施方式作为基础而提供的第三种可能的实施方式中,终端的存储器中,还包含用于执行以下操作的指令:对elf文件进行哈希计算,得到第二哈希值之前,还包括:读取签名文件的实际长度信息;如果签名文件长度信息与实际长度信息相同,则执行对elf文件进行哈希计算,得到第二哈希值的步骤。假设上述为第三种可能的实施方式,则在第三种可能的实施方式作为基础而提供的第四种可能的实施方式中,终端的存储器中,还包含用于执行以下操作的指令:采用预先存储的公钥对签名信息进行解密,得到第一哈希值和描述信息,包括:根据签名文件长度信息,查找签名标识;根据签名标识,从签名文件中读取签名信息;采用预先存储的公钥对签名信息进行解密,得到多个分片数据;将多个分片数据进行拼接,得到拼接字符串;根据特定拼接字符,从拼接字符串中,读取第一哈希值和描述信息。假设上述为第四种可能的实施方式,则在第四种可能的实施方式作为基础而提供的第五种可能的实施方式中,终端的存储器中,还包含用于执行以下操作的指令:根据描述信息,对elf文件进行升级校验,包括:根据版本名,从本地已存储文件中,查找与版本名相同的目标文件;将版本号与目标文件的版本号进行比较;如果版本号高于目标文件的版本号,则对目标文件进行升级。本发明实施例提供的终端,通过获取服务器发布的签名文件,并将对签名文件中原文件计算得到的第二哈希值与解密得到的第一哈希值进行比较,实现了对elf文件的校验。由于签名文件的中的第一哈希值为对整个文件计算得到,根据该第一哈希值可实现对整个elf文件的校验,校验结果更为准确,且并不依赖于节加密解密的校验方式,无论系统是否支持节加密解密,均可对文件进行校验,适配性较佳。另外,根据签名文件中的描述信息,还可对本地存储器中所存储的elf文件进行升级校验,丰富了校验内容。本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。该计算机可读存储介质存储有一个或者一个以上程序,该一个或者一个以上程序被一个或者一个以上的处理器用来执行elf文件校验方法,该方法包括:获取签名文件,该签名文件包括可执行与可链接格式elf文件、签名标识、签名信息及签名文件长度信息,该签名信息由服务器对拼接字符串加密得到,拼接字符串由服务器将第一哈希值和描述信息拼接得到,该第一哈希值为服务器对elf文件进行哈希计算得到,该描述信息至少包括版本名、版本号;对elf文件进行哈希计算,得到第二哈希值;采用预先存储的公钥对签名信息进行解密,得到第一哈希值和描述信息;根据第一哈希值与第二哈希值,对elf文件进行完整性校验;根据描述信息,对elf文件进行升级校验。假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,终端的存储器中,还包含用于执行以下操作的指令:获取签名文件,包括:在本地存储器中查询是否存在与签名文件的文件名相同的文件;如果存在与签名文件的文件名相同的文件,则获取文件的偏移量,以偏移量为起始位置,获取签名文件;如果不存在签名文件的文件名相同的文件,全量获取签名文件。假设上述为第二种可能的实施方式,则在第二种可能的实施方式作为基础而提供的第三种可能的实施方式中,终端的存储器中,还包含用于执行以下操作的指令:对elf文件进行哈希计算,得到第二哈希值之前,还包括:读取签名文件的实际长度信息;如果签名文件长度信息与实际长度信息相同,则执行对elf文件进行哈希计算,得到第二哈希值的步骤。假设上述为第三种可能的实施方式,则在第三种可能的实施方式作为基础而提供的第四种可能的实施方式中,终端的存储器中,还包含用于执行以下操作的指令:采用预先存储的公钥对签名信息进行解密,得到第一哈希值和描述信息,包括:根据签名文件长度信息,查找签名标识;根据签名标识,从签名文件中读取签名信息;采用预先存储的公钥对签名信息进行解密,得到多个分片数据;将多个分片数据进行拼接,得到拼接字符串;根据特定拼接字符,从拼接字符串中,读取第一哈希值和描述信息。假设上述为第四种可能的实施方式,则在第四种可能的实施方式作为基础而提供的第五种可能的实施方式中,终端的存储器中,还包含用于执行以下操作的指令:根据描述信息,对elf文件进行升级校验,包括:根据版本名,从本地已存储文件中,查找与版本名相同的目标文件;将版本号与目标文件的版本号进行比较;如果版本号高于目标文件的版本号,则对目标文件进行升级。本发明实施例提供的计算机可读存储介质,通过获取服务器发布的签名文件,并将对签名文件中原文件计算得到的第二哈希值与解密得到的第一哈希值进行比较,实现了对elf文件的校验。由于签名文件的中的第一哈希值为对整个文件计算得到,根据该第一哈希值可实现对整个elf文件的校验,校验结果更为准确,且并不依赖于节加密解密的校验方式,无论系统是否支持节加密解密,均可对文件进行校验,适配性较佳。另外,根据签名文件中的描述信息,还可对本地存储器中所存储的elf文件进行升级校验,丰富了校验内容。本发明实施例中提供了一种图形用户接口,该图形用户接口用在elf文件校验终端上,该执行文件校验终端包括触摸屏显示器、存储器和用于执行一个或者一个以上的程序的一个或者一个以上的处理器;该图形用户接口包括:获取签名文件,该签名文件包括可执行与可链接格式elf文件、签名标识、签名信息及签名文件长度信息,该签名信息由服务器对拼接字符串加密得到,拼接字符串由服务器将第一哈希值和描述信息拼接得到,该第一哈希值为服务器对elf文件进行哈希计算得到,该描述信息至少包括版本名、版本号;对elf文件进行哈希计算,得到第二哈希值;采用预先存储的公钥对签名信息进行解密,得到第一哈希值和描述信息;根据第一哈希值与第二哈希值,对elf文件进行完整性校验;根据描述信息,对elf文件进行升级校验。本发明实施例提供的图形用户接口,通过获取服务器发布的签名文件,并将对签名文件中原文件计算得到的第二哈希值与解密得到的第一哈希值进行比较,实现了对elf文件的校验。由于签名文件的中的第一哈希值为对整个文件计算得到,根据该第一哈希值可实现对整个elf文件的校验,校验结果更为准确,且并不依赖于节加密解密的校验方式,无论系统是否支持节加密解密,均可对文件进行校验,适配性较佳。另外,根据签名文件中的描述信息,还可对本地存储器中所存储的elf文件进行升级校验,丰富了校验内容。图11是根据一示例性实施例示出的一种用于文件发布的服务器。参照图11,服务器1100包括处理组件1122,其进一步包括一个或多个处理器,以及由存储器1132所代表的存储器资源,用于存储可由处理组件1122的执行的指令,例如应用程序。存储器1132中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1122被配置为执行指令,以执行上述文件发布中服务器所执行的功能,该方法包括:获取待发布的可执行与可链接格式elf文件;对elf文件进行哈希计算,得到第一哈希值;获取elf文件的描述信息,描述信息至少包括版本名、版本号;将第一哈希值与描述信息进行拼接,得到拼接字符串;采用预先存储的私钥对拼接字符串进行加密,得到签名信息;至少根据elf文件和签名信息,生成签名文件;发布签名文件。在本发明的另一个实施例中,将第一哈希值与描述信息进行拼接,得到拼接字符串,包括:采用特定拼接符将第一哈希值与描述信息进行拼接,得到拼接字符串,特征拼接符为不包含于第一哈希值与描述信息中的任一字符。在本发明的另一个实施例中,采用预先存储的私钥对拼接字符串进行加密,得到签名信息,包括:将拼接字符串分为多个分片数据;采用预先存储的私钥对多个分片数据进行分片加密,得到签名信息。在本发明的另一个实施例中,至少根据elf文件和签名信息,生成签名文件,包括:当得到签名信息时,生成签名标识;在elf文件的末尾依次添加签名标识、签名信息及签名文件长度信息,得到签名文件。服务器1100还可以包括一个电源组件1126被配置为执行服务器1100的电源管理,一个有线或无线网络接口1150被配置为将服务器1100连接到网络,和一个输入输出(i/o)接口1158。服务器1100可以操作基于存储在存储器1132的操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或类似。本发明实施例提供的服务器,服务器将对elf文件进行哈希计算得到的第一哈希值与描述信息拼接在一起,得到拼接字符串,并根据elf文件和对拼接字符串加密得到签名信息,生成签名文件,进而将签名文件发布。由于所发布发的签名文件是根据整个elf文件生成的,终端在获取到服务器所发布签名文件后,可实现对整个elf文件的校验,校验结果更为准确,且并不依赖于节加密解密的校验方式,无论终端的系统是否支持节加密解密,均可对elf文件进行校验,因而适配性较佳。另外,根据签名文件中的描述信息,终端还可对本地存储器中所存储的elf文件进行升级校验,丰富了校验内容。需要说明的是:上述实施例提供的服务器、终端在发布文件、校验文件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器及终端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的服务器、终端及文件发布方法、文件校验方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1