CN114008617A - 固件防回滚 - Google Patents

固件防回滚 Download PDF

Info

Publication number
CN114008617A
CN114008617A CN202080043953.XA CN202080043953A CN114008617A CN 114008617 A CN114008617 A CN 114008617A CN 202080043953 A CN202080043953 A CN 202080043953A CN 114008617 A CN114008617 A CN 114008617A
Authority
CN
China
Prior art keywords
firmware
spl
secure processor
boot loader
processor
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
Application number
CN202080043953.XA
Other languages
English (en)
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.)
ATI Technologies ULC
Original Assignee
ATI Technologies ULC
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 ATI Technologies ULC filed Critical ATI Technologies ULC
Publication of CN114008617A publication Critical patent/CN114008617A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

一种平台安全处理器被启动,并读取一组一次写入存储位以获得最低安全补丁级别(SPL)。所述安全处理器然后验证固件安全表的表SPL大于或等于所述最低SPL。所述固件安全表包括针对固件代码模块的多个固件标识符,并且多个检查SPL值各自与所述固件标识符中的相应一个相关联。所述安全处理器通过以下方式来验证多个固件代码模块中的SPL值:针对每个固件代码模块,访问模块以获得其固件SPL值,并且检查相应的固件SPL值是否等于或大于所述固件安全表中的相应的检查SPL值。

Description

固件防回滚
背景技术
当固件被发布用于新的计算产品时,可能会在产品上市后发现漏洞。在发现漏洞时,可以在可能的情况下通过硬件、固件和/或软件更新来缓解所述漏洞。在此类情况下,如果漏洞很严重并且可通过软件或固件寻址,则期望实施撤销机制,使得被认为有漏洞的软件或固件版本不被允许在系统上执行。在此类情况下,为了维护功能性,必须对软件或固件进行场内升级。
已经开发了固件防回滚特征以管理固件升级的安全性。一些防回滚特征使用一次写入存储位诸如一次性可编程熔丝来跟踪某个固件的授权版本号。然而,通常存在有限数量的一次性可编程熔丝可用于这些解决方案。此外,由于在复杂的计算平台中发生的固件更新的数量,这些解决方案需要大量的一次写入存储位。
附图说明
图1以框图形式示出了根据一些实施方案的包括防回滚安全特征的加速处理单元(APU)。
图2以框图形式示出了根据一些实施方案的PSP的更详细视图。
图3以流程图形式示出了根据一些实施方案的用于校验和加载固件的过程。
图4以流程图形式示出了根据一些实施方案的用于校验和加载固件和软件的另一个过程。
图5以表的形式示出了根据一些实施方案的固件安全表(FST)。
图6示出了根据一些实施方案的固件模块的图示。
在以下描述中,在不同附图中使用相同的附图标记来指示类似或相同的项目。除非另有说明,术语“耦接的”及其相关联的动词形式包括通过本领域已知的方法的直接连接和间接电气连接,并且除非另有说明,直接连接的任何描述意味着使用合适的间接电气连接形式的替代实施方案。
具体实施方案
一种方法验证计算平台的固件。所述方法包括启动安全处理器,并且在所述安全处理器处,读取一组一次写入存储位以获得最低安全补丁级别(SPL)。所述方法验证固件安全表的表SPL大于或等于最低SPL,所述固件安全表包括针对固件代码模块的多个固件标识符,并且多个检查SPL值各自与固件标识符中的相应一个相关联。所述方法还通过以下方式来验证多个固件代码模块:针对每个固件代码模块,(a)访问每个相应的固件模块并获得相应的固件SPL值,(b)访问固件安全表以获得检查SPL值中的相应一个,以及(c)检查相应的固件SPL值是否等于或大于相应的检查SPL值。
数据处理平台包括非易失性存储器和耦接到所述非易失性存储器的片上系统。所述片上系统包括:处理器,其具有一个或多个处理核心;和安全处理器,其包括微控制器核心、耦接到所述微控制器核心的一组一次写入存储位、耦接到所述微控制器核心的随机存取存储器(RAM)和耦接到所述微控制器核心的安全启动只读存储器(ROM)。所述安全处理器操作以启动所述安全处理器,并且读取所述一组一次写入存储位以获得最低安全补丁级别(SPL)。所述安全处理器验证固件安全表的表SPL大于或等于最低SPL,所述固件安全表包括针对固件代码模块的多个固件标识符,并且多个检查SPL值各自与固件标识符中的相应一个相关联。所述安全处理器还通过以下方式来验证多个固件代码模块:针对每个固件代码模块,(a)访问每个相应的固件模块并获得相应的固件SPL值,(b)访问固件安全表以获得检查SPL值中的相应一个,以及(c)检查相应的固件SPL值是否等于或大于相应的检查SPL值。
安全处理器包括微控制器核心、耦接到所述微控制器核心的一组一次写入存储位、耦接到所述微控制器核心的RAM和耦接到所述微控制器核心的安全启动ROM。所述安全处理器操作以启动所述安全处理器,并且读取所述一组一次写入存储位以获得最低SPL。所述安全处理器验证固件安全表的表SPL大于或等于所述最低SPL,所述固件安全表包括针对固件代码模块的多个固件标识符,并且多个检查SPL值各自与所述固件标识符中的相应一个相关联。所述安全处理器还通过以下方式来验证多个固件代码模块:针对每个固件代码模块,(a)访问每个相应的固件模块并获得相应的固件SPL值,(b)访问固件安全表以获得检查SPL值中的相应一个,以及(c)检查相应的固件SPL值是否等于或大于相应的检查SPL值。
一种或多种有形的非暂时性计算机可读介质保持程序产品,所述程序产品包括可由安全处理器执行的指令。所述指令可执行以启动安全处理器,并且在所述安全处理器处,读取一组一次写入存储位以获得最低安全补丁级别(SPL)。所述指令可进一步执行以验证固件安全表的表SPL大于或等于最低SPL,所述固件安全表包括针对固件代码模块的多个固件标识符,并且多个检查SPL值各自与固件标识符中的相应一个相关联。所述指令可进一步执行以通过以下方式来验证多个固件代码模块:针对每个固件代码模块,(a)访问每个相应的固件模块并获得相应的固件SPL值,(b)访问固件安全表以获得检查SPL值中的相应一个,以及(c)检查相应的固件SPL值是否等于或大相应的检查SPL值。
图1以框图形式示出了根据一些实施方案的包括防回滚安全特征的加速处理单元(APU)100。APU100被实现为片上系统(SoC),所述SoC可为多种主机数据处理平台的一部分。虽然在该实施方案中示出了APU,但是也可使用其他数据处理平台诸如中央处理单元(CPU)或图形处理单元(GPU)。APU100通常包括CPU核心复合体110、图形核心120、一组显示引擎130、内存管理中心140、数据组构150、一组外围设备控制器160、一组外围总线控制器170、系统管理单元(SMU)180、平台安全处理器(PSP)210、闪存存储器220和一组存储控制器190。
CPU核心复合体110包括CPU核心112和CPU核心114。在该示例中,CPU核心复合体110包括两个CPU核心,但在其他实施方案中,CPU核心复合体110可包括任意数量的CPU核心。CPU核心112和114中的每一者双向连接到形成控制组构的系统管理网络(SMN)145并双向连接到数据组构150,并且能够向数据组构150提供存储器访问请求。CPU核心112和114中的每一者可为单一核心或者还可为具有两个或更多个单一核心的核心复合体,所述两个或更多个单一核心共享某些资源诸如高速缓存。
图形核心120是高性能图形处理单元(GPU),所述GPU能够以高度集成和并行的方式执行图形操作诸如顶点处理、片段处理、着色、纹理融合等。图形核心120双向连接到SMN145并双向连接到数据组构150,并且能够向数据组构150提供存储器访问请求。在这方面,APU 100可支持其中CPU核心复合体110和图形核心120共享相同存储空间的统一存储器架构或支持其中CPU核心复合体110和图形核心120共享所述存储空间的一部分而图形核心120还使用CPU核心复合体110不可访问的专用图形存储器的存储器架构。
显示引擎130渲染和光栅化由图形核心120生成的对象以在监视器上进行显示。图形核心120和显示引擎130双向连接到共同的存储器管理中心140以统一转换成存储器中的合适地址,并且存储器管理中心140双向连接到数据组构150以生成此类存储器访问并接收从存储系统返回的读出数据。
数据组构150包括用于路由任何存储器访问代理与存储控制器190之间的存储器访问请求和存储器响应的纵横开关。所述数据组构还包括由基本输入/输出系统(BIOS)限定的、用于基于系统配置来确定存储器访问的目的地的系统存储器映射,并为每个虚拟连接提供缓冲。
外围设备控制器160包括USB控制器162和串行高级技术附件(SATA)接口控制器164,其中的每一者双向连接到系统中心166并双向连接到SMN 145。这两个控制器仅为可在APU 100中使用的外围设备控制器的示例。
外围总线控制器170包括系统控制器中心172和外围设备控制器中心174,其中的每一者双向连接到输入/输出(I/O)中心176并双向连接到SMN 145。系统控制器中心172通过合适的通信链路连接到闪存存储器220。I/O中心176还双向连接到系统中心166并双向连接到数据组构150。因此,例如,CPU核心可通过数据组构150路由通过I/O中心176的途径对USB控制器162、SATA接口控制器164、系统控制器中心172或外围设备控制器中心174中的寄存器进行编程。
SMU 180为控制APU100上的资源的操作并同步其间的通信的本地控制器。SMU 180管理APU100上的各种处理器的通电排序并经由重置、使能和其他信号来控制多个片外装置。SMU 180还管理各种处理器以及其他功能块的电力。
平台安全处理器(PSP)210是控制APU 100上的固件启动过程的本地安全控制器。PSP 210还执行某些软件校验和固件防回滚(FAR)特征,如将在下文进一步描述的。
虽然示出了SoC实现方式,但这并非限制性的,并且其他计算平台也可受益于本文所述的FAR技术。
图2以框图形式示出了根据一些实施方案的PSP 210的更详细视图。PSP 210包括微控制器核心212、RAM诸如连接到微控制器核心212的静态RAM(SRAM)216、连接到微控制器核心212的启动ROM 218和连接到微控制器核心212的多个一次写入存储位214。
通常,PSP210操作为APU 100的安全处理器。PSP 210可包括附加功能块(为清楚起见未示出),诸如用于执行安全校验的密码逻辑部件和用于与SMN 145和数据组构150进行通信的接口逻辑部件。在操作中,PSP 210执行APU100的安全启动(包括实现本文的FAR特征),并实现由CPU核心复合体110和APU 100的其他外围设备控制器请求的其他安全相关的功能。
启动ROM 218优选地为具有防篡改特征的安全启动ROM,并保持用于初始化PSP210的可执行代码和配置数据。
一次写入存储位214优选地包括多个一次写入位,诸如32位阵列,所述32位阵列被配置为用于存储如下所述的最低安全补丁级别(SPL)的阵列。一次写入存储位214还可包括单个位或用于跟踪其他值的其他位阵列。所述位优选地实现为与PSP210位于片上的熔丝,但可使用任何合适的一次写入技术。虽然该特定的安全处理器实现方式被提供为示例,但是在与合适的安全存储器和一次写入存储位结合时,可以采用其他类型的安全处理器来实现本文所述的特征。
图3以流程图形式示出了根据一些实施方案的用于校验和加载固件的过程300。过程300通常在安全处理器诸如PSP 210上进行并实现FAR特征,所述FAR特征限定用作硬件信任根的一次写入安全补丁等级(SPL)。最低SPL是在对固件进行重大更新时更新的最低版本号,以防止固件回滚到先前版本。过程300在框302处开始,其中从启动ROM(诸如与安全处理器集成在一起的安全ROM)启动安全处理器。在该实施方案中,安全处理器从其启动的启动ROM代码包括控制过程300直到框320的指令,其中允许引导加载程序代码执行和控制过程300。
在框304处,过程300检查是否启用安全状态。该检查可包括检查通常在工厂配置期间写入或刻录的一个或多个一次写入位,以确定需要安全状态并且FAR特征被启用。如果安全状态未被启用,则过程300前进到框306,其中执行主机平台的非安全启动,不使用FAR特征。
如果在框304处启用了安全状态,则过程300前进到框308,其中读取一组一次写入存储位以获得最低安全补丁等级(SPL)。如果读取失败,或返回无效值,则过程300前进到框310,其中停止启动过程。此类停止可包括将对该失败的记录存储在非易失性存储器中,记录该停止的原因。
在框308处成功读取一次写入存储位之后,在框312处加载并校验固件安全表(FST)。通常,FST从可在主机SoC上或在单独的芯片诸如图1的闪存存储器220中的非易失性存储器加载到安全处理器上的SRAM 216中。所述FST包括针对固件代码模块的多个固件标识符,并且多个检查SPL值各自与所述固件标识符中的相应一个相关联,如关于图5至图6进一步所述。FST校验包括根据存储的签名或其他合适的值对FST进行密码检查,以确认所述FST未改动。如果在框312处校验失败,则进入框313处的恢复程序。该程序可使启动停止或尝试恢复先前的FST版本,如果将满足最低SPL检查的先前的FST版本可用的话。还可以使用非安全启动到安全模式或其他合适的恢复程序。
如果在框312处成功加载并校验FST,则框314读取与FST一起存储的表SPL值,并验证表SPL大于或等于在框308处获得的最低SPL。如果表SPL未通过检查,则过程300前进到框313处的恢复程序。
如果在框314处表SPL通过检查,则在框316处加载并校验引导加载程序。所述引导加载程序优选地加载自片外非易失性存储器诸如闪存存储器220(图1)。所述校验包括合适的已知密码验证,如将引导加载程序可执行代码的签名与存储值进行比较,或使用公钥检查签名。如果引导加载程序未能成功加载和校验,则过程300前进到框313的恢复程序。
如果在框316处成功加载和校验引导加载程序,则在框318处将引导加载程序SPL与来自FST的引导加载程序检查SPL进行比较。该比较包括检查引导加载程序SPL值是否大于或等于存储在FST中的引导加载程序检查SPL值。引导加载程序FST优选地与引导加载程序一起从引导加载程序的固件标头(诸如关于图6所述)进行检索。如果在框318处检查失败,则过程300前进到框313处的恢复程序。
如果在框318处检查通过,则在框320处开始将引导加载程序加载到安全处理器并执行。这时,引导加载程序控制过程300以验证启动主机平台所需的剩余固件模块。过程300前进到框322,其中引导加载程序针对主机系统上的各种控制器开始迭代地加载、校验和验证固件模块,直到所有期望的固件模块都被加载。所述加载和校验类似于以上所述的那些进行,针对相应的固件模块计算签名或其他密码检查,并将其与存储值进行比较。如果固件模块未能成功加载和校验,则过程300前进到框313的恢复程序。
如果在框322处固件模块通过校验,则框324继续进行对固件模块的验证,以防止恶意回滚活动。所述验证包括:针对每个固件代码模块,(a)访问每个相应的固件模块并获得相应的固件SPL值,(b)访问所述FST以获得所述检查SPL值中的相应一个,以及(c)检查所述相应的固件SPL值是否等于或大于所述相应的检查SPL值。优选地,固件SPL值与固件模块一起存储在固件标头中。
如果在框324处验证通过,则在框326处,所述固件被加载到主机平台上的目标控制器。框326可包括从安全处理器到目标控制器的用于加载并执行所述固件的命令。如果在框324处验证失败,则过程300前进到框313处的恢复程序。
在框326处每个固件模块被加载之后,过程300前进到框322以加载并校验下一个固件模块,直到所有模块均被加载。
虽然在该实施方案中使用了单个FST,但是其他实施方案可使用多个FST,每一个类似于本文所述的FST根据一次写入存储SPL值来检查SPL值,或者根据FST中的条目来检查SPL值。例如,引导加载程序可针对安全操作系统提供对固件模块的加载和校验。辅助FST可用于此,其可由在安全处理器上运行的引导加载程序进行验证,然后可用于安全操作系统以在另一个处理器诸如CPU核心复合体110(图1)的控制下验证附加固件模块。在此类情况下,安全处理器可满足来自安全操作系统的加载或加载并校验固件模块的请求。
虽然过程300包括验证固件模块,但是其他类型的模块也可以根据FST进行验证,以提供防回滚能力。例如,可以与上述固件模块类似的方式验证并加载安全操作系统模块或库。
虽然在该实施方案中,过程300在来自安全启动ROM的可执行代码的控制下开始并将控制传递给引导加载程序,但是其他版本可以不同的方式操作安全处理器。在一些实施方案中,安全启动ROM可在不加载引导加载程序的情况下执行所有固件模块验证。在其他版本中,诸如图4的过程,引导加载程序可控制读取一次写入存储位并验证FST的过程。
如可以理解的,用于验证固件更新的FST在本文的使用与直接在一次写入存储器中跟踪固件版本的技术相比优势在于需要更少的一次写入存储位。根据最低SPL对FST的验证提供与直接使用一次写入存储器类似的安全级别,但使用更少的电路区域。
图4以流程图形式示出了根据一些实施方案的用于校验和加载固件和软件的另一个过程400。过程400具有许多与过程300类似的操作,但是由执行引导加载程序的安全处理器执行而不是由启动ROM代码控制对表SPL的初始验证。该技术为安全处理器提供更多的可配置性和可升级性,同时仍然保持上述防回滚功能。
过程400在框402处开始,其中安全处理器执行存储在片外非易失性存储器中的引导加载程序。框404和406与框304和306类似地进行,只是它们是在引导加载程序而不是启动ROM代码的控制下。在框404处,过程400检查是否启用安全状态。如果安全状态未被启用,则过程300前进到框306,其中执行主机平台的非安全启动,不使用FAR特征。
如果在框404处启用了安全状态,则过程400前进到框408,其中在引导加载程序的控制下,安全处理器读取一组一次写入存储位以获得最低安全补丁等级(SPL)。如果读取失败,或返回无效值,则过程400前进到框410,其中停止启动过程。
在框408处成功读取一次写入存储位之后,在框412处加载并校验固件安全表(FST)。FST类似于关于图3所述的FST。如果在框412处校验失败,则进入框413处的恢复程序。该程序可使启动停止或尝试恢复先前的FST版本,如果仍满足框414处的最低SPL检查的先前的FST版本可用的话。还可以使用非安全启动到安全模式或其他合适的恢复程序。
如果在框412处成功加载并校验FST,则在框414处,安全处理器在引导加载程序的控制下读取与FST一起存储的表SPL值,并执行其中检查表SPL以查看是否需要更新的序列。框414检查表SPL是否小于在框408处获得的最低SPL。如果是,则过程400前进到框413处的恢复程序。
如果在框414处表SPL不小于最低SPL,则仍可能需要更新该最低SPL。框415检查该表SPL是否等于最低SPL。如果否,则过程400前进到框416,其中检查是否需要在一次写入存储位中更新最低SPL。该检查检测到已经进行了固件更新,这需要对最低SPL进行更新。所述检查可以使用一个或多个设置来实现,所述一个或多个设置可在进行更新时由安全更新代码进行配置。一次写入存储位诸如熔丝可用作SPL更新标志并由安全处理器进行检查,以查看先前是否已经设置该位来指示需要SPL更新。此类位通常为允许多次更新的安全处理器上提供的许多位中的一者。如果设置了,则引导加载程序必须更新最低SPL值。作为一次写入位的补充或替代,可进行另一个检查以检测更新。例如,可以设置指示需要将SPL更新标志设置在一次写入存储位中的BIOS标志。此类场景仅应该用于BIOS被信任为安全的架构中。如果BIOS标志需要,过程400在执行任何其他动作之前设置SPL更新标志。如果在框416处不需要最低SPL更新,则过程400前进到框418。
如果在框416处检测到需要最低SPL更新的更新,则框417通过将新值写入到一次写入存储位而将最低SPL设置到表SPL。对最低SPL的更新可能需要重新启动或可前进到框418。
框418通过检查引导加载程序SPL是否大于或等于FST中的引导加载程序检查SPL来验证所述引导加载程序。如果引导加载程序SPL未通过该检查,则过程400前进到框413处的恢复程序。
如果在框418处引导加载程序SPL通过检查,则过程400前进到框422,其中开始加载、校验和验证固件模块。在框422处,引导加载程序针对主机系统上的各种控制器开始迭代地加载、校验和验证固件模块,直到所有期望的固件模块都被加载。所述加载和校验类似于以上所述的那些进行,针对相应的固件模块计算签名或其他密码检查,并将其与存储值进行比较。如果固件模块未能成功加载和校验,则过程400前进到框413的恢复程序。
如果在框422处固件模块通过校验,则框424继续进行对固件模块的验证,以防止恶意回滚活动。所述验证包括:针对每个固件代码模块,(a)访问每个相应的固件模块并获得相应的固件SPL值,(b)访问所述FST以获得所述检查SPL值中的相应一个,以及(c)检查所述相应的固件SPL值是否等于或大于所述相应的检查SPL值。优选地,固件SPL值与固件模块一起存储在固件标头中。
如果在框424处验证通过,则在框426处,所述固件被加载到主机平台上的目标控制器。框426可包括从安全处理器到目标控制器的用于加载并执行所述固件的命令。如果在框424处验证失败,则过程400前进到框413处的恢复程序。在框426处每个固件模块被加载之后,过程400前进到框422以加载并校验下一个固件模块,直到所有模块均被加载。
应注意,在框415、416和417处更新最低SPL值的程序也可集成到图3的过程300中,在启动ROM或引导加载程序的控制下执行。
图5以表的形式示出了根据一些实施方案的固件安全表(FST)500。如上所述,FST500优选地存储在非易失性存储器诸如闪存存储器中,然后由PSP210加载到SRAM 216(图2)中,在该SRAM中FST被用于验证固件。FST 500包括一组固件标识符,如由固件代码模块的固件图像ID列所示。FST 500还包括多个检查SPL值,其各自与固件标识符中的相应一个相关联。
图6示出了根据一些实施方案的固件模块600的图示。固件模块600包括用于与本文的FAR技术一起使用的可执行固件程序代码和固件标头。所述固件标头被呈现为文件标头或以其他方式与存储在非易失性存储器中的固件可执行代码相关联。所述固件标头包括与FST中的相关联ID匹配的固件图像ID。标头版本标识标头的版本,其可用于解释标头格式。包括固件SPL,其在上文所述的验证中用于根据存储在FST中的相关联的SPL值进行检查。其他数据项诸如签名也可包括在所述固件标头中。此外,类似结构可用于将由安全处理器验证的其他固件或软件,诸如安全操作系统(OS)可执行代码或其他软件代码。
图1的APU100或其任何部分或数据处理平台的采用本文技术的其他实现方式可以由数据库或其他数据结构形式的计算机可访问数据结构来描述或表示,所述数据库或其他数据结构可以由程序读取并直接或间接用于制造集成电路。例如,所述数据结构可以是诸如Verilog或VHDL的高级设计语言(HDL)中的硬件功能的行为级描述或寄存器传送级(RTL)描述。所述描述可由合成工具读取,所述合成工具可以合成所述描述以产生包括来自合成库的门的列表的网表。网表包括一组门,所述一组门也表示包括集成电路在内的硬件的功能。然后,所述网表可以被放置并且路由以产生描述将被应用于掩模的几何形状的数据集。然后,可在各种半导体制造步骤中使用掩模来生产集成电路。替代地,根据需要,计算机可访问存储介质上的数据库可以是网表(具有或不具有合成库)或数据集,或者是图形数据系统(GDS)II数据。
虽然已经描述了特定实施方案,但是对这些实施方案的各种修改对本领域技术人员来说将是显而易见的。例如,可以采用多个FST,每个具有存储在一次写入存储位中的最低SPL。可使用FST验证其他类型的软件。一次写入存储位、启动ROM和非易失性存储器的特定位置可在安全约束内发生改变。此外,安全处理器可以根据存储在FST中的SPL值对固件或软件模块进行验证,作为主机系统中其他处理器或控制器的服务。还可以在不改变本文所述的安全FAR功能的情况下对存储在FST中的数据值使用各种加密方案。
因此,所附权利要求旨在涵盖落入本公开的范围内的所公开的实施方案的所有修改。

Claims (25)

1.一种验证计算平台的固件的方法,其包括:
启动安全处理器;
在所述安全处理器处,读取一组一次写入存储位以获得最低安全补丁级别(SPL);
在所述安全处理器处,验证固件安全表的表SPL大于或等于所述最低SPL,所述固件安全表包括针对固件代码模块的多个固件标识符,并且多个检查SPL值各自与所述固件标识符中的相应一个相关联;以及
通过以下方式来验证多个固件代码模块:针对每个固件代码模块,(a)访问每个相应的固件模块并获得相应的固件SPL值,(b)访问所述固件安全表以获得所述检查SPL值中的相应一个,以及(c)检查所述相应的固件SPL值是否等于或大于所述相应的检查SPL值。
2.如权利要求1所述的方法,其还包括:
在验证所述多个固件代码模块之前,访问包括引导加载程序SPL值的引导加载程序,并检查所述引导加载程序SPL值是否大于或等于存储在所述固件安全表中的相关联的引导加载程序检查SPL值;
如果是,则将所述引导加载程序加载到所述安全处理器,并执行所述引导加载程序;
如果否,则执行恢复程序;并且
其中所述引导加载程序执行对所述多个固件代码模块的所述验证。
3.如权利要求2所述的方法,其中将所述引导加载程序加载到所述安全处理器包括从非易失性存储器进行加载。
4.如权利要求1所述的方法,其中启动所述安全处理器包括从与所述安全处理器集成在一起的安全只读存储器(ROM)进行启动。
5.如权利要求1所述的方法,其还包括:
将来自所述固件安全表的数据加载到所述安全处理器中的随机存取存储器(RAM)中;以及
在验证所述多个固件代码模块时访问所加载的数据。
6.如权利要求1所述的方法,其还包括更新所述固件安全表,并且与更新所述固件安全表相关联地,提高所述表SPL并将新的最低SPL值写入到所述一组一次写入存储位。
7.如权利要求1所述的方法,其还包括在验证所述固件代码模块中的所选择的固件代码模块之后,在所述安全处理器的控制下,将所述选择的固件代码模块加载到处理器并初始化所述处理器。
8.如权利要求1所述的方法,其中读取所述一组一次写入存储位包括读取一组一次性可编程熔丝。
9.一种数据处理平台,其包括:
非易失性存储器;
片上系统,所述片上系统耦接到所述非易失性存储器并且包括:
处理器,所述处理器包括一个或多个处理核心;
安全处理器,所述安全处理器包括微控制器核心、耦接到所述微控制器核心的一组一次写入存储位、耦接到所述微控制器核心的随机存取存储器(RAM)和耦接到所述微控制器核心的安全启动只读存储器(ROM);
其中所述安全处理器操作以:
启动所述安全处理器;
读取所述一组一次写入存储位以获得最低安全补丁级别(SPL);
验证固件安全表的表SPL大于或等于所述最低SPL,所述固件安全表包括针对固件代码模块的多个固件标识符,并且多个检查SPL值各自与所述固件标识符中的相应一个相关联;以及
通过以下方式来验证多个固件代码模块:针对每个固件代码模块,(a)访问每个相应的固件模块并获得相应的固件SPL值,(b)访问所述固件安全表以获得所述检查SPL值中的相应一个,以及(c)检查所述相应的固件SPL值是否等于或大于所述相应的检查SPL值。
10.如权利要求9所述的数据处理平台,其中所述安全处理器进一步操作以:
在验证所述多个固件代码模块之前,访问包括引导加载程序SPL值的引导加载程序,并检查所述引导加载程序SPL值是否大于或等于存储在所述固件安全表中的相关联的引导加载程序检查SPL值;
如果是,则将所述引导加载程序加载到所述安全处理器,并执行所述引导加载程序;
如果否,则执行恢复程序;并且
其中所述引导加载程序执行对所述多个固件代码模块的所述验证。
11.如权利要求10所述的数据处理平台,其中将所述引导加载程序加载到所述安全处理器包括从所述非易失性存储器进行加载。
12.如权利要求9所述的数据处理平台,其中启动所述安全处理器包括从与所述安全处理器集成在一起的安全ROM进行启动。
13.如权利要求9所述的数据处理平台,其中所述安全处理器进一步操作以:
将来自所述固件安全表的数据加载到所述RAM中;以及
在验证所述多个固件代码模块时访问所加载的数据。
14.如权利要求9所述的数据处理平台,其中所述安全处理器进一步操作以检测所述固件安全表的更新,并且与更新所述固件安全表相关联地,提高所述表SPL并将新的最低SPL值写入到所述一组一次写入存储位。
15.如权利要求9所述的数据处理平台,其中所述安全处理器进一步操作以在验证所述固件代码模块中的所选择的固件代码模块之后,将所述选择的固件代码模块加载到所述处理器并初始化所述处理器。
16.如权利要求9所述的数据处理平台,其中所述一组一次写入存储位包括一组一次性可编程熔丝。
17.一种安全处理器,其包括:
微控制器核心;
耦接到所述微控制器核心的一组一次写入存储位;
耦接到所述微控制器核心的随机存取存储器(RAM);并且
其中所述安全处理器操作以:
启动所述安全处理器;
读取所述一组一次写入存储位以获得最低安全补丁级别(SPL);
验证固件安全表的表SPL大于或等于所述最低SPL,所述固件安全表包括针对固件代码模块的多个固件标识符,并且多个检查SPL值各自与所述固件标识符中的相应一个相关联;以及
通过以下方式来验证多个固件代码模块:针对每个固件代码模块,(a)访问每个相应的固件模块并获得相应的固件SPL值,(b)访问所述固件安全表以获得所述检查SPL值中的相应一个,以及(c)检查所述相应的固件SPL值是否等于或大于所述相应的检查SPL值。
18.如权利要求17所述的安全处理器,其中所述安全处理器进一步操作以:
在验证所述多个固件代码模块之前,访问包括引导加载程序SPL值的引导加载程序,并检查所述引导加载程序SPL值是否大于或等于存储在所述固件安全表中的相关联的引导加载程序检查SPL值;
如果是,则将所述引导加载程序加载到所述安全处理器,并执行所述引导加载程序;
如果否,则执行恢复程序;并且
其中所述引导加载程序执行对所述多个固件代码模块的所述验证。
19.如权利要求18所述的安全处理器,其中将所述引导加载程序加载到所述安全处理器包括从非易失性存储器进行加载。
20.如权利要求19所述的安全处理器,其中所述非易失性存储器在所述安全处理器的外部。
21.如权利要求17所述的安全处理器,其还包括与所述安全处理器集成在一起的安全只读存储器(ROM),并且其中启动所述安全处理器包括从所述安全ROM进行启动。
22.如权利要求17所述的安全处理器,其中所述安全处理器进一步操作以:
将来自所述固件安全表的数据加载到所述RAM中;以及
在验证所述多个固件代码模块时访问所加载的数据。
23.如权利要求17所述的安全处理器,其中所述安全处理器进一步操作以检测所述固件安全表的更新,并且与更新所述固件安全表相关联地,提高所述表SPL并将新的最低SPL值写入到所述一组一次写入存储位。
24.如权利要求17所述的安全处理器,其中所述安全处理器进一步操作以在验证所述固件代码模块中的所选择的固件代码模块之后,将所述选择的固件代码模块加载到所述处理器并初始化所述处理器。
25.如权利要求17所述的安全处理器,其中所述一组一次写入存储位包括一组一次性可编程熔丝。
CN202080043953.XA 2019-07-03 2020-06-18 固件防回滚 Pending CN114008617A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/502,733 US11301566B2 (en) 2019-07-03 2019-07-03 Firmware anti-rollback
US16/502,733 2019-07-03
PCT/IB2020/000490 WO2021001683A1 (en) 2019-07-03 2020-06-18 Firmware anti-rollback

Publications (1)

Publication Number Publication Date
CN114008617A true CN114008617A (zh) 2022-02-01

Family

ID=74065226

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080043953.XA Pending CN114008617A (zh) 2019-07-03 2020-06-18 固件防回滚

Country Status (6)

Country Link
US (1) US11301566B2 (zh)
EP (1) EP3994598A4 (zh)
JP (1) JP7507178B2 (zh)
KR (1) KR20220027965A (zh)
CN (1) CN114008617A (zh)
WO (1) WO2021001683A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230034633A1 (en) * 2021-07-30 2023-02-02 Advanced Micro Devices, Inc. Data fabric c-state management
CN113590388B (zh) * 2021-08-06 2022-10-28 厦门紫光展锐科技有限公司 一种基于uboot的spl回滚方法及装置、存储介质、终端

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7243347B2 (en) 2002-06-21 2007-07-10 International Business Machines Corporation Method and system for maintaining firmware versions in a data processing system
US8597327B2 (en) 2006-02-03 2013-12-03 Biomet Manufacturing, Llc Method and apparatus for sternal closure
US8756694B2 (en) * 2007-03-30 2014-06-17 Microsoft Corporation Prevention of exploitation of update rollback
US8745612B1 (en) * 2011-01-14 2014-06-03 Google Inc. Secure versioning of software packages
US8627141B2 (en) * 2011-02-14 2014-01-07 Dell Products L.P. System and method for auto-failover and version matching of bootloader in an access controller
US8898654B2 (en) 2012-08-29 2014-11-25 Microsoft Corporation Secure firmware updates
US9910659B2 (en) 2012-11-07 2018-03-06 Qualcomm Incorporated Methods for providing anti-rollback protection of a firmware version in a device which has no internal non-volatile memory
US20140250290A1 (en) 2013-03-01 2014-09-04 St-Ericsson Sa Method for Software Anti-Rollback Recovery
US9830456B2 (en) 2013-10-21 2017-11-28 Cisco Technology, Inc. Trust transference from a trusted processor to an untrusted processor
US9448888B2 (en) 2013-11-15 2016-09-20 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Preventing a rollback attack in a computing system that includes a primary memory bank and a backup memory bank
JP6595822B2 (ja) 2015-07-07 2019-10-23 キヤノン株式会社 情報処理装置及びその制御方法
US9959125B2 (en) 2015-08-05 2018-05-01 Samsung Electronics Co., Ltd. Field update of boot loader using regular device firmware update procedure
US20170308705A1 (en) * 2016-04-22 2017-10-26 Qualcomm Incorporated System, device and method for anti-rollback protection of over-the-air updated device images
US10754988B2 (en) * 2016-08-30 2020-08-25 Winbond Electronics Corporation Anti-rollback version upgrade in secured memory chip

Also Published As

Publication number Publication date
US11301566B2 (en) 2022-04-12
WO2021001683A1 (en) 2021-01-07
EP3994598A1 (en) 2022-05-11
US20210004466A1 (en) 2021-01-07
KR20220027965A (ko) 2022-03-08
JP2022537648A (ja) 2022-08-29
JP7507178B2 (ja) 2024-06-27
EP3994598A4 (en) 2023-08-02

Similar Documents

Publication Publication Date Title
CN107092495B (zh) 平台固件铠装技术
CN103299311B (zh) 用于可信引导优化的方法和设备
CN103718165B (zh) Bios闪存攻击保护和通知
EP1754126B1 (en) Enhancing trusted platform module performance
JP6433198B2 (ja) 安全なブートromパッチのためのシステム及び方法
US7937575B2 (en) Information processing system, program product, and information processing method
US7774619B2 (en) Secure code execution using external memory
CN103093150B (zh) 一种基于可信芯片的动态完整性保护方法
KR101643072B1 (ko) 인터넷 이용 가능 컴퓨팅 노드에 대한 불변 안티바이러스 페이로드의 제공
US11579893B2 (en) Systems and methods for separate storage and use of system BIOS components
CN103080904A (zh) 提供多阶段锁步完整性报告机构
JP5307196B2 (ja) シリコンに一体化されたコードのシステムへの提供
EP2962243A1 (en) A method for software anti-rollback recovery
US10776493B2 (en) Secure management and execution of computing code including firmware
US10430589B2 (en) Dynamic firmware module loader in a trusted execution environment container
US11188321B2 (en) Processing device and software execution control method
TW201602835A (zh) 允許測試金鑰用於bios安裝之技術
JP7507178B2 (ja) ファームウェアのアンチロールバック
US11347858B2 (en) System and method to inhibit firmware downgrade
JP7382446B2 (ja) プラットフォームファームウェア回復実行からの起動失敗を回避する方法及びシステム
US11113399B2 (en) Electronic apparatus and control method of electronic apparatus
CN112817619A (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