CN112346772A - 一种增量更新的方法、装置及存储介质 - Google Patents
一种增量更新的方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112346772A CN112346772A CN202011161624.3A CN202011161624A CN112346772A CN 112346772 A CN112346772 A CN 112346772A CN 202011161624 A CN202011161624 A CN 202011161624A CN 112346772 A CN112346772 A CN 112346772A
- Authority
- CN
- China
- Prior art keywords
- client
- upgrading
- increment
- package
- incremental
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种增量更新的方法、装置及存储介质,所述增量更新的方法包括:比较更新版本与旧版本的文件,获取待更新的文件列表,基于待更新的文件列表中的文件制作增量升级包;对所述增量升级包进行安全处理后,发布增量升级包以供客户端进行升级操作。通过对增量升级包进行安全处理,有效防止升级包被篡改或者是盗用,提高了***的安全性,也提高用户升级过程的安全性和可靠性。
Description
技术领域
本申请涉及计算机网络技术领域,尤其涉及一种增量更新的方法、装置及存储介质。
背景技术
随着网络技术的发展,客户端安装的各种应用软件会不断的迭代更新,以为用户提供更好,服务更全面的功能,相应地,应用程序的体积也是越来越大。在客户端进行应用程序的更新时,现有技术中客户端会直接从服务器请求下载完整的更新后的软件包进行更新,这种更新方式简单,但是在软件包较大时,下载完整的软件包进行更新会好肥大量的带宽资源,而且网络较差的情况下,在下载速度较慢且下载速度缓慢是,软件包可能会下载不完整从而导致升级失败。
因此,还可以采用增量升级的方式进行更新,即服务器对比新版本的安装包和旧版本的安装包的文件,制作出对应的增量升级包,客户端获取到增量升级包后,采用增量升级包和本地旧版本的安装包合并,得到新版本的安装包,然后按照该新版本的安装包进行安装获得更新后的服务。
但是,采用增量升级方式时,若服务器上传的增量升级包被篡改,则客户端无法检验所下载的增量升级包的安全性,或者增量升级包被盗用,从而导致出现安全问题。
发明内容
本申请实施例的目的在于提供一种增量更新的方法,所述方法包括:
比较更新版本与旧版本的文件,获取待更新的文件列表,基于待更新的文件列表中的文件制作增量升级包;
对所述增量升级包进行安全处理后,发布增量升级包以供客户端进行升级操作。
在本申请的一些实施例中,所述对所述增量升级包进行安全处理的方式包括:对所述增量升级包进行RSA签名和AES加密处理。
在本申请的一些实施例中,所述方法还包括:
在客户端上进行升级操作后,基于RSA签名检验客户端上运行是否正常。
在本申请的一些实施例中,所述发布增量升级包以供客户端进行升级还包括:对发布后的增量升级包通过预定算法进行签名认证,并记录升级后的版本的相关信息。
在本申请的一些实施例中,所述发布增量升级包以供客户端进行升级的方式为:
响应于客户端的请求,提供所述增量升级包以供客户端下载,所述增量升级包下载完成后用于客户端执行升级操作。
在本申请的一些实施例中,所述方法还包括:
在客户端执行升级操作之前,对下载完成的增量升级包的完整性进行校验。
在本申请的一些实施例中,所述方法还包括;
在所述发布增量升级包以供客户端进行升级操作后,收集客户端升级成功的信息。
在本申请的一些实施例中,所述方法还包括:
客户端升级失败时,执行回滚操作,以恢复到升级前的版本。
本申请实施例还提供了一种增量更新的装置,包括:
制作模块,配置为基于待更新的文件列表中的文件制作增量升级包;
发布模块,配置为发布经过安全处理的增量升级包以供客户端进行升级操作。
本申请实施例还提供了一种存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述方法的步骤。
本申请实施例的有益效果在于:通过对增量升级包进行安全处理,有效防止升级包被篡改或者是盗用,提高了***的安全性,也提高用户升级过程的安全性和可靠性。
附图说明
图1为本申请实施例提供的一种增量更新的方法的流程图;
图2为本申请实施例提供的一种增量更新的装置的框图。
具体实施方式
此处参考附图描述本申请的各种方案以及特征。
应理解的是,可以对此处申请的实施例做出各种修改。因此,上述说明书不应该视为限制,而仅是作为实施例的范例。本领域的技术人员将想到在本申请的范围和精神内的其他修改。
包含在说明书中并构成说明书的一部分的附图示出了本申请的实施例,并且与上面给出的对本申请的大致描述以及下面给出的对实施例的详细描述一起用于解释本申请的原理。
通过下面参照附图对给定为非限制性实例的实施例的优选形式的描述,本申请的这些和其它特性将会变得显而易见。
还应当理解,尽管已经参照一些具体实例对本申请进行了描述,但本领域技术人员能够确定地实现本申请的很多其它等效形式,它们具有如权利要求所述的特征并因此都位于借此所限定的保护范围内。
当结合附图时,鉴于以下详细说明,本申请的上述和其他方面、特征和优势将变得更为显而易见。
此后参照附图描述本申请的具体实施例;然而,应当理解,所申请的实施例仅仅是本申请的实例,其可采用多种方式实施。熟知和/或重复的功能和结构并未详细描述以避免不必要或多余的细节使得本申请模糊不清。因此,本文所申请的具体的结构性和功能性细节并非意在限定,而是仅仅作为权利要求的基础和代表性基础用于教导本领域技术人员以实质上任意合适的详细结构多样地使用本申请。
本说明书可使用词组“在一种实施例中”、“在另一个实施例中”、“在又一实施例中”或“在其他实施例中”,其均可指代根据本申请的相同或不同实施例中的一个或多个。
图1为本申请实施例提供的一种增量更新的方法的流程图,如图1所示,本实施例的增量更新的方法,具体可以包括以下步骤:
S101,比较更新版本与旧版本的文件,获取待更新的文件列表,基于待更新的文件列表中的文件制作增量升级包。
本步骤中,通过应用程序的更新版本和旧版本的对比,来获取更新版本相应文件的变更信息,再根据相应文件的变更信息制作增量升级包。具体地,比较更新版本的安装包和旧版本的安装包的所有文件,经过比较后获取更新版本的安装包相比于旧版本的安装包待更新的文件列表,根据待更新的文件列表制作增量升级包。增量升级包可以通过Makefile制作完成,本申请对此不作限制。
本步骤中,应用程序的更新版本和旧版本进行比对部分的代码如下:
S102,对所述增量升级包进行安全处理后,发布增量升级包以供客户端进行升级操作。
本步骤中,为提高增量升级包的安全性和可靠性,对增量升级包进行相应的安全处理,例如对增量升级包进行签名和加密操作,这样,客户端在获得增量升级包后,需要对增量升级包进行相应的解密操作才能获取运行该增量升级包进行升级,还可以通过验证签名的操作来确定所获取的增量升级包为目标增量升级包,这种方式有效防止升级包被篡改或者是盗用,提高了***的安全性,也提高用户升级过程的安全性和可靠性。
在本申请的一些实施例中,所述对所述增量升级包进行安全处理的方式包括:对所述增量升级包进行RSA签名和AES加密处理。本实施例中,为提高增量升级包的安全性和可靠性,对所述增量升级包进行RSA签名和AES加密处理,以防止增量升级包被盗用和用于确认增量升级包的准确性。可以通过golang脚本或为增量升级包进行RSA签名和AES加密操作,本实施例中以golang脚本为例,具体的方式为:
本实施例中通过golang脚本对增量升级包进行RSA签名和AES加密,其中RSA签名和AES加密部分的代码如下:
func hotfixEncode(fileData[]byte)error{
...
//ase encode
encodeData,err:=AesEncode(fileData,aesKey)
if err!=nil{
return err
}
//rsa sign
res,err:=RsaSignature(privateKey,encodeData,HASH_TYPE_OF_SHA256)
if err!=nil{
return err
}
...
}
一些实施例中,本申请的增量升级的方法还包括:在客户端上进行升级操作后,基于RSA签名检验客户端上运行是否正常。客户端根据获取的增量升级包进行升级获得成功时,则根据预先设置的RSA签名,在增量升级包运行结束校验更新后客户端的服务是否运行正常。
在一些实施例中,所述发布增量升级包以供客户端进行升级还包括:对发布后的增量升级包通过预定算法进行签名认证,并记录升级后的版本的相关信息。本实施例中,上传增量升级包之前,对其采用预定算法进行签名处理,再将增量升级包上传至指定的地方,所述指定的地方能为用户进行访问并进行增量升级包下载即可,上传后对增量升级包的签名通过上传时采用的算法进行认证,以确定文件无误,本实施例中可以采用RSA算法对增量升级包进行签名认证,也可以其他算法,对此本申请不做限制;同时记录升级后的更新版本的相关信息,包括:该更新版本的签名,版本号信息,文件名称大小等等。
本实施例中发布升级包及签名认证的部分代码如下:
在一些实施例中,所述发布增量升级包以供客户端进行升级的方式为:
响应于客户端的请求,提供所述增量升级包以供客户端下载,所述增量升级包下载完成后用于客户端执行升级操作。本实施例中,客户端的请求,可以是在客户端的用户定期轮询服务器的升级接口,获取到版本更新的信息后,进而请求下载增量升级包用于升级操作;也可以是在服务器检测到客户端上的应用程序的版本为旧版本时,推荐升级信息,从而客户端请求下载增量升级包用于升级操作;根据客户端的请求及相应的更新信息,提供相应版本的增量升级包供客户端进行下载,所述增量升级包下载完成后用于客户端执行升级操作。
本实施例中下载的增量升级包的相关信息如下所示:
进一步的,所述增量更新的方法还包括:在所述增量升级包下载完成后,在客户端执行升级操作之前,对下载完成的增量升级包的完整性进行校验。客户端在增量升级包下载完成后,需要对其进行校验,生成校验信息,根据校验信息判断增量升级包是否下载完成,这样可以使得客户端在下载的增量升级包是完整的情况下再进行运行获得升级,提高客户端升级操作的成功率。
本实施例中,使用特殊的算法校验下载包的完整性核心代码如下:
进一步的,在一些实施例中,所述增量更新的方法还包括;在所述发布增量升级包以供客户端进行升级操作后,收集客户端升级成功的信息。增量升级包在客户端上执行升级操作时,首先需要根据其前面相应的安全处理规则对增量升级包进行检测,例如增量升级包进行过RSA签名和AES加密处理,则此时进行相应的解密和验证签名的操作,以确定获取的增量升级包的安全性和可靠性,同时,也需要对客户端的安装环境进行检测,包括磁盘空间占用,用户执行权限等,检测均通过之后,增量升级包进行相应的升级操作,升级成功后,收集将该客户端增量更新的过程中的执行结果。
本申请实施例中,根据其前面相应的安全处理规则对增量升级包进行检测的部分代码如下:
func checkFile()error{
...
//get public key
publicKey:=genPublicKey()
//verify sign
if err=RsaVerifySignature(publicKey,data);err!=nil{
return err
}
//get aeskey
aesKey:=genAesKey()
//aesdecode
aesData,err:=AesDecode(encData,aesKey)
if err!=nil{
return err
}
...
}
本申请实施例中,收集将该客户端增量更新的过程中的执行结果的部分代码如下:
func postReply()error{
arg:=ArgData{
Module:module,
Version:version,
Uuid:uuid,
DeviceId:deviceId,
Status:status,
Msg:msg,
}
replyBody,err:=HttpPostFormKeep(rp.httpClient,checkUrl,arg)
if err!=nil{
return nil,err
}
...
}
在一些实施例中,所述增量更新的方法还包括:客户端升级失败时,执行回滚操作,以恢复到升级前的版本。增量升级包在客户端上执行升级操作的时候,如设备出现异常,会造成整个升级中断或超时的情况,这种情况下会进行超时特殊处理,在超时特殊处理时,会停止执行升级操作,而执行回滚操作,恢复应用程序更新前的旧版本的初始数据,以使应用服务正常运行,避免升级失败时对应用程序的运行的影响。
本实施例中超时特殊处理机制部分代码为:
ch:=make(chan interface{},1)
go func(){
defer close(ch)
res,err:=rp.do(data,source)
if err!=nil{
ch<-err
return
}
ch<-res
}()
select{
case res:=<-ch:
switch res.(type){
case error:
return nil,res.(error)
case*HotfixStatus:
return res.(*HotfixStatus),nil
default:
return nil,ErrorHotfixUnknow
}
case<-time.After(rp.RunTime):
return nil,ErrorHotfixRunTimeout
}
return nil,ErrorHotfixUnknow
本实施例中回滚操作的部分脚本代码为:
基于同一发明构思,本申请实施例还提供一种增量更新的装置500,其包括:
制作模块501,配置为基于待更新的文件列表中的文件制作增量升级包。
通过应用程序的更新版本和旧版本的对比,来获取更新版本相应文件的变更信息,再采用制作模块501根据相应文件的变更信息制作增量升级包。具体地,比较更新版本的安装包和旧版本的安装包的所有文件,经过比较后获取更新版本的安装包相比于旧版本的安装包待更新的文件列表,制作模块501根据待更新的文件列表制作增量升级包。
发布模块502,配置为发布经过安全处理的增量升级包以供客户端进行升级操作。
为提高增量升级包的安全性和可靠性,对增量升级包进行相应的安全处理后再通过发布模块502进行发布,例如对增量升级包进行签名和加密操作,这样,客户端在指定地点获得增量升级包后,需要对增量升级包进行相应的解密操作才能获取运行该增量升级包进行升级,还可以通过验证签名的操作来确定所获取的增量升级包为目标增量升级包,这种方式有效防止升级包被篡改或者是盗用,提高了***的安全性。提高用户升级过程的安全性。
本申请实施例还提供一种存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述方法的步骤。
本实施例中的存储介质可以是电子设备/***中所包含的;也可以是单独存在,而未装配入电子设备/***中。上述存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本申请实施例的方法。
根据本申请的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
以上实施例仅为本申请的示例性实施例,不用于限制本申请,本申请的保护范围由权利要求书限定。本领域技术人员可以在本申请的实质和保护范围内,对本申请做出各种修改或等同替换,这种修改或等同替换也应视为落在本申请的保护范围内。
Claims (10)
1.一种增量更新的方法,其特征在于,所述方法包括:
比较更新版本与旧版本的文件,获取待更新的文件列表,基于待更新的文件列表中的文件制作增量升级包;
对所述增量升级包进行安全处理后,发布增量升级包以供客户端进行升级操作。
2.根据权利要求1所述的方法,其特征在于,所述对所述增量升级包进行安全处理的方式包括:对所述增量升级包进行RSA签名和AES加密处理。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在客户端上进行升级操作后,基于RSA签名检验客户端上运行是否正常。
4.根据权利要求1所述的方法,其特征在于,所述发布增量升级包以供客户端进行升级还包括:对发布后的增量升级包通过预定算法进行签名认证,并记录升级后的版本的相关信息。
5.根据权利要求1所述的方法,其特征在于,所述发布增量升级包以供客户端进行升级的方式为:
响应于客户端的请求,提供所述增量升级包以供客户端下载,所述增量升级包下载完成后用于客户端执行升级操作。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在客户端执行升级操作之前,对下载完成的增量升级包的完整性进行校验。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括;
在所述发布增量升级包以供客户端进行升级操作后,收集客户端升级成功的信息。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
客户端升级失败时,执行回滚操作,以恢复到升级前的版本。
9.一种增量更新的装置,其特征在于,其包括:
制作模块,配置为基于待更新的文件列表中的文件制作增量升级包;
发布模块,配置为发布经过安全处理的增量升级包以供客户端进行升级操作。
10.一种存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011161624.3A CN112346772A (zh) | 2020-10-27 | 2020-10-27 | 一种增量更新的方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011161624.3A CN112346772A (zh) | 2020-10-27 | 2020-10-27 | 一种增量更新的方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112346772A true CN112346772A (zh) | 2021-02-09 |
Family
ID=74359070
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011161624.3A Pending CN112346772A (zh) | 2020-10-27 | 2020-10-27 | 一种增量更新的方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112346772A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094076A (zh) * | 2021-03-16 | 2021-07-09 | 杭州电魂网络科技股份有限公司 | 基于版本控制的版本迭代方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102572595A (zh) * | 2012-02-03 | 2012-07-11 | 深圳市同洲电子股份有限公司 | Iptv的升级包结构、升级方法以及开机校验方法 |
US20130212380A1 (en) * | 2012-02-10 | 2013-08-15 | Samsung Electronics Co., Ltd. | Securely upgrading or downgrading platform components |
CN107797819A (zh) * | 2017-06-12 | 2018-03-13 | 平安普惠企业管理有限公司 | 增量包生成方法、计算机可读存储介质及服务器 |
-
2020
- 2020-10-27 CN CN202011161624.3A patent/CN112346772A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102572595A (zh) * | 2012-02-03 | 2012-07-11 | 深圳市同洲电子股份有限公司 | Iptv的升级包结构、升级方法以及开机校验方法 |
US20130212380A1 (en) * | 2012-02-10 | 2013-08-15 | Samsung Electronics Co., Ltd. | Securely upgrading or downgrading platform components |
CN107797819A (zh) * | 2017-06-12 | 2018-03-13 | 平安普惠企业管理有限公司 | 增量包生成方法、计算机可读存储介质及服务器 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094076A (zh) * | 2021-03-16 | 2021-07-09 | 杭州电魂网络科技股份有限公司 | 基于版本控制的版本迭代方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6694434B1 (en) | Method and apparatus for controlling program execution and program distribution | |
US8978160B2 (en) | Method for selective software rollback | |
US8881308B2 (en) | Method to enable development mode of a secure electronic control unit | |
KR101963776B1 (ko) | 차량 시스템의 소프트웨어 보안 업데이트 방법 및 장치 | |
US8930710B2 (en) | Using a manifest to record presence of valid software and calibration | |
US11138295B2 (en) | Method for securely updating firmware components and docking station using the same | |
US7353386B2 (en) | Method and device for authenticating digital data by means of an authentication extension module | |
US11698971B2 (en) | Secure boot device | |
KR100660641B1 (ko) | 휴대 단말기의 부팅 보안 방법 및 그 휴대 단말기 | |
CN111095200A (zh) | 嵌入式程序的安全升级方法、装置、设备及存储介质 | |
CN110879713A (zh) | 一种android端强加密插件热更新管理方法 | |
CN113541966A (zh) | 权限管理方法、装置、电子设备及存储介质 | |
CN115643564A (zh) | 汽车安全的fota升级方法、装置、设备及存储介质 | |
JP2023505844A (ja) | パッケージベースリモートファームウェアアップデート | |
CN111953634B (zh) | 终端设备的访问控制方法、装置、计算机设备和存储介质 | |
CN114880011A (zh) | Ota升级方法、装置、电子设备及可读存储介质 | |
CN112346772A (zh) | 一种增量更新的方法、装置及存储介质 | |
CN114329358A (zh) | 应用签名方法、***、交易终端及服务平台 | |
US7526811B1 (en) | Methods for detecting executable code which has been altered | |
CN107479923A (zh) | 应用程序升级方法、装置及显示终端 | |
CN116956240A (zh) | 一种绕过Google safetynet认证方法及相关组件 | |
CN116707758A (zh) | 可信计算设备的认证方法、设备和服务器 | |
CN114143197B (zh) | 物联网设备ota升级方法、装置、设备及可读存储介质 | |
CN113127015B (zh) | 一种安装方法、装置以及电子设备 | |
CN111046389A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210209 |