CN107786504B - Elf文件发布方法、elf文件校验方法、服务器及终端 - Google Patents
Elf文件发布方法、elf文件校验方法、服务器及终端 Download PDFInfo
- Publication number
- CN107786504B CN107786504B CN201610737262.5A CN201610737262A CN107786504B CN 107786504 B CN107786504 B CN 107786504B CN 201610737262 A CN201610737262 A CN 201610737262A CN 107786504 B CN107786504 B CN 107786504B
- Authority
- CN
- China
- Prior art keywords
- file
- signature
- information
- elf
- hash value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/565—Static detection by checking file integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Computing Systems (AREA)
- Power Engineering (AREA)
- Virology (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种ELF文件发布方法、ELF文件校验方法、服务器及终端,属于互联网技术领域。本发明中服务器将对ELF文件进行哈希计算得到的第一哈希值与描述信息拼接在一起,得到拼接字符串,并根据ELF文件和对拼接字符串加密得到签名信息,生成签名文件,进而将签名文件发布。由于所发布发的签名文件是根据整个ELF文件生成的,终端在获取到服务器所发布签名文件后,可实现对整个ELF文件的校验,校验结果更为准确,且并不依赖于节加密解密的校验方式,无论终端的系统是否支持节加密解密,均可对ELF文件进行校验,因而适配性较佳。另外,根据签名文件中的描述信息,终端还可对本地存储器中所存储的ELF文件进行升级校验,丰富了校验内容。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种ELF文件发布方法、ELF文件校验方法、服务器及终端。
背景技术
目前,在Andriod应用程序的开发过程中,为了提高应用程序的开发效率及安全性,通常会使用C语言或C++语言开发应用程序的部分功能,这部分功能以ELF(Executableand Linkable Format,可执行与可链接格式)文件格式存在。由于应用程序在发布过程中,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(Software Development Kit,软件开发工具包)等等,并存储着每个应用程序不同功能的文件。本实施例中,终端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)、程序头表(Program header table)、节(Section)和节头表(Section headertable)。
当应用程序开发完成后,应用程序开发人员会将应用程序上传到服务器,服务器据此可获取到应用程序中的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(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WiFi(Wireless Fidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图10中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器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(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板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,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本发明实施例提供的服务器,服务器将对ELF文件进行哈希计算得到的第一哈希值与描述信息拼接在一起,得到拼接字符串,并根据ELF文件和对拼接字符串加密得到签名信息,生成签名文件,进而将签名文件发布。由于所发布发的签名文件是根据整个ELF文件生成的,终端在获取到服务器所发布签名文件后,可实现对整个ELF文件的校验,校验结果更为准确,且并不依赖于节加密解密的校验方式,无论终端的系统是否支持节加密解密,均可对ELF文件进行校验,因而适配性较佳。另外,根据签名文件中的描述信息,终端还可对本地存储器中所存储的ELF文件进行升级校验,丰富了校验内容。
需要说明的是:上述实施例提供的服务器、终端在发布文件、校验文件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器及终端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的服务器、终端及文件发布方法、文件校验方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种ELF文件发布及校验方法,其特征在于,所述方法包括:
获取包括可执行与可链接格式ELF头、程序头表、节和节头表的ELF文件;
对整个所述ELF文件进行哈希计算,得到第一哈希值;
获取所述ELF文件的描述信息,所述描述信息至少包括版本名和版本号;
采用特定拼接符将所述第一哈希值与所述描述信息进行拼接,得到拼接字符串,所述特定拼接符为不包含于所述第一哈希值与所述描述信息中的任一字符;
采用预先存储的私钥对所述拼接字符串进行加密,得到签名信息;
生成签名标识,所述签名标识为用于验证签名文件中附加内容的起始位置的四字节的特殊标记;
在所述ELF文件的尾部存储附加内容,生成签名文件,所述附加内容包括所述签名信息、签名标识和签名文件长度信息,所述存储附加内容,包括:将数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,将数据当作字符串顺序处理,地址由小到大增加,而数据从高位向低位存储;或者,数据的高字节保存在内存的高地址中,数据的低字节保存在内存的低地址中,将地址的高低和数据位权结合,高地址部分权重值高于低地址部分权重值;
发布所述签名文件;
获取所述签名文件,读取所述签名文件的实际长度信息;
根据所述签名文件的实际长度信息及签名文件的长度信息,对签名文件进行合法性验证,如果所述签名文件长度信息与实际长度信息相同,对所述签名文件中ELF文件进行哈希计算,得到第二哈希值;
基于签名文件的格式,根据所述签名文件长度信息,查找签名标识;
根据所述签名标识,从所述签名文件中读取签名信息;
采用预先存储的公钥对所述签名信息进行解密,得到所述第一哈希值和所述描述信息;
根据所述第一哈希值与所述第二哈希值,对所述ELF文件进行完整性校验;
根据所述描述信息,对所述ELF文件进行升级校验。
2.根据权利要求1所述的方法,其特征在于,所述采用预先存储的私钥对所述拼接字符串进行加密,得到签名信息,包括:
将所述拼接字符串分为多个分片数据;
采用预先存储的私钥对所述多个分片数据进行分片加密,得到所述签名信息。
3.根据权利要求1所述的方法,其特征在于,所述获取签名文件,包括:
在本地存储器中查询是否存在与所述签名文件的文件名相同的文件;
如果存在与所述签名文件的文件名相同的文件,则获取所述文件的偏移量,以所述偏移量为起始位置,获取所述签名文件;
如果不存在所述签名文件的文件名相同的文件,全量获取所述签名文件。
4.根据权利要求2所述的方法,其特征在于,所述采用预先存储的公钥对所述签名信息进行解密,得到所述第一哈希值和所述描述信息,包括:
采用预先存储的公钥对所述签名信息进行解密,得到多个分片数据;
将所述多个分片数据进行拼接,得到所述拼接字符串;
根据特定拼接字符,从所述拼接字符串中,读取所述第一哈希值和所述描述信息。
5.根据权利要求1所述的方法,其特征在于,所述根据所述描述信息,对所述ELF文件进行升级校验,还包括:
根据所述版本名,从本地已存储文件中,查找与所述版本名相同的目标文件;
将所述版本号与目标文件的版本号进行比较;
如果所述版本号高于所述目标文件的版本号,则对所述目标文件进行升级。
6.一种ELF文件发布及校验装置,其特征在于,所述装置包括:服务器和终端;所述服务器包括第一获取模块、第一计算模块、第二获取模块、拼接模块、加密模块、签名文件生成模块和签名文件发布模块;所述终端包括第三获取模块、第二计算模块、解密模块、第一检验模块和第二检验模块;
第一获取模块,用于获取包括可执行与可链接格式ELF头、程序头表、节和节头表的ELF文件;
第一计算模块,用于对整个所述ELF文件进行哈希计算,得到第一哈希值;
第二获取模块,用于获取所述ELF文件的描述信息,所述描述信息至少包括版本名和版本号;
拼接模块,用于采用特定拼接符将所述第一哈希值与所述描述信息进行拼接,得到拼接字符串,所述特定拼接符为不包含于所述第一哈希值与所述描述信息中的任一字符;
加密模块,用于采用预先存储的私钥对所述拼接字符串进行加密,得到签名信息;
签名文件生成模块,用于生成签名标识,所述签名标识为用于验证签名文件中附加内容的起始位置的四字节的特殊标记;在所述ELF文件的尾部存储附加内容,生成签名文件,所述附加内容包括所述签名信息、签名标识和签名文件长度信息,所述存储附加内容,包括:将数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,将数据当作字符串顺序处理,地址由小到大增加,而数据从高位向低位存储;或者,数据的高字节保存在内存的高地址中,数据的低字节保存在内存的低地址中,将地址的高低和数据位权结合,高地址部分权重值高于低地址部分权重值;
签名文件发布模块,用于发布所述签名文件;
第三获取模块,用于获取所述签名文件,读取所述签名文件的实际长度信息;
第二计算模块,用于根据所述签名文件的实际长度信息及签名文件的长度信息,对签名文件进行合法性验证,如果所述签名文件长度信息与实际长度信息相同,则说明所述签名文件为合法文件,再对所述签名文件中ELF文件进行哈希计算,得到第二哈希值;
解密模块,用于基于签名文件的格式,根据所述签名文件长度信息,查找签名标识;根据所述签名标识,从所述签名文件中读取签名信息;采用预先存储的公钥对所述签名信息进行解密,得到所述第一哈希值和所述描述信息;
第一校验模块,用于根据所述第一哈希值与所述第二哈希值,对所述ELF文件进行完整性校验;
第二校验模块,用于根据所述描述信息,对所述ELF文件进行升级校验。
7.根据权利要求6所述的装置,其特征在于,所述加密模块,用于:
将所述拼接字符串分为多个分片数据;
采用预先存储的私钥对所述多个分片数据进行分片加密,得到所述签名信息。
8.根据权利要求6所述的装置,其特征在于,所述第三获取模块,用于:
在本地存储器中查询是否存在与所述签名文件的文件名相同的文件;
如果存在与所述签名文件的文件名相同的文件,则获取所述文件的偏移量,以所述偏移量为起始位置,获取所述签名文件;
如果不存在所述签名文件的文件名相同的文件,全量获取所述签名文件。
9.根据权利要求7所述的装置,其特征在于,所述解密模块,用于:
采用预先存储的公钥对所述签名信息进行解密,得到多个分片数据;
将所述多个分片数据进行拼接,得到所述拼接字符串;
根据特定拼接字符,从所述拼接字符串中,读取所述第一哈希值和所述描述信息。
10.根据权利要求6所述的装置,其特征在于,所述第二校验模块还用于:
根据所述版本名,从本地已存储文件中,查找与所述版本名相同的目标文件;
将所述版本号与目标文件的版本号进行比较;
如果所述版本号高于所述目标文件的版本号,则对所述目标文件进行升级。
11.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序被处理器加载并执行,以实现如权利要求1-5任一项所述的方法的指令。
12.一种电子设备,其特征在于,包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中加载并执行所述计算机程序,以实现如权利要求1-5任一项所述的方法的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610737262.5A CN107786504B (zh) | 2016-08-26 | 2016-08-26 | Elf文件发布方法、elf文件校验方法、服务器及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610737262.5A CN107786504B (zh) | 2016-08-26 | 2016-08-26 | Elf文件发布方法、elf文件校验方法、服务器及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107786504A CN107786504A (zh) | 2018-03-09 |
CN107786504B true CN107786504B (zh) | 2020-09-04 |
Family
ID=61439894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610737262.5A Active CN107786504B (zh) | 2016-08-26 | 2016-08-26 | Elf文件发布方法、elf文件校验方法、服务器及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107786504B (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110209637A (zh) * | 2018-07-09 | 2019-09-06 | 深圳睿尚教育科技有限公司 | 一种书写在触摸屏终端的板书的保存方法及其装置 |
CN109635522A (zh) * | 2018-11-13 | 2019-04-16 | 许继集团有限公司 | 一种动态库的防篡改方法及装置 |
CN109510825A (zh) * | 2018-11-13 | 2019-03-22 | 许昌许继软件技术有限公司 | 动态库加密方法和装置及动态库防劫持方法和装置 |
CN111200479B (zh) * | 2018-11-19 | 2022-04-12 | 福建天泉教育科技有限公司 | 传输数据的校验方法、存储介质 |
CN111444479B (zh) * | 2018-12-29 | 2024-05-14 | 北京奇虎科技有限公司 | 一种数字指纹所有权的验证方法及系统 |
CN109784058A (zh) * | 2019-01-07 | 2019-05-21 | 中国银行股份有限公司 | 版本强一致性校验方法、客户端、服务器及存储介质 |
CN110009341B (zh) * | 2019-01-31 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 一种对写入块链的交易进行隐匿的方法及装置 |
CN110647760A (zh) * | 2019-09-23 | 2020-01-03 | 北京信安世纪科技股份有限公司 | 一种脚本加密、执行方法及装置 |
CN110519064A (zh) * | 2019-09-23 | 2019-11-29 | 北京信安世纪科技股份有限公司 | 一种密文脚本生成、执行方法及装置 |
CN111221764B (zh) * | 2019-10-18 | 2022-03-25 | 浙江中控技术股份有限公司 | 一种跨链路数据传输方法及系统 |
CN111125725A (zh) * | 2019-11-22 | 2020-05-08 | 苏州浪潮智能科技有限公司 | 一种镜像校验的加解密方法、设备及介质 |
CN110941861B (zh) * | 2019-12-16 | 2022-04-29 | 中国南方电网有限责任公司 | 文件防护方法、装置、计算机设备及介质 |
CN111125781B (zh) * | 2019-12-24 | 2020-12-01 | 腾讯科技(深圳)有限公司 | 一种文件签名方法、装置和文件签名验证方法、装置 |
CN111695987A (zh) * | 2020-06-15 | 2020-09-22 | 北京同邦卓益科技有限公司 | 客户注册的处理方法、装置、设备及存储介质 |
CN112822152B (zh) * | 2020-11-09 | 2023-07-04 | 腾讯科技(上海)有限公司 | 定向信息展示处理方法及相关设备 |
CN112637307B (zh) * | 2020-12-16 | 2023-07-11 | 平安消费金融有限公司 | 文件更新方法、系统、计算机设备及存储介质 |
CN112650534A (zh) * | 2020-12-24 | 2021-04-13 | 深圳Tcl新技术有限公司 | 应用字符资源同步方法、系统及计算机可读存储介质 |
CN114692161A (zh) * | 2020-12-30 | 2022-07-01 | 观致汽车有限公司 | 软件更新方法、车辆控制器、服务器和车辆 |
CN112866195B (zh) * | 2020-12-31 | 2022-09-16 | 深圳平安医疗健康科技服务有限公司 | 敏捷数据传输方法、装置、计算机设备及存储介质 |
CN112507328B (zh) * | 2021-01-29 | 2021-06-08 | 统信软件技术有限公司 | 一种文件签名方法、计算设备及存储介质 |
CN113595731A (zh) * | 2021-05-31 | 2021-11-02 | 作业帮教育科技(北京)有限公司 | 一种分享链接的防护方法、装置及计算机可读存储介质 |
CN113873482A (zh) * | 2021-08-27 | 2021-12-31 | 青岛中科英泰商用系统股份有限公司 | 测试Android系统对蓝牙模块兼容性的方法、系统、设备及介质 |
CN114338050A (zh) * | 2022-03-14 | 2022-04-12 | 麒麟软件有限公司 | 一种应用程序接口安全管控方法、系统及装置 |
CN115859337B (zh) * | 2023-02-14 | 2023-05-16 | 杭州大晚成信息科技有限公司 | 基于内核的防止设备破解方法、设备、服务器及介质 |
CN116910792A (zh) * | 2023-09-12 | 2023-10-20 | 武汉汉王数据技术有限公司 | 一种人工智能生成内容处理方法、系统、设备及存储介质 |
CN117972712B (zh) * | 2023-12-29 | 2024-07-02 | 北京辰光融信技术有限公司 | 固件更新方法、装置、计算机设备和计算机存储介质 |
CN117725572B (zh) * | 2024-02-07 | 2024-07-05 | 支付宝(杭州)信息技术有限公司 | 一种sdk完整性的校验方法、装置、介质及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102812473A (zh) * | 2010-02-11 | 2012-12-05 | 惠普发展公司,有限责任合伙企业 | 基于可执行程序身份的文件访问 |
CN104283860A (zh) * | 2013-07-10 | 2015-01-14 | 全联斯泰克科技有限公司 | 一种基于代码签名的elf文件鉴别方法和装置 |
CN105306434A (zh) * | 2015-09-11 | 2016-02-03 | 北京金山安全软件有限公司 | 程序文件校验方法及装置、服务器和终端 |
CN105787352A (zh) * | 2014-12-18 | 2016-07-20 | 中兴通讯股份有限公司 | 一种可执行模块的提供、加载方法及终端 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7805765B2 (en) * | 2004-12-28 | 2010-09-28 | Lenovo (Singapore) Pte Ltd. | Execution validation using header containing validation data |
-
2016
- 2016-08-26 CN CN201610737262.5A patent/CN107786504B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102812473A (zh) * | 2010-02-11 | 2012-12-05 | 惠普发展公司,有限责任合伙企业 | 基于可执行程序身份的文件访问 |
CN104283860A (zh) * | 2013-07-10 | 2015-01-14 | 全联斯泰克科技有限公司 | 一种基于代码签名的elf文件鉴别方法和装置 |
CN105787352A (zh) * | 2014-12-18 | 2016-07-20 | 中兴通讯股份有限公司 | 一种可执行模块的提供、加载方法及终端 |
CN105306434A (zh) * | 2015-09-11 | 2016-02-03 | 北京金山安全软件有限公司 | 程序文件校验方法及装置、服务器和终端 |
Also Published As
Publication number | Publication date |
---|---|
CN107786504A (zh) | 2018-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107786504B (zh) | Elf文件发布方法、elf文件校验方法、服务器及终端 | |
US12041165B2 (en) | Key updating method, apparatus, and system | |
CN110417543B (zh) | 一种数据加密方法、装置和存储介质 | |
US9965565B2 (en) | Methods and terminals for generating and reading 2D barcode and servers | |
CN107766747B (zh) | 校验应用程序安装包完整性的方法、移动终端及服务器 | |
CN106598584B (zh) | 一种处理资源文件的方法、装置和系统 | |
CN108280341B (zh) | 渠道号添加、安装包校验方法及装置 | |
CN112989430A (zh) | 完整性校验方法、装置、终端设备及验证服务器 | |
CN112865956B (zh) | 证书更新方法、装置、终端设备和服务器 | |
CN107103211B (zh) | Sdk发送、应用发布、应用运行方法及装置 | |
CN107154935B (zh) | 业务请求方法及装置 | |
WO2018166109A1 (zh) | 一种终端检测方法及终端 | |
WO2014000652A1 (zh) | 浏览器插件安装方法、装置及终端 | |
CN106599698B (zh) | 一种加密图片、解密图片的方法和装置 | |
US11902774B2 (en) | Method for starting vehicle and related device | |
CN103546887A (zh) | 一种应用软件传输方法、装置、终端及服务器 | |
CN107844318B (zh) | 一种操作系统的升级方法及移动终端和服务器 | |
CN104536782A (zh) | 引导内容展示方法、文件生成方法及装置 | |
CN108460251B (zh) | 运行应用程序的方法、装置及系统 | |
CN107465646B (zh) | 一种应用下载方法、系统及相关设备 | |
CN106708555B (zh) | 一种加载插件的方法和装置 | |
CN111259452A (zh) | 一种基于区块链的数据管理方法以及相关装置 | |
CN108737341B (zh) | 业务处理方法、终端及服务器 | |
CN107038414B (zh) | 一种指纹模板同步方法及设备 | |
CN105791253B (zh) | 一种获取网站的认证信息的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |