CN114143197B - 物联网设备ota升级方法、装置、设备及可读存储介质 - Google Patents

物联网设备ota升级方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN114143197B
CN114143197B CN202111435607.9A CN202111435607A CN114143197B CN 114143197 B CN114143197 B CN 114143197B CN 202111435607 A CN202111435607 A CN 202111435607A CN 114143197 B CN114143197 B CN 114143197B
Authority
CN
China
Prior art keywords
hash value
firmware
application program
system partition
plaintext
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
Application number
CN202111435607.9A
Other languages
English (en)
Other versions
CN114143197A (zh
Inventor
彭修杰
杨超
董逢华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Tianyu Information Industry Co Ltd
Original Assignee
Wuhan Tianyu Information Industry Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Tianyu Information Industry Co Ltd filed Critical Wuhan Tianyu Information Industry Co Ltd
Priority to CN202111435607.9A priority Critical patent/CN114143197B/zh
Publication of CN114143197A publication Critical patent/CN114143197A/zh
Application granted granted Critical
Publication of CN114143197B publication Critical patent/CN114143197B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/082Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0869Network architectures or network communication protocols for network security for authentication of entities for achieving mutual authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Quality & Reliability (AREA)
  • Bioethics (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种物联网设备OTA升级方法、装置、设备及可读存储介质。该方法包括:设备进入bootloader阶段时,将系统分区中的应用程序固件进行备份,得到备份固件;判断系统分区中的应用程序固件是否正常启动,若系统分区中的应用程序固件正常启动,则在设备与外部设备之间进行双向认证;当设备与外部设备之间双向认证通过后,从所述外部设备中下载压缩包;通过所述备份固件和压缩包对系统分区中的应用程序固件进行更新,并对更新后的应用程序固件进行检测,基于检测结果确定系统分区中的应用程序固件是否升级成功。通过本发明,解决了OTA升级过程中无法保证数据的完整性和安全性的问题。

Description

物联网设备OTA升级方法、装置、设备及可读存储介质
技术领域
本发明涉及物联网领域,尤其涉及一种物联网设备OTA升级方法、装置、设备及可读存储介质。
背景技术
随着物联网的发展,物联网相关的技术逐渐成熟。物联网设备作为物联网末端节点,承担着万物互联的重要角色,设备在出厂后需要有相应的技术手段保证设备安全稳定的进行OTA(Over-the-AirTechnology,空中下载技术)升级,同时还要满足低流量和低宽带的需求。因此,在OTA升级过程中如何保证数据下载的完整性和安全性是亟待解决的问题。
发明内容
本发明的主要目的在于提供一种物联网设备OTA升级方法、装置、设备及可读存储介质,旨在解决OTA升级过程中无法保证数据的完整性和安全性的问题。
第一方面,本发明提供一种物联网设备OTA升级方法,所述物联网设备OTA升级方法包括:
设备进入bootloader阶段时,将系统分区中的应用程序固件进行备份,得到备份固件;
判断系统分区中的应用程序固件是否正常启动,若系统分区中的应用程序固件正常启动,则在设备与外部设备之间进行双向认证;
当设备与外部设备之间双向认证通过后,从所述外部设备中下载压缩包;
通过所述备份固件和压缩包对系统分区中的应用程序固件进行更新,并对更新后的应用程序固件进行检测,基于检测结果确定系统分区中的应用程序固件是否升级成功。
可选的,所述判断系统分区中的应用程序固件是否正常启动,包括:
检测系统分区中的应用程序固件是否完整;
若不完整,则通过备份固件对系统分区中的应用程序固件做回滚操作,重新检测系统分区中的应用程序固件是否完整;
若完整,则检测系统分区中的应用程序固件的异常启动次数是否达到阈值;
若达到阈值,则通过备份固件对系统分区中的应用程序固件做回滚操作,重新检测系统分区中的应用程序固件是否完整;
若未达到阈值,则判定系统分区中的应用程序固件正常启动并清除系统分区中的应用程序固件的异常启动次数。
可选的,所述设备与外部设备之间进行双向认证,包括:
从SE中获取设备的挑战码以及公钥信息,其中,挑战码为一段固定长度的随机数,公钥信息包括第一认证公钥和第一临时公钥;
计算随机数与第一临时公钥的哈希值,并对随机数与第一临时公钥的哈希值进行加密,得到第一哈希值密文;
将设备的随机数、公钥信息以及第一哈希值密文发送给外部设备;
外部设备接收到随机数、公钥信息以及第一哈希值密文后,计算随机数与第一临时公钥的哈希值,得到第二哈希值明文;
通过第一认证公钥对第一哈希值密文进行解密,得到第一哈希值明文;
判断第二哈希值明文与第一哈希值明文是否相同;
若第二哈希值明文与第一哈希值明文不同,则设备与外部设备之间的双向认证不通过;
若第二哈希值明文与第一哈希值明文相同,则外部设备对设备的认证通过;
外部设备对设备的认证通过后,计算随机数与外部设备的第二临时公钥的哈希值,并对随机数与外部设备的第二临时公钥的哈希值进行加密得到第三哈希值密文;
将第三哈希值密文、外部设备的第二认证公钥、第二临时公钥以及设备发送给外部设备的随机数发送给设备;
设备接收到外部设备发送的第三哈希值密文、外部设备的第二认证公钥、第二临时公钥以及随机数后,检测设备接收的随机数与设备发送给外部设备的随机数是否相同;
若设备接收的随机数与设备发送给外部设备的随机数不相同,则设备与外部设备之间的双向认证不通过;
若设备接收的随机数与设备发送给外部设备的随机数相同,则计算随机数与第二临时公钥的哈希值,得到第四哈希值明文;
通过第二认证公钥对第三哈希值密文进行解密,得到第三哈希值明文;
判断第四哈希值明文与第三哈希值明文是否相同;
若第四哈希值明文与第三哈希值明文不相同,则设备与外部设备之间的双向认证不通过;
若第四哈希值明文与第三哈希值明文相同,则设备对外部设备的认证通过。
可选的,所述通过所述备份固件和压缩包对系统分区中的应用程序固件进行更新,并对更新后的应用程序固件进行检测,基于检测结果确定系统分区中的应用程序固件是否升级成功,包括:
所述压缩包中包括目标版本固件的哈希值、压缩的差分固件包的第五哈希值以及压缩的差分固件包;
根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证,认证通过后,通过备份固件与压缩的差分固件包对系统分区中的应用程序固件进行更新;
判断更新后的应用程序固件的哈希值与目标版本固件的哈希值是否相同;
若判断结果为更新后的应用程序固件的哈希值与目标版本固件的哈希值相同,则确定系统分区中的应用程序固件升级成功;
若判断结果为更新后的应用程序固件的哈希值与目标版本固件的哈希值不相同,则确定系统分区中的应用程序固件升级不成功,则通过备份固件对更新后的应用程序固件做回滚操作,执行判断系统分区中的应用程序固件是否正常启动,若系统分区中的应用程序固件正常启动,则在设备与外部设备之间进行双向认证的步骤。
可选的,所述根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证,包括:
将所述压缩包写入FLASH中,计算所述压缩的差分固件包的第六哈希值;
所述第五哈希值包括第五哈希值密文以及第五哈希值明文;
检测第五哈希值明文与第六哈希值是否相同;
若第五哈希值明文与第六哈希值不相同,则根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证的认证结果为不通过;
若第五哈希值明文与第六哈希值相同,则通过第一认证公钥对第五哈希值密文进行解密,得到解密后的第七哈希值;
检测第七哈希值与第六哈希值是否相同;
若第七哈希值与第六哈希值相同,则根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证的认证结果为认证通过;
若第七哈希值与第六哈希值不相同,则根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证的认证结果为不通过。
可选的,所述通过备份固件与压缩的差分固件包对系统分区中的应用程序固件进行更新,包括:
将压缩的差分固件包按页进行解压,得到差分部分和扩展部分;
对差分部分和备份固件做差分计算得到新的固件页;
将扩展部分以及新的固件页逐页写入系统分区中的应用程序固件所在的地址中,得到新的应用程序固件。
可选的,所述判断更新后的应用程序固件的哈希值与目标版本固件的哈希值是否相同,包括:
计算所述更新后的应用程序固件的哈希值;
所述目标版本固件的哈希值包括目标版本固件的哈希值明文以及目标版本固件的哈希值密文;
检测目标版本固件的哈希值明文与更新后的应用程序固件的哈希值是否相同;
若目标版本固件的哈希值明文与更新后的应用程序固件的哈希值不相同,则更新后的应用程序固件的哈希值与目标版本固件的哈希值不相同;
若目标版本固件的哈希值明文与更新后的应用程序固件的哈希值相同,则通过第一认证公钥对目标版本固件的哈希值密文进行解密,得到解密后的第八哈希值;
判断第八哈希值与更新后的应用程序固件的哈希值是否相同;
若第八哈希值与更新后的应用程序固件的哈希值相同,则更新后的应用程序固件的哈希值与目标版本固件的哈希值相同;
若第八哈希值与更新后的应用程序固件的哈希值不相同,则更新后的应用程序固件的哈希值与目标版本固件的哈希值不相同。
第二方面,本发明还提供一种物联网设备OTA升级装置,所述物联网设备OTA升级装置包括:
备份模块,用于设备进入bootloader阶段时,将系统分区中的应用程序固件进行备份,得到备份固件;
认证模块,用于判断系统分区中的应用程序固件是否正常启动,若系统分区中的应用程序固件正常启动,则在设备与外部设备之间进行双向认证;
下载模块,用于当设备与外部设备之间双向认证通过后,从所述外部设备中下载压缩包;
更新模块,用于通过所述备份固件和压缩包对系统分区中的应用程序固件进行更新,并对更新后的应用程序固件进行检测,基于检测结果确定系统分区中的应用程序固件是否升级成功。
第三方面,本发明还提供一种物联网设备OTA升级设备,所述物联网设备OTA升级设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的物联网设备OTA升级程序,其中所述物联网设备OTA升级程序被所述处理器执行时,实现如上所述的物联网设备OTA升级方法的步骤。
第四方面,本发明还提供一种可读存储介质,所述可读存储介质上存储有物联网设备OTA升级程序,其中所述物联网设备OTA升级程序被处理器执行时,实现如上所述的物联网设备OTA升级方法的步骤。
本发明中,设备进入bootloader阶段时,将系统分区中的应用程序固件进行备份,得到备份固件;判断系统分区中的应用程序固件是否正常启动,若系统分区中的应用程序固件正常启动,则在设备与外部设备之间进行双向认证;当设备与外部设备之间双向认证通过后,从所述外部设备中下载压缩包;根据所述备份固件和压缩包对系统分区中的应用程序固件进行更新,并对更新后的应用程序固件进行检测,基于检测结果确定系统分区中的应用程序固件是否升级成功。通过本发明,在OTA升级过程中,对系统分区中的应用程序固件进行备份,得到备份固件,在系统分区中的应用程序固件正常启动后,设备与外部设备之间进行双向认证,双向认证通过后,从外部设备中下载压缩包,通过压缩包和备份固件对系统分区中的应用程序固件进行更新,并对更新后的应用程序固件进行检测,若检测通过,则确定系统分区中的应用程序固件在升级过程中数据的下载是完整且没有被篡改的,若检测不通过,则对更新后的应用程序固件进行回滚操作后再重新进行OTA升级,从而解决了OTA升级过程中无法保证数据的完整性和安全性的问题。
附图说明
图1为本发明实施例方案中涉及的物联网设备OTA升级设备的硬件结构示意图;
图2为本发明物联网设备OTA升级方法第一实施例的流程示意图;
图3为本发明物联网设备OTA升级装置第一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
第一方面,本发明实施例提供一种物联网设备OTA升级设备,该物联网设备OTA升级设备可以是个人计算机(personal computer,PC)、笔记本电脑、服务器等具有数据处理功能的设备。
参照图1,图1为本发明实施例方案中涉及的物联网设备OTA升级设备的硬件结构示意图。本发明实施例中,物联网设备OTA升级设备可以包括处理器1001(例如中央处理器Central ProcessingUnit,CPU),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真WIreless-FIdelity,WI-FI接口);存储器1005可以是高速随机存取存储器(random access memory,RAM),也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。本领域技术人员可以理解,图1中示出的硬件结构并不构成对本发明的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
继续参照图1,图1中作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及物联网设备OTA升级程序。其中,处理器1001可以调用存储器1005中存储的物联网设备OTA升级程序,并执行本发明实施例提供的物联网设备OTA升级方法。
第二方面,本发明实施例提供了一种物联网设备OTA升级方法。
一实施例中,参照图2,图2为本发明物联网设备OTA升级方法第一实施例的流程示意图。如图2所示,物联网设备OTA升级方法包括:
步骤S10,设备进入bootloader阶段时,将系统分区中的应用程序固件进行备份,得到备份固件;
本实施例中,Boot Loader是在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。设备进入bootloader阶段时,启动并完成设备初始化,然后将系统分区中的应用程序固件进行备份,得到备份固件。
步骤S20,判断系统分区中的应用程序固件是否正常启动,若系统分区中的应用程序固件正常启动,则在设备与外部设备之间进行双向认证;
本实施例中,设备通过SE检测系统分区中的应用程序固件的完整性,再通过bootloader检测完整的系统分区中的应用程序固件异常启动的次数,若系统分区中的应用程序固件异常启动的次数未达到限制次数,则系统分区中的应用程序固件正常启动,然后设备与外部设备之间进行双向认证和会话密钥协商。其中,SE(security element)安全元件为安全模块,是一台微型计算机,通过安全芯片和芯片操作系统(COS)实现数据安全存储、加解密运算等功能。SE可封装成各种形式,常见的有智能卡和嵌入式安全模块(eSE)等。针对近场通信(NearField Communication,NFC)终端产品开发的嵌入式安全模块(eSE)产品,采用满足CCEAL5+安全等级要求的智能安全芯片,内置安全操作系统,满足终端的安全密钥存储、数据加密服务等需求。
进一步地,一实施例中,在步骤S10之后还包括检测备份固件与系统分区中的应用程序固件是否相同,若备份固件与系统分区中的应用程序固件相同,则执行步骤S20。若备份固件与系统分区中的应用程序固件不相同,则退出本次OTA升级。
本实施例中,获取系统分区中的应用程序固件的哈希值密文和系统分区中的应用程序固件的哈希值明文,运用哈希函数计算备份固件的哈希值。检测系统分区中的应用程序固件的哈希值明文与备份固件的哈希值是否相同。
若系统分区中的应用程序固件的哈希值明文与备份固件的哈希值不相同,则退出本次OTA升级,不再对系统分区中的应用程序固件的哈希值密文进行解密并检测解密后的系统分区中的应用程序固件的哈希值与备份固件的哈希值是否相同,提高了检测备份固件与系统分区中的应用程序固件是否相同的效率;
若系统分区中的应用程序固件的哈希值明文与备份固件的哈希值相同,则通过外部设备的认证公钥对系统分区中的应用程序固件的哈希值密文进行解密,得到解密后的系统分区中的应用程序固件的哈希值,因为系统分区中的应用程序固件的哈希值密文是不会被更改的,而系统分区中的应用程序固件的哈希值明文可能被篡改,所以需要进一步检测解密后的系统分区中的应用程序固件的哈希值与备份固件的哈希值是否相同。
若解密后的系统分区中的应用程序固件的哈希值与备份固件的哈希值相同,则确定备份固件与系统分区中的应用程序固件相同,则执行步骤S20。若解密后的系统分区中的应用程序固件的哈希值与备份固件的哈希值不相同,则确定备份固件与系统分区中的应用程序固件不相同,则退出本次OTA升级。
进一步地,一实施例中,所述判断系统分区中的应用程序固件是否正常启动,包括:
检测系统分区中的应用程序固件是否完整;
若不完整,则通过备份固件对系统分区中的应用程序固件做回滚操作,重新检测系统分区中的应用程序固件是否完整;
若完整,则检测系统分区中的应用程序固件的异常启动次数是否达到阈值;
若达到阈值,则通过备份固件对系统分区中的应用程序固件做回滚操作,重新检测系统分区中的应用程序固件是否完整;
若未达到阈值,则判定系统分区中的应用程序固件正常启动并清除系统分区中的应用程序固件的异常启动次数。
本实施例中,设备给SE发送指令检测系统分区中的应用程序固件是否完整。若SE检测到系统分区中的应用程序固件不完整,则通过备份固件对系统分区中的应用程序固件做回滚操作,然后重新检测系统分区中的应用程序固件是否完整。若SE检测到系统分区中的应用程序固件完整,则通过boot loader检测系统分区中的应用程序固件的异常启动次数是否达到阈值,若系统分区中的应用程序固件的异常启动次数达到阈值,则通过备份固件对系统分区中的应用程序进行回滚操作,然后重新检测系统分区中的应用程序固件是否完整。若系统分区中的应用程序固件的异常启动次数未达到阈值,则判定系统分区中的应用程序固件正常启动并清除系统分区中的应用程序固件的异常启动次数。其中,回滚(Rollback)指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为,回滚包括程序回滚和数据回滚等类型。
进一步地,一实施例中,所述设备与外部设备之间进行双向认证,包括:
步骤S201,从SE中获取设备的挑战码以及公钥信息,其中,挑战码为一段固定长度的随机数,公钥信息包括第一认证公钥和第一临时公钥;
步骤S202,计算随机数与第一临时公钥的哈希值,并对随机数与第一临时公钥的哈希值进行加密,得到第一哈希值密文;
步骤S203,将设备的随机数、公钥信息以及第一哈希值密文发送给外部设备;
步骤S204,外部设备接收到随机数、公钥信息以及第一哈希值密文后,计算随机数与第一临时公钥的哈希值,得到第二哈希值明文;
步骤S205,通过第一认证公钥对第一哈希值密文进行解密,得到第一哈希值明文;
步骤S206,判断第二哈希值明文与第一哈希值明文是否相同;
步骤S207,若第二哈希值明文与第一哈希值明文不同,则设备与外部设备之间的双向认证不通过;
步骤S208,若第二哈希值明文与第一哈希值明文相同,则外部设备对设备的认证通过;
步骤S209,外部设备对设备的认证通过后,计算随机数与外部设备的第二临时公钥的哈希值,并对随机数与外部设备的第二临时公钥的哈希值进行加密得到第三哈希值密文;
步骤S210,将第三哈希值密文、外部设备的第二认证公钥、第二临时公钥以及设备发送给外部设备的随机数发送给设备;
步骤S211,设备接收到外部设备发送的第三哈希值密文、外部设备的第二认证公钥、第二临时公钥以及随机数后,检测设备接收的随机数与设备发送给外部设备的随机数是否相同;
步骤S212,若设备接收的随机数与设备发送给外部设备的随机数不相同,则设备与外部设备之间的双向认证不通过;
步骤S213,若设备接收的随机数与设备发送给外部设备的随机数相同,则计算随机数与第二临时公钥的哈希值,得到第四哈希值明文;
步骤S214,通过第二认证公钥对第三哈希值密文进行解密,得到第三哈希值明文;
步骤S215,判断第四哈希值明文与第三哈希值明文是否相同;
步骤S216,若第四哈希值明文与第三哈希值明文不相同,则设备与外部设备之间的双向认证不通过;
步骤S217,若第四哈希值明文与第三哈希值明文相同,则设备对外部设备的认证通过。
本实施例中,通过步骤S201获取了设备的挑战码以及公钥信息。即系统分区中的应用程序固件正常启动后,设备向SE发送AT指令,获取设备的挑战码以及公钥信息。其中,挑战码为一段固定长度的随机数,公钥信息包括第一认证公钥和第一临时公钥,AT指令是应用于终端设备与PC应用之间的连接与通信的指令。
步骤S202运用哈希函数计算随机数与第一临时公钥的哈希值,并通过设备的第一认证私钥对随机数与第一临时公钥的哈希值进行加密,得到第一哈希值密文。
步骤S203中将设备的随机数、公钥信息以及第一哈希值密文发送给外部设备,以供外部设备根据设备的随机数、公钥信息以及第一哈希值密文对设备的合法性进行认证。
步骤S204至步骤S208实现了外部设备对设备的合法性认证。即外部设备接收到设备发送的随机数、公钥信息以及第一哈希值密文后,计算随机数与第一临时公钥的哈希值,得到第二哈希值明文。因为密文是不会被更改的,所以外部设备通过设备发送过来的第一认证公钥对第一哈希值密文进行解密,得到第一哈希值明文,再判断第二哈希值明文与第一哈希值明文是否相同。若第二哈希值明文与第一哈希值明文不同,则确定设备与外部设备之间的双向认证不通过,若第二哈希值明文与第一哈希值明文相同,则确定外部设备对设备的认证通过。
步骤S209中,外部设备对设备的认证通过后,计算随机数与外部设备的第二临时公钥的哈希值,并通过外部设备的第二认证私钥对随机数与外部设备的第二临时公钥的哈希值进行加密得到第三哈希值密文。
步骤S210中,将第三哈希值密文、外部设备的第二认证公钥、第二临时公钥以及设备发送给外部设备的随机数发送给设备,以供设备基于第三哈希值密文、外部设备的第二认证公钥、第二临时公钥以及设备发送给外部设备的随机数对外部设备的合法性进行认证。
步骤S211至步骤S217实现了设备对外部设备的合法性认证。即设备接收到外部设备发送的第三哈希值密文、外部设备的第二认证公钥、第二临时公钥以及随机数后,由于随机数可能是外部设备重复发送的或者由其他外部设备发送过来的,所以,先检测设备接收的随机数与设备发送给外部设备的随机数是否相同。若设备接收的随机数与设备发送给外部设备的随机数不相同,则设备与外部设备之间的双向认证不通过,则退出本次OTA升级。若设备接收的随机数与设备发送给外部设备的随机数相同,则进一步计算随机数与第二临时公钥的哈希值,得到第四哈希值明文,并通过第二认证公钥对第三哈希值密文进行解密,得到第三哈希值明文,判断第四哈希值明文与第三哈希值明文是否相同。若第四哈希值明文与第三哈希值明文不相同,则设备与外部设备之间的双向认证不通过,若第四哈希值明文与第三哈希值明文相同,则设备对外部设备的认证通过。
外部设备对设备的合法性认证通过且设备对外部设备的合法性认证也通过,则设备与外部设备之间的双向认证通过。
进一步地,外部设备对设备的合法性认证通过后,外部设备运用设备的第一临时公钥、外部设备的第二临时公钥以及临时私钥完成会话密钥协商,得到第一会话密钥。
设备对外部设备的合法性认证通过后,设备向SE发送AT指令,通过SE运用外部设备的第二临时公钥、设备的第一临时公钥以及临时私钥完成会话密钥协商,得到第二会话密钥。其中,第一会话密钥与第二会话密钥相同。进一步地,SE返回会话ID给设备,后续设备使用该会话ID对应的会话密钥对传输的数据进行加解密操作。通过会话协商,保障了密钥的生成、传输以及存储的安全性。
步骤S30,当设备与外部设备之间双向认证通过后,从所述外部设备中下载压缩包;
本实施例中,设备与外部设备之间的双向认证通过后,设备向外部设备发送下载压缩包的请求,然后从外部设备中下载压缩包并将下载的压缩包写入FLASH存储器中,以供设备固件版本升级使用。其中,设备与外部设备之间的双向认证,保证了数据下载的安全性。下载压缩包时,如果压缩包是未完成下载的压缩包,则使用断点续传的方式继续下载,从而节省下载应用程序固件的流量。客户端软件断点续传指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传下载未完成的部分,而没有必要从头开始上传下载。
步骤S40,通过所述备份固件和压缩包对系统分区中的应用程序固件进行更新,并对更新后的应用程序固件进行检测,基于检测结果确定系统分区中的应用程序固件是否升级成功。
本实施例中,压缩包中包括目标版本固件的哈希值、压缩的差分固件包的第一哈希值以及压缩的差分固件包。步骤S20中检测到系统分区中的应用程序固件与备份固件相同后,根据压缩的差分固件包的第一哈希值对压缩的差分固件包进行认证,认证通过后,通过备份固件和压缩的差分固件包对系统分区中的应用程序固件进行更新,并通过目标版本固件的哈希值对更新后的应用程序固件进行检测,基于检测结果确定系统分区中的应用程序固件是否升级成功。
本实施例中,设备进入bootloader阶段时,将系统分区中的应用程序固件进行备份,得到备份固件;判断系统分区中的应用程序固件是否正常启动,若系统分区中的应用程序固件正常启动,则在设备与外部设备之间进行双向认证;当设备与外部设备之间双向认证通过后,从所述外部设备中下载压缩包;根据所述备份固件和压缩包对系统分区中的应用程序固件进行更新,并对更新后的应用程序固件进行检测,基于检测结果确定系统分区中的应用程序固件是否升级成功。通过本实施例,在OTA升级过程中,对系统分区中的应用程序固件进行备份,得到备份固件,在系统分区中的应用程序固件正常启动后,设备与外部设备之间进行双向认证,双向认证通过后,从外部设备中下载压缩包,通过压缩包和备份固件对系统分区中的应用程序固件进行更新,并对更新后的应用程序固件进行检测,若检测通过,则确定系统分区中的应用程序固件在升级过程中数据的下载是完整且没有被篡改的,若检测不通过,则对更新后的应用程序固件进行回滚操作后再重新进行OTA升级,从而解决了OTA升级过程中无法保证数据的完整性和安全性的问题。
进一步地,一实施例中,步骤S40,包括:
所述压缩包中包括目标版本固件的哈希值、压缩的差分固件包的第五哈希值以及压缩的差分固件包;
根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证,认证通过后,通过备份固件与压缩的差分固件包对系统分区中的应用程序固件进行更新;
判断更新后的应用程序固件的哈希值与目标版本固件的哈希值是否相同;
若判断结果为更新后的应用程序固件的哈希值与目标版本固件的哈希值相同,则确定系统分区中的应用程序固件升级成功;
若判断结果为更新后的应用程序固件的哈希值与目标版本固件的哈希值不相同,则确定系统分区中的应用程序固件升级不成功,则通过备份固件对更新后的应用程序固件做回滚操作,执行判断系统分区中的应用程序固件是否正常启动,若系统分区中的应用程序固件正常启动,则在设备与外部设备之间进行双向认证的步骤。
本实施例中,步骤S30中下载的压缩包中包括目标版本固件的哈希值、压缩的差分固件包的第五哈希值以及压缩的差分固件包。
压缩的差分固件包的第五哈希值包括第五哈希值明文以及第五哈希值密文,根据第五哈希值明文以及第五哈希值密文对压缩的差分固件包进行认证,若对压缩的差分固件包的认证不通过,则表示下载的压缩包中的压缩的差分固件包是不完整的或被篡改的,则重新下载压缩包。若对压缩的差分固件包的认证通过,则表示下载的压缩包中的压缩的差分固件包是完整的且没有被篡改的,则通过备份固件与压缩的差分固件包对系统分区中的应用程序固件进行更新。
判断更新后的应用程序固件的哈希值与目标版本固件的哈希值是否相同,若判断结果为更新后的应用程序固件的哈希值与目标版本固件的哈希值相同,则表示更新后的应用程序固件是完整的且没有被篡改的,则确定系统分区中的应用程序固件升级成功。若判断结果为更新后的应用程序固件的哈希值与目标版本固件的哈希值不相同,则表示更新后的应用程序固件是不完整的或被篡改的,则确定系统分区中的应用程序固件升级不成功,并通过备份固件对更新后的应用程序固件做回滚操作,执行判断系统分区中的应用程序固件是否正常启动,若系统分区中的应用程序固件正常启动,则在设备与外部设备之间进行双向认证的步骤。从而保证了OTA升级过程中数据的完整性和安全性。
进一步地,一实施例中,所述根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证,包括:
将所述压缩包写入FLASH中,计算所述压缩的差分固件包的第六哈希值;
所述第五哈希值包括第五哈希值密文以及第五哈希值明文;
检测第五哈希值明文与第六哈希值是否相同;
若第五哈希值明文与第六哈希值不相同,则根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证的认证结果为不通过;
若第五哈希值明文与第六哈希值相同,则通过第一认证公钥对第五哈希值密文进行解密,得到解密后的第七哈希值;
检测第七哈希值与第六哈希值是否相同;
若第七哈希值与第六哈希值相同,则根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证的认证结果为认证通过;
若第七哈希值与第六哈希值不相同,则根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证的认证结果为不通过。
本实施例中,将步骤S30中下载的压缩包写入FLASH中,并将压缩包进行解压,得到压缩包中包括的目标版本固件的哈希值、压缩的差分固件包的第五哈希值以及压缩的差分固件包。通过哈希函数计算得到压缩的差分固件包的第六哈希值,检测第六哈希值与第五哈希值包括的第五哈希值明文是否相同,若第六哈希值与第五哈希值包括的第五哈希值明文不相同,则对压缩的差分固件包的认证不通过,则退出本次OTA升级,先检测第六哈希值与第五哈希值包括的第五哈希值明文是否相同,而不是先对第五哈希值包括的第五哈希值密文进行解密得到解密后的第七哈希值,再检测第七哈希值与第五哈希值明文是否相同,可以提高对压缩的差分固件包进行认证的效率。
进一步地,因为第五哈希值包括的第五哈希值密文是不会被更改的,而第五哈希值明文可能会被篡改,所以,当检测到第二哈希值与第五哈希值包括的第五哈希值明文相同后,再通过步骤S20中的第一认证公钥对第五哈希值包括的第五哈希值密文进行解密,得到解密后的第七哈希值,检测第七哈希值与第六哈希值是否相同,提高对压缩的差分固件包进行认证的准确性。若第七哈希值与第六哈希值相同,则确定对压缩的差分固件包的认证通过,若第七哈希值与第六哈希值不相同,则确定对压缩的差分固件包的认证不通过。
进一步地,一实施例中,所述通过备份固件与压缩的差分固件包对系统分区中的应用程序固件进行更新,包括:
将压缩的差分固件包按页进行解压,得到差分部分和扩展部分;
对差分部分和备份固件做差分计算得到新的固件页;
将扩展部分以及新的固件页逐页写入系统分区中的应用程序固件所在的地址中,得到新的应用程序固件。
本实施例中,对压缩的差分固件包的认证通过后,将压缩的差分固件包按页进行解压,得到目标版本固件的差分部分和扩展部分,对差分部分和备份固件做差分计算得到新的固件页。通过FLSAH的特性,将解压得到的每页扩展部分以及新的固件页逐页写入系统分区中的应用程序固件所在的地址中,写入完成后,即得到新的应用程序固件。其中,通过差分运算对备份固件和解压得到的每页差分部分进行对比,确定解压得到的每页差分部分与备份固件是否一致,如果该页差分部分与备份固件一致,则该页差分部分不需要写入,如果该页差分部分与备份固件不一致,则该页即为新的固件页,则将新的固件页逐页写入系统分区中的应用程序固件所在的地址中。
进一步地,得到新的应用程序固件后,清除固件升级相应标志,然后进入应用程序。若对系统分区中的应用程序固件的更新没有完成,则通过检测固件升级相应标志即可得知对系统分区中的应用程序固件的更新没有完成,则重新开始对系统分区中的应用程序固件进行更新,从而保证了对系统分区中的应用程序固件的更新过程的完整性。
进一步地,一实施例中,所述判断更新后的应用程序固件的哈希值与目标版本固件的哈希值是否相同,包括:
计算所述更新后的应用程序固件的哈希值;
所述目标版本固件的哈希值包括目标版本固件的哈希值明文以及目标版本固件的哈希值密文;
检测目标版本固件的哈希值明文与更新后的应用程序固件的哈希值是否相同;
若目标版本固件的哈希值明文与更新后的应用程序固件的哈希值不相同,则更新后的应用程序固件的哈希值与目标版本固件的哈希值不相同;
若目标版本固件的哈希值明文与更新后的应用程序固件的哈希值相同,则通过第一认证公钥对目标版本固件的哈希值密文进行解密,得到解密后的第八哈希值;
判断第八哈希值与更新后的应用程序固件的哈希值是否相同;
若第八哈希值与更新后的应用程序固件的哈希值相同,则更新后的应用程序固件的哈希值与目标版本固件的哈希值相同;
若第八哈希值与更新后的应用程序固件的哈希值不相同,则更新后的应用程序固件的哈希值与目标版本固件的哈希值不相同。
本实施例中,通过哈希函数计算得到更新后的应用程序固件的哈希值,检测更新后的应用程序固件的哈希值与目标版本固件的哈希值包括的目标版本固件的哈希值明文是否相同,若更新后的应用程序固件的哈希值与目标版本固件的哈希值包括的目标版本固件的哈希值明文不相同,则退出本次OTA升级,提高了判断更新后的应用程序固件的哈希值与目标版本固件的哈希值是否相同的效率。
若更新后的应用程序固件的哈希值与目标版本固件的哈希值包括的目标版本固件的哈希值明文相同,则通过步骤S20中的第一认证公钥对目标版本固件的哈希值包括的目标版本固件的哈希值密文进行解密,得到解密后的第八哈希值。因为目标版本固件的哈希值密文是不会被更改的,而目标版本固件的哈希值明文可能被篡改,所以需要进一步检测第八哈希值与更新后的应用程序固件的哈希值是否相同,提高对更新后的应用程序固件进行检测的准确性。若第八哈希值与更新后的应用程序固件的哈希值相同,则确定判断结果为更新后的应用程序固件的哈希值与目标版本固件的哈希值相同。若第八哈希值与更新后的应用程序固件的哈希值不相同,则确定判断结果为更新后的应用程序固件的哈希值与目标版本固件的哈希值不相同。
第三方面,本发明实施例还提供一种物联网设备OTA升级装置。
一实施例中,参照图3,图3为本发明物联网设备OTA升级装置第一实施例的功能模块示意图。如图3所示,物联网设备OTA升级装置包括:
备份模块10,用于设备进入bootloader阶段时,将系统分区中的应用程序固件进行备份,得到备份固件;
认证模块20,用于判断系统分区中的应用程序固件是否正常启动,若系统分区中的应用程序固件正常启动,则在设备与外部设备之间进行双向认证;
下载模块30,用于当设备与外部设备之间双向认证通过后,从所述外部设备中下载压缩包;
更新模块40,用于通过所述备份固件和压缩包对系统分区中的应用程序固件进行更新,并对更新后的应用程序固件进行检测,基于检测结果确定系统分区中的应用程序固件是否升级成功。
进一步地,一实施例中,认证模块20,用于:
检测系统分区中的应用程序固件是否完整;
若不完整,则通过备份固件对系统分区中的应用程序固件做回滚操作,重新检测系统分区中的应用程序固件是否完整;
若完整,则检测系统分区中的应用程序固件的异常启动次数是否达到阈值;
若达到阈值,则通过备份固件对系统分区中的应用程序固件做回滚操作,重新检测系统分区中的应用程序固件是否完整;
若未达到阈值,则判定系统分区中的应用程序固件正常启动并清除系统分区中的应用程序固件的异常启动次数。
进一步地,一实施例中,认证模块20,用于:
从SE中获取设备的挑战码以及公钥信息,其中,挑战码为一段固定长度的随机数,公钥信息包括第一认证公钥和第一临时公钥;
计算随机数与第一临时公钥的哈希值,并对随机数与第一临时公钥的哈希值进行加密,得到第一哈希值密文;
将设备的随机数、公钥信息以及第一哈希值密文发送给外部设备;
外部设备接收到随机数、公钥信息以及第一哈希值密文后,计算随机数与第一临时公钥的哈希值,得到第二哈希值明文;
通过第一认证公钥对第一哈希值密文进行解密,得到第一哈希值明文;
判断第二哈希值明文与第一哈希值明文是否相同;
若第二哈希值明文与第一哈希值明文不同,则设备与外部设备之间的双向认证不通过;
若第二哈希值明文与第一哈希值明文相同,则外部设备对设备的认证通过;
外部设备对设备的认证通过后,计算随机数与外部设备的第二临时公钥的哈希值,并对随机数与外部设备的第二临时公钥的哈希值进行加密得到第三哈希值密文;
将第三哈希值密文、外部设备的第二认证公钥、第二临时公钥以及设备发送给外部设备的随机数发送给设备;
设备接收到外部设备发送的第三哈希值密文、外部设备的第二认证公钥、第二临时公钥以及随机数后,检测设备接收的随机数与设备发送给外部设备的随机数是否相同;
若设备接收的随机数与设备发送给外部设备的随机数不相同,则设备与外部设备之间的双向认证不通过;
若设备接收的随机数与设备发送给外部设备的随机数相同,则计算随机数与第二临时公钥的哈希值,得到第四哈希值明文;
通过第二认证公钥对第三哈希值密文进行解密,得到第三哈希值明文;
判断第四哈希值明文与第三哈希值明文是否相同;
若第四哈希值明文与第三哈希值明文不相同,则设备与外部设备之间的双向认证不通过;
若第四哈希值明文与第三哈希值明文相同,则设备对外部设备的认证通过。
进一步地,一实施例中,更新模块40,用于:
所述压缩包中包括目标版本固件的哈希值、压缩的差分固件包的第五哈希值以及压缩的差分固件包;
根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证,认证通过后,通过备份固件与压缩的差分固件包对系统分区中的应用程序固件进行更新;
判断更新后的应用程序固件的哈希值与目标版本固件的哈希值是否相同;
若判断结果为更新后的应用程序固件的哈希值与目标版本固件的哈希值相同,则确定系统分区中的应用程序固件升级成功;
若判断结果为更新后的应用程序固件的哈希值与目标版本固件的哈希值不相同,则确定系统分区中的应用程序固件升级不成功,则通过备份固件对更新后的应用程序固件做回滚操作,执行判断系统分区中的应用程序固件是否正常启动,若系统分区中的应用程序固件正常启动,则在设备与外部设备之间进行双向认证的步骤。
进一步地,一实施例中,更新模块40,用于:
将所述压缩包写入FLASH中,计算所述压缩的差分固件包的第六哈希值;
所述第五哈希值包括第五哈希值密文以及第五哈希值明文;
检测第五哈希值明文与第六哈希值是否相同;
若第五哈希值明文与第六哈希值不相同,则根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证的认证结果为不通过;
若第五哈希值明文与第六哈希值相同,则通过第一认证公钥对第五哈希值密文进行解密,得到解密后的第七哈希值;
检测第七哈希值与第六哈希值是否相同;
若第七哈希值与第六哈希值相同,则根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证的认证结果为认证通过;
若第七哈希值与第六哈希值不相同,则根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证的认证结果为不通过。
进一步地,一实施例中,更新模块40,用于:
将压缩的差分固件包按页进行解压,得到差分部分和扩展部分;
对差分部分和备份固件做差分计算得到新的固件页;
将扩展部分以及新的固件页逐页写入系统分区中的应用程序固件所在的地址中,得到新的应用程序固件。
进一步地,一实施例中,更新模块40,用于:
计算所述更新后的应用程序固件的哈希值;
所述目标版本固件的哈希值包括目标版本固件的哈希值明文以及目标版本固件的哈希值密文;
检测目标版本固件的哈希值明文与更新后的应用程序固件的哈希值是否相同;
若目标版本固件的哈希值明文与更新后的应用程序固件的哈希值不相同,则更新后的应用程序固件的哈希值与目标版本固件的哈希值不相同;
若目标版本固件的哈希值明文与更新后的应用程序固件的哈希值相同,则通过第一认证公钥对目标版本固件的哈希值密文进行解密,得到解密后的第八哈希值;
判断第八哈希值与更新后的应用程序固件的哈希值是否相同;
若第八哈希值与更新后的应用程序固件的哈希值相同,则更新后的应用程序固件的哈希值与目标版本固件的哈希值相同;
若第八哈希值与更新后的应用程序固件的哈希值不相同,则更新后的应用程序固件的哈希值与目标版本固件的哈希值不相同。
其中,上述物联网设备OTA升级装置中各个模块的功能实现与上述物联网设备OTA升级方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
第四方面,本发明实施例还提供一种可读存储介质。
本发明可读存储介质上存储有物联网设备OTA升级程序,其中所述物联网设备OTA升级程序被处理器执行时,实现如上述的物联网设备OTA升级方法的步骤。
其中,物联网设备OTA升级程序被执行时所实现的方法可参照本发明物联网设备OTA升级方法的各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (8)

1.一种物联网设备OTA升级方法,其特征在于,所述物联网设备OTA升级方法包括:
设备进入bootloader阶段时,将系统分区中的应用程序固件进行备份,得到备份固件;
判断系统分区中的应用程序固件是否正常启动,若系统分区中的应用程序固件正常启动,则在设备与外部设备之间进行双向认证;
当设备与外部设备之间双向认证通过后,从所述外部设备中下载压缩包;
通过所述备份固件和压缩包对系统分区中的应用程序固件进行更新,并对更新后的应用程序固件进行检测,基于检测结果确定系统分区中的应用程序固件是否升级成功;
所述判断系统分区中的应用程序固件是否正常启动,包括:
检测系统分区中的应用程序固件是否完整;
若不完整,则通过备份固件对系统分区中的应用程序固件做回滚操作,重新检测系统分区中的应用程序固件是否完整;
若完整,则检测系统分区中的应用程序固件的异常启动次数是否达到阈值;
若达到阈值,则通过备份固件对系统分区中的应用程序固件做回滚操作,重新检测系统分区中的应用程序固件是否完整;
若未达到阈值,则判定系统分区中的应用程序固件正常启动并清除系统分区中的应用程序固件的异常启动次数;
所述设备与外部设备之间进行双向认证,包括:
从SE中获取设备的挑战码以及公钥信息,其中,挑战码为一段固定长度的随机数,公钥信息包括第一认证公钥和第一临时公钥;
计算随机数与第一临时公钥的哈希值,并对随机数与第一临时公钥的哈希值进行加密,得到第一哈希值密文;
将设备的随机数、公钥信息以及第一哈希值密文发送给外部设备;
外部设备接收到随机数、公钥信息以及第一哈希值密文后,计算随机数与第一临时公钥的哈希值,得到第二哈希值明文;
通过第一认证公钥对第一哈希值密文进行解密,得到第一哈希值明文;
判断第二哈希值明文与第一哈希值明文是否相同;
若第二哈希值明文与第一哈希值明文不同,则设备与外部设备之间的双向认证不通过;
若第二哈希值明文与第一哈希值明文相同,则外部设备对设备的认证通过;
外部设备对设备的认证通过后,计算随机数与外部设备的第二临时公钥的哈希值,并对随机数与外部设备的第二临时公钥的哈希值进行加密得到第三哈希值密文;
将第三哈希值密文、外部设备的第二认证公钥、第二临时公钥以及设备发送给外部设备的随机数发送给设备;
设备接收到外部设备发送的第三哈希值密文、外部设备的第二认证公钥、第二临时公钥以及随机数后,检测设备接收的随机数与设备发送给外部设备的随机数是否相同;
若设备接收的随机数与设备发送给外部设备的随机数不相同,则设备与外部设备之间的双向认证不通过;
若设备接收的随机数与设备发送给外部设备的随机数相同,则计算随机数与第二临时公钥的哈希值,得到第四哈希值明文;
通过第二认证公钥对第三哈希值密文进行解密,得到第三哈希值明文;
判断第四哈希值明文与第三哈希值明文是否相同;
若第四哈希值明文与第三哈希值明文不相同,则设备与外部设备之间的双向认证不通过;
若第四哈希值明文与第三哈希值明文相同,则设备对外部设备的认证通过。
2.如权利要求1中所述的物联网设备OTA升级方法,其特征在于,所述通过所述备份固件和压缩包对系统分区中的应用程序固件进行更新,并对更新后的应用程序固件进行检测,基于检测结果确定系统分区中的应用程序固件是否升级成功,包括:
所述压缩包中包括目标版本固件的哈希值、压缩的差分固件包的第五哈希值以及压缩的差分固件包;
根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证,认证通过后,通过备份固件与压缩的差分固件包对系统分区中的应用程序固件进行更新;
判断更新后的应用程序固件的哈希值与目标版本固件的哈希值是否相同;
若判断结果为更新后的应用程序固件的哈希值与目标版本固件的哈希值相同,则确定系统分区中的应用程序固件升级成功;
若判断结果为更新后的应用程序固件的哈希值与目标版本固件的哈希值不相同,则确定系统分区中的应用程序固件升级不成功,则通过备份固件对更新后的应用程序固件做回滚操作,执行判断系统分区中的应用程序固件是否正常启动,若系统分区中的应用程序固件正常启动,则在设备与外部设备之间进行双向认证的步骤。
3.如权利要求2所述的物联网设备OTA升级方法,其特征在于,所述根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证,包括:
将所述压缩包写入FLASH中,计算所述压缩的差分固件包的第六哈希值;
所述第五哈希值包括第五哈希值密文以及第五哈希值明文;
检测第五哈希值明文与第六哈希值是否相同;
若第五哈希值明文与第六哈希值不相同,则根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证的认证结果为不通过;
若第五哈希值明文与第六哈希值相同,则通过第一认证公钥对第五哈希值密文进行解密,得到解密后的第七哈希值;
检测第七哈希值与第六哈希值是否相同;
若第七哈希值与第六哈希值相同,则根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证的认证结果为认证通过;
若第七哈希值与第六哈希值不相同,则根据压缩的差分固件包的第五哈希值对压缩的差分固件包进行认证的认证结果为不通过。
4.如权利要求2所述的物联网设备OTA升级方法,其特征在于,所述通过备份固件与压缩的差分固件包对系统分区中的应用程序固件进行更新,包括:
将压缩的差分固件包按页进行解压,得到差分部分和扩展部分;
对差分部分和备份固件做差分计算得到新的固件页;
将扩展部分以及新的固件页逐页写入系统分区中的应用程序固件所在的地址中,得到新的应用程序固件。
5.如权利要求2所述的物联网设备OTA升级方法,其特征在于,所述判断更新后的应用程序固件的哈希值与目标版本固件的哈希值是否相同,包括:
计算所述更新后的应用程序固件的哈希值;
所述目标版本固件的哈希值包括目标版本固件的哈希值明文以及目标版本固件的哈希值密文;
检测目标版本固件的哈希值明文与更新后的应用程序固件的哈希值是否相同;
若目标版本固件的哈希值明文与更新后的应用程序固件的哈希值不相同,则更新后的应用程序固件的哈希值与目标版本固件的哈希值不相同;
若目标版本固件的哈希值明文与更新后的应用程序固件的哈希值相同,则通过第一认证公钥对目标版本固件的哈希值密文进行解密,得到解密后的第八哈希值;
判断第八哈希值与更新后的应用程序固件的哈希值是否相同;
若第八哈希值与更新后的应用程序固件的哈希值相同,则更新后的应用程序固件的哈希值与目标版本固件的哈希值相同;
若第八哈希值与更新后的应用程序固件的哈希值不相同,则更新后的应用程序固件的哈希值与目标版本固件的哈希值不相同。
6.一种物联网设备OTA升级装置,其特征在于,所述物联网设备OTA升级装置包括:
备份模块,用于设备进入bootloader阶段时,将系统分区中的应用程序固件进行备份,得到备份固件;
认证模块,用于判断系统分区中的应用程序固件是否正常启动,若系统分区中的应用程序固件正常启动,则在设备与外部设备之间进行双向认证;
下载模块,用于当设备与外部设备之间双向认证通过后,从所述外部设备中下载压缩包;
更新模块,用于通过所述备份固件和压缩包对系统分区中的应用程序固件进行更新,并对更新后的应用程序固件进行检测,基于检测结果确定系统分区中的应用程序固件是否升级成功;
认证模块,用于:
检测系统分区中的应用程序固件是否完整;
若不完整,则通过备份固件对系统分区中的应用程序固件做回滚操作,重新检测系统分区中的应用程序固件是否完整;
若完整,则检测系统分区中的应用程序固件的异常启动次数是否达到阈值;
若达到阈值,则通过备份固件对系统分区中的应用程序固件做回滚操作,重新检测系统分区中的应用程序固件是否完整;
若未达到阈值,则判定系统分区中的应用程序固件正常启动并清除系统分区中的应用程序固件的异常启动次数;
认证模块,用于:
从SE中获取设备的挑战码以及公钥信息,其中,挑战码为一段固定长度的随机数,公钥信息包括第一认证公钥和第一临时公钥;
计算随机数与第一临时公钥的哈希值,并对随机数与第一临时公钥的哈希值进行加密,得到第一哈希值密文;
将设备的随机数、公钥信息以及第一哈希值密文发送给外部设备;
外部设备接收到随机数、公钥信息以及第一哈希值密文后,计算随机数与第一临时公钥的哈希值,得到第二哈希值明文;
通过第一认证公钥对第一哈希值密文进行解密,得到第一哈希值明文;
判断第二哈希值明文与第一哈希值明文是否相同;
若第二哈希值明文与第一哈希值明文不同,则设备与外部设备之间的双向认证不通过;
若第二哈希值明文与第一哈希值明文相同,则外部设备对设备的认证通过;
外部设备对设备的认证通过后,计算随机数与外部设备的第二临时公钥的哈希值,并对随机数与外部设备的第二临时公钥的哈希值进行加密得到第三哈希值密文;
将第三哈希值密文、外部设备的第二认证公钥、第二临时公钥以及设备发送给外部设备的随机数发送给设备;
设备接收到外部设备发送的第三哈希值密文、外部设备的第二认证公钥、第二临时公钥以及随机数后,检测设备接收的随机数与设备发送给外部设备的随机数是否相同;
若设备接收的随机数与设备发送给外部设备的随机数不相同,则设备与外部设备之间的双向认证不通过;
若设备接收的随机数与设备发送给外部设备的随机数相同,则计算随机数与第二临时公钥的哈希值,得到第四哈希值明文;
通过第二认证公钥对第三哈希值密文进行解密,得到第三哈希值明文;
判断第四哈希值明文与第三哈希值明文是否相同;
若第四哈希值明文与第三哈希值明文不相同,则设备与外部设备之间的双向认证不通过;
若第四哈希值明文与第三哈希值明文相同,则设备对外部设备的认证通过。
7.一种物联网设备OTA升级设备,其特征在于,所述物联网设备OTA升级设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的物联网设备OTA升级程序,其中所述物联网设备OTA升级程序被所述处理器执行时,实现如权利要求1至5中任一项所述的物联网设备OTA升级方法的步骤。
8.一种可读存储介质,其特征在于,所述可读存储介质上存储有物联网设备OTA升级程序,其中所述物联网设备OTA升级程序被处理器执行时,实现如权利要求1至5中任一项所述的物联网设备OTA升级方法的步骤。
CN202111435607.9A 2021-11-29 2021-11-29 物联网设备ota升级方法、装置、设备及可读存储介质 Active CN114143197B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111435607.9A CN114143197B (zh) 2021-11-29 2021-11-29 物联网设备ota升级方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111435607.9A CN114143197B (zh) 2021-11-29 2021-11-29 物联网设备ota升级方法、装置、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN114143197A CN114143197A (zh) 2022-03-04
CN114143197B true CN114143197B (zh) 2024-04-02

Family

ID=80389185

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111435607.9A Active CN114143197B (zh) 2021-11-29 2021-11-29 物联网设备ota升级方法、装置、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN114143197B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117441159A (zh) * 2022-05-18 2024-01-23 北京小米移动软件有限公司 基于ota的系统更新方法、装置、电子设备及存储介质

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009117896A1 (zh) * 2008-03-25 2009-10-01 中兴通讯股份有限公司 基于ota的固件下载方法、预处理方法、完整性验证方法
CN106233637A (zh) * 2014-04-21 2016-12-14 Arm 有限公司 用于短距离无线数据传输的系统和方法
CN107888577A (zh) * 2017-10-31 2018-04-06 美的智慧家居科技有限公司 门锁固件的升级方法、门锁、服务器、系统及存储介质
CN107908496A (zh) * 2017-11-21 2018-04-13 东峡大通(北京)管理咨询有限公司 用于在mcu固件出错后自动恢复的方法和mcu
CN110333891A (zh) * 2019-07-08 2019-10-15 四川爱联科技有限公司 基于物联网的增强型ota升级的方法
EP3584703A1 (en) * 2018-06-20 2019-12-25 Aptiv Technologies Limited Over-the-air (ota) mobility services platform
CN111131246A (zh) * 2019-12-24 2020-05-08 南京南瑞继保工程技术有限公司 一种适用于电力系统嵌入式设备的信息升级、备份方法和系统
CN111240709A (zh) * 2019-12-26 2020-06-05 深圳市优博讯科技股份有限公司 一种基于android系统的POS设备的固件升级方法及系统
CN111279310A (zh) * 2017-10-24 2020-06-12 华为国际有限公司 一种车载设备升级方法及相关设备
CN111562935A (zh) * 2020-07-14 2020-08-21 江苏海平面数据科技有限公司 一种ota安全升级系统及其升级方法
CN111625249A (zh) * 2019-02-28 2020-09-04 阿里巴巴集团控股有限公司 用于物联网设备的自动升级和回滚方法和装置
CN112118137A (zh) * 2020-09-17 2020-12-22 上海闻泰电子科技有限公司 固件升级方法、装置、计算机设备和可读存储介质
CN112187544A (zh) * 2020-09-30 2021-01-05 深圳忆联信息系统有限公司 固件升级方法、装置、计算机设备及存储介质
CN112433739A (zh) * 2020-11-11 2021-03-02 广州鲁邦通物联网科技有限公司 一种固件升级方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631239B2 (en) * 2012-01-12 2014-01-14 Facebook, Inc. Multiple system images for over-the-air updates

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009117896A1 (zh) * 2008-03-25 2009-10-01 中兴通讯股份有限公司 基于ota的固件下载方法、预处理方法、完整性验证方法
CN106233637A (zh) * 2014-04-21 2016-12-14 Arm 有限公司 用于短距离无线数据传输的系统和方法
CN111279310A (zh) * 2017-10-24 2020-06-12 华为国际有限公司 一种车载设备升级方法及相关设备
CN107888577A (zh) * 2017-10-31 2018-04-06 美的智慧家居科技有限公司 门锁固件的升级方法、门锁、服务器、系统及存储介质
CN107908496A (zh) * 2017-11-21 2018-04-13 东峡大通(北京)管理咨询有限公司 用于在mcu固件出错后自动恢复的方法和mcu
EP3584703A1 (en) * 2018-06-20 2019-12-25 Aptiv Technologies Limited Over-the-air (ota) mobility services platform
CN111625249A (zh) * 2019-02-28 2020-09-04 阿里巴巴集团控股有限公司 用于物联网设备的自动升级和回滚方法和装置
CN110333891A (zh) * 2019-07-08 2019-10-15 四川爱联科技有限公司 基于物联网的增强型ota升级的方法
CN111131246A (zh) * 2019-12-24 2020-05-08 南京南瑞继保工程技术有限公司 一种适用于电力系统嵌入式设备的信息升级、备份方法和系统
CN111240709A (zh) * 2019-12-26 2020-06-05 深圳市优博讯科技股份有限公司 一种基于android系统的POS设备的固件升级方法及系统
CN111562935A (zh) * 2020-07-14 2020-08-21 江苏海平面数据科技有限公司 一种ota安全升级系统及其升级方法
CN112118137A (zh) * 2020-09-17 2020-12-22 上海闻泰电子科技有限公司 固件升级方法、装置、计算机设备和可读存储介质
CN112187544A (zh) * 2020-09-30 2021-01-05 深圳忆联信息系统有限公司 固件升级方法、装置、计算机设备及存储介质
CN112433739A (zh) * 2020-11-11 2021-03-02 广州鲁邦通物联网科技有限公司 一种固件升级方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Byung-Chul Choi ; Seoung-Hyeon Lee ; Jung-Chan Na ; Jong-Hyouk Lee.Secure firmware validation and update for consumer devices in home networking. IEEE Transactions on Consumer Electronics.2016,全文. *
基于Android平台OTA差分升级系统设计与实现;施超;鲍可进;;信息技术(第10期);全文 *
基于TFTP与AES的嵌入式设备远程固件升级;方兵兵;闻路红;;数据通信(第02期);全文 *
车载通信终端OTA升级方案;王兰;郝成龙;许茜;;汽车实用技术(第06期);全文 *

Also Published As

Publication number Publication date
CN114143197A (zh) 2022-03-04

Similar Documents

Publication Publication Date Title
US10931451B2 (en) Securely recovering a computing device
US8254568B2 (en) Secure booting a computing device
US10474823B2 (en) Controlled secure code authentication
JP5576983B2 (ja) 非ローカル記憶装置からのサブシステムのセキュアなブート及び構成
US8291480B2 (en) Trusting an unverified code image in a computing device
KR102444625B1 (ko) 참조 플랫폼 매니페스트 및 데이터 씰링에 따른 보안 os 부팅 기법
US20120278597A1 (en) Compatible trust in a computing device
CN111666564B (zh) 应用程序安全启动方法、装置、计算机设备和存储介质
CN109145628B (zh) 一种基于可信执行环境的数据采集方法及系统
WO2022160697A1 (zh) 授权认证、软件开发工具包生成方法、装置及电子设备
CN107038353B (zh) 软件程序的校验保护方法及系统
CN111177709A (zh) 一种终端可信组件的执行方法、装置及计算机设备
CN114143197B (zh) 物联网设备ota升级方法、装置、设备及可读存储介质
KR20160006925A (ko) 앱 무결성 검증 장치 및 그 방법
CN114880011A (zh) Ota升级方法、装置、电子设备及可读存储介质
CN117041048A (zh) 车辆系统升级方法、ota升级文件云端处理方法及电子设备
CN111400771A (zh) 目标分区的校验方法及装置、存储介质、计算机设备
EP4044500B1 (en) Electronic device for ensuring integrity of electronic device intrinsic information, and operating method therefor
CN114816495A (zh) Ota升级方法、装置、电子设备及可读存储介质
CN111061495A (zh) 应用的安装方法、终端设备及存储介质
CN112968889B (zh) 主机权限管理方法、终端、设备及计算机可读存储介质
CN112688902B (zh) 防盗链方法、装置以及计算机设备
US8607343B2 (en) Ticket-based personalization
KR101485468B1 (ko) 휴대 장치의 해킹 방지를 위한 부팅 장치 및 방법
CN111695111A (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