CN117951706A - 一种固件升级方法、装置、服务器、终端设备及存储介质 - Google Patents
一种固件升级方法、装置、服务器、终端设备及存储介质 Download PDFInfo
- Publication number
- CN117951706A CN117951706A CN202211295975.2A CN202211295975A CN117951706A CN 117951706 A CN117951706 A CN 117951706A CN 202211295975 A CN202211295975 A CN 202211295975A CN 117951706 A CN117951706 A CN 117951706A
- Authority
- CN
- China
- Prior art keywords
- upgrade
- sub
- packages
- package
- firmware
- 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
- 238000000034 method Methods 0.000 title claims abstract description 84
- 230000001131 transforming effect Effects 0.000 claims description 23
- 230000005540 biological transmission Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 10
- 238000011084 recovery Methods 0.000 claims description 3
- 238000000605 extraction Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 33
- 238000005336 cracking Methods 0.000 abstract description 2
- 238000012795 verification Methods 0.000 description 44
- 238000006243 chemical reaction Methods 0.000 description 11
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 10
- 208000035475 disorder Diseases 0.000 description 10
- 238000005192 partition Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000009191 jumping Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- KLDZYURQCUYZBL-UHFFFAOYSA-N 2-[3-[(2-hydroxyphenyl)methylideneamino]propyliminomethyl]phenol Chemical compound OC1=CC=CC=C1C=NCCCN=CC1=CC=CC=C1O KLDZYURQCUYZBL-UHFFFAOYSA-N 0.000 description 2
- QVFWZNCVPCJQOP-UHFFFAOYSA-N chloralodol Chemical compound CC(O)(C)CC(C)OC(O)C(Cl)(Cl)Cl QVFWZNCVPCJQOP-UHFFFAOYSA-N 0.000 description 2
- 201000001098 delayed sleep phase syndrome Diseases 0.000 description 2
- 208000033921 delayed sleep phase type circadian rhythm sleep disease Diseases 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16Y—INFORMATION AND COMMUNICATION TECHNOLOGY SPECIALLY ADAPTED FOR THE INTERNET OF THINGS [IoT]
- G16Y30/00—IoT infrastructure
- G16Y30/10—Security thereof
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种固件升级方法、装置、服务器、终端设备及存储介质,一种固件升级方法,包括:获取目标固件升级包;获取目标终端设备的识别码并提取所述识别码中预先配置的升级信息;基于所述升级信息将所述目标固件升级包拆分成若干子升级包;将所述若干子升级包进行存储和/或发送至目标终端设备。本发明能够有效避免固件升级过程中的安全风险,单一设备被黑客攻击无法泄漏其他设备信息,很难在网络中观察出规律并大范围干扰终端设备的固件升级。系统的破解难度和终端设备数量成正比,尤其适用于大范围的传感器和控制器网络,适用于军用和工厂端场景。
Description
技术领域
本发明涉及固件升级技术领域,尤其涉及一种固件升级方法、装置、服务器、终端设备及存储介质。
背景技术
与传统意义上的网络安全不同,物联网(The Internet of Things,简称IOT)安全是网络安全与其他工程学科相融合的产物。相比于单纯的数据、服务器、网络基础架构和信息安全,物联网安全的内涵要更加丰富。而且,物联网安全还需要包括对联网物理系统状态的直接或分布式的监测和控制。
物联网系统中存在大量的终端设备,其中很大一部分又是算力及存储资源有限的单片机设备。在这种资源严重受限的设备环境中,传统的基于操作系统的安全管理如防火墙、应用商店等解决方案是无法保证设备在升级中的安全问题的。
因此,本领域亟需一种安全的固件升级方案,来有效避免终端设备的固件升级过程中的安全风险。
发明内容
本发明提供一种固件升级方法、装置、服务器、终端设备及存储介质,能够有效避免固件升级过程中的安全风险。
第一方面,本发明实施例提供一种固件升级方法,应用于服务器,包括:
获取目标固件升级包;
获取目标终端设备的识别码并提取所述识别码中预先配置的升级信息;
基于所述升级信息将所述目标固件升级包拆分成若干子升级包;
将所述若干子升级包进行存储和/或发送至目标终端设备。
在一些实现方式中,所述升级信息包括子升级包的大小、子升级包的顺序标识、子升级包的下载地址偏移量中的至少一种。
在一些实现方式中,在所述升级信息包括子升级包的顺序标识的情况下,所述基于所述升级信息将所述目标固件升级包拆分成若干子升级包,包括:
基于所述顺序标识将所述目标固件升级包拆分成若干子升级包,并对所述若干子升级包进行编号;
基于所述若干子升级包的编号生成所述目标固件升级包的包头,所述包头包括所述目标终端设备的识别码、所述目标固件升级包所拆分的子升级包的数量和编号。
在一些实现方式中,所述顺序标识包括预设位数的二进制数据;所述基于所述顺序标识将所述目标固件升级包拆分成若干子升级包,并对所述若干子升级包进行编号,包括:
根据所述预设位数的二进制数据对应的数值,确定在将所述目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换;
在确定将各子升级包进行顺序变换的情况下,将所述目标固件升级包拆分成若干子升级包,并根据所述预设位数的二进制数据对应的数值将各子升级包进行顺序变换;
在确定各子升级包的顺序不变的情况下,将所述目标固件升级包拆分成若干子升级包,且各子升级包的顺序不变;
对所述若干子升级包进行编号。
在一些实现方式中,所述根据所述预设位数的二进制数据对应的数值,确定在将所述目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换,包括:
若所述预设位数的二进制数据对应的数值为0,确定将所述目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变;
若所述预设位数的二进制数据对应的数值为非0,确定将所述目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换。
在一些实现方式中,所述预设位数为1位;所述根据所述预设位数的二进制数据对应的数值将各子升级包进行顺序变换,包括:
将若干子升级包划分为若干对相邻的子升级包;
将每对相邻的子升级包中的两个子升级包的顺序交换。
在一些实现方式中,所述预设位数为至少2位;所述根据所述预设位数的二进制数据对应的数值将各子升级包进行顺序变换,包括:
将若干子升级包划分为若干组子升级包,每一组中包含特定数量子升级包,所述特定数量为预设位数的最大二进制数据对应的数值加1;
将每组子升级包中顺序相差所述数值的两个子升级包的顺序交换。
在一些实现方式中,所述根据所述预设位数的二进制数据对应的数值,确定在将所述目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换,包括:
若所述预设位数的二进制数据对应的数值为偶数,确定将所述目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变;若所述预设位数的二进制数据对应的数值为奇数,确定将所述目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换;
或者,若所述预设位数的二进制数据对应的数值为奇数,确定将所述目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变;若所述预设位数的二进制数据对应的数值为偶数,确定将所述目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换。
在一些实现方式中,所述根据所述预设位数的二进制数据对应的数值将各子升级包进行顺序变换,包括:
将若干子升级包划分为若干对相邻的子升级包;
将每对相邻的子升级包中的两个子升级包的顺序交换。
第二方面,本发明实施例提供一种固件升级方法,应用于终端设备,包括:
响应于获取到固件升级指令,获取终端设备的识别码并提取所述识别码中预先配置的升级信息;
下载服务器发送的基于所述升级信息拆分的子升级包;
在下载完最后一个子升级包的情况下,基于所述升级信息将若干子升级包恢复为固件升级包;
进行终端设备软重启。
第三方面,本发明实施例提供一种固件升级装置,应用于服务器,包括:
获取模块,用于获取目标固件升级包;
提取模块,用于获取目标终端设备的识别码并提取所述识别码中预先配置的升级信息;
拆分模块,用于基于所述升级信息将所述目标固件升级包拆分成若干子升级包;
存储/发送模块,用于将所述若干子升级包进行存储和/或发送至目标终端设备。
第四方面,本发明实施例提供一种固件升级装置,应用于终端设备,包括:
响应模块,用于响应于获取到固件升级指令,获取终端设备的识别码并提取所述识别码中预先配置的升级信息;
下载模块,用于下载服务器发送的基于所述升级信息拆分的子升级包;
恢复模块,用于在下载完最后一个子升级包的情况下,基于所述升级信息将若干子升级包恢复为固件升级包;
重启模块,用于进行终端设备软重启。
第五方面,本发明实施例提供一种计算机存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被一个或多个处理器执行时,实现如第一方面或第二方面所述的方法。
第六方面,本发明实施例提供一种服务器,包括存储器和一个或多个处理器,所述存储器上存储有计算机程序,所述计算机程序被所述一个或多个处理器执行时实现第一方面所述的方法。
第七方面,本发明实施例提供一种终端设备,包括存储器和一个或多个处理器,所述存储器上存储有计算机程序,所述计算机程序被所述一个或多个处理器执行时实现第二方面所述的方法。
与现有技术相比,本发明的一个或多个实施例至少能够带来如下有益效果:
本发明提供的固件升级方法、装置、服务器、终端设备及存储介质,服务器获取目标固件升级包及目标终端设备的识别码,提取识别码中预先配置的升级信息,基于升级信息将目标固件升级包拆分成若干子升级包进行存储和/或发送至目标终端设备,尤其适用于资源受限的嵌入式终端设备的安全升级。本方案的固件升级机制从升级包的拆分到终端设备经过安全验证引导新版本的固件启动,设置了多重冗余安全机制来保证终端设备的安全固件升级。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定。
图1是本发明实施例提供的一种固件升级方法流程图;
图2是本发明实施例提供的另一种固件升级方法流程图;
图3是本发明实施例提供的一种固件升级装置框图;
图4是本发明实施例提供的另一种固件升级装置框图;
图5是本发明实施例提供的一种服务器侧固件升级流程示意图;
图6是本发明实施例提供的一种终端设备侧固件升级流程示意图;
图7是本发明实施例提供的另一种终端设备侧固件升级流程示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
物联网(The Internet of Things,简称IOT)是通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、连接、互动的物体或过程,采集其声、光、热、电、力学、化学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。物联网是一个基于互联网、传统电信网等的信息承载体,它让所有能够被独立寻址的普通物理对象形成互联互通的网络。与传统意义上的网络安全不同,物联网安全是网络安全与其他工程学科相融合的产物。相比于单纯的数据、服务器、网络基础架构和信息安全,物联网安全的内涵要更加丰富。而且,物联网安全还需要包括对联网物理系统状态的直接或分布式的监测和控制。物联网系统中存在大量的终端设备,其中很大一部分又是算力及存储资源有限的单片机设备。在这种资源严重受限的设备环境中,传统的基于操作系统的安全管理如防火墙、应用商店等解决方案是无法保证设备在升级中的安全问题的。
以Android系统的终端设备为例,一些情形中可通过应用商店进行固件升级,尽管升级数据包的源头合法且传输过程中也存在加密处理,但无论是完整包还是差分包均是以整体的形式进行整个升级过程,且每个终端设备进行相同固件升级时的固件升级包及升级过程均相同,无法有效避免升级过程中的安全风险,另一些情形中可通过网页下载APK格式的固件升级包进行固件升级,由于涉及用户对风险的主观判断和选择,同样难以有效避免固件升级过程中的安全风险。
本发明实施例提供一种固件升级方法、装置、服务器、终端设备及存储介质,能够有效避免固件升级过程中的安全风险,单一设备被黑客攻击无法泄漏其他设备信息,很难在网络中观察出规律并大范围干扰终端设备的固件升级。系统的破解难度和终端设备数量成正比,尤其适用于大范围的传感器和控制器网络,适用于军用和工厂端场景。
实施例一
本实施例提供一种固件升级方法,应用于服务器,如图1所示,该方法包括:
步骤S101、获取目标固件升级包。
在实际应用中,可以将固件升级包看作一个整体文件,由开发人员在制作固件升级包时调试并测试完成,由服务器进行固件升级过程中的拆包存储或传输。在拆包时需要输入待升级的终端设备的识别号或者服务器自动根据终端设备的识别号进行固件升级包的拆包。
步骤S102、获取目标终端设备的识别码并提取识别码中预先配置的升级信息。
目标终端设备可以指待升级的终端设备,终端设备可以是物联网中的任一终端设备,例如,各种信息传感器、射频识别设备、全球定位系统、红外感应器、激光扫描器、电脑等。
一些实现方式中,识别码可以指预先配置终端设备的SN(Serial Number)码,相关技术中的固件升级包都是制作成统一的升级包文件,因此,在对批量终端设备进行固件升级时,每个终端设备进行相同固件升级时的固件升级包及升级过程均相同,一旦固件升级包传输(下载)过程中被监听,易使整个固件升级包泄露甚至被篡改,使得同样固件升级需求的终端设备在进行固件升级时的安全性无法得到有效保证。
本实施例中所采用的固件升级的安全机制中,每个终端设备都设置有配置具有一定定制性的识别码,在识别码中的至少部分字段配置有升级信息,针对每个终端设备进行识别码的定制,由于具有相同固件升级需求的终端设备的识别码的配置不同或者不完全相同,使得拆包传输(下载)的具体形式不是全部一致,因而即使单个终端设备的信息泄露,也不会带来整个系统所有终端设备的安全问题。
在一些实现方式中,升级信息包括子升级包的大小、子升级包的顺序标识、子升级包的下载地址偏移量中的至少一种。其中,子升级包的大小是拆分子升级包时每个子升级包的大小,例如是7bit;子升级包的顺序标识用于区分是否变换各子升级包的顺序以及如何变换各子升级包的顺序,以打乱拆分后的子升级包的传输顺序,提升传输过程中的复杂度,避免被监听时泄露整个固件升级包甚至被篡改,实际中可以根据为不同的终端设备设置子升级包的顺序标识,可以随机设置,也可以按照一定规律设置,本实施例不做限定。子升级包的下载地址偏移量用于确定子升级包在终端设备中的存储地址,以实现子升级包在终端设备中分区存储,实际应用中子升级包存储于终端设备的特定flash芯片,通过在特定flash芯片划分不同的存储区域,实现子升级包在终端设备中分区存储。
识别码的组成示例如表1所示:
表1
头部字段 | 顺序标识 | 子升级包大小 | 下载地址偏移量 | 尾部字段 |
若干字节 | 1bit(0或1) | 7bit(0~127) | 若干字节 | 若干字节 |
表1中的识别码,包括头部字段、子升级包的大小、子升级包的顺序标识、子升级包的下载地址偏移量和尾部字段。其中的头部字段、尾部字段可以参考相关技术中的SN中的头部字段、尾部字段设置,来标识对应的终端设备的基本信息,也可以自定义设置头部字段、尾部字段,在一些情况下还可以省略头部字段、尾部字段,即:识别码仅以升级信息来配置。
其中的子升级包的顺序标识为1位二进制数据,因而,该顺序标识为0或1,对应的数值也是0或1。在实际应用中,一些实现方式中可以设定针对识别码中顺序标识为0(偶数)的终端设备,在传输(下载)子升级包时将各子升级包的顺序不变;而针对识别码中顺序标识为1(奇数)的终端设备,在传输(下载)固件升级包时将各子升级包的顺序进行打乱,具体的打乱顺序规则可以是,将若干子升级包划分为若干对相邻的子升级包,将每对相邻的子升级包中的两个子升级包的顺序交换,以此规则打乱子升级包的顺序后,使得固件升级包的传输(下载)固件升级包时的被监听而泄露和篡改的难度明显增大,提升了固件升级的安全性。当然,也可以针对识别码中顺序标识为0(偶数)的终端设备和识别码中顺序标识为1(奇数)的终端设备,作与上述相反的设定。
终端设备特定flash芯片的存储区域划分示例,如表2所示:
表2
可以看出,通过在特定flash芯片划分不同的存储区域,实现子升级包在终端设备中分区存储。
步骤S103、基于升级信息将目标固件升级包拆分成若干子升级包。
在一些实现方式中,在升级信息包括子升级包的大小的情况下,基于升级信息将目标固件升级包拆分成若干子升级包,包括:
步骤S103a1、基于升级信息中的子升级包的大小将目标固件升级包拆分成若干子升级包,并对若干子升级包进行编号;
步骤S103a2、基于若干子升级包的编号生成目标固件升级包的包头,包头包括目标终端设备的识别码、目标固件升级包所拆分的子升级包的数量和编号。
在升级信息仅包括子升级包的大小的情况下,直接基于子升级包的大小将目标固件升级包拆分成若干子升级包,并对若干子升级包进行编号,进而生成目标固件升级包的包头。在升级信息不止包括子升级包(例如还包括子升级包的顺序标识、子升级包的下载地址偏移量)的情况下,可以基于子升级包的大小将目标固件升级包拆分成若干子升级包,并且结合其他升级信息进行顺序交换、子升级包存储等。
在一些实现方式中,在升级信息包括子升级包的顺序标识的情况下,基于升级信息将目标固件升级包拆分成若干子升级包,包括:
步骤S103a2、基于顺序标识将目标固件升级包拆分成若干子升级包,并对若干子升级包进行编号;
步骤S103b2、基于若干子升级包的编号生成目标固件升级包的包头,包头包括目标终端设备的识别码、目标固件升级包所拆分的子升级包的数量和编号。
在一些实现方式中,在升级信息包括子升级包的顺序标识的同时,还可以包括子升级包的大小。在基于顺序标识将目标固件升级包拆分成若干子升级包时,按照升级包的大小进行拆分,同时基于顺序标识来确定各子升级包的顺序是否变换。
在一些实现方式中,在升级信息包括子升级包的顺序标识的同时,还可以包括子升级包的大小和下载地址偏移量,在步骤S103a2中,基于顺序标识和子升级包的大小将目标固件升级包拆分成若干子升级包,并对若干子升级包进行编号,并基于若干子升级包的编号生成目标固件升级包的包头,而在终端设备下载服务传输的子升级包时,将各子升级包存储于基于下载地址偏移量确定的存储地址。
一些情况下,包头还可以包括固件升级密钥和/或整体性验证信息,供终端设备在安全引导流程中安全验证使用。
在实际应用中,顺序标识可以是二进制数据,也可以是其他形式的标识。可以根据实际的标识码配置规则确定标识码的总位数以及各种升级信息、头部字段、尾部字段等字节(或位数)。
在一些实现方式中,顺序标识包括预设位数的二进制数据;步骤S103a2中基于顺序标识将目标固件升级包拆分成若干子升级包,并对若干子升级包进行编号,包括:
第一步,根据预设位数的二进制数据对应的数值,确定在将目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换。
第二步,在确定将各子升级包进行顺序变换的情况下,将目标固件升级包拆分成若干子升级包,并根据预设位数的二进制数据对应的数值将各子升级包进行顺序变换;在确定各子升级包的顺序不变的情况下,将目标固件升级包拆分成若干子升级包,且各子升级包的顺序不变。
第三步,对若干子升级包进行编号。
应当理解的是,服务器上各子升级包的编号为0000,0001,0002,0003,0004,0005,…,info,info相当于提供目标固件升级包的包头的数据包。无论各子升级包的顺序是否经过变换,编号均为按顺序编写,变换的仅为各编号对应的子升级包内容。
如图5所示,服务器获取目标固件升级包,并获取待升级的目标最大设备的识别码,提取其中的升级信息,根据升级信息中的顺序标识来判断是否需要进行子升级包的顺序变换,在确定需要顺序变换或者顺序不变的情况下,拆分子升级包并进行编号,以获得一个个独立的子升级包文件,将各子升级包文件存储在服务器中等待目标终端设备固件升级时发送,或者当前目标终端设备处于固件升级时,则将子升级包文件发送给目标终端设备。
在一些实现方式中,根据预设位数的二进制数据对应的数值,确定在将目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换,可以进一步包括:
a、若预设位数的二进制数据对应的数值为0,确定将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变;
b、若预设位数的二进制数据对应的数值为非0,确定将目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换。
本实施例中,根据预设位数的二进制数据(顺序标识)对应的数值来确定是否将各子升级包进行顺序变换,数值为0则无需打乱顺序,数值为非0则需要打乱顺序。实现通过顺序标识来确定并在拆分时调整子升级包的顺序,提升固件升级包的传输(下载)的安全性。
一个示例中,预设位数为1,则二进制数据包括0或1,对应的数值也是0或1,进而,当前终端设备的识别码中顺序标识对应的二进制数据对应的数值为0时,将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变,而当前终端设备的识别码中顺序标识对应的二进制数据对应的数值为1时,将目标固件升级包拆分成若干子升级包的同时需要将各子升级包进行顺序变换。
另一个示例中,预设位数为2,则二进制数据包括00、01、10、11,对应的数值是0、1、2、3,进而,当前终端设备的识别码中顺序标识对应的二进制数据00对应的数值为0时,将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变,而当前终端设备的识别码中顺序标识对应的二进制数据01、10或11对应的数值为1、2、3时,将目标固件升级包拆分成若干子升级包的同时需要将各子升级包进行顺序变换。
在一些实现方式中,预设位数为1位,此情形下可以将相邻的子升级包交换顺序,以实现子升级包的顺序打乱。因此,根据预设位数的二进制数据对应的数值将各子升级包进行顺序变换,包括:
将若干子升级包划分为若干对相邻的子升级包;以及
将每对相邻的子升级包中的两个子升级包的顺序交换。
继续前面的示例,预设位数为1,则二进制数据包括0或1,当前终端设备的识别码中顺序标识对应的二进制数据对应的数值为1时,确定将各子升级包进行顺序变换,此时,将对目标固件升级包拆分所得的若干子升级包划分为若干对相邻的子升级包,每一对中的两个子升级包的顺序交换。而当前终端设备的识别码中顺序标识对应的二进制数据对应的数值为0时,则无需作此顺序交换操作,保持原始顺序即可。
在一些实现方式中,预设位数为至少2位,此情形下可以将根据预设位数的二进制数据对应的数值确定顺序交换的规则。因此,根据预设位数的二进制数据对应的数值将各子升级包进行顺序变换,包括:
将若干子升级包划分为若干组子升级包,每一组中包含特定数量子升级包,该特定数量为预设位数的最大二进制数据对应的数值加1;以及
将每组子升级包中顺序相差该数值的两个子升级包的顺序交换。
继续前面的示例中,预设位数为2时,二进制数据包括00、01、10、11,2位的最大二进制数据对应的数值是3,进而,当前终端设备的识别码中顺序标识对应的二进制数据00对应的数值为0时,将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变,无需交换。但当前终端设备的识别码中顺序标识对应的二进制数据01、10或11对应的数值为1、2、3时,将目标固件升级包拆分成若干子升级包的同时需要将各子升级包进行顺序变换。以顺序标识对应的二进制数据为10为例,对应的数值为2,此时进行顺序变换的具体方式是:将若干子升级包划分为若干组子升级包,每一组中包含4(即:最大二进制数据对应的数值3+1)个子升级包,其中第一组包括第0包、第1包、第2包、第3包,将顺序上相差2位的两个子升级包的顺序交换,即:第0包与第2包交换,第1包与第3包交换。基于相似的原理,预设位数为3位、4位……N位的情形,本实施例中不再一一举例,预设位数越多和/或交换顺序的规律越复杂,固件升级过程中的传输(下载)复杂度越高。
在一些实现方式中,还可以根据预设位数的二进制数据对应的数值的奇偶性来进行子升级包的顺序打乱。因此,根据预设位数的二进制数据对应的数值,确定在将目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换,包括:
若预设位数的二进制数据对应的数值为偶数,确定将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变;若预设位数的二进制数据对应的数值为奇数,确定将目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换;
或者,若预设位数的二进制数据对应的数值为奇数,确定将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变;若预设位数的二进制数据对应的数值为偶数,确定将目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换。
进一步地,在根据预设位数的二进制数据对应的数值的奇偶性来进行子升级包的顺序打乱的情形下,根据预设位数的二进制数据对应的数值将各子升级包进行顺序变换,可以包括:
将若干子升级包划分为若干对相邻的子升级包;以及
将每对相邻的子升级包中的两个子升级包的顺序交换。
通过将顺序标识(预设位数的二进制数据)对应的数值为偶数或奇数设置为需要对子升级包进行顺序变换或顺序不变,并通过相邻子升级包互换顺序来打乱,能够利用这一规律在拆分若干子升级包的同时打乱子升级包顺序,实现了子升级包的错序传输(下载),提升了固件升级的安全性。
步骤S104、将若干子升级包进行存储和/或发送至目标终端设备。
在实际应用中,服务器可以先将拆分好的若干子升级包进行存储,在终端设备请求时开始发送子升级包至目标终端设备,也可以自动发送至目标终端设备。还可以在将拆分好的若干子升级包进行存储和发送至目标终端设备,以实现备份。
实施例二
本实施例提供一种固件升级方法,应用于终端设备,例如嵌入式终端,如图2所示,本方法包括:
步骤S201、响应于获取到固件升级指令,获取终端设备的识别码并提取识别码中预先配置的升级信息。
在一些实现方式中,固件升级指令由脱离广域网的广播设备发出或者由终端设备的预设按键触发。脱离广域网的广播设备例如是手持广播设备,具有蓝牙设备、LORA设备等,还可以是USB。由于广播设备是脱离广域网的,不使用广域网能够很好地避免通过广域网传输时的安全风险。终端设备还可以预设按键,例如物理按键,以此触发固件升级指令,实现离网和联网相配合的升级策略。在实际应用中,广播设备发出或终端设备的预设按键触发,都可以是由特定人员根据固件升级需求操作。
在另一些实现方式中,固件升级指令也可以由服务器向目标终端设备发送。
步骤S202、下载服务器发送的基于升级信息拆分的子升级包。
服务基于升级信息拆分子升级包的具体实现方式可参见实施例一,拆分的子升级包由服务器传输,由终端设备下载得到。
在一些实现方式中,本方法还包括:
响应于获取到固件升级指令,终端设备还向服务器请求目标固件升级包的包头,包头包括目标终端设备的识别码、目标固件升级包所拆分的子升级包的数量和编号;并验证终端设备获取的识别码与服务器反馈的包头中的识别码是否一致;
在获取的终端设备的识别码与服务器反馈的包头中的识别码一致的情况下,执行下载服务器发送的基于升级信息拆分的子升级包的步骤S202。而获取的终端设备的识别码与服务器反馈的包头中的识别码不一致,则当前固件升级指令可能非法,不执行下载操作。
服务器返回终端设备的GET信息(含包头信息的info包)的一个示例如下:
其中包含终端设备的识别码SN,拆分的若干子升级包中的奇数编号子升级包数量old和偶数编号子升级包数量even,还可以包含整体性校验值,例如md5值,以及固件升级密钥等安全验证信息,在实际应用中,可以根据安全需求,设置更多数量及种类的安全验证信息,以实现终端设备的安全验证,提升固件升级的安全性。
一些情况下,包头还可以包括固件升级密钥和/或整体性验证信息,以与固件升级指令中携带的固件升级密钥和/或整体性验证信息进行验证,提升安全性。
服务器反馈的info包经下载,存储至终端设备预设的tmp分区中,供升级过程中调用其中信息。
下载服务器发送的基于升级信息拆分的子升级包的过程中,可以采用逐包请求逐包传输下载的方式,并在每下载一个子升级包的情况下,可以根据包头提供的信息确定是否下载完最后一个子升级包。因此,在一些实现方式中,本方法还包括:根据包头中的子升级包的数量和编号,确定是否下载完最后一个子升级包。
由于子升级包的数量和编号是确定的,在顺序下载每一子升级包的时候,根据该子升级包的编号即可判断是传输完所有的子升级包。
在一些实现方式中,升级信息包括子升级包的大小、子升级包的顺序标识、子升级包的下载地址偏移量中的至少一种。
在一些实现方式中,升级信息包括子升级包的顺序标识,顺序标识包括预设位数的二进制数据;相应地,上述步骤S202下载服务器发送的基于升级信息拆分的子升级包,可以包括:
步骤S202a、下载服务器发送的基于升级信息拆分的子升级包;
步骤S202b、基于顺序标识确定是否将子升级包进行顺序变换;
步骤S202c、在确定将子升级包进行顺序变换的情况下,根据预设位数的二进制数据对应的数值进行顺序变换。
本实施例中,基于顺序标识确定是否将子升级包进行顺序变换的方式与实施例一类似,此处不再赘述。在确定将子升级包进行顺序变换的情况下,根据预设位数的二进制数据对应的数值进行顺序变换的具体实现方式也与实施例一类似,此处不再赘述。
由于服务器传输的子升级包可能是拆分过程中经过顺序变换得到的,因此,终端设备在下载完子升级包时,先基于顺序标识确定是否将子升级包进行顺序变换,若需要将子升级包进行顺序变换,则将子升级包的顺序变换回原始顺序,再将各子升级包恢复成原始的固件升级包;若不需要将子升级包进行顺序变换,则直接将各子升级包恢复成原始的固件升级包即可。
步骤S203、在下载完最后一个子升级包的情况下,基于升级信息将若干子升级包恢复为固件升级包。
步骤S204、进行终端设备软重启。
在一些实现方式中,升级信息包括子升级包的下载地址偏移量,本方法还可以包括:将子升级包存入基于所述下载地址偏移量确定的存储地址中。从而实现子升级包在终端设备中分区存储。
在一些实现方式中,在进行终端设备软重启之后,本方法还包括:
设置目标固件的启动信息为开始升级。
如图6所示,终端设备检测是否获取到固件升级指令,在获取到固件升级指令的情况下,获取其自身的识别码,开始下载子升级包并获取info包,并根据是否需要将子升级包的顺序进行变换,来对下载的子升级包的顺序进行调整,以使终端设备在下载完成所有子升级包后能够获得与服务器提供的目标固件升级包相同的内容,下载每个子升级包时还需判断当前子升级包是否为最后一个子升级包,若不是,则继续向服务器申请下一个子升级包,直至所有子升级包下载完毕,进行软重启并设置目标固件的启动信息为开始升级。
在一些实现方式中,固件升级指令中包含固件升级密钥和/或整体性验证信息,整体性验证信息例如是md5值,也可以是其他整体性验证信息,本实施例不做唯一限定,固件升级密钥和/或整体性验证信息可以由包头携带发送至终端设备。进一步地,进行终端设备软重启之后,还包括:
确定目标固件的启动信息是否为已升级;
在目标固件的启动信息不为已升级的情况下,基于固件升级密钥和/或整体性验证信息进行目标固件的安全验证;
在安全验证通过的情况下,将固件升级包拷贝至运行地址;
修改目标固件的启动信息为已升级;以及
跳至该运行地址,运行目标固件。
本实施例中,若目标固件的启动信息为已升级,说明目标固件已升级完毕,若目标固件的启动信息为升级中,也即处于设置目标固件的启动信息为开始升级之后的升级中的状态,说明目标固件尚未升级完毕,需要进行安全引导流程,进行固件的完整性验证和启动配置。在目标固件的启动信息不为已升级的情况下,基于固件升级密钥和/或整体性验证信息进行目标固件的安全验证,在由包头携带发送至终端设备的固件升级密钥与固件升级指令中的固件升级密钥一致,和/或终端设备的整体性验证信息与固件升级指令中的整体性验证信息一致的情况下,安全验证通过。此时将固件升级包拷贝至运行地址并修改目标固件的启动信息为已升级,跳至该运行地址,即可运行升级后的目标固件。
如图7所示,终端设备软重启后,先确认目标固件的启动信息是否为已升级,若是已升级,则直接启动目标固件,若不是,则表明目标固件处于升级中,此时获取终端设备预设的tmp分区中的信息并解析,进行目标固件的安全验证,例如整体性验证信息(md5值)的验证,若验证未通过,则停止升级,若验证通过,则将将固件升级包拷贝至运行地址,并且修改目标固件的启动信息为已升级,并跳至该运行地址,启动运行目标固件,完成固件安全引导。
通过上述安全引导流程,可以在拆分子升级包并对子升级包进行顺序变换的传输下载基础上,进一步提升固件升级的安全,实现固件的完整性校验和安全启动的配置操作,保证固件合法性。
在一些实现方式中,服务器在基于升级信息将目标固件升级包拆分成若干子升级包时,还对子升级包进行加密,加密所采用的密钥可以由包头携带发送给终端设备,由脱离广域网的广播设备发出的固件升级指令中还可以携带该密钥,以在终端设备响应固件升级指令下载子升级包时对子升级包进行解密。
实施例三
本实施例提供一种固件升级装置,应用于服务器,如图3所示,包括:
获取模块301,用于获取目标固件升级包;
提取模块302,用于获取目标终端设备的识别码并提取识别码中预先配置的升级信息;
拆分模块303,用于基于升级信息将目标固件升级包拆分成若干子升级包;
存储/发送模块304,用于将若干子升级包进行存储和/或发送至目标终端设备。
在实际应用中,可以将固件升级包看作一个整体文件,由开发人员在制作固件升级包时调试并测试完成,由服务器进行固件升级过程中的拆包存储或传输。在拆包时需要输入待升级的终端设备的识别号或者服务器自动根据终端设备的识别号进行固件升级包的拆包。
目标终端设备可以指待升级的终端设备,终端设备可以是物联网中的任一终端设备,例如,各种信息传感器、射频识别设备、全球定位系统、红外感应器、激光扫描器、电脑等。
一些实现方式中,识别码可以指预先配置终端设备的SN(Serial Number)码,相关技术中的固件升级包都是制作成统一的升级包文件,因此,在对批量终端设备进行固件升级时,每个终端设备进行相同固件升级时的固件升级包及升级过程均相同,一旦固件升级包传输(下载)过程中被监听,易使整个固件升级包泄露甚至被篡改,使得同样固件升级需求的终端设备在进行固件升级时的安全性无法得到有效保证。
本实施例中所采用的固件升级的安全机制中,每个终端设备都设置有配置具有一定定制性的识别码,在识别码中的至少部分字段配置有升级信息,针对每个终端设备进行识别码的定制,由于具有相同固件升级需求的终端设备的识别码的配置不同或者不完全相同,使得拆包传输(下载)的具体形式不是全部一致,因而即使单个终端设备的信息泄露,也不会带来整个系统所有终端设备的安全问题。
在一些实现方式中,升级信息包括子升级包的大小、子升级包的顺序标识、子升级包的下载地址偏移量中的至少一种。其中,子升级包的大小是拆分子升级包时每个子升级包的大小,例如是7bit;子升级包的顺序标识用于区分是否变换各子升级包的顺序以及如何变换各子升级包的顺序,以打乱拆分后的子升级包的传输顺序,提升传输过程中的复杂度,避免被监听时泄露整个固件升级包甚至被篡改,实际中可以根据为不同的终端设备设置子升级包的顺序标识,可以随机设置,也可以按照一定规律设置,本实施例不做限定。子升级包的下载地址偏移量用于确定子升级包在终端设备中的存储地址,以实现子升级包在终端设备中分区存储,实际应用中子升级包存储于终端设备的特定flash芯片,通过在特定flash芯片划分不同的存储区域,实现子升级包在终端设备中分区存储。
在一些实现方式中,在升级信息包括子升级包的大小的情况下,基于升级信息将目标固件升级包拆分成若干子升级包,包括:基于升级信息中的子升级包的大小将目标固件升级包拆分成若干子升级包,并对若干子升级包进行编号;以及基于若干子升级包的编号生成目标固件升级包的包头,包头包括目标终端设备的识别码、目标固件升级包所拆分的子升级包的数量和编号。
在升级信息仅包括子升级包的大小情况下,直接基于子升级包的大小将目标固件升级包拆分成若干子升级包,并对若干子升级包进行编号,进而生成目标固件升级包的包头。在升级信息不止包括子升级包(例如还包括子升级包的顺序标识、子升级包的下载地址偏移量)的情况下,可以基于子升级包的大小将目标固件升级包拆分成若干子升级包,并且结合其他升级信息进行顺序交换、子升级包存储等。
在一些实现方式中,在升级信息包括子升级包的顺序标识的情况下,基于升级信息将目标固件升级包拆分成若干子升级包,包括:基于顺序标识将目标固件升级包拆分成若干子升级包,并对若干子升级包进行编号;基于若干子升级包的编号生成目标固件升级包的包头,包头包括目标终端设备的识别码、目标固件升级包所拆分的子升级包的数量和编号。
在一些实现方式中,在升级信息包括子升级包的顺序标识的同时,还可以包括子升级包的大小。在基于顺序标识将目标固件升级包拆分成若干子升级包时,按照升级包的大小进行拆分,同时基于顺序标识来确定各子升级包的顺序是否变换。
在一些实现方式中,在升级信息包括子升级包的顺序标识的同时,还可以包括子升级包的大小和下载地址偏移量,基于顺序标识和子升级包的大小将目标固件升级包拆分成若干子升级包,并对若干子升级包进行编号,并基于若干子升级包的编号生成目标固件升级包的包头,而在终端设备下载服务传输的子升级包时,将各子升级包存储于基于下载地址偏移量确定的存储地址。
一些情况下,包头还可以包括固件升级密钥和/或整体性验证信息,供终端设备在安全引导流程中安全验证使用。
在实际应用中,顺序标识可以是二进制数据,也可以是其他形式的标识。可以根据实际的标识码配置规则确定标识码的总位数以及各种升级信息、头部字段、尾部字段等字节(或位数)。
在一些实现方式中,顺序标识包括预设位数的二进制数据;基于顺序标识将目标固件升级包拆分成若干子升级包,并对若干子升级包进行编号,包括:
第一步,根据预设位数的二进制数据对应的数值,确定在将目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换。
第二步,在确定将各子升级包进行顺序变换的情况下,将目标固件升级包拆分成若干子升级包,并根据预设位数的二进制数据对应的数值将各子升级包进行顺序变换;在确定各子升级包的顺序不变的情况下,将目标固件升级包拆分成若干子升级包,且各子升级包的顺序不变。
第三步,对若干子升级包进行编号。
在一些实现方式中,根据预设位数的二进制数据对应的数值,确定在将目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换,可以进一步包括:
a、若预设位数的二进制数据对应的数值为0,确定将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变;
b、若预设位数的二进制数据对应的数值为非0,确定将目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换。
本实施例中,根据预设位数的二进制数据(顺序标识)对应的数值来确定是否将各子升级包进行顺序变换,数值为0则无需打乱顺序,数值为非0则需要打乱顺序。实现通过顺序标识来确定并在拆分时调整子升级包的顺序,提升固件升级包的传输(下载)的安全性。
在一些实现方式中,预设位数为1位,此情形下可以将相邻的子升级包交换顺序,以实现子升级包的顺序打乱。因此,根据预设位数的二进制数据对应的数值将各子升级包进行顺序变换,包括:将若干子升级包划分为若干对相邻的子升级包;以及将每对相邻的子升级包中的两个子升级包的顺序交换。
在一些实现方式中,预设位数为至少2位,此情形下可以将根据预设位数的二进制数据对应的数值确定顺序交换的规则。因此,根据预设位数的二进制数据对应的数值将各子升级包进行顺序变换,包括:
将若干子升级包划分为若干组子升级包,每一组中包含特定数量子升级包,该特定数量为预设位数的最大二进制数据对应的数值加1;以及将每组子升级包中顺序相差该数值的两个子升级包的顺序交换。
在一些实现方式中,还可以根据预设位数的二进制数据对应的数值的奇偶性来进行子升级包的顺序打乱。因此,根据预设位数的二进制数据对应的数值,确定在将目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换,可以包括:
若预设位数的二进制数据对应的数值为偶数,确定将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变;若预设位数的二进制数据对应的数值为奇数,确定将目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换;
或者,若预设位数的二进制数据对应的数值为奇数,确定将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变;若预设位数的二进制数据对应的数值为偶数,确定将目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换。
进一步地,在根据预设位数的二进制数据对应的数值的奇偶性来进行子升级包的顺序打乱的情形下,根据预设位数的二进制数据对应的数值将各子升级包进行顺序变换,可以包括:将若干子升级包划分为若干对相邻的子升级包;以及将每对相邻的子升级包中的两个子升级包的顺序交换。
通过将顺序标识(预设位数的二进制数据)对应的数值为偶数或奇数设置为需要对子升级包进行顺序变换或顺序不变,并通过相邻子升级包互换顺序来打乱,能够利用这一规律在拆分若干子升级包的同时打乱子升级包顺序,实现了子升级包的错序传输(下载),提升了固件升级的安全性。
在实际应用中,服务器可以先将拆分好的若干子升级包进行存储,在终端设备请求时开始发送子升级包至目标终端设备,也可以自动发送至目标终端设备。还可以在将拆分好的若干子升级包进行存储和发送至目标终端设备,以实现备份。
应当理解的是,本实施例至少具备实施例一的全部有益效果,本实施例中不再赘述。
实施例四
本实施例提供一种固件升级装置,应用于终端设备,例如嵌入式终端设备,如图4所示,包括:
响应模块401,用于响应于获取到固件升级指令,获取终端设备的识别码并提取识别码中预先配置的升级信息;
下载模块402,用于下载服务器发送的基于升级信息拆分的子升级包;
恢复模块403,用于在下载完最后一个子升级包的情况下,基于升级信息将若干子升级包恢复为固件升级包;
重启模块404,用于进行终端设备软重启。
在一些实现方式中,固件升级指令由脱离广域网的广播设备发出或者由终端设备的预设按键触发。脱离广域网的广播设备例如是手持广播设备,具有蓝牙设备、LORA设备等,还可以是USB。由于广播设备是脱离广域网的,不使用广域网能够很好地避免通过广域网传输时的安全风险。终端设备还可以预设按键,例如物理按键,以此触发固件升级指令,实现离网和联网相配合的升级策略。在实际应用中,广播设备发出或终端设备的预设按键触发,都可以是由特定人员根据固件升级需求操作。
在另一些实现方式中,固件升级指令也可以由服务器向目标终端设备发送。
服务基于升级信息拆分子升级包的具体实现方式可参见前述实施例,拆分的子升级包由服务器传输,由终端设备下载得到。
在一些实现方式中,响应模块401还用于:
响应于获取到固件升级指令,终端设备还向服务器请求目标固件升级包的包头,包头包括目标终端设备的识别码、目标固件升级包所拆分的子升级包的数量和编号;并验证终端设备获取的识别码与服务器反馈的包头中的识别码是否一致;在获取的终端设备的识别码与服务器反馈的包头中的识别码一致的情况下,下载服务器发送的基于升级信息拆分的子升级包。而获取的终端设备的识别码与服务器反馈的包头中的识别码不一致,则当前固件升级指令可能非法,不执行下载操作。
一些情况下,包头还可以包括固件升级密钥和/或整体性验证信息,以与固件升级指令中携带的固件升级密钥和/或整体性验证信息进行验证,提升安全性。
服务器反馈的info包经下载,存储至终端设备预设的tmp分区中,供升级过程中调用其中信息。
下载服务器发送的基于升级信息拆分的子升级包的过程中,可以采用逐包请求逐包传输下载的方式,并在每下载一个子升级包的情况下,可以根据包头提供的信息确定是否下载完最后一个子升级包。因此,在一些实现方式中,本方法还包括:根据包头中的子升级包的数量和编号,确定是否下载完最后一个子升级包。
由于子升级包的数量和编号是确定的,在顺序下载每一子升级包的时候,根据该子升级包的编号即可判断是传输完所有的子升级包。
在一些实现方式中,升级信息包括子升级包的大小、子升级包的顺序标识、子升级包的下载地址偏移量中的至少一种。
在一些实现方式中,升级信息包括子升级包的顺序标识,顺序标识包括预设位数的二进制数据;相应地,下载服务器发送的基于升级信息拆分的子升级包,可以包括:
下载服务器发送的基于升级信息拆分的子升级包;
基于顺序标识确定是否将子升级包进行顺序变换;以及
在确定将子升级包进行顺序变换的情况下,根据预设位数的二进制数据对应的数值进行顺序变换。
本实施例中,基于顺序标识确定是否将子升级包进行顺序变换的方式与前述实施例类似,此处不再赘述。在确定将子升级包进行顺序变换的情况下,根据预设位数的二进制数据对应的数值进行顺序变换的具体实现方式也与前述实施例类似,此处不再赘述。
由于服务器传输的子升级包可能是拆分过程中经过顺序变换得到的,因此,终端设备在下载完子升级包时,先基于顺序标识确定是否将子升级包进行顺序变换,若需要将子升级包进行顺序变换,则将子升级包的顺序变换回原始顺序,再将各子升级包恢复成原始的固件升级包;若不需要将子升级包进行顺序变换,则直接将各子升级包恢复成原始的固件升级包即可。
在一些实现方式中,升级信息包括子升级包的下载地址偏移量,下载模块402还用于:将子升级包存入基于所述下载地址偏移量确定的存储地址中。从而实现子升级包在终端设备中分区存储。
在一些实现方式中,重启模块404还用于:在进行终端设备软重启之后,设置目标固件的启动信息为开始升级。
在一些实现方式中,固件升级指令中包含固件升级密钥和/或整体性验证信息,整体性验证信息例如是md5值,也可以是其他整体性验证信息,本实施例不做唯一限定,固件升级密钥和/或整体性验证信息可以由包头携带发送至终端设备。进一步地,还包括:安全引导模块,用于:
在进行终端设备软重启之后,确定目标固件的启动信息是否为已升级;
在目标固件的启动信息不为已升级的情况下,基于固件升级密钥和/或整体性验证信息进行目标固件的安全验证;
在安全验证通过的情况下,将固件升级包拷贝至运行地址;
修改目标固件的启动信息为已升级;以及
跳至该运行地址,运行目标固件。
本实施例中,若目标固件的启动信息为已升级,说明目标固件已升级完毕,若目标固件的启动信息为升级中,也即处于设置目标固件的启动信息为开始升级之后的升级中的状态,说明目标固件尚未升级完毕,需要进行安全引导流程,进行固件的完整性验证和启动配置。在目标固件的启动信息不为已升级的情况下,基于固件升级密钥和/或整体性验证信息进行目标固件的安全验证,在由包头携带发送至终端设备的固件升级密钥与固件升级指令中的固件升级密钥一致,和/或终端设备的整体性验证信息与固件升级指令中的整体性验证信息一致的情况下,安全验证通过。此时将固件升级包拷贝至运行地址并修改目标固件的启动信息为已升级,跳至该运行地址,即可运行升级后的目标固件。
通过上述安全引导流程,可以在拆分子升级包并对子升级包进行顺序变换的传输下载基础上,进一步提升固件升级的安全,实现固件的完整性校验和安全启动的配置操作,保证固件合法性。
在一些实现方式中,服务器在基于升级信息将目标固件升级包拆分成若干子升级包时,还对子升级包进行加密,加密所采用的密钥可以由包头携带发送给终端设备,由脱离广域网的广播设备发出的固件升级指令中还可以携带该密钥,以在终端设备响应固件升级指令下载子升级包时对子升级包进行解密。
应当理解的是,本实施例至少具备实施例二的全部有益效果,本实施例中不再赘述。
实施例五
本实施例提供一种计算机存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被一个或多个处理器执行时,实现实施例一或实施例二的方法。
其中,计算机可读存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
实施例六
本实施例提供一种服务器,包括存储器和一个或多个处理器,所述存储器上存储有计算机程序,所述计算机程序被所述一个或多个处理器执行时实现实施例一的方法。
在实际应用中,服务器可以是数据中心的服务器。
处理器可以是专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable LogicDevice,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器(Microcontroller Unit,MCU)、微处理器或其他电子元件实现,用于执行上述实施例一中的方法。
实施例七
本实施例提供一种终端设备,包括存储器和一个或多个处理器,存储器上存储有计算机程序,计算机程序被一个或多个处理器执行时实现实施例二的方法。
在实际应用中,终端设备可以是物联网系统中的终端设备,优选为嵌入式终端设备。例如,各种信息传感器、射频识别设备、全球定位系统、红外感应器、激光扫描器、电脑等。
处理器可以是专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable LogicDevice,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器(Microcontroller Unit,MCU)、微处理器或其他电子元件实现,用于执行上述实施例二中的方法。
在本发明实施例所提供的几个实施例中,应该理解到,所揭露的系统和方法,也可以通过其它的方式实现。以上所描述的系统和方法实施例仅仅是示意性的。
需要说明的是,在本文中,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (14)
1.一种固件升级方法,其特征在于,应用于服务器,包括:
获取目标固件升级包;
获取目标终端设备的识别码并提取所述识别码中预先配置的升级信息;
基于所述升级信息将所述目标固件升级包拆分成若干子升级包;
将所述若干子升级包进行存储和/或发送至目标终端设备。
2.根据权利要求1所述的固件升级方法,其特征在于,所述升级信息包括子升级包的大小、子升级包的顺序标识、子升级包的下载地址偏移量中的至少一种。
3.根据权利要求2所述的固件升级方法,其特征在于,在所述升级信息包括子升级包的顺序标识的情况下,所述基于所述升级信息将所述目标固件升级包拆分成若干子升级包,包括:
基于所述顺序标识将所述目标固件升级包拆分成若干子升级包,并对所述若干子升级包进行编号;
基于所述若干子升级包的编号生成所述目标固件升级包的包头,所述包头包括所述目标终端设备的识别码、所述目标固件升级包所拆分的子升级包的数量和编号。
4.根据权利要求3所述的固件升级方法,其特征在于,所述顺序标识包括预设位数的二进制数据;所述基于所述顺序标识将所述目标固件升级包拆分成若干子升级包,并对所述若干子升级包进行编号,包括:
根据所述预设位数的二进制数据对应的数值,确定在将所述目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换;
在确定将各子升级包进行顺序变换的情况下,将所述目标固件升级包拆分成若干子升级包,并根据所述预设位数的二进制数据对应的数值将各子升级包进行顺序变换;
在确定各子升级包的顺序不变的情况下,将所述目标固件升级包拆分成若干子升级包,且各子升级包的顺序不变;
对所述若干子升级包进行编号。
5.根据权利要求4所述的固件升级方法,其特征在于,所述根据所述预设位数的二进制数据对应的数值,确定在将所述目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换,包括:
若所述预设位数的二进制数据对应的数值为0,确定将所述目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变;
若所述预设位数的二进制数据对应的数值为非0,确定将所述目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换。
6.根据权利要求5所述的固件升级方法,其特征在于,所述预设位数为1位;所述根据所述预设位数的二进制数据对应的数值将各子升级包进行顺序变换,包括:
将若干子升级包划分为若干对相邻的子升级包;
将每对相邻的子升级包中的两个子升级包的顺序交换。
7.根据权利要求5所述的固件升级方法,其特征在于,所述预设位数为至少2位;所述根据所述预设位数的二进制数据对应的数值将各子升级包进行顺序变换,包括:
将若干子升级包划分为若干组子升级包,每一组中包含特定数量子升级包,所述特定数量为预设位数的最大二进制数据对应的数值加1;
将每组子升级包中顺序相差所述数值的两个子升级包的顺序交换。
8.根据权利要求4所述的固件升级方法,其特征在于,所述根据所述预设位数的二进制数据对应的数值,确定在将所述目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换,包括:
若所述预设位数的二进制数据对应的数值为偶数,确定将所述目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变;若所述预设位数的二进制数据对应的数值为奇数,确定将所述目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换;
或者,若所述预设位数的二进制数据对应的数值为奇数,确定将所述目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变;若所述预设位数的二进制数据对应的数值为偶数,确定将所述目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换。
9.一种固件升级方法,其特征在于,应用于终端设备,包括:
响应于获取到固件升级指令,获取终端设备的识别码并提取所述识别码中预先配置的升级信息;
下载服务器发送的基于所述升级信息拆分的子升级包;
在下载完最后一个子升级包的情况下,基于所述升级信息将若干子升级包恢复为固件升级包;
进行终端设备软重启。
10.一种固件升级装置,其特征在于,应用于服务器,包括:
获取模块,用于获取目标固件升级包;
提取模块,用于获取目标终端设备的识别码并提取所述识别码中预先配置的升级信息;
拆分模块,用于基于所述升级信息将所述目标固件升级包拆分成若干子升级包;
存储/发送模块,用于将所述若干子升级包进行存储和/或发送至目标终端设备。
11.一种固件升级装置,其特征在于,应用于终端设备,包括:
响应模块,用于响应于获取到固件升级指令,获取终端设备的识别码并提取所述识别码中预先配置的升级信息;
下载模块,用于下载服务器发送的基于所述升级信息拆分的子升级包;
恢复模块,用于在下载完最后一个子升级包的情况下,基于所述升级信息将若干子升级包恢复为固件升级包;
重启模块,用于进行终端设备软重启。
12.一种计算机存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被一个或多个处理器执行时,实现如权利要求1至9中任一项所述的方法。
13.一种服务器,其特征在于,包括存储器和一个或多个处理器,所述存储器上存储有计算机程序,所述计算机程序被所述一个或多个处理器执行时实现如权利要求1至8中任一项所述的方法。
14.一种终端设备,其特征在于,包括存储器和一个或多个处理器,所述存储器上存储有计算机程序,所述计算机程序被所述一个或多个处理器执行时实现如权利要求9所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211295975.2A CN117951706A (zh) | 2022-10-21 | 2022-10-21 | 一种固件升级方法、装置、服务器、终端设备及存储介质 |
PCT/CN2023/085613 WO2024082560A1 (zh) | 2022-10-21 | 2023-03-31 | 固件升级方法、设备、服务器、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211295975.2A CN117951706A (zh) | 2022-10-21 | 2022-10-21 | 一种固件升级方法、装置、服务器、终端设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117951706A true CN117951706A (zh) | 2024-04-30 |
Family
ID=90736776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211295975.2A Pending CN117951706A (zh) | 2022-10-21 | 2022-10-21 | 一种固件升级方法、装置、服务器、终端设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117951706A (zh) |
WO (1) | WO2024082560A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008757B (zh) * | 2019-04-09 | 2020-11-03 | 江南大学 | 一种物联网终端固件更新中数据保护方法及系统 |
CN112445507A (zh) * | 2019-09-05 | 2021-03-05 | 阿里巴巴集团控股有限公司 | 一种设备的升级方法和装置 |
CN113141263B (zh) * | 2020-01-02 | 2022-09-27 | 广东博智林机器人有限公司 | 一种升级方法、装置、系统和存储介质 |
CN113110852A (zh) * | 2020-01-10 | 2021-07-13 | 北京小米移动软件有限公司 | 固件升级方法、装置及存储介质 |
-
2022
- 2022-10-21 CN CN202211295975.2A patent/CN117951706A/zh active Pending
-
2023
- 2023-03-31 WO PCT/CN2023/085613 patent/WO2024082560A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024082560A1 (zh) | 2024-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109951435B (zh) | 一种设备标识提供方法及装置和风险控制方法及装置 | |
CN106484453B (zh) | 一种实现系统升级的方法及装置 | |
CN106055375B (zh) | 应用程序安装方法及装置 | |
CN112887451B (zh) | 域名解析方法、装置及计算机设备 | |
CN107038353B (zh) | 软件程序的校验保护方法及系统 | |
CN107145342B (zh) | 应用的渠道信息的处理方法和装置 | |
CN112416391A (zh) | 系统升级方法、装置、计算机设备和存储介质 | |
CN111417927B (zh) | 资源权限处理方法、装置、存储介质及芯片 | |
CN107786644B (zh) | 渠道包的下载方法、装置及设备 | |
CN111158716B (zh) | 版本升级调用方法、装置、计算机系统及可读存储介质 | |
CN112788084B (zh) | 应用程序安装包下载方法、推送方法、装置和计算机设备 | |
CN117951706A (zh) | 一种固件升级方法、装置、服务器、终端设备及存储介质 | |
CN111818087A (zh) | 区块链的节点接入方法、装置、设备及可读存储介质 | |
CN111400771A (zh) | 目标分区的校验方法及装置、存储介质、计算机设备 | |
CN113051622B (zh) | 索引构建方法、装置、设备和存储介质 | |
CN114090965B (zh) | java代码混淆方法、系统、计算机设备及存储介质 | |
CN106445807B (zh) | 用于智能终端的应用安装包检测方法及装置 | |
CN112559546B (zh) | 数据库同步方法、装置、计算机设备及可读存储介质 | |
CN114237991A (zh) | 基于冷备模式的主备服务切换方法、装置、设备及介质 | |
CN111324914B (zh) | 文件的传输方法、装置、服务器、设备和介质 | |
CN112580040B (zh) | 文件外壳的脱壳方法及装置、存储介质、电子装置 | |
CN113569291A (zh) | 日志掩码方法及装置 | |
CN114143197A (zh) | 物联网设备ota升级方法、装置、设备及可读存储介质 | |
CN115002079B (zh) | 短地址生成方法、装置、设备及存储介质 | |
CN111104671B (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 |