CN118235126A - 固件升级方法、设备、服务器、终端设备及存储介质 - Google Patents
固件升级方法、设备、服务器、终端设备及存储介质 Download PDFInfo
- Publication number
- CN118235126A CN118235126A CN202380008547.3A CN202380008547A CN118235126A CN 118235126 A CN118235126 A CN 118235126A CN 202380008547 A CN202380008547 A CN 202380008547A CN 118235126 A CN118235126 A CN 118235126A
- Authority
- CN
- China
- Prior art keywords
- sub
- upgrade
- upgrade package
- firmware
- package
- 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 136
- 239000011159 matrix material Substances 0.000 claims description 165
- 238000013519 translation Methods 0.000 claims description 57
- 230000014616 translation Effects 0.000 claims description 57
- 238000012795 verification Methods 0.000 claims description 44
- 230000008859 change Effects 0.000 claims description 32
- 230000001131 transforming effect Effects 0.000 claims description 23
- 230000005540 biological transmission Effects 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 57
- 238000010586 diagram Methods 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000009466 transformation Effects 0.000 description 5
- 238000005336 cracking Methods 0.000 description 3
- 230000008030 elimination Effects 0.000 description 3
- 238000003379 elimination reaction Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- XDDAORKBJWWYJS-UHFFFAOYSA-N glyphosate Chemical compound OC(=O)CNCP(O)(O)=O XDDAORKBJWWYJS-UHFFFAOYSA-N 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000007788 liquid Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000005406 washing Methods 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)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
一种固件升级方法、设备、服务器、终端设备及存储介质,其中,固件升级方法包括,获取目标固件升级包;接收目标终端设备的识别码;基于所述目标终端设备的识别码,将所述目标固件升级包拆分成子升级包;将所述子升级包进行存储和/或将所述子升级包发送至目标终端设备。
Description
本申请要求于2022年10月21日递交的第202211295975.2号中国专利申请的优先权,在此全文引用上述中国专利申请公开的内容以作为本申请的一部分。
本发明涉及固件升级技术领域,尤其涉及一种固件升级方法、设备、服务器、终端设备及存储介质。
与传统意义上的网络安全不同,物联网(Internet of Things,简称IoT)安全是网络安全与其他工程学科相融合的产物。相比于单纯的数据、服务器、网络基础架构和信息安全,物联网安全的内涵要更加丰富。而且,物联网安全还需要包括对联网物理系统状态的直接或分布式的监测和控制。
物联网系统中存在大量的终端设备,其中很大一部分又是算力及存储资源有限的单片机设备。在这种资源严重受限的设备环境中,传统的基于操作系统的安全管理如防火墙、应用商店等解决方案是无法保证设备在升级中的安全问题的。
因此,本领域亟需一种安全的固件升级方案,来有效避免终端设备的固件升级过程中的安全风险。
发明内容
本发明提供一种固件升级方法、设备、服务器、终端设备及存储介质,能够有效避免固件升级过程中的安全风险。
根据本公开的实施例,提供了一种应用于服务器端的固件升级方法,其中,包括:获取目标固件升级包;接收目标终端设备的识别码;基于目标终端设备的识别码,将目标固件升级包拆分成子升级包;将子升级包进行存储和/或将子升级包发送至目标终端设备。
根据本公开的实施例的应用于服务器端的固件升级方法还包括,通过目标终端设备的识别码获得子升级包的大小,基于子升级包的大小,确定拆分的子升级包的数量。
根据本公开的实施例的应用于服务器端的固件升级方法,还包括,基于子升级包的识别码和默认可修改地址,确定目标终端设备下载子升级包的下载地址。
根据本公开的实施例的应用于服务器端的固件升级方法,还包括,通过目标终端设备的识别码获得子升级包的顺序标识,基于子升级包的顺序标识,确定是否变换子升级包顺序,响应于确定不变换子升级包顺序,按照子升级包的初始顺序对子升级包进行编号,响应于确定变换子升级包顺序,变换子升级包顺序,按照子升级包的变换后的顺序对子升级包进行编号。
根据本公开的实施例的应用于服务器端的固件升级方法,其中,子升级包中的每一个包括子升级包包头,子升级包包头包括子升级包的编号。
根据本公开的实施例的应用于服务器端的固件升级方法,其中,子升级包包头还包括目标终端设备的识别码以及目标固件升级包所拆分的子升级包的数量中的至少一个。
根据本公开的实施例的应用于服务器端的固件升级方法,其中,基于子升级包的顺序标识,确定是否变换子升级包顺序包括:识别顺序标识指示的数值,基于顺序标识指示的数值确定是否变换子升级包顺序。
根据本公开的实施例的应用于服务器端的固件升级方法,其中,基于顺序标识指示的数值确定是否变换子升级包顺序包括基于顺序标识指示的数值是否为第一预定数值确定是否变换子升级包顺序。
根据本公开的实施例的应用于服务器端的固件升级方法,其中,基于顺序标识指示的数值确定是否变换子升级包顺序包括:将顺序标识指示的数值对第二预定数值取余,获得余数,其中,第二预定数值为大于等于2的自然数,基于余数,确定是否变换子升级包顺序。
根据本公开的实施例的应用于服务器端的固件升级方法,其中,第二预定数值为2,其中,基于顺序标识指示的数值确定是否变换子升级包顺序包括基于顺序标识指示的数值的奇偶性确定是否变换子升级包顺序。
根据本公开的实施例的应用于服务器端的固件升级方法,其中,基于顺序
标识变换子升级包顺序包括:识别顺序标识指示的数值,基于顺序标识指示的数值变换子升级包顺序。
根据本公开的实施例的应用于服务器端的固件升级方法,其中,顺序标识包括预定位数的数据,识别顺序标识指示的数值包括识别数据指示的数值,其中,变换子升级包顺序包括:将子升级包划分为子升级包组,每个子升级包组包括初始顺序相邻的特定数量的子升级包,其中,特定数量为预定位数的数据能够指示的最大数值加1,将每个子升级包组中初始顺序相差数据指示的数值的两个子升级包的顺序交换。
根据本公开的实施例的应用于服务器端的固件升级方法,其中,变换子升级包顺序包括:将子升级包划分为子升级包组,每个子升级包组包括初始顺序相邻的特定数量的子升级包,其中,特定数量在服务器处预先确定,将每个子升级包组中初始顺序相差小于特定数量的数值的两个子升级包的顺序交换。
根据本公开的实施例的应用于服务器端的固件升级方法,还包括,根据子升级包的数量生成矩阵,将子升级包在矩阵中排列,其中,变换子升级包顺序包括根据顺序标识在矩阵中平移子升级包。
根据本公开的实施例的应用于服务器端的固件升级方法,其中,根据子升级包的数量生成矩阵包括根据子升级包的数量确定生成奇数维度矩阵还是偶数维度矩阵。
根据本公开的实施例的应用于服务器端的固件升级方法,还包括使用乱码包、空包和重复的子升级包中的一个或多个填满矩阵。
根据本公开的实施例的应用于服务器端的固件升级方法,其中,顺序标识指示矩阵中的子升级包的平移次数、子升级包的移出方向、子升级包在矩阵中旋转的顺逆时针中的一个或多个。
根据本公开的实施例的应用于服务器端的固件升级方法,还包括,根据子升级包在矩阵中的序号以及矩阵的维度,确定子升级包的平移方式。
根据本公开的实施例的应用于服务器端的固件升级方法,还包括,将目标固件升级包的包头进行存储和/或发送至目标终端设备,其中,目标固件升级包的包头包括目标终端设备的识别码、子升级包的数量和编号、固件升级密钥和/或完整性验证信息中的一个或多个。
根据本公开的实施例,提供了一种应用于终端设备的固件升级方法,其
中,包括:获取固件升级指令;发送目标终端设备的识别码;从服务器下载子升级包;基于目标终端设备的识别码,将子升级包拼接成目标固件升级包。
根据本公开的实施例的应用于终端设备的固件升级方法,还包括,从服务器下载固件升级包的包头,以及通过安全引导程序进行:响应于全部子升级包和固件升级包包头下载到终端设备,基于终端设备的识别码中的顺序标识,确定是否变换下载的子升级包的顺序;对下载的子升级包进行安全性或完整性校验;响应于下载的子升级包通过安全性或完整性校验,运行通过子升级包拼接的目标固件。
根据本公开的实施例的应用于终端设备的固件升级方法,其中,获取固件升级指令包括通过脱离广域网的方式获取固件升级指令以及安全验证密钥;其中,从服务器下载子升级包包括经由广域网获得固件升级包以及固件升级包安全密钥;对下载的子升级包进行安全性校验包括确定安全验证密钥与固件升级包安全密钥是否匹配。
根据本公开的实施例,提供了一种固件升级设备,应用于服务器,其中,包括:固件升级包获取装置,用于获取目标固件升级包;接收装置,用于接收目标终端设备的识别码;拆分装置,用于基于目标终端设备的识别码,将目标固件升级包拆分成子升级包;存储/发送装置,用于将子升级包进行存储和/或发送至目标终端设备。
根据本公开的实施例,提供了一种固件升级设备,应用于终端设备,其中,包括:固件升级指令获取装置,用于获取固件升级指令;接收装置,用于发送目标终端设备的识别码;下载/接收装置,用于下载/接收子升级包;拼接装置,用于基于目标终端设备的识别码,将子升级包拼接成目标固件升级包。
根据本公开的实施例,提供了一种服务器,其中,包括存储器和一个或多个处理器,存储器上存储有计算机程序,计算机程序被一个或多个处理器执行时实现上述应用于服务器的固件升级方法。
根据本公开的实施例,提供了一种终端设备,其中,包括存储器和一个或多个处理器,存储器上存储有计算机程序,计算机程序被一个或多个处理器执行时实现上述应用于终端设备的固件升级方法。
根据本公开的实施例,提供了一种用于安全引导的方法,用于终端设备,其中,包括:响应于全部子升级包和固件升级包包头下载到终端设备,基于终
端设备的识别码中的顺序标识,确定是否变换下载的子升级包的顺序;对下载的子升级包进行安全性或完整性校验;响应于下载的子升级包通过安全性或完整性校验,运行通过子升级包拼接的目标固件。
根据本公开的实施例,提供了一种用于目标终端设备的安全验证方法,其中,包括:通过脱离广域网的方式获取固件升级指令以及安全验证密钥;经由广域网获得固件升级包以及固件升级包安全密钥;确定安全验证密钥与固件升级包安全密钥是否匹配。
根据本公开的实施例的安全验证方法,其中,经由广域网获得固件升级包包括从服务器下载子升级包,其中,方法还包括:发送目标终端设备的识别码;基于目标终端设备的识别码,将子升级包拼接成目标固件升级包。
根据本公开的实施例的安全验证方法,还包括,从服务器下载固件升级包的包头,以及通过安全引导程序进行:响应于全部子升级包和固件升级包包头下载到目标终端设备,基于目标终端设备的识别码中的顺序标识,确定是否变换下载的子升级包的顺序;对下载的子升级包进行安全性或完整性校验;响应于下载的子升级包通过安全性或完整性校验,运行通过子升级包拼接的目标固件。
从以下结合附图的描述中,本公开的特定实施例的上述和其他方面、特征和优点将变得更加清晰,其中:
图1是根据本公开的实施例的应用于服务器的固件升级方法的流程图;
图2是根据本公开的实施例的应用于终端设备的固件升级方法的流程图;
图3是根据本公开的实施例的应用于服务器的固件升级方法的流程图;
图4是根据本公开的实施例的应用于终端设备的固件升级方法的流程图;
图5A-图5C是根据本公开的实施例的服务器在奇数维度矩阵内顺时针、移出方向为左变换子升级包顺序的示意图;
图5D是根据本公开的实施例的数据包的平移过程的逆过程的示意图;
图6是根据本公开的实施例的确定奇数矩阵中的数据包的平移方式的流程图;
图7是根据本公开的实施例的数据包的平移过程的逆过程的流程图;
图8是根据本公开的实施例的确定恢复子升级包顺序需要继续执行服务器执行的平移的次数的流程图;
图9A-图9D是根据本公开的实施例的服务器根据不同移出方向在奇数维度矩阵内平移数据包的方式的示意图;
图10是根据本公开的实施例的服务器基于包括指示移出方向为左,逆时针的顺序标识来变换子升级包顺序的示意图;
图11是根据本公开的实施例的服务器在偶数维度矩阵内顺时针、移出方向为左变换子升级包顺序的示意图;
图12是根据本公开的实施例的确定偶数维度矩阵中的数据包的平移方式的流程图;
图13A-图13D是描述根据本公开的实施例的服务器根据不同移出方向在偶数维度矩阵内平移数据包的方式的示意图;
图14是根据本公开的实施例的用于服务器的固件升级设备;
图15是根据本公开的实施例的用于终端设备的固件升级设备;
图16是根据本公开的实施例的用于目标终端设备的安全引导的流程图;
图17是根据本公开的实施例的用于目标终端设备的离网与联网结合的安全验证的流程图。
在进行下面的详细描述之前,阐述贯穿本专利文件使用的某些单词和短语的定义可能是有利的。术语“包括”和“包含”及其派生词是指包括但不限于。术语“控制器”或“控制单元”是指控制至少一个操作的任何设备、系统或其一部分。这种控制器可以用硬件、或者硬件和软件和/或固件的组合来实施。与任何特定控制器相关联的功能可以是集中式的或分布式的,无论是本地的还是远程的。短语“至少一个”,当与项目列表一起使用时,意指可以使用所列项目中的一个或多个的不同组合,并且可能只需要列表中的一个项目。例如,“A、B、C中的至少一个”包括以下组合中的任意一个:A、B、C、A和B、A和C、B和C、A和B和C。
贯穿本专利文件提供了其他特定单词和短语的定义。本领域普通技术人员应该理解,在许多情况下,即使不是大多数情况下,这种定义也适用于这样
定义的单词和短语的先前和将来使用。
以下结合附图描述本专利文档中的本公开的原理的各种实施例仅作为说明,并且不应以任何方式解释为限制本公开的范围。本领域技术人员将理解,本公开的原理可以在任何适当布置的系统或设备中实施。在一些情况下,说明书描述的动作可以按不同的顺序执行,并且仍然可以达到期望结果。此外,附图描绘的过程不一定要求所示的特定顺序或依次顺序来达到期望结果。在特定实施方式中,多任务和并行处理可能是有利的。
物联网(Internet of Thing,简称IoT)是通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、连接、互动的物体或过程,采集其声、光、热、电、力学、化学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。物联网是一个基于互联网、传统电信网等的信息承载体,它让所有能够被独立寻址的普通物理对象形成互联互通的网络。与传统意义上的网络安全不同,物联网安全是网络安全与其他工程学科相融合的产物。相比于单纯的数据、服务器、网络基础架构和信息安全,物联网安全的内涵要更加丰富。而且,物联网安全还需要包括对联网物理系统状态的直接或分布式的监测和控制。物联网系统中存在大量的终端设备,其中很大一部分又是算力及存储资源有限的单片机设备。在这种资源严重受限的设备环境中,传统的基于操作系统的安全管理如防火墙、应用商店等解决方案是无法保证设备在升级中的安全问题的。
以Android系统的终端设备为例,一些情形中可通过应用商店进行固件升级,尽管升级数据包的源头合法且传输过程中也存在加密处理,但无论是完整包还是差分包均是以整体的形式进行整个升级过程,且每个终端设备进行相同固件升级时的固件升级包及升级过程均相同,无法有效避免升级过程中的安全风险,另一些情形中可通过网页下载APK格式的固件升级包进行固件升级,由于涉及用户对风险的主观判断和选择,同样难以有效避免固件升级过程中的安全风险。
本发明实施例提供一种固件升级方法、装置、服务器、终端设备及存储介质,能够有效避免固件升级过程中的安全风险,由于不同设备可能具有不同的识别码,进而不同设备的子升级包和固件升级过程可能不同,单一设备被黑客
攻击无法泄漏其他设备信息,很难在网络中观察出规律并大范围干扰终端设备的固件升级。系统的破解难度和终端设备数量成正比,尤其适用于大范围的传感器和控制器网络,适用于军用和工厂端场景。
图1是根据本公开的实施例的应用于服务器的固件升级方法的流程图。
在步骤S101,服务器获取目标固件升级包。例如,可以获得开发人员制作的固件升级包。当开发人员开发了升级的固件,升级的固件会添加或重写设备上的现有固件,使其再次以最高效率和安全性操作。例如,如果存在需要解决的故障或创建了新的安全补丁,则当前安装的固件将不再适用。对于经常访问互联网或需要不断更新安全功能的设备,固件升级可能非常频繁。在实际应用中,可以将固件升级包看作整体文件,由开发人员在制作固件升级包时调试并测试完成。
在步骤S102,服务器接收目标终端设备的识别码。例如,服务器从目标终端设备接收其识别码。
目标终端设备可以指待升级的终端设备,终端设备可以是物联网中的任一终端设备,例如,各种信息传感器、射频识别设备、全球定位系统、红外感应器、激光扫描器、电脑等。
一些实现方式中,识别码可以指预先配置终端设备的SN(序列号,Serial Number)码,相关技术中的固件升级包都是制作成统一的升级包文件,因此,在对批量终端设备进行固件升级时,每个终端设备进行相同固件升级时的固件升级包及升级过程均相同,一旦固件升级包传输(下载)过程中被监听,易使整个固件升级包泄露甚至被篡改,使得同样固件升级需求的终端设备在进行固件升级时的安全性无法得到有效保证。
本实施例中所采用的固件升级的安全机制中,每个终端设备都设置有配置具有一定定制性的识别码,在识别码中的至少部分字段配置有升级信息,针对每个终端设备进行识别码的定制,由于具有相同固件升级需求的终端设备的识别码的配置不同或者不完全相同,使得拆包传输(下载)的具体形式不是全部一致,因而即使单个终端设备的信息泄露,也不会带来整个系统所有终端设备的安全问题。
在一些实现方式中,升级信息包括子升级包的大小、子升级包的顺序标识、子升级包的下载地址偏移量中的至少一个。其中,子升级包的大小是拆分
子升级包时每个子升级包的大小,例如可以用7比特来传输子升级包的大小;子升级包的顺序标识用于区分是否变换各子升级包的顺序以及如何变换各子升级包的顺序,以变换拆分后的子升级包的传输顺序,提升传输过程中的复杂度,避免被监听时泄露整个固件升级包甚至被篡改,实际中可以根据为不同的终端设备设置子升级包的顺序标识,可以随机设置,也可以按照一定规律设置,本实施例不做限定。
识别码的组成示例如表1所示:
表1
表1中的识别码,包括头部字段、子升级包的顺序标识、子升级包的大小、子升级包的下载地址偏移量和尾部字段。子升级包的顺序标识、子升级包的大小、子升级包的下载地址偏移量在识别码中的位置仅是示意性的,并且其可以以不同的顺序位于识别码中。可以根据实际的标识码配置规则确定标识码的总位数以及各种升级信息、头部字段、尾部字段等字节(或位数)。其中,头部字段、尾部字段可以参考相关技术中的SN中的头部字段、尾部字段设置,来标识对应的终端设备的基本信息,也可以自定义设置头部字段、尾部字段,在一些情况下还可以省略头部字段、尾部字段,即:识别码仅以升级信息来配置。
步骤S103,服务器基于目标终端设备的识别码,将目标固件升级包拆分成子升级包。由服务器进行固件升级过程中的拆包存储或传输。在拆包时可能需要输入待升级的终端设备的识别号或者服务器自动根据终端设备的识别号进行固件升级包的拆包。在一个实施例中,服务器可以基于目标固件升级包的大小和目标终端设备的识别码中的子升级包的大小,将目标固件升级包拆分成若干数量的子升级包。可替代地,服务器可以基于目标固件升级包的大小和预定子升级包的大小或基于其他机制,将目标固件升级包拆分成若干子升级包。在一个实施例中,服务器可以基于目标终端设备的识别码中的子升级包的
顺序标识确定是否变换各子升级包的顺序以及如何变换各子升级包的顺序。
在步骤S104,服务器将子升级包进行存储和/或发送至目标终端设备。服务器将可以将各子升级包文件存储在服务器中等待目标终端设备固件升级时发送。可替代或附加地,在当前目标终端设备处于固件升级时,将子升级包文件发送给目标终端设备。在实际应用中,服务器可以先将拆分的若干子升级包进行存储,在终端设备请求时开始发送子升级包至目标终端设备。可替代或附加地,服务器可以自动发送至目标终端设备。在一个实施例中,可以在将拆分的若干子升级包同时进行存储和发送至目标终端设备,以实现备份。在一个实施例中,服务器可以基于目标终端设备的识别码确定存储子升级包的地址,以供终端设备从该地址下载子升级包。例如,服务器可以从终端设备接收终端设备的识别码sn001。服务器基于默认的可修改的地址PROTOCOL://HOSTNAME/PATH/SN以及目标终端设备的识别码sn001,将子升级包存储在PROTOCOL://HOSTNAME/PATH/sn001。目标终端设备可以从地址PROTOCOL://HOSTNAME/PATH/sn001下载子升级包。上述地址的具体形式是示例性的,而非限制性的。可替代地,服务器可以将子升级包存储在预定地址,以供终端设备从预定地址下载子升级包。
图2是根据本公开的实施例的应用于终端设备的固件升级方法的流程图。终端设备可以是各种物联网终端设备,例如,智能传感器(诸如,用于收集例如温度、湿度、振动、压力、液位等周围环境数据的传感器)、智能家居设备(诸如,智能插座、智能电灯、智能音响、智能洗衣机、智能冰箱、智能空气净化器等)、智能穿戴设备(诸如,智能手表、运动手环、智能眼镜等)、智能交通设备(诸如,智能路灯、智能汽车、智能停车场等)、智能医疗保健设备(诸如,智能血压计、智能健康手环、智能叫号机)、智能工业设备(诸如,数控机床、工业机器人)等。可以以嵌入式技术或者其他技术实现上述终端设备。
在步骤S201,终端设备获取固件升级指令。在一些实现方式中,固件升级指令由脱离广域网的广播设备发送或者由终端设备的预设按键触发。脱离广域网的广播设备例如可以是手持广播设备。可以使用诸如蓝牙、蓝牙LE、ZigBee、射频识别(RFID)、UWB、60GHz、Wi-Fi、WiMAX等短程无线通信或者USB等有线通信方式实现脱离广域网的广播设备。由于广播设备是脱离
广域网的,不使用广域网能够很好地避免通过广域网传输时的安全风险。终端设备还可以预设按键,例如,诸如拨动按键、滑动按键、按钮等物理按键以及在触摸屏上显示的特定区域,以便触发固件升级指令,实现离网和联网相配合的升级策略。在一个实施例中,固件升级指令可以由服务器通过广域网,向终端设备发送。在实际应用中,可以根据固件升级的需求,选择广播设备发送固件升级指令、终端设备的预设按键触发固件升级指令、服务器通过广域网发送固件升级指令中的一个或多个。
在步骤S202,终端设备发送目标终端设备的识别码。例如,终端设备可以从终端设备的flash芯片的存储区域获得目标终端设备的识别码。已经在图1的步骤S102中对目标终端设备的识别码进行了描述,此处不再重复描述。
在步骤S203,终端设备接收(下载)子升级包。在一个实施例中,终端设备可以从服务器下载子升级包。
在一个实施例中,识别码还可以包括存储地址偏移量,但这不是必须的。例如,终端设备将子升级包存储到基于可修改存储地址和存储地址偏移量确定的终端设备的闪存(flash)的存储地址中。从而实现子升级包在终端设备中的分区存储。子升级包的存储地址偏移量用于确定子升级包在终端设备中的存储地址,以实现子升级包在终端设备中分区存储。实际应用中子升级包存储于终端设备的flash芯片,通过在flash芯片划分不同的存储区域,实现子升级包在终端设备中分区存储。
终端设备flash芯片的存储区域划分示例,如表2所示:
表2
可以看出,通过在flash芯片划分不同的存储区域,实现子升级包在终端设备中分区存储。
在一个实施例中,终端设备可以基于终端设备的识别码以及根据下载地址偏移量从终端设备的flash芯片读取的默认的可修改下载地址,确定从服务器下载子升级包的地址。例如,在表2的示例中,终端设备可以基于从flash芯片的00000000地址读取的识别码,获得目标终端设备的下载地址偏移量address_offset001。并且终端设备可以基于address_offset001从flash芯片的地址0000000F读取可修改的地址PROTOCOL://HOSTNAME/PATH/SN,根据终端设备的识别码sn001以及可修改的地址PROTOCOL://HOSTNAME/PATH/SN,确定从PROTOCOL://HOSTNAME/PATH/sn001下载服务器存储的子升级包。上述地址的具体形式是示例性的,而非限制性的。可替代地,终端设备可以从预定地址下载子升级包。
在步骤S204,基于目标终端设备的识别码,将子升级包拼接成目标固件升级包。例如,终端设备可以基于目标终端设备的识别码中的子升级包的顺序标识,确定是否变换接收的各子升级包的顺序以及如何变换各子升级包的顺序,从而进一步将子升级包拼接成目标固件升级包。在一个实施例中,拼接可以指按顺序从目标终端设备的存储区域读取子升级包。在一些实施例中,将子
升级包拼接成目标固件升级包之后,还进行软重启。
图3是根据本公开的实施例的应用于服务器的固件升级方法的流程图。
在步骤S301,服务器获取目标固件升级包。图3的步骤S301与图1的步骤S101相似的部分,在此不再重复描述。
在步骤S302,服务器接收目标终端设备的识别码。图3的步骤S302与图1的步骤S102相似的部分,在此不再重复描述。
在步骤S303,服务器基于目标终端设备的识别码确定是否将子升级包进行顺序变换。当确定将子升级包进行顺序变换时,流程行进到S304。在S304,服务器将目标固件升级包拆分成子升级包,执行顺序变换,并将子升级包编号。当确定将子升级包不进行顺序变换时,流程行进到S305。在S304,服务器将目标固件升级包拆分成子升级包,不执行顺序变换,并将子升级包编号。在一个实施例中,服务器上各子升级包的编号为0001,0002,0003,0004,0005。无论各子升级包的顺序是否经过变换,编号均为按顺序编写,其指示了各子升级包的传输顺序。在一个实施例中,每个子升级包的包头可以包括子升级包的编号。在一个实施例中,每个子升级包的包头还可以包括目标终端设备的识别码和子升级包的数量。
在一个实施例中,顺序标识可以是二进制数据。但二进制数据仅仅是示例性的,在其他实施例中,顺序标识可以是其他形式的标识。
在一些实现方式中,步骤S303,根据预设位数的二进制数据对应的数值是否为预定数值(例如,0),来确定在将目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换。通过顺序标识来确定并在拆分时调整子升级包的顺序,可以提升固件升级包的传输(下载)的安全性。
例如,一种具体的变换顺序规则可以是,在S304,将若干子升级包划分为若干对相邻的子升级包,将每对相邻的子升级包中的两个子升级包的顺序交换,以此规则变换子升级包的顺序后,使得固件升级包的传输(下载)固件升级包时的被监听而泄露和篡改的难度明显增大,提升了固件升级的安全性。
一个示例中,预设位数为1,则二进制数据包括0或1,对应的数值也是0或1,进而,步骤S303,当前终端设备的识别码中顺序标识对应的二进制数据对应的数值为0时,将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变,而当前终端设备的识别码中顺序标识对应的二进制数据对
应的数值为1时,将目标固件升级包拆分成若干子升级包的同时需要将各子升级包进行顺序变换。可替代地,可以作与上述相反的设定。
在预设位数为1位的一些实现方式中,在S304,可以将相邻的子升级包交换顺序,以实现子升级包的顺序变换。因此,根据预设位数的二进制数据对应的数值将各子升级包进行顺序变换,包括:将若干子升级包划分为若干对相邻的子升级包;以及将每对相邻的子升级包中的两个子升级包的顺序交换。继续前面的示例,预设位数为1,则二进制数据包括0或1,当前终端设备的识别码中顺序标识对应的二进制数据对应的数值为1时,确定将各子升级包进行顺序变换,此时,将对目标固件升级包拆分所得的若干子升级包划分为若干对相邻的子升级包,每一对中的两个子升级包的顺序交换。而当前终端设备的识别码中顺序标识对应的二进制数据对应的数值为0时,则无需作此顺序交换操作,保持原始顺序即可。
另一个示例中,预设位数为2,则二进制数据包括00、01、10、11,对应的数值是0、1、2、3,进而,步骤S303,当前终端设备的识别码中顺序标识对应的二进制数据00对应的数值为0时,将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变,而当前终端设备的识别码中顺序标识对应的二进制数据01、10或11对应的数值为1、2、3时,将目标固件升级包拆分成若干子升级包的同时需要将各子升级包进行顺序变换。可替代地,可以作与上述设定不同的设定。
在一些实现方式中,步骤S303,还可以根据预设位数的二进制数据对应的数值的奇偶性来确定是否进行子升级包的顺序变换。因此,根据预设位数的二进制数据对应的数值,确定在将目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换,包括:若预设位数的二进制数据对应的数值为偶数,确定将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变;若预设位数的二进制数据对应的数值为奇数,确定将目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换。可替代地,若预设位数的二进制数据对应的数值为奇数,确定将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变;若预设位数的二进制数据对应的数值为偶数,确定将目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换。当预设位数为1位时,根据奇偶性确定是否变换子升级包的顺
序的过程与根据顺序标识为0还是为1来确定是否变换子升级包的顺序的过程类似。
在一些实现方式中,步骤S303,还可以根据预设位数的二进制数据对应的数值对预定数值取余来确定是否进行子升级包的顺序变换。因此,根据预设位数的二进制数据对应的数值对预定数值取余,确定在将目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换,包括:若根据预设位数的二进制数据对应的数值对预定数值取余为一个或多个特定数值中的一个,确定将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变;若根据预设位数的二进制数据对应的数值对预定数值取余不是一个或多个特定数值,确定将目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换。可替代地,若根据预设位数的二进制数据对应的数值对预定数值取余为一个或多个特定数值,确定将目标固件升级包拆分成若干子升级包的同时将各子升级包进行顺序变换;若根据预设位数的二进制数据对应的数值对预定数值取余不是一个或多个特定数值,确定将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变。例如,当预设数值为3时,根据预设位数的二进制数据对应的数值对预定数值取余为特定数值(例如,0),可以确定在将目标固件升级包拆分成若干子升级包的同时是否将各子升级包进行顺序变换。当预设数值为2时,根据预设位数的二进制数据对应的数值对预定数值取余来确定是否进行子升级包的顺序变换的过程与根据奇偶性确定是否变换子升级包的顺序的过程类似。
在一些实现方式中,可以将根据预设位数的二进制数据对应的数值确定顺序交换的规则。因此,步骤S304,根据预设位数的二进制数据对应的数值将各子升级包进行顺序变换,包括:将子升级包划分为若干子升级包组,每个子升级包组中包括特定数量子升级包,该特定数量为预设位数的最大二进制数据对应的数值加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包交换。在预设位数为1的情况下,根据预设位数的最大二进制数据对应的数值加1进行子升级包进行分组、并根据预设位数的最大二进制数据对应的数值对子升级包的顺序进行变换的过程,与将子升级包划分为若干对相邻的子升级包、以及将每对相邻的子升级包中的两个子升级包的顺序交换来对子升级包的顺序进行变换的过程类似。基于相似的原理,预设位数为3位、4位……N位的情形,本实施例中不再一一举例,预设位数越多和/或交换顺序的规律越复杂,固件升级过程中的传输(下载)复杂度越高。
虽然上述部分实施例将确定是否变换以及变换的方式与顺序标识的预设位数相关联。但本公开不限于此。例如,在预设位数为1的实施例中,二进制数据包括0或1,对应的数值也是0或1,进而,步骤S303,当前终端设备的识别码中顺序标识对应的二进制数据对应的数值为0时,将目标固件升级包拆分成若干子升级包的同时各子升级包的顺序不变,而当前终端设备的识别码中顺序标识对应的二进制数据对应的数值为1时,将目标固件升级包拆分成若干子升级包的同时需要将各子升级包进行顺序变换。但变换方式可以是将子升级包划分为若干子升级包组,每个子升级包组中包括某个数量子升级包,该数量为服务器与目标终端设备先前预定的数量(大于等于2);以及将每组子升级包中顺序相差该数量减1(或者顺序相差小于该数量的其他数值,例如顺序相差小于该数量减2等)的两个子升级包的顺序交换。例如,在根据预设位数的二进制数据对应的数值对预定数值取余来确定是否进行子升级包的顺序变换的实施例中,可以在服务器和目标终端设备之间分别设定对不同余数的目标终端设备的子升级包顺序的变换方式。例如,当余数为0时,可以不变换子升级包顺序。在余数为1时,可以将子升级包划分为若干对相邻的子升级包、以及将每对相邻的子升级包中的两个子升级包的顺序交换。在
余数为2时,可以将若干子升级包划分为若干组子升级包,每一组中包含3(即,余数加1)个子升级包,将顺序上相差2(即,余数)位的两个子升级包的顺序交换。但本公开不限于此。
在S306,服务器生成目标固件升级包的包头。目标固件升级包的包头可以包括目标终端设备的识别码、子升级包的数量和编号、固件升级密钥和/或完整性验证信息中的一个或多个。固件升级密钥和/或完整性验证信息可以供终端设备在安全引导流程中安全验证使用。
在S307,服务器将子升级包以及info包进行存储和/或发送至目标终端设备。info包相当于提供目标固件升级包的包头的数据包。图3的S307中与图1的S104相似的部分不再重复描述。
图4是根据本公开的实施例的应用于终端设备的固件升级方法的流程图。
在S401,终端设备获取固件升级指令。图4的步骤S401与图2的步骤S201相似的部分,在此不再重复描述。
在S402,终端设备发送目标终端设备的识别码。图4的步骤S402与图2的步骤S202相似的部分,在此不再重复描述。
在S403,终端设备下载info包。终端设备通过下载的info包获得目标终端设备的识别码、子升级包的数量、固件升级密钥和/或完整性验证信息中的一个或多个。例如,可以验证info包中的目标终端设备的识别码和本终端设备的识别码是否一致。在终端设备的识别码与服务器发送的info包中的识别码一致的情况下,执行下载服务器发送的基于升级信息拆分的子升级包。在获取的终端设备的识别码与服务器发送的包头中的识别码不一致,则当前固件升级指令可能非法,不执行下载操作。
服务器可以发送给终端设备GET信息(含包头信息的info包)。GET信息可以包括终端设备的识别码SN,拆分的子升级包的子升级包数量quantity,还可以包含拆分的子升级包的编号以及完整性校验值,例如md5值,以及固件升级密钥等安全验证信息,在实际应用中,可以根据安全需求,设置更多数量及种类的安全验证信息,以实现终端设备的安全验证,提升固件升级的安全性。
一些情况下,包头还可以包括固件升级密钥和/或完整性验证信息,以与固件升级指令中携带的固件升级密钥和/或完整性验证信息进行验证,提升安
全性。
服务器发送的info包经下载,存储至终端设备预设的tmp分区中,供升级过程中调用其中信息。
下载服务器发送的基于升级信息拆分的子升级包的过程中,可以采用逐包请求逐包传输下载的方式,并在每下载一个子升级包的情况下,可以根据包头提供的信息确定是否下载完最后一个子升级包。因此,在一些实现方式中,本方法还包括:根据包头中的子升级包的数量,确定是否下载完最后一个子升级包。
由于子升级包的数量和编号是确定的,在顺序下载每一子升级包的时候,根据该子升级包的编号即可判断是传输完所有的子升级包。
在S404,终端设备基于识别码确定是否将子升级包进行顺序变换。
当确定将子升级包进行顺序变换时,流程行进到S405。在S405,终端设备下载子升级包。在S406,终端设备确认当前下载的子升级包是否为最后一个升级包。当当前下载的子升级包不是最后一个升级包时,流程进行到S405。当当前下载的子升级包是最后一个升级包时,流程进行到S407。在S407,终端设备变换子升级包的顺序。
当确定不将子升级包进行顺序变换时,流程行进到S408。在S408,终端设备下载子升级包。在S409,终端设备确认当前下载的子升级包是否为最后一个升级包。当当前下载的子升级包不是最后一个升级包时,流程进行到S408。当当前下载的子升级包是最后一个升级包时,流程进行到S410。在S410,终端设备不变换子升级包的顺序。
因此,终端设备在下载完子升级包时,先基于顺序标识确定是否将子升级包进行顺序变换,若需要将子升级包进行顺序变换,则将子升级包的顺序变换回原始顺序,再将各子升级包拼接成原始的固件升级包;若不需要将子升级包进行顺序变换,则直接将各子升级包拼接成原始的固件升级包即可。
在S411,终端设备将子升级包拼接成目标固件升级包。
在S404,终端设备基于识别码确定是否将子升级包进行顺序变换的过程以及,以及在S406,终端设备变换子升级包的顺序以将变换后的顺序拼接为初始顺序的过程与图3的303步骤和304步骤类似,在此不再重复描述。
图5A-图5C是根据本公开的实施例的服务器在奇数维度矩阵内顺时针、
移出方向为左变换子升级包顺序的示意图。
图5A-图5C中服务器基于目标终端设备的识别码拆分子升级包的过程与关于3描述的过程相似,不再重复描述。
在一个实施例中,标识码中的顺序标识可以包括分别指示平移次数、移出方向、旋转方向中的至少一个的预设位数的数据。当顺序标识包括分别指示平移次数、移出方向、旋转方向中的一个或两个的预设位数的数据时,平移次数、移出方向、旋转方向中的剩余部分可以在终端设备和服务器之间提前预定。取决于需要,平移次数可以是1次、2次、3次或更多。移出方向是指子升级包或其他数据包在平移时,从矩阵移出的子升级包或数据包的平移方向。取决于需要,移出方向可以是上、下、左、右或其他方向。取决于需要,旋转方向可以是顺时针旋转方向或逆时针旋转方向。例如,当平移次数为2,移出方向为左,旋转方向为顺时针时,可能以为将矩阵内的所有数据包平移2次,并且每次被移出矩阵的数据的移出方向为向左,数据包在矩阵内的旋转方向为顺时针。当标识码中的顺序标识指示的平移次数不为0时,可以确定变换子升级包的顺序。
服务器根据目标升级包被拆分的子升级包数量N,生成矩阵。在一个实施例中,服务器根据目标升级包被拆分的子升级包数量N,确定生成的矩阵的维数。根据以下公式计算T:
其中,roundup()表示向上取整。
将T进行对2的取余运算,当余数为0时,使用偶数维数的矩阵。当余数为1时,使用奇数维数的矩阵。
接下来参照图5A描述使用奇数维数的矩阵变换子升级包的顺序的方式。
假设子升级包共有N=17个。根据等式(1),T=5,将T对2取余为1,因此可以确定生成奇数维数的矩阵。在生成奇数维数的矩阵时,通过以下等式确定矩阵的维数:
根据等式(2),n=2,则奇数矩阵的维度为:2n+1=5。也即,在子升级包N=17个的情况下,生成如图5A所示的5维矩阵。如图5A所示,子升级包
初始编号S为1-17的17个子升级包从左至右,自动换行地在矩阵中进行排列。上述排列方式仅仅是示例性的,并且可以使用其他排列方式。矩阵从左至右、从上至下的每个位置分别具有原始序号P_original。如图5A所示,17个子升级包无法刚好填满5维矩阵,可以使用干扰包(乱码包、空包、或者重复使用17个子升级包中的一个或多个)来填充矩阵,直到矩阵被填满。
假设顺序标识包括指示平移次数K为1、移出方向为左、旋转方向为顺时针的预设位数的数据。如图5A所示,坐标(1,5)的数据包(P_original=21)被向左移出矩阵、数据包在矩阵内呈顺时针旋转。坐标(1,5)的数据包被向左移出矩阵后,矩阵为图5B所示。然后,将移出矩阵的数据包填充到图5B中间空出的位置,平移后的矩阵如图5C所示。图5C的矩阵是图5A的矩阵向左、顺时针平移1次之后的矩阵。
图6是根据本公开的实施例的确定奇数矩阵中的数据包的平移方式的流程图。
参照图5A和参照图6描述确定矩阵中的每一个数据包在矩阵内的平移方式的过程。针对矩阵中的一个数据包执行以下流程。
在S601,确定平移次数K是否为0。平移次数K=1,流程进行到S602。
在S602,可以根据原始序号P_original确定原始序号P_original的数据包(该数据包为子升级包)在矩阵中所处的层数。以位于图5A中心的数据包的原始序号P_original=13作为示例。
P_original/(2n+1)=(Y-1)……X (3)
其中,(Y-1)为商,X为余数。等式(3)示出了根据子升级包的原始序号P_original=13确定子升级包在矩阵中的坐标(X,Y)=(3,3)。
Layer=max(|X-n-1|,|Y-n-1|) (4)
其中,max(|X-n-1|,|Y-n-1|)表示取|X-n-1|和|Y-n-1|两者中的最大值。根据等式(4)可以计算出原始序号P_original=13的数据包在矩阵中所处的层数为Layer=0。同时,将K值减1,即K’=K-1,K’=0,K=K’。
在向左平移的情况下,根据数据包在矩阵中所处于的层数以及数据包在矩阵中的坐标,确定数据包在矩阵内的平移方式可以由以下条件进行:
条件一:数据包的坐标Y=(n+1)+Layer。
在S603,如果满足条件一,则流程行进到S604,数据包的坐标的改变为:
将X值减1,Y值不变;如果不满足条件一,则流程行进到S605。
在图5A中,满足条件一的数据包对应于向左平移的数据包,即,虚线区域1中包括的数据包。
条件二:数据包的坐标X=n+1-Layer并且n+1-Layer<Y<n+1+Layer。
在S605,如果满足条件二,则流程行进到S606,数据包的坐标的改变为:X值不变,将Y值减1;如果不满足条件二,则流程行进到S607。
在图5A中,满足条件二的数据包对应于向上平移的数据包,即,虚线区域2中包括的数据包。
条件三:数据包的坐标Y=n+1-Layer并且n+1-Layer<=X<n+1+Layer。
在S607,如果满足条件三,则流程行进到S608,数据包的坐标的改变为:将X值加1,Y值不变;如果不满足条件三,则流程行进到S609。
在图5A中,满足条件三的数据包对应于向右平移的数据包,即,虚线区域3中包括的数据包。
条件四:数据包的坐标Y=n+1-Layer并且n+1-Layer<=X<n+1+Layer,
在S609,如果满足条件四,则流程行进到S610,数据包的坐标的改变为:X值不变,将Y值加1。
在图5A中,满足条件四的数据包对应于向下平移的数据包,即,虚线区域4中包括的数据包。
本领域技术人员应该理解,由于在本实施例中,除了移入矩阵之外,数据包在矩阵内平移方式为上下左右四种,在获得以上四个条件中的三个的情况下,可以通过排除法,确定数据包的平移方式。图6中对条件一-条件四的选择以及执行顺序仅仅是示例性的。
条件五:移动后的数据包的坐标X=0。
在S611,如果满足条件五,则流程行进到S612,数据包的坐标的改变为:X=n+1,Y=n+1,然后流程从S612行进到S613。如果不满足条件五,则流程直接行进到S613。
如图5A所示,原始序号P_original=13的数据包符合条件一,位于矩阵中的虚线区域1中,原始序号P_original=13的数据包的平移方式为向左平移。平移后的原始序号P_original=13的数据包的新序号为P_new=X+(Y-1)(2n+1)=12,如图5C所示。原始序号P_original=21的数据包符合条件一,
位于矩阵中的虚线区域1中,原始序号P_original=21的数据包的平移方式为向左平移。平移后的原始序号P_original=21的数据包的坐标为(0,5),符合条件五,原始序号P_original=21的数据包的坐标改变为(3,3),因此平移后的原始序号P_original=21的数据包的新序号为P_new=X+(Y-1)(2n+1)=13,如图5C所示。
流程继续行进到S601,当前K=0,流程结束。
通过对矩阵中的每个数据包重复上述图6的过程,可以获得矩阵内所有数据包的平移方式。
以上为平移次数为1时,服务器对矩阵内数据包的平移方式。本领域技术人员基于图5A-图5C和图6可以理解平移更多次的过程。
服务器对矩阵内的所有数据包执行K次平移之后,以平移后的矩阵内的P_new作为矩阵内数据包的编号S,向目标终端设备发送。在发送的过程中,子升级包的顺序被打乱,并且混合有干扰包,这极大地增加了破解难度。
目标终端设备可以基于从flash读取的识别码中的顺序标识,确定接收的数据包被服务器平移的方式(例如,移出方向以及顺逆时针)以及次数。目标终端设备可以基于info包中包括的子升级包的数量,获得服务器发送的、在服务器生成的矩阵中包括的数据包(例如,包括子升级包以及干扰包)的总数量,以及目标终端设备生成的矩阵的维数。可替代或附加地,info包中可以包括在服务器生成的矩阵中包括的数据包(例如,包括子升级包以及干扰包)的总数量,目标终端设备可以基于总数量生成矩阵的维数(即,总数量的均方根)。目标终端设备基于子升级包的数量确定生成的矩阵的维度与关于图5A-图5C的描述相似,在此不再重复描述。
在一个实施例中,目标终端设备可以基于服务器对矩阵中的数据包的平移过程的逆过程,恢复子升级包的顺序。
图5D是根据本公开的实施例的数据包的平移过程的逆过程的示意图。
图7是根据本公开的实施例的数据包的平移过程的逆过程的流程图。
参照图5A-图5D以及图7描述针对矩阵中的每一个数据包的平移过程的逆过程。针对矩阵中的一个数据包执行以下过程。
在S701,确定平移次数K是否为0。平移次数K=1,流程进行到S702。
在S702,可以根据新序号P_new确定原始序号P_new的子升级包在矩阵
中所处的层数。计算层数的方式与图6的步骤S602中的描述相同,在此不再重复描述。以位于图7A中心的数据包的新序号P_new=12作为示例。新序号P_new=12确定子升级包在矩阵中的坐标(X,Y)=(2,3)。P_new=12的数据包在矩阵中所处的层数为Layer=1。同时,将K值减1,减1后的K值为0。
在向左平移的情况下,根据数据包在矩阵中所处于的层数以及数据包在矩阵中的坐标,确定数据包在矩阵内的平移方式可以由以下条件进行:
预处理条件:数据包的坐标X=n+1并且Y=n+1。
在S703,如果满足预处理条件,则流程行进到S704,数据包的坐标的改变为:X=0,Y=2n+1,流程行进到S705;如果不满足预处理条件,则流程直接行进到S705。
条件一:数据包的坐标Y=Layer+n+1,X<n+1+Layer;或者X=n+1-Layer并且Y=n+1+Layer-1。
在S705,如果满足条件一,则流程行进到S706,数据包的坐标的改变为:将X值加1,Y值不变;如果不满足条件一,则流程行进到S707。
在图5D中,满足条件一的数据包对应于向右平移的数据包,即,虚线区域1中包括的数据包。
条件二:数据包的坐标X=n+1+Layer并且Y<n+1-Layer。
在S707,如果满足条件二,则流程行进到S708,数据包的坐标的改变为:X值不变,将Y值减1;如果不满足条件二,则流程行进到S709。
在图5D中,满足条件二的数据包对应于向上平移的数据包,即,虚线区域4中包括的数据包。
条件三:数据包的坐标Y=n+1-Layer并且n+1-Layer<X<n+1+Layer。
在S709,如果满足条件三,则流程行进到S710,数据包的坐标的改变为:将X值减1,Y值不变;如果不满足条件三,则流程行进到S711。
在图5D中,满足条件三的数据包对应于向左平移的数据包,即,虚线区域3中包括的数据包。
条件四:数据包的坐标X=n+1-Layer,Y>n+1+Layer-1。
在S711,如果满足条件四,则流程行进到S712,数据包的坐标的改变为:X值不变,将Y值加1。
在图5D中,满足条件四的数据包对应于向下平移的数据包,即,虚线区域2中包括的数据包。
本领域技术人员应该理解,由于在本实施例中,除了移出矩阵之外,数据包在矩阵内平移方式为上下左右四种,在获得四个条件中的三个的情况下,可以通过排除法,确定数据包的平移方式。图7为了简洁,除了预处理条件以外,仅示出了四个条件中的三个。图7中对条件一-条件三的选择以及执行顺序仅仅是示例性的。
如图5D所示,新序号P_new=12的数据包符合条件一,新序号P_new=12的数据包的平移方式为向右移动,坐标改变为(3,3)。流程行进到S713,P=13。
流程继续行进到S701,当前K=0,流程结束。
通过对矩阵中的每个数据包重复上述图7的过程,可以将矩阵从图5C恢复至图5A。在图5A中,子升级包在矩阵中的序号与子升级包原始的顺序相同。根据子升级包在恢复的矩阵中的序号以及子升级包的数量,可以获得顺序被恢复的子升级包。
以上为平移次数为1时,目标终端设备对矩阵内数据包的移动方式。本领域技术人员基于图5D和图7可以理解恢复平移更多次的过程。
在一个实施例中,目标终端设备可以通过继续执行服务器对矩阵中的数据包的平移过程来恢复子升级包的顺序。
上文已经参照图5A-图5C和图6描述了服务器对矩阵中的数据包的平移过程,在此不再重复描述。
图8是根据本公开的实施例的确定恢复子升级包顺序需要继续执行服务器执行的平移的次数的流程图。
假设初始序号为P_original的数据包经过图6所述的平移之后,新序号为P_new。可以通过图8的流程计算出需要继续执行多少次服务器执行的平移,可以恢复子升级包顺序。
在S801,确定P_original是否等于P_new。如果不相等,则流程进行到S802。
在S802,可以根据原始序号P_original确定原始序号P_original的子升级包在矩阵中所处的层数。确定方式与上述参照图6描述的过程相似,不再重复描述。同时,将R值加1,加1后的R值等于1。
S802-S813与图6的S602-S613相似,不再重复描述。
流程继续行进到S801,继续执行流程,直到P_new=P_original,流程结束,结束时的R指示恢复子升级包顺序需要继续执行服务器执行的平移的次数。
图9A-图9D是根据本公开的实施例的服务器根据不同移出方向在奇数维度矩阵内平移数据包的方式的示意图。
在一个实施例中,可以根据各个数据包的序号P确定数据包所在的层数Layer。参照图5A的第1层和第2层,移出方向为左、顺时针旋转时,矩阵中任一层中的数据包的移动方式如图9A所示。
在区域1中,数据包的移动方式为向左移动,数据包的坐标改变为:X值减1,Y值不变。
在区域2中,数据包的移动方式为向上移动,数据包的坐标改变为:X值不变,Y值减1。
在区域3中,数据包的移动方式为向右移动,数据包的坐标改变为:X值加1,Y值不变。
在区域4中,数据包的移动方式为向下移动,数据包的坐标改变为:X值不变,Y值加1。
基于图9A的层中对不同移动方向的区域的划分,可以获得参照图6描述确定数据包移动方向的条件一-条件五。
参照图9B描述移出方向为右、顺时针旋转时,矩阵中任一层中的数据包的移动方式。
区域1-区域4中,数据包的移动方式与参照图9A描述的相同,这里不再重复描述。基于图9B的层中对不同移动方向的区域的划分,可以获得在移出方向为右、顺时针旋转时服务器确定矩阵内的数据包移动方向的条件,为了简洁,不再描述具体条件。
参照图9C描述移出方向为上、顺时针旋转时,矩阵中任一层中的数据包的移动方式。
区域1-区域4中,数据包的移动方式与参照图9A描述的相同,这里不再重复描述。基于图9C的层中对不同移动方向的区域的划分,可以获得在移出方向为上、顺时针旋转时服务器确定矩阵内的数据包移动方向的条件,为了简
洁,不再描述具体条件。
参照图9D描述移出方向为下、顺时针旋转时,矩阵中任一层中的数据包的移动方式。
区域1-区域4中,数据包的移动方式与参照图9A描述的相同,这里不再重复描述。基于图9D的层中对不同移动方向的区域的划分,可以获得在移出方向为下、顺时针旋转时服务器确定矩阵内的数据包移动方向的条件,为了简洁,不再描述具体条件。
图10是根据本公开的实施例的服务器基于包括指示移出方向为左,逆时针的顺序标识来变换子升级包顺序的示意图。
图10中,确定数据包所处于的层的过程与图5A中的该过程相同。不再重复描述。服务器基于包括指示移出方向为左,逆时针的顺序标识来变换子升级包顺序的过程与图6中服务器基于包括指示移出方向为左,顺时针的顺序标识来变换子升级包顺序的过程类似。通过调整条件一-条件五,可以获得矩阵内的数据包的平移方式。
在奇数维度矩阵中移动数据包时,被移出矩阵的数据包,总是被放回到奇数维度矩阵的中心(n+1,n+1)处。
参照图9A-图10,服务器可以根据识别码中的顺序标识以诸如左、右、上、下的移出方向,诸如顺时针、逆时针的旋转方向平移矩阵内的数据包,变换子升级包的顺序。相应地,目标终端可以根据识别码中的顺序标识,通过服务器平移矩阵内的数据包的过程的逆过程,恢复子升级包的顺序。
图11示出了根据本公开的实施例的服务器在偶数维度矩阵内顺时针、移出方向为左变换子升级包顺序的示意图。
假设子升级包共有N=14个。根据等式(1),T=4,将T对2取余为0,因此可以确定生成偶数维数的矩阵。在生成偶数维数的矩阵时,通过以下等式确定矩阵的维数:
根据等式(5),n=2,则偶数矩阵的维度为:2n=4。也即,在子升级包N=14个的情况下,生成如图11所示的4维矩阵。如图11所示,子升级包初始编号S为1-14的14个子升级包从左至右,自动换行地在矩阵中进行排列。矩
阵从左至右、从上至下的每个位置分别具有原始序号P_original。如图11所示,14个子升级包无法刚好填满4维矩阵,可以使用干扰包(乱码包、空包、或者重复使用14个子升级包中的一个或多个)来填充矩阵,直到矩阵被填满。
假设顺序标识包括指示平移次数K为1、移出方向为左、旋转方向为顺时针的预设位数的数据。如图11所示,坐标(1,4)的数据包被向左移出矩阵、数据包在矩阵内呈顺时针旋转。坐标(1,4)的数据包被向左移出矩阵后,将移出矩阵的数据包平移到图11中间将会空出的位置(n,n)处。
图12是根据本公开的实施例的确定偶数维度矩阵中的数据包的平移方式的流程图。
参照图11和参照图12描述确定数据包在矩阵内的平移方式的过程。
在S1201,确定平移次数K是否为0。平移次数K=1,流程进行到S1202。
在S1202,可以根据原始序号P_original确定原始序号P_original的子升级包在矩阵中所处的层数。以位于图11的数据包的原始序号P_original=13作为示例。
P_original/(2n)=(Y-1)……X (6)
其中,(Y-1)为商,X为余数。等式(3)示出了根据子升级包的原始序号P_original=6确定子升级包在矩阵中的坐标(X,Y)=(2,2)。
Layer=|max(X-n-0.5,Y-n-0.5)|+0.5 (7)
其中,max(,)表示取最大值。根据等式(6)可以计算出原始序号P_original=6的数据包在矩阵中所处的层数为Layer=0。同时,K值减1,减1后的K值等于0。
在向左平移的情况下,根据数据包在矩阵中所处于的层数以及数据包在矩阵中的坐标,确定数据包在矩阵内的平移方式可以由以下条件进行:
条件一:数据包的坐标Y=n+Layer。
在S1203,如果满足条件一,则流程行进到S1204,数据包的坐标的改变为:X值减1,Y值不变;如果不满足条件一,则流程行进到S1205。
在图11中,满足条件一的数据包对应于向左平移的数据包,即,虚线区域1中包括的数据包。
条件二:数据包的坐标X=n-Layer并且Y<n-Layer。
在S1205,如果满足条件二,则流程行进到S1206,数据包的坐标的改变
为:X值不变,Y值减1;如果不满足条件二,则流程行进到S1207。
在图11中,满足条件二的数据包对应于向上平移的数据包,即,虚线区域2中包括的数据包。
条件三:数据包的坐标Y=n+1-Layer并且X<n+Layer。
在S1207,如果满足条件三,则流程行进到S1208,数据包的坐标的改变为:X值加1,Y值不变;如果不满足条件三,则流程行进到S1209。
在图5A中,满足条件三的数据包对应于向右平移的数据包,即,虚线区域3中包括的数据包。
条件四:数据包的坐标X=n+Laye r并且Y<n+Layer,
在S1209,如果满足条件四,则流程行进到S1210,数据包的坐标的改变为:X值不变,Y值加1。
在图11中,满足条件四的数据包对应于向下平移的数据包,即,虚线区域4中包括的数据包。
本领域技术人员应该理解,由于在本实施例中,除了移入矩阵之外,数据包在矩阵内平移方式为上下左右四种,在获得以上四个条件中的三个的情况下,可以通过排除法,确定数据包的平移方式。图12中对条件一-条件四的选择以及执行顺序仅仅是示例性的。
条件五:移动后的数据包的坐标X=0。
在S1211,如果满足条件五,则流程行进到S1212,数据包的坐标的改变为:X=n,Y=n,然后流程从S1212行进到S1213。如果不满足条件五,则流程直接行进到S1213。
如图11所示,原始序号P_original=6的数据包符合条件三,位于矩阵中的虚线区域3中,原始序号P_original=6的数据包的平移方式为向右平移。平移后的原始序号P_original=6的数据包的新序号为P_new=X+2n(Y-1)=7,如图5C所示。原始序号P_original=13的数据包符合条件一,位于矩阵中的虚线区域1中,原始序号P_original=13的数据包的平移方式为向左平移。平移后的原始序号P_original=13的数据包的坐标为(0,4),符合条件五,原始序号P_original=13的数据包的坐标改变为(2,2),因此平移后的原始序号P_original=13的数据包的新序号为P_new=X+2n(Y-1)=6。
流程继续行进到S1201,当前K=0,流程结束。
通过对矩阵中的每个数据包重复上述图12的过程,可以获得矩阵内所有数据包的平移方式。
以上为平移次数为1时,服务器对矩阵内数据包的平移方式。本领域技术人员基于图11和图12可以理解平移更多次的过程。
服务器对矩阵内的所有数据包执行K次平移之后,以平移后的矩阵内的P_new作为矩阵内数据包的编号,向目标终端设备发送。在发送的过程中,子升级包的顺序被打乱,并且混合有干扰包,这极大地增加了破解难度。
图13A-图13D是描述根据本公开的实施例的服务器根据不同移出方向在偶数维度矩阵内平移数据包的方式的示意图。
在一个实施例中,可以根据各个数据包的序号P确定数据包所在的层数Layer。参照图11的第1层和第2层,移出方向为左、顺时针旋转时,矩阵中任一层中的数据包的移动方式如图13A所示。
在区域1中,数据包的移动方式为向左移动,数据包的坐标改变为:X值减1,Y值不变。
在区域2中,数据包的移动方式为向上移动,数据包的坐标改变为:X=X值不变,Y值减1。
在区域3中,数据包的移动方式为向右移动,数据包的坐标改变为:X值加1,Y值不变。
在区域4中,数据包的移动方式为向下移动,数据包的坐标改变为:X值不变,Y值加1。
基于图13A的层中对不同移动方向的区域的划分,可以获得参照图12描述确定数据包移动方向的条件一-条件五。
在图13A中,移出矩阵的数据包被放回到坐标(n,n)处。
参照图13B描述移出方向为右、顺时针旋转时,矩阵中任一层中的数据包的移动方式。
区域1-区域4中,数据包的移动方式与参照图13A描述的相同,这里不再重复描述。基于图13B的层中对不同移动方向的区域的划分,可以获得在移出方向为右、顺时针旋转时服务器确定矩阵内的数据包移动方向的条件,为了简洁,不再描述具体条件。
在图13B中,移出矩阵的数据包被放回到坐标(n+1,n+1)处。
参照图13C描述移出方向为上、顺时针旋转时,矩阵中任一层中的数据包的移动方式。
区域1-区域4中,数据包的移动方式与参照图13A描述的相同,这里不再重复描述。基于图13C的层中对不同移动方向的区域的划分,可以获得在移出方向为上、顺时针旋转时服务器确定矩阵内的数据包移动方向的条件,为了简洁,不再描述具体条件。
在图13C中,移出矩阵的数据包被放回到坐标(n+1,n)处。
参照图13D描述移出方向为下、顺时针旋转时,矩阵中任一层中的数据包的移动方式。
区域1-区域4中,数据包的移动方式与参照图13A描述的相同,这里不再重复描述。基于图13D的层中对不同移动方向的区域的划分,可以获得在移出方向为下、顺时针旋转时服务器确定矩阵内的数据包移动方向的条件,为了简洁,不再描述具体条件。
在图13D中,移出矩阵的数据包被放回到坐标(n,n+1)处。
此外,还可以通过在偶数维度的矩阵内平移矩阵,以实现逆时针旋转来变换子升级包的顺序。为了简洁,不再描述其详细过程。
在一个实施例中,目标终端设备可以基于服务器对矩阵中的数据包的平移过程的逆过程,恢复子升级包的顺序。在一个实施例中,目标终端设备可以通过继续执行服务器对矩阵中的数据包的平移过程来恢复子升级包的顺序。
以上描述了通过平移矩阵内的数据包,以旋转的形式变换子升级包的顺序的实施例。除了上面描述的通过左、右、上、下移出方向,顺时针、逆时针旋转,不同的平移次数在奇数或偶数维度的矩阵内平移数据包来变换/恢复子升级包的顺序,受益于本公开的本领域技术人员还可以以不旋转而平移的方式或其他平移方式在矩阵内移动数据包来变换/恢复子升级包的顺序。这些都在本公开的设想之内。
图14是根据本公开的实施例的用于服务器的固件升级设备。
如图14所示,1400是用于服务器的固件升级设备。
固件升级设备1400可以包括固件升级包获取装置1410,用于获取目标固件升级包。
固件升级设备1400可以包括接收装置1420,用于接收目标终端设备的识
别码。
固件升级设备1400可以包括拆分装置1430,用于基于目标终端设备的识别码,将目标固件升级包拆分成子升级包。
固件升级设备1400可以包括存储/发送装置1440,用于将子升级包进行存储和/或发送至目标终端设备。
图15是根据本公开的实施例的用于终端设备的固件升级设备。
如图15所示,1500是用于目标终端设备的固件升级设备。
固件升级设备1500可以包括固件升级指令获取装置1510,用于获取固件升级指令。
固件升级设备1500可以包括发送装置1520,用于发送目标终端设备的识别码。
固件升级设备1500可以包括下载/接收装置1530,用于下载/接收子升级包。
固件升级设备1500可以包括拼接装置1540,用于基于目标终端设备的识别码,将子升级包拼接成目标固件升级包。
图16是根据本公开的实施例的用于目标终端设备的安全引导的流程图。
终端设备软重启之后,终端设备运行安全引导程序。
在S1601,确定固件的升级信息是否为已升级。如果是,流程行进到S1602,启动目标固件。
如果否,流程行进到S1603,获取终端设备预设的tmp分区中的信息并解析,确定是否变换子升级包顺序。S1603-S1605中,确定是否变换子升级包顺序以及如何变换子升级包顺序的过程与上文相应部分的描述相似,不再重复描述。
在S1606,确定目标固件安全验证是否通过。可以根据固件升级指令中包含固件升级密钥和/或完整性验证信息对目标固件进行安全验证。在一些实现方式中,完整性验证信息例如是md5值,也可以是其他完整性验证信息,本实施例不做唯一限定。发送给目标终端设备的info包中也可以包括固件升级密钥和/或完整性验证信息。基于固件升级密钥和/或完整性验证信息进行目标固件的安全验证,在由info包携带发送至终端设备的固件升级密钥与固件升级指令中的固件升级密钥一致,和/或终端设备的完整性验证信息与固件升级
指令中的完整性验证信息一致的情况下,安全验证通过。如果安全验证未通过,流程结束。如果安全验证通过,流程行进到S1607。
在S1607,可以运行固件升级包。在一个实施例中,可以将固件升级包拷贝至运行地址并跳至该运行地址,即可运行升级后的目标固件。在一个实施例中,可以直接从flash中的相应分区运行固件升级包。
在S1607,可以修改目标固件的启动信息为已升级
通过上述安全引导流程,可以在拆分子升级包并对子升级包进行顺序变换的传输下载基础上,进一步提升固件升级的安全,实现固件的完整性校验和安全启动的配置操作,保证固件合法性。
图17是根据本公开的实施例的用于目标终端设备的离网与联网结合的安全验证的流程图。
在S1701,目标终端设备可以通过脱离广域网的方式获取固件升级指令以及安全验证密钥。目标终端设备可以从脱离广域网的广播设备以广播或者点对点通信的形式获得固件升级指令以及安全验证密钥。脱离广域网的广播设备例如可以是手持广播设备。在一个实施例中,目标终端设备可以从脱离广域网的广播设备获得下载基地址。目标终端设备可以基于默认的可修改地址、下载基地址、识别码获得固件升级包的下载地址。可以使用诸如蓝牙、蓝牙LE、ZigBee、射频识别(RFID)、UWB、60GHz、Wi-Fi、WiMAX等短程无线通信或者USB等有线通信方式实现脱离广域网的广播设备。由于广播设备是脱离广域网的,不使用广域网能够很好地避免通过广域网传输时的安全风险。
在S1702,目标终端设备可以经由广域网获得固件升级包以及固件升级包安全密钥。
在S1703,目标终端设备可以确定安全验证密钥与固件升级包安全密钥是否匹配。例如,目标终端设备可以确定通过脱离广域网的方式获得的安全验证密钥与经由广域网获得固件升级包安全密钥是否匹配。如果匹配,则确认固件升级包是安全的,否则报告风险信息。
目标终端设备获得固件升级包的过程可以与上述基于识别码的终端设备固件升级过程以及用于目标终端设备的安全引导过程相似,这里不再重复描述。
文本和附图仅作为示例提供,以帮助理解本公开。它们不应被解释为以任
何方式限制本公开的范围。尽管已经提供了某些实施例和示例,但是基于本文所公开的内容,对于本领域技术人员而言清晰的是,在不脱离本公开的范围的情况下,可以对所示的实施例和示例进行改变。
尽管已经用示例性实施例描述了本公开,但是可以向本领域技术人员建议各种改变和修改。本公开旨在涵盖落入所附权利要求范围内的这种改变和修改。
本发明中的任何描述都不应被理解为暗示任何特定的元件、步骤或功能是必须包括在权利要求范围内的必要元素。专利主题的范围仅由权利要求限定。
Claims (30)
- 一种应用于服务器端的固件升级方法,其特征在于,包括:获取目标固件升级包;接收目标终端设备的识别码;基于所述目标终端设备的识别码,将所述目标固件升级包拆分成子升级包;将所述子升级包进行存储和/或将所述子升级包发送至目标终端设备。
- 根据权利要求1所述的固件升级方法,其特征在于,所述方法还包括,通过所述目标终端设备的识别码获得子升级包的大小,基于所述子升级包的大小,确定拆分的子升级包的数量。
- 根据权利要求1所述的固件升级方法,其特征在于,所述方法还包括,基于子升级包的识别码和默认的可修改地址,确定目标终端设备下载子升级包的下载地址。
- 根据权利要求1所述的固件升级方法,其特征在于,所述方法还包括,通过所述目标终端设备的识别码获得子升级包的顺序标识,基于所述子升级包的顺序标识,确定是否变换子升级包顺序,响应于确定不变换子升级包顺序,按照子升级包的初始顺序对子升级包进行编号,响应于确定变换子升级包顺序,变换子升级包顺序,按照子升级包的变换后的顺序对子升级包进行编号。
- 根据权利要求4所述的固件升级方法,其特征在于,所述子升级包中的每一个包括子升级包包头,所述子升级包包头包括子升级包的编号。
- 根据权利要求5所述的固件升级方法,其特征在于,所述子升级包包头还包括目标终端设备的识别码以及目标固件升级包所拆分的子升级包的数 量中的至少一个。
- 根据权利要求4所述的固件升级方法,其特征在于,基于所述子升级包的顺序标识,确定是否变换子升级包顺序包括:识别所述顺序标识指示的数值,基于所述顺序标识指示的数值确定是否变换子升级包顺序。
- 根据权利要求7所述的固件升级方法,其特征在于,基于所述顺序标识指示的数值确定是否变换子升级包顺序包括基于所述顺序标识指示的数值是否为第一预定数值确定是否变换子升级包顺序。
- 根据权利要求7所述的固件升级方法,其特征在于,基于所述顺序标识指示的数值确定是否变换子升级包顺序包括:将所述顺序标识指示的数值对第二预定数值取余,获得余数,其中,第二预定数值为大于等于2的自然数,基于余数,确定是否变换子升级包顺序。
- 根据权利要求9所述的固件升级方法,其特征在于,所述第二预定数值为2,其中,基于所述顺序标识指示的数值确定是否变换子升级包顺序包括基于所述顺序标识指示的数值的奇偶性确定是否变换子升级包顺序。
- 根据权利要求4所述的固件升级方法,其特征在于,基于所述顺序标识变换子升级包顺序包括:识别顺序标识指示的数值,基于所述顺序标识指示的数值变换子升级包顺序。
- 根据权利要求11所述的固件升级方法,其特征在于,所述顺序标识包括预定位数的数据,识别顺序标识指示的数值包括识别数据指示的数值,其中,变换子升级包顺序包括:将子升级包划分为子升级包组,每个子升级包组包括初始顺序相邻的特 定数量的子升级包,其中,所述特定数量为预定位数的数据能够指示的最大数值加1,将每个子升级包组中初始顺序相差所述数据指示的数值的两个子升级包的顺序交换。
- 根据权利要求4所述的固件升级方法,其特征在于,变换所述子升级包顺序包括:将子升级包划分为子升级包组,每个子升级包组包括初始顺序相邻的特定数量的子升级包,其中,所述特定数量在服务器处预先确定,将每个子升级包组中初始顺序相差小于特定数量的数值的两个子升级包的顺序交换。
- 根据权利要求4所述的固件升级方法,其特征在于,所述方法还包括,根据子升级包的数量生成矩阵,将子升级包在矩阵中排列,其中,变换子升级包顺序包括根据顺序标识在矩阵中平移子升级包。
- 根据权利要求14所述的固件升级方法,其特征在于,根据所述子升级包的数量生成矩阵包括根据子升级包的数量确定生成奇数维度矩阵还是偶数维度矩阵。
- 根据权利要求15所述的固件升级方法,其特征在于,所述方法还包括使用乱码包、空包和重复的子升级包中的一个或多个填满矩阵。
- 根据权利要求14所述的固件升级方法,其特征在于,所述顺序标识指示矩阵中的子升级包的平移次数、子升级包的移出方向、子升级包在矩阵中旋转的顺逆时针中的一个或多个。
- 根据权利要求17所述的固件升级方法,其特征在于,所述方法还包括,根据子升级包在矩阵中的序号以及矩阵的维度,确定子升级包的平移方 式。
- 根据权利要求1所述的固件升级方法,其特征在于,所述方法还包括,将目标固件升级包的包头进行存储和/或发送至目标终端设备,其中,所述目标固件升级包的包头包括目标终端设备的识别码、子升级包的数量和编号、固件升级密钥和/或完整性验证信息中的一个或多个。
- 一种应用于终端设备的固件升级方法,其特征在于,包括:获取固件升级指令;发送目标终端设备的识别码;从服务器下载子升级包;基于目标终端设备的识别码,将子升级包拼接成目标固件升级包。
- 根据权利要求20所述的固件升级方法,其特征在于,所述方法还包括,从服务器下载固件升级包的包头,以及通过安全引导程序进行:响应于全部子升级包和固件升级包包头下载到终端设备,基于终端设备的识别码中的顺序标识,确定是否变换下载的子升级包的顺序;对下载的子升级包进行安全性或完整性校验;响应于下载的子升级包通过安全性或完整性校验,运行通过子升级包拼接的目标固件。
- 根据权利要求21所述的固件升级方法,其特征在于,获取所述固件升级指令包括通过脱离广域网的方式获取固件升级指令以及安全验证密钥;其中,从服务器下载所述子升级包包括经由广域网获得固件升级包以及固件升级包安全密钥;对下载的子升级包进行安全性校验包括确定安全验证密钥与固件升级包安全密钥是否匹配。
- 一种固件升级设备,应用于服务器,其特征在于,包括:固件升级包获取装置,用于获取目标固件升级包;接收装置,用于接收目标终端设备的识别码;拆分装置,用于基于所述目标终端设备的识别码,将所述目标固件升级包拆分成子升级包;存储/发送装置,用于将所述子升级包进行存储和/或将所述子升级包发送至目标终端设备。
- 一种固件升级设备,应用于终端设备,其特征在于,包括:固件升级指令获取装置,用于获取固件升级指令;接收装置,用于发送目标终端设备的识别码;下载/接收装置,用于从服务器下载/接收子升级包;拼接装置,用于基于所述目标终端设备的识别码,将所述子升级包拼接成目标固件升级包。
- 一种服务器,其特征在于,包括存储器和一个或多个处理器,所述存储器上存储有计算机程序,所述计算机程序被所述一个或多个处理器执行时实现如权利要求1至19中任一项所述的方法。
- 一种终端设备,其特征在于,包括存储器和一个或多个处理器,所述存储器上存储有计算机程序,所述计算机程序被所述一个或多个处理器执行时实现如权利要求20-22所述的方法。
- 一种用于安全引导的方法,用于终端设备,其特征在于,包括:响应于全部子升级包和固件升级包包头下载到终端设备,基于终端设备的识别码中的顺序标识,确定是否变换下载的子升级包的顺序;对下载的子升级包进行安全性或完整性校验;响应所述于下载的子升级包通过安全性或完整性校验,运行通过子升级包拼接的目标固件。
- 一种用于目标终端设备的安全验证方法,其特征在于,包括:通过脱离广域网的方式获取固件升级指令以及安全验证密钥;经由广域网获得固件升级包以及固件升级包安全密钥;确定所述安全验证密钥与所述固件升级包安全密钥是否匹配。
- 根据权利要求28所述的安全验证方法,其特征在于,经由广域网获得固件升级包包括经由广域网从服务器下载子升级包,其中,所述方法还包括:发送目标终端设备的识别码;基于所述目标终端设备的识别码,将所述子升级包拼接成目标固件升级包。
- 根据权利要求29所述的安全验证方法,其特征在于,所述方法还包括,从服务器下载固件升级包的包头,以及通过安全引导程序进行:响应于全部子升级包和固件升级包包头下载到目标终端设备,基于所述目标终端设备的识别码中的顺序标识,确定是否变换下载的子升级包的顺序;对下载的子升级包进行安全性或完整性校验;响应于下载的子升级包通过安全性或完整性校验,运行通过子升级包拼接的目标固件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211295975.2A CN117951706A (zh) | 2022-10-21 | 2022-10-21 | 一种固件升级方法、装置、服务器、终端设备及存储介质 |
CN2022112959752 | 2022-10-21 | ||
PCT/CN2023/085613 WO2024082560A1 (zh) | 2022-10-21 | 2023-03-31 | 固件升级方法、设备、服务器、终端设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118235126A true CN118235126A (zh) | 2024-06-21 |
Family
ID=90736776
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211295975.2A Pending CN117951706A (zh) | 2022-10-21 | 2022-10-21 | 一种固件升级方法、装置、服务器、终端设备及存储介质 |
CN202380008547.3A Pending CN118235126A (zh) | 2022-10-21 | 2023-03-31 | 固件升级方法、设备、服务器、终端设备及存储介质 |
Family Applications Before (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 (2) | 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 | 江南大学 | 一种物联网终端固件更新中数据保护方法及系统 |
CN112445507B (zh) * | 2019-09-05 | 2024-06-11 | 阿里巴巴集团控股有限公司 | 一种设备的升级方法和装置 |
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
- 2023-03-31 CN CN202380008547.3A patent/CN118235126A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN117951706A (zh) | 2024-04-30 |
WO2024082560A1 (zh) | 2024-04-25 |
WO2024082560A9 (zh) | 2024-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10055216B2 (en) | Minimizing image copying during partition updates | |
CN104346184A (zh) | 应用打包装置及方法 | |
CN110569035A (zh) | 软件开发项目的代码编译方法、装置、设备和存储介质 | |
US20170351723A1 (en) | Managing data format of data received from devices in an internet of things network | |
CN112887451B (zh) | 域名解析方法、装置及计算机设备 | |
CN110647332A (zh) | 基于容器云的软件部署方法和装置 | |
CN111683066A (zh) | 异构系统集成方法、装置、计算机设备和存储介质 | |
CN109814889B (zh) | 用于更新源代码库的方法和装置 | |
CN113342854A (zh) | 一种移动设备唯一id生成方法和系统 | |
CN104133699A (zh) | 设备系统软件升级方法与系统 | |
CN110716786B (zh) | 一种页面展示方法、系统及存储介质 | |
CN110851143A (zh) | 源码部署方法、装置、设备及存储介质 | |
CN107145342B (zh) | 应用的渠道信息的处理方法和装置 | |
CN111417927A (zh) | 资源权限处理方法、装置、存储介质及芯片 | |
CN118235126A (zh) | 固件升级方法、设备、服务器、终端设备及存储介质 | |
CN111610990B (zh) | 一种应用程序升级的方法、装置和相关系统 | |
CN105988785A (zh) | 一种rpc服务开发方法及装置 | |
KR20180107983A (ko) | 가상화 플랫폼 생성 및 실행 장치 및 그 방법 | |
CN109086059B (zh) | 代码加载更新方法、装置及服务器 | |
Vučnik et al. | Integrating research testbeds into social coding platforms | |
CN115190064A (zh) | 客户端动态路由的实现方法、装置、系统和存储介质 | |
CN113704120A (zh) | 数据传输方法、装置、设备及存储介质 | |
CN114237991A (zh) | 基于冷备模式的主备服务切换方法、装置、设备及介质 | |
CN114461964A (zh) | 一种网页跳转方法及系统 | |
CN113010377A (zh) | 一种作业的运行日志的采集方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |