CN105306434A - 程序文件校验方法及装置、服务器和终端 - Google Patents

程序文件校验方法及装置、服务器和终端 Download PDF

Info

Publication number
CN105306434A
CN105306434A CN201510578850.4A CN201510578850A CN105306434A CN 105306434 A CN105306434 A CN 105306434A CN 201510578850 A CN201510578850 A CN 201510578850A CN 105306434 A CN105306434 A CN 105306434A
Authority
CN
China
Prior art keywords
cryptographic hash
terminal
file
server
verified
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.)
Pending
Application number
CN201510578850.4A
Other languages
English (en)
Inventor
秦皓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Internet Security Software Co Ltd
Original Assignee
Beijing Kingsoft Internet Security Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Internet Security Software Co Ltd filed Critical Beijing Kingsoft Internet Security Software Co Ltd
Priority to CN201510578850.4A priority Critical patent/CN105306434A/zh
Publication of CN105306434A publication Critical patent/CN105306434A/zh
Priority to PCT/CN2016/094628 priority patent/WO2017041606A1/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例提供了程序文件校验方法及装置、服务器和终端,应用于服务器的程序文件校验方法可以包括:在与终端建立通信连接后,获得应用程序包的版本号;获得针对于应用程序包的随机数;根据随机数和服务器自身预先存储的具有版本号的应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成第一哈希值;将随机数发送给终端,以使得终端根据随机数和终端本地的应用程序包中的预设待检验文件的文件内容,并利用预定哈希算法,生成第二哈希值;获得关于终端所生成的第二哈希值的相关信息;确定终端内的预设待校验文件的完整性校验结果。可见,通过本方案能够提高校验程序文件的完整性的准确率。

Description

