CN113449283A - 由主机软件下载的基于非rom的ip固件验证 - Google Patents
由主机软件下载的基于非rom的ip固件验证 Download PDFInfo
- Publication number
- CN113449283A CN113449283A CN202011483055.4A CN202011483055A CN113449283A CN 113449283 A CN113449283 A CN 113449283A CN 202011483055 A CN202011483055 A CN 202011483055A CN 113449283 A CN113449283 A CN 113449283A
- Authority
- CN
- China
- Prior art keywords
- agent
- firmware
- memory
- processor
- level firmware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
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
- 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/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/575—Secure boot
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
公开了一种在没有ROM的情况下实现将IP独立的安全固件加载到IP代理中以建立硬件信任根的设备。该设备包括:多个代理,至少一个代理包括:仅对该至少一个代理的可信实体可访问的隔离存储器区域;以及主存储器;以及处理器,用于分配至少一个代理的隔离存储器区域的区段,验证第一级固件模块,该第一级固件模块包括指令,以使至少一个代理能够加载并验证第二级固件模块,在没有ROM的情况下将第一级固件模块放置到至少一个代理的存储器中,以建立硬件信任根。
Description
背景技术
片上系统(SOC)是将计算机或其他电子系统的所有部件集成在一起的集成电路部件。这些部件可以包括中央处理单元(CPU)、存储器、输入/输出(IO)端口和辅助存储器,所有这些都包括在单个基板或微芯片上。此外,SOC经由标准化的片上互连协议实现了第三方部件的集成。然而,添加此类部件可能导致安全漏洞。
附图说明
为了其中可以详细地理解上述特征的方式,可以通过参考实施例来进行上面简要概述的更具体的描述,该实施例中的一些在附图中示出。然而,应当注意,附图仅示出了典型的实施例,并因此不应被认为是对其范围的限制,因为本公开可以允许其他等效的实施例。
图1是根据示例的计算装置的一个实施例的示意图。
图2A至图2C是根据实施例的计算平台的示意图。
图3是根据实施例的被配置为实现由主机软件下载的基于非ROM的IP固件验证的平台的各种部件的示意图。
图4是示出根据实施例的实现由主机软件下载的基于非ROM的IP固件验证的方法中的操作的流程图。
图5是根据实施例的可适于实现由主机软件下载的基于非ROM的IP固件验证的电子设备的示意图。
具体实施方式
在下面的描述中,阐述了许多具体细节以提供各种实施例的更透彻的理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节中的一个或多个的情况下实践各种实施例。在其他情况下,没有描述众所周知的特征,以避免使任何实施例晦涩难懂。
参考“一个实施例”、“实施例”、“示例实施例”、“各种实施例”等指示这样描述的实施例可以包括特定的特征,结构或特性,但是并非每个实施例都必须包括特定的特征,结构或特性。此外,一些实施例可以具有针对其他实施例所描述的一些,全部或没有特征。在下面的描述和所附权利要求中,可以将术语“耦合”与其派生词一起使用。“耦合”用于指示两个或更多个元件彼此协作或相互作用,但是它们之间可以具有或可以不具有介入的物理或电气部件。
如在权利要求中所使用的,除非另有说明,否则使用顺序形容词“第一”、“第二”、“第三”等以描述共同元件,仅指示相似元件的不同实例被引用,并且不旨在意味着如此描述的元件必须在时间上、在空间上、以等级或以任何其他方式处于给定的顺序。
诸如片上系统(SoC),微处理器,微控制器和其他系统之类的集成电路的设计者可以使用知识产权(IP)块来简化系统设计。IP模块是可以容易集成到设计中的模块化的独立硬件块。因为IP模块是模块化且独立的,所以集成电路(IC)设计人员只需将IP模块“落入”以使用IP模块的功能。然后,系统设计人员可以建立到输入和输出的适当连接。
IP模块通常是“黑匣子”。换句话说,使用IP模块的系统集成商可能不知道,并且不需要知道IP模块的特定实施方式细节。实际上,IP模块可以作为专有的第三方单元提供,其中系统集成商无法深入了解IP模块的设计。
例如,为智能电话设计SoC的系统集成商可使用处理器核之外的IP模块,诸如存储器控制器、非易失性存储器(NVM)控制器、Wi-Fi、蓝牙、GPS、第四或第五代网络(4G或5G)、音频处理器、视频处理器、图像处理器、图形引擎、图形处理单元(GPU)引擎、安全控制器和许多其他IP模块(IP block)。在许多情况下,这些IP模块中的每个具有其自己的嵌入式微控制器,并且微控制器具有其自己的体系结构、指令集和固件加载要求。因为没有标准化的微控制器体系结构或一组固件加载要求,所以可以为每个IP模块设计自定义固件加载规程。
在例示性示例中,SoC集成商将IP模块与跨宽范围的供应商、体系结构、总线接口和引导时间特性在内部和外部设计的控制器集成。这些都可以彼此独立地设计,尤其是关于IP模块的微控制器上运行的固件加载。关于IP模块固件加载机制,目前没有硬件标准。这会使与SoC的IP集成困难而昂贵。
用于IP固件加载的自定义流程的要求具有缺点。例如,它防止重复使用具有不同IP模块的设计。在一些情况下,可能发生供应商锁定,因为SoC是围绕特别供应商的IP模块设计的。用来自不同供应商的功能相同的IP模块替换IP模块可能是昂贵的,因为需要完全重新设计固件加载机制。这增加了SoC和软件集成的成本。它还增加了安全验证所需的工作量,并且总体上增加了安全开发生命周期(SDL)的所有阶段的成本。
本文中描述的一些示例可以利用固件加载接口,也称为“仪表板(dashboard)”,其提供用于将固件加载到IP模块的标准机制。可以在IP模块内部设置硬件仪表板,或者为了与缺少固件仪表板的传统IP模块兼容,可以将固件仪表板本身设置为单独IP模块。硬件仪表板具有一个面向IP的接口,可提供针对IP的自定义指令和过程,还包括一个面向系统的界面,可为所有IP模块或IP模块块类提供通用的标准化接口。这提供了与供应商无关的固件加载接口,该接口确保如果用来自另一供应商的功能类似或相同的IP模块替换IP模块,无需重新设计系统。这可以提供直接的简易(drop-in)替换(即,在其中将固件仪表板内部地提供给IP模块的情况下),或者在最坏的情况下,用新IP模块的供应商的对应固件仪表板IP替换固件仪表板IP。系统的其他方面(包括BIOS、固件和软件)不需要与新IP模块兼容,因为它们能够与标准化固件仪表板一起操作。
固件仪表板提供了不仅与供应商无关,而且与体系结构无关的接口。ARM、AMD、和其他体系结构可以与提供对应固件仪表板的任何IP集成。在其中将可信执行环境(TEE)用于安全性的情况下,固件仪表板还可以与例如Trusty、VBS、安全控制器、早期BIOS或任何其他TEE机制兼容。这允许与TEE无关的装置安全固件加载。例如,固件仪表板可以在ARM、AMD或SoC上使用,并且可以用于集成来自任何数量的供应商的IP模块。这不仅提供了安全的输入/输出(I/O),而且还将计算功能安全地卸载到加速器,这在数据中心中是有用的。
本说明书的固件仪表板克服了因为当今普遍使用的多个体系结构和多个TEE而引起的困难。IP提供商通常具有其自己的独立设计的硬件,以及对用于其IP固件的软件的自定义期望。在没有通用机制的情况下,SoC集成商可能难以将IP与多个供应商混合并匹配。此外,一些供应商将一个IP的固件加载与其他IP耦合,从而产生了棘手的依赖性。例如,如果IP A依赖于IP B以加载安全固件,并且IP B为其存在而依赖于IP C和架构D,则SoC设计将变得充满挑战且次优。
本说明书实现了称为用于固件“仪表板”的固件加载接口的硬件微件(widget),该固件“仪表板”提取出IP固件加载所需的信息并且公开了IP外部的通用标准接口。即使IP是根据自定义的流程来设计的,但它对外部代理以及用于固件验证和加载的体系结构都有一些一般性期望。本公开中公开的固件仪表板使用这些概括以创建通用可插拔的标准硬件微件,并为固件加载并验证提供标准外部流程。IP端的内部实施方式仍可以因IP而不同。
固件仪表板支持多种访问控制样式,包括例如基于范围的、基于TLP位的以及基于引导阶段的访问控制。此外,它封装了IP和SoC以及SoC内的IP和其他IP之间的所有交互以用于IP固件管理。
有利的是,IP可独立于彼此、独立于将它们集成到哪些SoC中以及独立于在那些SoC上使用哪些OS或软件来设计。因此,利用固件仪表板,可以跨许多不同的体系结构重复使用IP。此外,软件部件诸如BIOS或OS驱动程序可将IP固件加载模块从一个IP重复使用到另一个,并且也可从一个平台移植到另一个,或从一个生态系统移植到另一个。这实现快速SoC集成与降低了用于第三方IP的软件的验证成本。由于标准化,它还提供了关于IP固件完整性的改进的安全保证。
本说明书按照三种类型的IP模块说明了固件加载接口或仪表板的使用。应当注意,提供这些风格仅出于说明目的,并且可以提供具有其他固件加载特性的其他类型的IP模块。
类型1是具有只读存储器(ROM)和内置硬件加密模块的IP。该IP模块能够建立其自己的信任根,但依赖于外部代理如操作系统或另一控制器将固件复制到SoC可寻址存储器以用于其加载。IP然后可以使用直接存储器访问(DMA)以访问和验证固件,并开始执行该固件。
类型2是没有ROM或加密模块的IP。它完全依赖于外部实体来验证固件的完整性,并将其下载到内部随机访问存储器(RAM)中,诸如静态RAM(SRAM)或寄存器文件。
类型3是没有内部ROM或加密模块的IP。它期望外部代理加载并验证固件。然后,外部代理必须将固件指向IP。IP直接从该外部存储器执行。
参考附图更具体地描述了用于提供IP独立的安全固件负载的系统和方法。应当注意,在所有附图中,某些参考数字可以重复以指示特定的设备或块在整个附图上是完全或基本一致的。然而,这并不意图暗示所公开的各种实施例之间的任何特别关系。在某些示例中,元件的类可由特定的参考数字(“微件(widget)10”)来指代,而该类的各个种类或示例可由带连字符的数字(“第一特定微件10-1”和“第二特定微件10-2”)指代。
下面的附图中的某些详细描述了实现上述实施例的示例体系结构和系统。在一些实施例中,上述一个或多个硬件部件和/或指令如下详述被仿真或实现为软件模块。
图1是根据示例的计算装置的一个实施例的示意图。根据一个实施例,计算装置100包括承载集成电路(“IC”)的计算机平台,诸如片上系统(“SoC”或“SOC”),其将计算装置100的各种硬件和/或软件部件集成在单个芯片上。如图所示,在一个实施例中,计算装置100可以包括任何数量和类型的硬件和/或软件部件,诸如(但不限于)图形处理单元114(“GPU”或简称为“图形处理器”)、图形驱动程序116(也称为“GPU驱动程序”、“图形驱动程序逻辑”、“驱动程序逻辑”、用户模式驱动程序(UMD)、UMD、用户模式驱动程序框架(UMDF)、UMDF或简称为“驱动程序”)、中央处理单元112(“CPU”或简称为“应用处理器”)、可信执行环境(TEE)113、存储器108、网络装置、驱动程序等,以及输入/输出(I/O)源104,诸如触摸屏、触摸面板、触摸板、虚拟或常规键盘、虚拟或常规鼠标、端口、连接器等。计算装置100可以包括用作计算装置100的硬件和/或物理资源与用户之间的界面的操作系统(OS)106,以及可以被实现为固件并且驻留在存储器108的非易失性区段中的基本输入/输出系统(BIOS)107。
应当理解,对于某些实施方式,比上述示例更少或更多配备的系统可能是优选的。因此,计算装置100的配置可以根据实施方式的不同而变化,这取决于许多因素,诸如价格约束、性能要求、技术改进或其他情况。
实施例可以被实现为以下中的任一种或组合:使用母板互连的一个或多个微芯片或集成电路、硬连线逻辑、由存储器装置存储并由微处理器执行的软件、固件、专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)。术语“逻辑”、“模块”、“部件”、“引擎”和“机制”例如可以包括软件或硬件和/或其组合,诸如固件。
可以使用一个或多个存储器芯片、控制器、CPU(中央处理单元)、使用主板互连的微芯片或集成电路、专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)来实现实施例。术语“逻辑”例如可以包括软件或硬件和/或软件和硬件的组合。
图2A至图2C是根据实施例的计算平台的示意图。在一些示例中,平台200可包括类似于上述计算装置100的SOC 210。如图2A所示,平台200包括经由CPU 112通信耦合到一个或多个软件部件280的SOC 210。此外,SOC 210包括经由系统架构205耦合的其他计算装置部件(例如,存储器108)。在一个实施例中,系统架构205包括集成的片上系统架构(IOSF),以提供标准化的片上互连协议以用于耦合SOC 210内的互连协议(IP)代理230(例如,IP模块230A和230B)。在此实施例中,互连协议提供了标准化的接口,以使第三方能够设计要并入SOC 210中的逻辑,诸如IP代理230。
根据实施例,IP代理230可以包括通用处理器或微控制器232(例如,顺序或乱序核)、固定功能单元、图形处理器、I/O控制器、显示控制器等、SRAM 234,并可包括加密模块236。在此实施例中,每个IP代理230包括硬件接口235以提供标准化以使IP代理230能够与SOC 210部件通信。例如,在其中IP代理230是第三方视觉处理单元(VPU)的实施例中,接口235提供标准化以使VPU能够经由架构205访问存储器108。
SOC 210还包括安全控制器240,其作为安全引擎操作以对SOC210执行各种安全操作(例如,安全处理、密码功能等)。在一个实施例中,安全控制器240包括IP代理230,其被实现以执行安全操作。此外,SOC 210包括非易失性存储器250。非易失性存储器250可以被实现为外围部件互连快速(PCIe)存储驱动器,诸如固态驱动器(SSD)或非易失性存储器快速(NVMe)驱动器。例如,非易失性存储器250存储引导(例如,基本输入/输出系统(BIOS))和装置(例如,IP代理230和安全控制器240)固件。
图2B示出了平台200的另一个实施例,其包括经由IP 230A耦合到SOC 210的部件270。在一个实施例中,IP 230A作为将部件260连接到SOC 210的网桥,诸如PCIe根端口操作。在该实施例中,部件260可以被实现为包括硬件接口235的PCIe装置(例如,交换机或端点)以使部件260能够与SOC 210部件通信。
图2C示出了平台200的又一个实施例,其包括经由云网络210耦合到平台200的计算装置270。在该实施例中,计算装置270包括云代理275,其被提供经由软件280对SOC 210的接入。
现代SOC集成了嵌入式IP子系统(IPSS)(在本文中也称为IP代理或仅称为代理),以提供增强的能力,诸如音频、感测、图像处理等。这些IP代理下载并执行复杂的固件堆栈。为了易于部署和闪存大小考虑,这些固件堆栈与主机软件(通常是驱动程序)封装在一起并分发。在操作系统环境中在主机处理器上执行的驱动程序可能不在IP代理的信任边界内。需要可信实体以验证由主机软件下载的固件堆栈的完整性。
在一些示例中,已经使用基于ROM的方法以验证要在IP代理中实现的固件堆栈的完整性。在一些示例中,专用IP-ROM包括验证逻辑以及嵌入式密钥以验证固件完整性。该模型要求固件由制造商验证和证实,因此它仅支持制造商签名的固件。不能支持第三方签名的固件。在该模型中,驱动程序将固件加载于对主机处理器可见的系统存储器中,并且IP代理ROM将固件复制到IP代理的隔离/受保护的存储器中,并使用嵌入式密钥对其进行验证。成功验证后,IP代理可以执行已验证的固件。该模型虽然有效,但引发了许多问题。
第一,某些IP代理既不包括密码硬件,它们也不访问平台部件,诸如闪存引导介质、可信平台模块、SOC熔断器等。要解决这些限制并仍支持自主验证,需要将签名密钥ma嵌入IP代理的ROM中,并且IP ROM需要包括对RSA验证的支持和哈希功能,以验证驱动程序加载的固件。需要32-64KB的ROM大小以容纳RSA-3k和SHA-384。在ROM中包含该大小必须增加IP代理的大小、复杂性和风险。此外,固件更新修复不能支持错误修复、其他功能或模式,而只能通过单步执行来支持。
第二,取决于平台配置,主机环境可能会或可能不会可信。在一切都可信的可信主机环境中,签名和验证是多余的并且可以避免。在这种情况下,可以简单地跳过验证。无法确定是否完成跳过验证直到平台配置时间为止,并且基于SKU的ROM并不总是可行的。可替代地,对ROM的包带(strips)和其他输入机制会增加暴露于漏洞、错误和潜在危害安全性。
第三,为了支持OEM创新和差异化,执行功能诸如音频和感测的IP代理允许并支持在其IP代理上执行第三方开发的代码。第三方开发的代码也由第三方签名密钥签名。在IPROM中嵌入IP供应商密钥是可行的,然而,将第三方签名密钥嵌入是不实际的。制造商成为第三方代码的签名机构也不实际。可扩展的解决方案需要允许OEM在其生产线中发生OEM密钥供应时,经由OEM可编程熔断器或可信的平台模块来供应其公共签名密钥。
第四,由于IP代理不包括对安全平台部件的支持访问,因此它不能支持防回滚以支持安全版本号的保存和还原。
在其他示例中,融合安全管理引擎(CSME)可以与外部密钥管理系统结合利用。由于外部密钥管理,因此可以支持英特尔和第三方两者签名的FIRMWARE。以这种方法,CSMEIP使用Intel或第三方签名密钥为其他IP验证固件的完整性。驱动程序将固件加载到主机处理器可见的系统存储器中。IP ROM将固件从主机存储器复制到隔离/受保护的存储器区域,并要求CSME对其验证。CSME验证隔离存储器区域中的固件并通知IP验证状态。收到来自CSME的成功验证指示后,IP ROM将执行已验证的固件。此模型还提出了若干个问题。
第一,该模型没有上述IP-ROM方法的限制,因为与仅在早期引导阶段中可用的BIOS不同,CSME是始终可用的服务。然而,它在需要验证服务的IP代理和CMSE之间创建了依赖性。IP代理CSME的ROM之间需要专有的消息接口来支持该选项。
第二,CSME被客户视为黑匣子,因为其不提供我们的客户所期望的透明度和灵活性水平。CSME在支持IP固件的调试和部署方面的投入和启用成本被某些客户认为禁止采用IP。
第三,CMSE可能在某些平台配置(诸如高保证平台)中被禁用,或者由于客户报告的操作系统环境中平台的比例很小而由于未知原因而无法运行。由于CSME无法用于为IP固件提供验证服务,因此这使IP无法用于此类配置。
第四,IP代理之间的依赖性可能会在引导流程期间产生瓶颈和响应延迟,并在执行过程中造成瓶颈,从而影响上市时间。
为了能够验证由不可信的实体加载的固件,可信实体(如BIOS)验证并放置小的ROM_EXTN模块,该模块包括加密逻辑(RSA、SHA、与主机的通信)以及英特尔和第三方签名密钥在隔离内存区域中(IMR)专用于IP。当IP退出重置时,其隐式地跳转到/执行其IMR中的内容。IP主机SW驱动程序在开始与IP硬件/固件通信后,请求下载固件。ROM_EXTN模块处理主机驱动程序请求,并支持固件的主机下载以及使用IMR中放置的密钥对其进行验证。
在一些示例中,可以通过为平台中的IP代理在两级固件加载模型处实现来解决这些和其他问题。在一些示例中,第一级固件限于使IP代理能够加载第二级固件所需的指令和安全要素(例如,密码、密钥、安全版本号、验证逻辑等),这可以是完整的功能固件模块。第一级固件加载过程由平台的可信实体执行,该过程会验证第一级固件并将其加载到IP代理的受保护/隔离存储器区域中。IP代理执行第一级固件,并自主验证由不可信实体加载的第二级固件。
作为概述,在引导过程的早期,对于大多数SOC IP代理,安全引导平台BIOS被认为是可信实体,并且在可信计算基础(TCB)中。如上所述,在一些示例中,BIOS可以经由接口对寄存器进行编程。嵌入式系统IP代理通常在存储器中包括隔离存储器区域,该区域由BIOS设置。在一些示例中,BIOS为隔离存储器区域分配和设置保护,并且保护由SOC硬件强制执行。
如上所述,IP代理固件分为两个部分,并在两级中加载。第一级固件仅包括IP代理加载第二级固件并自动对其进行验证所需的功能。在一些示例中,可以在制造时在平台闪存中供应第一级固件,并且可以由BIOS访问该第一级固件。第二级固件由驱动程序封装和分发,并驻留在驱动程序可访问的操作系统磁盘分区中。
在某些示例中,验证固件(包括第三者固件)所需的公共密钥是使用已经存在的密钥供应机制提供的-通常是闪存中的密钥清单,其根密钥位于不可变/防篡改介质(例如熔断器或可信的平台模块)中。BIOS将第一级固件加载于IP代理的隔离存储器区域中并验证。BIOS还将放置验证第二级FW所需的公钥,包括任何第三方FW密钥。BIOS对IP寄存器接口进行编程,该接口只有IP的可信实体才能访问,该接口具有隔离存储器区域的位置信息以及已验证的FW和密钥材料的位置。
在引导过程的后期,BIOS退出并跳转到操作系统映像。操作系统加载IP代理的驱动程序,该驱动程序将IP代理的固件从操作系统文件系统复制到系统存储器中,并使IP的控制器退出复位。退出复位时,IP代理中的ROM或固件状态机跳转到由可信的BIOS编程的引导加载程序位置。引导加载程序从这里开始控制并负责验证驱动程序加载的固件。它将驱动程序加载的固件从主机可访问的系统存储器复制到IP的受保护存储器,并使用由BIOS在隔离存储器区域IMR中放置的密钥材料验证固件,以将驱动程序加载的固件从系统存储器复制到本地SRAM并验证,并将其刷新到隔离存储器区域。
将参考图3至图4描述示例过程的细节。
图3是根据实施例的被配置为实现由主机软件下载的基于非ROM的IP固件验证的平台的各个部件的示意图。参考图3,部件包括平台BIOS 107、一个或多个IP代理230、主机存储器108和IP驱动程序350。如上所述,一个或多个IP代理230包括能够容纳固件252的非易失性存储器(例如,ROM)238、静态随机访问存储器(SRAM)234和接口235,该接口235包括一个或多个寄存器335。SRAM 234包括隔离存储器区域330。
图4是示出根据实施例的用于实现IP独立安全固件加载的方法中的操作的流程图。在一些示例中,图4中描绘的操作可以由计算装置100的BIOS 107实现。
参考图4,在操作410处,BIOS 107在IP代理230的SRAM 234中分配隔离存储器区域(IMR)330。如上所述,BIOS 107还可以为隔离存储器区域330建立保护,这由SOC 100的硬件来实施。
在操作415处,BIOS 107从外部存储器加载并验证第一级固件。在操作420处,BIOS107将已验证的第一级固件336放置在隔离存储器区域330中。在一些示例中,BIOS 107还可以将引导信息334放入隔离存储区域330中,该引导信息包括使IP代理230能够验证第二级固件和任何第三方固件所需的公钥。在操作425处,BIOS 107利用隔离存储器区域330的位置信息(即,存储器地址偏移信息)和隔离存储器区域330中已验证的第一级固件和任何公钥的位置(即,存储器地址偏移),对IP代理230的(多个)加载接口寄存器335进行编程。在操作430,BIOS 107退出引导流程并允许引导流程过程跳转到操作系统106,该操作系统加载用于IP代理230的驱动350。
在操作435处,驱动350将用于IP代理的第二级固件从由操作系统106的文件系统管理的主机文件复制到主机系统存储器中。在操作440处,驱动程序350将负责该过程的(多个)CPU核脱离复位状态。在退出复位之后,IP代理230中的ROM 238或固件状态机跳转(操作445)到引导加载程序位置,其由可信BIOS编程以执行隔离存储器区域330的BIOS内容332区段中的第一级固件336。
在操作450处,第一级固件被执行(例如,由引导加载程序执行)并且执行IP代理230所需的任何其他的隔离步骤。例如,隔离存储器区域330中的BIOS内容332可以被IP代理230标记为只读(如图3所示),以防止恶意或错误的固件将放置在隔离存储器区域330的BIOS内容区段332中的内容覆写(overwriting)。
在操作455处,未验证的第二级固件320从主机存储器108被复制到IP代理230的存储器。例如,第二级固件可以被复制到IP代理230的SRAM 234中。在操作460处,例如使用在操作410中提供的验证信息334验证第二级固件。在操作465处,将已验证的第二级固件338复制到SRAM 234的隔离存储器区域330中,以用于由IP代理230执行。
因此,图3的结构和图4中描绘的操作允许两级固件加载过程。第一级固件消除了在IP代理中包括用于密码能力、嵌入式密钥等的专用ROM的需求。其还消除了IP代理之间进行通信以验证固件的要求。此外,在第一级固件而不是IP代理中的专用ROM中实现验证支持减少或消除对ROM的需求,并有助于将ROM大小减小32-64KB。为了解决安全问题、硅片问题以及其他功能和模式,发布第一级固件将足以满足硅片步进更换ROM的需求。这有助于降低平台/SOC风险。最后,由于IP代理不必依靠CSME或其他IP的验证功能即可迅速提供IP功能,因此两级过程可提高响应能力。
图5是根据实施例的可以适于实现IP独立的安全固件加载的电子装置的示意图。在各种实施例中,计算体系结构500可以包括或被实现为电子装置的部分。在一些实施例中,计算体系结构500可以代表例如实现上述操作环境的一个或多个部件的计算机系统。在一些实施例中,计算体系结构500可以代表实现本公开中描述的一种或多种技术的DNN训练系统的一个或多个部分或部件。实施例不限于此上下文。
如本申请中所使用的,术语“系统”和“部件”以及“模块”旨在指代与计算机有关的实体,其为硬件、硬件和软件的组合、软件或执行中的软件,其示例由示例性计算体系结构500提供。例如,部件可以是但不限于在处理器上运行的过程、处理器、硬盘驱动器、(光和/或磁存储介质的)多个存储驱动器、对象、可执行文件、执行线程、程序和/或计算机。作为说明,在服务器上运行的应用程序和服务器两者都可以是部件。一个或多个部件可以驻留在过程和/或执行线程内,并且部件(component)可以位于一台计算机上和/或分布在两台或更多台计算机之间。此外,部件可以由各种类型的通信介质彼此通信地耦合以协调操作。协调可以涉及信息的单向或双向交换。例如,部件可以以通过通信介质传送的信号的形式来传送信息。该信息可以被实现为分配给各种信号线的信号。在此类分配中,每个消息是信号。然而,其他实施例可以可替代地采用数据消息。此类数据消息可以通过各种连接发送。示例性连接包括并行接口、串行接口和总线接口。
计算体系结构500包括各种共同计算元件,诸如一个或多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外围装置、接口、振荡器、定时装置、视频卡、声卡、多媒体输入/输出(I/O)部件、电源等。然而,实施例不限于由计算体系结构500实现。
如图5所示,计算体系结构500包括一个或多个处理器502和一个或多个图形处理器508,并且可以是单处理器台式系统、多处理器工作站系统或具有大量处理器502或处理器核507的服务器系统。在实施例中,系统500是处理平台,其结合在片上系统(SoC或SOC)集成电路内以用于在移动、手持或嵌入式装置中使用。
系统500的实施例可以包括或结合在基于服务器的游戏平台、包括游戏和媒体控制台的游戏控制台、移动游戏控制台、手持游戏控制台或在线游戏控制台内。在一些实施例中,系统500是移动电话、智能电话、平板计算装置或移动互联网装置。数据处理系统500还可包括可穿戴装置、与可穿戴装置耦合或集成在可穿戴装置内,诸如智能手表可穿戴装置、智能眼镜装置、增强现实装置或虚拟现实装置。在一些实施例中,数据处理系统500是电视或机顶盒装置,其具有一个或多个处理器502以及由一个或多个图形处理器508生成的图形界面。
在一些实施例中,一个或多个处理器502各自包括一个或多个处理器核507以处理指令,该指令在被执行时执行针对系统和用户软件的操作。在一些实施例中,一个或多个处理器核507中的每个被配置为处理特定指令集509。在一些实施例中,指令集509可以促进复杂指令集计算(CISC)、精简指令集计算(RISC)或经由超长指令字(VLIW)计算。多个处理器核507可以各自处理不同的指令集509,该指令集可以包括实现对其他指令集的仿真的指令。处理器核507还可以包括其他处理装置,诸如数字信号处理器(DSP)。
在一些实施例中,处理器502包括高速缓存存储器504。取决于体系结构,处理器502可以具有单个内部高速缓存或多级内部高速缓存。在一些实施例中,高速缓存存储器在处理器502的各种部件之间共享。在一些实施例中,处理器502还使用外部高速缓存(例如,3级(L3)高速缓存或最后一级高速缓存(LLC))(未示出),其可以使用已知的高速缓存一致性技术在处理器核507之间共享。寄存器文件506另外包括在处理器502中,该处理器可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以特定于处理器502的设计。
在一些实施例中,一个或多个处理器502与一个或多个接口总线510耦合,以在处理器502与系统中的其他部件之间传输通信信号,诸如地址、数据或控制信号。在一个实施例中,接口总线510可以是处理器总线,诸如直接媒体接口(DMI)总线的版本。然而,处理器总线不限于DMI总线,并且可以包括一个或多个外围部件互连总线(例如,PCI、PCI快速),存储器总线或其他类型的接口总线。在一个实施例中,(多个)处理器502包括集成的存储器控制器516和平台控制器集线器530。存储器控制器516实现存储器装置与系统500的其他部件之间的通信,而平台控制器集线器(PCH)530提供经由本地I/O总线到I/O装置的连接。
存储器装置520可以是动态随机访问存储器(DRAM)装置、静态随机访问存储器(SRAM)装置、闪存装置、相变存储器装置或具有适当性能以用作过程存储器的一些其他存储器装置。在一个实施例中,存储装置520可以作为用于系统500的系统存储器操作,以存储数据522和指令521,以用于当一个或多个处理器502执行应用程序或过程时使用。存储器控制器集线器516还与可选的外部图形处理器512耦合,该外部图形处理器512可以与处理器502中的一个或多个图形处理器508通信以执行图形和媒体操作。在一些实施例中,显示装置511可以连接到(多个)处理器502。显示装置511可以是内部显示装置中的一个或多个,如在移动电子装置或膝上型装置中,或者是经由显示接口(例如DisplayPort等)连接的外部显示装置。在一个实施例中,显示装置511可以是头戴式显示器(HMD),诸如用于虚拟现实(VR)应用或增强现实(AR)应用中的立体显示装置。
在一些实施例中,平台控制器集线器530使外围装置能够经由高速I/O总线连接到存储器装置520和处理器502。I/O外围装置包括但不限于音频控制器546、网络控制器534、固件接口528、无线收发器526、触摸传感器525、数据存储装置524(例如,硬盘驱动器、闪存等)。数据存储装置524可以经由存储接口(例如,SATA)或经由外围总线,诸如外围部件互连总线(例如,PCI、PCI快速)来连接。触摸传感器525可以包括触摸屏传感器、压力传感器或指纹传感器。无线收发器526可以是Wi-Fi收发器、蓝牙收发器或移动网络收发器诸如3G、4G或长期演进(LTE)收发器。固件接口528使得能够与系统固件进行通信,并且可以是例如统一的可扩展固件接口(UEFI)。网络控制器534可以启用到有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线510耦合。在一个实施例中,音频控制器546是多通道高清晰度音频控制器。在一个实施例中,系统500包括可选的传统I/O控制器540,以用于将传统(例如,个人系统2(PS/2))装置耦合到系统。平台控制器集线器530还可以连接到一个或多个通用串行总线(USB)控制器542,其连接输入装置,诸如键盘和鼠标543组合、相机544或其他USB输入装置。
例如,可提供实施例作为计算机程序产品,该计算机程序产品可以包括其上存储有机器可执行指令的一个或多个机器可读介质,该机器可执行指令当由一个或多个机器诸如计算机、计算机网络或其他电子装置执行时,使得该一个或多个机器执行根据本文中所描述实施例的操作。机器可读介质可以包括但不限于软盘、光盘、CD-ROM(紧凑光盘只读存储器)和磁光盘、ROM、RAM、EPROM(可擦可编程只读存储器)、EEPROM(电可擦可编程只读存储器)、磁卡或光卡、闪存或适用于存储机器可执行指令的其他类型的介质/机器可读介质。
此外,可以将实施例下载为计算机程序产品,其中可以通过经由通信链路(例如,调制解调器和/或网络连接)体现在载波或其他传播介质中和/或由载波或其他传播介质调制的一个或多个数据信号,将程序从远程计算机(例如,服务器)传输到请求计算机(例如,客户端)。
在整个文档中,术语“用户”可以可互换地称为“查看者”、“观察者”、“发言人”、“人”、“个人”、“最终用户”等。应当注意,在整个本文档中,术语如“图形域”可以与“图形处理单元”、“图形处理器”或简称“GPU”可互换地引用,并且类似地,“CPU域”或“主机域”可以与“计算机处理单元”、“应用处理器”或简称“CPU”可互换地引用。
应当注意,术语如“节点”、“计算节点”、“服务器”、“服务器装置”、“云计算机”、“云服务器”、“云服务器计算机”、“机器”、“主机器”、“装置”、“计算装置”、“计算机”、“计算系统”等在整个本文档中可以可互换地使用。还应当注意,术语如“应用程序”、“软件应用程序”、“程序”、“软件程序”、“程序包”、“软件程序包”等在整个本文档中可以可互换地使用。而且,术语如“工作”、“输入”、“请求”、“消息”等在整个本文档中可以可互换地使用。
在各种实施方式中,计算装置可以是膝上型计算机、上网本、笔记本计算机、超极本、智能电话、平板计算机、个人数字助理(PDA)、超移动PC、移动电话、台式计算机、服务器、机顶盒、娱乐控制单元、数码相机、便携式音乐播放器或数字录像机。该计算装置可以是固定的、便携式的或可穿戴的。在进一步的实施方式中,计算装置可以是处理数据或记录数据以用于在其他地方处理的任何其他电子装置。
附图和前述描述给出了实施例的示例。本领域技术人员将理解,所描述的元件中的一个或多个可以很好地组合成单个功能元件。可替代地,某些元件可以被分成多个功能元件。来自一个实施例的元件可以被添加到另一个实施例。例如,本文中描述的过程的顺序可以改变,并且不限于本文中描述的方式。此外,任何流程图的动作不需要按照所示的顺序执行;也不必需要执行所有动作。而且,不依赖于其他动作的那些动作可以与其他动作并行地执行。实施例的范围绝不受这些具体示例的限制。无论说明书中是否明确给出,众多变化,诸如结构、尺寸和材料使用中的差异都是可能的。实施例的范围至少与所附权利要求所给的范围一样广泛。
例如,可以提供实施例作为计算机程序产品,该计算机程序产品可以包括其上存储有机器可执行指令的一种或多种暂时性或非暂时性机器可读存储介质,该机器可执行指令当由一个或多个机器诸如计算机、计算机网络或其他电子装置执行时,可引起该一个或多个机器执行根据本文中所描述实施例的操作。机器可读介质可以包括但不限于软盘、光盘、CD-ROM(紧凑光盘只读存储器)和磁光盘、ROM、RAM、EPROM(可擦可编程只读存储器)、EEPROM(电可擦可编程只读存储器)、磁卡或光卡、闪存或适用于存储机器可执行指令的其他类型的介质/机器可读介质。
一些实施例涉及示例1,其包括设备,该设备包括:多个代理,至少一个代理包括仅该至少一个代理的可信实体可访问的隔离存储器区域;以及主存储器;以及处理器,用以分配至少一个代理的隔离存储器区域的区段;验证第一级固件模块,该第一级固件模块包括使至少一个代理能够加载并验证第二级固件模块的指令以;将第一级固件模块放置到至少一个代理的隔离存储器中;以及将第二级固件模块放置在至少一个代理可访问的主机存储器中。
示例2包括示例1的主题,处理器用于将与第一级固件模块相关联的公钥加载到隔离存储器区域中。
示例3包括示例1和2的主题,处理器用于将与第一级固件模块相关联的安全版本号(SVN)加载到隔离存储器区域中。
示例4包括示例1至3的主题,处理器用于利用IMR信息对至少一个代理的加载接口寄存器进行编程。
示例5包括示例1至4的主题,其中在加载IMR信息后锁定加载接口寄存器。
示例6包括示例1至5的主题,处理器用以加载IP驱动程序。
示例7包括示例1至6的主题,其中至少一个代理将第二级固件从主机存储器复制到至少一个代理的主存储器;以及验证第二级固件。
一些实施例涉及示例8,其包括处理器实现的方法,该方法包括:分配多个代理中的至少一个代理的隔离存储器区域的区段,仅至少一个代理的可信实体可访问该隔离存储器区域;验证第一级固件模块,该第一级固件模块包括指令以使至少一个代理能够加载并验证第二级固件模块;将第一级固件模块放置到至少一个代理的隔离存储器中;以及将第二级固件模块放置在至少一个代理可访问的主机存储器中。
示例9包括示例8的主题,还包括将与第一级固件模块相关联的公钥加载到隔离存储器区域中。
示例10包括示例8和9的主题,还包括将与第一级固件模块相关联的安全版本号(SVN)加载到隔离存储器区域中。
示例11包括示例8至10的主题,还包括利用IMR信息对至少一个代理的加载接口寄存器进行编程。
示例12包括示例8至11的主题,其中在加载IMR信息后锁定加载接口寄存器。
示例13包括示例8至12的主题,还包括加载IP驱动程序。
示例14包括示例8至13的主题,还包括将第二级固件从主机存储器复制到至少一个代理的主存储器;以及验证第二级固件。
一些实施例涉及示例15,该示例15包括其上存储有指令的至少一个非暂时性计算机可读介质,该指令当由处理器执行时使处理器分配多个代理中的至少一个代理的隔离存储器区域的区段,仅至少一个代理的可信实体可访问该隔离存储器区域;验证第一级固件模块,该第一级固件模块包括使至少一个代理能够加载并验证第二级固件模块的指令;将第一级固件模块放置到至少一个代理的隔离存储器中;以及将第二级固件模块放置在至少一个代理可访问的主机存储器中。
示例16包括示例15的主题,还包括指令,该指令当由处理器执行时使处理器将与第一级固件模块相关联的公钥加载到隔离存储器区域中。
示例17包括示例15和16的主题,还包括指令,该指令当由处理器执行时使处理器将与第一级固件模块相关联的安全版本号(SVN)加载到隔离存储器区域中。
示例18包括示例15至17的主题,还包括指令,该指令当由处理器执行时使处理器利用IMR信息对至少一个代理的加载接口寄存器进行编程。
示例19包括示例15至18的主题,还包括指令,该指令当由处理器执行时,其中在加载IMR信息后锁定加载接口寄存器。
示例20包括示例15至19的主题,还包括指令,该指令当由处理器执行时使处理器加载IP驱动程序。
示例21包括示例15至20的主题,其中至少一个代理将第二级固件从主机存储器复制到至少一个代理的主存储器;以及验证第二级固件。
上面的细节已参考特定实施例提供。然而,本领域技术人员将理解,在不脱离如所附权利要求所阐述的实施例中的任一个的更广泛的精神和范围的情况下,可以对特定实施例进行各种修改和改变。因此,前面的描述和附图应被认为是例示性的而不是限制性的。
Claims (14)
1.一种设备,其包括:
多个代理,至少一个代理包括:
在不利用ROM的情况下由固件实现以为固件建立硬件信任根的功能;
主存储器;以及
处理器,用于:
分配所述至少一个代理的隔离存储器区域的区段;
验证第一级固件模块,所述第一级固件模块包括使所述至少一个代理能够加载并验证第二级固件模块的指令;
在没有ROM的情况下,将所述第一级固件模块提供到所述至少一个代理的所述存储器;以及
将所述第二级固件模块放置在所述至少一个代理可访问的主机存储器中。
2.根据权利要求1所述的设备,所述处理器用于:
将与所述第一级固件模块相关联的公钥加载到所述隔离存储器区域中。
3.根据权利要求1所述的设备,所述处理器用于:
将与所述第一级固件模块关联的安全版本号(SVN)加载到所述隔离存储器区域中。
4.根据权利要求1所述的设备,所述处理器用于:
利用IMR信息对所述至少一个代理的加载接口寄存器进行编程。
5.根据权利要求4所述的设备,其中在加载所述IMR信息后锁定所述加载接口寄存器。
6.根据权利要求1所述的设备,所述处理器用于:
加载IP驱动程序。
7.根据权利要求6所述的设备,其中所述至少一个代理用于:
将所述第二级固件从所述主机存储器复制到所述至少一个代理的所述主存储器;以及
验证所述第二级固件。
8.一种处理器实现的方法,其包括:
分配多个代理中的至少一个代理的隔离存储器区域的区段,仅所述至少一个代理的可信实体可访问所述隔离存储器区域;
验证第一级固件模块,所述第一级固件模块包括使所述至少一个代理能够加载并验证第二级固件模块的指令;
在没有ROM的情况下,将所述第一级固件模块提供到所述至少一个代理的存储器;以及
将所述第二级固件模块放置在所述至少一个代理可访问的主机存储器中。
9.根据权利要求8所述的方法,还包括:
将与所述第一级固件模块相关联的公钥加载到所述隔离存储器区域中。
10.根据权利要求8所述的方法,还包括:
将与所述第一级固件模块相关联的安全版本号(SVN)加载到所述隔离存储器区域中。
11.根据权利要求8所述的方法,还包括:
利用IMR信息对所述至少一个代理的加载接口寄存器进行编程。
12.根据权利要求11所述的方法,其中在加载所述IMR信息后锁定所述加载接口寄存器。
13.根据权利要求8所述的方法,还包括:
加载IP驱动程序。
14.根据权利要求13所述的方法,还包括:
将所述第二级固件从所述主机存储器复制到所述至少一个代理的主存储器;以及
验证所述第二级固件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/832,489 | 2020-03-27 | ||
US16/832,489 US11768941B2 (en) | 2020-03-27 | 2020-03-27 | Non-ROM based IP firmware verification downloaded by host software |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113449283A true CN113449283A (zh) | 2021-09-28 |
Family
ID=77808663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011483055.4A Pending CN113449283A (zh) | 2020-03-27 | 2020-12-16 | 由主机软件下载的基于非rom的ip固件验证 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11768941B2 (zh) |
CN (1) | CN113449283A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11768941B2 (en) | 2020-03-27 | 2023-09-26 | Intel Corporation | Non-ROM based IP firmware verification downloaded by host software |
CN117933153A (zh) * | 2024-03-21 | 2024-04-26 | 成都电科星拓科技有限公司 | I3c总线验证系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11783040B2 (en) * | 2021-07-09 | 2023-10-10 | Dell Products L.P. | Cryptographically verifying a firmware image with boot speed in an information handling system |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102152782B1 (ko) * | 2014-07-07 | 2020-09-07 | 삼성전자주식회사 | 메모리 장치를 제조하는 방법과 작동 방법, 및 이를 포함하는 시스템의 작동 방법 |
US10657260B2 (en) * | 2017-09-19 | 2020-05-19 | Sling Media Pvt Ltd | Electronic devices and methods supporting unsecured system-on-chip secure boot functionalities |
US11550917B2 (en) * | 2019-06-28 | 2023-01-10 | Intel Corporation | Standardized interface for intellectual property blocks |
US11768941B2 (en) | 2020-03-27 | 2023-09-26 | Intel Corporation | Non-ROM based IP firmware verification downloaded by host software |
-
2020
- 2020-03-27 US US16/832,489 patent/US11768941B2/en active Active
- 2020-12-16 CN CN202011483055.4A patent/CN113449283A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11768941B2 (en) | 2020-03-27 | 2023-09-26 | Intel Corporation | Non-ROM based IP firmware verification downloaded by host software |
CN117933153A (zh) * | 2024-03-21 | 2024-04-26 | 成都电科星拓科技有限公司 | I3c总线验证系统 |
CN117933153B (zh) * | 2024-03-21 | 2024-06-04 | 成都电科星拓科技有限公司 | I3c总线验证系统 |
Also Published As
Publication number | Publication date |
---|---|
US11768941B2 (en) | 2023-09-26 |
US20210303692A1 (en) | 2021-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11741230B2 (en) | Technologies for secure hardware and software attestation for trusted I/O | |
US10031993B1 (en) | Application store model for dynamic reconfiguration of a field-programmable gate array (FPGA) | |
CN106605233B (zh) | 使用处理器提供可信执行环境 | |
US9525555B2 (en) | Partitioning access to system resources | |
US7640541B2 (en) | In-system reconfiguring of hardware resources | |
KR100692347B1 (ko) | 플랫폼 구성 레지스터를 리세트하기 위한 시스템 및 방법 | |
CN113449283A (zh) | 由主机软件下载的基于非rom的ip固件验证 | |
JP6538610B2 (ja) | 外部不揮発性メモリに間接アクセスするセキュリティデバイス | |
US8296528B2 (en) | Methods and systems for microcode patching | |
US20210303691A1 (en) | Ip independent secure firmware load | |
US11281768B1 (en) | Firmware security vulnerability verification service | |
US10430589B2 (en) | Dynamic firmware module loader in a trusted execution environment container | |
US20210342169A1 (en) | Emulating physical security devices | |
US11531760B1 (en) | Baseboard management controller (BMC)-based security processor | |
CN113268447A (zh) | 计算机架构及其内的访问控制、数据交互及安全启动方法 | |
US10838742B1 (en) | Multi-user hidden feature enablement in firmware | |
US10956564B2 (en) | Systems and methods for key-based isolation of system management interrupt (SMI) functions and data | |
JP2021012679A (ja) | フラッシュエミュレーション機能を有するコントローラ及びコントロール方法 | |
US20240220626A1 (en) | Secure boot using parallelization | |
US11847226B1 (en) | Baseboard Management Controller (BMC)-based security processor | |
US11861010B2 (en) | Extensible device hosted root of trust architecture for integrated circuits | |
WO2023230834A1 (en) | Confidential compute architecture for silicon initialization for ip protection and assurance | |
Vasudevan et al. | Available Hardware Primitives |
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 |