CN113849210A - 一种基于tee的固件升级方法及装置 - Google Patents
一种基于tee的固件升级方法及装置 Download PDFInfo
- Publication number
- CN113849210A CN113849210A CN202111130174.6A CN202111130174A CN113849210A CN 113849210 A CN113849210 A CN 113849210A CN 202111130174 A CN202111130174 A CN 202111130174A CN 113849210 A CN113849210 A CN 113849210A
- Authority
- CN
- China
- Prior art keywords
- firmware
- tee
- upgrade package
- server
- firmware upgrade
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种基于TEE的固件升级方法及装置,该方法包括:设备端接收服务端发送的加密后的固件升级包,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得;将所述加密后的固件升级包发送至TEE,以由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密;基于解密后的固件升级包进行固件升级。通过以上技术方案,一方面,由于密钥协商的过程在TEE中运行并保存,保证了外界对密钥的生成过程不可探知、不可预测;另一方面,由于对加密后的升级包的解密操作在TEE中进行,保证了外界无法干预和篡改,从而提高了固件升级过程中的安全性。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种基于TEE的固件升级方法及装置。
背景技术
固件(Firmware),是指设备内部保存的用于支持设备正常运行的程序,一般存储于设备的可擦除只读存储器或FLASH芯片中。例如,手环、数码相机、U盘等都需要得到固件的支持才可以正常使用。也就是说,固件就是最基础的、最底层的、让设备得以运行的程序代码。
固件升级,是指用新的固件代替原有的固件的过程。早期固件由于代码在生产过程中固化在芯片上,只能采用更换芯片的方式进行升级,而随着技术的不断发展,升级固件以适应不断更新的硬件环境成了用户们的迫切要求。
发明内容
有鉴于此,为解决固件升级中存在的安全问题,本申请提供一种基于TEE的固件升级方法及装置。
具体地,本申请是通过如下技术方案实现的:
第一方面,本申请提出一种基于TEE的固件升级方法,应用于设备端,所述设备端的CPU搭载了TEE可信执行环境,所述设备端与服务端在所述TEE可信执行环境中通过密钥协商机制协商出对称密钥;所述方法包括:
接收服务端发送的加密后的固件升级包,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得;
将所述加密后的固件升级包发送至TEE,以由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密;
基于解密后的固件升级包进行固件升级。
第二方面,本申请提出还一种基于TEE的固件升级方法,应用于服务端,该方法包括:
获取与设备端在TEE可信执行环境中通过密钥协商机制协商出对称密钥;其中,所述TEE由所述设备端的CPU搭载;
将加密后的固件升级包发送至所述设备端,以使所述设备端将所述加密后的固件升级包送入至TEE,由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密,并基于解密后的固件升级包进行固件升级;其中,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得。
第三方面,本申请还提出一种基于TEE的固件升级装置,所述设备端的CPU搭载了TEE可信执行环境,所述设备端与服务端在所述TEE可信执行环境中通过密钥协商机制协商出对称密钥;所述装置包括:
接收单元,接收服务端发送的加密后的固件升级包,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得;
解密单元,将所述加密后的固件升级包发送至TEE,以由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密;
升级单元,基于解密后的固件升级包进行固件升级。
第四方面,本申请还提出一种基于TEE的固件升级装置,应用于服务端,该装置包括:
协商单元,获取与设备端在TEE可信执行环境中通过密钥协商机制协商出对称密钥;其中,所述TEE由所述设备端的CPU搭载;
发送单元,将加密后的固件升级包发送至所述设备端,以使所述设备端将所述加密后的固件升级包送入至TEE,由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密,并基于解密后的固件升级包进行固件升级;其中,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得。
本申请的实施例提供的技术方案可以包括以下有益效果:
一方面,由于密钥协商的过程在TEE中运行并保存,保证了外界对密钥的生成过程不可探知、不可预测;另一方面,由于对加密后的升级包的解密操作在TEE中进行,保证了外界无法干预和篡改,从而提高了固件升级过程中的安全性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
图1是本申请一示例性实施例示出的一种基于TEE的固件升级的***架构示意图;
图2是本申请一示例性实施例示出的一种基于TEE的固件升级方法的流程图;
图3是本申请一示例性实施例示出的另一种基于TEE的固件升级方法的流程图;
图4是本申请一示例性实施例示出的一种基于TEE的固件升级方法的流程示意图;
图5是本申请一示例性实施例示出的另一种基于TEE的固件升级方法的流程示意图;
图6是本申请一示例性实施例示出的一种的基于TEE的固件升级装置所在电子设备的硬件结构图;
图7是本申请一示例性实施例示出的一种基于TEE的固件升级装置的框图;
图8是本申请一示例性实施例示出的另一种基于TEE的固件升级装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施方式中并不一定按照本申请书示出和描述的顺序来执行相应方法的步骤。在一些其他实施方式中,其方法所包括的步骤可以比本申请所描述的更多或更少。此外,本申请中所描述的单个步骤,在其他实施方式中可能被分解为多个步骤进行描述;而本申请中所描述的多个步骤,在其他实施方式中也可能被合并为单个步骤进行描述。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
一般来说,通常在以下几种情况时需要进行固件升级:
1、在产品发布之后,生产厂家对固件进行了优化,使提高了产品的性能;例如,通过固件升级提升手环的续航能力;
2、产品发布之后,随着周围所使用的软件、硬件环境的改变,旧的产品对于新的软件、硬件出现了不兼容的现象,需要通过固件升级增强产品的兼容性;例如,通过对台式机主板的BIOS进行固件升级以兼容新的显卡;
3、在产品原有的硬件基础上,厂家开发出了新的功能,通过固件升级可以使产品支持新的功能;例如,通过固件升级使显示器支持黑白屏阅读的功能;
4、对于产品出现的缺陷、漏洞或错误进行修正;例如,通过固件升级修复蓝牙游戏手柄使用时突然断开连接的bug。
可见,固件升级是产品的使用和维护过程中必不可少的环节,通过固件升级还可以极大的提高用户体验,因此,确保固件升级过程的安全性至关重要。
目前,固件升级的方案主要分为离线和在线升级的方式,离线升级是指将固件重新刷入设备的存储介质中,在线升级是指通过网络将固件升级包推送到设备端,然后将固件写入到存储介质中。
具体的,在线升级通常包括以下步骤:
设备响应于固件升级指令,通过网络接收服务端发送的固件升级包;
设备对接收到的固件升级包进行完整性校验;
设备在验证通过之后,将固件升级包写入到存储介质中;
向服务端返回固件升级成功的指令。
然而,虽然在线升级可以通过网络实现对产品固件的及时更新,但在上述过程中,可能会面临多种安全问题。
举例来说,固件升级包在进行网络传输时,固件升级包可能被劫持,导致固件被非法使用;或者,固件版版本信息可能被纂改,导致升级失败;又或者,固件内容的安全验证结果可能被伪造,进而导致固件在进行升级之后被劫持。
有鉴于此,本申请提出一种基于设备端搭载的TEE可信执行环境生成的密钥对固件升级包进行加密,并在TEE可信执行环境中进行解密的技术方案。
在实现时,所述设备端的CPU搭载了TEE可信执行环境,所述设备端与服务端在所述TEE可信执行环境中通过密钥协商机制协商出对称密钥;
首先,设备端接收服务端发送的加密后的固件升级包,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得。
例如,服务端和设备端在固件升级之前使用密钥协商机制完成对称密钥的协商,密钥协商过程以及相关的密钥因子都在TEE中进行并保存。
其次,设备端将所述加密后的固件升级包发送至TEE,以由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密。
例如,设备端在接收到基于上述协商出的对称密钥加密后的固件升级包之后,由设备端搭载的TEE对该加密后的固件升级包进行解密,保证外界无法干预或篡改,确保升级包的安全性。
最后,设备端基于解密后的固件升级包进行固件升级。
在以上技术方案中,一方面,由于密钥协商的过程在TEE中运行并保存,保证了外界对密钥的生成过程不可探知、不可预测;另一方面,由于对加密后的升级包的解密操作在TEE中进行,保证了外界无法干预和篡改,从而提高了固件升级过程中的安全性。
接下来对本申请实施例进行详细说明。
请参见图1,图1是本申请一示例性实施例示出的一种基于TEE的固件升级的***架构示意图,包括:服务端10、设备端11,其中设备端的CPU搭载了TEE可执行环境。
在图1中,首先,由服务端10将加密后的固件升级包推送至设备端11,再由设备端搭载的TEE可执行环境对该加密后的固件升级包进行解密,最后由设备端基于解密后的固件升级包进行固件升级,即主要包括推送、解密、更新三个步骤。
在一个例子中,服务端10可以根据数据库12中保存的设备端11的硬件信息,确定针对设备端11定制的固件升级包,实现个性化定制升级。
其中,TEE种保存了用于对固件升级包进行加密和解密的对称密钥,该对称密钥由设备端与服务端在TEE可信执行环境中通过密钥协商机制协商确定。
TEE(Trusted Execution Environment)是基于CPU硬件的安全扩展,是与外部完全隔离的可信执行环境。TEE最早是由Global Platform提出的概念,用于解决移动设备上资源的安全隔离,平行于操作***为应用程序提供可信安全的执行环境。TEE可以在硬件中起到黑箱的作用,在TEE中执行的代码和数据操作***层都无法偷窥,只有代码中预先定义的接口才能对其进行操作。
上述设备端可以是具备联网功能的,搭载了TEE可信执行环境的设备,具体是何种设备,本申请不做限定。
值得说明的是,上述密钥协商机制可以包括以下步骤:
首先,设备端、服务端各自基于特定自有算法生成用于协商的公私钥对,并将持有的公钥发送给对方;
然后,设备端使用用于协商的服务端公钥,对设备端生成的随机数A进行加密,并发送至服务端;
服务端基于持有的与用于协商的服务端公钥对应的服务端私钥对随机数进行解密,获取并存储随机数A;
接着,服务端使用用于协商的设备端公钥,对服务端生成的随机数B进行加密,并发送至设备端;
设备端基于持有的与用于协商的设备端公钥对应的设备端私钥对随机数进行解密,获取并存储随机数B;
再然后,设备端使用用于协商的服务端公钥,对设备端生成的随机数C进行加密,并发送至服务端;
服务端基于持有的与用于协商的服务端公钥对应的服务端私钥对随机数进行解密,获取并存储随机数C;
至此,设备端与服务端都持有随机数A、B和C,可以基于双方约定的相同的加密算法,将随机数A、B和C作为生成对称密钥的因子,生成用于对固件升级包进行加密和解密的对称密钥。
请参见图2,图2是本申请一示例性实施例示出的一种基于TEE的固件升级方法的流程图,所述方法应用于设备端,如图2所示,包括以下步骤:
步骤201:接收服务端发送的加密后的固件升级包,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得;
步骤202:将所述加密后的固件升级包发送至TEE,以由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密;
步骤203:基于解密后的固件升级包进行固件升级。
其中,所述设备端的CPU搭载了TEE可信执行环境,所述设备端与服务端在所述TEE可信执行环境中通过密钥协商机制协商出对称密钥。
请参见图3,图3是本申请一示例性实施例示出的另一种基于TEE的固件升级方法的流程图,所述方法应用于服务端,如图3所示,包括以下步骤:
步骤301:获取与设备端在TEE可信执行环境中通过密钥协商机制协商出对称密钥;其中,所述TEE由所述设备端的CPU搭载;
步骤302:将加密后的固件升级包发送至所述设备端,以使所述设备端将所述加密后的固件升级包送入至TEE,由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密,并基于解密后的固件升级包进行固件升级;其中,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得。
结合上述图1中提供的一种基于TEE的固件升级的***架构示意图,和图2、3提供的基于TEE的固件升级方法的流程图,请参见图4,图4是本申请一示例性实施例示出的一种基于TEE的固件升级方法的流程示意图,该方法可应用于上述图1中所述的基于TEE的固件升级的***架构中。
其中,服务端10可以支持并执行图4中所示的方法流程步骤S401-S406,设备端11可以用于支持并执行图4中所示的方法流程步骤S404-S406。下面将结合附图4从服务端10、设备端11两端进行描述,该方法可以包括以下步骤S401-S406。
步骤S401:服务端获取与设备端在TEE可执行环境中通过密钥协商机制协商出对称密钥。
其中,所述TEE由所述设备端的CPU搭载,所述设备端与服务端在所述TEE可信执行环境中通过密钥协商机制协商出对称密钥。
具体的,服务端与设备端之间采用密钥协商机制完成对称密钥的生成,由于对称密钥在TEE中生成,保证了对称密钥生成的过程是不为外界所探知或预测的。
另外,上述对称密钥协商过程、生成密钥的算法,以及密钥生成算法的输入因子等都在TEE中运行并保存,外界不可知。不可见。
例如,响应于服务端的密钥协商请求,TEE可以通过获得不重复的随机数作为上述密钥生成算法的输入因子,并在TEE中调用密钥生成算法生成对称密钥。
值得说明的是,在进行上述固件升级之前,可以先确定固件是否需要升级。例如,可以由用户在设备端发起固件更新请求,由服务端检查是否有针对该设备端的固件更新;又如,可以由服务端向设备端推送固件升级提示,以由用户选择是否对固件进行升级。本申请对此不做限定。
步骤S402:服务端基于协商好的对称密钥对固件升级包进行加密。
在示出的一种实施方式中,服务端可以获取所述设备端的硬件信息,基于所述硬件信息确定所述设备端对应的固件升级包。
例如,服务端可以根据数据库中存储的该设备端的硬件信息,确定与该设备端对应的固件升级包;又如,服务端可以根据设备端发送的硬件信息,确定与该设备端对应的固件升级包。本申请对获取硬件信息的方式不做限定。
其中,上述硬件信息可以包括设备序列号、MAC地址或设备IMEI码等。
具体的,服务端可以基于上述协商出的对称密钥,对确定出的固件升级包进行加密,得到加密后的固件升级包,并将该加密后的固件升级包发送至所述设备端。
步骤S403:服务端将加密后的固件升级包发送至所述设备端。
值得说明的是,在将上述加密后的固件升级包发送至设备端之前,还可以对该加密后的固件升级包进行签名。
在示出的一种实施方式中,所述TEE中还保存了所述服务端发送的服务端公钥;基于服务端私钥对所述固件升级包的摘要进行签名,以使所述TEE基于所述服务端发送的服务端公钥对所述固件升级包的签名进行验签,并根据所述验签的结果与所述解密后的固件升级包的摘要是否一致确定所述固件升级包的完整性;其中,所述服务端发送的服务端公钥与所述服务端私钥是一组公私钥对。
具体的,服务端可以基于非对称加密算法生成用于对固件升级包的摘要进行签名和验签的公私钥对;其中,服务端私钥由服务端保留,用于对固件升级包的摘要进行签名;
进一步的,与服务端私钥对应的服务端公钥可以保存在TEE中,所述TEE基于所述服务端发送的服务端公钥对所述固件升级包的签名进行验签,并判断所述验签的结果与所述解密后的固件升级包的摘要是否一致,以确定所述固件升级包的完整性。
也就是说,服务端除了可以对固件升级包进行加密外,还可以通过对固件升级包的摘要进行签名,以由TEE在对加密后的固件升级包进行解密之后,再对固件升级包的签名进行验签,从而确定固件升级包的完整性。
步骤S404:设备端将加密后的固件升级包发送至TEE。
由于用于对加密后的固件升级包进行解密的对称密钥,保存在TEE中,外界无法获得,因此若想要对加密后的固件升级包进行解密,需要将该加密后的固件升级包送入至TEE中进行解密。
另外,TEE中还提供了可信存储空间,可以用于存储上述固件升级包。
步骤S405:设备端搭载的TEE基于协商出的对称密钥对加密后的固件升级包进行解密。
由于上述协商出的对称密钥保存在TEE中,且上述加密后的固件升级包的解密操作在TEE中进行,因此,整个解密过程外界无法干预或篡改,保证了解密后的固件升级包的安全性。
进一步的,在前述实施例中,还可以通过对固件升级包的摘要进行签名,以由TEE在对加密后的固件升级包进行解密之后,再对固件升级包的签名进行验签,从而确定固件升级包的完整性。
另外,由于固件通常是最基础的、最底层的、让设备得以运行的程序代码,因此,固件的有效性至关重要,如果固件出错,可能会导致设备无法使用。
在示出的一种实施方式中,还可以在所述TEE中模拟运行所述解密后的固件升级包,根据运行的结果判断所述固件升级包的有效性。
具体的,通过在TEE中模拟运行解密后的固件升级包,模拟将该固件升级包用于该固件后的运行结果,如果没有出现异常问题,说明该固件升级包可靠有效,如果出现异常问题,则进行警告。
步骤S406:设备端基于解密后的固件升级包进行固件升级。
值得说明的是,在基于解密后的固件升级包进行固件升级之前,还可以对设备端的原有固件内容进行备份,以便在更新过程出错时可以回退到之前的固件版本。
进一步的,在基于解密后的固件升级包更新固件之后,可以将备份的固件包删除,并更新固件版本信息。
其中,为了防止固件版本信息被篡改,发生针对固件的回滚攻击,可以将固件版本信息保存在TEE中。
在示出的一种实施方式中,所述TEE中还保存了所述固件的版本信息;
进一步的,获取所述解密后的固件升级包中携带的固件版本信息,将所述解密后的固件升级包中携带的固件版本信息与所述TEE中保存的所述固件的版本信息进行比较,判断所述解密后的固件升级包中携带的固件版本信息是否为最新的固件版本信息;
如果是,基于所述解密后的固件升级包进行固件升级,并基于所述解密后的固件升级包中携带的固件版本信息更新所述TEE中保存的所述固件的版本信息。
具体的,由于原有固件的版本信息保存在TEE,因此可以由TEE获取解密后的固件升级包中携带的固件版本信息,将解密后的固件升级包中携带的固件版本信息与TEE中保存的原有固件的版本信息进行比较,判断解密后的固件升级包中携带的固件版本信息是否为最新的固件版本信息;
举例来说,假设原有的固件版本信息为1.1.0.125,解密后的固件升级包中携带的固件版本信息为1.2.0.200,TEE可以基于预设的固件版本信息对应的命名规则,将原有的固件版本信息与解密后的固件升级包中携带的固件版本信息进行比较之后,确定解密后的固件升级包中携带的固件版本信息为1.2.0.200为最新的固件版本信息。
其中,对于固件版本信息的命名规则,本申请不做限定。
进一步的,如果解密后的固件升级包中携带的固件版本信息是最新的固件版本信息,则基于解密后的固件升级包进行固件升级,并基于解密后的固件升级包中携带的固件版本信息更新TEE中保存的固件的版本信息。
继续举例,在升级之后,可以将上述固件版本信息1.2.0.200作为TEE中保存的固件的当前版本信息。
另外,在每次启动设备端时,可以由TEE对当前固件版本信息进行检查,判断当前固件版本信息与TEE中保存的固件版本信息是否匹配,如果不匹配,则很可能遭到了回滚攻击。
在以上技术方案中,一方面,由于密钥协商的过程在TEE中运行并保存,保证了外界对密钥的生成过程不可探知、不可预测;另一方面,由于对加密后的升级包的解密操作在TEE中进行,保证了外界无法干预和篡改,从而提高了固件升级过程中的安全性。
请参见图5,图5是本申请一示例性实施例示出的另一种基于TEE的固件升级方法的流程示意图,该方法可以包括以下步骤:
1、用户通过设备端发送针对固件的升级请求。
其中,对于固件的升级也可以由服务端在有固件的可用更新时,向设备端进行推送,以由用户选择对固件进行升级。
2、服务端获取设备端的硬件信息,根据硬件信息确定与该设备端对应的固件升级包。
在一个例子中,上述硬件信息可以携带在上述的升级请求中;
在另一个例子中,服务端可以通过访问数据库获取存储的该设备端的硬件信息。
3、服务端在确定有可用的固件升级包之后,与设备端的TEE协商出用于对固件升级包进行加密和解密的对称密钥,并获取协商出的对称密钥。
具体的,服务端与设备端之间采用密钥协商机制完成对称密钥的生成,由于对称密钥在TEE中生成,保证了对称密钥生成的过程是不为外界所探知或预测的。
另外,上述对称密钥协商过程、生成对称密钥的算法,以及对称密钥生成算法的输入因子等都在TEE中运行并保存,外界不可知。不可见。
4、使用服务端私钥对固件升级包的摘要进行签名。
而与服务端私钥对应的公钥,则发送至TEE中进行保存,以由TEE对固件升级包的签名进行验签,从而确定固件升级包的完整性。
5、服务端基于协商出的对称密钥对固件升级包进行加密。
6、服务端将加密后的固件升级包,以及服务端公钥发送至设备端。
7、设备端将加密后的固件升级包,以及服务端公钥转发至TEE。
8、基于TEE中保存的与协商出的对称密钥,在TEE中对加密后的固件升级包进行解密。
由于上述协商出的对称密钥保存在TEE中,且上述加密后的固件升级包的解密操作在TEE中进行,因此,整个解密过程外界无法干预或篡改,保证了解密后的固件升级包的安全性。
9、TEE基于所述服务端发送的服务端公钥对固件升级包的签名进行验签,并判断验签的结果与解密后的固件升级包的摘要是否一致,以确定固件升级包的完整性。
具体的,通过服务端公钥对固件升级包的签名进行验签,得到服务端对固件升级包计算出的的数据摘要,计算解密后的固件升级包的数据摘要,判断验签后得到的数据摘要与解密后计算出的数据摘要是否相同,如果相同,说明解密后的固件升级包与服务端发送的固件升级包是一致的。
10、在TEE中模拟运行解密后的固件升级包,根据运行的结果判断固件升级包的有效性。
11、经过上述针对固件升级包的安全性、完整性以及有效性验证后,可以对设备端的原有固件内容进行备份,以便在更新过程出错时可以回退到之前的固件版本。
12、基于TEE中保存的固件版本信息判断是否进行更新。
具体的,可以获取解密后的固件升级包中携带的固件版本信息,将解密后的固件升级包中携带的固件版本信息与TEE中保存的固件的版本信息进行比较,判断解密后的固件升级包中携带的固件版本信息是否为最新的固件版本信息;
如果是,执行步骤13。
13、基于解密后的固件升级包进行固件升级。
14、在升级完成后,基于解密后的固件升级包中携带的固件版本信息更新TEE中保存的固件的版本信息。
与上述方法实施例相对应,本申请还提供了装置的实施例。
与上述方法实施例相对应,本申请还提供了一种基于TEE的固件升级装置的实施例。本申请的基于TEE的固件升级装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本申请一示例性实施例示出的一种的基于TEE的固件升级装置所在电子设备的硬件结构图,除了图6所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
请参见图7,图7是本申请一示例性实施例示出的一种基于TEE的固件升级装置的框图,如图7所示,所述基于TEE的固件升级装置700可以应用在前述图6所示的电子设备中,包括:
接收单元701,接收服务端发送的加密后的固件升级包,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得;
解密单元702,将所述加密后的固件升级包发送至TEE,以由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密;
升级单元703,基于解密后的固件升级包进行固件升级。
在一实施例中,所述TEE中还保存了所述服务端发送的服务端公钥;
所述基于TEE的固件升级装置700还包括:
验签单元704,所述TEE基于所述服务端发送的服务端公钥对所述固件升级包的签名进行验签,所述固件升级包的签名由所述服务端基于服务端私钥对所述固件升级包的摘要进行签名获得;其中,所述服务端发送的服务端公钥与所述服务端私钥是一组公私钥对;
判断单元705,判断所述验签的结果与所述解密后的固件升级包的摘要是否一致,以确定所述固件升级包的完整性。
在一实施例中,所述基于TEE的固件升级装置700还包括:
模拟运行单元706,在所述TEE中模拟运行所述解密后的固件升级包,根据运行的结果判断所述固件升级包的有效性。
在一实施例中,所述TEE中还保存了所述固件的版本信息;
所述升级单元703,进一步:
获取所述解密后的固件升级包中携带的固件版本信息,将所述解密后的固件升级包中携带的固件版本信息与所述TEE中保存的所述固件的版本信息进行比较,判断所述解密后的固件升级包中携带的固件版本信息是否为最新的固件版本信息;
如果是,基于所述解密后的固件升级包进行固件升级,并基于所述解密后的固件升级包中携带的固件版本信息更新所述TEE中保存的所述固件的版本信息。
请参见图8,图8是本申请一示例性实施例示出的另一种基于TEE的固件升级装置的框图,如图8所示,所述基于TEE的固件升级装置800可以应用在前述图6所示的电子设备中,包括:
协商单元801,获取与设备端在TEE可信执行环境中通过密钥协商机制协商出对称密钥;其中,所述TEE由所述设备端的CPU搭载;
发送单元802,将加密后的固件升级包发送至所述设备端,以使所述设备端将所述加密后的固件升级包送入至TEE,由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密,并基于解密后的固件升级包进行固件升级;其中,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得。
在一实施例中,所述基于TEE的固件升级装置800还包括:
获取单元803,获取所述设备端的硬件信息,基于所述硬件信息确定所述设备端对应的固件升级包。
在一实施例中,所述TEE中还保存了所述服务端发送的服务端公钥;
所述基于TEE的固件升级装置800还包括:
加密单元804,基于服务端私钥对所述固件升级包的摘要进行加密,以确定所述固件升级包的签名,以使所述TEE基于所述服务端发送的服务端公钥对所述固件升级包的签名进行验签,并根据所述验签的结果与所述解密后的固件升级包的摘要是否一致确定所述固件升级包的完整性;其中,所述服务端发送的服务端公钥与所述服务端私钥是一组公私钥对。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同/相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于客户端设备实施例、装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的装置、装置、模块或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
与上述方法实施例相对应,本说明书还提供了一种电子设备的实施例。该电子设备包括:处理器以及用于存储机器可执行指令的存储器;其中,处理器和存储器通常通过内部总线相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口,以能够与其他设备或者部件进行通信。
在本实施例中,通过读取并执行所述存储器存储的与用户身份验证逻辑对应的机器可执行指令,所述处理器被促使:
接收服务端发送的加密后的固件升级包,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得;
将所述加密后的固件升级包发送至TEE,以由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密;
基于解密后的固件升级包进行固件升级。
与上述方法实施例相对应,本说明书还提供了另一种电子设备的实施例。该电子设备包括:处理器以及用于存储机器可执行指令的存储器;其中,处理器和存储器通常通过内部总线相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口,以能够与其他设备或者部件进行通信。
在本实施例中,通过读取并执行所述存储器存储的与用户身份验证逻辑对应的机器可执行指令,所述处理器被促使:
获取与设备端在TEE可信执行环境中通过密钥协商机制协商出对称密钥;其中,所述TEE由所述设备端的CPU搭载;
将加密后的固件升级包发送至所述设备端,以使所述设备端将所述加密后的固件升级包送入至TEE,由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密,并基于解密后的固件升级包进行固件升级;其中,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得。
与上述方法实施例相对应,本说明书的实施例还提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中基于区块链的隐私数据映射方法的各个步骤。对上述基于区块链的隐私数据映射方法的各个步骤的详细描述请参见之前的内容,不再重复。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书的实施方式可提供为方法、***或计算机程序产品。因此,本说明书的实施方式可采用完全硬件实施方式、完全软件实施方式或结合软件和硬件方面的实施方式的形式。而且,本说明书的实施方式可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (16)
1.一种基于TEE的固件升级方法,应用于设备端,所述设备端的CPU搭载了TEE可信执行环境,所述设备端与服务端在所述TEE可信执行环境中通过密钥协商机制协商出对称密钥;所述方法包括:
接收服务端发送的加密后的固件升级包,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得;
将所述加密后的固件升级包发送至TEE,以由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密;
基于解密后的固件升级包进行固件升级。
2.根据权利要求1所述的方法,所述TEE中还保存了所述服务端发送的服务端公钥;
所述方法还包括:
所述TEE基于所述服务端发送的服务端公钥对所述固件升级包的签名进行验签,所述固件升级包的签名由所述服务端基于服务端私钥对所述固件升级包的摘要进行签名获得;其中,所述服务端发送的服务端公钥与所述服务端私钥是一组公私钥对;
判断所述验签的结果与所述解密后的固件升级包的摘要是否一致,以确定所述固件升级包的完整性。
3.根据权利要求1所述的方法,所述方法还包括:
在所述TEE中模拟运行所述解密后的固件升级包,根据运行的结果判断所述固件升级包的有效性。
4.根据权利要求1所述的方法,所述TEE中还保存了所述固件的版本信息;
所述基于解密后的固件升级包进行固件升级,包括:
获取所述解密后的固件升级包中携带的固件版本信息,将所述解密后的固件升级包中携带的固件版本信息与所述TEE中保存的所述固件的版本信息进行比较,判断所述解密后的固件升级包中携带的固件版本信息是否为最新的固件版本信息;
如果是,基于所述解密后的固件升级包进行固件升级,并基于所述解密后的固件升级包中携带的固件版本信息更新所述TEE中保存的所述固件的版本信息。
5.一种基于TEE的固件升级方法,应用于服务端,所述方法包括:
获取与设备端在TEE可信执行环境中通过密钥协商机制协商出对称密钥;其中,所述TEE由所述设备端的CPU搭载;
将加密后的固件升级包发送至所述设备端,以使所述设备端将所述加密后的固件升级包送入至TEE,由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密,并基于解密后的固件升级包进行固件升级;其中,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得。
6.根据权利要求5所述的方法,所述方法还包括:
获取所述设备端的硬件信息,基于所述硬件信息确定所述设备端对应的固件升级包。
7.根据权利要求5所述的方法,所述TEE中还保存了所述服务端发送的服务端公钥;
所述方法还包括:
基于服务端私钥对所述固件升级包的摘要进行签名,以使所述TEE基于所述服务端发送的服务端公钥对所述固件升级包的签名进行验签,并根据所述验签的结果与所述解密后的固件升级包的摘要是否一致确定所述固件升级包的完整性;其中,所述服务端发送的服务端公钥与所述服务端私钥是一组公私钥对。
8.一种基于TEE的固件升级装置,应用于设备端,所述设备端的CPU搭载了TEE可信执行环境,所述设备端与服务端在所述TEE可信执行环境中通过密钥协商机制协商出对称密钥;所述装置包括:
接收单元,接收服务端发送的加密后的固件升级包,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得;
解密单元,将所述加密后的固件升级包发送至TEE,以由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密;
升级单元,基于解密后的固件升级包进行固件升级。
9.根据权利要求8所述的装置,所述TEE中还保存了所述服务端发送的服务端公钥;
所述装置还包括:
验签单元,所述TEE基于所述服务端发送的服务端公钥对所述固件升级包的签名进行验签,所述固件升级包的签名由所述服务端基于服务端私钥对所述固件升级包的摘要进行签名获得;其中,所述服务端发送的服务端公钥与所述服务端私钥是一组公私钥对;
判断单元,判断所述验签的结果与所述解密后的固件升级包的摘要是否一致,以确定所述固件升级包的完整性。
10.根据权利要求8所述的装置,所述装置还包括:
模拟运行单元,在所述TEE中模拟运行所述解密后的固件升级包,根据运行的结果判断所述固件升级包的有效性。
11.根据权利要求8所述的装置,所述TEE中还保存了所述固件的版本信息;
所述升级单元,进一步:
获取所述解密后的固件升级包中携带的固件版本信息,将所述解密后的固件升级包中携带的固件版本信息与所述TEE中保存的所述固件的版本信息进行比较,判断所述解密后的固件升级包中携带的固件版本信息是否为最新的固件版本信息;
如果是,基于所述解密后的固件升级包进行固件升级,并基于所述解密后的固件升级包中携带的固件版本信息更新所述TEE中保存的所述固件的版本信息。
12.一种基于TEE的固件升级装置,应用于服务端,所述装置包括:
协商单元,获取与设备端在TEE可信执行环境中通过密钥协商机制协商出对称密钥;其中,所述TEE由所述设备端的CPU搭载;
发送单元,将加密后的固件升级包发送至所述设备端,以使所述设备端将所述加密后的固件升级包送入至TEE,由所述TEE基于协商出的对称密钥对所述加密后的固件升级包进行解密,并基于解密后的固件升级包进行固件升级;其中,所述加密后的固件升级包由所述服务端基于协商出的对称密钥对所述固件升级包进行加密后获得。
13.根据权利要求12所述的装置,所述装置还包括:
获取单元,获取所述设备端的硬件信息,基于所述硬件信息确定所述设备端对应的固件升级包。
14.根据权利要求12所述的装置,所述TEE中还保存了所述服务端发送的服务端公钥;
所述装置还包括:
加密单元,基于服务端私钥对所述固件升级包的摘要进行签名,以使所述TEE基于所述服务端发送的服务端公钥对所述固件升级包的签名进行验签,并根据所述验签的结果与所述解密后的固件升级包的摘要是否一致确定所述固件升级包的完整性;其中,所述服务端发送的服务端公钥与所述服务端私钥是一组公私钥对。
15.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-7中任一项所述的方法。
16.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111130174.6A CN113849210A (zh) | 2021-09-26 | 2021-09-26 | 一种基于tee的固件升级方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111130174.6A CN113849210A (zh) | 2021-09-26 | 2021-09-26 | 一种基于tee的固件升级方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113849210A true CN113849210A (zh) | 2021-12-28 |
Family
ID=78979838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111130174.6A Pending CN113849210A (zh) | 2021-09-26 | 2021-09-26 | 一种基于tee的固件升级方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113849210A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114466098A (zh) * | 2022-01-19 | 2022-05-10 | 上海黑眸智能科技有限责任公司 | 基于app交互的ota升级方法、***、设备端以及app端 |
CN115168872A (zh) * | 2022-09-07 | 2022-10-11 | 南方科技大学 | 基于去中心化信任的公有云下tee状态连续性保护方法 |
-
2021
- 2021-09-26 CN CN202111130174.6A patent/CN113849210A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114466098A (zh) * | 2022-01-19 | 2022-05-10 | 上海黑眸智能科技有限责任公司 | 基于app交互的ota升级方法、***、设备端以及app端 |
CN114466098B (zh) * | 2022-01-19 | 2023-12-26 | 上海黑眸智能科技有限责任公司 | 基于app交互的ota升级方法、***、设备端以及app端 |
CN115168872A (zh) * | 2022-09-07 | 2022-10-11 | 南方科技大学 | 基于去中心化信任的公有云下tee状态连续性保护方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8560823B1 (en) | Trusted modular firmware update using digital certificate | |
EP3542298B1 (en) | Verified boot and key rotation | |
EP3479282B1 (en) | Targeted secure software deployment | |
US9081596B2 (en) | Information processing device, virtual machine creation method, and application distribution system | |
CN104462965B (zh) | 应用程序完整性验证方法及网络设备 | |
CN111143869B (zh) | 应用程序包处理方法、装置、电子设备及存储介质 | |
CN110245518B (zh) | 一种数据存储方法、装置及设备 | |
CN113221166A (zh) | 一种获取区块链数据的方法、装置、电子设备及存储介质 | |
EP2051181A1 (en) | Information terminal, security device, data protection method, and data protection program | |
CN113849210A (zh) | 一种基于tee的固件升级方法及装置 | |
US10783277B2 (en) | Blockchain-type data storage | |
CN112507291B (zh) | Android设备的唯一标识的生成方法和装置 | |
CN110058867A (zh) | 应用程序镜像打包、安装方法及计算机装置、存储介质 | |
CN106709281B (zh) | 补丁发放和获取方法、装置 | |
CN115248919A (zh) | 一种函数接口的调用方法、装置、电子设备及存储介质 | |
CN114880011A (zh) | Ota升级方法、装置、电子设备及可读存储介质 | |
EP3764224B1 (en) | Resource permission processing method and apparatus, and storage medium and chip | |
CN113360914A (zh) | 一种bios更新的方法、***、设备及介质 | |
US11379215B1 (en) | Application-update techniques | |
CN109117625B (zh) | Ai软件***安全状态的确定方法及装置 | |
CN113868691B (zh) | 一种基于云原生的区块链的授权运行方法及装置 | |
US20200183675A1 (en) | Image file packaging method and image file packaging system | |
CN114297679B (zh) | 一种镜像加密传输与升级的方法 | |
CN111695987A (zh) | 客户注册的处理方法、装置、设备及存储介质 | |
US11790057B2 (en) | Controlling program execution using an access key |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40058808 Country of ref document: HK |