程序文件校验方法及装置、服务器和终端
技术领域
本发明涉及文件检测技术领域,特别是涉及程序文件校验方法及装置、服务器和终端。
背景技术
由于应用于某些操作***的应用软件采用通用的编码语言,使得作为应用软件的载体的应用程序包中的某些文件很容易被攻击者反编译、修改,并重新打包发布,这样使得盗版软件横行,例如:适用于安卓***的应用软件主要采用Java语言编写,使得作为这类应用软件的载体的APK(AndroidPackage,安卓应用程序包)很容被攻击者反编译、修改,并重新打包发布。
而为了防止应用程序包的二次打包,需要进行应用程序包中的某些文件的完整性校验,即是否被修改过的校验。现有的程序文件校验方法为:在应用程序包中的某些文件中内置有一段代码,该段代码能够在应用程序包加载过程中校验这些文件的签名,如果签名正确,表明该应用程序包中的这些文件完整,则继续运行,否则退出程序。其中,所述的签名为对应用程序包中的这些文件的文件内容计算出的哈希值。
但是,由于现有的程序文件校验通过在本地执行代码,这样使得攻击者可以看到相关代码,并通过各种方式阻止代码的有效运行,这样导致完整性校验的准确率较低,其中,所述的阻止代码的有效运行具体指:校验结果均为签名正确,或者,跳过整个校验过程。
发明内容
本发明实施例的目的在于提供程序文件校验方法及装置、服务器和终端,以提高校验程序文件的完整性的准确率。具体技术方案如下:
第一方面,本发明实施例提供了一种程序文件校验方法,应用于服务器,其中,所述服务器为:用于为运行在终端内的承载于应用程序包的应用软件提供网络服务的服务器;所述方法包括:
在与所述终端建立通信连接后,获得所述应用程序包的版本号;
获得针对于所述应用程序包的随机数;
根据所述随机数和服务器自身预先存储的具有所述版本号的应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待检验文件的第一哈希值;
将所述随机数发送给所述终端,以使得所述终端在接收到所述随机数后,根据所述随机数和所述终端本地的所述应用程序包中的所述预设待检验文件的文件内容,并利用所述预定哈希算法,生成针对于所述预设待检验文件的第二哈希值;
获得关于所述终端所生成的所述第二哈希值的相关信息;
根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果。
可选的,所述获得关于所述终端所生成的所述第二哈希值的相关信息,包括:
向所述终端请求获得所述终端所生成的所述第二哈希值;
或者,
接收所述终端在生成所述第二哈希值后所上报的所述第二哈希值;
所述根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果,包括:
判断所获得的所述第二哈希值和所述第一哈希值是否相同,如果相同,确定所述终端内的所述预设待校验文件完整;否则,确定所述终端内的所述预设待校验文件不完整。
可选的,所述获得关于所述终端所生成的所述第二哈希值的相关信息,包括:
依次向所述终端请求获得所述第二哈希值的多个与预定数据位相关的数值;
所述根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果,包括:
依次判断所述第二哈希值的多个与预定数据位相关的数值和所述第一哈希值的与相应预定数据位相关的数值是否相同,如果判断结果均为是,确定所述终端内的所述预设待校验文件完整;否则,确定所述终端内的所述预设待校验文件不完整。
可选的,所述与预定数据位相关的数值,包括:
预定数据位上的数值;
或者,
对至少两个预定数据位上的数值进行数学运算所得的数值。
可选的,在确定出所述终端内的所述预设待校验文件不完整性时,所述方法还包括:
断开与所述终端之间的通信连接。
可选的,在确定出所述终端内的所述预设待校验文件不完整性时,所述方法还包括:
向终端推送提示消息,其中,所述提示消息用于提示所述预设待校验文件不完整;
或者,
向终端推送提示消息以及下载链接地址,其中,所述提示消息用于提示所述预设待校验文件不完整,所述下载链接地址为所述应用程序包的下载地址。
第二方面,本发明实施例提供了一种程序文件校验方法,应用于终端,所述终端为:用于运行承载于应用程序包的应用软件的终端;所述方法包括:
在与用于为所述应用软件提供网络服务的服务器建立通信连接后,接收所述服务器发送的针对于所述应用程序包的随机数,其中,所述随机数为:所述服务器在与所述终端建立通信连接后获得并发送的;
根据所述随机数和所述终端本地的所述应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待校验文件的第二哈希值;
向所述服务器发送所述第二哈希值的相关信息,以使得所述服务器获得关于所述第二哈希值的相关信息后,根据关于所述第二哈希值的相关信息和关于第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果,其中,所述第一哈希值为:所述服务器根据所述随机数和自身预先存储的、具有所述终端内的所述应用程序包的版本号的应用程序包中的预设待校验文件的文件内容,并利用所述预定哈希算法生成的。
可选的,所述向所述服务器发送所述第二哈希值的相关信息,包括:
在接收到所述服务器发送的关于所述第二哈希值的请求后,向所述服务器反馈所述第二哈希值;
或者,
在生成所述第二哈希值后,向所述服务器上报所述第二哈希值。
可选的,所述向所述服务器发送所述第二哈希值的相关信息,包括:
依次接收服务器发送的关于所述第二哈希值的多个与预定数据位相关的数值的请求;
在接收到服务器发送的关于所述第二哈希值的每一个与预定数据位相关的数值的请求后,向所述服务器反馈关于所述第二哈希值的相应与预定数据位相关的数值。
可选的,所述与预定数据位相关的数值,包括:
预定数据位上的数值;
或者,
对至少两个预定数据位上的数值进行数学运算所得的数值。
可选的,本发明实施例提供的一种程序文件校验方法,还包括:
接收所述服务器推送的提示消息,其中,所述提示消息用于提示所述预设待校验文件不完整;
或者,
接收服务器推送的提示消息以及下载链接地址,其中,所述提示消息用于提示所述预设待校验文件不完整,所述下载链接地址为所述应用程序包的下载地址。
第三方面,本发明实施例提供了一种程序文件校验装置,应用于服务器,其中,所述服务器为:用于为运行在终端内的承载于应用程序包的应用软件提供网络服务的服务器;所述装置包括:
版本号获得模块,用于在与所述终端建立通信连接后,获得所述应用程序包的版本号;
随机数获得模块,用于获得针对于所述应用程序包的随机数;
第一哈希值生成模块,用于根据所述随机数和服务器自身预先存储的具有所述版本号的应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待检验文件的第一哈希值;
随机数发送模块,用于将所述随机数发送给所述终端,以使得所述终端在接收到所述随机数后,根据所述随机数和所述终端本地的所述应用程序包中的所述预设待检验文件的文件内容,并利用所述预定哈希算法,生成针对于所述预设待检验文件的第二哈希值;
第二哈希值信息获得模块,用于获得关于所述终端所生成的所述第二哈希值的相关信息;
完整性校验模块,用于根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果。
可选的,所述第二哈希值信息获得模块,包括:
第一信息获得单元,用于向所述终端请求获得所述终端所生成的所述第二哈希值;
或者,
第二信息获得单元,用于接收所述终端在生成所述第二哈希值后所上报的所述第二哈希值;
所述完整性校验模块,包括:
第一完整性校验单元,用于判断所获得的所述第二哈希值和所述第一哈希值是否相同,如果相同,确定所述终端内的所述预设待校验文件完整;否则,确定所述终端内的所述预设待校验文件不完整。
可选的,所述第二哈希值信息获得模块,包括:
第三信息获得单元,用于依次向所述终端请求获得所述第二哈希值的多个与预定数据位相关的数值;
所述完整性校验模块,包括:
第二完整性校验单元,用于依次判断所述第二哈希值的多个与预定数据位相关的数值和所述第一哈希值的与相应预定数据位相关的数值是否相同,如果判断结果均为是,确定所述终端内的所述预设待校验文件完整;否则,确定所述终端内的所述预设待校验文件不完整。
可选的,所述与预定数据位相关的数值,包括:
预定数据位上的数值;
或者,
对至少两个预定数据位上的数值进行数学运算所得的数值。
可选的,本发明实施例提供的一种程序文件校验装置还包括:
连接断开模块,用于在确定出所述终端内的所述预设待校验文件不完整性时,断开与所述终端之间的通信连接。
可选的,本发明实施例提供的一种程序文件校验装置还包括:
第一信息发送模块,用于在确定出所述终端内的所述预设待校验文件不完整性时,向终端推送提示消息,其中,所述提示消息用于提示所述预设待校验文件不完整;
或者,
第二信息发送模块,用于在确定出所述终端内的所述预设待校验文件不完整性时,向终端推送提示消息以及下载链接地址,其中,所述提示消息用于提示所述预设待校验文件不完整,所述下载链接地址为所述应用程序包的下载地址。
第四方面,本发明实施例提供了一种程序文件校验装置,应用于终端,所述终端为:用于运行承载于应用程序包的应用软件的终端;所述装置包括:
随机数接收模块,用于在与用于为所述应用软件提供网络服务的服务器建立通信连接后,接收所述服务器发送的针对于所述应用程序包的随机数,其中,所述随机数为:所述服务器在与所述终端建立通信连接后获得并发送的;
第二哈希值生成模块,用于根据所述随机数和所述终端本地的所述应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待校验文件的第二哈希值;
第二哈希值信息发送模块,用于向所述服务器发送所述第二哈希值的相关信息,以使得所述服务器获得关于所述第二哈希值的相关信息后,根据关于所述第二哈希值的相关信息和关于第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果,其中,所述第一哈希值为:所述服务器根据所述随机数和自身预先存储的、具有所述终端内的所述应用程序包的版本号的应用程序包中的预设待校验文件的文件内容,并利用所述预定哈希算法生成的。
可选的,所述第二哈希值信息发送模块,包括:
第一信息发送单元,用于在接收到所述服务器发送的关于所述第二哈希值的请求后,向所述服务器反馈所述第二哈希值;
或者,
第二信息发送单元,用于在生成所述第二哈希值后,向所述服务器上报所述第二哈希值。
可选的,所述第二哈希值信息发送模块,包括:
数值请求获得单元,用于依次接收服务器发送的关于所述第二哈希值的多个与预定数据位相关的数值的请求;
第三信息发送单元,用于在接收到服务器发送的关于所述第二哈希值的每一个与预定数据位相关的数值的请求后,向所述服务器反馈关于所述第二哈希值的相应与预定数据位相关的数值。
可选的,所述与预定数据位相关的数值,包括:
预定数据位上的数值;
或者,
对至少两个预定数据位上的数值进行数学运算所得的数值。
可选的,本发明实施例提供的一种程序文件校验装置还包括:
第一消息接收单元,用于接收所述服务器推送的提示消息,其中,所述提示消息用于提示所述预设待校验文件不完整;
或者,
第二消息接收单元,用于接收服务器推送的提示消息以及下载链接地址,其中,所述提示消息用于提示所述预设待校验文件不完整,所述下载链接地址为所述应用程序包的下载地址。
第五方面,本发明实施例提供了一种服务器,所述服务器为:用于为运行在终端内的承载于应用程序包的应用软件提供网络服务的服务器,其中,所述服务器包括:
处理器、存储器、通信接口和总线;
所述处理器、所述存储器和所述通信接口通过所述总线连接并完成相互间的通信;
所述存储器存储可执行程序代码;
所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种程序文件校验方法;其中,一种程序文件校验方法包括:
在与所述终端建立通信连接后,获得所述应用程序包的版本号;
获得针对于所述应用程序包的随机数;
根据所述随机数和服务器自身预先存储的具有所述版本号的应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待检验文件的第一哈希值;
将所述随机数发送给所述终端,以使得所述终端在接收到所述随机数后,根据所述随机数和所述终端本地的所述应用程序包中的所述预设待检验文件的文件内容,并利用所述预定哈希算法,生成针对于所述预设待检验文件的第二哈希值;
获得关于所述终端所生成的所述第二哈希值的相关信息;
根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果。
第六方面,本发明实施例提供了一种终端,所述终端为:用于运行承载于应用程序包的应用软件的终端;其中,所述终端包括:处理器、存储器、通信接口和总线;
所述处理器、所述存储器和所述通信接口通过所述总线连接并完成相互间的通信;
所述存储器存储可执行程序代码;
所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种程序文件校验方法;其中,一种程序文件校验方法包括:
在与用于为所述应用软件提供网络服务的服务器建立通信连接后,接收所述服务器发送的针对于所述应用程序包的随机数,其中,所述随机数为:所述服务器在与所述终端建立通信连接后获得并发送的;
根据所述随机数和所述终端本地的所述应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待校验文件的第二哈希值;
向所述服务器发送所述第二哈希值的相关信息,以使得所述服务器获得关于所述第二哈希值的相关信息后,根据关于所述第二哈希值的相关信息和关于第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果,其中,所述第一哈希值为:所述服务器根据所述随机数和自身预先存储的、具有所述终端内的所述应用程序包的版本号的应用程序包中的预设待校验文件的文件内容,并利用所述预定哈希算法生成的。
本发明实施例中,在程序文件校验时,通过服务器来完成校验,避免了攻击者对完整性校验代码的更改,并且,计算哈希值时在预设待校验文件的基础上增加随机数,提高了哈希值的不确定性,降低了哈希值被攻击者穷举出的风险,因此,通过本方案能够提高校验程序文件的完整性的准确率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例从服务器角度所提供的一种程序文件校验方法的流程图;
图2为本发明实施例从服务器角度所提供的一种程序文件校验方法的另一流程图;
图3为本发明实施例从服务器角度所提供的一种程序文件校验方法的另一流程图;
图4为本发明实施例从服务器角度所提供的一种程序文件校验方法的另一流程图;
图5为本发明实施例从终端角度所提供的一种程序文件校验方法的流程图;
图6为本发明实施例从终端角度所提供的一种程序文件校验方法的另一流程图;
图7为本发明实施例从终端角度所提供的一种程序文件校验方法的另一流程图;
图8为本发明实施例从终端角度所提供的一种程序文件校验方法的另一流程图;
图9为本发明实施例从服务器角度所提供的一种程序文件校验装置的结构示意图;
图10为本发明实施例从终端角度所提供的一种程序文件校验装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,为了提高校验程序文件的完整性的准确率,从服务器的角度,本发明实施例提供了一种程序文件校验方法,其中,该服务器为:用于为运行在终端内的承载于应用程序包的应用软件提供网络服务的服务器。
其中,该应用程序包可以为适用于安卓操作***的文件,当然并不局限于此,例如,该应用程序包也可以为适用于IOS操作***(其是由苹果公司为iPhone开发的操作***)的文件,等等。另外,本发明实施例所指的应用程序包为:所承载的应用软件需要服务器提供网络服务的文件。并且,应用程序包中的预设待校验文件可以为应用程序包中的部分文件,也可以为全部文件。
如图1所示,本实施例所提供的一种程序文件校验方法,可以包括如下步骤:
S101,在与终端建立通信连接后,获得应用程序包的版本号;
其中,在服务器与终端建立通信连接后,可以开启程序文件的完整性校验过程,具体的,服务器可以首先获得应用程序包的版本号,进而利用该版本号执行后续的流程。
可以理解的是,在与终端建立通信连接后,服务器可以通过现有技术获得应用程序包文件的版本号。其中,需要强调的是,可以在与终端每次建立通信连接后执行程序文件校验过程,当然,在实际应用中,也可以不在每次建立通信连接后都执行程序文件校验过程,而是在某几次建立通信连接后执行程序文件校验过程,或者,在某些时段内建立通信连接后执行程序文件校验过程,等等,这都是合理的。
S102,获得针对于该应用程序包的随机数;
在开启程序文件校验过程后,可以获得针对于该应用程序包的随机数,进而利用该随机数执行后续的处理流程。
其中,所谓获得针对于该应用程序包的随机数,具体可以包括:通过预设随机数生成算法来生成针对于该应用程序包的随机数,或者,从预先构建的随机数集合中随机选择一个随机数作为针对于该应用程序包的随机数。可以理解的是,所述预设随机数生成算法可以为现有技术中的随机数生成算法,也可以为自行设计的随机数生成算法,并且,具体采用何种随机数生成算法可以根据实际情况进行选择,在此不做限定。
需要说明的是,在实际应用中,所述获得应用程序包的版本号的步骤和所述获得针对于该应用程序包的随机数的步骤并不存在严格的执行顺序,例如:可以同时执行所述获得应用程序包的版本号的步骤和所述获得针对于该应用程序包的随机数的步骤,也可以先执行所述获得应用程序包的版本号的步骤再执行所述获得针对于该应用程序包的随机数的步骤,当然,也可以为先执行所述获得针对于该应用程序包的随机数的步骤再执行所述获得应用程序包的版本号的步骤。
S103,根据该随机数和服务器自身预先存储的具有该版本号的应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于该预设待校验文件的第一哈希值;
在获得针对于该应用程序包的随机数和该应用程序包的版本号后,为了对终端内的应用程序包中的预设待校验文件进行关于完整性的校验,可以根据该随机数和服务器自身预先存储的具有该版本号的应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于该预设待校验文件的第一哈希值。其中,该预定哈希算法可以为现有的哈希算法,也可以为自行设计的哈希算法,这都是合理的。
其中,该服务器自身预先存储有该款应用软件的具有不同版本号的应用程序包,而在生成针对于该预设待校验文件的第一哈希值时,可以利用具有所获得的该版本号的应用程序包中的预设待校验文件的文件内容。
S104,将该随机数发送给该终端,以使得该终端在接收到该随机数后,根据该随机数和该终端本地的该应用程序包中的预设待校验文件的文件内容,并利用该预定哈希算法,生成针对于该预设待校验文件的第二哈希值;
其中,在获得针对于该应用程序包的随机数后,可以将该随机数发送给该终端;相应的,该终端在接收到该随机数后,可以根据该随机数和该终端本地的该应用程序包中预设待校验文件的文件内容,并利用该预定哈希算法,生成针对于该预设待校验文件的第二哈希值。其中,终端生成第二哈希值所利用的哈希值算法和服务器生成第一哈希值所利用的哈希算法相同,以保证第一哈希值和第二哈希值具有可比性。
可以理解的是,由于服务器存储的具有所获得的该版本号的应用程序包中的预设待校验文件为完整的文件,且生成第一哈希值时利用具有所获得的该版本号的应用程序包中的预设待校验文件的文件内容和随机数,因此,如果终端内的该应用程序包中的预设待校验文件为完整的文件,则该终端生成的第二哈希值与服务器所生成的第一哈希值必然相同,而如果终端内的该应用程序包中的预设待校验文件为被修改过的文件,即不完整的文件,则该终端生成的第二哈希值与服务器所生成的第一哈希值必然不同。
其中,所述将该随机数发送给该终端的步骤必然在所述获得针对于该应用程序包的随机数的步骤之后,所述生成针对于该预设待校验文件的第一哈希值的步骤必然在所述获得针对于该应用程序包的随机数的步骤之后,但是,所述将该随机数发送给该终端的步骤和所述生成针对于该预设待校验文件的第一哈希值的步骤并不存在严格的执行顺序,例如:可以同时执行所述将该随机数发送给该终端的步骤和所述生成针对于该预设待校验文件的第一哈希值的步骤,也可以先执行所述生成针对于该预设待校验文件的第一哈希值的步骤再执行所述将该随机数发送给该终端的步骤,当然,也可以先执行所述将该随机数发送给该终端的步骤再执行所述生成针对于该预设待校验文件的第一哈希值的步骤,这都是合理的。
S105,获得关于该终端所生成的该第二哈希值的相关信息;
其中,由于第一哈希值和第二哈希值构建时均利用了服务器所生成的随机数和具有同一版本号的该应用程序包中的预设待校验文件,因此,在所利用的哈希算法相同的前提下,如果终端内的应用程序包中的预设待校验文件完整(即未被更改),则第一哈希值和第二哈希值必然相同。因此,为了实现完整性校验,服务器在将该随机数发送给该终端后,可以获得关于该终端所生成的所述第二哈希值的相关信息,进而根据关于该第二哈希值的相关信息和关于该第一哈希值的相关信息,确定该终端内的预设待校验文件的完整性校验结果。
其中,获得关于该终端所生成的该第二哈希值的相关信息的具体实现方式存在多种,为了清楚起见,后续对获得关于该终端所生成的该第二哈希值的相关信息的具体实现方式进行举例介绍。
S106,根据关于该第二哈希值的相关信息和关于该第一哈希值的相关信息,确定该终端内的该预设待校验文件的完整性校验结果。
在获得关于该终端所生成的该第二哈希值的相关信息后,可以根据关于该第二哈希值的相关信息和关于该第一哈希值的相关信息,确定该终端内的该预设待校验文件的完整性校验结果,其中,该完整性校验结果可以包括:该预设待校验文件完整或该预设待校验文件不完整。
可以理解的是,根据关于该第二哈希值的相关信息和关于该第一哈希值的相关信息来确定该终端内的该预设待校验文件的完整性校验结果的具体实现方式基于获得关于该终端所生成的该第二哈希值的相关信息的具体实现方式来确定,为了清楚起见,后续结合对获得关于该终端所生成的该第二哈希值的相关信息的具体实现方式的举例介绍,来举例介绍根据关于该第二哈希值的相关信息和关于该第一哈希值的相关信息来确定该终端内的该预设待校验文件的完整性校验结果的具体实现方式。
本发明实施例中,在程序文件校验时,通过服务器来完成校验,避免了攻击者对完整性校验代码的更改,并且,计算哈希值时在预设待校验文件的基础上增加随机数,提高了哈希值的不确定性,降低了哈希值被攻击者穷举出的风险,因此,通过本方案能够提高校验程序文件的完整性的准确率。
可以理解的,在程序文件校验过程中,可以获得终端所生成的完整的第二哈希值,以使得利用该第二哈希值和第一哈希值来完成终端内的所述预设待校验文件的完整性校验结果的确定。基于获得终端所生成的完整的第二哈希值的思想,在一种实现方式中,参见图2,与前述的S101-S106所构成的实施例相比,获得关于该终端所生成的该第二哈希值的相关信息(S105),可以包括:
S1051,向该终端请求获得该终端所生成的该第二哈希值;
相应的,参见图2,与前述的S101-S106所构成的实施例相比,根据关于该第二哈希值的相关信息和关于该第一哈希值的相关信息,确定该终端内的该预设待校验文件的完整性校验结果(S106),可以包括:
S1061,判断所获得的该第二哈希值和该第一哈希值是否相同,如果相同,执行S1062,如果不相同,执行S1063;
S1062,确定该终端内的该预设待校验文件完整;
S1063,确定该终端内的该预设待校验文件不完整。
其中,在该种实现方式中,服务器可以主动向该终端请求获得该终端所生成的该第二哈希值,而终端在接收到服务器关于第二哈希值的请求后,终端可以将所生成的第二哈希值反馈给服务器,进而,服务器可以判断所获得的该第二哈希值和该第一哈希值是否相同,如果相同,确定该终端内的该预设待校验文件完整,如果不相同,确定该终端内的该预设待校验文件不完整。
基于获得终端所生成的完整的第二哈希值的思想,在另一种实现方式中,参见图3,与前述的S101-S106所构成的实施例相比,获得关于该终端所生成的该第二哈希值的相关信息(S105),可以包括:
S1052,接收该终端在生成该第二哈希值后所上报的该第二哈希值;
相应的,参见图3,与前述的S101-S106所构成的实施例相比,根据关于该第二哈希值的相关信息和关于该第一哈希值的相关信息,确定该终端内的该预设待校验文件的完整性校验结果(S106),可以包括:
S1064,判断所获得的该第二哈希值和该第一哈希值是否相同,如果相同,执行S1065,如果不相同,执行S1066;
S1065,确定该终端内的该预设待校验文件完整;
S1066,确定该终端内的该预设待校验文件不完整。
其中,在该种实现方式中,终端在生成第二哈希值后,可以主动向服务器上报该第二哈希值,而服务器接收到该终端在生成该第二哈希值后所上报的该第二哈希值后,可以判断所获得的该第二哈希值和该第一哈希值是否相同,如果相同,确定该终端内的该预设待校验文件完整,如果不相同,确定该终端内的该预设待校验文件不完整。
进一步的,考虑到网络安全性,可以不向终端请求完整的第二哈希值,而是通过挑战应答方式,多次向终端请求获得该第二哈希值的与预定数据位相关的数值。基于获得该第二哈希值的与预定数据位相关的数值的思想,在另一种实现方式中,参见图4,与前述的S101-S106所构成的实施例相比,获得关于所述终端所生成的所述第二哈希值的相关信息(S105),可以包括:
S1053,依次向该终端请求获得该第二哈希值的多个与预定数据位相关的数值;
相应的,参见图4,与前述的S101-S106所构成的实施例相比,根据关于该第二哈希值的相关信息和关于该第一哈希值的相关信息,确定该终端内的该预设待校验文件的完整性校验结果(S106),可以包括:
S1067,依次判断该第二哈希值的多个与预定数据位相关的数值和该第一哈希值的与相应预定数据位相关的数值是否相同,如果判断结果均为是,执行S1068,否则,执行S1069;
S1068,确定该终端内的该预设待校验文件完整;
S1069,确定该终端内的该预设待校验文件不完整。
其中,在该种具体实现方式中,与预定数据位相关的数值可以包括:预定数据位上的数值;或者,对至少两个预定数据位上的数值进行数学运算所得的数值,举例而言,依次向该终端请求获得该第二哈希值的第一位上的数值、第三位上的数值和第四位上的数值,进而,可以依次判断第二哈希值的第一位上的数值是否与第一哈希值的第一位上的数值相同,第二哈希值的第三位上的数值是否与第一哈希值的第三位上的数值相同,第二哈希值的第四位上的数值是否与第一哈希值的第四位上的数值相同,在判断结果均为相同时,可以确定该终端内的该预设待校验文件完整,否则,确定该终端内的预设待校验文件不完整;又如:依次向该终端请求获得该第二哈希值的第一位上的数值、第一位上的数值和第三位上的数值之和、第四位上的数值,进而,可以依次判断第二哈希值的第一位上的数值是否与第一哈希值的第一位上的数值相同,第二哈希值的第一位上的数值和第三位上的数值之和是否与第一哈希值的第一位上的数值和第三位上的数值之和相同,第二哈希值的第四位上的数值是否与第一哈希值的第四位上的数值相同,在判断结果均为相同时,可以确定该终端内的预设待校验文件完整,否则,确定该终端内的预设待校验文件不完整。
需求强调的是,上述的S105和S106的具体实现方式仅仅作为示例,并不应该构成对本发明实施例的限定。
更进一步的,在确定出该终端内的该预设待校验文件为完整时,可以继续保持与该终端的通信连接,继续为该终端提供网络服务,即为该终端内的承载于该应用程序包的应用软件提供网络服务;而为了有效打击盗版软件,在确定出该终端内的该预设待校验文件为不完整时,本发明实施例所提供的方法还可以包括:断开与该终端之间的通信连接,即不再为该终端内的承载于该应用程序包的应用软件提供网络服务。
当然,为了进一步提高用户的使用体验,在确定出该终端内的该预设待校验文件为不完整时,本发明实施例所提供的方法,还可以包括:
向终端推送提示消息,其中,该提示消息用于提示该预设待校验文件不完整;
或者,
向终端推送提示消息以及下载链接地址,其中,该提示消息用于提示该预设待校验文件不完整,该下载链接地址为该应用程序包的下载地址。
其中,可以仅仅通过该提示信息提示用户该预设待校验文件不完整,从而用户可以自行重新搜索包括完整的预设待校验文件的应用程序包并进行下载,当然,在推送该提示信息后,可以断开与该终端的通信连接;进一步的,为了提高用户的使用体验,可以同时向终端推送提示消息以及下载链接地址,以在提示用户该预设待校验文件不完整的同时,为用户提供下载地址,从而方便用户重新下载包括完整的预设待校验文件的应用程序包。
其次,为了提高校验程序文件的完整性的准确率,从终端的角度,本发明实施例提供了一种程序文件校验方法。其中,该终端为:用于运行承载于应用程序包的应用软件的终端。其中,在实际应用中,该终端可以为智能手机、平板电脑、笔记本电脑等。并且,执行本实施例所提供的一种程序文件校验方法的功能软件为内置于该应用程序包的功能模块。
如图5所示,本实施例所提供的一种程序文件校验方法,可以包括:
S201,在与用于为该应用软件提供网络服务的服务器建立通信连接后,接收该服务器发送的针对于该应用程序包的随机数;
其中,该随机数为:该服务器在与终端建立通信连接后获得并发送的。
其中,由于服务器会在与该终端建立通信连接后,开启该程序文件校验过程,进而获得并向该终端发送针对于该应用程序包的随机数,因此,该终端可以在与该服务器建立通信连接后,接收该服务器发送的针对于该应用程序包的随机数,进而执行后续的步骤。
S202,根据该随机数和该终端本地的该应用程序包中的预设待检验文件的文件内容,并利用预定哈希算法,生成针对于该预设待校验文件的第二哈希值;
其中,该终端在接收到该随机数后,为了实现完整性校验,根据该随机数和该终端本地的该应用程序包中的预设待检验文件的文件内容,并利用预定哈希算法,生成针对于该预设待校验文件的第二哈希值。其中,该预定哈希算法可以为现有的哈希算法,也可以为自行设计的哈希算法,这都是合理的。
S203,向该服务器发送该第二哈希值的相关信息。
其中,该第一哈希值为:服务器根据该随机数和自身预先存储的、具有该终端内的该应用程序包的版本号的应用程序包中的预设待校验文件的文件内容,并利用该预定哈希算法生成的。
其中,为了实现程序文件的完整性校验,终端生成针对于该预设待校验文件的第二哈希值后,可以向该服务器发送该第二哈希值的相关信息;进而,该服务器获得关于该第二哈希值的相关信息后,根据关于该第二哈希值的相关信息和关于第一哈希值的相关信息,确定该终端内的该预设待校验文件的完整性校验结果。并且,向该服务器发送该第二哈希值的相关信息的具体实现方式存在多种,为了清楚起见,后续进行举例介绍。
需要说明的是,终端生成第二哈希值所利用的哈希值算法和服务器生成第一哈希值所利用的哈希算法相同,以保证第一哈希值和第二哈希值具有可比性。
本发明实施例中,在程序文件校验时,通过服务器来完成校验,避免了攻击者对完整性校验代码的更改,并且,计算哈希值时在预设待校验文件的基础上增加随机数,提高了哈希值的不确定性,降低了哈希值被攻击者穷举出的风险,因此,通过本方案能够提高校验程序文件的完整性的准确率。
可以理解的,在程序文件校验过程中,服务器可以获得终端所生成的完整的第二哈希值,以使得利用该第二哈希值和第一哈希值来完成终端内的该预设待校验文件的完整性校验结果的确定。基于服务器获得终端所生成的完整的第二哈希值的思想,在一种实现方式中,参见图6,与前述的S201-S203所构成的实施例相比,所述向该服务器发送该第二哈希值的相关信息(S203),可以包括:
S2031,在接收到该服务器发送的关于该第二哈希值的请求后,向该服务器反馈该第二哈希值。
其中,在该种具体实现方式中,服务器向该终端请求获得该终端所生成的该第二哈希值后,判断所获得的该第二哈希值和该第一哈希值是否相同,如果相同,确定该终端内的该预设待校验文件完整,如果不相同,确定该终端内的该预设待校验文件不完整。
基于服务器获得终端所生成的完整的第二哈希值的思想,在一种实现方式中,参见图7,与前述的S201-S203所构成的实施例相比,所述向该服务器发送该第二哈希值的相关信息(S203),可以包括:
S2032,在生成该第二哈希值后,向该服务器上报该第二哈希值。
其中,在该种具体实现方式中,服务器接收该终端在生成该第二哈希值后所上报的该第二哈希值后,判断所获得的该第二哈希值和该第一哈希值是否相同,如果相同,确定该终端内的该预设待校验文件完整,如果不相同,确定该终端内的该预设待校验文件不完整。
进一步的,考虑到网络安全性,服务器可以不向终端请求完整的第二哈希值,而是通过挑战应答方式,多次向终端请求获得该第二哈希值的与预定数据位相关的数值。基于获得该第二哈希值的与预定数据位相关的数值的思想,在另一种实现方式中,参见图8,所述向该服务器发送该第二哈希值的相关信息(S203),可以包括:
S2033,依次接收服务器发送的关于该第二哈希值的多个与预定数据位相关的数值的请求;
S2034,在接收到服务器发送的关于该第二哈希值的每一个与预定数据位相关的数值的请求后,向该服务器反馈关于该第二哈希值的相应与预定数据位相关的数值。
其中,所述与预定数据位相关的数值,可以包括:预定数据位上的数值;或者,对至少两个预定数据位上的数值进行数学运算所得的数值。
在该种实现方式中,服务器依次向该终端请求获得该第二哈希值的多个与预定数据位相关的数值后,服务器依次判断该第二哈希值的多个与预定数据位相关的数值和该第一哈希值的与相应预定数据位相关的数值是否相同,如果判断结果均为是,确定该终端内的该预设待校验文件完整,否则,确定该终端内的该预设待校验文件不完整。
更进一步的,在服务器确定出该终端内的该预设待校验文件为完整时,可以继续保持与该终端的通信连接,继续为该终端提供网络服务,即为该终端内的承载于该应用程序包的应用软件提供网络服务;而为了有效打击盗版软件,在服务器确定出该终端内的该预设待校验文件为不完整时,服务器可以断开与该终端之间的通信连接,即不再为该终端内的承载于该应用程序包的应用软件提供网络服务。
当然,为了进一步提高用户的使用体验,在服务器确定出该终端内的该预设待校验文件为不完整时,服务器可以向终端推送提示消息,其中,该提示消息用于提示该预设待校验文件不完整;从而,终端可以接收该服务器推送的提示消息,其中,该提示消息用于提示该预设待校验文件不完整。另外,在服务器确定出该终端内的该预设待校验文件为不完整时,还可以向终端推送提示消息以及下载链接地址,其中,该提示消息用于提示该预设待校验文件不完整,该下载链接地址为该应用程序包的下载地址;相应的,该终端可以接收服务器推送的提示消息以及下载链接地址,其中,该提示消息用于提示该预设待校验文件不完整,该下载链接地址为该应用程序包的下载地址。
相应于上述从服务器角度所提供的一种程序文件校验装置,本发明实施例还提供了一种程序文件校验装置,应用于服务器,其中,所述服务器为:用于为运行在终端内的承载于应用程序包的应用软件提供网络服务的服务器;如图9所示,所述装置可以包括:
版本号获得模块310,用于在与所述终端建立通信连接后,获得所述应用程序包的版本号;
随机数获得模块320,用于获得针对于所述应用程序包的随机数;
第一哈希值生成模块330,用于根据所述随机数和服务器自身预先存储的具有所述版本号的应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待检验文件的第一哈希值;
随机数发送模块340,用于将所述随机数发送给所述终端,以使得所述终端在接收到所述随机数后,根据所述随机数和所述终端本地的所述应用程序包中的所述预设待检验文件的文件内容,并利用所述预定哈希算法,生成针对于所述预设待检验文件的第二哈希值;
第二哈希值信息获得模块350,用于获得关于所述终端所生成的所述第二哈希值的相关信息;
完整性校验模块360,用于根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果。
本发明实施例中,在程序文件校验时,通过服务器来完成校验,避免了攻击者对完整性校验代码的更改,并且,计算哈希值时在预设待校验文件的基础上增加随机数,提高了哈希值的不确定性,降低了哈希值被攻击者穷举出的风险,因此,通过本方案能够提高校验程序文件的完整性的准确率。
具体的,在一种实现方式中,所述第二哈希值信息获得模块350,可以包括:
第一信息获得单元,用于向所述终端请求获得所述终端所生成的所述第二哈希值;
或者,
第二信息获得单元,用于接收所述终端在生成所述第二哈希值后所上报的所述第二哈希值;
所述完整性校验模块360,可以包括:
第一完整性校验单元,用于判断所获得的所述第二哈希值和所述第一哈希值是否相同,如果相同,确定所述终端内的所述预设待校验文件完整;否则,确定所述终端内的所述预设待校验文件不完整。
具体的,在另一种实现方式中,所述第二哈希值信息获得模块350,可以包括:
第三信息获得单元,用于依次向所述终端请求获得所述第二哈希值的多个与预定数据位相关的数值;
所述完整性校验模块360,可以包括:
第二完整性校验单元,用于依次判断所述第二哈希值的多个与预定数据位相关的数值和所述第一哈希值的与相应预定数据位相关的数值是否相同,如果判断结果均为是,确定所述终端内的所述预设待校验文件完整;否则,确定所述终端内的所述预设待校验文件不完整。
具体的,所述与预定数据位相关的数值,可以包括:
预定数据位上的数值;
或者,
对至少两个预定数据位上的数值进行数学运算所得的数值。
更进一步的,本实施例所提供的一种程序文件校验装置还可以包括:
连接断开模块,用于在确定出所述终端内的所述预设待校验文件不完整性时,断开与所述终端之间的通信连接。
更进一步的,本实施例所提供的一种程序文件校验装置还可以包括:
第一信息发送模块,用于在确定出所述终端内的所述预设待校验文件不完整性时,向终端推送提示消息,其中,所述提示消息用于提示所述预设待校验文件不完整;
或者,
第二信息发送模块,用于在确定出所述终端内的所述预设待校验文件不完整性时,向终端推送提示消息以及下载链接地址,其中,所述提示消息用于提示所述预设待校验文件不完整,所述下载链接地址为所述应用程序包的下载地址。
相应于上述从终端角度所提供的一种程序文件校验装置,本发明实施例还提供了一种程序文件校验装置,应用于终端,所述终端为:用于运行承载于应用程序包的应用软件的终端;如图10所示,所述装置可以包括:
随机数接收模块410,用于在与用于为所述应用软件提供网络服务的服务器建立通信连接后,接收所述服务器发送的针对于所述应用程序包的随机数,其中,所述随机数为:所述服务器在与所述终端建立通信连接后获得并发送的;
第二哈希值生成模块420,用于根据所述随机数和所述终端本地的所述应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待校验文件的第二哈希值;
第二哈希值信息发送模块430,用于向所述服务器发送所述第二哈希值的相关信息,以使得所述服务器获得关于所述第二哈希值的相关信息后,根据关于所述第二哈希值的相关信息和关于第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果,其中,所述第一哈希值为:所述服务器根据所述随机数和自身预先存储的、具有所述终端内的所述应用程序包的版本号的应用程序包中的预设待校验文件的文件内容,并利用所述预定哈希算法生成的。
本发明实施例中,在程序文件校验时,通过服务器来完成校验,避免了攻击者对完整性校验代码的更改,并且,计算哈希值时在预设待校验文件的基础上增加随机数,提高了哈希值的不确定性,降低了哈希值被攻击者穷举出的风险,因此,通过本方案能够提高校验程序文件的完整性的准确率。
具体的,在一种实现方式中,所述第二哈希值信息发送模块430,可以包括:
第一信息发送单元,用于在接收到所述服务器发送的关于所述第二哈希值的请求后,向所述服务器反馈所述第二哈希值;
或者,
第二信息发送单元,用于在生成所述第二哈希值后,向所述服务器上报所述第二哈希值。
具体的,在另一种具体实现方式中,所述第二哈希值信息发送模块430,可以包括:
数值请求获得单元,用于依次接收服务器发送的关于所述第二哈希值的多个与预定数据位相关的数值的请求;
第三信息发送单元,用于在接收到服务器发送的关于所述第二哈希值的每一个与预定数据位相关的数值的请求后,向所述服务器反馈关于所述第二哈希值的相应与预定数据位相关的数值。
具体的,所述与预定数据位相关的数值,可以包括:
预定数据位上的数值;
或者,
对至少两个预定数据位上的数值进行数学运算所得的数值。
更进一步的,本实施例所提供的一种程序文件校验装置,还包括:
第一消息接收单元,用于接收所述服务器推送的提示消息,其中,所述提示消息用于提示所述预设待校验文件不完整;
或者,
第二消息接收单元,用于接收服务器推送的提示消息以及下载链接地址,其中,所述提示消息用于提示所述预设待校验文件不完整,所述下载链接地址为所述应用程序包的下载地址。
另外,本发明实施例还提供了一种服务器,所述服务器为:用于为运行在终端内的承载于应用程序包的应用软件提供网络服务的服务器,其中,所述服务器包括:
处理器、存储器、通信接口和总线;
所述处理器、所述存储器和所述通信接口通过所述总线连接并完成相互间的通信;
所述存储器存储可执行程序代码;
所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种程序文件校验方法;其中,一种程序文件校验方法包括:
在与所述终端建立通信连接后,获得所述应用程序包的版本号;
获得针对于所述应用程序包的随机数;
根据所述随机数和服务器自身预先存储的具有所述版本号的应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待检验文件的第一哈希值;
将所述随机数发送给所述终端,以使得所述终端在接收到所述随机数后,根据所述随机数和所述终端本地的所述应用程序包中的所述预设待检验文件的文件内容,并利用所述预定哈希算法,生成针对于所述预设待检验文件的第二哈希值;
获得关于所述终端所生成的所述第二哈希值的相关信息;
根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果。
另外,本发明实施例还提供了一种终端,所述终端为:用于运行承载于应用程序包的应用软件的终端;其中,所述终端包括:处理器、存储器、通信接口和总线;
所述处理器、所述存储器和所述通信接口通过所述总线连接并完成相互间的通信;
所述存储器存储可执行程序代码;
所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种程序文件校验方法;其中,一种程序文件校验方法包括:
在与用于为所述应用软件提供网络服务的服务器建立通信连接后,接收所述服务器发送的针对于所述应用程序包的随机数,其中,所述随机数为:所述服务器在与所述终端建立通信连接后获得并发送的;
根据所述随机数和所述终端本地的所述应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待校验文件的第二哈希值;
向所述服务器发送所述第二哈希值的相关信息,以使得所述服务器获得关于所述第二哈希值的相关信息后,根据关于所述第二哈希值的相关信息和关于第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果,其中,所述第一哈希值为:所述服务器根据所述随机数和自身预先存储的、具有所述终端内的所述应用程序包的版本号的应用程序包中的预设待校验文件的文件内容,并利用所述预定哈希算法生成的。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种程序文件校验方法,其特征在于,应用于服务器,其中,所述服务器为:用于为运行在终端内的承载于应用程序包的应用软件提供网络服务的服务器;所述方法包括:
在与所述终端建立通信连接后,获得所述应用程序包的版本号;
获得针对于所述应用程序包的随机数;
根据所述随机数和服务器自身预先存储的具有所述版本号的应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待检验文件的第一哈希值;
将所述随机数发送给所述终端,以使得所述终端在接收到所述随机数后,根据所述随机数和所述终端本地的所述应用程序包中的所述预设待检验文件的文件内容,并利用所述预定哈希算法,生成针对于所述预设待检验文件的第二哈希值;
获得关于所述终端所生成的所述第二哈希值的相关信息;
根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果。
2.根据权利要求1所述的方法,其特征在于,所述获得关于所述终端所生成的所述第二哈希值的相关信息,包括:
向所述终端请求获得所述终端所生成的所述第二哈希值;
或者,
接收所述终端在生成所述第二哈希值后所上报的所述第二哈希值;
所述根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果,包括:
判断所获得的所述第二哈希值和所述第一哈希值是否相同,如果相同,确定所述终端内的所述预设待校验文件完整;否则,确定所述终端内的所述预设待校验文件不完整。
3.根据权利要求1所述的方法,其特征在于,所述获得关于所述终端所生成的所述第二哈希值的相关信息,包括:
依次向所述终端请求获得所述第二哈希值的多个与预定数据位相关的数值;
所述根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果,包括:
依次判断所述第二哈希值的多个与预定数据位相关的数值和所述第一哈希值的与相应预定数据位相关的数值是否相同,如果判断结果均为是,确定所述终端内的所述预设待校验文件完整;否则,确定所述终端内的所述预设待校验文件不完整。
4.根据权利要求3所述的方法,其特征在于,所述与预定数据位相关的数值,包括:
预定数据位上的数值;
或者,
对至少两个预定数据位上的数值进行数学运算所得的数值。
5.根据权利要求1-4任一项所述的方法,其特征在于,在确定出所述终端内的所述预设待校验文件不完整性时,所述方法还包括:
断开与所述终端之间的通信连接。
6.一种程序文件校验方法,其特征在于,应用于终端,所述终端为:用于运行承载于应用程序包的应用软件的终端;所述方法包括:
在与用于为所述应用软件提供网络服务的服务器建立通信连接后,接收所述服务器发送的针对于所述应用程序包的随机数,其中,所述随机数为:所述服务器在与所述终端建立通信连接后获得并发送的;
根据所述随机数和所述终端本地的所述应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待校验文件的第二哈希值;
向所述服务器发送所述第二哈希值的相关信息,以使得所述服务器获得关于所述第二哈希值的相关信息后,根据关于所述第二哈希值的相关信息和关于第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果,其中,所述第一哈希值为:所述服务器根据所述随机数和自身预先存储的、具有所述终端内的所述应用程序包的版本号的应用程序包中的预设待校验文件的文件内容,并利用所述预定哈希算法生成的。
7.一种程序文件校验装置,其特征在于,应用于服务器,其中,所述服务器为:用于为运行在终端内的承载于应用程序包的应用软件提供网络服务的服务器;所述装置包括:
版本号获得模块,用于在与所述终端建立通信连接后,获得所述应用程序包的版本号;
随机数获得模块,用于获得针对于所述应用程序包的随机数;
第一哈希值生成模块,用于根据所述随机数和服务器自身预先存储的具有所述版本号的应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待检验文件的第一哈希值;
随机数发送模块,用于将所述随机数发送给所述终端,以使得所述终端在接收到所述随机数后,根据所述随机数和所述终端本地的所述应用程序包中的所述预设待检验文件的文件内容,并利用所述预定哈希算法,生成针对于所述预设待检验文件的第二哈希值;
第二哈希值信息获得模块,用于获得关于所述终端所生成的所述第二哈希值的相关信息;
完整性校验模块,用于根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果。
8.一种程序文件校验装置,其特征在于,应用于终端,所述终端为:用于运行承载于应用程序包的应用软件的终端;所述装置包括:
随机数接收模块,用于在与用于为所述应用软件提供网络服务的服务器建立通信连接后,接收所述服务器发送的针对于所述应用程序包的随机数,其中,所述随机数为:所述服务器在与所述终端建立通信连接后获得并发送的;
第二哈希值生成模块,用于根据所述随机数和所述终端本地的所述应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待校验文件的第二哈希值;
第二哈希值信息发送模块,用于向所述服务器发送所述第二哈希值的相关信息,以使得所述服务器获得关于所述第二哈希值的相关信息后,根据关于所述第二哈希值的相关信息和关于第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果,其中,所述第一哈希值为:所述服务器根据所述随机数和自身预先存储的、具有所述终端内的所述应用程序包的版本号的应用程序包中的预设待校验文件的文件内容,并利用所述预定哈希算法生成的。
9.一种服务器,其特征在于,所述服务器为:用于为运行在终端内的承载于应用程序包的应用软件提供网络服务的服务器,其中,所述服务器包括:
处理器、存储器、通信接口和总线;
所述处理器、所述存储器和所述通信接口通过所述总线连接并完成相互间的通信;
所述存储器存储可执行程序代码;
所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种程序文件校验方法;其中,一种程序文件校验方法包括:
在与所述终端建立通信连接后,获得所述应用程序包的版本号;
获得针对于所述应用程序包的随机数;
根据所述随机数和服务器自身预先存储的具有所述版本号的应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待检验文件的第一哈希值;
将所述随机数发送给所述终端,以使得所述终端在接收到所述随机数后,根据所述随机数和所述终端本地的所述应用程序包中的所述预设待检验文件的文件内容,并利用所述预定哈希算法,生成针对于所述预设待检验文件的第二哈希值;
获得关于所述终端所生成的所述第二哈希值的相关信息;
根据关于所述第二哈希值的相关信息和关于所述第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果。
10.一种终端,其特征在于,所述终端为:用于运行承载于应用程序包的应用软件的终端;其中,所述终端包括:处理器、存储器、通信接口和总线;
所述处理器、所述存储器和所述通信接口通过所述总线连接并完成相互间的通信;
所述存储器存储可执行程序代码;
所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种程序文件校验方法;其中,一种程序文件校验方法包括:
在与用于为所述应用软件提供网络服务的服务器建立通信连接后,接收所述服务器发送的针对于所述应用程序包的随机数,其中,所述随机数为:所述服务器在与所述终端建立通信连接后获得并发送的;
根据所述随机数和所述终端本地的所述应用程序包中的预设待校验文件的文件内容,并利用预定哈希算法,生成针对于所述预设待校验文件的第二哈希值;
向所述服务器发送所述第二哈希值的相关信息,以使得所述服务器获得关于所述第二哈希值的相关信息后,根据关于所述第二哈希值的相关信息和关于第一哈希值的相关信息,确定所述终端内的所述预设待校验文件的完整性校验结果,其中,所述第一哈希值为:所述服务器根据所述随机数和自身预先存储的、具有所述终端内的所述应用程序包的版本号的应用程序包中的预设待校验文件的文件内容,并利用所述预定哈希算法生成的。
CN201510578850.4A 2015-09-11 2015-09-11 程序文件校验方法及装置、服务器和终端 Pending CN105306434A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510578850.4A CN105306434A (zh) 2015-09-11 2015-09-11 程序文件校验方法及装置、服务器和终端
PCT/CN2016/094628 WO2017041606A1 (zh) 2015-09-11 2016-08-11 程序文件校验方法及装置、服务器和终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510578850.4A CN105306434A (zh) 2015-09-11 2015-09-11 程序文件校验方法及装置、服务器和终端

