应用程序升级方法、装置、电子设备及存储介质与流程

文档序号:24549840发布日期:2021-04-06 12:02阅读:52来源:国知局
应用程序升级方法、装置、电子设备及存储介质与流程

本公开涉及通信技术领域,具体而言,涉及一种应用程序升级方法、应用程序升级装置、计算机可读存储介质以及电子设备。



背景技术:

计算机设备中的应用程序有新版本发布时,计算机设备需要从服务器端获取该应用程序的版本更新数据,例如,补丁安装包或者新版本的安装包,并利用该版本更新数据更新应用程序以完成应用程序的升级。

对于升级安卓应用程序来说,可以从应用市场下载更新安装包,也可以在应用程序内部下载并安装更新安装包以进行升级。但是,在应用程序内部升级,存在安装劫持风险,更新安装包在下载中及安装前都可能被替换掉,导致应用程序升级失败。

因此,提供一种安全性高的应用程序升级方法是非常必要的。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本公开的目的在于提供一种应用程序升级方法、应用程序升级装置、计算机可读存储介质以及电子设备,以解决现有的应用程序升级过程中安全性较低的问题。

根据本公开的第一方面,提供一种应用程序升级方法,包括:

对待升级应用程序的升级文件进行哈希映射得到第一哈希值;

使用密钥对中的第一密钥对所述第一哈希值进行加密,得到第一密文,并将所述密钥对中的第二密钥发送给客户端;

使用所述第一密钥对部分所述升级文件进行加密,得到第二密文;

基于所述第一密文、第二密文与未加密部分的升级文件生成第二升级文件;

将所述第二升级文件发送给客户端,以便于所述客户端利用所述第二密钥对所述第二升级文件进行验证并在验证通过后得到待安装升级文件。

在本公开的一种示例性实施例中,所述对待升级应用程序的升级文件进行哈希映射得到第一哈希值,包括:

使用信息摘要算法对待升级应用程序的升级文件进行哈希映射得到第一哈希值。

在本公开的一种示例性实施例中,所述使用信息摘要算法对待升级应用程序的升级文件进行哈希映射得到第一哈希值,包括:

对所述升级文件的信息长度进行数据填充;

利用辅助函数对所述数据填充结果进行运算得到所述第一哈希值。

在本公开的一种示例性实施例中,所述使用密钥对中的第一密钥对所述第一哈希值进行加密,包括:

使用所述第一密钥对所述第一哈希值进行模幂运算得到第一密文。

在本公开的一种示例性实施例中,所述使用所述第一密钥对部分所述升级文件进行加密,得到第二密文,包括:

随机选取所述升级文件中的部分升级文件;

使用所述第一密钥对部分所述升级文件对进行模幂运算得到第二密文。

根据本公开的第二方面,提供一种应用程序升级方法,包括:

使用第二密钥对第二升级文件中的第一密文和第二密文进行解密得到第一哈希值与部分待安装升级文件,所述第一密文由加密所述第一哈希值得到,所述第一哈希值是对待升级应用程序的升级文件进行哈希映射得到,所述第二密文由加密部分所述待升级应用程序的升级文件得到;

基于所述部分待安装升级文件与所述第二升级文件中未加密部分的升级文件生成待安装升级文件;

对所述待安装升级文件进行相同的哈希映射得到第二哈希值,所述第二哈希值与所述第一哈希值相同时验证通过并安装所述待安装升级文件。

在本公开的一种示例性实施例中,所述方法还包括:

监控所述待安装升级文件的下载路径,如果所述待安装升级文件未被重复下载,则对所述待安装升级文件进行相同的哈希映射。

根据本公开的第三方面,提供一种应用程序升级装置,包括:

文件处理模块,用于对待升级应用程序的升级文件进行哈希映射得到第一哈希值;

第一加密模块,用于使用密钥对中的第一密钥对所述第一哈希值进行加密,得到第一密文,并将所述密钥对中的第二密钥发送给客户端;

第二加密模块,用于使用所述第一密钥对部分所述升级文件进行加密,得到第二密文;

文件生成模块,用于基于所述第一密文、第二密文与未加密部分的升级文件生成第二升级文件;

文件发送模块,用于将所述第二升级文件发送给客户端,以便于所述客户端利用所述第二密钥对所述第二升级文件进行验证并在验证通过后得到待安装升级文件。

根据本公开的第四方面,提供一种应用程序升级装置,包括:

解密模块,用于使用第二密钥对第二升级文件中的第一密文和第二密文进行解密得到第一哈希值与部分待安装升级文件,所述第一密文由加密所述第一哈希值得到,所述第一哈希值是对待升级应用程序的升级文件进行哈希映射得到,所述第二密文由加密部分所述待升级应用程序的升级文件得到;

生成模块,用于基于所述部分待安装升级文件与所述第二升级文件中未加密部分的升级文件生成待安装升级文件;

验证模块,用于对所述待安装升级文件进行相同的哈希映射得到第二哈希值,所述第二哈希值与所述第一哈希值相同时验证通过并安装所述待安装升级文件。

根据本公开的第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。

根据本公开的第六方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。

本公开示例性实施例可以具有以下部分或全部有益效果:

在本公开示例实施方式所提供的应用程序升级方法中,通过对待升级应用程序的升级文件进行哈希映射得到第一哈希值,使用密钥对中的第一密钥分别对第一哈希值和部分升级文件进行加密得到第一密文和第二密文,并将密钥对中的第二密钥发送给客户端,基于第一密文、第二密文与未加密部分的升级文件生成第二升级文件,将第二升级文件发送给客户端,以便于客户端利用第二密钥对第二升级文件进行验证并在验证通过后得到待安装升级文件。该方法通过对升级文件进行加密及验证以提高应用程序升级的安全性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1示出了可以应用本公开实施例的一种应用程序升级方法及装置的示例性系统架构的示意图;

图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图;

图3示意性示出了根据本公开的一个实施例的应用程序升级方法的流程图;

图4示意性示出了根据本公开的一个实施例的应用程序升级方法的步骤的流程图;

图5示意性示出了根据本公开的一个实施例的应用程序升级方法的步骤的流程图;

图6示意性示出了根据本公开的另一个实施例的应用程序升级方法的流程图;

图7示意性示出了根据本公开的一个具体实施例的应用程序升级方法的步骤的流程图;

图8示意性示出了根据本公开的一个实施例的应用程序升级装置的框图;

图9示意性示出了根据本公开的另一个实施例的应用程序升级装置的框图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

图1示出了可以应用本公开实施例的一种应用程序升级方法及装置的示例性应用环境的系统架构的示意图。

如图1所示,系统架构100可以包括终端设备101、102、103中的一个或多个,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于台式计算机、便携式计算机、智能手机和平板电脑等等。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。

本公开实施例所提供的应用程序升级方法一般由服务器105执行,相应地,应用程序升级装置一般设置于服务器105中。但本领域技术人员容易理解的是,本公开实施例所提供的应用程序升级方法也可以由终端设备101、102、103执行,相应的,应用程序升级装置也可以设置于终端设备101、102、103中,本示例性实施例中对此不做特殊限定。

图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。

需要说明的是,图2示出的电子设备的计算机系统200仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图2所示,计算机系统200包括中央处理单元(cpu)201,其可以根据存储在只读存储器(rom)202中的程序或者从存储部分208加载到随机访问存储器(ram)203中的程序而执行各种适当的动作和处理。在ram203中,还存储有系统操作所需的各种程序和数据。cpu201、rom202以及ram203通过总线204彼此相连。输入/输出(i/o)接口205也连接至总线204。

以下部件连接至i/o接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至i/o接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。

特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。在该计算机程序被中央处理单元(cpu)201执行时,执行本申请的方法和装置中限定的各种功能。

作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图3至图7示的各个步骤等。

需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

以下对本公开实施例的技术方案进行详细阐述:

对于安卓应用应用程序来说,一般可以直接在应用程序内部进行升级。即有新版本发布时,在应用程序内部可以下载并安装该新版本的更新安装包,而不需要通过应用市场中下载更新安装包。因此,在应用程序内部进行升级更加方便快捷。但是,弊端是存在安装劫持风险,因为更新安装包在下载中及安装前都有可能被替换掉,导致应用程序升级失败。

针对上述问题,常规的解决方案是在检测更新接口中下发更新安装包签名,即给更新安装包设置数字签名,数字签名是指利用非对称加密算法和数字摘要技术对信息进行安全验证。具体是下载更新安装包后做数字签名校验,从而检测更新安装包是否被替换。另外,检测更新接口一旦被劫持,数字签名也可以被替换。该方案只是对下载的安装包做了完整性校验,并不能保证安装包泄露出去被直接使用。此外,安装劫持除了在下载中替换,也可以在下载本地到后并进行安装前替换,该方案也无法防止。

