CN106462707A - 安全引导计算设备 - Google Patents
安全引导计算设备 Download PDFInfo
- Publication number
- CN106462707A CN106462707A CN201480077635.XA CN201480077635A CN106462707A CN 106462707 A CN106462707 A CN 106462707A CN 201480077635 A CN201480077635 A CN 201480077635A CN 106462707 A CN106462707 A CN 106462707A
- Authority
- CN
- China
- Prior art keywords
- firmware
- cryptographic hash
- piece
- initial guide
- block
- 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.)
- Granted
Links
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/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- 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/71—Protecting 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
- G06F21/72—Protecting 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 in cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Power Engineering (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
用于安全地引导计算设备的技术包括计算设备的安全引擎,该安全引擎连续地确定针对初始引导固件的每个块的哈希值,并且根据所确定的针对这些块中的每个块的哈希值来生成聚合的哈希值。计算设备的处理器确定聚合的哈希值是否与参考校验和值相匹配。响应于确定聚合的哈希值与参考校验和值相匹配而完成处理器的初始化。在一些实施例中,安全引擎连续地从计算设备的存储器中取回初始引导固件的每个块、将所取回的每个块存储在安全引擎的安全存储器中、并且确定所存储的每个块的哈希值。将存储在安全存储器中的每个块复制到处理器的高速缓存中的被初始化为高速缓存RAM的部分上。
Description
背景技术
计算机安全的一个方面涉及保护计算机系统不受恶意的软件(也被称为“恶意软件”)侵害。恶意软件有多种形式;然而,许多常见种类的恶意软件对计算机存储器中未授权的位置执行写操作或者其它访问。例如,某些恶意软件在引导过程的初始阶段期间攻击低级系统代码(例如,平台初始化固件、引导加载程序、操作系统内核等)。可以由所谓的“bootkits”或者“rootkits”来使用这样的攻击以获得对系统的控制并且逃避检测。
典型的计算机系统通过执行“安全引导”或者“安全启动”来检测并防止恶意软件的执行。为此,计算系统可以包括安全引擎或者安全协处理器,它们被配置为在引导过程期间,在对低级系统代码进行加载之前而验证其完整性。例如,在引导过程的初始化之后,计算系统的安全引擎可以生成用于对该计算系统的主处理器进行初始化所需要的固件的哈希。随后,安全引擎可以将该哈希与对应于该固件的纯正版本的已知良好的哈希或校验和值进行比较。如果确定这两个哈希是匹配的,则可以允许该执行该固件以使得主处理器或计算系统的其它组件被初始化。
嵌入式系统和片上系统(SoC)系统在计算生态系统中变得越来越普遍。在典型的SoC系统中,由将其自身的静态随机存取存储器(SRAM)嵌入在SoC中的集成的安全引擎或者安全协处理器来管理安全引导过程。为了确保从头开始的安全引导,在允许执行低级系统代码之前,必须由集成的安全引擎对该低级系统代码进行验证。通常而言,必须首先将这样的低级系统代码存储在该集成的安全引擎的SRAM上。从而,待由集成的安全引擎进行验证的任何低级系统代码的大小有效地受到嵌入到该SoC中的SRAM的大小的限制。另外,由于SoC上的额外的SRAM存储体(bank)的相关联的成本、管芯尺寸、以及功耗,因此增加SoC上的SRAM的总大小以支持对更大大小的低级系统代码的验证通常是不现实的。
附图说明
在附图中作为示例而非限制来示出了在本文中所描述的概念。为了说明的简单和清楚起见,在附图中所示出的元素不一定是按比例绘制的。在认为合适的情况下,在附图中将一些附图标记进行了重复,以指示对应的或类似的元素。
图1是用于使用计算设备来执行安全引导的系统的至少一个实施例的简化的框图;
图2是图1的系统的计算设备的环境的至少一个实施例的简化的框图;
图3是用于执行可以由图1和图2的计算设备来执行的安全引导的方法的至少一个实施例的简化的流程图;
图4是图3的方法的子例程的至少一个实施例的简化的流程图,所述子例程用于连续地确定针对可以由图1和图2的计算设备执行的初始引导固件的块的哈希值;以及
图5是图3的方法的子例程的至少一个其它实施例的简化的流程图,所述子例程用于连续地确定针对可以由图1和图2的计算设备执行的初始引导固件的块的哈希值。
具体实施方式
尽管本公开的概念可以有各种变型和可替代的形式,但已经作为示例在附图中示出了其具体的实施例,并且将在本文中对其进行详细描述。然而应当理解的是,不旨在将本公开的概念限制于所公开的特定的形式,相反,本发明是要覆盖与本公开和所附权利要求相一致的所有修改、等同物、以及可替代物。
在说明书中对“一个实施例”、“某个实施例”、“示例性实施例”等的引用指示所描述的实施例可以包括特定的特征、结构、或特性,但每个实施例可以或不一定包括该特定的特征、结构、或特性。此外,这样的短语非必须指的是相同的实施例。此外,当结合实施例来描述特定的特征、结构、或特性时,提出了结合其它实施例(无论其是否进行了明确地描述)实现这样的特征、结构、或特性也在本领域技术人员的知识范围内。额外地,应当理解的是,以“A、B和C中的至少一个”的形式包括在列表中的项目可以意味着(A);(B);(C);(A和B);(A和C);(B和C);或者(A、B和C)。类似地,以“A、B或C中的至少一个”的形式列出的项目可以意味着(A);(B);(C);(A和B);(A和C);(B和C);或者(A、B和C)。
在一些情况下,可以以硬件、固件、软件或其任何组合来实现所公开的实施例。此外,还可以将所公开的实施例实现为由一个或多个瞬时性或者非瞬时性机器可读(例如,计算机可读)存储介质所执行或存储在其上的指令,所述指令可以由一个或多个处理器来读取或执行。机器可读存储介质可以被实施为用于以能够由机器读取的形式存储或发送信息的任何存储设备、机制、或其它物理结构(例如,易失性或非易失性存储器、媒体盘、或其它介质设备)。
在附图中,可以以具体的布置和/或顺序示出一些结构或方法特征。然而应当理解的是,这样的具体的布置和/或顺序不是必需的。相反,在一些实施例中,可以以与在说明性附图中所示出的不同的方式和/或顺序来布置这些特征。额外地,特定的附图中所包含的结构或方法特征不意味着暗示在所有实施例中都需要这样的特征,相反,在一些实施例中,这样的特征可以不被包括,或者可以与其它特征进行组合。
现在参考图1,在说明性实施例中,用于执行安全引导的系统100包括计算设备102。在使用中,计算设备102的安全引擎140取回并认证存储在计算设备102的存储器130中的平台初始化固件134(例如,阶段-0固件134)。计算设备102的处理器110可以执行经认证的平台初始化固件136以将处理器110的高速缓存存储器112的一部分初始化为高速缓存RAM(Cache as RAM,CAR)114。计算设备102的存储器130还可以存储初始引导固件136(例如,阶段-1固件136),其中可以需要初始引导固件136来完成处理器110的初始化(例如,引导等)。在一些实施例中,初始引导固件136的总存储大小可以超过安全引擎140的安全存储器142中可用的存储容量的量。在这样的实施例中,可以将初始引导固件136分解成多个块(例如,分段、二进制大对象(blob)、部分、子集等),所述多个块中的每个块都是可以由安全引擎140从存储器130中取回并随后存储在安全存储器142中的。安全引擎140可以确定针对存储在安全存储器142中的初始引导固件136的所取回的每个块的哈希值。在生成了初始引导固件136的所取回的块的哈希值之后,安全引擎140可以将该块复制到在处理器110的高速缓存存储器112中所初始化的CAR 114中。在一些实施例中,处理器110(而不是安全引擎140)可以将初始引导固件136的每个块复制到CAR 114。可以由安全引擎140基于所确定的针对初始引导固件136的所取回的每个块的哈希值来生成聚合的哈希值。可以将该聚合的哈希值与和初始引导固件136的原始或纯正版本的已知的哈希值相对应的参考哈希值和校验和值进行比较。可以响应于确定该聚合的哈希值与参考哈希值相匹配而完成处理器的初始化。在一些实施例中,可以响应于确定该聚合的哈希值与参考哈希值不匹配而执行一个或多个安全功能。应当理解的是,通过将初始引导固件136(例如,阶段-1固件136)分解成多个块、将每个块连续地存储在安全存储器142中、并且在生成哈希值之后将每个块从安全存储器142复制到CAR 114,初始引导固件136(例如,阶段-1固件136)的总存储大小可以超过安全引擎140的安全存储器142中可用的存储容量的量。即,安全引擎140的安全存储器142的存储容量的量不限制初始引导固件136(例如,阶段-1固件136)的总存储大小。
在一些实施例中,安全引擎140的安全存储器142包括多个缓冲区144、146(例如,BUFFER_1 144和BUFFER_2 146)。在这样的实施例中,安全引擎140可以从存储器130中取回初始引导固件136(例如,阶段-1固件136)的初始块(例如,第一块),并且将该块存储在安全存储器142的缓冲区144(例如,BUFFER_1 144)中。与确定针对初始块(例如,第一块)的哈希值相同时地,安全引擎140可以从存储器130中取回初始引导固件136(例如,阶段-1固件136)的下一个块(例如,第二块),并且将该块存储在安全存储器142的另一个缓冲区146(例如,BUFFER_2 146)中。在确定了初始块的哈希值之后,安全引擎140或者处理器110可以将该块复制到在处理器110的高速缓存存储器112中初始化的CAR 114。在这样的实施例中,安全引擎140可以继续取回初始引导固件136的其它块,并基于缓冲区144、146中的哪一个缓冲区是可用的而以交替的方式将所述其他块存储在缓冲区144、146中的一个缓冲区中(例如,已经将先前的块从缓冲区144、146中复制到CAR 114中)。如所讨论的,通过将初始引导固件136(例如,阶段-1固件136)分解成多个块、将每个块连续地存储在安全存储器142中、并且在生成了哈希值之后将每个块从安全存储器142复制到CAR 114,初始引导固件136(例如,阶段-1固件136)的总存储大小可以大于安全引擎140的安全存储器142中可用的存储容量的量。
计算设备102可以被实施为或者以其他方式包括能够执行在本文中所描述的功能的任何类型的计算设备,所述计算设备包括但不限于:台式计算机、膝上型计算设备、服务器计算机、消费性电子设备、移动计算设备、移动电话、智能电话、平板计算设备、个人数字助理、可穿戴计算设备、智能电视机、智能电器、和/或其它类型的计算设备。说明性计算设备102包括:处理器110、存储器130、输入/输出(I/O)子系统120、安全引擎140、通信电路150、和数据存储160。当然,在其它实施例中,计算设备102可以包括其它或者额外的组件,例如,通常在计算机中发现的那些组件(例如,各种输入/输出设备)。额外地,在一些实施例中,这些说明性组件中的一个或多个可以被包含在另一个组件中,或者以其他方式形成另一个组件的一部分。例如,在一些实施例中,存储器130或其部分可以被包含在处理器110中。
处理器110可以被实施为能够执行在本文中所描述的功能的任何类型的处理器。例如,处理器110可以被实施为单核或多核处理器、数字信号处理器、微控制器、或者其它处理器或处理/控制电路。处理器110可以包括用于存储指令和/或数据以供执行的高速缓存存储器112。如在下文中更加详细地讨论的,在一些实施例中,可以将高速缓存存储器112的一部分初始化为RAM即缓存(CAR)114。在这样的实施例中,在将存储器130(例如,主设备存储器)初始化之前,可以由计算设备102的组件来使用CAR 114以在引导过程期间存储所需要的数据和/或变量。例如,在一些实施例中,处理器110可以将初始引导固件136(例如,阶段-1固件136)的一个或多个块从安全引擎140的安全存储器142复制(例如,取回、移动、重新定位、获得等)到CAR 114中以供存储。
存储器130可以被实施为能够执行在本文中所描述的功能的任何类型的易失性或者非易失性存储器或数据存储。在操作中,存储器130可以存储在该计算设备102的操作期间所使用的各种数据和软件,例如,操作系统、应用、程序、库、和驱动程序。存储器130经由I/O子系统120通信地耦合至处理器110,其中I/O子系统120可以被实施为促进与处理器110、存储器130、以及计算设备102的其它组件的输入/输出操作的电路和/或组件。例如,I/O子系统120可以被实施为或者以其他方式包括:存储器控制器集线器、输入/输出控制集线器、固件设备、通信链路(即,点对点链路、总线链路、导线、电缆、光波导、印刷电路板迹线等)、和/或促进输入/输出操作的其它组件和子系统。在一些实施例中,I/O子系统120可以形成片上系统(SoC)的一部分,并且连同处理器110、存储器130、以及计算设备102的其它组件一起被包含在单个集成电路芯片上。
在一些实施例中,存储器130包括被配置为促进引导或者以其他方式初始化计算设备102的平台和/或操作系统(OS)的固件132。固件132可以被实施为硬件组件、软件组件、或其组合(例如,系统固件、系统初始化数据等)。在一些实施例中,固件132包括低级系统代码,其中当由处理器110和/或安全引擎140执行时,该低级代码使得对该计算设备102的一个或多个组件进行初始化和/或执行一个或多个平台初始化功能。例如,在一些实施例中,固件132包括平台初始化固件134(例如,阶段-0固件134),其中当由处理器110执行时,该初始化固件134使得处理器110将高速缓存存储器112的一部分初始化为CAR 114。额外地,在一些实施例中,平台初始化固件134(例如,阶段-0固件134)的执行可以使得处理器110在生成相应的哈希值之后,将初始引导固件136(例如,阶段-1固件136)的一个或多个块从安全引擎140的安全存储器142复制(例如,取回、移动、重新定位、获得等)到CAR 114中。在一些实施例中,固件132还包括初始引导固件136(例如,阶段-1固件136),其中当被执行时,初始引导固件136使得处理器110完成其初始化过程。应当理解的是,在执行平台初始化固件134(例如,阶段-0固件134)期间,处理器110可以不是完全操作的(例如,起作用的)。即,处理器110可以包括如由平台初始化固件134所定义的基本和/或精简的功能。如在下文中所讨论的,可以在执行初始引导固件136(例如,阶段-1固件136)之后启用引导处理器110的全部功能。应当理解的是,在一些实施例中,平台初始化固件134可以被实施为阶段-0引导加载程序,并且初始引导固件136可以被实施为阶段-1引导加载程序。
安全引擎140可以被实施为能够执行在本文中所描述的功能的任何硬件组件或者电路。在一些实施例中,安全引擎140可以被实施为能够不管处理器110的操作状态(例如,处理器110可以处于待机或者掉电状态)而独立于处理器110来操作的安全协处理器或微控制器。额外地或可替代地,在一些实施例中,安全引擎140可以被实施为与处理器110不同的通用处理器(例如,第二处理器)。在操作中,安全引擎140可以执行计算设备102的“安全引导”或者“受信任引导”。为此,安全引擎140包括安全存储器142,该安全存储器142可以是与存储器130分离的内部或本地安全存储器。存储在安全存储器142中的数据可以由安全引擎140访问,而不可以由计算设备102的其它组件访问。在一些实施例中,安全存储器142可以被配置为存储初始引导固件136(例如,阶段-1固件136)的一个或多个块,其中所述一个或多个块可以是由安全引擎140从存储器130中取回的。安全存储器142可以根据先进先出过程来存储初始引导固件136的块,其中在该先进先出过程中,在将之前存储的块复制(例如,移动、重新定位、发送等)到另一个存储器(例如,CAR 114)之后,取回初始引导固件136的下一个块,并将该下一个块存储在安全存储器142中。
额外地或可替代地,在一些实施例中,安全存储器142可以包括可以被配置为共同充当“乒乓缓冲区”的多个缓冲区144、146(例如,BUFFER_1 144和BUFFER_2 146)。在这样的实施例中,可以将初始引导固件136的块(例如,第一块)存储在第一缓冲区144(例如,BUFFER_1 144)中。在对该块(例如,第一块)进行处理期间,可以将另一个块(例如,第二块)存储在第二缓冲区146(例如,BUFFER_2 146)中。在完成了对第一块的处理之后,可以将其从第一缓冲区144(例如,BUFFER_1 144)中复制(例如,移动、重新定位、发送等)到CAR 114。接着,可以将下一个块(例如,第三块)存储在现在可用的第一缓冲区144(例如,BUFFER_1144)中,并相应地进行处理。可以基于缓冲区144、146中的哪一个缓冲区是可用的而以交替的方式将初始引导固件136(例如,阶段-1固件136)的剩余的块存储在缓冲区144、146(例如,BUFFER_1 144和BUFFER_2 146)中的一个缓冲区中(例如,已经将先前存储的块复制到CAR 114中)。应当理解的是,尽管安全存储器142说明性地包括两个缓冲区144、146(例如,BUFFER_1 144和BUFFER_2 146),但安全存储器142可以包括任意数量的缓冲区(例如,一个缓冲区、两个缓冲区、三个缓冲区、四个缓冲区等)。额外地或可替代地,缓冲区144、146(例如,BUFFER_1 144和BUFFER_2 146和任何其它缓冲区)可以被配置为充当“乒乓缓冲区”、“环形缓冲区”、或者是根据任何其它缓冲过程和/或缓冲类型而被配置。
计算设备102的通信电路150可以被实施为能够实现计算设备102和一个或多个其它计算设备之间的通信的任何类型的通信电路、设备或其集合。通信电路150可以被配置为使用任何一种或多种通信技术(例如,无线或有线通信)和相关联的协议(例如,以太网、WiMAX等)来实现这样的通信。
数据存储160可以被实施为针对短期或长期的存储而被配置的任何类型的设备或多个设备,例如,存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器、或其它数据存储设备。例如,数据存储160可以被配置为存储待由计算设备102初始化和/或执行的一个或多个操作系统。在一些实施例中,可以在操作期间将操作系统的一部分复制到存储器130,以用于更快速地处理和/或出于任何其它原因。
现在参考图2,在使用中,计算设备102在操作期间建立环境200。该说明性环境200包括安全引导模块202和处理器初始化模块212。安全引导模块202可以由安全引擎140来建立,并且在一些实施例中,该安全引导模块202可以包括认证模块204、块取回模块206、哈希生成模块208、和块传输模块210。处理器初始化模块212可以由处理器110来建立,并且在一些实施例中,该处理器初始化模块212可以包括高速缓存初始化模块214和哈希比较模块216。在一些实施例中,响应于由处理器110执行经认证的平台初始化固件134(例如,阶段-0固件134),可以由处理器110来建立处理器初始化模块212。可以将环境200的模块、逻辑、和其它组件中的每个实施为硬件、软件、固件、或其组合。应当理解的是,计算设备102可以包括通常在计算设备中发现但为了描述清楚说明起见而没有在图2中示出的其它组件、子组件、模块和设备。
安全引导模块202可以被配置为对平台初始化固件134(例如,阶段-0固件134)进行认证,该平台初始化固件134可以被实施为被配置为由安全引擎140和/或处理器110来执行以在引导过程的初始阶段(例如,在硬件组件、操作系统等的初始化之前)期间对计算设备102的一个或多个组件进行初始化的低级代码和/或指令。为此,安全引导模块202可以包括认证模块204。在一些实施例中,认证模块204可以被配置为从存储器130或者计算设备102的其它固件存储中取回或者以其他方式获得平台初始化固件134(例如,阶段-0固件134)。额外地,认证模块204可以被配置为使用用于对平台初始化固件134进行认证的任何适当的过程。例如,在一些实施例中,认证模块204可以验证与平台初始化固件134相关联的数字签名,和/或将根据平台初始化固件134所生成的哈希与和该平台初始化固件134的参考(例如,未修改的、纯正的、原始的等)版本相对应的已知的哈希进行比较。在一些实施例中,认证模块204可以被配置为响应于确定已经认证了平台初始化固件134而通知处理器初始化模块212(或者其组件)。
如所讨论的,计算设备的存储器130可以存储初始引导固件136(例如,阶段-1固件136),其中当被执行时,该初始引导固件136使得处理器110完成初始化过程。在一些实施例中,初始引导固件136的存储大小可以超过可用的或者由安全引擎140的安全存储器142以其他方式所提供的存储的量。由此,为了启用计算设备102的安全引导,可以将初始引导固件136分解成多个块(例如,分段、二进制大对象、部分、子集等)。每个块可以在大小上比安全存储器142和/或多个缓冲区144、146(例如,BUFFER_1 144和BUFFER_2 146)中的每个中可用的存储的量更小。额外地,每个块可以相对于彼此具有相等的存储器大小。在这样的实施例中,安全引导模块202可以被配置为连续地确定针对初始引导固件136(例如,阶段-1固件136)的每个块的哈希值。为此,安全引导模块202可以包括块取回模块206、哈希生成模块208、和块传输模块210。
块取回模块206可以被配置为从存储器130或者计算设备102的其它固件存储中连续地取回初始引导固件136(例如,阶段-1固件136)的每个块。另外,块取回模块206可以被配置为将所取回的块存储在安全引擎140的安全存储器142中。在其中安全存储器142被配置为根据先进先出过程来存储所取回的块的实施例中,在已经将初始引导固件136的先前的块从安全存储器142中复制出并且复制到CAR 114中之后,块取回模块206可以取回并存储初始引导固件136的后续的块。在其中安全存储器142包括被配置为充当成“乒乓缓冲区”的多个缓冲区144、146(例如,BUFFER_1 144和BUFFER_2 146)的实施例中,块取回模块206可以基于缓冲区144、146中的哪一个缓冲区是可用的(例如,先前所存储的块已被复制到CAR 114)而取回并存储初始引导固件136的块。在这样的实施例中,与对当前存储在缓冲区144、146(例如,BUFFER_1 144或BUFFER_2 146)中的一个缓冲区中的先前的块的处理同时,块取回模块206可以从存储器130中取回每个后续的块。
哈希生成模块208可以被配置为针对从存储器130取回并随后存储在安全存储器142中的初始引导固件136(例如,阶段-1固件136)的每个块而生成哈希值。为此,哈希生成模块208可以对每个块应用加密哈希函数以确定对应的哈希值。在一些实施例中,加密哈希函数可以被实施为安全哈希算法(例如,SHA-0、SHA-1、SHA-2、SHA-3等)。然而应当理解的是,该加密哈希函数可以被实施为用于验证初始引导固件136(例如,阶段-1固件136)的完整性的任何其它类型的函数或者算法。
额外地,哈希生成模块208可以被配置为基于针对初始引导固件136(例如,阶段-1固件136)的每个块所生成的哈希值而生成聚合的哈希值。为此,哈希生成模块208可以将所确定的哈希值加在一起(例如,生成这些哈希值的总和等)以生成聚合的哈希值。如所讨论的,可以将该聚合的哈希值和与初始引导固件136相对应的已知(例如,预先确定的、预先计算的、参考等)的哈希值和/或校验和进行比较。
块传输模块210可以被配置为在生成对应的哈希值之后,将初始引导固件136的每个块从安全存储器142中复制(例如,移动、重新定位、发送等)出,并且复制到CAR 114中。在一些实施例中,块传输模块210可以被配置为响应于将初始引导固件136的块复制到CAR114中,而从安全存储器142和/或缓冲区144、146(例如,BUFFER_1 144或BUFFER_2 146)中清除该块。应当理解的是,通过在已经生成对应的哈希值之后将初始引导固件136的每个块从安全存储器142和/或缓冲区144、146中复制出,使得安全存储器142可用于存储另一个块(例如,下一个块)。如所讨论的,在一些实施例中,在已经生成了对应的哈希值之后,由处理器110(而不是安全引擎140)将初始引导固件136的每个块从安全存储器142中复制(例如,取回、移动、重新定位、发送、获得等)出并复制到CAR 114中。在这样的实施例中,处理器初始化模块212(而不是安全引导模块202)可以包括块传输模块210。
处理器初始化模块212可以被配置为基于从安全引导模块202中接收或者获得的固件来对处理器110的全部或者一部分进行初始化。例如,在一些实施例中,处理器初始化模块212可以被配置为从安全存储器142中取回由认证模块204所认证的平台初始化固件134(例如,阶段-0固件134)。在这样的实施例中,处理器初始化模块212可以启用如由平台初始化固件134所规定的针对处理器110的基本和/或精简功能。
处理器初始化模块212还可以被配置为在存储器130(例如,主设备存储器)的初始化之前,对待用于存储在引导过程期间所需要的数据和/或变量的处理器110的高速缓存存储器112的全部或者一部分进行初始化。为此,在一些实施例中,处理器初始化模块212可以包括高速缓存初始化模块214。该高速缓存初始化模块214可以被配置为对待用作高速缓存RAM(CAR)114的处理器110的高速缓存存储器112的全部或者一部分进行初始化。如所讨论的,在哈希生成模块208已经确定了对应的哈希值之后,可以使用CAR 114来存储初始引导固件136(例如,阶段-1固件136)的块。
另外,在一些实施例中,处理器初始化模块212可以被配置为在已经生成了对应的哈希值之后,将初始引导固件136(例如,阶段-1固件136)的每个块从安全存储器142中复制(例如,取回、移动、重新定位、发送等)出并且复制到CAR 114中。在这样的实施例中,处理器初始化模块212(而不是安全引导模块202)可以包括块传输模块210。在一些实施例中,处理器初始化模块212的块传输模块210可以响应于从安全引擎140(或其组件)中接收到已经完成了对对应的哈希值的生成的消息(例如,信号或者任何其它类型的通知),而将初始引导固件136的每个块从安全存储器142中复制(例如,取回、移动、重新定位、发送、获得等)出并且复制到CAR 114中。
处理器初始化模块212还可以被配置为将聚合的哈希值和与初始引导固件136(例如,阶段-1固件136)相对应的参考哈希值(例如,预先计算的哈希值、预先确定的哈希值、已知的哈希值等)进行比较。为此,处理器初始化模块212可以包括哈希比较模块216。哈希比较模块216可以被配置为确定该聚合的哈希值是否与参考哈希值或校验和值相匹配、或者是否以其他方式大体上近似于所述参考哈希值或校验和值、或者是否在所述参考哈希值或校验和值的预先定义的(例如,参考)容忍度之内。即,哈希比较模块216可以确定该聚合的哈希值和与初始引导固件136(例如,阶段-1固件136)的纯正(例如,未修改、原始等)版本相对应的已知良好的哈希值或校验和值是否相匹配。
在一些实施例中,处理器初始化模块212还可以被配置为响应于由哈希比较模块216来确定该聚合的哈希值是否与参考(例如,预先计算的、预先确定的、已知的等)哈希值或校验和值相匹配,或者以其他方式大体上近似于所述参考哈希值或校验和值、或者是否在所述参考哈希值或校验和值的预先定义的(例如,参考)容忍度之内,而完成对处理器110的初始化。在这样的实施例中,可以启用处理器110的全部操作和/或功能,并且可以对计算设备的其它组件(例如,硬件组件、外围设备、操作系统等)进行初始化。额外地或可替代地,处理器初始化模块212还可以被配置为基于确定该聚合的哈希值与参考哈希值或校验和值不匹配,或者以其他方式大体上不近似于参考哈希值或校验和值或者不在其预先定义(例如,参考)容忍度之内,而执行一个或多个安全功能。例如,在一些实施例中,响应于确定该聚合的哈希值与参考哈希值或校验和值不匹配,处理器初始化模块212可以执行一个或多个安全功能,其中,所述安全功能使计算设备102关机或者重新引导。额外地或可替代地,响应于确定该聚合的哈希值与参考哈希值或校验和值不匹配,处理器初始化模块212可以执行一个或多个安全功能,其中,所述安全功能禁用计算设备102和/或计算设备102的一个或多个组件或服务。应当理解的是,响应于确定该聚合的哈希值与参考哈希值或校验和值不匹配,处理器初始化模块212可以执行任何其它类型的安全功能。
现在参考图3,计算设备102可以执行用于执行安全引导的方法300。方法300开始于方框302,在方框302中,计算设备102的安全引擎140对平台初始化固件134(例如,阶段-0固件134)进行认证。平台初始化固件134可以被实施为低级代码和/或指令,所述低级代码和/或指令被配置为由安全引擎140和/或处理器110执行以用于在引导过程的初始阶段期间(例如,在硬件组件、操作系统等的初始化之前),对计算设备102的一个或多个组件进行初始化。例如,在一些实施例中,平台初始化固件134可以被配置为使得处理器110能够将高速缓存存储器112的一部分初始化为CAR114。额外地,平台初始化固件134还可以被配置为使得处理器110能够将初始引导固件136(例如,阶段-1固件136)的一个或多个块从安全引擎140的安全存储器142中复制(例如,取回、移动、重新定位、获得等)出并且复制到CAR 114中。在操作中,安全引擎140可以使用任何适当的过程以用于对平台初始化固件134进行认证。例如,在一些实施例中,安全引擎140可以验证与平台初始化固件134相关联的数字签名,和/或将根据平台初始化固件134所生成的哈希和与该平台初始化固件134的原始(例如,未修改、纯正的等)版本相对应的参考(例如,预先计算的、预先确定的、已知的等)哈希值进行比较。在一些实施例中,在方框304中,安全引擎140从计算设备102的存储器130中取回平台初始化固件134(例如,阶段-0固件134)。在从存储器130中取回了平台初始化固件134之后,安全引擎140将该平台初始化固件134存储在安全存储器142中。在一些实施例中,在方框306中,安全引擎140还可以向处理器110通知已经认证了平台初始化固件134。
在方框308中,计算设备102的处理器110将高速缓存存储器112的一部分初始化为高速缓存RAM(CAR)114。为此,处理器110可以执行经认证的平台初始化固件134。可以由计算设备102的组件使用CAR 114以在完成对存储器130(例如,主设备存储器)的初始化之前存储在引导过程期间所需要的数据和/或变量。在一些实施例中,在方框310中,处理器110可以从安全引擎140的安全存储器142中取回经认证的平台初始化固件134。在这样的实施例中,处理器110可以响应于从安全引擎140中接收到通知而取回经认证的平台初始化固件134。
在方框312中,安全引擎140可以连续地确定针对初始引导固件136(例如,阶段-1固件136)的每个块的哈希值。如所讨论的,初始引导固件136可以初始地被存储在计算设备102的存储器130中,并可以被配置为使得处理器110的初始化能够完成。在一些实施例中,初始引导固件136的存储大小可以超过可用的存储的量或者由安全引擎140的安全存储器142和/或缓冲器144、146中的一个缓冲器(例如,BUFFER_1 144和BUFFER_2 146)以其他方式所提供的存储的量。由此,为了使得计算设备102能够安全引导,可以将初始引导固件136分解成多个块(例如,分段、二进制大对象、部分、子集等)。每个块可以在大小上比在安全存储器142和/或缓冲区144、146的一个或多个缓冲区中可用的存储的量更小。在这样的实施例中,可以向每个块应用加密哈希函数以确定对应的哈希值。在一些实施例中,该加密哈希函数可以被实施为安全哈希算法(例如,SHA-0、SHA-1、SHA-2、SHA-3等)。然而应当理解的是,该加密哈希函数可以被实施为用于验证初始引导固件136(例如,阶段-1固件136)的完整性的任何其它类型的函数或者算法。
在一些实施例中,安全引擎140可以使用先进先出过程来连续地确定针对初始引导固件136(例如,阶段-1固件136)的每个块的哈希值。在这样的实施例中,安全引擎140的安全存储器142可以被配置为在任何给定的时间存储初始引导固件136的单个块。由此,直到安全引擎140或者处理器110已经将先前存储的块复制到CAR 114为止,才会取回初始引导固件136的下一个块并将其复制到安全存储器142中。例如,现在参考图4,计算设备102可以执行方法400以用于连续地确定针对初始引导固件136(例如,阶段-1固件136)的每个块的哈希值。方法400开始于方框402,在方框402中,计算设备102的安全引擎140从存储器130中取回初始引导固件136的下一个块,并将其存储在安全存储器142中。应当理解的是,在方法400的第一次迭代期间,安全引擎140可以从存储器130中取回初始引导固件136的第一块,并将其存储在安全存储器142中。
在方框404中,安全引擎140接着计算和/或确定存储在安全存储器142中的初始引导固件136的第一/下一个块的哈希值。为此,安全引擎140可以向第一/下一个块应用加密哈希函数以生成对应的哈希值。如所讨论的,每个块可以在大小上比安全存储器142中可用的存储的量更小。额外地,在一些实施例中,初始引导固件136的每个块可以具有相等的存储器大小。作为结果,在这样的实施例中,所生成的针对块中的每个块的哈希值也可以具有相同的大小。然而应当理解的是,还可以生成具有不同大小的块的哈希值。
在方框406中,安全引擎140或者处理器110可以将初始引导固件136的第一/下一个块从安全存储器142中复制(例如,取回、移动、重新定位、发送、获得等)出并且复制到CAR114中。在一些实施例中,安全引擎140和/或处理器110可以被配置为从安全存储器142中清除(例如,重置、擦除、删除等)初始引导固件136的第一/下一个块,以使得安全存储器142可用于存储从存储器130中取回的初始引导固件136的下一个块(例如,后续的块)。
在决策框408中,安全引擎140确定从安全存储器142复制到CAR 114的初始引导固件136的第一/下一个块是否是该初始引导固件136的最后的块。即,安全引擎140可以确定是否存在初始引导固件136的任何剩余的块,其中所述剩余的块仍然需要从存储器130中取回、存储在安全存储器142中、具有根据其生成的对应的哈希值、复制到CAR 114。如果在决策框408中,安全引擎140确定第一/下一个块不是初始引导固件136的最后的块,则方法400循环返回到方框402,以从存储器130中取回初始引导固件136的下一个块(例如,后续的块)以用于存储在安全存储器142中。然而,在决策框408中,如果安全引擎140替代地确定第一/下一个块是初始引导固件136的最后的块,则方法400结束并且处理在图3的方框314继续。
额外地或可替代地,在一些实施例中,安全引擎140可以使用安全存储器142的多个缓冲区144、146(例如,BUFFER_1 144和BUFFER_2 146)来连续地确定针对初始引导固件136(例如,阶段-1固件136)的每个块的哈希值。在这样的实施例中,安全存储器142的每个缓冲区144、146(例如,BUFFER_1 144和BUFFER_2 146)都可以被配置为在任何给定的时间存储初始引导固件136的单个块。例如,现在参考图5,计算设备102可以执行用于使用安全存储器142的多个缓冲区144、146而连续地确定针对初始引导固件136(例如,阶段-1固件136)的每个块的哈希值的方法500。方法500开始于方框502,在方框502中,计算设备102的安全引擎140从存储器130中取回初始引导固件136的第一/下一个块,并将其存储在安全存储器142的第一缓冲区144(例如,BUFFER_1 144)中。
在方框504中,安全引擎140接着计算和/或确定存储在第一缓冲区144(例如,BUFFER_1 144)中的初始引导固件136的第一/下一个块的哈希值。为此,安全引擎140可以对第一/下一个块应用加密哈希函数以生成相应的哈希值。在一些实施例中,每个块可以在大小上比安全存储器142的缓冲区144、146中的每个缓冲区中可用的存储的量更小。额外地,在一些实施例中,初始引导固件136的每个块可以具有相等的存储器大小。作为结果,在这样的实施例中,所生成的针对这些块中的每个块的哈希值也可以具有相同的大小。然而应当理解的是,还可以生成具有不同大小的块的哈希值。
在方框506中,安全引擎140或者在一些实施例中处理器110可以将初始引导固件136的第一/下一个块从第一缓冲区144(例如,BUFFER_1 144)中复制(例如,取回、移动、重新定位、发送、获得等)出并且复制到CAR 114中。在一些实施例中,安全引擎140和/或处理器110可以被配置为从第一缓冲区144中清除(例如,重置、擦除、删除等)初始引导固件136的第一/下一个块,以使得第一缓冲区144可用于再次存储从存储器130中取回的初始引导固件136的另一个块(例如,后续的块)。
在决策框508中,安全引擎140确定从第一缓冲区144复制到CAR 114的初始引导固件136的第一/下一个块是否是该初始引导固件136的最后的块。即,安全引擎140可以确定是否存在初始引导固件136的任何剩余的块,其中所述剩余的块仍然需要从存储器130中取回、存储在安全存储器142的可用缓冲区144、146中、具有根据其生成的对应的哈希值、复制到CAR 114。如果在决策框508中,安全引擎140确定第一/下一个块不是初始引导固件136的最后的块,则方法500循环返回到方框502,以从存储器130中取回初始引导固件136的另一个块(例如,第三块、下一个块、后续的块等)以用于存储在第一缓冲区144中。然而,在决策框508中,如果安全引擎140替代地确定第一/下一个块是初始引导固件136的最后的块,则方法500结束并且处理在图3的方框314处继续。
在一些实施例中,在方框510中,安全引擎140从存储器130中取回初始引导固件136的第二/下一个块,并将其存储在安全存储器142的第二缓冲区146(例如,BUFFER_2146)中。应当理解的是,计算设备102和/或安全引擎140可以同时地执行方框510与方框504。即,安全引擎140可以在与确定第一缓冲区146中存储的第一块的哈希值相同的时间或者重合的时间,从存储器130中取回初始引导固件136的第二块,并将其存储在第二缓冲区146中。接着,方法500前进至方框512。
在方框512中,安全引擎140接着计算和/或确定存储在第二缓冲区146(例如,BUFFER_2 146)中的初始引导固件136的第二/下一个块的哈希值。为此,安全引擎140可以对第二/下一个块应用加密哈希函数以生成对应的哈希值。接着,方法500前进至方框514,在方框514中,安全引擎140或者处理器110将初始引导固件136的第二/下一个块从第二缓冲区146(例如,BUFFER_2 146)中复制(例如,取回、移动、重新定位、发送、获得等)出并且复制到CAR 114中。在一些实施例中,安全引擎140和/或处理器110可以被配置为从第二缓冲区146中清除(例如,重置、擦除、删除等)初始引导固件136的第二/下一个块,以使得第二缓冲区146可用于再次存储从存储器130中取回的初始引导固件136的另一个块(例如,下一个块或者后续的块)。
在决策框516中,安全引擎140确定从第二缓冲区146复制到CAR 114的初始引导固件136的第二/下一个块是否是该初始引导固件136的最后的块。即,安全引擎140可以确定是否存在初始引导固件136的任何剩余的块,其中所述剩余的块仍然需要从存储器130中取回、存储在安全存储器142的可用的缓冲区144、146中、具有根据其生成的对应的哈希值、复制到CAR 114。如果在决策框516中,安全引擎140确定第二/下一个块不是初始引导固件136的最后的块,则方法500循环返回到方框510,以从存储器130中取回初始引导固件136的另一个块(例如,第四块、下一个块、后续的块等)以用于存储在第二缓冲区146中。然而,在决策框516中,如果安全引擎140替代地确定第二/下一个块是初始引导固件136的最后的块,则方法500结束并且处理在图3的方框314处继续。
参考回图3,在方框314中,安全引擎140可以根据所生成的针对初始引导固件136(例如,阶段-1固件136)的每个块的哈希值来生成聚合的哈希值。为此,哈希生成模块208可以将所确定的哈希值加在一起(例如,生成哈希值的总和等)以生成聚合的哈希值。哈希生成模块208可以使用任何适当的处理以将所确定的哈希值加在一起。
在方框316中,处理器110将聚合的哈希值和与初始引导固件136(例如,阶段-1固件136)相对应的参考(例如,预先确定的、预先计算的、已知的等)哈希值或校验和值进行比较。方法300前进至决策框318,在决策框318中,处理器110确定该聚合的哈希值是否和与该初始引导固件136相对应的参考哈希值或校验和值相匹配、或者是否以其他方式大体上近似于所述参考哈希值或校验和值、或者是否在所述参考哈希值或校验和值的预先定义的(例如,参考)容忍度之内。然而,如果在决策框318中,处理器110确定该聚合的哈希值与参考哈希值或校验和值相匹配,或者以其他方式大体上近似于参考哈希值或校验和值、或者在参考哈希值或校验和值的预先定义的(例如,参考)容忍度之内,则方法300前进至方框320。然而,如果处理器110替代地确定该聚合的哈希值与参考哈希值或校验和值不匹配,或者不以其他方式大体上近似于参考哈希值或校验和值、或者不在参考哈希值或校验和值的预先定义的(例如,参考)容忍度之内,则方法300前进至方框324。
在方框320中,可以响应于确定该聚合的哈希值与初始引导固件136(例如,阶段-1固件136)的参考(例如,已知的、预先计算的、预先确定的等)哈希值和/或校验和值相匹配,而完成对处理器110的初始化。例如,在方框322中,处理器可以跳到存储在CAR 114中的初始引导固件136(例如,阶段-1固件136)的起始位置,并从该位置开始执行。这样,可以启用处理器110的全部操作。
在方框324中,处理器110基于确定该聚合的哈希值与初始引导固件136(例如,阶段-1固件136)的参考(例如,已知的、预先计算的、预先确定的等)哈希值或校验和值不匹配,而执行一个或多个安全功能。例如,在方框326中,处理器110可以关闭和/或禁用对计算设备102或其任何组件。额外地或可替代地,在方框328中,处理器110可以响应于这样的确定而重新引导计算设备102。
示例
在下文中提供在本文中所公开的技术的说明性示例。技术的实施例可以包括在下文中所描述的示例中的任何一个或多个及其任何组合。
示例1包括一种用于执行安全引导的计算设备,该计算设备包括:计算设备的安全引擎,该计算设备的安全引擎包括用于执行以下操作的安全引导模块:(i)连续地确定针对初始引导固件的多个块中的每个块的哈希值,其中,连续地确定哈希值包括:(a)从计算设备的存储器中取回多个块中的每个块,(b)将所取回的每个块存储在安全引擎的安全存储器中,以及(c)确定针对存储在该安全存储器中的每个块的哈希值;以及(ii)根据针对所确定的初始引导固件的每个块的哈希值来生成聚合的哈希值;以及,包括高速缓存RAM和处理器初始化模块的处理器,该处理器用于:(i)将聚合的哈希值和与初始引导固件相关联的参考校验和值进行比较,以确定该聚合的哈希值是否与参考校验和值相匹配;(ii)响应于确定该聚合的哈希值与参考校验和值相匹配而完成处理器的初始化,其中,所述安全引导模块或者所述处理器初始化模块用于将存储在安全存储器中的每个块复制到处理器的高速缓存RAM。
示例2包括示例1的主题,并且其中,所述安全引擎包括与计算设备的处理器不同的安全协处理器。
示例3包括示例1和示例2中的任何一个的主题,并且其中,确定针对存储在安全存储器中的每个块的哈希值包括利用加密哈希函数来确定存储在安全存储器中的每个块的哈希值。
示例4包括示例1-3中的任何一个的主题,并且其中,所述加密哈希函数包括安全哈希算法。
示例5包括示例1-4中的任何一个的主题,并且其中,所述初始引导固件的所述多个块中的每个块具有相等的存储器大小。
示例6包括示例1-5中的任何一个的主题,并且其中,所述初始引导固件的所述多个块中的每个块具有小于或者等于安全引擎的安全存储器的存储器存储容量的存储器大小。
示例7包括示例1-6中的任何一个的主题,并且其中,完成处理器初始化的初始化包括:(i)跳到存储在高速缓存RAM中的初始引导固件的起始位置,(ii)执行该初始引导固件。
示例8包括示例1-7中的任何一个的主题,并且其中,所述安全引导模块还用于将聚合的哈希值发送至处理器。
示例9包括示例1-8中的任何一个的主题,并且其中,所述处理器还用于响应于确定聚合的哈希值与参考校验和值不匹配而执行安全功能。
示例10包括示例1-9中的任何一个的主题,并且其中,执行安全功能包括执行以下操作中的至少一个操作:关闭计算设备、禁用计算设备、或者重新引导计算设备。
示例11包括示例1-10中的任何一个的主题,并且其中,所述安全引导模块还用于对该计算设备的平台初始化固件进行认证;其中,所述处理器还用于执行经认证的平台初始化固件,以将所述处理器的高速缓存的一部分初始化为高速缓存RAM。
示例12包括示例1-11中的任何一个的主题,并且其中,对平台初始化固件进行认证包括:(i)从计算设备的存储器中取回该平台初始化固件;(ii)通知处理器已经对该平台初始化固件进行了认证。
示例13包括示例1-12中的任何一个的主题,并且其中,所述处理器还用于从安全引擎的安全存储器中取回经认证的平台初始化固件;并且其中,执行经认证的平台初始化固件包括执行从安全引擎的安全存储器中取回的经认证的平台初始化固件。
示例14包括示例1-13中的任何一个的主题,并且其中,所述初始引导固件包括阶段-1引导加载程序;并且其中,所述平台初始化固件包括在执行阶段-1引导加载程序之前由处理器执行的阶段-0引导加载程序。
示例15包括示例1-14中的任何一个的主题,并且其中,连续地确定针对初始引导固件的多个块中的每个块的哈希值包括:(i)从计算设备的存储器中取回初始引导固件的多个块中的第一块,(ii)将所取回的初始引导固件的第一块存储在安全引擎的安全存储器中,(iii)确定与存储在安全存储器中的初始引导固件的第一块相对应的第一哈希值,(iv)响应于将初始引导固件的第一块存储在高速缓存RAM中而从计算设备的存储器中取回初始引导固件的多个块中的第二块,(v)将所取回的初始引导固件的第二块存储在安全引擎的安全存储器中,(vi)确定与存储在安全存储器中的初始引导固件的第二块相对应的第二哈希值;其中,将存储在安全存储器中的每个块复制到高速缓存RAM包括:(i)响应于确定第一哈希值而将存储在安全存储器中的初始引导固件的第一块复制到高速缓存RAM,(ii)响应于确定第二哈希值而将存储在安全存储器中的初始引导固件的第二块复制到高速缓存RAM;并且其中,生成聚合的哈希值包括根据所确定的第一哈希值和第二哈希值来生成聚合的哈希值。
示例16包括示例1-15中的任何一个的主题,并且其中,所述安全引导模块还用于确定初始引导固件的第二块是否是该初始引导固件的多个块中的最后的块。
示例17包括示例1-16中的任何一个的主题,并且其中,响应于确定初始引导固件的第二块不是最后的块:(i)所述安全引导模块还用于(a)连续地取回初始引导固件的多个块中的每个剩余的块,(b)确定所取回的每个剩余的块的哈希值;(ii)所述安全引导模块或者所述处理器初始化模块用于将所取回的每个剩余的块复制到高速缓存RAM;并且其中,生成聚合的哈希值包括根据所确定的第一哈希值、所确定的第二哈希值、以及所确定的针对所取回的剩余的块中的每个块的哈希值,来生成聚合的哈希值。
示例18包括示例1-17中的任何一个的主题,并且其中,生成聚合的哈希值包括响应于确定初始引导固件的第二块是最后的块而生成聚合的哈希值。
示例19包括示例1-18中的任何一个的主题,并且其中,连续地确定针对初始引导固件的多个块中的每个块的哈希值包括:(i)从计算设备的存储器中取回初始引导固件的多个块中的第一块,(ii)将所取回的初始引导固件的第一块存储在安全引擎的安全存储器的第一缓冲区中,(iii)确定与存储在安全存储器的第一缓冲区中的初始引导固件的第一块相对应的第一哈希值,(iv)和确定与初始引导固件的第一块相对应的第一哈希值同时地从计算设备的存储器中取回初始引导固件的多个块中的第二块,(v)将所取回的初始引导固件的第二块存储在安全引擎的安全存储器的第二缓冲区中,(vi)确定与存储在安全存储器的第二缓冲区中的初始引导固件的第二块相对应的第二哈希值;其中,将存储在安全存储器中的每个块复制到高速缓存RAM包括:(i)响应于确定第一哈希值而将存储在安全存储器的第一缓冲区中的初始引导固件的第一块复制到高速缓存RAM,(ii)响应于确定第二哈希值而将存储在安全存储器的第二缓冲区中的初始引导固件的第二块复制到高速缓存RAM;并且其中,生成聚合的哈希值包括根据所确定的第一哈希值和第二哈希值来生成聚合的哈希值。
示例20包括用于安全地引导计算设备的方法,该方法包括由计算设备的安全引擎连续地确定针对初始引导固件的多个块中的每个块的哈希值,其中,连续地确定所述哈希值包括:(i)从计算设备的存储器中取回多个块中的每个块,(ii)将所取回的每个块存储在安全引擎的安全存储器中,(iii)确定针对存储在安全存储器中的每个块的哈希值;由计算设备的安全引擎或者处理器将存储在安全存储器中的每个块复制到处理器的高速缓存RAM;由安全引擎根据所确定的针对初始引导固件的每个块的哈希值来生成聚合的哈希值;由处理器将聚合的哈希值和与该初始引导固件相关联的参考校验和值进行比较,以确定聚合的哈希值是否与参考校验和值相匹配;并且响应于确定聚合的哈希值与参考校验和值相匹配而完成处理器的初始化。
示例21包括示例20的主题,并且其中,安全引擎包括与计算设备的处理器不同的安全协处理器。
示例22包括示例20和示例21中的任何一个的主题,并且其中,确定针对存储在安全存储器中的每个块的哈希值包括使用加密哈希函数来确定存储在安全存储器中的每个块的哈希值。
示例23包括示例20-22中的任何一个的主题,并且其中,所述加密哈希函数包括安全哈希算法。
示例24包括示例20-23中的任何一个的主题,并且其中,所述初始引导固件的所述多个块中的每个块具有相等的存储器大小。
示例25包括示例20-24中的任何一个的主题,并且其中,所述初始引导固件的多个块中的每个块具有小于或者等于安全引擎的安全存储器的存储器存储容量的存储器大小。
示例26包括示例20-25中的任何一个的主题,并且其中,完成所述处理器初始化的初始化包括:(i)跳到存储在高速缓存RAM中的初始引导固件的起始位置,(ii)执行该初始引导固件。
示例27包括示例20-26中的任何一个的主题,并且还包括由安全引擎将聚合的哈希值发送至处理器。
示例28包括示例20-27中的任何一个的主题,并且还包括响应于确定聚合的哈希值与参考校验和值不匹配而执行安全功能。
示例29包括示例20-28中的任何一个的主题,并且其中,执行安全功能包括执行以下操作中的至少一个操作:关闭计算设备、禁用计算设备、或者重新引导计算设备。
示例30包括示例20-29中的任何一个的主题,并且还包括:由安全引擎来对该计算设备的平台初始化固件进行认证;以及由处理器来执行经认证的平台初始化固件,以将处理器的高速缓存的一部分初始化为高速缓存RAM。
示例31包括示例20-30中的任何一个的主题,并且其中,对所述平台初始化固件进行认证包括:(i)从计算设备的存储器中取回该平台初始化固件;(ii)通知处理器已经对该平台初始化固件进行了认证。
示例32包括示例20-31中的任何一个的主题,并且还包括:由处理器从安全引擎的安全存储器中取回经认证的平台初始化固件;并且其中,执行经认证的平台初始化固件包括执行从安全引擎的安全存储器取回的经认证的平台初始化固件。
示例33包括示例20-32中的任何一个的主题,并且其中,所述初始引导固件包括阶段-1引导加载程序;其中,所述平台初始化固件包括在执行阶段-1引导加载程序之前由处理器执行的阶段-0引导加载程序。
示例34包括示例20-33中的任何一个的主题,并且其中,连续地确定针对初始引导固件的多个块中的每个块的哈希值,包括:(i)从计算设备的存储器中取回初始引导固件的多个块中的第一块,(ii)将所取回的初始引导固件的第一块存储在安全引擎的安全存储器中,(iii)确定与存储在安全存储器中的初始引导固件的第一块相对应的第一哈希值,(iv)响应于将初始引导固件的第一块存储在高速缓存RAM中而从计算设备的存储器中取回初始引导固件的多个块中的第二块,(v)将所取回的初始引导固件的第二块存储在安全引擎的安全存储器中,(vi)确定与存储在安全存储器中的初始引导固件的第二块相对应的第二哈希值;其中,将存储在安全存储器中的每个块复制到高速缓存RAM包括:(i)响应于确定第一哈希值而将存储在安全存储器中的初始引导固件的第一块复制到高速缓存RAM,(ii)响应于确定第二哈希值而将存储在安全存储器中的初始引导固件的第二块复制到高速缓存RAM;并且其中,生成聚合的哈希值包括根据所确定的第一哈希值和第二哈希值来生成聚合的哈希值。
示例35包括示例20-34中的任何一个的主题,并且还包括确定初始引导固件的第二块是否是该初始引导固件的多个块中的最后的块。
示例36包括示例20-35中的任何一个的主题,并且其中,响应于确定所述初始引导固件的第二块不是最后的块:(i)由所述安全引擎连续地取回初始引导固件的所述多个块的每个剩余的块,并确定针对所取回的每个剩余的块的哈希值;(ii)由所述安全引擎或者所述处理器将所取回的每个剩余的块复制到所述高速缓存RAM;其中,生成所述聚合的哈希值,包括:根据所确定的第一哈希值、所确定的第二哈希值、以及所确定的针对所取回的剩余的块中的每个块的哈希值,来生成所述聚合的哈希值。
示例37包括示例20-36中的任何一个的主题,并且其中,生成所述聚合的哈希值,包括:响应于确定所述初始引导固件的第二块是最后的块,生成所述聚合的哈希值。
示例38包括示例20-37中的任何一个的主题,并且其中,连续地确定针对初始引导固件的多个块中的每个块的哈希值包括:(i)从计算设备的存储器中取回初始引导固件的多个块中的第一块,(ii)将所取回的初始引导固件的第一块存储在安全引擎的安全存储器的第一缓冲区中,(iii)确定与存储在安全存储器的第一缓冲区中的初始引导固件的第一块相对应的第一哈希值,(iv)和确定与初始引导固件的第一块相对应的第一哈希值同时地从计算设备的存储器中取回初始引导固件的多个块中的第二块,(v)将所取回的初始引导固件的第二块存储在安全引擎的安全存储器的第二缓冲区中,(vi)确定与存储在安全存储器的第二缓冲区中的初始引导固件的第二块相对应的第二哈希值;其中,将存储在安全存储器中的每个块复制到高速缓存RAM包括:(i)响应于确定第一哈希值而将存储在安全存储器的第一缓冲区中的初始引导固件的第一块复制到高速缓存RAM,(ii)响应于确定第二哈希值而将存储在安全存储器的第二缓冲区中的初始引导固件的第二块复制到高速缓存RAM;并且其中,生成聚合的哈希值包括根据所确定的第一哈希值和第二哈希值来生成聚合的哈希值。
示例39包括执行安全引导的计算设备,该计算设备包括处理器;以及存储器,其中该存储器具有存储在其上的多个指令,当由处理器执行时,所述指令使得该计算设备执行示例20-38中的任何一个所述的方法。
示例40包括存一个或多个机器可读介质,该机器可读介质包括存储在其上的多个指令,响应于所述指令被执行,使得计算设备执行示例20-38中的任何一个所述的方法。
示例41包括用于执行安全引导的计算设备,该计算设备包括:用于由计算设备的安全引擎连续地针对确定初始引导固件的多个块中的每个块的哈希值的单元,其中,用于连续地确定所述哈希值的单元包括:(i)用于从计算设备的存储器中取回多个块中的每个块的单元,(ii)用于将所取回的每个块存储在安全引擎的安全存储器中的单元,(iii)用于确定针对存储在安全存储器中的每个块的哈希值的单元;用于由计算设备的安全引擎或者处理器将存储在安全存储器中的每个块复制到处理器的高速缓存RAM的单元;用于由安全引擎根据所确定的针对初始引导固件的每个块的哈希值来生成聚合的哈希值的单元;用于由处理器将聚合的哈希值和与该初始引导固件相关联的参考校验和值进行比较,以确定聚合的哈希值是否与参考校验和值相匹配的单元;用于响应于确定聚合的哈希值与参考校验和值相匹配而完成处理器的初始化的单元。
示例42包括示例41的主题,并且其中,所述安全引擎包括与计算设备的处理器不同的安全协处理器。
示例43包括示例41和示例42中的任何一个的主题,并且其中,用于确定针对存储在安全存储器中的每个块的哈希值的单元包括用于使用加密哈希函数来确定存储在安全存储器中的每个块的哈希值的单元。
示例44包括示例41-43中的任何一个的主题,并且其中,所述加密哈希函数包括安全哈希算法。
示例45包括示例41-44中的任何一个的主题,并且其中,所述初始引导固件的多个块中的每个块具有相等的存储器大小。
示例46包括示例41-45中的任何一个的主题,并且其中,所述初始引导固件的所述多个块中的每个块具有小于或者等于安全引擎的安全存储器的存储器存储容量的存储器大小。
示例47包括示例41-46中的任何一个的主题,并且其中,用于完成处理器初始化的初始化的单元包括:(i)用于跳到存储在高速缓存RAM中的初始引导固件的起始位置的单元,(ii)用于执行该初始引导固件的单元。
示例48包括示例41-47中的任何一个的主题,并且还包括用于由安全引擎向处理器发送聚合的哈希值的单元。
示例49包括示例41-48中的任何一个的主题,并且还包括用于响应于确定聚合的哈希值与参考校验和值不匹配而执行安全功能的单元。
示例50包括示例41-49中的任何一个的主题,并且其中,用于执行安全功能的单元包括用于执行以下操作中的至少一个操作的单元:关闭计算设备、禁用计算设备、或者重新引导计算设备。
示例51包括示例41-50中的任何一个的主题,并且还包括:用于由安全引擎对该计算设备的平台初始化固件进行认证的单元;用于由处理器执行经认证的平台初始化固件,以将处理器的高速缓存的一部分初始化为高速缓存RAM的单元。
示例52包括示例41-51中的任何一个的主题,并且其中,用于对平台初始化固件进行认证的单元包括:(i)用于从计算设备的存储器中取回该平台初始化固件的单元;(ii)用于通知处理器已经对该平台初始化固件进行了认证的单元。
示例53包括示例41-52中的任何一个的主题,并且还包括:用于由处理器从安全引擎的安全存储器中取回经认证的平台初始化固件的单元;并且其中,用于执行经认证的平台初始化固件的单元包括用于执行从安全引擎的安全存储器取回的经认证的平台初始化固件的单元。
示例54包括示例41-53中的任何一个的主题,并且其中,所述初始引导固件包括阶段-1引导加载程序;并且其中,所述平台初始化固件包括在执行该阶段-1引导加载程序之前由处理器执行的阶段-0引导加载程序。
示例55包括示例41-54中的任何一个的主题,并且其中,用于连续地确定针对初始引导固件的多个块中的每个块的哈希值的单元包括:(i)用于从计算设备的存储器中取回初始引导固件的多个块中的第一块的单元,(ii)用于将所取回的初始引导固件的第一块存储在安全引擎的安全存储器中的单元,(iii)用于确定与存储在安全存储器中的初始引导固件的第一块相对应的第一哈希值的单元,(iv)用于响应于将初始引导固件的第一块存储在高速缓存RAM中而从计算设备的存储器中取回初始引导固件的多个块中的第二块的单元,(v)用于将所取回的初始引导固件的第二块存储在安全引擎的安全存储器中的单元,(vi)用于确定与存储在安全存储器中的初始引导固件的第二块相对应的第二哈希值的单元;其中,用于将存储在安全存储器中的每个块复制到高速缓存RAM的单元包括:(i)用于响应于确定第一哈希值而将存储在安全存储器中的初始引导固件的第一块复制到高速缓存RAM的单元,(ii)用于响应于确定第二哈希值而将存储在安全存储器中的初始引导固件的第二块复制到高速缓存RAM的单元;并且其中,用于生成聚合的哈希值的单元包括用于根据所确定的第一哈希值和第二哈希值来生成聚合的哈希值的单元。
示例56包括示例41-55中的任何一个的主题,并且还包括用于确定初始引导固件的第二块是否是初始引导固件的多个块中的最后的块的单元。
示例57包括示例41-56中的任何一个的主题,并且其中,响应于确定针对初始引导固件的第二块不是最后的块,该计算设备还包括:(i)用于由安全引擎连续地取回初始引导固件的多个块的每个剩余的块的单元,(ii)用于由安全引擎确定针对所取回的每个剩余的块的哈希值的单元;(iii)用于由安全引擎或者处理器将所取回的每个剩余的块复制到高速缓存RAM的单元;其中,用于生成聚合的哈希值的单元包括用于根据所确定的第一哈希值、所确定的第二哈希值、以及所确定的针对所取回的剩余的块中的每个块的哈希值,来生成聚合的哈希值的单元。
示例58包括示例41-57中的任何一个的主题,并且其中,用于生成所述聚合的哈希值的单元,包括:用于响应于确定所述初始引导固件的第二块是最后的块,生成所述聚合的哈希值的单元。
示例59包括示例41-58中的任何一个的主题,并且其中,用于连续地确定针对初始引导固件的多个块中的每个块的哈希值的单元,包括:(i)用于从计算设备的存储器中取回初始引导固件的多个块中的第一块的单元,(ii)用于将所取回的初始引导固件的第一块存储在安全引擎的安全存储器的第一缓冲区中的单元,(iii)用于确定与存储在安全存储器的第一缓冲区中的初始引导固件的第一块相对应的第一哈希值的单元,(iv)用于和确定与初始引导固件的第一块相对应的第一哈希值同时地从计算设备的存储器中取回初始引导固件的多个块中的第二块的单元,(v)用于将所取回的初始引导固件的第二块存储在安全引擎的安全存储器的第二缓冲区中的单元,(vi)用于确定与存储在安全存储器的第二缓冲区中的初始引导固件的第二块相对应的第二哈希值的单元;其中,用于将存储在安全存储器中的每个块复制到高速缓存RAM的单元包括:(i)用于响应于确定第一哈希值而将存储在安全存储器的第一缓冲区中的初始引导固件的第一块复制到高速缓存RAM的单元,(ii)用于响应于确定第二哈希值而将存储在安全存储器的第二缓冲区中的初始引导固件的第二块复制到高速缓存RAM的单元;其中,用于生成聚合的哈希值的单元包括用于根据所确定的第一哈希值和第二哈希值来生成聚合的哈希值的单元。
Claims (25)
1.一种用于执行安全引导的计算设备,所述计算设备包括:
所述计算设备的安全引擎,其包括用于执行以下操作的安全引导模块:(i)连续地确定针对初始引导固件的多个块中的每个块的哈希值,其中,连续地确定所述哈希值包括:(a)从所述计算设备的存储器中取回所述多个块中的每个块,(b)将所取回的每个块存储在所述安全引擎的安全存储器中,(c)确定针对存储在所述安全存储器中的每个块的所述哈希值;以及(ii)根据所确定的针对所述初始引导固件的每个块的所述哈希值来生成聚合的哈希值;以及
包括高速缓存RAM和处理器初始化模块的处理器,所述处理器用于:(i)将所述聚合的哈希值和与所述初始引导固件相关联的参考校验和值进行比较,以确定所述聚合的哈希值是否与所述参考校验和值相匹配;并且(ii)响应于确定所述聚合的哈希值与所述参考校验和值相匹配而完成所述处理器的初始化,
其中,所述安全引导模块或者所述处理器初始化模块用于将存储在所述安全存储器中的每个块复制到所述处理器的所述高速缓存RAM。
2.根据权利要求1所述的计算设备,其中,所述安全引擎包括与所述计算设备的所述处理器不同的安全协处理器。
3.根据权利要求1所述的计算设备,其中,确定针对存储在所述安全存储器中的每个块的所述哈希值包括使用加密哈希函数来确定存储在所述安全存储器中的每个块的所述哈希值。
4.根据权利要求3所述的计算设备,其中,所述加密哈希函数包括安全哈希算法。
5.根据权利要求1所述的计算设备,其中,所述初始引导固件的所述多个块中的每个块具有相等的存储器大小。
6.根据权利要求1所述的计算设备,其中,所述初始引导固件的所述多个块中的每个块具有小于或者等于所述安全引擎的所述安全存储器的存储器存储容量的存储器大小。
7.根据权利要求1所述的计算设备,其中,完成所述处理器初始化的初始化包括:(i)跳到存储在所述高速缓存RAM中的所述初始引导固件的起始位置,以及(ii)执行所述初始引导固件。
8.根据权利要求1所述的计算设备,其中,所述安全引导模块还用于将所述聚合的哈希值发送至所述处理器。
9.根据权利要求1所述的计算设备,其中,所述处理器还用于响应于确定所述聚合的哈希值与所述参考校验和值不匹配而执行安全功能。
10.根据权利要求9所述的计算设备,其中,执行安全功能包括执行以下操作中的至少一项操作:关闭所述计算设备、禁用所述计算设备、或者重新引导所述计算设备。
11.根据权利要求1所述的计算设备,其中,所述安全引导模块还用于对用于所述计算设备的平台初始化固件进行认证;并且
其中,所述处理器还用于:(i)从所述安全引擎的所述安全存储器中取回经认证的平台初始化固件;并且(ii)执行从所述安全引擎的所述安全存储器中取回的所述经认证的平台初始化固件,以将所述处理器的高速缓存的一部分初始化为所述高速缓存RAM。
12.根据权利要求11所述的计算设备,其中,对所述平台初始化固件进行认证还包括:(i)从所述计算设备的所述存储器中取回所述平台初始化固件;(ii)通知所述处理器已经对所述平台初始化固件进行了认证。
13.根据权利要求11所述的计算设备,其中,所述初始引导固件包括阶段-1引导加载程序;并且
其中,所述平台初始化固件包括在执行所述阶段-1引导加载程序之前,由所述处理器执行的阶段-0引导加载程序。
14.根据权利要求1-13中的任何一项所述的计算设备,其中,连续地确定针对初始引导固件的所述多个块中的每个块的所述哈希值包括:(i)从所述计算设备的所述存储器中取回初始引导固件的所述多个块中的第一块,(ii)将所取回的所述初始引导固件的所述第一块存储在所述安全引擎的所述安全存储器中,(iii)确定与存储在所述安全存储器中的所述初始引导固件的所述第一块相对应的第一哈希值,(iv)响应于将所述初始引导固件的所述第一块存储在所述高速缓存RAM中而从所述计算设备的所述存储器中取回初始引导固件的所述多个块中的第二块,(v)将所取回的所述初始引导固件的所述第二块存储在所述安全引擎的所述安全存储器中,以及(vi)确定与存储在所述安全存储器中的所述初始引导固件的所述第二块相对应的第二哈希值;
其中,将存储在所述安全存储器中的每个块复制到所述高速缓存RAM包括:(i)响应于确定所述第一哈希值而将存储在所述安全存储器中的所述初始引导固件的所述第一块复制到所述高速缓存RAM,(ii)响应于确定所述第二哈希值而将存储在所述安全存储器中的所述初始引导固件的所述第二块复制到所述高速缓存RAM;并且
其中,生成所述聚合的哈希值包括根据所确定的第一哈希值和第二哈希值而生成所述聚合的哈希值。
15.根据权利要求14所述的计算设备,其中,所述安全引导模块还用于确定所述初始引导固件的所述第二块是否是所述初始引导固件的所述多个块中的最后的块。
16.根据权利要求15所述的计算设备,其中,响应于确定所述初始引导固件的所述第二块不是所述最后的块:(i)所述安全引导模块还用于(a)连续地取回所述初始引导固件的所述多个块的每个剩余的块,(b)确定针对所取回的每个剩余的块的哈希值;并且(ii)所述安全引导模块或者所述处理器初始化模块将所取回的每个剩余的块复制到所述高速缓存RAM;并且
其中,生成所述聚合的哈希值包括根据所确定的第一哈希值、所确定的第二哈希值、以及所确定的针对取回的所述剩余的块中的每个块的哈希值来生成所述聚合的哈希值。
17.根据权利要求15所述的计算设备,其中,生成所述聚合的哈希值包括响应于确定所述初始引导固件的所述第二块是所述最后的块而生成所述聚合的哈希值。
18.根据权利要求1-13中的任何一项所述的计算设备,其中,连续地确定针对初始引导固件的所述多个块中的每个块的所述哈希值包括:(i)从所述计算设备的所述存储器中取回初始引导固件的所述多个块中的第一块,(ii)将所取回的所述初始引导固件的所述第一块存储在所述安全引擎的所述安全存储器的第一缓冲区中,(iii)确定与存储在所述安全存储器的所述第一缓冲区中的所述初始引导固件的所述第一块相对应的第一哈希值,(iv)和确定与所述初始引导固件的所述第一块相对应的所述第一哈希值同时地从所述计算设备的所述存储器中取回初始引导固件的所述多个块中的第二块,(v)将所取回的所述初始引导固件的所述第二块存储在所述安全引擎的所述安全存储器的第二缓冲区中,以及(vi)确定与存储在所述安全存储器的所述第二缓冲区中的所述初始引导固件的所述第二块相对应的第二哈希值;
其中,将存储在所述安全存储器中的每个块复制到所述高速缓存RAM包括:(i)响应于确定所述第一哈希值而将存储在所述安全存储器的所述第一缓冲区中的所述初始引导固件的所述第一块复制到所述高速缓存RAM,以及(ii)响应于确定所述第二哈希值而将存储在所述安全存储器的所述第二缓冲区中的所述初始引导固件的所述第二块复制到所述高速缓存RAM;并且
其中,生成所述聚合的哈希值包括:根据所确定的第一哈希值和第二哈希值来生成所述聚合的哈希值。
19.一种用于安全地引导计算设备的方法,所述方法包括:
由所述计算设备的安全引擎连续地确定针对初始引导固件的多个块中的每个块的哈希值,其中,连续地确定所述哈希值包括:(i)从所述计算设备的存储器中取回所述多个块中的每个块,(ii)将所取回的每个块存储在所述安全引擎的安全存储器中,以及(iii)确定针对存储在所述安全存储器中的所述每个块的哈希值;
由所述计算设备的所述安全引擎或者处理器将存储在所述安全存储器中的每个块复制到所述处理器的高速缓存RAM;
由所述安全引擎根据所确定的针对所述初始引导固件的每个块的所述哈希值来生成聚合的哈希值;
由所述处理器将所述聚合的哈希值和与所述初始引导固件相关联的参考校验和值进行比较,以确定所述聚合的哈希值是否与所述参考校验和值相匹配;以及
响应于确定所述聚合的哈希值与所述参考校验和值相匹配而完成所述处理器的初始化。
20.根据权利要求19所述的方法,其中,完成所述处理器初始化的初始化包括:(i)跳到存储在所述高速缓存RAM中的所述初始引导固件的起始位置,以及(ii)执行所述初始引导固件。
21.根据权利要求19所述的方法,还包括:
响应于确定所述聚合的哈希值与所述参考校验和值不匹配而执行安全功能。
22.根据权利要求19所述的方法,还包括:
由所述安全引擎对用于所述计算设备的平台初始化固件进行认证;
由所述处理器从所述安全引擎的所述安全存储器中取回经认证的平台初始化固件;以及
由所述处理器执行从所述安全引擎的所述安全存储器中取回的所述经认证的平台初始化固件,以将所述处理器的高速缓存的一部分初始化为所述高速缓存RAM。
23.根据权利要求19所述的方法,其中,连续地确定针对初始引导固件的所述多个块中的每个块的所述哈希值包括:(i)从所述计算设备的所述存储器中取回初始引导固件的所述多个块中的第一块,(ii)将所取回的所述初始引导固件的所述第一块存储在所述安全引擎的所述安全存储器中,(iii)确定与存储在所述安全存储器中的所述初始引导固件的所述第一块相对应的第一哈希值,(iv)响应于将所述初始引导固件的所述第一块存储在所述高速缓存RAM中而从所述计算设备的所述存储器中取回初始引导固件的所述多个块中的第二块,(v)将所取回的所述初始引导固件的所述第二块存储在所述安全引擎的所述安全存储器中,以及(vi)确定与存储在所述安全存储器中的所述初始引导固件的所述第二块相对应的第二哈希值;
其中,将存储在所述安全存储器中的每个块复制到所述高速缓存RAM包括:(i)响应于确定所述第一哈希值定而将存储在所述安全存储器中的所述初始引导固件的所述第一块复制到所述高速缓存RAM,以及(ii)响应于确定所述第二哈希值而将存储在所述安全存储器中的所述初始引导固件的所述第二块复制到所述高速缓存RAM;并且
其中,生成所述聚合的哈希值包括根据所确定的第一哈希值和第二哈希值来生成所述聚合的哈希值。
24.根据权利要求19所述的方法,其中,连续地确定针对初始引导固件的所述多个块中的每个块的所述哈希值包括:(i)从所述计算设备的所述存储器中取回初始引导固件的所述多个块中的第一块,(ii)将所取回的所述初始引导固件的所述第一块存储在所述安全引擎的所述安全存储器的第一缓冲区中,(iii)确定与存储在所述安全存储器的所述第一缓冲区中的所述初始引导固件的所述第一块相对应的第一哈希值,(iv)和确定与所述初始引导固件的所述第一块相对应的所述第一哈希值同时地从所述计算设备的所述存储器中取回初始引导固件的所述多个块中的第二块,(v)将所取回的所述初始引导固件的所述第二块存储在所述安全引擎的所述安全存储器的第二缓冲区中,以及(vi)确定与存储在所述安全存储器的所述第二缓冲区中的所述初始引导固件的所述第二块相对应的第二哈希值;
其中,将存储在所述安全存储器中的每个块复制到所述高速缓存RAM包括:(i)响应于确定所述第一哈希值而将存储在所述安全存储器的所述第一缓冲区中的所述初始引导固件的所述第一块复制到所述高速缓存RAM,以及(ii)响应于确定所述第二哈希值而将存储在所述安全存储器的所述第二缓冲区中的所述初始引导固件的所述第二块复制到所述高速缓存RAM上;并且
其中,生成所述聚合的哈希值包括根据所确定的第一哈希值和第二哈希值来生成所述聚合的哈希值。
25.一个或多个机器可读的介质,其包括存储在其上的多个指令,响应于被执行,所述指令使得计算设备执行权利要求19-24中的任何一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910379458.5A CN110263541B (zh) | 2014-04-28 | 2014-04-28 | 安全引导计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/076348 WO2015165000A1 (en) | 2014-04-28 | 2014-04-28 | Securely booting a computing device |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910379458.5A Division CN110263541B (zh) | 2014-04-28 | 2014-04-28 | 安全引导计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106462707A true CN106462707A (zh) | 2017-02-22 |
CN106462707B CN106462707B (zh) | 2019-06-14 |
Family
ID=54357968
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910379458.5A Active CN110263541B (zh) | 2014-04-28 | 2014-04-28 | 安全引导计算设备 |
CN201480077635.XA Expired - Fee Related CN106462707B (zh) | 2014-04-28 | 2014-04-28 | 安全引导计算设备 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910379458.5A Active CN110263541B (zh) | 2014-04-28 | 2014-04-28 | 安全引导计算设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10248428B2 (zh) |
EP (1) | EP3138040B1 (zh) |
KR (1) | KR101846427B1 (zh) |
CN (2) | CN110263541B (zh) |
TW (1) | TWI643070B (zh) |
WO (1) | WO2015165000A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109997140A (zh) * | 2018-09-10 | 2019-07-09 | 深圳市汇顶科技股份有限公司 | 使用一次写入寄存器从设备的睡眠状态加速安全启动的低功耗嵌入式设备 |
CN113971276A (zh) * | 2020-07-23 | 2022-01-25 | 慧与发展有限责任合伙企业 | 使用迭代验证过程验证机器可读指令 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015113046A1 (en) * | 2014-01-27 | 2015-07-30 | Rambus Inc. | Implementing access control by system-on-chip |
US10223294B2 (en) * | 2015-09-01 | 2019-03-05 | Nxp Usa, Inc. | Fast secure boot from embedded flash memory |
KR101816022B1 (ko) * | 2015-11-19 | 2018-01-31 | 시큐리티플랫폼 주식회사 | 장치 및 이의 제어 방법 |
US10747884B2 (en) | 2015-12-24 | 2020-08-18 | Intel Corporation | Techniques for coordinating device boot security |
EP3291087A1 (en) * | 2016-09-01 | 2018-03-07 | Nxp B.V. | Apparatus and associated method for authenticating firmware |
GB2554940B (en) * | 2016-10-14 | 2020-03-04 | Imagination Tech Ltd | Out-of-bounds recovery circuit |
US10346071B2 (en) | 2016-12-29 | 2019-07-09 | Western Digital Technologies, Inc. | Validating firmware for data storage devices |
US10664413B2 (en) * | 2017-01-27 | 2020-05-26 | Lear Corporation | Hardware security for an electronic control unit |
JP6884600B2 (ja) * | 2017-03-02 | 2021-06-09 | 任天堂株式会社 | 無線通信システム、通信方法、情報処理装置、および、情報処理プログラム |
US10902126B2 (en) * | 2017-03-10 | 2021-01-26 | International Business Machines Corporation | Verification of a boot loader program at a control unit to be provided to a host system to load an operating system |
FR3075420B1 (fr) * | 2017-12-20 | 2020-01-10 | Thales | Systeme et procede de demarrage securise d'un processeur |
US10860238B2 (en) * | 2017-12-27 | 2020-12-08 | Intel Corporation | Method and apparatus for improving firmware loading |
US10666767B1 (en) | 2018-01-30 | 2020-05-26 | State Farm Mutual Automobile Insurance Company | Systems and methods for vehicle configuration verification using smart contracts |
WO2019217934A1 (en) | 2018-05-11 | 2019-11-14 | Lattice Semiconductor Corporation | Secure boot systems and methods for programmable logic devices |
KR102286794B1 (ko) * | 2018-08-16 | 2021-08-06 | 경희대학교 산학협력단 | 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법 |
US10776493B2 (en) | 2018-10-12 | 2020-09-15 | Hewlett Packard Enterprise Development Lp | Secure management and execution of computing code including firmware |
CN109445705B (zh) * | 2018-10-29 | 2022-03-22 | 湖南国科微电子股份有限公司 | 固件认证方法及固态硬盘 |
KR102567097B1 (ko) * | 2018-12-05 | 2023-08-14 | 삼성전자주식회사 | 임베디드 시스템의 부트 롬 업데이트 방법 및 부팅 방법 |
US11017090B2 (en) * | 2018-12-17 | 2021-05-25 | Hewlett Packard Enterprise Development Lp | Verification of a state of a platform |
US10824501B2 (en) | 2019-01-07 | 2020-11-03 | Mellanox Technologies, Ltd. | Computer code integrity checking |
WO2020163977A1 (en) * | 2019-02-11 | 2020-08-20 | Intel Corporation | Virtual flash |
US11360784B2 (en) | 2019-09-10 | 2022-06-14 | Hewlett Packard Enterprise Development Lp | Integrity manifest certificate |
US11238159B1 (en) * | 2019-11-08 | 2022-02-01 | Facebook Technologies, Llc | Artificial reality system with verified boot sequences |
GB2589877B (en) * | 2019-12-10 | 2022-01-12 | Advanced Risc Mach Ltd | An apparatus and method of controlling access to data stored in a non-trusted memory |
CN111736763B (zh) * | 2020-05-25 | 2022-05-13 | 瑞芯微电子股份有限公司 | 一种存储数据读取控制方法和装置 |
US11636210B2 (en) | 2020-07-01 | 2023-04-25 | Meta Platforms Technologies, Llc | Artificial reality system with multi-stage boot process |
CN111541553B (zh) * | 2020-07-08 | 2021-08-24 | 支付宝(杭州)信息技术有限公司 | 区块链一体机的可信启动方法及装置 |
CN112491812B (zh) | 2020-07-08 | 2022-03-01 | 支付宝(杭州)信息技术有限公司 | 区块链一体机的哈希更新方法及装置 |
US20220180005A1 (en) * | 2020-12-03 | 2022-06-09 | Seagate Technology Llc | Secure system-on-a-chip (soc) bootup |
US20210110043A1 (en) * | 2020-12-23 | 2021-04-15 | Intel Corporation | Platform firmware boot mechanism |
US11741232B2 (en) | 2021-02-01 | 2023-08-29 | Mellanox Technologies, Ltd. | Secure in-service firmware update |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060179302A1 (en) * | 2005-02-07 | 2006-08-10 | Sony Computer Entertainment Inc. | Methods and apparatus for providing a secure booting sequence in a processor |
US20080022108A1 (en) * | 2006-06-27 | 2008-01-24 | Brannock Kirk D | Method and apparatus for verifying authenticity of initial boot code |
CN101404014A (zh) * | 2007-10-01 | 2009-04-08 | 赛门铁克公司 | 用于创建和更新批准文件和受信任域数据库的方法和系统 |
CN102325025A (zh) * | 2011-05-25 | 2012-01-18 | 北京数码视讯科技股份有限公司 | 提供源真实性的数据处理方法及系统 |
CN103679004A (zh) * | 2012-09-19 | 2014-03-26 | Nxp股份有限公司 | 用于安全地更新计算设备中的固件的方法及系统 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9626241D0 (en) * | 1996-12-18 | 1997-02-05 | Ncr Int Inc | Secure data processing method and system |
US6735696B1 (en) * | 1998-08-14 | 2004-05-11 | Intel Corporation | Digital content protection using a secure booting method and apparatus |
US20050204155A1 (en) * | 2004-03-09 | 2005-09-15 | Nec Laboratories America, Inc | Tamper resistant secure architecture |
US8429418B2 (en) * | 2006-02-15 | 2013-04-23 | Intel Corporation | Technique for providing secure firmware |
KR101209252B1 (ko) * | 2007-02-02 | 2012-12-06 | 삼성전자주식회사 | 전자기기의 부팅 방법 및 부팅 인증 방법 |
US8560823B1 (en) * | 2007-04-24 | 2013-10-15 | Marvell International Ltd. | Trusted modular firmware update using digital certificate |
US7971048B2 (en) * | 2008-03-27 | 2011-06-28 | Intel Corporation | System and method for establishing a trust domain on a computer platform |
US9747340B2 (en) * | 2008-06-19 | 2017-08-29 | Microsoft Technology Licensing, Llc | Method and system of using a local hosted cache and cryptographic hash functions to reduce network traffic |
US9747450B2 (en) * | 2014-02-10 | 2017-08-29 | Facebook, Inc. | Attestation using a combined measurement and its constituent measurements |
CA2874277C (en) * | 2014-10-04 | 2015-08-18 | 2381371 Ontario Inc. | Tamper-evident network messaging method and system, and device configured therefor |
US9965270B2 (en) * | 2015-07-01 | 2018-05-08 | Quanta Computer Inc. | Updating computer firmware |
-
2014
- 2014-04-28 KR KR1020167026703A patent/KR101846427B1/ko active IP Right Grant
- 2014-04-28 US US15/300,086 patent/US10248428B2/en not_active Expired - Fee Related
- 2014-04-28 CN CN201910379458.5A patent/CN110263541B/zh active Active
- 2014-04-28 CN CN201480077635.XA patent/CN106462707B/zh not_active Expired - Fee Related
- 2014-04-28 EP EP14890700.9A patent/EP3138040B1/en active Active
- 2014-04-28 WO PCT/CN2014/076348 patent/WO2015165000A1/en active Application Filing
-
2015
- 2015-03-24 TW TW104109408A patent/TWI643070B/zh not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060179302A1 (en) * | 2005-02-07 | 2006-08-10 | Sony Computer Entertainment Inc. | Methods and apparatus for providing a secure booting sequence in a processor |
US20080022108A1 (en) * | 2006-06-27 | 2008-01-24 | Brannock Kirk D | Method and apparatus for verifying authenticity of initial boot code |
CN101404014A (zh) * | 2007-10-01 | 2009-04-08 | 赛门铁克公司 | 用于创建和更新批准文件和受信任域数据库的方法和系统 |
CN102325025A (zh) * | 2011-05-25 | 2012-01-18 | 北京数码视讯科技股份有限公司 | 提供源真实性的数据处理方法及系统 |
CN103679004A (zh) * | 2012-09-19 | 2014-03-26 | Nxp股份有限公司 | 用于安全地更新计算设备中的固件的方法及系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109997140A (zh) * | 2018-09-10 | 2019-07-09 | 深圳市汇顶科技股份有限公司 | 使用一次写入寄存器从设备的睡眠状态加速安全启动的低功耗嵌入式设备 |
CN113971276A (zh) * | 2020-07-23 | 2022-01-25 | 慧与发展有限责任合伙企业 | 使用迭代验证过程验证机器可读指令 |
CN113971276B (zh) * | 2020-07-23 | 2022-07-12 | 慧与发展有限责任合伙企业 | 使用迭代验证过程验证机器可读指令 |
Also Published As
Publication number | Publication date |
---|---|
WO2015165000A1 (en) | 2015-11-05 |
TW201602786A (zh) | 2016-01-16 |
CN110263541B (zh) | 2023-05-12 |
KR101846427B1 (ko) | 2018-04-06 |
CN106462707B (zh) | 2019-06-14 |
KR20160126067A (ko) | 2016-11-01 |
EP3138040A4 (en) | 2017-12-13 |
TWI643070B (zh) | 2018-12-01 |
US20170147356A1 (en) | 2017-05-25 |
EP3138040A1 (en) | 2017-03-08 |
CN110263541A (zh) | 2019-09-20 |
US10248428B2 (en) | 2019-04-02 |
EP3138040B1 (en) | 2020-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106462707A (zh) | 安全引导计算设备 | |
US10133637B2 (en) | Systems and methods for secure recovery of host system code | |
CN105453102B (zh) | 用于识别已泄漏的私有密钥的系统和方法 | |
CN108701191B (zh) | 数据处理设备和验证数据处理设备的完整性的方法 | |
US10599419B2 (en) | Secure firmware updates using virtual machines to validate firmware packages | |
CN108701188A (zh) | 响应于检测潜在勒索软件以用于修改文件备份的系统和方法 | |
CN106682497A (zh) | 在管理程序模式下安全执行代码的系统和方法 | |
CN104769598B (zh) | 用于检测非法应用程序的系统和方法 | |
CN103827812B (zh) | 选项只读存储器的使用 | |
US10255438B2 (en) | Operating system agnostic validation of firmware images | |
US10185633B2 (en) | Processor state integrity protection using hash verification | |
CN104115125A (zh) | 安全的错误处理 | |
US10146704B2 (en) | Volatile/non-volatile memory device access provisioning system | |
CN113557515A (zh) | 外围设备与安全电路系统的兼容性 | |
KR20210130825A (ko) | 분산 원장 시스템으로의 데이터 기록의 카피의 잘못된 전송 방지 | |
US11928215B2 (en) | Firmware verification mechanism | |
US20200410084A1 (en) | Safe Battery Authentication | |
Chen et al. | Unveiling Signle-Bit-Flip Attacks on DNN Executables | |
TWI821971B (zh) | 安全加密協同處理器 | |
EP4281893A1 (en) | Read-only memory (rom) security | |
CN117063178A (zh) | 只读存储器(rom)安全 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190614 Termination date: 20210428 |