CN112241306B - 固件数据加载方法、装置、安全处理器、芯片及电子设备 - Google Patents
固件数据加载方法、装置、安全处理器、芯片及电子设备 Download PDFInfo
- Publication number
- CN112241306B CN112241306B CN202011129782.0A CN202011129782A CN112241306B CN 112241306 B CN112241306 B CN 112241306B CN 202011129782 A CN202011129782 A CN 202011129782A CN 112241306 B CN112241306 B CN 112241306B
- Authority
- CN
- China
- Prior art keywords
- firmware
- content
- authentication code
- data
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供一种固件数据加载方法、装置、安全处理器、芯片及电子设备,其中方法包括:从物理内存的缓冲区读取固件数据,其中,所述缓冲区保存有虚拟机管理器从文件系统的模拟文件中读取的固件数据,所述模拟文件为用于模拟存储固件数据的非易失性存储器的文件,所述固件数据包括固件内容和固件目标认证码;将读取的固件内容和固件目标认证码加载到物理内存的固件临时信息中;基于所述固件目标认证码,验证固件内容是否完整;若验证固件内容完整,将固件临时信息中的固件内容和固件目标认证码,加载到物理内存的固件关键信息中。本申请实施例可提高固件数据加载至物理内存的速度和可靠性。
Description
技术领域
本申请实施例虚拟机技术领域,具体涉及一种固件数据加载方法、装置、安全处理器、芯片及电子设备。
背景技术
通过虚拟化技术(Virtualization),物理主机可虚拟化出多台虚拟机(VirtualMachine,VM),从而最大化利用物理主机的硬件资源,虚拟化出的每台虚拟机可在物理内存中被分配虚拟机内存空间,每台虚拟机的虚拟机内存空间主要用于任务消耗及支持虚拟化。
为提升虚拟机内存空间中虚拟机数据的安全性,安全虚拟化技术应运而生,安全虚拟化技术可通过专用设置的安全处理器为虚拟机分配加密密钥,从而在虚拟机内存空间中的虚拟机数据被操作时,虚拟机数据可使用虚拟机的加密密钥进行加解密,实现不同虚拟机之间的数据安全隔离。
安全处理器可使用固件管理虚拟机的密钥,也可在虚拟机启动时,使用固件实现身份验证等固件服务;为在电子设备(如物理主机)重新上电情况下,安全处理器能够快速使用固件,固件可将固件数据存储在固件可用的NVM(Non-Volatile Memory,非易失性存储器)中,从而在电子设备重新上电后,NVM中的固件数据能够加载到物理内存中,进而安全处理器能够从物理内存访问到固件数据,以实现固件使用。
可见,如何使得固件数据快速、可靠的加载至物理内存,对于安全处理器使用固件具有重要意义。
发明内容
有鉴于此,本申请实施例提供一种固件数据加载方法、装置、安全处理器、芯片及电子设备,以提高固件数据加载至物理内存的速度和可靠性。
为实现上述目的,本申请实施例提供如下技术方案:
一种固件数据加载方法,所述方法应用于安全处理器,所述方法包括:
从物理内存的缓冲区读取固件数据,其中,所述缓冲区保存有虚拟机管理器从文件系统的模拟文件中读取的固件数据,所述模拟文件为用于模拟存储固件数据的非易失性存储器的文件,所述固件数据包括固件内容和固件目标认证码;
将读取的固件内容和固件目标认证码加载到物理内存的固件临时信息中;
基于所述固件目标认证码,验证固件内容是否完整;
若验证固件内容完整,将固件临时信息中的固件内容和固件目标认证码,加载到物理内存的固件关键信息中。
本申请实施例还提供一种固件数据加载装置,所述装置应用于安全处理器,所述装置包括:
缓冲读取模块,用于从物理内存的缓冲区读取固件数据,其中,所述缓冲区保存有虚拟机管理器从文件系统的模拟文件中读取的固件数据,所述模拟文件为用于模拟存储固件数据的非易失性存储器的文件,所述固件数据包括固件内容和固件目标认证码;
临时加载模块,用于将读取的固件内容和固件目标认证码加载到物理内存的固件临时信息中;
完整性验证模块,用于基于所述固件目标认证码,验证固件内容是否完整;
关键加载模块,用于若验证固件内容完整,将固件临时信息中的固件内容和固件目标认证码,加载到物理内存的固件关键信息中。
本申请实施例还提供一种安全处理器,所述安全处理器被配置为执行如上述所述的固件数据加载方法。
本申请实施例还提供一种芯片,所述芯片配置有虚拟机管理器和如上述所述的安全处理器;其中,所述虚拟机管理器被配置为:
打开文件系统中的模拟文件,并在物理内存中分配缓冲区,所述缓冲区的大小不小于所述模拟文件的文件大小,其中,所述模拟文件为用于模拟存储固件数据的非易失性存储器的文件,所述固件数据包括固件内容和固件目标认证码;将模拟文件中的固件数据加载到所述缓冲区。
本申请实施例还提供一种电子设备,包括如上述所述的芯片。
本申请实施例提供的固件数据加载方法,可由文件系统中的模拟文件模拟NVM,以在模拟文件中保存固件数据,所述固件数据包括固件内容和固件目标认证码;从而虚拟机管理器将模拟文件中的固件数据加载到物理内存中分配的缓冲区后,安全处理器可从缓冲区中读取固件数据(即读取固件内容和固件目标认证码),并将读取的固件内容和固件目标认证码加载到物理内存的固件临时信息中;进而,安全处理器可基于所述固件目标认证码,验证固件内容是否完整,在验证固件内容完整时,安全处理器才将固件临时信息中的固件内容和固件目标认证码,加载到物理内存的固件关键信息中,以实现固件数据至物理内存的加载。
由于硬盘的文件系统中的模拟文件在电子设备断电时不易丢失数据,且文件系统的文件读写次数不受限制,同时,硬盘的文件系统与物理内存间的数据读写速度,优于SPI的数据读写速度,因此本申请实施例在使用文件系统的模拟文件模拟保存固件数据的NVM的情况下,基于本申请实施例改进的固件数据加载方法,可实现模拟文件中的固件数据至物理内存的高速加载,且不具有次数限制,提高了固件数据加载至物理内存的速度和可靠性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的安全虚拟化技术的系统架构示意图;
图2为本申请实施例提供的安全虚拟化技术的微架构示意图;
图3为本申请实施例提供的安全虚拟化技术的另一系统架构示意图;
图4为本申请实施例提供的固件数据加载方法的流程图;
图5为本申请实施例提供的身份证书加载至缓冲区的示例图;
图6为本申请实施例提供的固件数据加载方法的另一流程图;
图7为本申请实施例提供的固件数据加载方法的再一流程图;
图8为本申请实施例提供的固件数据加载装置的框图;
图9为本申请实施例提供的固件数据加载装置的另一框图;
图10为本申请实施例提供的固件数据加载装置的再一框图;
图11为本申请实施例提供的固件数据加载装置的又一框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在可选实现中,图1示出了安全虚拟化技术的系统架构示意图,如图1所示,安全虚拟化技术的系统架构可以包括:CPU(Central Processing Unit,中央处理器)核心10,内存控制器20,物理内存30,安全处理器40;
结合图1所示,CPU核心10可通过软件形式配置虚拟机管理器110,并通过虚拟化技术虚拟化出多台虚拟机111,该多台虚拟机可由虚拟机管理器110进行内存管理,如由虚拟机管理器管理虚拟机在物理内存30中的虚拟机内存空间;
内存控制器20是控制物理内存30,并且使物理内存30与CPU核心10之间交换数据的硬件;物理内存30的部分或全部空间可作为为虚拟机分配的虚拟机内存空间;在典型的计算机系统中,内存控制器20负责处理内存访问请求,如内存控制器20可检测缓存是否记录内存访问请求对应的地址,若是,则从缓存读取该地址相应的数据,否则,遍历内存的页表查找该地址并读取该地址相应的数据;
安全处理器40为安全虚拟化技术专门设置的负责虚拟机数据安全的处理器;如图1所示,虚拟机管理器110可配置与安全处理器40相通信的API接口,实现虚拟机管理器与安全处理器的数据交互;同时,安全处理器40可为虚拟机分配加密密钥,不同虚拟机分配不同的加密密钥,并由内存控制器20中的加解密引擎21存储虚拟机的加密密钥,进而在虚拟机运行过程中,安全处理器40可通过加解密引擎21使用虚拟机的加密密钥,对虚拟机的虚拟机内存空间中的虚拟机数据进行加解密,以实现虚拟机与物理主机、以及不同虚拟机之间的数据安全隔离。
在更进一步的说明中,图2示出了安全虚拟化技术的微架构示意图,如图2所示,SOC(System On Chip,片上系统)内部设置有CPU核心10,安全处理器40,和内存控制器20;SOC外部设置物理内存30(例如动态随机存取存储器DRAM等);并且,安全处理器40与CPU核心10通过API接口交互,安全处理器40与内存控制器(memory controller)20通过总线交互,并运行program(程式),为不同的虚拟机分配不同的VEK(Virtualization EncryptedKey,虚拟机加密密钥),由于虚拟机的虚拟机内存空间中的虚拟机数据使用加密密钥(VEK)进行加解密,因此SOC外部的虚拟机数据为加密后的密文,SOC内部的虚拟机数据为明文。
需要说明的是,图2所示系统架构是以CPU核心、内存控制器、安全处理器集成在SOC上进行说明,显然,SOC仅是计算机体系结构的一种可选形式,安全虚拟化技术也可支持其他形式的计算机体系结构,例如,安全虚拟化技术也可支持处理器和南桥相耦合的计算机体系结构、分设南桥和北桥的计算机体系结构等,此时,CPU核心、内存控制器、内存、和安全处理器可相应部署,此处不再展开说明。
可以看出,安全虚拟化技术可通过专用设置的安全处理器负责虚拟机数据的安全,在安全虚拟化技术中,安全处理器的一些功能可由安全处理器使用固件实现,例如安全处理器可使用固件在虚拟机启动时,进行平台(虚拟机平台)、用户身份验证等固件服务,同时,安全处理器可使用固件管理虚拟机的密钥,以使得CPU也无法获取到虚拟机的密钥,从而保证虚拟机的虚拟机内存空间中的数据被加密后,只有虚拟机本身能访问,其他虚拟机均无法访问;
固件作为一种程序,安全处理器使用固件需要利用到固件数据,为使得电子设备重新上电情况下,安全处理器能够快速使用固件,固件可将固件数据存储在固件可用的NVM中,NVM即非易失性存储器,是一种断电后存储的数据不会消失的存储器;从而电子设备重新上电后,NVM中存储的固件数据可加载到物理内存中,以使得安全处理器可通过访问物理内存中加载的固件数据,来使用固件;上述存储于NVM中的固件数据例如固件管理的身份证书等,固件数据的具体类型可视安全处理器使用固件的需求而定,本申请实施例并不限制。
目前NVM主要由SPI(Serial Peripheral Interface,串行外围设备接口) flash存储器实现,SPI flash存储器可以视为是使用串行外围设备接口的flash存储器,其通过串行外围设备接口与电子设备进行数据交互,以实现SPI flash存储器中的数据至电子设备的读写;虽然使用SPI flash存储器能够在电子设备断电时不丢失数据,但是SPI flash存储器的读写速度较慢,这导致SPI flash存储器中的固件数据加载至物理内存的速度较慢,且由于SPI flash存储器存在读写次数限制,这导致固件数据加载至物理内存的可靠性较低。
基于此,本申请实施例考虑不使用SPI flash存储器作为存储固件数据的NVM,而是由文件系统中模拟NVM的模拟文件来保存固件数据,并通过改进的固件数据加载方案,来提高固件数据加载至物理内存的速度和可靠性,下面将对本申请实施例提供的固件数据加载方案进行详细说明。
在不使用SPI flash存储器作为存储固件数据的NVM的情况下,本申请实施例考虑在硬盘的文件系统中使用文件来模拟NVM,即使用文件系统中模拟NVM的文件来保存固件数据,为便于说明,下面将文件系统中模拟NVM的文件称为模拟文件;在此基础上,需要加载固件数据至物理内存时,则可将模拟文件中保存的固件数据加载至物理内存,以实现固件数据加载至物理内存。
基于上述思路,在可选实现中,图3示出了本申请实施例提供的安全虚拟化技术的另一系统架构,结合图1和图3所示,在图3所示系统架构中,文件系统50使用模拟文件模拟NVM,并且模拟文件中保存固件的固件数据,例如模拟文件中保存安全处理器用于平台、用户身份验证的身份证书等固件数据;可选的,文件系统50可位于硬盘。
基于图3所示系统架构,本申请实施例提供改进的固件数据加载方法,以在电子设备重新上电使得固件初始化时,实现固件数据快速、可靠的加载至物理内存;在可选实现中,图4示出了本申请实施例提供的固件数据加载方法的可选流程,该流程可由虚拟机管理器和安全处理器执行实现,该流程可以是固件初始化中的流程;如图4所示,该流程可以包括:
步骤S100、虚拟机管理器打开文件系统中用于模拟NVM的模拟文件,并在物理内存中分配缓冲区,所述缓冲区的大小不小于所述模拟文件的文件大小。
电子设备重新上电,安全处理器的固件进行初始化,此时,虚拟机管理器可基于模拟文件的文件路径,打开硬盘的文件系统中的模拟文件,该模拟文件即文件系统中用于模拟存储固件数据的NVM的文件,其保存有安全处理器的固件的固件数据。
虚拟机管理器在打开模拟文件时,可进一步获取所述模拟文件的文件句柄,以便后续读取模拟文件中的固件数据;需要说明的是,模拟文件作为文件系统中的文件,虚拟机管理器打开模拟文件的操作类似于打开普通文件的操作,如虚拟机管理器在打开模拟文件时,需要调用操作系统函数并基于文件路径来打开模拟文件,在虚拟机管理器打开模拟文件时,虚拟机管理器可从操作系统函数取回一个顺序号,即文件句柄(file handle),该文件句柄是打开的模拟文件唯一的识别依据,用于后续读取模拟文件中的数据时进行数据传送。
在虚拟机管理器打开所述模拟文件时,虚拟机管理器可在物理内存中分配缓冲区(buffer),该缓冲区可以认为是在物理内存中分配的用于缓存模拟文件中的固件数据的内存空间,该缓冲区的大小应不小于模拟文件的文件大小,如至少应使得缓冲区的大小等同于模拟文件的文件大小,在一种示例中,如果模拟文件的文件大小为32K,则虚拟机管理器可在物理内存中分配32K大小的缓冲区;可选的,模拟文件的文件大小可以由虚拟机管理器预记录,也可以是虚拟机管理器打开模拟文件后,识别得到模拟文件的文件大小。
步骤S110、虚拟机管理器将模拟文件中的固件数据,加载到所述缓冲区,所述固件数据包括固件内容和固件目标认证码。
虚拟机管理器在物理内存中分配缓冲区后,可将模拟文件中的固件数据读取出,并将读取出的固件数据加载到缓冲区中;在可选实现中,虚拟机管理器可基于打开模拟文件时获取的文件句柄,读取模拟文件中的固件数据,将读取出的固件数据加载到缓冲区中。
在进一步的可选实现中,虚拟机管理器可先识别模拟文件是否为空白文件,只有在虚拟机管理器识别模拟文件不为空白文件时,才执行步骤S110,即虚拟机管理器在识别模拟文件不为空白文件时,将模拟文件中的固件数据,加载到所述缓冲区。
在本申请实施例中,固件数据可以包括固件内容和固件目标认证码,其中,固件内容是固件数据的具体数据内容,固件目标认证码是固件数据中认证固件内容完整性的固件认证码,固件目标认证码可以作为认证固件内容完整性的参照信息;在可选实现中,固件认证码可以是基于Hash(哈希)函数和密钥生成的用于认证内容完整性的认证码,例如,固件认证码可以是固件HMAC(Hash-based Message Authentication Code,密钥相关的哈希运算消息认证码),为便于区别不同阶段形成的固件认证码,本申请实施例将固件数据中的固件认证码称为是固件目标认证码。
可选的,在生成固件内容时,安全处理器可基于芯片标识(即芯片ID)派生密钥,从而基于芯片标识派生的密钥以及固件内容的哈希结果,计算出固件目标认证码,并将固件目标认证码和固件内容设置在固件数据中,以使得固件数据包含固件内容和固件目标认证码;可以理解的是,如果固件数据中的固件内容被恶意篡改,由于固件内容的篡改将导致固件内容的哈希结果改变,因此再次形成的固件认证码将与固件数据中的固件目标认证码不同,通过这种方式可以有效的验证模拟文件中保存的固件内容的完整性;
需要说明的是,芯片标识是芯片的身份信息,每个芯片的芯片标识不同,并在芯片出厂时烧录在FUSE(保险丝)中不再改变,因此将芯片标识派生的密钥作为形成固件认证码的基础,可以保障固件认证码的有效性;此处所指的芯片可以是部署安全处理器的芯片,该芯片同时还可能集成CPU等器件。
安全处理器的固件会将一些永久性数据(比如用于平台、用户身份验证的身份证书)存储在NVM中,以固件数据为身份证书为例,则身份证书中可以包括证书内容和证书目标HMAC,为更为形象的说明身份证书由模拟文件加载至缓冲区的过程,结合图5所示,文件系统中存在一个32k的用于模拟NVM的模拟文件,该模拟文件中存储有固件用于身份验证的身份证书(身份证书的数量可以是多份),虚拟机管理器在内存分配一个32k的buffer(即缓冲区)后,模拟文件中的身份证书可以加载至该buffer,由图5可以看出,身份证书的格式是由证书内容和证书目标HMAC构成;
需要说明的是,身份证书仅是固件数据的一种可选类型,本申请实施例不限于其他类型的固件数据,无论使用何种类型的固件数据,固件数据中均包括了固件内容和用于认证固件内容完整性的固件目标认证码。
步骤S120、虚拟机管理器将所述缓冲区的物理地址传递给安全处理器。
基于步骤S120,安全处理器可获取虚拟机管理器传递的缓冲区的物理地址。
步骤S130、安全处理器根据所述物理地址从缓冲区中读取固件内容和固件目标认证码。
安全处理器在获取虚拟机管理器传递的缓冲区的物理地址后,可根据所述物理地址,从缓冲区中读取固件内容和固件目标认证码。
在可选实现中,安全处理器可与虚拟机管理器约定固件内容在缓冲区中保存的第一偏移量,以及固件目标认证码在缓冲区中保存的第二偏移量,从而虚拟机管理器在将固件内容加载到缓冲区时,可基于所述第一偏移量将固件内容加载到缓冲区,在将固件目标认证码加载到缓冲区时,可基于第二偏移量将固件认证码加载到缓冲区;
基于此,在安全处理器已设定与虚拟机管理器约定的第一偏移量和第二偏移量的情况下,虚拟机管理器传递给安全处理器的物理地址可以是缓冲区的起始物理地址,从而安全处理器在从缓冲区读取固件内容时,可根据缓冲区的起始物理地址以及设定的第一偏移量,从缓冲区中读取固件内容,安全处理器在从缓冲区中读取固件目标认证码时,可根据缓冲区的起始物理地址以及设定的第二偏移量,从缓冲区中读取固件目标认证码。
当然,本申请实施例并不限制安全处理器从缓冲区读取固件数据的其他可能方式,上述描述的方式仅是一种可选实现。
需要说明的是,步骤S100至步骤S130可以认为是,虚拟机管理器在缓冲区保存固件数据的情况下,安全处理器从缓冲区读取固件数据的说明;其中,所述缓冲区保存有虚拟机管理器从文件系统的模拟文件中读取的固件数据,所述模拟文件具体为用于模拟存储固件数据的NVM的文件,且所述固件数据包括固件内容和固件目标认证码。
步骤S140、安全处理器将读取的固件内容和固件目标认证码加载到物理内存的固件临时信息中。
在本申请实施例中,固件数据真正实现加载到物理内存可以认为是:固件数据加载到物理内存的固件关键信息中;固件关键信息可以认为是物理内存中用于保存固件数据的关键性信息,在虚拟机启动时,安全处理器可利用物理内存的固件关键信息中保存的固件数据,实现平台、用户身份验证等固件服务。
在本步骤中,安全处理器从缓冲区读取固件内容和固件目标认证码后,由于固件内容并未验证完整性,因此固件内容可能存在不完整被篡改的情况,此时,安全处理器从缓冲区中读取的固件内容和固件目标认证码,不能直接保存到物理内存的固件关键信息中,即安全处理器不能直接利用缓冲区读取的固件数据,进行平台、用户身份验证等固件服务;基于此,本申请实施例在物理内存中设置临时保存固件数据的固件临时信息,该固件临时信息可以是临时变量的形式,用于保存未经完整性验证的固件内容和固件目标认证码,从而安全处理器在基于虚拟机管理器传递的物理地址,从缓冲区读取固件内容和固件目标认证码后,可将读取的固件内容和固件目标认证码加载到物理内存的固件临时信息中,以便于后续对固件临时信息中的固件内容进行完整性验证。
步骤S150、安全处理器基于所述固件目标认证码,验证固件内容是否完整。
安全处理器在固件临时信息中加载固件内容和固件目标认证码后,可对固件内容进行完整性验证,本申请实施例可基于所述固件目标认证码,对固件内容进行完整性验证。
在可选实现中,安全处理器可重新计算固件内容的固件当前认证码,以通过比较重新计算的固件当前认证码和固件目标认证码,实现验证固件内容是否完整;可选的,由于固件认证码可基于Hash函数和密钥来生成,因此安全处理器可基于芯片标识派生的密钥以及固件内容的当前哈希结果,重新确定固件内容的固件认证码,为便于区别固件数据中的固件目标认证码,此处安全处理器重新确定的固件认证码可以称为是固件当前认证码,即固件当前认证码是针对固件内容的当前哈希结果而言;
安全处理器重新确定出固件内容的固件当前认证码后,可将固件当前认证码与固件目标认证码进行比较,以比较固件当前认证码与固件目标认证码是否一致;由于固件目标认证码是认证固件内容完整性的参照信息,当固件内容被篡改时,重新确定的固件当前认证码将与固件目标认证码不同,因此本申请实施例可在比较结果为固件当前认证码与固件目标认证码不一致时,验证固件内容不完整(即固件内容被篡改),在比较结果为固件当前认证码与固件目标认证码一致时,验证固件内容完整。
在进一步的可选实现中,只有在固件内容非全0的情况下,才认为固件内容存在,具有验证固件内容完整性的意义,因此本申请实施例可先识别固件内容是否为全0,在识别固件内容不为全0的情况下,才执行步骤S150,进行固件内容的完整性验证。
步骤S160、若验证固件内容完整,安全处理器将固件临时信息中的固件内容和固件目标认证码,加载到物理内存的固件关键信息中。
安全处理器验证固件内容完整(例如比较固件认证码与固件目标认证码一致),则可将固件临时信息中的固件内容和固件目标认证码,加载到物理内存的固件关键信息中,以在后续虚拟机启动时,安全处理器可利用固件关键信息中的固件数据(即固件内容和固件目标认证码),实现固件的平台、身份验证等固件服务。
可选的,安全处理器将固件内容和固件目标认证码,加载到物理内存的固件关键信息后,可将固件临时信息中的数据进行删除。
可选的,步骤S130至步骤S160可具体由安全处理器的固件执行实现。
本申请实施例提供的固件数据加载方法,可由文件系统中的模拟文件模拟NVM,以在模拟文件中保存固件数据,所述固件数据包括固件内容和固件目标认证码;从而虚拟机管理器将模拟文件中的固件数据加载到物理内存中分配的缓冲区后,安全处理器可从缓冲区中读取固件数据(即读取固件内容和固件目标认证码),并将读取的固件内容和固件目标认证码加载到物理内存的固件临时信息中;进而,安全处理器可基于所述固件目标认证码,验证固件内容是否完整,在验证固件内容完整时,安全处理器才将固件临时信息中的固件内容和固件目标认证码,加载到物理内存的固件关键信息中,以实现固件数据至物理内存的加载。
由于硬盘的文件系统中的模拟文件在电子设备断电时不易丢失数据,且文件系统的文件读写次数不受限制,同时,硬盘的文件系统与物理内存间的数据读写速度,优于SPI的数据读写速度,因此本申请实施例在使用文件系统的模拟文件模拟保存固件数据的NVM的情况下,基于本申请实施例改进的固件数据加载方法,可实现模拟文件中的固件数据至物理内存的高速加载,且不具有次数限制,提高了固件数据加载至物理内存的速度和可靠性。
可选的,在进一步的说明中,安全处理器也可能识别固件内容为全0,或者比较出固件当前认证码与固件目标认证码不一致,此时,说明固件内容不完整,这种情况可能是模拟文件中的固件数据被恶意篡改导致;在此情况下,安全处理器不能将固件内容和固件目标认证码加载到物理内存的固件关键信息中,而是应重新生成固件数据,并通知虚拟机管理器对模拟文件中保存的固件数据进行更新;在可选实现中,图6示出了本申请实施例提供的固件数据加载方法的另一可选流程,该流程可由虚拟机管理器和安全处理器执行实现,如图6所示,该流程可以包括:
步骤S200、虚拟机管理器打开文件系统中用于模拟NVM的模拟文件,并在物理内存中分配缓冲区,所述缓冲区的大小不小于所述模拟文件的文件大小。
步骤S210、虚拟机管理器识别模拟文件是否为空白文件,若是,结束流程,若否,执行步骤S220。
虚拟机管理器打开模拟文件后,可识别模拟文件是否为空白文件,若模拟文件是空白文件,说明模拟文件中未保存固件数据,此时可结束流程;若模拟文件不为空白文件,说明模拟文件中保存有固件数据,可继续后续流程。
步骤S220、虚拟机管理器从模拟文件中读取固件数据,所述固件数据包括固件内容和固件目标认证码;基于第一偏移量将固件内容加载到所述缓冲区,并基于第二偏移量将固件目标认证码加载到所述缓冲区。
虚拟机管理器识别所述模拟文件不为空白文件,说明所述模拟文件保存有固件数据,则在可选实现中,虚拟机管理器可基于打开模拟文件时获取的文件句柄,从模拟文件中读取固件数据,在本申请实施例中,所读取的固件数据可以包括固件内容和固件目标认证码;在虚拟机管理器与安全处理器约定固件内容在缓冲区中存储的第一偏移量,以及固件目标认证码在缓冲区中存储的第二偏移量的情况下,虚拟机管理器在读取模拟文件的固件数据后,可基于所述第一偏移量将读取的固件数据中的固件内容,加载到缓冲区中,并且基于所述第二偏移量将读取的固件数据中的固件目标认证码,加载到缓冲区中,以便实现模拟文件中的固件数据至缓冲区的加载。
步骤S230、虚拟机管理器将缓冲区的起始物理地址传递给安全处理器。
步骤S240、安全处理器根据所述起始物理地址以及所述第一偏移量,从缓冲区中读取固件内容,根据所述起始物理地址以及所述第二偏移量,从缓冲区中读取固件目标认证码。
步骤S250、安全处理器将读取的固件内容和固件目标认证码加载到物理内存的固件临时信息中。
在虚拟机管理器和安全处理器约定所述第一偏移量和所述第二偏移量的情况下,虚拟机管理器在加载固件数据至缓冲区后,可将缓冲区的起始物理地址传递给安全处理器,则安全处理器可基于所述起始物理地址和所述第一偏移量,在缓冲区中读取到固件内容,即从所述起始物理地址开始,在偏移所述第一偏移量的地址读取固件内容,同时,安全处理器可基于所述起始物理地址和所述第二偏移量,在缓冲区中读取到固件目标认证码,即从所述起始物理地址开始,在偏移所述第二偏移量的地址读取固件目标认证码;由于缓冲区中读取的固件内容还未经过完整性验证,因此安全处理器可将从缓冲区中读取的固件内容和固件认证码,先加载到物理内存的固件临时信息中。
步骤S260、安全处理器识别固件内容是否为全0,若否,执行步骤S270,若是,执行步骤S290。
安全处理器加载固件内容和固件目标认证码至固件临时信息后,可对固件内容进行识别,以识别固件内容是否为全0;如果固件内容不为全0,则可执行步骤S270,进行固件内容的完整性验证;如果固件内容为全0,说明固件内容可能已被篡改,没有进行完整性验证的必要,此时应进行固件数据的重新生成并更新模拟文件。
步骤S270、安全处理器基于所述固件目标认证码,验证固件内容是否完整,若是,执行步骤S280,若否,执行步骤S290。
在固件内容不为全0的情况下,安全处理器可基于固件目标认证码,对固件内容进行完整性验证;可选的,在基于Hash函数和密钥生成的固件认证码进行完整性验证的思路下,安全处理器可根据芯片标识派生密钥,并确定固件内容的当前哈希结果,从而根据芯片标识派生的密钥以及固件内容的当前哈希结果,重新确定固件内容的固件当前认证码;在可选实现中,安全处理器可使用KDF(Key Derivation Function,密钥导出函数)方法,基于芯片标识派生密钥,其中,KDF可以是一种通过使用根密钥安全派生出更多子密钥的方案,即本申请实施例可以芯片标识作为根密钥,进行密钥派生;
安全处理器在重新确定固件内容的固件当前认证码后,可将固件当前认证码与固件目标认证码进行比较,如果两者比较一致,说明固件内容完整,可执行步骤S280,进行固件数据至物理内存的真正加载;如果两者比较不一致,说明固件内容不完整(如固件内容被篡改),此时需重新生成固件数据并更新模拟文件。
步骤S280、安全处理器将固件临时信息中的固件内容和固件目标认证码,加载到物理内存的固件关键信息中。
在固件当前认证码与固件目标认证码一致时,安全处理器可将固件临时信息中的固件内容和固件目标认证码,加载到物理内存的固件关键信息中,完成固件数据真正加载至物理内存,从而在虚拟机启动时,安全处理器可利用固件关键信息中的固件数据(即固件内容和固件目标认证码),实现固件的平台、身份验证等固件服务。
步骤S290、安全处理器重新生成固件数据,将重新生成的固件数据写入所述缓冲区。
步骤S300、安全处理器将缓冲区更新消息传递给虚拟机管理器。
步骤S310、虚拟机管理器基于缓冲区中重新生成的固件数据,更新模拟文件。
在安全处理器识别固件内容为全0,或者验证固件内容不完整(如比较出固件目标认证码与固件当前认证码不一致)的情况下,本申请实施例可通过步骤S290至步骤S310实现重新生成固件数据并更新模拟文件;具体的,安全处理器可重新进行固件数据的生成,例如,以固件数据为身份证书为例,安全处理器可重新生成身份证书,安全处理器生成身份证书的方式可以有多种,本申请实施例并不限制;需要说明的是,基于固件数据的格式要求,重新生成固件数据即重新生成固件内容和固件目标认证码,也就是说,重新生成的固件数据包括了重新生成的固件内容和固件目标认证码,例如,安全处理器可先重新生成固件内容,针对重新生成的固件内容,安全处理器可基于芯片标识派生的密钥以及重新生成的固件内容的哈希结果,重新生成固件目标认证码。
由于模拟文件存在于文件系统中并由虚拟机管理器管理,因此安全处理器在重新生成固件数据后,可通过物理内存中的缓冲区与虚拟机管理器进行数据传递,从而安全处理器可将重新生成的固件数据写入到缓冲区中,如果缓冲区中已存在原先虚拟机管理器写入的固件数据,则安全处理器可删除缓冲区中原先写入的固件数据后,再将重新生成的固件数据写入缓冲区;进而,安全处理器可将缓冲区更新消息传递给虚拟机管理器,以通知虚拟机管理器,缓冲区中的数据进行了更新;虚拟机管理器接收到缓冲区更新消息后,可基于缓冲区中重新生成的固件数据,更新模拟文件,使得模拟文件中被篡改的固件数据更新为所述重新生成的固件数据,可选的,虚拟机管理器可在读取缓冲区中重新生成的固件数据后,使用重新生成的固件数据覆盖模拟文件中被篡改的固件数据,以实现模拟文件的更新。
可选的,进一步,虚拟机管理器更新模拟文件后,可基于本申请实施例提供的数据加载方案,重新将更新的模拟文件中的固件数据加载至物理内存中,具体过程可与前文描述同理实现,此处不再赘述。
可选的,虚拟机管理器从缓冲区中读取重新生成的固件数据的方式,可与前面描述的安全处理器读取缓冲区中的固件数据的方式同理,可相互进行参照,此时不再展开。
本申请实施例可在使用文件系统的模拟文件模拟保存固件数据的NVM的情况下,基于本申请实施例改进的固件数据加载方法,实现模拟文件中的固件数据至物理内存的高速加载,且不具有次数限制,提高了固件数据加载至物理内存的速度和可靠性。同时,在模拟文件中的固件数据被篡改的情况下,本申请实施例可实现固件数据的重新生成,并基于重新生成的固件数据对模拟文件进行更新,保障模拟文件中的固件数据至物理内存的准确、高速、可靠加载。
需要进一步说明的是,由于模拟文件位于文件系统中,因此模拟文件可被用户访问,为避免用户恶意篡改模拟文件中的固件内容时,同时篡改固件认证码,来躲避安全处理器的完整性验证,本申请实施例在安全性方面提供进一步的补充方案:
可选的,本申请实施例可设置芯片标识存储在芯片的FUSE中,并且只允许安全处理器(如安全处理器的固件)访问,从而虚拟机和用户均无法获取到芯片标识;由于用户无法通过软件获取到芯片标识,也就无法得到基于芯片标识派生的密钥,因此就算用户篡改模拟文件中的固件内容,在无法得到基于芯片标识派生的密钥的情况下,针对篡改的固件内容,用户是无法计算出正确的固件认证码,来躲过安全处理器的完整性验证;
具体来说,如果用户在访问模拟文件时,篡改了模拟文件中的固件内容,则为躲避完整性验证,用户需针对篡改的固件内容来重新计算固件认证码,而由于芯片标识存储在芯片的FUSE且只允许安全处理器访问,因此用户在无法获取到芯片标识的情况下,就无法基于芯片标识派生的密钥,来针对篡改的固件内容计算正确的固件认证码,因此用户就算篡改了模拟文件中的固件内容,也无法篡改出正确的固件认证码,安全处理器同样可在完整性验证的阶段,验证出固件内容被篡改,保障被篡改的固件内容不会用于固件服务,可保障固件服务实现的可靠性。
可选的,为降低模拟文件中的固件内容被篡改的风险,本申请实施例可设置模拟文件中的固件内容为加密的固件内容,为进一步防止用户或者其他软件可破解加密的固件内容,固件内容加密使用的密钥可以是基于芯片标识派生的密钥,由于芯片标识存储在芯片的FUSE中且只允许安全处理器访问,因此其他软件或者用户就无法获取到基于芯片标识派生的密钥,就无法破解模拟文件中加密的固件内容,从而可保障模拟文件中加密的固件内容的安全性,降低模拟文件中的固件内容被篡改的风险;
在固件内容加密的情况下,由于虚拟机管理器无法解密固件内容,因此在本申请实施例提供的固件数据加载方案中,虚拟机管理器在读取模拟文件中的固件内容并加载至缓冲区时,虚拟机管理器读取的是模拟文件中加密的固件内容,且缓冲区中加载的也是加密的固件内容;同时,由于安全处理器在重新确定固件当前认证码时,需基于解密的固件内容实现,因此安全处理器可先对固件内容进行解密,然后再针对解密的固件内容,重新确定固件当前认证码;相应的,在可选实现中,基于固件内容加密的情况下,图7示出了本申请实施例提供的固件数据加载方法的再一可选流程,该流程可由虚拟机管理器和安全处理器执行实现,如图7所示,该流程可以包括:
步骤S400、虚拟机管理器打开文件系统中用于模拟NVM的模拟文件,并在物理内存中分配缓冲区,所述缓冲区的大小不小于所述模拟文件的文件大小。
步骤S410、虚拟机管理器从模拟文件中读取固件数据,所述固件数据包括加密的固件内容和固件目标认证码;基于第一偏移量将加密的固件内容加载到所述缓冲区,并基于第二偏移量将固件目标认证码加载到所述缓冲区。
在模拟文件中的固件内容加密的情况下,由于固件内容加密使用的密钥为基于芯片标识派生的密钥,且芯片标识保存在芯片的FUSE,只能由安全处理器访问,因此虚拟机管理器无法对加密的固件内容进行解密,从而虚拟管理器在读取模拟文件中的固件数据时,读取到的是加密的固件内容和固件目标认证码,其中,固件内容为加密状态的,固件目标认证码可以不是加密状态的。
步骤S420、虚拟机管理器将缓冲区的起始物理地址传递给安全处理器。
步骤S430、安全处理器根据所述起始物理地址以及所述第一偏移量,从缓冲区中读取加密的固件内容,根据所述起始物理地址以及所述第二偏移量,从缓冲区中读取固件目标认证码。
步骤S440、安全处理器将加密的固件内容和固件目标认证码加载到物理内存的固件临时信息中。
步骤S450、安全处理器基于芯片标识派生的密钥,对加密的固件内容进行解密。
由于安全处理器可访问芯片的FUSE中保存的芯片标识,因此安全处理器在读取加密的固件内容后,可基于芯片标识派生密钥,从而使用芯片标识派生的密钥,对加密的固件内容进行解密。
步骤S460、安全处理器根据芯片标识派生的密钥以及解密的固件内容的当前哈希结果,重新确定解密的固件内容的固件当前认证码。
针对解密的固件内容,安全处理器可确定解密的固件内容的当前哈希结果,从而根据芯片标识派生的密钥以及解密的固件内容的当前哈希结果,重新确定解密的固件内容的固件当前认证码。在可选实现中,安全处理器可先识别解密的固件内容是否为全0,在识别解密的固件内容不为全0时,执行步骤S460。
步骤S470、安全处理器比较所述固件当前认证码与所述固件目标认证码是否一致,若是,执行步骤S480,若否,执行步骤S490。
步骤S480、安全处理器将固件临时信息中加密的固件内容和固件目标认证码,加载到物理内存的固件关键信息中。
安全处理器比较固件当前认证码与固件目标认证码一致,则验证固件内容完整,可将固件临时信息中加密的固件内容和固件目标认证码,加载到物理内存的固件关键信息中,此时,固件关键信息中的固件内容仍是加密的,从而,后续虚拟机启动时,安全处理器在使用固件服务时,可基于芯片标识派生的密钥,对固件关键信息中加密的固件内容进行解密,以实现固件服务,同时由于固件关键信息中的固件内容是加密的,因此可保障固件关键信息中的固件内容的安全性。
步骤S490、安全处理器重新生成固件数据,将重新生成的固件数据写入所述缓冲区,重新生成的固件数据包括重新生成的加密的固件内容,和固件目标认证码。
可选的,若流程中存在安全处理器识别解密的固件内容是否为全0的步骤,则安全处理器也可在识别解密的固件内容为全0时,执行步骤S490;具体的,安全处理器可在识别解密的固件内容为全0,或者,固件目标认证码与固件当前认证码不一致的情况下,重新生成固件数据,如重新生成身份证书;重新生成的固件数据中,固件内容仍是加密的,因此重新生成的固件数据包括重新生成的加密的固件内容和固件目标认证码,其中,重新生成的固件内容可以是加密状态,重新生成的固件目标认证码可以不是加密的;
在可选实现中,针对重新生成的固件内容,安全处理器可基于芯片标识派生的密钥,以及重新生成的固件内容的哈希结果,重新生成固件目标认证码,并且,安全处理器可基于芯片标识派生的密钥,对重新生成的固件内容进行加密,得到重新生成的加密的固件内容,从而重新生成的加密的固件内容和固件目标认证码,可形成重新生成的固件数据。
步骤S500、安全处理器将缓冲区更新消息传递给虚拟机管理器。
步骤S510、虚拟机管理器基于缓冲区中重新生成的固件数据,更新模拟文件。
由于重新生成的固件内容为加密的,因此虚拟机管理器更新模拟文件后,更新的模拟文件中的固件内容仍是加密的,从而可提升模拟文件中加密的固件内容被篡改的难度,提升固件数据的安全性。
本申请实施例可在使用文件系统的模拟文件,模拟保存固件数据的NVM的情况下,基于本申请实施例改进的固件数据加载方法,实现模拟文件中的固件数据至物理内存的高速加载,且不具有次数限制,提高了固件数据加载至物理内存的速度和可靠性。同时,通过芯片标识派生的密钥,对模拟文件中的固件内容进行加密,可提升固件内容的安全性。
作为本申请实施例的一种实现示例,上述任一方案所述的固件数据可以是身份证书,例如PEK(Platform Endorsement Key,平台的身份标识)证书;PEK证书可在虚拟机启动时,用于实现虚拟机平台的身份验证,当然固件数据也可以是验证用户身份的身份证书,本申请实施例对于身份证书的具体类型并不加以限制;无论固件数据为何种类型的身份证书,身份证书的格式均是包括证书内容和证书认证码(如证书HMAC),相应的,身份证书的证书认证码可称为是证书目标认证码,安全处理器针对证书内容的当前哈希结果所确定的证书认证码可称为是证书当前认证码;关于固件数据为身份证书情况下的固件数据加载方案,可参照本申请实施例上述描述的固件数据加载方法的流程同理实现,如将流程中的固件数据替换为身份证书,固件内容替换为证书内容,固件目标认证码替换为证书目标认证码(如证书目标HMAC),固件当前认证码替换为证书当前认证码(如证书当前HMAC),关于具体内容此处不再展开说明。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
下面从安全处理器的角度,对本申请实施例提供的固件数据加载装置进行介绍,下文描述的固件数据加载装置可以认为是,安全处理器为实现本申请实施例提供的固件数据加载方法所需设置的功能模块。下文描述的固件数据加载装置的内容,可与上文描述的固件数据加载方法的内容,相互对应参照。
在可选实现中,图8示出了本申请实施例提供的固件数据加载装置的可选框图,如图8所示,该装置可以包括:
缓冲读取模块100,用于从物理内存的缓冲区读取固件数据,其中,所述缓冲区保存有虚拟机管理器从文件系统的模拟文件中读取的固件数据,所述模拟文件为用于模拟存储固件数据的非易失性存储器的文件,所述固件数据包括固件内容和固件目标认证码;
临时加载模块,用于将读取的固件内容和固件目标认证码加载到物理内存的固件临时信息中;
完整性验证模块120,用于基于所述固件目标认证码,验证固件内容是否完整;
关键加载模块130,用于若验证固件内容完整,将固件临时信息中的固件内容和固件目标认证码,加载到物理内存的固件关键信息中。
可选的,完整性验证模块120,用于基于所述固件目标认证码,验证固件内容是否完整,包括:
根据芯片标识派生的密钥以及固件内容的当前哈希结果,重新确定固件内容的固件当前认证码;
比较所述固件当前认证码与所述固件目标认证码,其中,比较结果为所述固件当前认证码与所述固件目标认证码一致,则验证固件内容完整,比较结果为所述固件当前认证码与所述固件目标认证码不一致,则验证固件内容不完整。
可选的,缓冲读取模块100,用于从物理内存的缓冲区读取固件数据,包括:
获取虚拟机管理器传递的所述缓冲区的物理地址;
根据所述物理地址从缓冲区中读取固件内容和固件目标认证码。
可选的,所述物理地址为缓冲区的起始物理地址;相应的,缓冲读取模块100,用于根据所述物理地址从缓冲区中读取固件内容和固件目标认证码包括:
根据缓冲区的起始物理地址以及设定的第一偏移量,从缓冲区中读取固件内容,以及根据缓冲区的起始物理地址以及设定的第二偏移量,从缓冲区中读取固件目标认证码。
可选的,图9示出了本申请实施例提供的固件数据加载装置的另一可选框图,结合图8和图9所示,该装置还可以包括:
内容识别模块140,用于在完整性验证模块基于所述固件目标认证码,验证固件内容是否完整之前,识别固件内容是否为全0;其中,内容识别模块若识别固件内容不为全0,则完整性验证模块进入执行所述基于所述固件目标认证码,验证固件内容是否完整的步骤。
可选的,图10示出了本申请实施例提供的固件数据加载装置的再一可选框图,结合图9和图10所示,该装置还可以包括:
数据更新模块150,用于若识别固件内容为全0,或者,验证固件内容不完整,重新生成固件数据,将重新生成的固件数据写入所述缓冲区;将缓冲区更新消息传递给虚拟机管理器,以便虚拟机管理器基于缓冲区中重新生成的固件数据,更新模拟文件。
可选的,在本申请实施例中,所述芯片标识存储在芯片的保险丝FUSE中,且所述FUSE仅允许安全处理器访问。
可选的,所述模拟文件中的固件数据为加密的固件数据,所述加密的固件数据基于所述芯片标识派生的密钥进行加密;相应的,完整性验证模块120,用于根据芯片标识派生的密钥以及固件内容的当前哈希结果,重新确定固件内容的固件当前认证码,包括:
基于芯片标识派生的密钥,对加密的固件内容进行解密;
根据芯片标识派生的密钥以及解密的固件内容的当前哈希结果,重新确定固件内容的固件当前认证码。
可选的,关键加载模块130,用于将固件临时信息中的固件内容和固件目标认证码,加载到物理内存的固件关键信息中包括:
将固件临时信息中加密的固件内容和固件目标认证码,加载到物理内存的固件关键信息中。
可选的,数据更新模块150,用于重新生成固件数据包括:
重新生成固件内容,基于芯片标识派生的密钥以及重新生成的固件内容的哈希结果,重新生成固件目标认证码;
基于芯片标识派生的密钥,对重新生成的固件内容进行加密,得到重新生成的加密的固件内容,所述重新生成的加密的固件内容和固件目标认证码,形成重新生成的固件数据。
在可选实现中,本申请实施例所述的固件数据具体为身份证书,所述固件内容具体为身份证书的证书内容,所述固件目标认证码具体为身份证书的证书目标HMAC。
可选的,图11示出了本申请实施例提供的固件数据加载装置的又一可选框图,结合图8和图11所示,该装置还可以包括:
固件服务模块160,用于在虚拟机启动时,利用所述固件关键信息中的固件数据,实现固件服务。
本申请实施例提供的固件数据加载装置,可在使用文件系统的模拟文件模拟保存固件数据的NVM的情况下,实现模拟文件中的固件数据至物理内存的高速加载,且不具有次数限制,提高了固件数据加载至物理内存的速度和可靠性。同时,通过芯片标识派生的密钥,对模拟文件中的固件内容进行加密,可提升固件内容的安全性。
本申请实施例还提供一种安全处理器,该安全处理器可通过装载上述所述的固件数据加载装置,以实现本申请实施例提供的安全处理器角度的固件数据加载方法。本申请实施例提供的安全处理器可被配置为,执行安全处理器角度的固件数据加载方法。
本申请实施例还提供一种芯片,如SOC芯片,该芯片可以配置虚拟机管理器和安全处理器,其中,虚拟机管理器被配置为:打开文件系统中的模拟文件,并在物理内存中分配缓冲区,所述缓冲区的大小不小于所述模拟文件的文件大小,其中,所述模拟文件为用于模拟存储固件数据的非易失性存储器的文件,所述固件数据包括固件内容和固件目标认证码;将模拟文件中的固件数据加载到所述缓冲区;
所述安全处理器被配置为:从物理内存的缓冲区读取固件数据,其中,所述缓冲区保存有虚拟机管理器从文件系统的模拟文件中读取的固件数据,所述模拟文件为用于模拟存储固件数据的非易失性存储器的文件,所述固件数据包括固件内容和固件目标认证码;将读取的固件内容和固件目标认证码加载到物理内存的固件临时信息中;基于所述固件目标认证码,验证固件内容是否完整;若验证固件内容完整,将固件临时信息中的固件内容和固件目标认证码,加载到物理内存的固件关键信息中。
可选的,安全处理器和虚拟机管理器的具体功能可参照前文相应部分的描述,此处不再赘述。
本申请实施例还提供一种电子设备,该电子设备可以包括上述所述的芯片,以实现固件数据快速、可靠的加载至物理内存。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。
Claims (16)
1.一种固件数据加载方法,其特征在于,所述方法应用于安全处理器,所述方法包括:
从物理内存的缓冲区读取固件数据,其中,所述缓冲区保存有虚拟机管理器从文件系统的模拟文件中读取的固件数据,所述模拟文件为用于模拟存储固件数据的非易失性存储器的文件,所述模拟文件保存有安全处理器的固件的固件数据,所述固件数据包括固件内容和固件目标认证码;
将读取的固件内容和固件目标认证码加载到物理内存的固件临时信息中;
基于所述固件目标认证码,验证固件内容是否完整,所述固件目标认证码为认证固件内容完整性的参照信息;
若验证固件内容完整,将固件临时信息中的固件内容和固件目标认证码,加载到物理内存的固件关键信息中。
2.根据权利要求1所述的固件数据加载方法,其特征在于,所述基于所述固件目标认证码,验证固件内容是否完整包括:
根据芯片标识派生的密钥以及固件内容的当前哈希结果,重新确定固件内容的固件当前认证码;
比较所述固件当前认证码与所述固件目标认证码,其中,比较结果为所述固件当前认证码与所述固件目标认证码一致,则验证固件内容完整,比较结果为所述固件当前认证码与所述固件目标认证码不一致,则验证固件内容不完整。
3.根据权利要求2所述的固件数据加载方法,其特征在于,所述从物理内存的缓冲区读取固件数据包括:
获取虚拟机管理器传递的所述缓冲区的物理地址;
根据所述物理地址从缓冲区中读取固件内容和固件目标认证码。
4.根据权利要求3所述的固件数据加载方法,其特征在于,所述物理地址为缓冲区的起始物理地址;所述根据所述物理地址从缓冲区中读取固件内容和固件目标认证码包括:
根据缓冲区的起始物理地址以及设定的第一偏移量,从缓冲区中读取固件内容,以及根据缓冲区的起始物理地址以及设定的第二偏移量,从缓冲区中读取固件目标认证码。
5.根据权利要求2-4任一项所述的固件数据加载方法,其特征在于,在基于所述固件目标认证码,验证固件内容是否完整之前,所述方法还包括:
识别固件内容是否为全0,若识别固件内容不为全0,进入执行所述基于所述固件目标认证码,验证固件内容是否完整的步骤。
6.根据权利要求5所述的固件数据加载方法,其特征在于,还包括:
若识别固件内容为全0,或者,验证固件内容不完整,重新生成固件数据,将重新生成的固件数据写入所述缓冲区;
将缓冲区更新消息传递给虚拟机管理器,以便虚拟机管理器基于缓冲区中重新生成的固件数据,更新模拟文件。
7.根据权利要求6所述的固件数据加载方法,其特征在于,所述芯片标识存储在芯片的保险丝FUSE中,且所述FUSE仅允许所述安全处理器访问。
8.根据权利要求7所述的固件数据加载方法,其特征在于,所述模拟文件中的固件数据为加密的固件数据,所述加密的固件数据基于所述芯片标识派生的密钥进行加密;
所述根据芯片标识派生的密钥以及固件内容的当前哈希结果,重新确定固件内容的固件当前认证码包括:
基于芯片标识派生的密钥,对加密的固件内容进行解密;
根据芯片标识派生的密钥以及解密的固件内容的当前哈希结果,重新确定固件内容的固件当前认证码。
9.根据权利要求8所述的固件数据加载方法,其特征在于,所述将固件临时信息中的固件内容和固件目标认证码,加载到物理内存的固件关键信息中包括:
将固件临时信息中加密的固件内容和固件目标认证码,加载到物理内存的固件关键信息中。
10.根据权利要求7-9任一项所述的固件数据加载方法,其特征在于,所述重新生成固件数据包括:
重新生成固件内容,基于芯片标识派生的密钥以及重新生成的固件内容的哈希结果,重新生成固件目标认证码;
基于芯片标识派生的密钥,对重新生成的固件内容进行加密,得到重新生成的加密的固件内容,所述重新生成的加密的固件内容和固件目标认证码,形成重新生成的固件数据。
11.根据权利要求1所述的固件数据加载方法,其特征在于,所述固件数据具体为身份证书,所述固件内容具体为身份证书的证书内容,所述固件目标认证码具体为身份证书的证书目标HMAC。
12.根据权利要求1或11所述的固件数据加载方法,其特征在于,还包括:
在虚拟机启动时,利用所述固件关键信息中的固件数据,实现固件服务。
13.一种固件数据加载装置,其特征在于,所述装置应用于安全处理器,所述装置包括:
缓冲读取模块,用于从物理内存的缓冲区读取固件数据,其中,所述缓冲区保存有虚拟机管理器从文件系统的模拟文件中读取的固件数据,所述模拟文件为用于模拟存储固件数据的非易失性存储器的文件,所述模拟文件保存有安全处理器的固件的固件数据,所述固件数据包括固件内容和固件目标认证码;
临时加载模块,用于将读取的固件内容和固件目标认证码加载到物理内存的固件临时信息中;
完整性验证模块,用于基于所述固件目标认证码,验证固件内容是否完整,所述固件目标认证码为认证固件内容完整性的参照信息;
关键加载模块,用于若验证固件内容完整,将固件临时信息中的固件内容和固件目标认证码,加载到物理内存的固件关键信息中。
14.一种安全处理器,其特征在于,所述安全处理器被配置为执行如权利要求1-12任一项所述的固件数据加载方法。
15.一种芯片,其特征在于,所述芯片配置有虚拟机管理器和如权利要求14所述的安全处理器;其中,所述虚拟机管理器被配置为:
打开文件系统中的模拟文件,并在物理内存中分配缓冲区,所述缓冲区的大小不小于所述模拟文件的文件大小,其中,所述模拟文件为用于模拟存储固件数据的非易失性存储器的文件,所述固件数据包括固件内容和固件目标认证码;将模拟文件中的固件数据加载到所述缓冲区。
16.一种电子设备,其特征在于,包括如权利要求15所述的芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011129782.0A CN112241306B (zh) | 2020-10-21 | 2020-10-21 | 固件数据加载方法、装置、安全处理器、芯片及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011129782.0A CN112241306B (zh) | 2020-10-21 | 2020-10-21 | 固件数据加载方法、装置、安全处理器、芯片及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112241306A CN112241306A (zh) | 2021-01-19 |
CN112241306B true CN112241306B (zh) | 2023-06-09 |
Family
ID=74169488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011129782.0A Active CN112241306B (zh) | 2020-10-21 | 2020-10-21 | 固件数据加载方法、装置、安全处理器、芯片及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112241306B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948838A (zh) * | 2021-02-24 | 2021-06-11 | 长沙海格北斗信息技术有限公司 | 芯片加密启动方法、导航芯片及其接收机 |
CN113485785B (zh) * | 2021-06-28 | 2023-10-27 | 海光信息技术股份有限公司 | 一种虚拟化可信平台模块实现方法、安全处理器及存储介质 |
CN115828250B (zh) * | 2022-01-07 | 2024-01-26 | 宁德时代新能源科技股份有限公司 | 生产电池管理系统的方法和启动电池管理系统的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080039046A (ko) * | 2006-10-31 | 2008-05-07 | 삼성전자주식회사 | 펌웨어 업데이트 장치 및 방법 |
CN101373459A (zh) * | 2008-10-27 | 2009-02-25 | 成都市华为赛门铁克科技有限公司 | 一种制作固态硬盘的方法、系统及装置 |
CN110348204A (zh) * | 2019-06-17 | 2019-10-18 | 海光信息技术有限公司 | 一种代码保护系统、认证方法、装置、芯片及电子设备 |
CN110928646A (zh) * | 2019-11-22 | 2020-03-27 | 海光信息技术有限公司 | 一种访问共享内存的方法、装置、处理器和计算机系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9177152B2 (en) * | 2010-03-26 | 2015-11-03 | Maxlinear, Inc. | Firmware authentication and deciphering for secure TV receiver |
-
2020
- 2020-10-21 CN CN202011129782.0A patent/CN112241306B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080039046A (ko) * | 2006-10-31 | 2008-05-07 | 삼성전자주식회사 | 펌웨어 업데이트 장치 및 방법 |
CN101373459A (zh) * | 2008-10-27 | 2009-02-25 | 成都市华为赛门铁克科技有限公司 | 一种制作固态硬盘的方法、系统及装置 |
CN110348204A (zh) * | 2019-06-17 | 2019-10-18 | 海光信息技术有限公司 | 一种代码保护系统、认证方法、装置、芯片及电子设备 |
CN110928646A (zh) * | 2019-11-22 | 2020-03-27 | 海光信息技术有限公司 | 一种访问共享内存的方法、装置、处理器和计算机系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112241306A (zh) | 2021-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112241306B (zh) | 固件数据加载方法、装置、安全处理器、芯片及电子设备 | |
US8949626B2 (en) | Protection of security parameters in storage devices | |
CN102208000B (zh) | 为虚拟机镜像提供安全机制的方法和系统 | |
CN109800050B (zh) | 一种虚拟机的内存管理方法、装置、相关设备及系统 | |
US20190253417A1 (en) | Hardware device and authenticating method thereof | |
JP4795812B2 (ja) | セキュアプロセッサ | |
US20210167960A1 (en) | Certifying Authenticity of Stored Code and Code Updates | |
US20100095134A1 (en) | Programming non-volatile memory in a secure processor | |
CN105531710A (zh) | 授权在目标计算装置上执行操作的方法 | |
US8984296B1 (en) | Device driver self authentication method and system | |
CN113434853B (zh) | 一种将固件烧录至存储设备的方法及控制器 | |
EP2051181A1 (en) | Information terminal, security device, data protection method, and data protection program | |
CN110795126A (zh) | 一种固件安全升级系统 | |
CN107832589B (zh) | 软件版权保护方法及其系统 | |
CN110334531B (zh) | 虚拟机密钥的管理方法、主节点、系统、存储介质及装置 | |
WO2014059575A1 (zh) | 输入输出操作的处理方法和装置 | |
CN112882750A (zh) | Ota升级包的处理方法、装置和电子设备 | |
TW202407563A (zh) | 基於裝置所有者產生金鑰之sram物理上不可複製的功能記憶體 | |
CN114296873B (zh) | 一种虚拟机镜像保护方法、相关器件、芯片及电子设备 | |
CN116724309A (zh) | 设备和通信方法 | |
CN111310173A (zh) | 一种可信芯片的终端虚拟机身份认证方法及系统 | |
CN108390892B (zh) | 一种远程存储系统安全访问的控制方法和装置 | |
KR101711024B1 (ko) | 부정조작방지 장치 접근 방법 및 그 방법을 채용한 단말 장치 | |
CN110990111A (zh) | 一种云环境下虚拟可信根的校验方法和系统 | |
CN116450281A (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 |