基于上述一个或多个问题,本示例实施方式提供了一种应用程序升级方法,该方法可以应用于上述服务器105,也可以应用于上述终端设备101、102、103中的一个或多个,本示例性实施例中对此不做特殊限定。参考图3所示,该应用程序升级方法可以包括以下步骤s310至步骤s350:

步骤s310.对待升级应用程序的升级文件进行哈希映射得到第一哈希值。

步骤s320.使用密钥对中的第一密钥对所述第一哈希值进行加密,得到第一密文,并将所述密钥对中的第二密钥发送给客户端。

步骤s330.使用所述第一密钥对部分所述升级文件进行加密,得到第二密文。

步骤s340.基于所述第一密文、第二密文与未加密部分的升级文件生成第二升级文件。

步骤s350.将所述第二升级文件发送给客户端,以便于所述客户端利用所述第二密钥对所述第二升级文件进行验证并在验证通过后得到待安装升级文件。

在本公开示例实施方式所提供的应用程序升级方法中,通过对待升级应用程序的升级文件进行哈希映射得到第一哈希值,使用密钥对中的第一密钥分别对第一哈希值和部分升级文件进行加密得到第一密文和第二密文,并将密钥对中的第二密钥发送给客户端,基于第一密文、第二密文与未加密部分的升级文件生成第二升级文件,将第二升级文件发送给客户端,以便于客户端利用第二密钥对第二升级文件进行验证并在验证通过后得到待安装升级文件。该方法通过对升级文件进行加密及验证以提高应用程序升级的安全性。

下面,对于本示例实施方式的上述步骤进行更加详细的说明。

在步骤s310中,对待升级应用程序的升级文件进行哈希映射得到第一哈希值。

本示例实施方式中,待升级应用程序的升级文件可以为完整的更新安装包。安装包是指可自行解压缩文件的集合,包括软件安装的所有文件,其移动方便,占用空间小,缩减了软件下载的时间。服务端接收客户端下载更新安装包的请求后,可以使用哈希算法对更新安装包进行处理。哈希算法是一种单向密码体制,对应从明文到密文的不可逆的映射,只有加密过程,没有解密过程。同时,哈希算法可以将任意长度的输入经过运算以后得到固定长度的输出,其中固定长度的输出称为哈希值。哈希算法的这种单向特征和输出数据长度固定的特征使其可以生成消息或者数据。

例如,可以使用md5(messagedigestalgorithm5,信息摘要算法5)算法对更新安装包进行哈希映射得到第一哈希值,该过程相当于将更新安装包进行加密,但是加密过程不需要密钥,经过加密的数据无法被解密,只有输入相同的明文经过相同的信息摘要算法才能得到相同的密文,而且不存在密钥的管理和分发问题,可以用来检测更新安装包的完整性。另外,也可以使用sha-1(securehashalgorithm1,安全哈希算法1)算法、sha-256(安全哈希算法256)算法等对更新安装包进行哈希映射,本示例实施方式中对此不做限定。参考图4所示,使用md5算法对更新安装包进行哈希映射的过程可以包括以下步骤:

步骤s410.对所述升级文件的信息长度进行数据填充。

本示例实施方式中,可以对升级文件的信息长度进行填充,使其位长对512求余的结果等于448。因此,升级文件的信息位长将被扩展为n*512+448,即n*64+56个字节,其中,n为正整数。具体填充的方法是,首先,在升级文件的信息后面填充一个1和无数个0,直到满足信息位长对512求余的结果等于448时停止用0对信息的填充。然后,在填充得到的信息后面附加一个以64位二进制表示的原始信息长度,此时得到的信息位长为n*512+448+64=(n+1)*512,即信息位长正好为512的整数倍。对升级文件的信息长度进行填充的目的是为了满足步骤s420中对信息长度的要求。

步骤s420.利用辅助函数对所述数据填充结果进行运算得到所述第一哈希值。

本示例实施方式中,将升级文件的信息长度填充完成后,可以初始化四个链接变量a、b、c和d,以利用其进行第一轮运算。进行运算之前,可以将升级文件进行分组,第一组将四个链接变量复制到新的四个变量中a、b、c和d,从第二组开始,每组的变量为上一组的运算结果。

对于md5算法,主循环有四轮,第一轮循环中可以进行16次操作,每次操作对四个新变量(a、b、c和d)中的任意三个变量作一次非线性函数运算,将运算结果加上第四个变量、升级文件的一个子分组以及一个常数,可以将其向左环移位一个不定的数,即进行循环左移位,也可以将其向右环移。将环移位后得到的运算结果加上任一新变量,然后将此运算结果取代任一新变量,生成的运算结果中将a、b、c、d分别再加a、b、c、d,输出的最终结果即为第一哈希值。其余三轮循环与第一轮循环类似。

