CN113157305B - 一种软件升级方法及设备 - Google Patents
一种软件升级方法及设备 Download PDFInfo
- Publication number
- CN113157305B CN113157305B CN202010077050.5A CN202010077050A CN113157305B CN 113157305 B CN113157305 B CN 113157305B CN 202010077050 A CN202010077050 A CN 202010077050A CN 113157305 B CN113157305 B CN 113157305B
- Authority
- CN
- China
- Prior art keywords
- encrypted
- patch
- patch file
- code segment
- file
- 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
- 238000000034 method Methods 0.000 title claims abstract description 174
- 230000006854 communication Effects 0.000 claims description 95
- 238000004891 communication Methods 0.000 claims description 91
- 238000012545 processing Methods 0.000 claims description 62
- 238000003860 storage Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 20
- 230000008569 process Effects 0.000 description 41
- 238000013461 design Methods 0.000 description 36
- 230000006870 function Effects 0.000 description 31
- 238000010586 diagram Methods 0.000 description 26
- 230000003993 interaction Effects 0.000 description 13
- 238000010295 mobile communication Methods 0.000 description 9
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 7
- 238000012217 deletion Methods 0.000 description 7
- 230000037430 deletion Effects 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000009434 installation Methods 0.000 description 4
- 230000007774 longterm Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
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
-
- 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- 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/602—Providing cryptographic facilities or services
-
- 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/606—Protecting data by securing the transmission between two devices or processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2115—Third party
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种软件升级方法及设备,可用于智能车领域的车载设备升级,在上述方案中,升级服务器可以将满足终端设备的目标应用软件的升级需求的多个中间补丁文件进行拼接合并,这样,终端设备可以仅下载和安装一次合并补丁文件即可实现目标应用软件从当前版本号升级至目标版本号,显然,该方法可以明显的缩短终端设备进行软件升级消耗的时间,可以提高终端设备软件升级效率。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种软件升级方法及设备。
背景技术
随着通信技术的发展和用户日益增长的业务需求,终端设备能够实现的业务越来越多样化。一些终端设备的举例为:手机、平板电脑、智能家居设备、可穿戴设备、物联网(Internetof things,IoT)设备、车联网设备等。
这些终端设备实现的功能和操作是由加载到内部的应用软件实现的。然而,在软件开发阶段,由于软件设计人员考虑不全面或程序功能不完善,在软件发行后,软件开发商需要经常对应用软件进行升级,通常这些升级是以补丁文件的形式发布出去的。其中,补丁文件中包含对应用软件中局部修改的代码。
当软件开发商开发出补丁文件后,将补丁文件提交给空中下载(Over the air,OTA)服务器。OTA服务器通过与终端设备的交互,确定终端设备中应用软件的当前版本,然后OTA服务器将应用软件的当前版本更新的补丁文件添加至OTA数据包(压缩包)发送至终端设备侧。最后,终端设备可以根据从OTA服务器下载的补丁文件对本地的应用软件进行升级。
然而,由于OTA数据包的空间限制,当OTA服务器中比终端设备中的当前版本更新的补丁文件有多个时,终端设备通常需要多个OTA下载过程,从所述OTA服务器中下载这些补丁文件。另外,终端设备下载这些补丁文件后,需要按照补丁文件的版本顺序依次安装。综上所述,传统的OTA升级过程耗时较长对终端设备的工作效率产生的影响。
发明内容
本申请提供了一种软件升级方法及设备,用以解决传统的软件升级过程耗时较长的问题。
第一方面,本申请实施例提供了一种软件升级方法,该方法应用于软件开发设备,该方法包括以下步骤:
软件开发设备生成目标应用软件的补丁文件和所述补丁文件的对应的版本号,其中,所述补丁文件包含第一代码段,所述第一代码段包含第一代码段标识和第一代码内容;所述软件开发设备对所述补丁文件进行加密处理,包括:所述软件开发设备根据第一安全密钥,对所述第一代码内容进行加密;所述软件开发设备根据第一运算密钥,对所述第一代码段标识和通过第一安全密钥加密后的所述第一代码内容进行加密;其中,所述第一运算密钥与所述第一安全密钥不同;所述软件开发设备向升级服务器发送加密后的所述补丁文件和所述补丁文件对应的版本号。
通过以上方法,所述软件开发设备在对每个补丁文件进行加密的过程中,使用不同的密钥分别对第一代码段标识和第一代码内容进行加密,这样,所述升级服务器在对补丁文件进行合并过程中可以仅对加密后的第一代码段标识进行解密,而无法对加密后的第一代码内容进行解密,因此,该方法可以保证补丁文件中代码内容的安全性。
在一种可能的设计中,在所述软件开发设备根据第一运算密钥,对所述第一代码段标识和通过第一安全密钥加密后的所述第一代码内容进行加密之前,所述方法还包括:所述软件开发设备获取所述目标应用软件的标识偏移值;所述软件开发设备根据所述标识偏移值,对所述第一代码段标识进行偏移。
通过以上设计,所述软件开发设备可以对所述补丁文件的第一代码段标识进行标识偏移处理,以保证补丁文件中第一代码段标识的安全性。
在一种可能的设计中,所述补丁文件中还包含补丁头部,其中,所述补丁头部用于指示所述目标应用软件;所述软件开发设备对所述补丁文件进行加密处理,还包括:所述软件开发设备根据所述第一安全密钥,对所述补丁头部进行加密。
通过以上设计,所述软件开发设备可以对所述补丁文件的补丁头部进行加密,从而保证所述补丁头部的安全性。
在一种可能的设计中,所述补丁文件包含至少一个所述第一代码段;所述第一代码段为一行第一代码,所述第一代码段标识为所述第一代码的行号。
第二方面,本申请实施例提供了一种软件升级方法,该方法应用于升级服务器,该方法包括以下步骤:
升级服务器存储目标应用软件加密后的补丁文件和所述补丁文件对应的版本号;其中,所述加密后的补丁文件包含加密后的第一代码段,所述加密后的第一代码段是通过第一运算密钥对第一代码段标识和通过第一安全密钥加密后的第一代码内容进行加密得到的,所述第一运算密钥与所述第一安全密钥不同;所述升级服务器从终端设备接收所述目标应用软件的补丁下载请求;所述升级服务器根据所述补丁下载请求确定所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号;所述升级服务器根据所述当前版本号和所述目标版本号,从本地存储的所述目标应用软件的加密后的补丁文件中,确定中间补丁文件,其中,所述中间补丁文件为版本号大于所述当前版本号,且小于或等于所述目标版本号的加密后的补丁文件;当所述中间补丁文件为多个,所述升级服务器根据第二运算密钥,对每个中间补丁文件进行解密,所述解密包括对每个中间补丁文件包含的加密后的第一代码段进行解密,得到每个中间补丁文件的第一代码段的第一代码段标识和通过第一安全密钥加密后的第一代码内容;所述升级服务器根据所述多个中间补丁文件对应的版本号、每个解密后的中间补丁文件中的第一代码段包含的第一代码段标识,对解密后的所述多个中间补丁文件进行合并,得到所述目标应用软件的合并补丁文件;所述合并补丁文件包含更新后的第一代码段,所述更新后的第一代码段包括对通过第一安全密钥加密后的第一代码内容和更新后的第一代码段标识;所述升级服务器根据所述第一运算密钥对所述合并补丁文件进行加密,包括:根据所述第一运算密钥对所述合并补丁文件中更新后的第一代码段进行加密;所述升级服务器向所述终端设备发送加密后的所述合并补丁文件。
通过该方法,所述升级服务器可以将满足终端设备的所述目标应用软件的升级需求的多个中间补丁文件进行拼接合并,这样,所述终端设备可以仅下载和安装一次合并补丁文件即可实现目标应用软件从当前版本号升级至目标版本号,显然,该方法可以明显的缩短终端设备进行软件升级消耗的时间,可以提高终端设备软件升级效率。
在一种可能的设计中,所述升级服务器根据所述多个中间补丁文件对应的版本号、每个解密后的中间补丁文件的第一代码段包含的第一代码段标识,对解密后的所述多个中间补丁文件进行合并,得到所述目标应用软件的合并补丁文件,包括:
所述升级服务器根据存储的所述多个中间补丁文件对应的版本号的先后顺序,对解密后的所述多个中间补丁文件进行排序,得到文件序列,其中,版本号最先的解密后的中间补丁文件位于所述文件序列的首位,版本号最后的解密后的中间补丁文件位于所述文件序列的末位;所述升级服务器根据每个解密后的中间补丁文件中的第一代码段包含的第一代码段标识,按照所述文件序列的顺序依次将每个解密后的中间补丁文件进行合并,得到所述合并补丁文件。
该设计可以保证所述升级服务器生成的合并补丁文件的准确性,即所述终端设备安装所述合并补丁文件的效果与按照版本号的先后顺序依次安装所述多个中间补丁文件的效果相同。
在一种可能的设计中,所述加密后的补丁文件中还包含加密后的补丁头部,所述加密后的补丁头部是通过所述第一安全密钥加密的;所述合并补丁文件中还包含所述加密后的补丁头部。
在一种可能的设计中,所述升级服务器确定所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号,包括:
所述升级服务器从所述补丁下载请求中获取所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号。
通过该设计,所述终端设备可以通过补丁下载请求发送自身对所述目标应用软件的升级需求。
在一种可能的设计中,所述加密后的补丁文件包含至少一个加密后的第一代码段;所述加密后的第一代码段为加密后的一行第一代码,所述第一代码段标识为所述第一代码的行号;所述合并补丁文件包含至少一个更新后的第一代码段。
第三方面,本申请实施例提供了一种软件升级方法,该方法应用于终端设备,该方法包括以下步骤:
终端设备向所述升级服务器发送目标应用软件的补丁下载请求;所述终端设备从所述升级服务器接收所述目标应用软件的加密后的合并补丁文件,其中,所述加密后的合并补丁文件是所述升级服务器对所述目标应用软件的多个中间补丁文件进行合并生成的,所述加密后的合并补丁文件包含加密后的第一代码段,所述加密后的第一代码段是通过第一运算密钥对第一代码段进行加密得到的,所述第一代码段包含第一代码段标识和通过第一安全密钥加密后的第一代码内容;所述第一运算密钥与所述第一安全密钥不同;所述终端设备对所述加密后的合并补丁文件进行解密处理,得到合并补丁文件,包括:所述终端设备根据第二运算密钥,对所述加密后的第一代码段进行解密,得到所述第一代码段;所述终端设备根据第二安全密钥,对所述第一代码段包含的通过第一安全密钥加密后的第一代码内容进行解密,得到第一代码内容;所述终端设备根据所述合并补丁文件中的所述第一代码段包含的第一代码段标识和所述第一代码内容,对已安装的所述目标应用软件进行升级。
通过该方法,所述升级服务器可以将满足终端设备的所述目标应用软件的升级需求的多个中间补丁文件进行拼接合并,这样,所述终端设备可以仅下载和安装一次合并补丁文件即可实现目标应用软件从当前版本号升级至目标版本号,显然,该方法可以明显的缩短终端设备进行软件升级消耗的时间,可以提高终端设备软件升级效率。
在一种可能的设计中,所述加密后的合并补丁文件中还包含加密后的补丁头部,所述加密后的补丁头部是通过第一安全密钥加密的;所述终端设备对所述加密后的合并补丁文件进行解密处理,还包括:所述终端设备根据所述第二安全密钥,对所述加密后的合并补丁文件中的所述加密后的补丁头部进行解密,得到补丁头部。
在一种可能的设计中,在所述终端设备对所述加密后的合并补丁文件进行解密处理之后,在所述终端设备根据所述合并补丁文件中的所述第一代码段包含的第一代码段标识和第一,对已安装的所述目标应用软件进行升级之前,还包括:所述终端设备获取所述目标应用软件的标识偏移值;所述终端设备根据所述标识偏移值,对所述合并补丁文件中所述第一代码段包含的所述第一代码段标识进行偏移。
通过该设计,由于为了保证补丁文件内第一代码段标识的安全性,软件开发设备在生成补丁文件后,通过对补丁文件中的第一代码段标识进行偏移处理,因此,此处为了保证所述终端设备能够成功安装所述合并补丁文件,因此,所述终端设备也需要对所述合并补丁文件中的第一代码段标识进行偏移处理,以还原到第一代码段标识的原取值。需要注意的是,所述软件开发设备和所述终端设备进行的标识偏移处理为互逆的操作。例如若所述软件开发设备在补丁文件中第一代码段标识的取值的基础上,增加所述标识偏移值,则所述软件开发设备在合并补丁文件中第一代码段标识的取值的基础上,减去所述标识偏移值。
在一种可能的设计中,所述补丁下载请求中包含所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号。
通过该设计,所述终端设备可以通过补丁下载请求发送自身对所述目标应用软件的升级需求。
在一种可能的设计中,所述加密后的合并补丁文件包含至少一个加密后的第一代码段;所述加密后的第一代码段为加密后的一行第一代码,所述第一代码段标识为所述第一代码的行号。
第四方面,本申请实施例提供了一种软件升级方法,该方法应用于软件开发设备,该方法包括以下步骤:
软件开发设备生成目标应用软件的补丁文件和所述补丁文件的对应的版本号,其中,所述补丁文件包含第一代码段,所述第一代码段包含第一代码段标识和第一代码内容;所述软件开发设备对所述补丁文件进行加密处理,包括:所述软件开发设备根据第一安全密钥,对所述第一代码内容进行加密;所述软件开发设备根据第一运算密钥,对所述第一代码段标识进行加密;其中,所述第一运算密钥与所述第一安全密钥不同;所述软件开发设备向升级服务器发送加密后的所述补丁文件和所述补丁文件对应的所述版本号。
通过以上方法,所述软件开发设备在对每个补丁文件进行加密的过程中,使用不同的密钥分别对第一代码段标识和第一代码内容进行加密,这样,所述升级服务器在对补丁文件进行合并过程中可以仅对加密后的第一代码段标识进行解密,而无法对加密后的第一代码内容进行解密,因此,该方法可以保证补丁文件中代码内容的安全性。
在一种可能的设计中,在所述软件开发设备根据第一运算密钥,对所述第一代码段标识进行加密之前,所述方法还包括:所述软件开发设备获取所述目标应用软件的标识偏移值;所述软件开发设备根据所述标识偏移值,对所述第一代码段标识进行偏移。
通过以上设计,所述软件开发设备可以对所述补丁文件的第一代码段标识进行标识偏移处理,以保证补丁文件中第一代码段标识的安全性。
在一种可能的设计中,所述补丁文件中还包含补丁头部,其中,所述补丁头部用于指示所述目标应用软件;所述软件开发设备对所述补丁文件进行加密处理,还包括:所述软件开发设备根据所述第一安全密钥,对所述补丁头部进行加密。
通过以上设计,所述软件开发设备可以对所述补丁文件的补丁头部进行加密,从而保证所述补丁头部的安全性。
在一种可能的设计中,所述补丁文件包含至少一个所述第一代码段;所述第一代码段为一行第一代码,所述第一代码段标识为所述第一代码的行号。
第五方面,本申请实施例提供了一种软件升级方法,该方法应用于升级服务器,该方法包括以下步骤:
升级服务器存储目标应用软件的加密后的补丁文件和所述补丁文件对应的版本号;其中,所述加密后的补丁文件包含第一代码段,所述第一代码段包含加密后的第一代码段标识和加密后的第一代码内容;所述加密后的第一代码段标识是通过第一运算密钥对第一代码段标识加密得到的,所述加密后的第一代码内容是通过第一安全密钥对第一代码内容加密得到的,所述第一运算密钥与所述第一安全密钥不同;所述升级服务器从终端设备接收所述目标应用软件的补丁下载请求;所述升级服务器根据所述补丁下载请求确定所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号;所述升级服务器根据所述当前版本号和所述目标版本号,从本地存储的所述目标应用软件的加密后的补丁文件中,确定中间补丁文件,其中,所述中间补丁文件为版本号大于所述当前版本号,且小于或等于所述目标版本号的加密后的补丁文件;当所述中间补丁文件为多个时,所述升级服务器根据第二运算密钥,对每个中间补丁文件进行解密,所述解密包括对每个中间补丁文件的第一代码段包含的加密后的第一代码段标识进行解密,得到每个中间补丁文件的第一代码段包含的第一代码段标识;所述升级服务器根据所述多个中间补丁文件对应的版本号、每个解密后的中间补丁文件中的第一代码段包含的第一代码段标识,对解密后的所述多个中间补丁文件进行合并,得到所述目标应用软件的合并补丁文件;其中,所述合并补丁文件包含更新后的第一代码段,所述更新后的第一代码段包括对通过第一安全密钥加密后的第一代码内容和更新后的第一代码段标识;所述升级服务器根据所述第一运算密钥对所述合并补丁文件进行加密,包括:根据所述第一运算密钥对所述合并补丁文件中更新后的第一代码段标识进行加密;所述升级服务器向所述终端设备发送加密后的所述合并补丁文件。
通过该方法,所述升级服务器可以将满足终端设备的所述目标应用软件的升级需求的多个中间补丁文件进行拼接合并,这样,所述终端设备可以仅下载和安装一次合并补丁文件即可实现目标应用软件从当前版本号升级至目标版本号,显然,该方法可以明显的缩短终端设备进行软件升级消耗的时间,可以提高终端设备软件升级效率。
在一种可能的设计中,所述升级服务器根据所述多个中间补丁文件对应的版本号、每个解密后的中间补丁文件的第一代码段包含的第一代码段标识,对解密后的所述多个中间补丁文件进行合并,得到所述目标应用软件的合并补丁文件,包括:
所述升级服务器根据存储的所述多个中间补丁文件对应的版本号的先后顺序,对解密后的所述多个中间补丁文件进行排序,得到文件序列,其中,版本号最先的解密后的中间补丁文件位于所述文件序列的首位,版本号最后的解密后的中间补丁文件位于所述文件序列的末位;所述升级服务器根据每个解密后的中间补丁文件中的第一代码段包含的第一代码段标识,按照所述文件序列的顺序依次将每个解密后的中间补丁文件进行合并,得到所述合并补丁文件。
该设计可以保证所述升级服务器生成的合并补丁文件的准确性,即所述终端设备安装所述合并补丁文件的效果与按照版本号的先后顺序依次安装所述多个中间补丁文件的效果相同。
在一种可能的设计中,所述加密后的补丁文件中还包含加密后的补丁头部,所述加密后的补丁头部是通过所述第一安全密钥加密的;所述合并补丁文件中还包含所述加密后的补丁头部。
在一种可能的设计中,所述升级服务器确定所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号,包括:
所述升级服务器从所述补丁下载请求中获取所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号。
通过该设计,所述终端设备可以通过补丁下载请求发送自身对所述目标应用软件的升级需求。
在一种可能的设计中,所述加密后的补丁文件包含至少一个加密后的第一代码段;所述加密后的第一代码段为加密后的一行第一代码,所述第一代码段标识为所述第一代码的行号;所述合并补丁文件包含至少一个更新后的第一代码段。
第六方面,本申请实施例提供了一种软件升级方法,该方法应用于终端设备,该方法包括以下步骤:
终端设备向所述升级服务器发送目标应用软件的补丁下载请求;所述终端设备从所述升级服务器接收所述目标应用软件的加密后的合并补丁文件,其中,所述加密后的合并补丁文件是所述升级服务器对所述目标应用软件的多个目标补丁文件进行合并生成的,所述加密后的合并补丁文件包含第一代码段,所述第一代码段包含加密后的第一代码段标识和加密后的第一代码内容,所述加密后的第一代码段标识是通过第一运算密钥对第一代码段进行加密得到的,所述加密后的第一代码内容是通过第一安全密钥对第一代码内容加密得到的,所述第一运算密钥与所述第一安全密钥不同;所述终端设备对所述加密后的合并补丁文件进行解密处理,得到合并补丁文件,包括:所述终端设备根据第二运算密钥,对所述加密后的第一代码段标识进行解密,得到第一代码段标识;所述终端设备根据第二安全密钥,对所述加密后的第一代码内容进行解密,得到第一代码内容;所述终端设备根据所述合并补丁文件中的所述第一代码段包含的第一代码段标识和所述第一代码内容,对已安装的所述目标应用软件进行升级。
通过该方法,所述升级服务器可以将满足终端设备的所述目标应用软件的升级需求的多个中间补丁文件进行拼接合并,这样,所述终端设备可以仅下载和安装一次合并补丁文件即可实现目标应用软件从当前版本号升级至目标版本号,显然,该方法可以明显的缩短终端设备进行软件升级消耗的时间,可以提高终端设备软件升级效率。
在一种可能的设计中,所述加密后的合并补丁文件还包含加密后的补丁头部,所述加密后的补丁头部是通过第一安全密钥加密的;所述终端设备对所述加密后的合并补丁文件进行解密处理,还包括:所述终端设备根据所述第二安全密钥,对所述加密后的合并补丁文件的所述加密后的补丁头部进行解密,得到补丁头部。
在一种可能的设计中,在所述终端设备对所述加密后的合并补丁文件进行解密处理之后,在所述终端设备根据所述合并补丁文件中的所述第一代码段包含的第一代码段标识和所述第一代码内容,对已安装的所述目标应用软件进行升级之前,还包括:所述终端设备获取所述目标应用软件的标识偏移值;所述终端设备根据所述标识偏移值,对所述合并补丁文件中所述第一代码段包含的所述第一代码段标识进行偏移。
通过该设计,由于为了保证补丁文件内第一代码段标识的安全性,软件开发设备在生成补丁文件后,通过对补丁文件中的第一代码段标识进行偏移处理,因此,此处为了保证所述终端设备能够成功安装所述合并补丁文件,因此,所述终端设备也需要对所述合并补丁文件中的第一代码段标识进行偏移处理,以还原到第一代码段标识的原取值。需要注意的是,所述软件开发设备和所述终端设备进行的标识偏移处理为互逆的操作。例如若所述软件开发设备在补丁文件中第一代码段标识的取值的基础上,增加所述标识偏移值,则所述软件开发设备在合并补丁文件中第一代码段标识的取值的基础上,减去所述标识偏移值。
在一种可能的设计中,所述补丁下载请求中包含所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号。
通过该设计,所述终端设备可以通过补丁下载请求发送自身对所述目标应用软件的升级需求。
在一种可能的设计中,所述加密后的合并补丁文件包含至少一个第一代码段;所述第一代码段为一行第一代码,所述第一代码段标识为所述第一代码的行号。
第七方面,本申请实施例提供了一种软件开发设备,包括用于执行以上第一或第四方面中各个步骤的单元。
第八方面,本申请实施例提供了一种升级服务器,包括用于执行以上第二或第五方面中各个步骤的单元。
第九方面,本申请实施例提供了一种终端设备,包括用于执行以上第三或第六方面中各个步骤的单元。
第十方面,本申请实施例提供了一种软件开发设备,包括至少一个处理元件和至少一个存储元件,其中该至少一个存储元件用于存储程序和数据,该至少一个处理元件用于执行本申请以上第一或第四方面提供的方法。
第十一方面,本申请实施例提供了一种升级服务器,包括至少一个处理元件和至少一个存储元件,其中该至少一个存储元件用于存储程序和数据,该至少一个处理元件用于执行本申请以上第二或第五方面提供的方法。
第十二方面,本申请实施例提供了一种终端设备,包括至少一个处理元件和至少一个存储元件,其中该至少一个存储元件用于存储程序和数据,该至少一个处理元件用于执行本申请以上第三或第六方面提供的方法。
第十三方面,本申请实施例提供了一种软件升级系统,包括软件开发设备、升级服务器和终端设备,其中,所述软件开发设备具有执行本申请第一方面提供的方法的功能,所述升级服务器具有执行本申请第二方面提供的方法的功能,所述终端设备具有执行本申请第三方面提供的方法的功能;或者所述软件开发设备具有执行本申请第四方面提供的方法的功能,所述升级服务器具有执行本申请第五方面提供的方法的功能,所述终端设备具有执行本申请第六方面提供的方法的功能。
第十四方面,本申请实施例还提供了一种计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行上述第一至第六方面中任一方面提供的方法。
第十五方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序被计算机执行时,使得所述计算机执行上述第一至第六方面中任一方面提供的方法。
第十六方面,本申请实施例还提供了一种芯片,所述芯片用于读取存储器中存储的计算机程序,执行上述第一至第六方面中任一方面提供的方法。
第十七方面,本申请实施例还提供了一种芯片系统,该芯片系统包括处理器,用于支持计算机装置实现上述第一至第六方面中任一方面提供的方法。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器用于保存该计算机装置必要的程序和数据。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
附图说明
图1为本申请实施例提供的一种软件升级系统的架构图;
图2为本申请实施例提供的一种软件升级方法的流程图;
图3为本申请实施例提供的一种补丁文件的生成示例图;
图4A为本申请实施例提供的第一种对补丁文件加密的示例图;
图4B为本申请实施例提供的第二种对补丁文件加密的示例图;
图4C为本申请实施例提供的第三种对补丁文件加密的示例图;
图4D为本申请实施例提供的第四种对补丁文件加密的示例图;
图5A为本申请实施例提供的一种对补丁文件进行合并的方法示意图;
图5B为本申请实施例提供的另一种对补丁文件进行合并的方法示意图;
图6A为本申请实施例提供的一种对合并补丁文件的行号进行加密的过程示意图;
图6B为本申请实施例提供的另一种对合并补丁文件的行号进行加密的过程示意图;
图7A为本申请实施例提供的第一种对合并补丁文件进行解密的过程示意图;
图7B为本申请实施例提供的第二种对合并补丁文件进行解密的过程示意图;
图7C为本申请实施例提供的第三种对合并补丁文件进行解密的过程示意图;
图7D为本申请实施例提供的第四种对合并补丁文件进行解密的过程示意图;
图7E为本申请实施例提供的第五种对合并补丁文件进行解密的过程示意图;
图7F为本申请实施例提供的第六种对合并补丁文件进行解密的过程示意图;
图8为本申请实施例提供的一种软件开发设备与升级服务器之间的通信流程图;
图9为本申请实施例提供的一种升级服务器与终端设备之间的通信流程图;
图10为本申请实施例提供的另一种升级服务器与终端设备之间的通信流程图;
图11为本申请实施例提供的一种通信装置的结构图;
图12为本申请实施例提供的一种通信设备的结构图。
具体实施方式
本申请提供一种软件升级方法及设备,用以缩短终端设备进行软件升级消耗的时间。其中,方法和设备是基于同一技术构思的,由于方法及设备解决问题的原理相似,因此设备与方法的实施可以相互参见,重复之处不再赘述。
在本申请实施例提供的方案中,软件开发设备将每次生成的补丁文件进行加密后,将加密后的补丁文件以及对应的版本号发送给升级服务器保存;升级服务器可以根据终端设备对目标应用软件的升级需求,在本地存储的所述目标应用软件的补丁文件中,确定多个中间补丁文件;然后,所述升级服务器对每个中间补丁文件中加密后的第一代码段标识进行解密,并根据版本号和每个中间补丁文件中第一代码段标识,对所述多个中间补丁文件进行合并,得到合并补丁文件,并将该合并补丁文件加密后发送给终端设备,以使所述终端设备可以根据所述合并补丁文件进行所述目标应用软件的软件升级。
在上述方案中,所述升级服务器可以将满足终端设备的所述目标应用软件的升级需求的多个中间补丁文件进行拼接合并,这样,所述终端设备可以仅下载和安装一次合并补丁文件即可实现目标应用软件从当前版本号升级至目标版本号,显然,该方法可以明显的缩短终端设备进行软件升级消耗的时间,可以提高终端设备软件升级效率。另外,所述软件开发设备在对每个补丁文件进行加密的过程中,使用不同的密钥分别对第一代码段标识和第一代码内容进行加密,这样,所述升级服务器在对补丁文件进行合并过程中可以仅对加密后的第一代码段标识进行解密,而无法对加密后的第一代码内容进行解密,因此,该方法可以保证补丁文件中代码内容的安全性。
以下,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
1)、终端设备,是一种能够通过安装应用软件,向用户提供相应的语音、视频、拍摄、数据连通性等各种服务功能的设备。终端设备又可以称为用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)等。
例如,终端设备可以为具有无线连接功能的手持式设备、车载设备等。目前,一些终端设备的举例为:手机(mobile phone)、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)、智能销售终端(point of sale,POS)、可穿戴设备,虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端、各类智能仪表(智能水表、智能电表、智能燃气表)、车联网中的智能汽车、车载单元(on board unit,OBU)、路侧单元(road side unit,RSU)、路侧设备(road side equipment,RSE)、远程通信科学盒子(telematics box,T-Box)、电子控制单元(electronic control unit,ECU)等。
2)、应用,能够为用户提供对应的服务功能。终端设备可以通过安装该应用的应用软件,从而运行该应用,实现该应用的服务功能。例如,具有提供拍摄服务功能的相机应用,终端设备需要安装相机应用软件,并运行相机应用时,即可以向用户提供拍摄服务功能。又例如,具有提供聊天服务功能的微信应用或QQ应用等,终端设备需要安装微信应用软件或QQ应用软件,并运行微信应用或QQ应用,即可以向用户提供聊天服务功能。
需要说明的是,应用的应用软件可以由终端设备的供应商开发,或者由应用供应商开发,本申请对此不作限定。
由于之前软件设计人员考虑不全面或程序功能不完善,或者是随着用户对应用的服务需求的不断增加,软件设计人员通常在应用软件发现后,还需要开发应用软件的补丁文件以对应用软件进行升级,从而修补应用软件的漏洞或扩展应用功能。
3)、软件开发设备,是软件设计人员针对应用软件开发补丁文件的设备。其中,所述软件开发设备可以属于应用供应商或能够安装应用软件的终端设备供应商。本申请不限定所述软件开发设备的形式,例如,所述软件开发设备可以为计算机、服务器等设备。
4)、升级服务器,是能够存储应用软件的补丁文件,并为终端设备提供补丁文件下载服务的第三方设备。可选的,所述升级服务器可以为OTA服务器等、云服务器等。
所述升级服务器可以与软件开发设备建立连接,从而获取软件开发设备新开发的补丁文件,并根据对应的版本号对补丁文件进行存储。另外,所述升级服务器可以与终端设备建立连接,从而获取终端设备对应用软件的升级需求,从而根据该升级需求选择对应的所述应用软件的多个补丁文件,并将选择的多个补丁文件进行拼接合并,发送给终端设备,以使所述终端设备可以进行应用软件的升级。
5)代码段,用于标识一段代码。本申请不对所述代码段中包含的代码的长度进行限定。所述代码段中可以包含一行代码,也可以包含多行代码。本申请以下实施例中以所述代码段包含一行代码为例进行说明。另外,需要注意的是,当所述代码段为一行代码时,所述代码段标识为该行代码的行号。
6)、多个,是指两个或两个以上。
7)、至少一个,是指一个或多个。
8)、“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
下面结合附图对本申请实施例进行具体说明。
图1示出了本申请提供的软件升级方法适用的软件升级系统架构。参阅图1所示,该系统中包含终端设备、升级服务器、软件开发设备等。
所述软件开发设备,用于开发应用的应用软件,以及开发该应用软件的补丁文件,并确定开发的补丁文件的版本号。可选的,所述软件开发设备可以属于应用供应商或终端设备供应商,本申请对此不作限定。
所述升级服务器,在与软件开发设备建立连接后,接收软件开发设备发送的应用软件的补丁文件,并根据每个补丁文件的版本号存储该补丁文件。所述升级服务器还可以与终端设备建立连接,并通过与所述终端设备的交互,确定所述终端设备对应用软件的升级需求,从而根据该升级需求选择对应的所述应用软件的多个中间补丁文件,并将选择的多个中间补丁文件进行拼接合并,生成合并补丁文件发送给终端设备,以使所述终端设备可以根据该合并补丁文件进行应用软件的升级。所述升级服务器还可以称为OTA服务器。
所述终端设备,可以通过运行应用软件,为用户提供相应服务。所述终端设备可以从所述升级服务器下载应用软件的补丁文件,对已经安装的应用软件进行升级。
根据不同的应用场景,所述终端设备的表现形式也不同,如图所示。示例性的,在传统的移动通信场景中,终端设备可以是手机、平板电脑等。在物联网(internet ofthings,IoT)通信场景中,终端设备可以是移动互联网设备、可穿戴设备、工业中或智能家居中的各种无线终端。在车联网或车到万物(vehicle to everything,V2X)通信场景中,终端设备可以是车辆、OBU、RSU、RSE、ECU等。
需要说明的是,在本申请提供的系统中,终端设备可以通过移动通信网络(包括接入网和核心网)与所述升级服务器建立通信连接,进行通信交互。所述终端设备也可以通过至少一个中继设备,在通过所述移动通信网络与所述升级服务器建立通信连接,进行通信交互。例如,当所述终端设备为V2X通信场景中的ECU时,如图中所示,所述ECU可以依次通过以下中继设备:域控制器(domain controller,DC),网关(gateway,GW)和T-Box,最终连接升级服务器。
所述升级服务器可以通过传统的互联网协议(internet protocol,IP)网络与所述软件开发设备建立通信连接,进行通信交互。
另外,图2所示的架构可以应用到多种通信场景中,例如,第五代(The 5thGeneration,5G)通信系统、未来的第六代通信系统和演进的其他通信系统、长期演进(LongTerm Evolution,LTE)通信系统、车到万物(vehicle to everything,V2X)、长期演进-车联网(LTE-vehicle,LTE-V)、车到车(vehicle to vehicle,V2V)、车联网、机器类通信(Machine Type Communications,MTC)、物联网(internet of things,IoT)、长期演进-机器到机器(LTE-machine to machine,LTE-M)、机器到机器(machine to machine,M2M)等通信场景中,本申请对此不作限定。
另外,需要注意的是,在本申请各个实施例中,所述终端设备安装目标应用的目标版本号的补丁文件后,所述终端设备中已安装的所述目标应用软件的当前版本号即为该目标版本号。即补丁文件的版本号即为安装该补丁文件后应用软件的版本号,换句话说,补丁文件和应用软件实际上是共用一个版本号编号机制。
为了缩短软件升级系统中的终端设备进行软件升级消耗的时间,本申请实施例提供了一种软件升级方法。其中,所述方法可以适用于如图1所示的软件升级系统中。下面参阅图2所示的流程图对本申请实施例提供的方法进行详细介绍。为了便于说明和举例,在以下实施例中,以一个代码段为一行代码(在本申请实施例中,代码还可以称为软件代码)为例进行具体说明,此时代码段标识即为行号。还需要说明的是,该实施例并不构成对本申请提供的软件升级方法的限定。
S201:软件开发设备生成目标应用软件的补丁文件和所述补丁文件的对应的版本号,其中,所述补丁文件中包含至少一行软件代码,每行软件代码中包含行号和代码内容。
其中,该版本号的补丁文件是所述软件开发设备基于前一版本的目标应用软件的软件代码生成的。
可选的,所述补丁文件中还包含补丁头部,所述补丁头部用于指示所述目标应用软件,可选的,所述补丁头部还可以包含所述补丁文件对应的版本号等信息。
下面参阅图3为例,对补丁文件的生成过程进行说明。假设目标应用软件的文件名为APP1。
当软件开发设备需要在版本号为V1的目标应用软件的基础上,在第2行和第3行之间增加行:xxxx,以生成版本号为V2的目标应用软件时,则所述软件开发设备可以生成版本号为V2的补丁文件P1,这样,安装有版本号V1的目标应用软件的终端设备可以通过下载并安装补丁文件P1,将目标应用软件升级到V2(如图中所示)。
当软件开发设备需要在版本号为V2的目标应用软件的基础上,删除第2行,并在第4行和第5行之间增加行:yyyy,以生成版本号为V3的目标应用软件时,则所述软件开发设备可以生成版本号为V3的补丁文件P2,这样,安装有版本号V2的目标应用软件的终端设备可以通过下载并安装补丁文件P2,将目标应用软件升级到V3(如图中所示)。
当软件开发设备需要在版本号为V3的目标应用软件的基础上,删除第2行,以生成版本号为V4的目标应用软件时,则所述软件开发设备可以生成版本号为V4的补丁文件P3,这样,安装有版本号V3的目标应用软件的终端设备可以通过下载并安装补丁文件P3,将目标应用软件升级到V4(如图中所示)。
如图中所示,每个目标应用软件的文件的每行软件代码中包含两部分:行号和代码内容。每个补丁文件也包含至少一行软件代码(补丁本体),且每行软件代码也包含两部分:行号(不仅包含行的标识还包含代表增加指示或删除指示)和代码内容;每个补丁文件还包括补丁头部,所述补丁头部中可以包含指示所述目标应用软件的信息(例如所述目标应用软件的文件名,或所述目标应用软件的标识)。
S202:所述软件开发设备对所述补丁文件进行加密处理。
在本申请实施例中,第一安全密钥和第一运算密钥均为所述软件开发设备针对所述目标应用软件生成的,其中所述第一安全密钥用于对所述目标应用软件的每个补丁文件中的代码内容进行加密,所述第一运算密钥用于对所述目标应用软件的每个补丁文件中的行号/软件代码进行加密。
需要说明的是,在本申请实施例中,软件升级系统可以采用两种加密方式对所述目标应用软件的补丁文件进行加密:对称加密方式和非对称加密方式。
第一种实施方式:所述系统采用对称加密方式对补丁文件进行加密。可选的,所述系统可以采用高级加密标准(advanced encryption standard,AES)算法等各种对称加密方式,对补丁文件进行加密。
在本实施方式中,所述软件开发设备管理维护所述第一安全密钥和所述第一运算密钥,并将所述第一运算密钥通知给软件服务器,将所述第一安全密钥(可选的,还包括所述第一运算密钥)通知给终端设备。
第二种实施方式:所述系统采用非对称加密方式对补丁文件进行加密。
在本实施例方式中,所述软件开发设备管理维护有安全密钥对(第一安全密钥、第二安全密钥)和运算密钥对(第一运算密钥,第二运算密钥)。
其中,所述第二安全密钥用于其他设备对补丁文件中的代码内容进行解密,第二运算密钥用于其他设备对补丁文件中的行号进行解密。因此,所述软件开发设备可以将所述第二运算密钥(可选的,还包括所述第一运算密钥)通知给软件服务器,并将所述第二安全密钥(可选的,还包括所述第二运算密钥)通知给终端设备。
可选的,在执行S202时,所述软件开发设备可以但不限于通过以下两种实现方式,对所述补丁文件进行加密处理。
第一种实现方式:所述软件开发设备使用所述第一安全密钥,对所述补丁文件中的每行软件代码包含的代码内容进行加密;所述软件开发设备使用所述第一运算密钥,对所述补丁文件中的每行软件代码包含的行号进行加密。
当所述补丁文件中还包含补丁头部时,所述软件开发设备使用所述第一安全密钥,对所述补丁文件的补丁头部进行加密。
示例性的,以图3中的补丁文件P1为例,所述软件开发设备可以使用第一安全密钥对补丁头部和补丁本体中每行软件代码包含的代码内容进行加密,并使用第一运算密钥对补丁本体中每行软件代码包含的行号进行加密,最终得到加密后的补丁文件P1。具体加密过程可以参阅图4A所示。
可选的,为了保证升级服务器无法确定补丁文件中每行软件代码变更的具体行号,保证补丁文件中行号的安全性,所述软件开发设备还可以在对补丁本体中每行软件代码包含的行号进行加密之前,采用以下步骤对行号进行偏移:
所述软件开发设备获取所述目标应用软件的行号偏移值;
所述软件开发设备根据所述行号偏移值,对每行软件代码包含的行号进行偏移。例如,所述软件开发设备可以将每行软件代码包含的行号加上(或减去)所述行号偏移值。
其中,每个目标应用软件对应一个行号偏移值,该行号偏移值可以是为一个随机数。所述行号偏移值可以跟随所述补丁文件发送,例如,所述行号偏移值可以保存到补丁文件头部。
示例性的,继续图3中的补丁文件P1为例,所述软件开发设备先对补丁文件P1中每行软件代码包含的行号进行行偏移,将行号“3+”调整为“259+”;然后再使用第一安全密钥对补丁头部和补丁本体中每行软件代码包含的代码内容进行加密,并使用第一运算密钥对补丁本体中每行软件代码包含的行号进行加密,最终得到加密后的补丁文件P1。具体加密过程可以参阅图4B所示。
第二种实现方式:所述软件开发设备使用所述第一安全密钥,对所述补丁文件中的每行软件代码的代码内容进行加密;所述软件开发设备使用所述第一运算密钥,对所述补丁文件中的行号和使用所述第一安全密钥加密后的代码内容进行加密。
当所述补丁文件中还包含补丁头部时,所述软件开发设备使用所述第一安全密钥,对所述补丁文件的补丁头部进行加密。
示例性的,继续以图3中的补丁文件P1为例,所述软件开发设备可以使用第一安全密钥对补丁头部和补丁本体中每行软件代码包含的代码内容进行加密,然后使用第一运算密钥对补丁本体中每行软件代码包含的行号和加密后的代码内容进行加密,最终得到加密后的补丁文件P1。具体加密过程可以参阅图4C所示。
可选的,为了保证补丁文件中行号的安全性,所述软件开发设备还可以在对补丁本体中每行软件代码包含的行号进行加密之前,对行号进行偏移。具体步骤可以参考第一种实现方式中对行号进行偏移的描述,此处不再赘述。
示例性的,继续图3中的补丁文件P1为例,所述软件开发设备先对补丁文件P1中每行软件代码包含的行号进行行偏移,将行号“3+”调整为“259+”;然后再使用第一安全密钥对补丁头部和补丁本体中每行软件代码包含的代码内容进行加密,再使用第一运算密钥对补丁本体中每行软件代码包含的行号和加密后的代码内容进行加密,最终得到加密后的补丁文件P1。具体加密过程可以参阅图4D所示。
通过步骤S202,所述软件开发设备可以使用不同的密钥分别对补丁文件中的每行软件代码中的行号和代码内容进行加密,这样,当补丁文件发送到升级服务器后,所述升级服务器可以仅对每行软件代码中的加密行号进行解密,而无法对每行软件代码中的代码内容进行解密,因此,该方法还可以保证补丁文件中代码内容的安全性。
S203:所述软件开发设备向升级服务器发送所述加密后的补丁文件和所述补丁文件(或所述加密后的补丁文件)对应的所述版本号。所述升级服务器从所述软件开发设备接收所述目标应用软件的所述加密后的补丁文件和对应的版本号。
在一种实施方式中,所述软件开发设备可以将所述目标应用软件的信息,以及所述补丁文件的安装条件信息等信息一起发送给升级服务器。其中,所述补丁文件的安装条件信息可以但不限于包括:对终端设备的硬件和/或软件的限制条件。
可选的,在本申请实施例中,所述软件开发设备和所述升级服务器之间可以通过建立的传输层安全通道,以进行通信交互。示例性的,所述传输层安全通道可以为传输层安全协议(Transport Layer Security,TLS)通道或安全套接层协议(Secure SocketsLayer,SSL)通道。
S204:所述升级服务器存储接收到的所述加密后的补丁文件和所述补丁文件对应的所述版本号。
当所述升级服务器还接收到所述目标应用软件的信息,以及所述补丁文件的安装条件信息等信息后,也对这些信息进行保存。
可选的,所述升级服务器在接收到新的版本号的加密后的补丁文件后,可以向终端设备进行推送该新的版本号;或者所述升级服务器可以定期或周期性的向终端设备进行推送该新的版本号。
S205:终端设备向所述升级服务器发送目标应用软件的补丁下载请求。所述升级服务器从终端设备接收所述目标应用软件的补丁下载请求。
S206:所述升级服务器确定所述终端设备的升级需求,即确定所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号。
可选的,所述升级服务器可以但不限于通过以下方式确定所述终端设备升级需求:
方式一:当所述终端设备发送的所述补丁下载请求中包含所述当前版本号和所述目标版本号时,所述升级服务器从所述补丁下载请求中获取所述当前版本号和所述目标版本号。
方式二:所述升级服务器可以通过与所述终端设备的通信交互,确定所述终端设备是否安装所述目标应用软件、所述终端设备的硬件和/或软件信息,以及所述当前版本号;然后所述升级服务器可以根据保存的补丁文件的版本号、所述补丁文件的安装条件信息等信息,确定所述目标版本号。
方式三:所述升级服务器可以从所述补丁下载请求中获取所述当前版本号,或者通过与所述终端设备的通信交互,确定所述当前版本号;然后所述升级服务器将保存的最新的版本号作为所述目标版本号。
S207:所述升级服务器根据所述当前版本号和所述目标版本号,从本地存储的所述目标应用软件的加密后的补丁文件中,选择多个中间补丁文件,其中,每个中间补丁文件对应的版本号大于所述当前版本号,且小于或等于所述目标版本号。
S208:所述升级服务器根据第二运算密钥,对每个中间补丁文件进行解密。
通过以上S202中所述软件开发设备对所述补丁文件进行加密处理的具体描述可知,所述系统可以采用对称加密方式或非对称加密方式对补丁文件进行加密。因此,在本步骤中,也可以对应包含以下两种实施方式。
第一种实施方式:所述系统采用对称加密方式对补丁文件进行加密。
在该实施方式中,所述第二运算密钥与所述第一运算密钥相同。
第二种实施方式:所述系统采用非对称加密方式对补丁文件进行加密。
在该实施方式中,所述第二运算密钥与所述第一运算密钥相同。
其中,所述第二运算密钥为所述升级服务器从所述软件开发设备接收的。
另外,所述升级服务器对加密后的行号进行解密的方式与所述软件开发设备对补丁文件进行加密的实现方式相关。因此,对应的,所述升级服务器也可以但不限于通过以下两种实现方式,对中间补丁文件中的加密后的行号进行解密。
第一种实现方式:当所述软件开发设备通过以上第一种实现方式,对每个补丁文件进行加密处理的情况下,如图4A或图4B所示。
所述升级服务器使用所述第二运算密钥,对每个中间补丁文件的每行软件代码包含的加密后的行号进行解密。
第二种实现方式:当所述软件开发设备通过以上第二种实现方式,对每个补丁文件进行加密处理的情况下,如图4C或图4D所示。
所述升级服务器使用所述第二运算密钥,对每个中间补丁文件的每行软件代码包含的加密后的行号和加密后的软件内容进行解密。
S209:所述升级服务器根据所述多个中间补丁文件对应的版本号、每个解密后的中间补丁文件中每行软件代码的行号,对所述解密后的多个中间补丁文件进行合并,得到所述目标应用软件的合并补丁文件;其中,所述合并补丁文件中包含至少一行软件代码,每行软件代码中包含行号和加密后的代码内容。
可选的,所述升级服务器可以采用以下步骤,实现对所述解密后的多个中间补丁文件的合并:
A1:所述升级服务器根据存储的所述多个中间补丁文件对应的版本号的先后顺序,对所述多个解密后的中间补丁文件进行排序,得到文件序列,其中,版本号最先的解密后的中间补丁文件位于所述文件序列的首位,版本号最后的解密后的中间补丁文件位于所述文件序列的末位;
A2:所述升级服务器根据每个解密后的中间补丁文件中每行软件代码的行号,按照所述文件序列的顺序依次将每个解密后的中间补丁文件进行合并,得到所述合并补丁文件。
需要说明的是,当每个中间补丁文件中包含加密后的补丁头部时,生成的所述合并补丁文件中也还包含所述加密后的补丁头部(即将其中一个目标补丁文件的加密后的补丁头部复制到所述合并补丁文件中)。
在一种实施方式中,所述升级服务器在执行上述步骤A2时,可以通过以下方法实现:
所述升级服务器可以先生成一个空的合并补丁文件;然后将所述文件序列中首个解密后的中间补丁文件复制到所述合并补丁文件中。
所述升级服务器再将第二个解密后的中间补丁文件与所述合并补丁文件进行合并,具体包括以下步骤:
所述升级服务器根据第二个解密后的中间补丁文件中每行软件代码的行号,将该行软件代码复制到所述合并补丁文件中的适当位置,以确保所述合并补丁文件中的行号是按照从小到大的顺序排列的。例如,第二个解密后的中间补丁文件中的某一行软件代码的行号为“2”,则将该行软件代码复制到所述合并补丁文件中行号为“3”之前;若所述第二个解密后的中间补丁文件中的某一行软件代码的行号为“4”,则将该行软件代码复制到所述合并补丁文件中行号为“3”之后。若所述第二个解密后的中间补丁文件中的某一行的软件代码的行号为“4”,且所述合并补丁文件中也存在行号为“4”的软件代码,则将第二个解密后的中间补丁文件中的该行软件代码复制到所述合并补丁文件中行号为“4”的软件代码之后。
当所述升级服务器将第二个解密后的中间补丁文件中所有软件代码均复制到所述合并补丁文件之后,需要对所述合并补丁文件中除所述第二个解密后的中间补丁文件中的软件代码以外的所述合并补丁文件中的原软件代码(未复制第二个解密后的中间补丁文件的所有软件代码之前所述合并补丁文件中包含的软件代码)的行号进行如下调整:
所述升级服务器按照行号从小到大的顺序依次确定所述合并补丁文件中复制的所述第二个解密后的中间补丁文件中每一行软件代码,若该行软件代码中行号包含删除指示“-”,则将该行软件代码之后的每行原软件代码的行号减1;若该行软件代码中行号包含增加指示“+”,则将该行软件代码之后的每行原软件代码加1。
然后所述升级服务器确定原软件代码的行号调整后的所述合并补丁文件中是否存在满足以下抵消条件的相邻两行软件代码:行号相同、代码内容相同,且其中一行的行号中包含删除指示“-”,另一行的行号中包含增加指示“+”。若存在,则所述升级服务器删除这两行软件代码(即将该相邻两行软件代码相互抵消)。
所述升级服务器从所述文件序列中获取下一个解密后的中间补丁文件,并按照以上步骤,继续与所述合并补丁文件进行合并,直至将所述文件序列中所有的解密后的中间补丁文件合并到所述合并补丁文件中。
示例性的,继续以图3中的三个补丁文件P1、P2和P3为例进行说明。参阅图5A所示,假设软件开发设备侧采用如图4D所示的加密方法对每个补丁文件进行加密的,那么所述升级服务器确定这三个补丁文件为中间补丁文件后,使用第二运算密钥对每个中间补丁文件的每行软件代码包含的加密后的行号和加密后的软件内容进行解密,得到图5A中的图(1)中所示的3个解密后的补丁文件。然后所述升级服务器采用图5A中的图(2)所示的合并方法,将解密后的三个中间补丁文件进行合并:
所述升级服务器生成一个空的合并补丁文件,将P1中的一行软件代码复制到该合并补丁文件中;然后,所述升级服务器按照P2中的每行软件代码的行号,将P2中的每行软件代码复制到所述合并补丁文件中的适当位置,如图(2)中的临时的合并补丁文件temp1所示;由于合并补丁文件中新增的P2的第一行软件代码的行号“258-”包含删除指示“-”,因此,所述升级服务器将该行软件代码之后的合并补丁文件中的原软件代码的行号减1,即将行号“259+”的原软件代码中的行号变为“258+”,如图(2)中的临时的合并补丁文件temp2所示;所述升级服务器将P3中的每行软件代码复制到所述合并补丁文件中的适当位置行号为“258+”的原软件代码之后,如图(2)中的临时的合并补丁文件temp3所示;由于新增的P3的软件代码的行号“258-”包含删除指示“-”,因此,所述升级服务器将该行软件代码之后的原软件代码的行号减1,即将行号“260+”的原软件代码中的行号变为“259+”,如图(2)中的临时的合并补丁文件temp4所示;由于此时合并补丁文件temp4中相邻的第二行和第三行软件代码满足抵消条件,因此,所述软件服务器将这两行软件代码删除,最终得到将P1、P2和P3合并后的合并补丁文件P1_3。
需要说明的是,虽然图5A中的图(2)未示出所述合并补丁文件的补丁头部,但该合并补丁文件的头部与所述升级服务器保存的P1-P3中任一个补丁文件的补丁头部相同。
示例性的,继续以图3中的三个补丁文件P1、P2和P3为例进行说明。参阅图5B所示,假设软件开发设备侧采用如图4C所示的加密方法对每个补丁文件进行加密的,那么所述升级服务器确定这三个补丁文件为中间补丁文件后,使用第二运算密钥对每个中间补丁文件的每行软件代码包含的加密后的行号和加密后的软件内容进行解密,得到图5B中的图(1)中所示的3个解密后的补丁文件。然后所述升级服务器采用图5B中的图(2)所示的合并方法,将解密后的三个目标补丁文件进行合并:
所述升级服务器生成一个空的合并补丁文件,将P1中的一行软件代码复制到该合并补丁文件中;然后,所述升级服务器按照P2中的每行软件代码的行号,将P2中的每行软件代码复制到所述合并补丁文件中的适当位置,如图(2)中的临时的合并补丁文件temp1所示;由于合并补丁文件中新增的P2的第一行软件代码的行号“2-”包含删除指示“-”,因此,所述升级服务器将该行软件代码之后的合并补丁文件中的原软件代码的行号减1,即将行号“3+”的原软件代码中的行号变为“2+”,如图(2)中的临时的合并补丁文件temp2所示;所述升级服务器将P3中的每行软件代码复制到所述合并补丁文件中的适当位置行号为“2+”的原软件代码之后,如图(2)中的临时的合并补丁文件temp3所示;由于新增的P3的软件代码的行号“2-”包含删除指示“-”,因此,所述升级服务器将该行软件代码之后的原软件代码的行号减1,即将行号“4+”的原软件代码中的行号变为“3+”,如图(2)中的临时的合并补丁文件temp4所示;由于此时合并补丁文件temp4中相邻的第二行和第三行软件代码满足抵消条件,因此,所述软件服务器将这两行软件代码删除,最终得到将P1、P2和P3合并后的合并补丁文件P1_3。
需要说明的是,虽然图5B中的图(2)未示出所述合并补丁文件的补丁头部,但该合并补丁文件的头部与所述升级服务器保存的P1-P3中任一个补丁文件的补丁头部相同。
通过以上描述可知,所述升级服务器在将解密后的所述多个中间补丁文件进行合并的过程中,可以对一些满足抵消条件的软件代码抵消掉,这样可以减少所述合并补丁文件的数据量,提高所述合并补丁文件的传输效率。相对于传统方法中所述升级服务器需要向终端设备发送多个中间补丁文件的方案,本方案可以通过发送一个合并补丁文件即可实现将终端设备升级到目标版本号,可以简化向终端设备传输补丁文件的过程,显著提高补丁文件的传输效率。
S210:所述升级服务器向所述终端设备发送所述合并补丁文件。所述终端设备从所述升级服务器接收所述目标应用软件的合并补丁文件。
需要说明的是,在本申请实施例中,所述升级服务器可以通过两种方式发送所述升级补丁文件。
方式一:为了保证所述合并补丁文件在传输过程中行号的安全性,所述升级服务器可以在得到所述合并补丁文件,在向所述终端设备发送所述合并补丁文件之前,所述升级服务器可以再次对所述合并补丁文件中的每行软件代码中的行号进行加密处理。
与S208对应的,所述升级服务器可以通过两种实现方式对所述合并补丁文件中的行号进行加密处理。
第一种实现方式:在所述软件开发设备通过如图4A或图4B所示的第一种实现方式对补丁文件进行加密,所述升级服务器在执行S208时使用所述第二运算密钥,对每个中间补丁文件的每行软件代码包含的加密后的行号进行解密的情况下。
所述升级服务器使用所述第一运算密钥,对所述合并补丁文件中每行软件代码中包含的行号进行加密。
示例性的,假设所述软件开发设备通过图4A或图4B所示的实现方式对补丁文件进行加密,所述升级服务器得到的合并补丁文件为P1_3,参阅图6A所示,所述升级服务器可以提取所述合并补丁文件中的每行软件代码中包含的行号,然后使用所述第一运算密钥对提取的行号进行加密,并将每个加密后的行号对所述合并补丁文件中的相应的行号进行替换,得到行号加密处理后的合并补丁文件P1_3。
第二种实现方式:在所述软件开发设备通过如图4C或图4D所示的第二种实现方式对补丁文件进行加密,所述升级服务器在执行S208时使用所述第二运算密钥,对每个中间补丁文件的每行软件代码包含的加密后的行号和加密后的软件内容进行解密的情况下。
所述升级服务器使用所述第一运算密钥,对所述合并补丁文件中每行软件代码包含的行号和加密后的软件内容进行加密。
示例性的,假设所述软件开发设备通过图4A或图4B所示的实现方式对补丁文件进行加密,所述升级服务器得到的合并补丁文件为P1_3,参阅图6B所示,所述升级服务器可以提取所述合并补丁文件中的每行软件代码,然后使用所述第一运算密钥对提取的每行软件代码进行加密,并根据加密后的每行软件代码和原补丁头部组成行号加密处理后的合并补丁文件P1_3。
方式二:为了提高终端设备接收到所述合并补丁文件的解密速度,提高终端设备的升级效率,所述升级服务器可以直接将合并得到的所述合并补丁文件发送给终端设备。
可选的,在本申请实施例中,所述升级服务器和所述终端设备之间可以通过建立传输层安全通道,进行通信交互。示例性的,所述传输层安全通道可以为TLS通道或SSL通道。
需要说明的是,当所述终端设备还需要通过其他中间设备连接所述升级服务器的情况下,所述升级服务器可以与中间设备建立传输层安全通道,以将所述合并补丁文件安全的传输给终端设备。例如图1中所示的终端设备ECU,所述ECU需要通过域控制器、GW、T-Box,才能连接所述升级服务器,那么所述升级服务器可以与所述T-Box建立传输层安全通道,然后通过所述传输层安全通道将所述合并补丁文件发送给所述T-Box,然后所述T-Box在通过GW、域控制器将该合并补丁文件传输到ECU。
S211:所述终端设备对接收到的合并补丁文件进行解密处理。
根据所述升级服务器在S210中对所述合并补丁文件的发送不同,所述终端设备对所述合并补丁文件进行解密的过程也不同。
方式一:在所述升级服务器在向所述终端设备发送所述合并补丁文件之前,所述升级服务器对所述合并补丁文件中的每行软件代码中的行号进行加密处理的情况下。
所述终端设备的解密处理过程,与所述升级服务器和所述软件开发设备的加密过程的相关,可以包含以下几种实现方式。
第一种实现方式:在所述软件开发设备通过如图4A所示的实现方式对补丁文件进行加密,所述升级服务器使用所述第二运算密钥对每个目标补丁文件中加密后的行号进行解密,且所述升级服务器使用第一运算密钥对合并补丁文件中每行软件代码中包含的行号进行加密的情况下。
所述终端设备使用以下步骤,对加密后的合并补丁文件进行解密处理:
B1:所述终端设备使用第二安全密钥对所述加密后的合并补丁文件中的每行软件代码包含的加密后的代码内容进行解密。
B2:所述终端设备使用所述第二运算密钥对所述加密后的合并补丁文件中的每行软件代码包含的加密后的行号进行解密。
B3:当所述加密后的合并补丁文件中还包含加密后的补丁头部时,所述终端设备使用所述第二安全密钥对所述加密后的补丁头部进行解密。
示例性的,假设所述终端设备接收到的加密后的合并补丁文件为P1_3,如图7A中的左侧所示。参阅图7A所示,所述终端设备可以使用第二安全密钥对加密后的补丁头部进行解密,得到“APP1”;所述终端设备可以使用第二运算密钥对每行软件代码包含的加密后的行号进行解密,得到行号“2-”和“3+”;所述终端设备可以使用第二安全密钥对每行软件代码包含的加密后的代码内容进行解密,得到代码内容“bbbb”和“yyyy”;然后所述终端设备将解密得到的补丁头部、行号和代码内容,组成解密后的合并补丁文件P1_3。
第二种实现方式:在所述软件开发设备通过如图4B所示的实现方式对补丁文件进行加密,所述升级服务器使用所述第二运算密钥对每个目标补丁文件中加密后的行号进行解密,且所述升级服务器使用第一运算密钥对合并补丁文件中每行软件代码中包含的行号进行加密的情况下。
所述终端设备使用以下步骤,对加密后的合并补丁文件进行解密处理:
C1:所述终端设备使用第二安全密钥对所述加密后的合并补丁文件中的每行软件代码包含的加密后的代码内容进行解密。
C2:所述终端设备使用所述第二运算密钥对所述加密后的合并补丁文件中的每行软件代码包含的加密后的行号进行解密。
C3:当所述加密后的合并补丁文件中还包含加密后的补丁头部时,所述终端设备使用所述第二安全密钥对所述加密后的补丁头部进行解密。
C4:所述终端设备使用以下步骤对所述合并补丁文件中的行号进行行偏移处理:
所述终端设备获取所述目标应用软件的行号偏移值;
所述终端设备根据所述行号偏移值,对所述合并补丁文件中每行软件代码包含的行号进行偏移。其中,所述终端设备进行行偏移处理与所述软件开发设备进行的行偏移处理互逆。例如,所述终端设备将每行软件代码包含的行号减去(或加上)所述行号偏移值。
其中,所述终端设备可以从所述合并补丁文件中解密后的补丁头部中获取所述行号偏移值,或者获取存储的所述目标应用软件的行号偏移值。
示例性的,假设所述终端设备接收到的加密后的合并补丁文件为P1_3,如图7B中的左侧所示。参阅图7B所示,所述终端设备可以使用第二安全密钥对加密后的补丁头部进行解密,得到“APP1:z(z=256)”;所述终端设备可以使用第二运算密钥对每行软件代码包含的加密后的行号进行解密,得到行号“258-”和“259+”;所述终端设备可以使用第二安全密钥对每行软件代码包含的加密后的代码内容进行解密,得到代码内容“bbbb”和“yyyy”;然后所述终端设备将解密得到的补丁头部、行号和代码内容,组成解密后的合并补丁文件P1_3’;最后,所述终端设备根据z对每行软件代码包含的行号进行偏移处理(行号减去z),得到最终的解密后的合并补丁文件P1_3。
第三种实现方式:在所述软件开发设备通过如图4C所示的实现方式对补丁文件进行加密,所述升级服务器使用所述第二运算密钥对每个目标补丁文件中加密后的行号和加密后的软件内容进行解密,且所述升级服务器使用第一运算密钥对合并补丁文件中每行软件代码中包含的行号和加密后的软件内容进行加密的情况下。
所述终端设备使用以下步骤,对加密后的合并补丁文件进行解密处理:
D1:所述终端设备使用所述第二运算密钥对所述加密后的合并补丁文件中的每行软件代码(包含加密后的行号和加密后的代码内容)进行解密。
D2:所述终端设备使用第二安全密钥对所述加密后的合并补丁文件中的每行软件代码包含的加密后的代码内容进行解密。
D3:当所述加密后的合并补丁文件中还包含加密后的补丁头部时,所述终端设备使用所述第二安全密钥对所述加密后的补丁头部进行解密。
示例性的,假设所述终端设备接收到的加密后的合并补丁文件为P1_3,如图7C中的左侧所示。参阅图7C所示,所述终端设备可以使用第二安全密钥对加密后的补丁头部进行解密,得到“APP1”;所述终端设备可以使用第二运算密钥对每行软件代码进行解密,得到行号和对应的加密后的代码内容;所述终端设备可以使用第二安全密钥对每行软件代码包含的加密后的代码内容进行解密,得到代码内容“bbbb”和“yyyy”;然后所述终端设备将解密得到的补丁头部、行号和代码内容,组成解密后的合并补丁文件P1_3。
第四种实现方式:在所述软件开发设备通过如图4D所示的实现方式对补丁文件进行加密,所述升级服务器使用所述第二运算密钥对每个目标补丁文件中加密后的行号和加密后的软件内容进行解密,且所述升级服务器使用第一运算密钥对合并补丁文件中每行软件代码中包含的行号和加密后的软件内容进行加密的情况下。
所述终端设备使用以下步骤,对加密后的合并补丁文件进行解密处理:
E1:所述终端设备使用所述第二运算密钥对所述加密后的合并补丁文件中的每行软件代码(包含加密后的行号和加密后的代码内容)进行解密。
E2:所述终端设备使用第二安全密钥对所述加密后的合并补丁文件中的每行软件代码包含的加密后的代码内容进行解密。
E3:当所述加密后的合并补丁文件中还包含加密后的补丁头部时,所述终端设备使用所述第二安全密钥对所述加密后的补丁头部进行解密。
E4:所述终端设备对所述合并补丁文件中的行号进行行偏移处理,同步骤C4,此处不再赘述。
示例性的,假设所述终端设备接收到的加密后的合并补丁文件为P1_3,如图7D中的左侧所示。参阅图7D所示,所述终端设备可以使用第二安全密钥对加密后的补丁头部进行解密,得到“APP1:z(z=256)”;所述终端设备可以使用第二运算密钥对每行软件代码进行解密,得到行号和对应的加密后的代码内容;所述终端设备可以使用第二安全密钥对每行软件代码包含的加密后的代码内容进行解密,得到代码内容“bbbb”和“yyyy”;然后所述终端设备将解密得到的补丁头部、行号和代码内容,组成解密后的合并补丁文件P1_3’;最后,所述终端设备根据z对每行软件代码包含的行号进行偏移处理(行号减去z),得到最终的解密后的合并补丁文件P1_3。
方式二:在所述升级服务器直接将合并得到的所述合并补丁文件发送给终端设备的情况下。
所述终端设备的解密处理过程,与所述升级服务器和所述软件开发设备的加密过程的相关,可以包含以下几种实现方式。
第一种实现方式:在所述软件开发设备通过如图4A所示的实现方式对补丁文件进行加密,所述升级服务器使用所述第二运算密钥对每个目标补丁文件中加密后的行号进行解密的情况下。
所述终端设备使用以下步骤,对所述合并补丁文件进行解密处理:
F1:所述终端设备使用第二安全密钥对所述合并补丁文件中的每行软件代码包含的加密后的代码内容进行解密。
F2:当所述合并补丁文件中还包含加密后的补丁头部时,所述终端设备使用所述第二安全密钥对所述合并补丁文件中加密后的补丁头部进行解密。
示例性的,假设所述终端设备接收到的加密后的合并补丁文件为P1_3,如图7E中的左侧所示。参阅图7E所示,所述终端设备可以使用第二安全密钥对加密后的补丁头部进行解密,得到“APP1”;所述终端设备可以使用第二安全密钥对每行软件代码包含的加密后的代码内容进行解密,得到代码内容“bbbb”和“yyyy”;然后所述终端设备将解密得到的补丁头部和代码内容,以及行号,组成解密后的合并补丁文件P1_3。
第二种实现方式:在所述软件开发设备通过如图4B所示的实现方式对补丁文件进行加密,所述升级服务器使用所述第二运算密钥对每个目标补丁文件中加密后的行号进行解密的情况下。
所述终端设备使用以下步骤,对所述合并补丁文件进行解密处理:
F1:所述终端设备使用第二安全密钥对所述合并补丁文件中的每行软件代码包含的加密后的代码内容进行解密。
F2:当所述合并补丁文件中还包含加密后的补丁头部时,所述终端设备使用所述第二安全密钥对所述合并补丁文件中加密后的补丁头部进行解密。
F3:所述终端设备对所述合并补丁文件中的行号进行行偏移处理,同步骤C4,此处不再赘述。
示例性的,假设所述终端设备接收到的加密后的合并补丁文件为P1_3,如图7F中的左侧所示。参阅图7F所示,所述终端设备可以使用第二安全密钥对加密后的补丁头部进行解密,得到“APP1:z(z=256)”;所述终端设备可以使用第二安全密钥对每行软件代码包含的加密后的代码内容进行解密,得到代码内容“bbbb”和“yyyy”;然后所述终端设备将解密得到的补丁头部和代码内容,以及行号,组成解密后的合并补丁文件P1_3’;最后,所述终端设备根据z对每行软件代码包含的行号进行偏移处理(行号减去z),得到最终的解密后的合并补丁文件P1_3。
第三种实现方式:在所述软件开发设备通过如图4C所示的实现方式对补丁文件进行加密,所述升级服务器使用所述第二运算密钥对每个目标补丁文件中加密后的行号和加密后的软件内容进行解密的情况下。所述终端设备对所述合并补丁文件进行解密处理的过程与第一种实施方式中的相同,此处不再赘述。
第四种实现方式:在所述软件开发设备通过如图4D所示的实现方式对补丁文件进行加密,所述升级服务器使用所述第二运算密钥对每个目标补丁文件中加密后的行号和加密后的软件内容进行解密的情况下。所述终端设备对所述合并补丁文件进行解密处理的过程与第一种实施方式中的相同,此处不再赘述。
S212:所述终端设备根据所述合并补丁文件中的每行软件代码包含的行号和代码内容,对已安装的所述目标应用软件进行升级。
所述终端设备可以安装所述合并补丁文件,以将所述合并补丁文件合并到所述目标应用软件的文件内,从而将所述目标应用软件升级到所述目标版本号。其中,所述终端设备将所述合并补丁文件合并到所述目标应用软件的文件的过程可以参考图5A中的图(2)或图5B中的图(2),此处不再赘述。
本申请实施例提供了一种软件升级方法,在上述方案中,升级服务器可以将多个目标补丁文件进行拼接合并,这样,终端设备可以仅下载和安装一次合并补丁文件即可实现将目标应用软件从当前版本号升级至目标版本号,显然,该方法可以明显的缩短终端设备进行软件升级消耗的时间,可以提高终端设备软件升级效率。另外,软件开发设备在对每个补丁文件进行加密的过程中,使用不同的密钥分别对每行软件代码中的行号和代码内容进行加密,这样,所述升级服务器可以仅对每行软件代码中的加密行号进行解密,而无法对每行软件代码中的代码内容进行解密,因此,该方法还可以保证补丁文件中代码内容的安全性。
基于图2所示的实施例,本申请实施例还提供了一种软件开发设备和升级服务器之间的通信过程,以实现软件开发设备向升级服务器发送补丁文件及其对应的版本号。下面参考图8,对该通信过程进行详细描述。
其中,在所述软件开发设备与所述升级服务器在进行通信之前,所述软件开发设备中维护有自身的密钥对(公钥KS_pub,私钥KS_priv),并保存有所述升级服务器的公钥KOTA_pub;所述升级服务器维护有自身的密钥对(公钥KOTA_pub,私钥KOTA_priv),并保存有所述软件开发设备的公钥KS_pub。另外在进行通信之前,所述软件开发设备与所述升级服务器可以先建立传输层安全通道(TSL通道或SSL通道),这样二者在进行通信交互时,可以通过该传输层安全通道传输。
S801:所述软件开发设备在生成目标应用文件的补丁文件之后,生成通知消息,所述通知消息用于通知所述软件开发设备中已经准备好新的补丁文件。其中,所述通知消息中包含所述软件开发设备针对本次通知确定的消息新鲜度N。所述软件开发设备使用所述升级服务器的公钥KOTA_pub对所述通知消息进行加密后,向所述升级服务器发送加密后的通知消息。
S802:所述升级服务器接收到加密后的通知消息后,使用自身的私钥KOTA_priv对所述加密后的通知消息进行解密,得到所述通知消息,并从该通知消息中获取N。所述升级服务器存储N,以便于进行后续校验。
S803:所述升级服务器生成包含N的补丁下载请求。其中,所述补丁下载请求用于请求所述软件开发设备发送补丁文件。所述升级服务器使用所述软件开发设备的公钥KS_pub对所述补丁下载请求进行加密后,向所述软件开发设备发送加密后的补丁下载请求。
S804:所述软件开发设备接收到加密后的补丁下载请求后,使用自身的私钥KS_priv对加密后的补丁下载请求进行解密,得到所述补丁下载请求,并从该补丁下载请求中获取N。
S805:所述软件开发设备将该补丁文件、版本号,以及N封装到补丁文件数据包,并使用所述升级服务器的公钥KOTA_pub对所述补丁文件数据包进行加密,将加密后的补丁文件数据包发送给所述升级服务器。
S806:所述升级服务器接收到加密后的补丁文件数据包后,使用自身的私钥KOTA_priv对所述加密后的补丁文件数据包进行解密,得到其中的补丁文件、版本号,以及N。然后,所述升级服务器将从补丁文件数据包中获得的N与S802中获得的N进行校验,确定两者完全相同时,所述升级服务器将所述补丁文件和版本号保存到自身的数据库中。
基于图2所示的实施例,本申请实施例还提供了一种升级服务器和终端设备之间的通信过程,以实现终端设备从软件开发设备下载合并补丁文件,如图9和图10所示。
下面参考图9对该通信过程进行详细描述。其中,图9是以所述终端设备不经过其他中继设备,连接所述升级服务器的场景为例进行说明的。
其中,在所述升级服务器与所述终端设备在进行通信之前,所述升级服务器中维护有自身的密钥对(公钥KOTA_pub,私钥KOTA_priv),并保存有所述终端设备的公钥KUE_pub;所述升级服务器维护有自身的密钥对(公钥KUE_pub,私钥KUE_priv),并保存有所述升级服务器的公钥KOTA_pub。另外在进行通信之前,所述升级服务器与所述终端设备可以先建立传输层安全通道(TSL通道或SSL通道),这样二者在进行通信交互时,可以通过该传输层安全通道传输。
S901:所述升级服务器在从软件开发设备接收目标应用软件的新的补丁文件之后,生成通知消息,或者定期或周期性的生成所述通知消息。所述通知消息用于通知所述升级服务器中已经准备好新的补丁文件。其中,所述通知消息中包含所述升级服务器针对本次通知确定的消息新鲜度N。所述升级服务器使用所述终端设备的公钥KUE_pub对所述通知消息进行加密后,向所述终端设备发送加密后的通知消息。
S902:所述终端设备接收到加密后的通知消息后,使用自身的私钥KUE_priv对所述加密后的通知消息进行解密,得到所述通知消息,并从该通知消息中获取N。所述终端设备存储N,以便于进行后续校验。
S903:所述终端设备生成包含N的补丁下载请求。其中,所述补丁下载请求用于请求所述升级服务器发送补丁文件。所述终端设备使用所述升级服务器的公钥KOTA_pub对所述补丁下载请求进行加密,并向所述升级服务器发送所述加密后的补丁下载请求。所述补丁下载请求中包含所述终端设备已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号。
S904:所述升级服务器接收到加密后的补丁下载请求后,使用自身的私钥KOTA_priv对所述加密后的补丁下载请求进行解密,得到所述补丁下载请求,并从该补丁下载请求中获取N,以及所述当前版本号和所述目标版本号。所述升级服务器根据所述当前版本号和所述目标版本号,在本地数据库存储的所述目标应用软件的补丁文件中,选择多个目标补丁文件,再对所述多个目标补丁文件进行合并,生成合并补丁文件。其中,所述升级服务器生成所述合并补丁文件的过程可以参考图2所示的实施例中的S208-S210中的描述,此处不再赘述。
S905:所述升级服务器将该合并补丁文件,以及N封装到补丁文件数据包中,并使用所述终端设备的公钥KUE_pub对所述补丁文件数据包进行加密,最后将加密后的补丁文件数据包发送给所述终端设备。
S906:所述终端设备接收到加密后的补丁文件数据包后,使用自身的私钥KUE_priv对所述加密后的补丁文件数据包进行解密,得到其中的合并补丁文件和N。然后,所述终端设备将从补丁文件数据包中获得的N与S902中获得的N进行校验,确定两者完全相同时,所述终端设备安装所述合并补丁文件,从而将所述目标应用软件升级到目标版本号。
下面参考图10对升级服务器和终端设备之间的通信过程进行描述。其中图10是以所述终端设备为ECU,所述ECU经过其他中继设备(DC、GW和T_Box),连接所述升级服务器的场景为例进行说明的。
其中,在所述升级服务器与所述终端设备在进行通信之前,所述升级服务器中维护有自身的密钥对(公钥KOTA_pub,私钥KOTA_priv),并保存有所述T_Box的公钥KTBox_pub;所述升级服务器维护有自身的密钥对(公钥KTBox_pub,私钥KTBox_priv),并保存有所述升级服务器的公钥KOTA_pub。另外在进行通信之前,所述升级服务器与所述T_Box可以先建立传输层安全通道(TSL通道或SSL通道),这样二者在进行通信交互时,可以通过该传输层安全通道传输。另外,所述T_Box和所述GW中还保存有对称密钥KTBox_GW,用于对所述T_Box和所述GW之间传输的消息进行加解密;所述GW和所述DC中保存有对称密钥KGW_DC,用于对所述GW和所述DC之间传输的消息进行加解密;所述DC和所述ECU中保存有对称密钥KDC_ECU,用于对所述DC和所述ECU之间传输的消息进行加解密。
S1001:所述升级服务器在从软件开发设备接收目标应用软件的新的补丁文件之后,生成通知消息,或者定期或周期性的生成所述通知消息。所述通知消息用于通知所述升级服务器中已经准备好新的补丁文件。其中,所述通知消息中包含所述升级服务器针对本次通知确定的消息新鲜度N。所述升级服务器使用所述T_Box的公钥KTBox_pub对所述通知消息进行加密后,向T_Box发送加密后的通知消息。
S1002:所述T_Box接收到所述加密后的通知消息后,使用自身的私钥KTBox_priv对所述加密后的通知消息进行解密,得到所述通知消息,并从该通知消息中获取N。所述T_Box存储N,以便于进行后续校验。
S1003:所述T_Box生成包含N的补丁下载请求。其中,所述补丁下载请求用于请求所述升级服务器发送补丁文件。所述T_Box使用所述升级服务器的公钥KOTA_pub对所述补丁下载请求进行加密,并向所述升级服务器发送所述加密后的补丁下载请求。所述补丁下载请求中包含所述T_Box已安装的所述目标应用软件的当前版本号,以及所述T_Box进行所述目标应用软件升级的目标版本号。
S1004:所述升级服务器接收到加密后的补丁下载请求后,使用自身的私钥KOTA_priv对所述加密后的补丁下载请求进行解密,得到所述补丁下载请求,并从中获取N,以及所述当前版本号和所述目标版本号。所述升级服务器根据所述当前版本号和所述目标版本号,在本地数据库存储的所述目标应用软件的补丁文件中,选择多个目标补丁文件,再对所述多个目标补丁文件进行合并,生成合并补丁文件。其中,所述升级服务器生成所述合并补丁文件的过程可以参考图2所示的实施例中的S208-S210中的描述,此处不再赘述。
S1005:所述升级服务器将该合并补丁文件,以及N封装到补丁文件数据包,并使用所述T_Box的公钥KTBox_pub对所述补丁文件数据包进行加密,最后将加密后的补丁文件数据包发送给所述T_Box。
S1006:所述T_Box接收到所述加密后的补丁文件数据包后,使用自身的私钥KTBox_priv对所述补丁文件数据包进行解密,得到其中的合并补丁文件和N。然后,所述T_Box将从补丁文件数据包中获得的N与S902中获得的N进行校验,确定两者完全相同。
S1007:所述T_Box使用对称密钥KTBox_GW对所述合并补丁文件进行加密,并将加密后的所述合并补丁文件发送给GW。
S1008:所述GW接收到加密后的所述合并补丁文件后,使用对称密钥KTBox_GW对加密后的所述合并补丁文件进行解密,得到所述合并补丁文件;然后使用对称密钥KGW_DC对所述合并补丁文件进行加密,并将加密后的所述合并补丁文件发送给DC。
S1009:所述DC接收到加密后的所述合并补丁文件后,使用对称密钥KGW_DC对加密后的所述合并补丁文件进行解密,得到所述合并补丁文件;然后使用对称密钥KDC_ECU对所述合并补丁文件进行加密,并将加密后的所述合并补丁文件发送给ECU。
S1010:所述ECU接收到加密后的所述合并补丁文件后,使用对称密钥KDC_ECU对加密后的所述合并补丁文件进行解密,得到所述合并补丁文件;然后所述终端设备安装所述合并补丁文件,从而将所述目标应用软件升级到目标版本号。
S1011:所述ECU安装完成后,生成升级结果通知;并使用对称密钥KDC_ECU对所述升级结果通知进行加密,将加密后的升级结果通知发送给DC。
S1012:所述DC接收到解密后的所述升级结果通知后,使用对称密钥KDC_ECU对所述升级结果通知进行解密,得到所述升级结果通知;然后使用对称密钥KGW_DC对所述升级结果通知进行加密,将加密后的升级结果通知发送给GW。
S1013:所述GW接收到解密后的所述升级结果通知后,使用对称密钥KGW_DC对所述升级结果通知进行解密,得到所述升级结果通知;然后使用对称密钥KTBox_GW对所述升级结果通知进行加密,将加密后的升级结果通知发送给T_Box。
S1014:所述T_Box接收到解密后的所述升级结果通知后,使用对称密钥KTBox_GW对所述升级结果通知进行解密,得到所述升级结果通知;然后使用所述升级服务器的公钥KOTA_puk对所述升级结果通知进行加密,将加密后的升级结果通知发送给所述升级服务器。
所述升级服务器接收到所述加密后的所述升级结果通知后,使用自身的私钥KOTA_priv对所述升级结果通知进行解密,得到所述升级结果通知。
基于相同的技术构思,本申请实施例还提供了一种通信装置,该装置的结构如图11所示,包括通信单元1101和处理单元1102。所述通信装置1100可以应用于图1所示的软件升级系统中的软件开发设备、软件服务器,或终端设备,并可以实现以上实施例以及实例提供的软件升级方法。
其中,所述通信单元1101,用于接收和发送数据。
当所述通信装置1100应用于软件开发设备或软件服务器时,所述通信单元1101又可以称为物理接口、通信模块、通信接口、输入输出接口。所述通信装置1100可以通过该通信单元连接网线或电缆,进而与其他设备建立物理连接。
当所述通信装置1100应用于终端设备时,所述通信单元1101又可以称为收发器,可以通过移动通信模块和/或无线通信模块实现。
移动通信模块可以提供应用在所述终端设备上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块可以包括至少一个天线、至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。所述终端设备可以通过所述移动通信模块接入移动通信网络中,进而通过所述移动通信网络接入演算网络中的转发设备。
无线通信模块可以提供应用在终端设备上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC)等无线通信的解决方案。无线通信模块160可以包括至少一个天线、至少一个通信处理模块的一个或多个器件。所述终端设备可以通过所述无线通信模块接入无线通信网络中,进而通过所述无线通信网络接入演算网络中的转发设备。
下面对所述通信装置1100应用于软件开发设备时,所述处理单元1102的具体功能进行介绍。
在第一种实施方式中,所述处理单元1102,用于生成目标应用软件的补丁文件和所述补丁文件的对应的版本号,其中,所述补丁文件包含第一代码段,所述第一代码段包含第一代码段标识和第一代码内容;对所述补丁文件进行加密处理,包括:根据第一安全密钥,对所述第一代码内容进行加密;根据第一运算密钥,对所述第一代码段标识和通过第一安全密钥加密后的所述第一代码内容进行加密;其中,所述第一运算密钥与所述第一安全密钥不同;通过所述通信单元1101向升级服务器发送加密后的所述补丁文件和所述补丁文件对应的版本号。
可选的,所述处理单元1102,还用于:
在根据第一运算密钥,对所述第一代码段标识和通过第一安全密钥加密后的所述第一代码内容进行加密之前,获取所述目标应用软件的标识偏移值;根据所述标识偏移值,对所述第一代码段标识进行偏移。
可选的,所述补丁文件中还包含补丁头部,其中,所述补丁头部用于指示所述目标应用软件;所述处理单元1102,在对所述补丁文件进行加密处理时,还用于:
根据所述第一安全密钥,对所述补丁头部进行加密。
可选的,所述补丁文件包含至少一个所述第一代码段;所述第一代码段为一行第一代码,所述第一代码段标识为所述第一代码的行号。
在第二种实施方式中,所述处理单元1102,用于生成目标应用软件的补丁文件和所述补丁文件的对应的版本号,其中,所述补丁文件包含第一代码段,所述第一代码段包含第一代码段标识和第一代码内容;对所述补丁文件进行加密处理,包括:根据第一安全密钥,对所述第一代码内容进行加密;根据第一运算密钥,对所述第一代码段标识进行加密;其中,所述第一运算密钥与所述第一安全密钥不同;通过所述通信单元1101向升级服务器发送加密后的所述补丁文件和所述补丁文件对应的所述版本号。
可选的,所述处理单元1102,还用于:
在根据第一运算密钥,对所述第一代码段标识进行加密之前,获取所述目标应用软件的标识偏移值;根据所述标识偏移值,对所述第一代码段标识进行偏移。
可选的,所述补丁文件中还包含补丁头部,其中,所述补丁头部用于指示所述目标应用软件;
所述处理单元1102,在对所述补丁文件进行加密处理时,还用于:
根据所述第一安全密钥,对所述补丁头部进行加密。
下面对所述通信装置1100应用于升级服务器时,所述处理单元1102的具体功能进行介绍。
在第一种实施方式中,所述处理单元1102,用于:
存储目标应用软件加密后的补丁文件和所述补丁文件对应的版本号;其中,所述加密后的补丁文件包含加密后的第一代码段,所述加密后的第一代码段是通过第一运算密钥对第一代码段标识和通过第一安全密钥加密后的第一代码内容进行加密得到的,所述第一运算密钥与所述第一安全密钥不同;
通过所述通信单元1101从终端设备接收所述目标应用软件的补丁下载请求;
根据所述补丁下载请求确定所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号;
根据所述当前版本号和所述目标版本号,从本地存储的所述目标应用软件的加密后的补丁文件中,确定中间补丁文件,其中,所述中间补丁文件为版本号大于所述当前版本号,且小于或等于所述目标版本号的加密后的补丁文件;
当所述中间补丁文件为多个,根据第二运算密钥,对每个中间补丁文件进行解密,所述解密包括对每个中间补丁文件包含的加密后的第一代码段进行解密,得到每个中间补丁文件的第一代码段的第一代码段标识和通过第一安全密钥加密后的第一代码内容;
根据所述多个中间补丁文件对应的版本号、每个解密后的中间补丁文件中的第一代码段包含的第一代码段标识,对解密后的所述多个中间补丁文件进行合并,得到所述目标应用软件的合并补丁文件;所述合并补丁文件包含更新后的第一代码段,所述更新后的第一代码段包括对通过第一安全密钥加密后的第一代码内容和更新后的第一代码段标识;
根据所述第一运算密钥对所述合并补丁文件进行加密,包括:根据所述第一运算密钥对所述合并补丁文件中更新后的第一代码段进行加密;
通过所述通信单元1101向所述终端设备发送加密后的所述合并补丁文件。
可选的,所述处理单元1102,在根据所述多个中间补丁文件对应的版本号、每个解密后的中间补丁文件的第一代码段包含的第一代码段标识,对解密后的所述多个中间补丁文件进行合并,得到所述目标应用软件的合并补丁文件时,具体用于:
根据存储的所述多个中间补丁文件对应的版本号的先后顺序,对解密后的所述多个中间补丁文件进行排序,得到文件序列,其中,版本号最先的解密后的中间补丁文件位于所述文件序列的首位,版本号最后的解密后的中间补丁文件位于所述文件序列的末位;
根据每个解密后的中间补丁文件中的第一代码段包含的第一代码段标识,按照所述文件序列的顺序依次将每个解密后的中间补丁文件进行合并,得到所述合并补丁文件。
可选的,所述加密后的补丁文件中还包含加密后的补丁头部,所述加密后的补丁头部是通过所述第一安全密钥加密的;所述合并补丁文件中还包含所述加密后的补丁头部。
可选的,所述处理单元1102,在确定所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号时,具体用于:
从所述补丁下载请求中获取所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号。
可选的,所述加密后的补丁文件包含至少一个加密后的第一代码段;所述加密后的第一代码段为加密后的一行第一代码,所述第一代码段标识为所述第一代码的行号;所述合并补丁文件包含至少一个更新后的第一代码段。
在第二种实施方式中,所述处理单元1102,用于:
存储目标应用软件的加密后的补丁文件和所述补丁文件对应的版本号;其中,所述加密后的补丁文件包含第一代码段,所述第一代码段包含加密后的第一代码段标识和加密后的第一代码内容;所述加密后的第一代码段标识是通过第一运算密钥对第一代码段标识加密得到的,所述加密后的第一代码内容是通过第一安全密钥对第一代码内容加密得到的,所述第一运算密钥与所述第一安全密钥不同;
通过所述通信单元1101从终端设备接收所述目标应用软件的补丁下载请求;
根据所述补丁下载请求确定所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号;
根据所述当前版本号和所述目标版本号,从本地存储的所述目标应用软件的加密后的补丁文件中,确定中间补丁文件,其中,所述中间补丁文件为版本号大于所述当前版本号,且小于或等于所述目标版本号的加密后的补丁文件;
当所述中间补丁文件为多个时,根据第二运算密钥,对每个中间补丁文件进行解密,所述解密包括对每个中间补丁文件的第一代码段包含的加密后的第一代码段标识进行解密,得到每个中间补丁文件的第一代码段包含的第一代码段标识;
根据所述多个中间补丁文件对应的版本号、每个解密后的中间补丁文件中的第一代码段包含的第一代码段标识,对解密后的所述多个中间补丁文件进行合并,得到所述目标应用软件的合并补丁文件;其中,所述合并补丁文件包含更新后的第一代码段,所述更新后的第一代码段包括对通过第一安全密钥加密后的第一代码内容和更新后的第一代码段标识;
根据所述第一运算密钥对所述合并补丁文件进行加密,包括:根据所述第一运算密钥对所述合并补丁文件中更新后的第一代码段标识进行加密;
通过所述通信单元1101向所述终端设备发送加密后的所述合并补丁文件。
可选的,所述处理单元1102,在根据所述多个中间补丁文件对应的版本号、每个解密后的中间补丁文件的第一代码段包含的第一代码段标识,对解密后的所述多个中间补丁文件进行合并,得到所述目标应用软件的合并补丁文件时,具体用于:
根据存储的所述多个中间补丁文件对应的版本号的先后顺序,对解密后的所述多个中间补丁文件进行排序,得到文件序列,其中,版本号最先的解密后的中间补丁文件位于所述文件序列的首位,版本号最后的解密后的中间补丁文件位于所述文件序列的末位;
根据每个解密后的中间补丁文件中的第一代码段包含的第一代码段标识,按照所述文件序列的顺序依次将每个解密后的中间补丁文件进行合并,得到所述合并补丁文件。
可选的,所述加密后的补丁文件中还包含加密后的补丁头部,所述加密后的补丁头部是通过所述第一安全密钥加密的;
所述合并补丁文件中还包含所述加密后的补丁头部。
可选的,所述处理单元1102,在确定所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号时,具体用于:
从所述补丁下载请求中获取所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号。
可选的,所述加密后的补丁文件包含至少一个加密后的第一代码段;所述加密后的第一代码段为加密后的一行第一代码,所述第一代码段标识为所述第一代码的行号;所述合并补丁文件包含至少一个更新后的第一代码段。
下面对所述通信装置1100应用于终端设备时,所述处理单元1102的具体功能进行介绍。
在第一种实施方式中,处理单元1102,用于:
通过所述通信单元1101向所述升级服务器发送目标应用软件的补丁下载请求;
通过所述通信单元1101从所述升级服务器接收所述目标应用软件的加密后的合并补丁文件,其中,所述加密后的合并补丁文件是所述升级服务器对所述目标应用软件的多个中间补丁文件进行合并生成的,所述加密后的合并补丁文件包含加密后的第一代码段,所述加密后的第一代码段是通过第一运算密钥对第一代码段进行加密得到的,所述第一代码段包含第一代码段标识和通过第一安全密钥加密后的第一代码内容;所述第一运算密钥与所述第一安全密钥不同;
对所述加密后的合并补丁文件进行解密处理,得到合并补丁文件,包括:根据第二运算密钥,对所述加密后的第一代码段进行解密,得到所述第一代码段;根据第二安全密钥,对所述第一代码段包含的通过第一安全密钥加密后的第一代码内容进行解密,得到第一代码内容;
根据所述合并补丁文件中的所述第一代码段包含的第一代码段标识和所述第一代码内容,对已安装的所述目标应用软件进行升级。
可选的,所述加密后的合并补丁文件还包含加密后的补丁头部,所述加密后的补丁头部是通过第一安全密钥加密的;所述处理单元1102,在对所述加密后的合并补丁文件进行解密处理时,还用于:
根据所述第二安全密钥,对所述加密后的合并补丁文件的所述加密后的补丁头部进行解密,得到补丁头部。
可选的,所述处理单元1102,还用于:
在对所述加密后的合并补丁文件进行解密处理之后,在根据所述合并补丁文件中的所述第一代码段包含的第一代码段标识和第一代码内容,对已安装的所述目标应用软件进行升级之前,获取所述目标应用软件的标识偏移值;根据所述标识偏移值,对所述合并补丁文件中所述第一代码段包含的所述第一代码段标识进行偏移。
可选的,所述补丁下载请求中包含所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号。
可选的,所述加密后的合并补丁文件包含至少一个加密后的第一代码段;所述加密后的第一代码段为加密后的一行第一代码,所述第一代码段标识为所述第一代码的行号。
在第二种实施方式中,处理单元1102,用于:
通过所述通信单元1101向所述升级服务器发送目标应用软件的补丁下载请求;
通过所述通信单元1101从所述升级服务器接收所述目标应用软件的加密后的合并补丁文件,其中,所述加密后的合并补丁文件是所述升级服务器对所述目标应用软件的多个目标补丁文件进行合并生成的,所述加密后的合并补丁文件包含第一代码段,所述第一代码段包含加密后的第一代码段标识和加密后的第一代码内容,所述加密后的第一代码段标识是通过第一运算密钥对第一代码段进行加密得到的,所述加密后的第一代码内容是通过第一安全密钥对第一代码内容加密得到的,所述第一运算密钥与所述第一安全密钥不同;
对所述加密后的合并补丁文件进行解密处理,得到合并补丁文件,包括:根据第二运算密钥,对所述加密后的第一代码段标识进行解密,得到第一代码段标识;根据第二安全密钥,对所述加密后的第一代码内容进行解密,得到第一代码内容;
根据所述合并补丁文件中的所述第一代码段包含的第一代码段标识和所述第一代码内容,对已安装的所述目标应用软件进行升级。
可选的,所述加密后的合并补丁文件还包含加密后的补丁头部,所述加密后的补丁头部是通过第一安全密钥加密的;所述处理单元1102,在对所述加密后的合并补丁文件进行解密处理时,还用于:
根据所述第二安全密钥,对所述加密后的合并补丁文件的所述加密后的补丁头部进行解密,得到补丁头部。
可选的,所述处理单元1102,还用于:
在对所述加密后的合并补丁文件进行解密处理之后,在根据所述合并补丁文件中的所述第一代码段包含的第一代码段标识和所述第一代码内容,对已安装的所述目标应用软件进行升级之前,获取所述目标应用软件的标识偏移值;根据所述标识偏移值,对所述合并补丁文件中所述第一代码段包含的所述第一代码段标识进行偏移。
可选的,所述补丁下载请求中包含所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号。
可选的,所述加密后的合并补丁文件包含至少一个第一代码段;所述第一代码段为一行第一代码,所述第一代码段标识为所述第一代码的行号。
需要说明的是,本申请以上实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
基于相同的技术构思,本申请还提供了一种通信设备,所述通信设备可以应用于如图1所示的软件升级系统中的软件开发设备、软件服务器,或终端设备,可以实现以上实施例以及实例提供的软件升级方法,具有图11所示的通信装置的功能。参阅图12所示,所述通信设备1200包括:通信模块1201、处理器1202以及存储器1203。其中,所述通信模块1201、所述处理器1202以及所述存储器1203之间相互连接。
可选的,所述通信模块1201、所述处理器1202以及所述存储器1203之间通过总线1204相互连接。所述总线1204可以是外设部件互连标准(peripheral componentinterconnect,PCI)总线或扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
所述通信模块1201,用于接收和发送数据,实现与其他设备之间的通信交互。例如,当所述通信设备1200应用于软件开发设备、软件服务器时,所述通信模块1201可以通过物理接口实现。又例如,当所述通信设备1200应用于终端设备,所述通信模块1201还可以通过收发器实现。
所述处理器1202,用于实现软件开发设备、软件服务器,或终端设备实现以上实施例中提供的软件升级方法,具体功能可以参见以上软件升级方法中的描述,以及图11所示的实施例中对所述通信装置1100的具体功能描述,此处不再赘述。
所述存储器1203,用于存放程序指令和数据等。具体地,程序指令可以包括程序代码,该程序代码包括计算机操作指令。存储器1203可能包含随机存取存储器(randomaccess memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。处理器1202执行存储器1203所存放的程序指令,并使用所述存储器1203中存储的数据,实现上述功能,从而实现上述实施例提供的软件升级方法。
可以理解,本申请图12中的存储器1203可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
基于以上实施例,本申请实施例还提供了一种计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行以上实施例提供的软件升级方法。
基于以上实施例,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,所述计算机程序被计算机执行时,使得计算机执行以上实施例提供的软件升级方法。
其中,存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。
基于以上实施例,本申请实施例还提供了一种芯片,所述芯片用于读取存储器中存储的计算机程序,实现以上实施例提供的软件升级方法。
基于以上实施例,本申请实施例提供了一种芯片系统,该芯片系统包括处理器,用于支持计算机装置实现以上实施例中软件开发设备、软件服务器,或终端设备所涉及的功能。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器用于保存该计算机装置必要的程序和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
综上所述,本申请实施例提供了一种软件升级方法及设备。软件开发设备将每次生成的补丁文件进行加密后,将加密后的补丁文件以及对应的版本号发送给升级服务器保存;升级服务器可以根据终端设备对目标应用软件的升级需求,在本地存储的所述目标应用软件的补丁文件中,确定多个中间补丁文件;然后,所述升级服务器对每个中间补丁文件中加密后的第一代码段标识进行解密,并根据版本号和每个中间补丁文件中第一代码段标识,对所述多个中间补丁文件进行合并,得到合并补丁文件,并将该合并补丁文件加密后发送给终端设备,以使所述终端设备可以根据所述合并补丁文件进行所述目标应用软件的软件升级。
在上述方案中,所述升级服务器可以将满足终端设备的所述目标应用软件的升级需求的多个中间补丁文件进行拼接合并,这样,所述终端设备可以仅下载和安装一次合并补丁文件即可实现目标应用软件从当前版本号升级至目标版本号,显然,该方法可以明显的缩短终端设备进行软件升级消耗的时间,可以提高终端设备软件升级效率。另外,所述软件开发设备在对每个补丁文件进行加密的过程中,使用不同的密钥分别对第一代码段标识和第一代码内容进行加密,这样,所述升级服务器在对补丁文件进行合并过程中可以仅对加密后的第一代码段标识进行解密,而无法对加密后的第一代码内容进行解密,因此,该方法可以保证补丁文件中代码内容的安全性。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (27)
1.一种软件升级方法,其特征在于,包括:
升级服务器存储目标应用软件加密后的补丁文件和所述补丁文件对应的版本号;其中,所述加密后的补丁文件包含加密后的第一代码段,所述加密后的第一代码段是通过第一运算密钥对第一代码段标识和通过第一安全密钥加密后的第一代码内容进行加密得到的,所述第一运算密钥与所述第一安全密钥不同;
所述升级服务器从终端设备接收所述目标应用软件的补丁下载请求;
所述升级服务器根据所述补丁下载请求确定所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号;
所述升级服务器根据所述当前版本号和所述目标版本号,从本地存储的所述目标应用软件的加密后的补丁文件中,确定中间补丁文件,其中,所述中间补丁文件为版本号大于所述当前版本号,且小于或等于所述目标版本号的加密后的补丁文件;
当所述中间补丁文件为多个,所述升级服务器根据第二运算密钥,对每个中间补丁文件进行解密,所述解密包括对每个中间补丁文件包含的加密后的第一代码段进行解密,得到每个中间补丁文件的第一代码段的第一代码段标识和通过第一安全密钥加密后的第一代码内容;
所述升级服务器根据所述多个中间补丁文件对应的版本号、每个解密后的中间补丁文件中的第一代码段包含的第一代码段标识,对解密后的所述多个中间补丁文件进行合并,得到所述目标应用软件的合并补丁文件;所述合并补丁文件包含更新后的第一代码段,所述更新后的第一代码段包括对通过第一安全密钥加密后的第一代码内容和更新后的第一代码段标识;
所述升级服务器根据所述第一运算密钥对所述合并补丁文件进行加密,包括:根据所述第一运算密钥对所述合并补丁文件中更新后的第一代码段进行加密;
所述升级服务器向所述终端设备发送加密后的所述合并补丁文件。
2.如权利要求1所述的方法,其特征在于,所述升级服务器根据所述多个中间补丁文件对应的版本号、每个解密后的中间补丁文件的第一代码段包含的第一代码段标识,对解密后的所述多个中间补丁文件进行合并,得到所述目标应用软件的合并补丁文件,包括:
所述升级服务器根据存储的所述多个中间补丁文件对应的版本号的先后顺序,对解密后的所述多个中间补丁文件进行排序,得到文件序列,其中,版本号最先的解密后的中间补丁文件位于所述文件序列的首位,版本号最后的解密后的中间补丁文件位于所述文件序列的末位;
所述升级服务器根据每个解密后的中间补丁文件中的第一代码段包含的第一代码段标识,按照所述文件序列的顺序依次将每个解密后的中间补丁文件进行合并,得到所述合并补丁文件。
3.如权利要求1或2所述的方法,其特征在于,所述加密后的补丁文件还包含加密后的补丁头部,所述加密后的补丁头部是通过所述第一安全密钥加密的;
所述合并补丁文件还包含所述加密后的补丁头部。
4.如权利要求1-3任一项所述的方法,其特征在于,所述升级服务器根据所述补丁下载请求确定所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号,包括:
所述升级服务器从所述补丁下载请求中获取所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号。
5.如权利要求1-4任一项所述的方法,其特征在于,所述加密后的补丁文件包含至少一个加密后的第一代码段;所述加密后的第一代码段为加密后的一行第一代码,所述第一代码段标识为所述第一代码的行号;
所述合并补丁文件包含至少一个更新后的第一代码段。
6.一种软件升级方法,其特征在于,包括:
终端设备向所述升级服务器发送目标应用软件的补丁下载请求;
所述终端设备从所述升级服务器接收所述目标应用软件的加密后的合并补丁文件,其中,所述加密后的合并补丁文件是所述升级服务器对所述目标应用软件的多个中间补丁文件进行合并生成的,所述加密后的合并补丁文件包含加密后的第一代码段,所述加密后的第一代码段是通过第一运算密钥对第一代码段进行加密得到的,所述第一代码段包含第一代码段标识和通过第一安全密钥加密后的第一代码内容;所述第一运算密钥与所述第一安全密钥不同;
所述终端设备对所述加密后的合并补丁文件进行解密处理,得到合并补丁文件,包括:所述终端设备根据第二运算密钥,对所述加密后的第一代码段进行解密,得到所述第一代码段;所述终端设备根据第二安全密钥,对所述第一代码段包含的通过第一安全密钥加密后的第一代码内容进行解密,得到第一代码内容;
所述终端设备根据所述合并补丁文件中的所述第一代码段包含的第一代码段标识和所述第一代码内容,对已安装的所述目标应用软件进行升级。
7.如权利要求6所述的方法,其特征在于,所述加密后的合并补丁文件还包含加密后的补丁头部,所述加密后的补丁头部是通过第一安全密钥加密的;
所述终端设备对所述加密后的合并补丁文件进行解密处理,还包括:
所述终端设备根据所述第二安全密钥,对所述加密后的合并补丁文件的所述加密后的补丁头部进行解密,得到补丁头部。
8.如权利要求6或7所述的方法,其特征在于,在所述终端设备对所述加密后的合并补丁文件进行解密处理之后,在所述终端设备根据所述合并补丁文件中的所述第一代码段包含的第一代码段标识和第一代码内容,对已安装的所述目标应用软件进行升级之前,还包括:
所述终端设备获取所述目标应用软件的标识偏移值;
所述终端设备根据所述标识偏移值,对所述合并补丁文件中所述第一代码段包含的所述第一代码段标识进行偏移。
9.如权利要求6-8任一项所述的方法,其特征在于,所述补丁下载请求中包含所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号。
10.如权利要求6-9任一项所述的方法,其特征在于,所述加密后的合并补丁文件包含至少一个加密后的第一代码段;所述加密后的第一代码段为加密后的一行第一代码,所述第一代码段标识为所述第一代码的行号。
11.一种软件升级方法,其特征在于,包括:
升级服务器存储目标应用软件的加密后的补丁文件和所述补丁文件对应的版本号;其中,所述加密后的补丁文件包含第一代码段,所述第一代码段包含加密后的第一代码段标识和加密后的第一代码内容;所述加密后的第一代码段标识是通过第一运算密钥对第一代码段标识加密得到的,所述加密后的第一代码内容是通过第一安全密钥对第一代码内容加密得到的,所述第一运算密钥与所述第一安全密钥不同;
所述升级服务器从终端设备接收所述目标应用软件的补丁下载请求;
所述升级服务器根据所述补丁下载请求确定所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号;
所述升级服务器根据所述当前版本号和所述目标版本号,从本地存储的所述目标应用软件的加密后的补丁文件中,确定中间补丁文件,其中,所述中间补丁文件为版本号大于所述当前版本号,且小于或等于所述目标版本号的加密后的补丁文件;
当所述中间补丁文件为多个时,所述升级服务器根据第二运算密钥,对每个中间补丁文件进行解密,所述解密包括对每个中间补丁文件的第一代码段包含的加密后的第一代码段标识进行解密,得到每个中间补丁文件的第一代码段包含的第一代码段标识;
所述升级服务器根据所述多个中间补丁文件对应的版本号、每个解密后的中间补丁文件中的第一代码段包含的第一代码段标识,对解密后的所述多个中间补丁文件进行合并,得到所述目标应用软件的合并补丁文件;其中,所述合并补丁文件包含更新后的第一代码段,所述更新后的第一代码段包括对通过第一安全密钥加密后的第一代码内容和更新后的第一代码段标识;
所述升级服务器根据所述第一运算密钥对所述合并补丁文件进行加密,包括:根据所述第一运算密钥对所述合并补丁文件中更新后的第一代码段标识进行加密;
所述升级服务器向所述终端设备发送加密后的所述合并补丁文件。
12.如权利要求11所述的方法,其特征在于,所述升级服务器根据所述多个中间补丁文件对应的版本号、每个解密后的中间补丁文件的第一代码段包含的第一代码段标识,对解密后的所述多个中间补丁文件进行合并,得到所述目标应用软件的合并补丁文件,包括:
所述升级服务器根据存储的所述多个中间补丁文件对应的版本号的先后顺序,对解密后的所述多个中间补丁文件进行排序,得到文件序列,其中,版本号最先的解密后的中间补丁文件位于所述文件序列的首位,版本号最后的解密后的中间补丁文件位于所述文件序列的末位;
所述升级服务器根据每个解密后的中间补丁文件中的第一代码段包含的第一代码段标识,按照所述文件序列的顺序依次将每个解密后的中间补丁文件进行合并,得到所述合并补丁文件。
13.如权利要求11或12所述的方法,其特征在于,所述加密后的补丁文件还包含加密后的补丁头部,所述加密后的补丁头部是通过所述第一安全密钥加密的;
所述合并补丁文件还包含所述加密后的补丁头部。
14.如权利要求11-13任一项所述的方法,其特征在于,所述升级服务器根据所述补丁下载请求确定所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号,包括:
所述升级服务器从所述补丁下载请求中获取所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号。
15.如权利要求11-14任一项所述的方法,其特征在于,所述加密后的补丁文件包含至少一个加密后的第一代码段;所述加密后的第一代码段为加密后的一行第一代码,所述第一代码段标识为所述第一代码的行号;
所述合并补丁文件包含至少一个更新后的第一代码段。
16.一种软件升级方法,其特征在于,包括:
终端设备向所述升级服务器发送目标应用软件的补丁下载请求;
所述终端设备从所述升级服务器接收所述目标应用软件的加密后的合并补丁文件,其中,所述加密后的合并补丁文件是所述升级服务器对所述目标应用软件的多个目标补丁文件进行合并生成的,所述加密后的合并补丁文件包含第一代码段,所述第一代码段包含加密后的第一代码段标识和加密后的第一代码内容,所述加密后的第一代码段标识是通过第一运算密钥对第一代码段进行加密得到的,所述加密后的第一代码内容是通过第一安全密钥对第一代码内容加密得到的,所述第一运算密钥与所述第一安全密钥不同;
所述终端设备对所述加密后的合并补丁文件进行解密处理,得到合并补丁文件,包括:所述终端设备根据第二运算密钥,对所述加密后的第一代码段标识进行解密,得到第一代码段标识;所述终端设备根据第二安全密钥,对所述加密后的第一代码内容进行解密,得到第一代码内容;
所述终端设备根据所述合并补丁文件中的所述第一代码段包含的第一代码段标识和所述第一代码内容,对已安装的所述目标应用软件进行升级。
17.如权利要求16所述的方法,其特征在于,所述加密后的合并补丁文件还包含加密后的补丁头部,所述加密后的补丁头部是通过第一安全密钥加密的;
所述终端设备对所述加密后的合并补丁文件进行解密处理,还包括:
所述终端设备根据所述第二安全密钥,对所述加密后的合并补丁文件的所述加密后的补丁头部进行解密,得到补丁头部。
18.如权利要求16或17所述的方法,其特征在于,在所述终端设备对所述加密后的合并补丁文件进行解密处理之后,在所述终端设备根据所述合并补丁文件中的所述第一代码段包含的第一代码段标识和所述第一代码内容,对已安装的所述目标应用软件进行升级之前,还包括:
所述终端设备获取所述目标应用软件的标识偏移值;
所述终端设备根据所述标识偏移值,对所述合并补丁文件中所述第一代码段包含的所述第一代码段标识进行偏移。
19.如权利要求16-18任一项所述的方法,其特征在于,所述补丁下载请求中包含所述终端设备中已安装的所述目标应用软件的当前版本号,以及所述终端设备进行所述目标应用软件升级的目标版本号。
20.如权利要求16-19任一项所述的方法,其特征在于,所述加密后的合并补丁文件包含至少一个第一代码段;所述第一代码段为一行第一代码,所述第一代码段标识为所述第一代码的行号。
21.一种升级服务器,其特征在于,包括:
通信单元,用于接收和发送数据;
处理单元,用于通过所述通信单元,实现权利要求1-5任一项所述的方法。
22.一种终端设备,其特征在于,包括:
通信单元,用于接收和发送数据;
处理单元,用于通过所述通信单元,实现权利要求6-10任一项所述的方法。
23.一种升级服务器,其特征在于,包括:
通信单元,用于接收和发送数据;
处理单元,用于通过所述通信单元,实现权利要求11-15任一项所述的方法。
24.一种终端设备,其特征在于,包括:
通信单元,用于接收和发送数据;
处理单元,用于通过所述通信单元,实现权利要求16-20任一项所述的方法。
25.一种计算机程序,其特征在于,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1-20任一项所述的方法。
26.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序被计算机执行时,使得所述计算机执行如权利要求1-20任一项所述的方法。
27.一种芯片,其特征在于,所述芯片用于读取存储器中存储的计算机程序,执行如权利要求1-20任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010077050.5A CN113157305B (zh) | 2020-01-23 | 2020-01-23 | 一种软件升级方法及设备 |
EP21743687.2A EP4086757A4 (en) | 2020-01-23 | 2021-01-05 | SOFTWARE UPGRADE METHOD AND DEVICE |
PCT/CN2021/070365 WO2021147668A1 (zh) | 2020-01-23 | 2021-01-05 | 一种软件升级方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010077050.5A CN113157305B (zh) | 2020-01-23 | 2020-01-23 | 一种软件升级方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113157305A CN113157305A (zh) | 2021-07-23 |
CN113157305B true CN113157305B (zh) | 2022-04-05 |
Family
ID=76882157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010077050.5A Active CN113157305B (zh) | 2020-01-23 | 2020-01-23 | 一种软件升级方法及设备 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4086757A4 (zh) |
CN (1) | CN113157305B (zh) |
WO (1) | WO2021147668A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114006791B (zh) * | 2021-10-29 | 2023-05-30 | 东风商用车有限公司 | 一种低延时报文转发方法及网关 |
CN115098128A (zh) * | 2022-06-10 | 2022-09-23 | 深圳市元征科技股份有限公司 | 软件更新方法、装置、设备及存储介质 |
CN115811413B (zh) * | 2022-07-15 | 2023-07-25 | 北京金朗维科技有限公司 | 一种用于无线扫码设备的在线升级方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402438A (zh) * | 2010-09-16 | 2012-04-04 | 金蝶软件(中国)有限公司 | 一种补丁文件的自动合并方法、装置及通信终端 |
CN105787367A (zh) * | 2016-02-23 | 2016-07-20 | 华中科技大学 | 一种软件更新的补丁安全性检测方法及系统 |
CN110351314A (zh) * | 2018-04-03 | 2019-10-18 | 厦门雅迅网络股份有限公司 | 汽车控制器的远程升级方法及计算机可读存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1533695B1 (en) * | 2003-11-19 | 2013-08-07 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | Updating data in a mobile terminal |
CN106302592B (zh) * | 2015-05-28 | 2021-01-01 | 腾讯科技(深圳)有限公司 | 终端应用的更新方法、服务器和终端 |
AU2018219696B2 (en) * | 2017-02-10 | 2021-03-25 | Huawei Technologies Co., Ltd. | Method for updating certificate issuer public key, and related device and system |
EP3690643B1 (en) * | 2017-10-24 | 2023-01-25 | Huawei International Pte. Ltd. | Vehicle-mounted device upgrading method and related device |
CN107861736A (zh) * | 2017-11-01 | 2018-03-30 | 网易(杭州)网络有限公司 | 补丁生成和更新方法及装置、电子设备、存储介质 |
CN108710500A (zh) * | 2018-05-23 | 2018-10-26 | 北京五八信息技术有限公司 | 资源发布方法、更新方法和装置 |
CN110162330B (zh) * | 2019-07-08 | 2021-04-13 | 上海赫千电子科技有限公司 | 一种应用于汽车ecu升级文件的系统及方法 |
CN110442377B (zh) * | 2019-08-13 | 2023-11-24 | 网易(杭州)网络有限公司 | 补丁包生成方法、应用更新方法、装置和电子设备 |
-
2020
- 2020-01-23 CN CN202010077050.5A patent/CN113157305B/zh active Active
-
2021
- 2021-01-05 WO PCT/CN2021/070365 patent/WO2021147668A1/zh unknown
- 2021-01-05 EP EP21743687.2A patent/EP4086757A4/en not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402438A (zh) * | 2010-09-16 | 2012-04-04 | 金蝶软件(中国)有限公司 | 一种补丁文件的自动合并方法、装置及通信终端 |
CN105787367A (zh) * | 2016-02-23 | 2016-07-20 | 华中科技大学 | 一种软件更新的补丁安全性检测方法及系统 |
CN110351314A (zh) * | 2018-04-03 | 2019-10-18 | 厦门雅迅网络股份有限公司 | 汽车控制器的远程升级方法及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP4086757A1 (en) | 2022-11-09 |
WO2021147668A1 (zh) | 2021-07-29 |
EP4086757A4 (en) | 2023-06-21 |
CN113157305A (zh) | 2021-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113157305B (zh) | 一种软件升级方法及设备 | |
CN109561118B (zh) | 软件升级方法、装置、系统、存储介质、电子设备及车辆 | |
CN112543927B (zh) | 一种设备升级方法及相关设备 | |
CN112912847B (zh) | 空中下载升级的方法及相关装置 | |
CN112799706A (zh) | 车辆升级包处理方法和装置 | |
CN112913189B (zh) | 一种ota升级方法及装置 | |
CN112994873B (zh) | 一种证书申请方法及设备 | |
CN116107612B (zh) | 固件空中升级装置、充电桩、设备、方法及程序产品 | |
CN106020868B (zh) | 一种智能卡固件更新方法及系统 | |
CN112329044A (zh) | 信息获取方法、装置、电子设备和计算机可读介质 | |
CN113938880A (zh) | 一种应用的验证方法及装置 | |
CN111953716B (zh) | 消息通讯方法、系统、计算机设备及存储介质 | |
CN114338710A (zh) | 数据同步方法、装置、计算机存储介质及相关设备 | |
CN113765950B (zh) | 物联网设备、服务器及软件更新方法 | |
CN114780124A (zh) | 差分升级方法、装置、介质及电子设备 | |
CN114339676A (zh) | 一种针对无人驾驶设备的更新系统、方法及装置 | |
CN113961931A (zh) | adb工具使用方法、装置和电子设备 | |
CN113132409A (zh) | 一种数据传输方法及装置 | |
CN113381938A (zh) | 数据包发送方法、装置、存储介质及电子设备 | |
CN111770488A (zh) | Ehplmn更新方法、相关设备及存储介质 | |
CN117616388A (zh) | 车载通信系统、重编策略元数据的数据结构以及下载元数据的数据结构 | |
CN116738472B (zh) | 应用于任务数据交互的任务数据加密方法、装置与设备 | |
US20240104217A1 (en) | Computer-readable storage medium, gateway for transmitting the same, and software update method using the same | |
CN113987469B (zh) | 应用于车机系统的进程保护方法、装置、电子设备 | |
CN117597683A (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 |