Publications (1)

Publication Number Publication Date
CN105306434A true CN105306434A (zh) 2016-02-03

Family

ID=55203189

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510578850.4A Pending CN105306434A (zh) 2015-09-11 2015-09-11 程序文件校验方法及装置、服务器和终端

Country Status (2)

Country Link
CN (1) CN105306434A (zh)
WO (1) WO2017041606A1 (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105897781A (zh) * 2016-06-30 2016-08-24 北京奇虎科技有限公司 移动终端与服务器之间数据传输的控制方法及装置
CN106161465A (zh) * 2016-08-29 2016-11-23 浪潮(北京)电子信息产业有限公司 一种云存储方法、云存储***及安全云存储***
WO2017041606A1 (zh) * 2015-09-11 2017-03-16 北京金山安全软件有限公司 程序文件校验方法及装置、服务器和终端
CN106648762A (zh) * 2016-11-30 2017-05-10 武汉斗鱼网络科技有限公司 一种搭建开发环境的方法及装置
CN107480068A (zh) * 2017-08-22 2017-12-15 武汉斗鱼网络科技有限公司 代码完整性检测方法、装置、电子终端及可读存储介质
CN107786504A (zh) * 2016-08-26 2018-03-09 腾讯科技(深圳)有限公司 Elf文件发布方法、elf文件校验方法、服务器及终端
CN108846266A (zh) * 2018-07-11 2018-11-20 中国联合网络通信集团有限公司 一种应用程序运行授权的方法、***以及通信终端
CN109582907A (zh) * 2018-12-06 2019-04-05 深圳前海微众银行股份有限公司 网页资源完整性的校验方法、装置、设备及可读存储介质
CN109939441A (zh) * 2019-03-14 2019-06-28 深圳市腾讯信息技术有限公司 应用复盘校验处理方法及***
CN109995700A (zh) * 2017-12-29 2019-07-09 北京易安睿龙科技有限公司 一种应用程序的安全防护方法、应用客户端及acr服务器
CN110750444A (zh) * 2019-09-10 2020-02-04 中国平安财产保险股份有限公司 应用程序移交方法、装置、计算机设备及存储介质
CN111104669A (zh) * 2018-10-29 2020-05-05 中兴通讯股份有限公司 破解检测方法、装置、***、服务器、终端及存储介质
CN112003704A (zh) * 2020-07-31 2020-11-27 中科扶云(杭州)科技有限公司 电子证据的处理方法、装置和计算机设备
CN112307511A (zh) * 2020-11-06 2021-02-02 珠海格力电器股份有限公司 文件防护方法和***
CN113127860A (zh) * 2019-12-30 2021-07-16 Oppo广东移动通信有限公司 可执行文件的检测方法、装置、终端及存储介质
CN113139716A (zh) * 2021-03-31 2021-07-20 成都飞机工业(集团)有限责任公司 一种数控加工程序包远程自动化防出错校验的方法
TWI735841B (zh) * 2019-01-19 2021-08-11 宏碁股份有限公司 歸檔資料的驗證方法及其電腦系統
CN114398102A (zh) * 2022-01-18 2022-04-26 杭州米络星科技(集团)有限公司 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111199039B (zh) * 2018-11-20 2023-02-28 成都鼎桥通信技术有限公司 应用程序的安全性校验方法、装置及终端设备
CN109739529A (zh) * 2018-12-04 2019-05-10 贵阳朗玛信息技术股份有限公司 一种程序自动发布的方法及装置
CN111400102B (zh) * 2020-03-18 2024-06-18 深圳前海微众银行股份有限公司 应用程序的变更监控方法、装置、设备及存储介质
CN117478175B (zh) * 2023-10-25 2024-04-30 中通服网盈科技有限公司 一种电力通信传输优化***及运行方法
CN117725572A (zh) * 2024-02-07 2024-03-19 支付宝(杭州)信息技术有限公司 一种sdk完整性的校验方法、装置、介质及设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6782477B2 (en) * 2002-04-16 2004-08-24 Song Computer Entertainment America Inc. Method and system for using tamperproof hardware to provide copy protection and online security
CN101782801A (zh) * 2009-11-16 2010-07-21 赵延斌 一种带内置电池的笔记本电源适配器
CN101976322A (zh) * 2010-11-11 2011-02-16 清华大学 基于一种完整性校验的安全元数据管理方法
US20120266022A1 (en) * 2010-10-06 2012-10-18 Siemens Aktiengesellschaft Method for Verifying an Application Program in a Failsafe Programmable Logic Controller, and Programmable Logic Controller for Performing the Method
CN103488952A (zh) * 2013-09-24 2014-01-01 华为技术有限公司 文件完整性验证方法及文件处理器
CN104134021A (zh) * 2013-06-20 2014-11-05 腾讯科技(深圳)有限公司 软件的防篡改验证方法及装置
CN104778410A (zh) * 2015-04-16 2015-07-15 电子科技大学 一种应用程序完整性验证方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8254569B2 (en) * 2007-12-29 2012-08-28 Nec (China) Co., Ltd. Provable data integrity verifying method, apparatuses and system
CN101783801B (zh) * 2010-01-29 2013-04-24 福建星网锐捷网络有限公司 一种基于网络的软件保护方法、客户端及服务器
CN104751049B (zh) * 2015-03-09 2018-09-04 广东欧珀移动通信有限公司 一种应用程序安装方法及移动终端
CN105306434A (zh) * 2015-09-11 2016-02-03 北京金山安全软件有限公司 程序文件校验方法及装置、服务器和终端

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6782477B2 (en) * 2002-04-16 2004-08-24 Song Computer Entertainment America Inc. Method and system for using tamperproof hardware to provide copy protection and online security
CN101782801A (zh) * 2009-11-16 2010-07-21 赵延斌 一种带内置电池的笔记本电源适配器
US20120266022A1 (en) * 2010-10-06 2012-10-18 Siemens Aktiengesellschaft Method for Verifying an Application Program in a Failsafe Programmable Logic Controller, and Programmable Logic Controller for Performing the Method
CN101976322A (zh) * 2010-11-11 2011-02-16 清华大学 基于一种完整性校验的安全元数据管理方法
CN104134021A (zh) * 2013-06-20 2014-11-05 腾讯科技(深圳)有限公司 软件的防篡改验证方法及装置
CN103488952A (zh) * 2013-09-24 2014-01-01 华为技术有限公司 文件完整性验证方法及文件处理器
CN104778410A (zh) * 2015-04-16 2015-07-15 电子科技大学 一种应用程序完整性验证方法

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017041606A1 (zh) * 2015-09-11 2017-03-16 北京金山安全软件有限公司 程序文件校验方法及装置、服务器和终端
CN105897781A (zh) * 2016-06-30 2016-08-24 北京奇虎科技有限公司 移动终端与服务器之间数据传输的控制方法及装置
CN105897781B (zh) * 2016-06-30 2019-05-31 北京奇虎科技有限公司 移动终端与服务器之间数据传输的控制方法及装置
CN107786504A (zh) * 2016-08-26 2018-03-09 腾讯科技(深圳)有限公司 Elf文件发布方法、elf文件校验方法、服务器及终端
CN107786504B (zh) * 2016-08-26 2020-09-04 腾讯科技(深圳)有限公司 Elf文件发布方法、elf文件校验方法、服务器及终端
CN106161465A (zh) * 2016-08-29 2016-11-23 浪潮(北京)电子信息产业有限公司 一种云存储方法、云存储***及安全云存储***
CN106648762A (zh) * 2016-11-30 2017-05-10 武汉斗鱼网络科技有限公司 一种搭建开发环境的方法及装置
CN106648762B (zh) * 2016-11-30 2020-08-04 武汉斗鱼网络科技有限公司 一种搭建开发环境的方法及装置
CN107480068A (zh) * 2017-08-22 2017-12-15 武汉斗鱼网络科技有限公司 代码完整性检测方法、装置、电子终端及可读存储介质
CN109995700A (zh) * 2017-12-29 2019-07-09 北京易安睿龙科技有限公司 一种应用程序的安全防护方法、应用客户端及acr服务器
CN108846266A (zh) * 2018-07-11 2018-11-20 中国联合网络通信集团有限公司 一种应用程序运行授权的方法、***以及通信终端
CN111104669A (zh) * 2018-10-29 2020-05-05 中兴通讯股份有限公司 破解检测方法、装置、***、服务器、终端及存储介质
CN109582907A (zh) * 2018-12-06 2019-04-05 深圳前海微众银行股份有限公司 网页资源完整性的校验方法、装置、设备及可读存储介质
TWI735841B (zh) * 2019-01-19 2021-08-11 宏碁股份有限公司 歸檔資料的驗證方法及其電腦系統
CN109939441B (zh) * 2019-03-14 2023-03-14 深圳市腾讯信息技术有限公司 应用复盘校验处理方法及***
CN109939441A (zh) * 2019-03-14 2019-06-28 深圳市腾讯信息技术有限公司 应用复盘校验处理方法及***
CN110750444A (zh) * 2019-09-10 2020-02-04 中国平安财产保险股份有限公司 应用程序移交方法、装置、计算机设备及存储介质
CN110750444B (zh) * 2019-09-10 2024-05-10 中国平安财产保险股份有限公司 应用程序移交方法、装置、计算机设备及存储介质
CN113127860A (zh) * 2019-12-30 2021-07-16 Oppo广东移动通信有限公司 可执行文件的检测方法、装置、终端及存储介质
CN113127860B (zh) * 2019-12-30 2023-10-20 Oppo广东移动通信有限公司 可执行文件的检测方法、装置、终端及存储介质
CN112003704A (zh) * 2020-07-31 2020-11-27 中科扶云(杭州)科技有限公司 电子证据的处理方法、装置和计算机设备
CN112307511A (zh) * 2020-11-06 2021-02-02 珠海格力电器股份有限公司 文件防护方法和***
CN113139716A (zh) * 2021-03-31 2021-07-20 成都飞机工业(集团)有限责任公司 一种数控加工程序包远程自动化防出错校验的方法
CN114398102A (zh) * 2022-01-18 2022-04-26 杭州米络星科技(集团)有限公司 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质
CN114398102B (zh) * 2022-01-18 2023-08-08 杭州米络星科技(集团)有限公司 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质

Also Published As

Publication number Publication date
WO2017041606A1 (zh) 2017-03-16

Similar Documents

Publication Publication Date Title
CN105306434A (zh) 程序文件校验方法及装置、服务器和终端
CN107888577B (zh) 门锁固件的升级方法、门锁、服务器、***及存储介质
CN102830992B (zh) 插件加载方法及***
CN103095457B (zh) 一种应用程序的登录、验证方法
CN101436141B (zh) 基于数字签名的固件升级、固件封装方法与装置
CN107911222B (zh) 数字签名生成、验证方法及其设备和存储介质
CN111200589A (zh) 一种联盟链的数据保护方法及***
JP4856182B2 (ja) ソフトウェアアプリケーションセキュリティ方法およびシステム
CN105389177A (zh) 一种软件版本确认方法、装置及***
CN103248495B (zh) 一种应用内付费的方法、服务器、客户端和***
CN109634615B (zh) 应用安装包的发布方法、验证方法和装置
CN103679005A (zh) 启用安全电子控制单元的开发模式的方法
CN103957080A (zh) 一种数据完整性校验方法及***
CN104102499A (zh) 移动终端及其软件升级的方法
CN111970109B (zh) 一种数据传输方法及***
CN105227545A (zh) 智能操作平台中实现用户和开发者划分控制的***及方法
CN104504347A (zh) 一种数据一致性匹配处理方法和设备
CN113127020A (zh) 一种软件升级方法和装置
CN104348578A (zh) 数据处理的方法及装置
CN105827405A (zh) 一种远程控制的安全锁装置及其远程控制方法
CN104219626A (zh) 一种身份认证的方法和装置
CN102622251A (zh) 导航软件升级管理的方法及服务器
CN107318100B (zh) 用于绑定手机号码的方法、装置及***
CN105897745A (zh) 升级包传输服务器、***及方法
CN112637307A (zh) 文件更新方法、***、计算机设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20160203