在步骤s320中,使用密钥对中的第一密钥对所述第一哈希值进行加密,得到第一密文,并将所述密钥对中的第二密钥发送给客户端。

本示例实施方式中,服务端可以生成非对称加密密钥对,非对称加密可以利用公钥对数据进行加密,利用私钥对数据进行解密,对应的也可以利用私钥对数据进行加密,利用公钥对数据进行解密。因此,第一密钥可以为公钥,也可以为私钥。

例如,可以利用rsa(rivest-shamir-adleman,一种加密算法)加密算法生成非对称加密密钥对,使用其中一个密钥加密,用另一个密钥才能解密。也可以利用ecc(ellipticcurvescryptography,椭圆曲线密码学)加密算法、d-h(diffie-hellman,一种加密算法)加密算法等对第一哈希值进行加密,本实施例对此不做限定。其中,rsa加密算法的安全性依赖于大质数分解,其中,公钥和私钥为两个大素数的函数。具体涉及三个参数n、e1、e2,其中,n是大质数p、q的积,n用二进制表示时的位数即密钥长度。e1和e2是一对相关的值,e1可以取任意值,但需要满足e1与(p-1)*(q-1)互质,e2需要满足(e2*e1)mod((p-1)*(q-1))=1。(n,e1)和(n,e2)即为密钥对,其中,(n,e1)可以为公钥,(n,e2)可以为私钥,另外,e1和e2可以互换使用。

然后,可以将(n,e2)作为第一密钥,(n,e1)作为第二密钥,同样也可以将(n,e1)作为第二密钥,(n,e2)作为第一密钥。一种示例实施方式中以(n,e2)作为第一密钥,(n,e1)作为第二密钥时,假设第一哈希值为h1,可以利用第一密钥(n,e2)对第一哈希值进行模幂运算,即模幂运算的结果即为第一密文。同时,可以将第二密钥(n,e1)发送给客户端。

在步骤s330中,使用所述第一密钥对部分所述升级文件进行加密,得到第二密文。参考图5所示,该过程可以包括以下步骤:

步骤s510.随机选取所述升级文件中的部分升级文件。

本示例实施方式中,对于待升级应用程序的升级文件,即更新安装包,可以随机选取该安装包中的一部分进行加密,例如,可以选取固定大小的安装包进行加密,也可以从头选取(对应可以从任意位置选取)部分安装包进行加密,还可以选取固定信息长度的安装包进行加密。示例性的,从头选取部分安装包时,进行加密的部分可以称为header部分,其它部分可以称为body部分。通过加密部分安装包而不是加密完整安装包以进行解密验证,既可以检测安装包是否安全又提高了加密效率。

步骤s520.使用所述第一密钥对部分所述升级文件对进行模幂运算得到第二密文。

本示例实施方式中,可以使用rsa加密算法加密部分升级文件,以(n,e2)作为第一密钥,(n,e1)作为第二密钥时,假设部分升级文件,即header部分为h2,可以利用第一密钥(n,e2)对header部分进行模幂运算,即模幂运算的结果即为第二密文。同样也可以利用ecc(ellipticcurvescryptography,椭圆曲线密码学)加密算法、d-h(diffie-hellman,一种加密算法)加密算法等对第一哈希值进行加密,本实施例对此不做限定。

在步骤s340中,基于所述第一密文、第二密文与未加密部分的升级文件生成第二升级文件。

本示例实施方式中,可以将得到的第一密文、第二密文和body部分进行合并得到第二升级文件,例如,可以按对应顺序将第二密文和body部分拼接在一起,相当于还原为完整的安装包。另外,可以将第一密文附在合并后的第二密文和body部分上。

在步骤s350中,将所述第二升级文件发送给客户端,以便于所述客户端利用所述第二密钥对所述第二升级文件进行验证并在验证通过后得到待安装升级文件。

本示例实施方式中,可以通过websocket通信协议发送所述第二升级文件。websocket是一种在单个tcp(transmissioncontrolprotocol,传输控制协议)连接上进行全双工通信的协议,使得客户端和服务端之间的数据交换变得更加简单,并且,允许服务端主动向客户端推送数据。在websocketapi中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

此外,也可以通过http(hypertexttransferprotocol,超文本传输协议)发送所述第二升级文件。例如,通过https(hypertexttransferprotocoloversecuresocketlayer,超文本传输安全协议)发送所述第二升级文件。其中,https是以安全为目标的http通道,在http的基础上通过传输加密和身份认证保证了传输过程的安全性。另外,https在http的基础下加入ssl(securesocketlayer,安全套接层),在http的默认端口加入一个加密/身份验证层。https系统提供了身份验证与加密通讯方法,其被广泛用于安全敏感的通讯,例如交易支付等方面。

将第二升级文件发送给客户端后,所述客户端可以利用第二密钥(n,e1)对所述第二升级文件中的第一密文和第二密文进行解密,得到对应的第一哈希值和header部分。然后,可以将header部分与第二升级文件中未加密的body部分合并得到待安装升级文件。

另一方面,本示例实施方式提供了一种应用程序升级方法。该方法可以应用于上述服务器105,也可以应用于上述终端设备101、102、103中的一个或多个,本示例性实施例中对此不做特殊限定。参考图6所示,该应用程序升级方法可以包括以下步骤s610至步骤s630:

步骤s610.使用第二密钥对第二升级文件中的第一密文和第二密文进行解密得到第一哈希值与部分待安装升级文件,所述第一密文由加密所述第一哈希值得到,所述第一哈希值是对待升级应用程序的升级文件进行哈希映射得到,所述第二密文由加密部分所述待升级应用程序的升级文件得到。

本示例实施方式中,第二升级文件包括第一密文、第二密文和body部分,其中,第一密文由加密第一哈希值得到,所述第一哈希值是对待升级应用程序的升级文件进行哈希映射得到,所述第二密文由加密header部分得到。

客户端接收到第二升级文件后,可以使用第二密钥对第一密文和第二密文进行解密。例如,可以使用rsa加密算法进行解密,即可以使用第二密钥(n,e1)对第一密文和第二密文进行模幂运算。假设第一密文和第二密文分别为m1、m2,分别进行模幂运算运算结果分别为第一哈希值h1、header部分h2。对应的也可以利用ecc(ellipticcurvescryptography,椭圆曲线密码学)加密算法、d-h(diffie-hellman,一种加密算法)加密算法等对第二升级文件进行解密,本示例实施方式中对此不做限定。

步骤s620.基于所述部分待安装升级文件与所述第二升级文件中未加密部分的升级文件生成待安装升级文件。

示例性的,可以将header部分与第二升级文件中的body部分按顺序合并得到待安装升级文件。此外,在客户端解密出header部分和body部分在做签名校验的过程中,黑客程序可以替换下载的更新安装包,具体是通过监控下载更新安装包的文件目录,监控到下载完成后可以进行覆盖安装。因此,可以对下载目录做监控防护,监控待安装升级文件的下载路径,如果所述待安装升级文件未被重复下载,则对所述待安装升级文件进行相同的哈希映射。只要监控到有覆盖行为,立刻停止安装、删除本地安装包并提供安全风险。本示例实施方式中,可以利用私钥对header部分进行加密,即存储在本地的是加密后的升级文件,使用时才将其进行解密,黑客没有私钥无法伪造加密header部分。因此,同样可以防止升级文件被替换,提高了应用程序升级的安全性。

步骤s630.对所述待安装升级文件进行相同的哈希映射得到第二哈希值,所述第二哈希值与所述第一哈希值相同时验证通过并安装所述待安装升级文件。

本示例实施方式中,如果监控到待安装升级文件未被替换,就可以对待安装升级文件进行相同的哈希映射,即对所述待安装升级文件的信息长度进行数据填充,使其信息位长将被扩展为n*512+448,即n*64+56个字节,其中,n为正整数。将待安装升级文件的信息长度填充完成后,可以利用辅助函数对数据填充结果进行运算得到第二哈希值h3。

判断第一哈希值h1与第二哈希值h3是否相同,相同即等价于待安装升级文件为待升级应用程序的升级文件,进一步说明原始的升级文件未被劫持替换,可以将所述待安装升级文件进行安装以进行应用程序的升级。

本示例实施方式中方法的一个具体应用举例,参考图7所示,以安卓应用程序升级为例。

首先,安卓应用程序有新版本发布时,可以在应用程序内部下载更新安装包。首先,服务端通过步骤s701将该安装包上传。接收到来自客户端的下载安装包请求后,通过步骤s702可以利用md5算法对安装包做摘要,通过步骤s703可以使用rsa加密算法中的私钥对摘要值进行加密得到数字签名。同时,通过步骤s704将安装包拆分为两部分,包括可以是512位header部分和其余body部分,接着通过步骤s705同样使用rsa加密算法中的私钥对header部分进行加密,然后通过步骤s706将数字签名、加密header部分和body部分合并后下发给客户端。客户端下载文件夹监控,通过步骤s707可以使用rsa加密算法中的公钥对接收到的数字签名和加密header部分进行解密。然后,监控并下载合并后header部分和body部分,如果监控到有覆盖行为,立刻停止安装并删除本地安装包。如果没有覆盖行为,则通过步骤s708对合并后的header部分和body部分做相同的摘要,判断与步骤s702中得到的摘要值是否相同,如果相同,通过步骤s709安装该安装包以将应用程序进行升级。

在本公开示例实施方式所提供的应用程序升级方法中,通过对待升级应用程序的升级文件进行哈希映射得到第一哈希值,使用密钥对中的第一密钥分别对第一哈希值和部分升级文件进行加密得到第一密文和第二密文,并将密钥对中的第二密钥发送给客户端,基于第一密文、第二密文与未加密部分的升级文件生成第二升级文件,将第二升级文件发送给客户端,以便于客户端利用第二密钥对第二升级文件进行验证并在验证通过后得到待安装升级文件。该方法通过对升级文件进行加密及验证以提高应用程序升级的安全性。

应当注意,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。

进一步的,本示例实施方式中,还提供了一种应用程序升级装置。该装置可以应用于一服务器或终端设备。参考图8所示,该应用程序升级装置800可以包括文件处理模块810、第一加密模块820、第二加密模块830、文件生成模块840以及文件发送模块850,其中:

文件处理模块810,用于对待升级应用程序的升级文件进行哈希映射得到第一哈希值;

第一加密模块820,用于使用密钥对中的第一密钥对所述第一哈希值进行加密,得到第一密文,并将所述密钥对中的第二密钥发送给客户端;

第二加密模块830,用于使用所述第一密钥对部分所述升级文件进行加密,得到第二密文;

文件生成模块840,用于基于所述第一密文、第二密文与未加密部分的升级文件生成第二升级文件;

文件发送模块850,用于将所述第二升级文件发送给客户端,以便于所述客户端利用所述第二密钥对所述第二升级文件进行验证并在验证通过后得到待安装升级文件。

在一种可选的实施方式中,文件处理模块810被配置为用于使用信息摘要算法对待升级应用程序的原始升级文件进行哈希映射得到第一哈希值。

在一种可选的实施方式中,文件处理模块810包括:

数据填充模块,用于对所述原始升级文件的信息长度进行数据填充;

数据运算模块,用于利用辅助函数对所述数据填充结果进行运算得到所述第一哈希值。

在一种可选的实施方式中,第一加密模块820被配置为用于使用所述第一密钥对所述第一哈希值进行模幂运算得到第一密文。

在一种可选的实施方式中,第二加密模块830包括:

文件选取模块,用于随机选取所述原始升级文件中的部分升级文件;

文件加密模块,用于使用所述第一密钥对部分所述原始升级文件对进行模幂运算得到第二密文。

上述应用程序升级装置中各模块的具体细节已经在对应的应用程序升级方法中进行了详细的描述,因此此处不再赘述。

本示例实施方式中,还提供了一种应用程序升级装置。该应用程序升级装置可以应用于一服务器或终端设备。参考图9所示,该应用程序升级装置900可以包括解密模块910、生成模块920以及验证模块930,其中:

解密模块910,用于使用第二密钥对第二升级文件中的第一密文和第二密文进行解密得到第一哈希值与部分待安装升级文件,所述第一密文由加密所述第一哈希值得到,所述第一哈希值是对待升级应用程序的升级文件进行哈希映射得到,所述第二密文由加密部分所述待升级应用程序的升级文件得到;

生成模块920,用于基于所述部分待安装升级文件与所述第二升级文件中未加密部分的升级文件生成待安装升级文件;

验证模块930,用于对所述待安装升级文件进行相同的哈希映射得到第二哈希值,所述第二哈希值与所述第一哈希值相同时验证通过并安装所述待安装升级文件。

在一种可选的实施方式中,应用程序升级装置900还包括:

数据监控模块,用于监控所述待安装升级文件的下载路径,如果所述待安装升级文件未被重复下载,则对所述待安装升级文件进行相同的哈希映射。

上述应用程序升级装置中各模块的具体细节已经在对应的应用程序升级方法中进行了详细的描述,因此此处不再赘述。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1