CN113971276A - 使用迭代验证过程验证机器可读指令 - Google Patents
使用迭代验证过程验证机器可读指令 Download PDFInfo
- Publication number
- CN113971276A CN113971276A CN202110417623.9A CN202110417623A CN113971276A CN 113971276 A CN113971276 A CN 113971276A CN 202110417623 A CN202110417623 A CN 202110417623A CN 113971276 A CN113971276 A CN 113971276A
- Authority
- CN
- China
- Prior art keywords
- processor
- information
- machine
- subset
- iteration
- 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
- 238000010200 validation analysis Methods 0.000 title claims abstract description 20
- 230000015654 memory Effects 0.000 claims description 47
- 238000012795 verification Methods 0.000 claims description 38
- 238000000034 method Methods 0.000 claims description 25
- 230000008569 process Effects 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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
-
- 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
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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/3239—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 non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Health & Medical Sciences (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Retry When Errors Occur (AREA)
- Hardware Redundancy (AREA)
Abstract
本公开涉及使用迭代验证过程验证机器可读指令。在一些实施例中,系统包括第一处理器,第二处理器和存储介质,存储介质存储包括可由第二处理器执行的机器可读指令的第一信息。第一处理器使用涉及在不同时间的多次迭代的迭代验证过程来验证机器可读指令,其中多次迭代中的每次相应迭代包括向第二处理器发出相应指示以基于第一信息的相应子集来计算值,其中相应指示包括标识相应子集的相应子集信息,其中相应子集信息不同于多次迭代的另一次迭代中发出的另一个指示中包括的不同子集信息,不同子集信息标识第一信息的不同子集。每次迭代还包括基于由第二处理器返回给第一处理器的值来确定机器可读指令的有效性。
Description
背景技术
计算设备可以包括主处理器以执行机器可读指令以执行各种操作。“主处理器”可以指计算设备中的处理器,其执行如系统固件,操作系统和应用程序的程序。“程序”是指机器可读指令。除了主处理器之外,计算设备还包括其他电子组件,例如存储设备,记忆装置,网络接口控制器,图形控制器等等。
附图说明
参照以下附图描述了本公开的一些实施方式。
图1是根据一些实施例的计算设备的方框图。
图2是根据一些实施例的过程的消息流程图。
图3是根据一些实施例的系统的方框图。
图4是根据一些实施例的存储机器可读指令的存储介质的方框图。
图5是根据一些实施例的过程的流程图。
在所有附图中,相同的附图标记表示相似但不一定相同的元件。附图不一定按比例绘制,并且某些部件的尺寸可以被夸大以更清楚地示出所示的实施例。此外,附图提供了与说明书一致的实施例和/或实施方式;然而,说明书不限于附图中提供的实施例和/或实施方式。
具体实施方式
在本公开中,除非上下文另外明确地指出,否则使用术语“一”,“一个”或“该”也意图包括复数形式。而且,当在本公开中使用时,术语“包含(includes)”、“包含(including)”、“包括(comprises)”、“包括(comprising)”、“具有(have)”或“具有(having)”指定存在所述元件,但不排除存在或添加其他元件。
在一些实施例中,除了主处理器之外,计算设备还可以包括附加处理器(或多个附加处理器)。处理器可以包括微处理器,多核微处理器的核,微控制器,可编程集成电路,可编程门阵列或另一个硬件处理电路。
在一些实施例中,附加处理器可以具有比主处理器小的处理能力。附加处理器可供以在计算设备中执行特定操作,以便主处理器将不必负担执行此类特定操作。
为了提供安全性,计算设备可以包括信任根,其可以指计算设备中的安全实体,该安全实体可被信任免受未授权实体(例如黑客,恶意软件等等)的破坏。硬件信任根指的是一种安全措施(使用硬件和机器可读指令来实现),其采用在硬件内触发并无缝过渡到固件的一系列加密操作。一系列加密操作允许代表计算设备中的其他电子组件验证信息和逻辑。例如,在计算设备的主处理器上执行机器可读指令(例如,系统固件,操作系统,应用程序等)之前,硬件信任根可以用来验证机器可读指令,以确认机器可读指令还没有被无意或有意地破坏。
作为示例,硬件信任根可以计算机器可读指令的值(例如,校验和,加密哈希值等),并且将计算值与期望值进行比较。期望值能以安全方式存储,以防止期望值受到未经授权的访问。如果计算值与期望值匹配,则提供机器可读指令还未被破坏的确认。
机器可读指令的有意破坏可以由未授权实体(例如,由黑客,恶意软件等)执行。例如,未授权实体可以修改机器可读指令,用可以执行恶意行为等的不同机器法律指令替换机器可读指令。
硬件错误或程序错误可以造成对机器可读指令的无意修改。
如果硬件信任根提供了机器可读指令已被破坏的指示,则计算设备可以阻止执行机器可读指令,以防止恶意操作或可能导致计算设备中的错误的其他操作。
尽管硬件信任根可以被采用用于与主处理器相关联的信息(例如,机器可读指令),但是硬件信任根可能无法保护计算设备的任何附加处理器的信息。
附加处理器的示例可以包括复杂可编程逻辑器件(CPLD)(例如,其可以实现为现场可编程门阵列(FPGA)),可编程接口控制器(PIC),小型微处理器(例如,在8位微处理器,16位微处理器等中),或处理能力比主处理器要低的任何其他硬件处理电路。
如果硬件信任根不可用于附加处理器,则硬件信任根将不可用于验证可由附加处理器执行的机器可读指令(例如,固件)。结果,由附加处理器执行的机器可读指令可能受到破坏,并且可能导致计算设备中的错误,损坏和不安全操作。
根据本公开的一些实施方式,提供了技术或机制以验证可由一个附加处理器或多个附加处理器执行的机器可读指令。“验证”机器可读指令是指检查机器可读指令,以确保机器可读指令未以任何方式修改或有意或无意的用不同的版本替换。
图1示出了根据一些实施例的计算设备100。计算设备的示例可以包括台式计算机,笔记本计算机,平板计算机,服务器计算机,通信节点(例如,路由器,交换机等),存储系统等等。
计算设备100包括主处理器102和小型处理器104-1至104-N(其中N≥1)。尽管图1示出了多个小型处理器,但是在其他实施例中,除了主处理器102之外,计算设备100可以仅包括一个小型处理器。
“小型处理器”具有的处理能力小于主处理器102的处理能力。处理器的处理能力是指可以在时间窗口内由处理器执行的指令数量。较小的处理能力意味着处理器可以比具有较大处理能力的另一个处理器执行更少数量的指令。
主处理器102耦合至非易失性存储器106,其可以使用一个非易失性存储设备或多个非易失性存储设备来实现。非易失性存储设备是指即使当非易失性存储设备断电时也保持存储在非易失性存储设备中的信息的存储设备。非易失性存储设备的示例包括以下各项的任何或某种组合:闪存设备,电可擦除可编程只读存储器(EEPROM)等等。
非易失性存储器106存储可由主处理器102执行的系统固件108(包括机器可读指令)。例如,系统固件108可以包括启动代码,以在加电时或响应于重置来执行计算设备100的启动任务。启动代码可以初始化计算设备100中的硬件电子组件,并且可以加载用于在计算设备100中执行的操作系统(OS)。
在主处理器102执行系统固件108之前,硬件信任根110可以用来验证系统固件108,以确认系统固件108(或系统固件108的一部分)还未受到有意或无意的破坏。在其他实施例中,不使用硬件信任根110来验证系统固件108,不同的机制可以用来验证系统固件108。
尽管硬件信任根110可以用于验证系统固件108,但是要注意的是,硬件信任根110可能不可用于验证可在小型处理器104-1至104-N中任一个上执行的机器可读指令。
在一些实施例中,硬件信任根110可以包括在基板管理控制器(BMC)内。在其他实施例中,硬件信任根110可以使用诸如可信平台模块(Trusted Platform Module,TPM)等的不同的机制来实现。
BMC是与计算设备100的主处理器102分离的管理控制器的示例。如本文所使用的,“BMC”是专业服务控制器,其使用传感器监测计算设备(如100)的物理状态,并通过独立的“带外”接线与远程管理系统(例如,其远离计算设备100)进行通信。
BMC具有管理能力以管理计算设备100的组件。BMC的管理能力的示例可以包括以下各项的任何或某种组合:用于执行计算设备100的电源管理的电源控制(例如响应于检测到的事件在不同的功耗状态之间转换计算设备100),计算设备100的热监测和控制(例如以监测计算设备100的温度并控制计算设备100的热管理设备),计算设备100中风扇的风扇控制,基于计算设备100的各种传感器的监测测量数据的系统健康监测,计算设备100的远程访问(例如,通过网络访问计算设备100),计算设备100的远程重新启动(以使用远程命令触发计算设备100重新启动),计算设备100的系统设置和部署,用于在计算设备100中实现安全程序的系统安全性等等。
在某些实施例中,BMC可以为计算设备提供所谓的“熄灯”功能。即使未在计算设备100上安装OS或OS在计算设备100上不起作用,熄灯功能也可以允许用户(例如系统管理员)在计算设备100上执行管理操作。
此外,在某些实施例中,BMC可以依靠由辅助电源(例如电池)提供的辅助电运行;结果,计算设备100不必通电以允许BMC执行BMC的操作。辅助电源与供电给计算设备100的其他组件(例如,主处理器102等)的主电源(未示出)分开。
主处理器102通过主总线112连接到电子组件114。尽管示出了多个电子组件连接到主总线112,但是在其他实施例中,仅一个电子组件114可以连接到主总线112。电子组件114的示例可以包括以下各项的任何或某种组合:网络接口控制器,存储设备控制器,图形控制器,桥控制器等等。
尽管未将非易失性存储器106示为连接到主总线112,但是应注意,在其他实施例中,非易失性存储器106可以连接到主总线112以供主处理器102访问。
主处理器102还通过二级总线116连接到小型处理器104-1至104-N。在一些实施例中,二级总线包括内部集成电路(I2C)总线。在其他实施例中,其他类型的二级总线可用于连接主处理器102到小型处理器104-1至104-N。
在图1的实施例中,每个小型处理器104-i(i=1到N)连接到相应的非易失性存储器118-i。因此,小型处理器104-1连接到非易失性存储器118-1,并且小型处理器104-N连接到非易失性存储器118-N。注意,每个非易失性存储器118-i可以是小型处理器104-i的一部分或与小型处理器104-i分开。
在其他实施例中,非易失性存储器可以由多个小型处理器104-1至104-N共享。在另外一些实施例中,用于小型处理器104-1至104-N的信息可以存储在非易失性存储器106中,非易失性存储器106也存储可以在主处理器102上执行的系统固件。
在随后的讨论中,假设每个小型处理器104-i连接到相应独立的非易失性存储器118-i。在多个小型处理器共享一个非易失性存储器的其他实施例中,可以应用类似的技术。
非易失性存储器118-1存储可在小型处理器104-1上执行的小型处理器固件120-1(或其他机器可读指令)。根据本公开的一些实施方式,小型处理器固件120-1与保护信息122-1(例如,随机值)一起存储。总体上,小型处理器固件120-1和保护信息122-1被串联以形成存储在非易失性存储器118-1中的总体信息124-1。总体信息124-1用于验证小型处理器固件120-1。
添加保护信息122-1以(全部或部分地)填充非易失性存储器118-1中的未使用存储空间,以防止将未使用空间用于未经授权的目的。如何使用保护信息122-1来阻止对小型处理器固件120-1的攻击的更多细节的进一步讨论如下。
类似地,非易失性存储器118-N存储可在小型处理器104-N上执行的小型处理器固件120-N。另外,非易失性存储器118-N存储与小型处理器固件120-N串联的保护信息122-N,以形成存储在非易失性存储器118-N中的总体信息124-N。
根据本公开的一些实施方式,在各个小型处理器104-i上执行小型处理器固件120-i之前,系统固件108(并且更具体地,系统固件108中的迭代小型处理器固件验证指令126)用于验证每个小型处理器固件120-i。在由硬件信任根110对系统固件108(或系统固件108的一部分)进行验证之后,在主处理器102上执行迭代小型处理器固件验证指令126。
迭代小型处理器固件验证指令126可以执行迭代验证过程,其包括在不同时间执行的多次迭代。每次迭代对相应小型处理器固件120-i执行单独的独立验证。例如,迭代验证过程的第一迭代可以确定小型处理器固件120-i有效。然而,多次迭代中的第二迭代可以确定小型处理器固件120-i无效(即,小型处理器固件120-i已经以某种方式被破坏)。
在不同迭代中执行的独立验证选择总体信息124-i的不同部分以执行小型处理器固件120-i的验证。在一些实施例中,当在迭代验证过程的相应不同迭代中执行验证时,迭代小型处理器固件验证指令126随机选择小型处理器固件120-I的不同部分。
迭代小型处理器固件验证指令126可以采用总体信息128-1至128-N的相应可信副本,以验证相应小型处理器固件120-1至120-N(在下面进一步讨论)。总体信息128-1的可信副本是处于有意或无意发生的任何修改之前的状态的总体信息124-1(包括小型处理器固件120-1和保护信息122-1)的副本。类似地,总体信息128-N的可信副本是处于有意或无意发生的任何修改之前的状态的总体信息124-N(包括小型处理器固件120-N和保护信息122-N)的副本。
图2是根据一些实施例的过程的消息流程图。消息流程图中涉及的实体包括硬件信任根110,主处理器102和小型处理器104(其可以是小型处理器104-1至104-N中的任何一个)。
最初,诸如在系统通电或重置期间,硬件信任根110验证(在202处)系统固件108(或系统固件108的一部分)。假设硬件信任根110成功地验证了系统固件108(或系统固件108的一部分),则硬件信任根110向主处理器102发送(在204处)触发指示,其向主处理器102指示处理器102被允许执行系统固件108。触发指示可以是信号,命令,消息,信息元件或任何其他类型的指示符的形式。
响应于触发指示,主处理器102执行(在206处)系统固件108,其包括迭代小型处理器固件验证指令126。迭代小型处理器固件验证指令126可以与小型处理器104一起发起迭代验证过程(208)。
迭代验证过程208包括多次迭代,其独立验证了用于小型处理器104的小型处理器固件120,其中相应多次迭代中的验证是基于总体信息124的相应不同随机部分(图1中124-1至124-N之一)。总体信息124包括小型处理器固件120(120-1至120-N之一)和保护信息122(122-1至122-N之一)。总体信息124存储在用于小型处理器104的非易失性存储器118(118-1至118-N之一)中。
在迭代验证过程的迭代1中,主处理器102(在迭代小型处理器固件验证指令126的控制下)发送(在210-1处)第一子集信息,第一子集信息标识存储在用于小型处理器104的非易失性存储器118中的总体信息124的第一(随机选择)部分。非易失性存储器118可以是非易失性存储器118-1至118-N之一。总体信息124还包括保护信息122(图1中的122-1至122-N之一)。
在一些实施例中,第一子集指示信息可以包括第一地址范围,第一地址范围标识整体信息124的第一部分所位于的地址范围。在一些实施例中,迭代小型处理器固件验证指令126可以使用随机数生成器(其可以包括软件随机数生成器或硬件随机数生成器)来生成一个随机数(或多个随机数),其被迭代小型处理器固件验证指令126使用以确定第一地址范围。更一般地说,随机数可以用于选择随机地址范围以标识总体信息124的第一部分。
响应于第一子集信息,小型处理器104检索总体信息124的第一部分(例如,在第一地址范围的存储地址处),并基于总体信息124的第一部分计算(在212-1处)第一值。例如,加密哈希函数可以应用于总体信息124的第一部分,以产生哈希值。加密哈希函数的示例是安全哈希算法(SHA)函数。在其他实施例中,可以采用其他类型的加密哈希函数。在其他实施例中,基于总体信息124的第一部分,所计算的值可以是校验和。
小型处理器104发送(在214-1处)计算的第一值到主处理器102。通过将小型处理器104返回的第一值与期望值进行比较,主处理器102(在迭代小型处理器固件验证指令126的控制下)验证(在216-1处)小型处理器固件120。
在一些实施例中,可基于总体信息128(例如,图1中的128-1至128-N之一)的可信副本的选取部分计算期望值。例如,可基于总体信息128的可信副本的选取部分计算哈希值,校验和等等。总体信息128的可信副本的所选取部分可以处于用于导致总体信息124的第一部分的选择的同一第一地址范围。
如果从小型处理器104返回的第一值与由迭代小型处理器固件验证指令126基于总体信息128的可信副本的选取部分计算的期望值匹配,则迭代小型处理器固件验证指令126可以确定小型处理器固件120有效。
在迭代验证过程的迭代2中,主处理器102(在迭代小型处理器固件验证指令126的控制下)发送(在210-2处)第二子集信息,其标识存储在用于小型处理器104的非易失性存储器118中的总体信息124的第二(随机选择)部分。
在一些实施例中,第二子集指示信息可以包括第二地址范围,其标识总体信息124的第二部分所位于的地址的随机范围。
响应于第二子集信息,小型处理器104检索总体信息124的第二部分(例如,在第二地址范围的存储地址处),并基于总体信息124的第二部分计算(在212-2处)第二值。
小型处理器104发送(在214-2处)计算的第二值到主处理器102。通过将小型处理器104返回的第二值与基于总体信息128的可信副本的第二选取部分计算的期望值进行比较,主处理器102(在迭代小型处理器固件验证指令126的控制下)验证(在216-2处)小型处理器固件120。
迭代验证过程的附加迭代相对于总体信息124的不同随机选取部分和总体信息128的可信副本的不同随机选取部分可以类似地执行。
如上所述,保护信息122-i可以用于(全部或部分地)填充相应的非易失性存储器118-i中的未使用的存储空间,非易失性存储器118-i也存储小型处理器固件120-i。填充未使用的存储空间可防止未经授权的实体(例如,黑客,恶意软件等)将信息存储在未使用的存储空间中,这可以帮助未授权的实体返回与迭代小型处理器固件验证指令126计算的期望值相匹配的值。
在一个实施例中,如果非易失性存储器118-i中有足够的未使用存储空间可用,则未授权实体可以在未使用存储空间中存储小型处理器固件120-i的有效副本。即使未授权实体可能已经修改了小型处理器固件120-i,在未使用存储空间中的小型处理器固件120-i的有效副本可以用来计算值,该值更可能与由迭代小型处理器固件验证指令126计算的期望值相匹配。
在其他实施例中,未授权实体可以使用未使用存储空间来存储大量的哈希值,校验和等,其可以在验证期间由小型处理器104-i检索并返回,以增加与由迭代小型处理器固件验证指令126计算的期望值相匹配的可能性。
如上所述,保护信息122-i可以包括随机值的集合,其可以由迭代小型处理器固件验证指令126使用的随机数生成器来生成。通过在保护信息122-i中包括随机值,在小型处理器104-i上执行的未授权代码将不太可能生成用于验证小型处理器固件120-i的有效值。
图3是根据一些实施例的系统300的方框图。系统300可以包括计算设备,例如图1所示的100。系统300包括第一处理器302(例如,图1的主处理器102),第二处理器304(例如,图1的小型处理器104-i),以及存储介质306,其用于存储包括可由第二处理器304执行的机器可读指令310(例如,小型处理器固件120-i)的第一信息308。第一信息308可以是图1的总体信息124-i。
第一处理器302使用迭代验证过程312来验证机器可读指令310,该迭代验证过程312涉及在对应的不同时间的多次迭代314-1、314-2等。多次迭代中的每次相应迭代314-j(j=1,2,...)包括指示发出任务316,其向第二处理器304发出相应指示以基于第一信息308的相应子集来计算值。相应指示包括标识相应子集的相应子集信息(例如,第一随机地址范围),其中相应子集信息不同于多次迭代的另一次迭代中发出的另一个指示中包括的不同子集信息(例如,第二随机地址范围),其中不同的子集信息标识第一信息308的不同子集。
相应迭代314-j的任务还包括有效性确定任务318,有效性确定任务基于第二处理器304返回给第一处理器302的值来确定机器可读指令310的有效性。
在一些实施例中,在每次迭代中,第一处理器302选择第一信息308的随机部分用于验证。
在一些实施例中,第一处理器302通过链路(例如,图1中的二级总线116)连接到第二处理器304,链路与将第一处理器302连接到另一个电子组件(例如,图1中的114)的总线(例如,图1中的112)分离。
在一些实施例中,为了在每次迭代中验证机器可读指令310,第一处理器302计算第一信息308的可信副本的相应子集的对应值,并将该对应值与由第二处理器304返回的值进行比较,并且根据比较指示机器可读指令310有效(或无效)。
在一些实施例中,在确定机器可读指令310在多次迭代314-1、314-2等的第一迭代中是有效的之后,处理器102执行多次迭代中的第二迭代以检查机器可读指令310是否有效。
在一些实施例中,周期性地执行多次迭代314-1、314-2等,即,每次迭代314-j在经过指定的时间间隔之后启动。
在一些实施例中,除了机器可读指令310之外,第一信息308还可以包括诸如随机值的保护信息。
图4是存储机器可读指令的非暂时性机器可读或计算机可读存储介质400的方框图,该机器可读指令在执行时使第一处理器(例如,图1的102)执行各种任务。
机器可读指令包括迭代验证过程指令402,以执行迭代验证过程,该迭代验证过程包括在不同时间执行的多次迭代以用于验证在不同于第一处理器的第二处理器上可执行的程序。迭代验证过程包括第一迭代指令404,以在第一迭代中向第二处理器发出第一挑战以基于程序的第一子集来计算第一值,其中第一挑战包括标识包括程序的存储信息的第一子集的第一子集信息。第一迭代指令404还在第一迭代中响应于第一挑战从第二处理器接收第一值,并基于从第二处理器接收的第一值来确定程序是否有效。
迭代验证过程包括第二迭代指令406,以在第二迭代中向第二处理器发出第二挑战以基于程序的第二子集来计算第二值,其中第二挑战包括标识存储信息的第二子集的第二子集信息,响应于第二挑战从第二处理器接收第二值,并基于从第二处理器接收的第二值来确定程序是否有效。
迭代验证过程可以包括其他迭代指令,以在其他迭代中执行有效性检查。
在一些实施例中,存储信息存储在存储器(例如,图1中的118-i)中。存储信息还包括随机值,其全部或部分地填充存储器的未使用存储空间。
图5是根据一些实施例的过程500的流程图。过程500包括由第一处理器执行(在502处)迭代验证过程以验证在第二处理器上可执行的机器可读指令,其中迭代验证过程包括在不同时间执行的多次迭代。
在多次迭代的每次相应迭代中,过程500包括向第二处理器发出(在504处)相应指示以基于机器可读指令的相应随机选择的子集来计算值,其中相应指示包括标识相应随机选择的子集的相应存储地址范围,以及其中相应存储地址范围不同于多次迭代的另一次迭代中发出的另一指示中包括的不同存储地址范围,不同存储地址范围标识了机器可读指令的不同随机选择的子集。
在多次迭代的每次相应迭代中,过程500还包括基于第二处理器返回给第一处理器的值来确定(在506处)机器可读指令的有效性,其中,迭代验证过程的不同迭代可以产生与验证机器可读指令有关的不同验证结果。例如,第一迭代可以指示机器可读指令有效,并且第二迭代可以指示机器可读指令无效。如果多次迭代中的任何迭代指示机器可读指令无效,则将机器可读指令标记为无效。
存储介质(例如,图4的400或本文所述的任何其他存储介质)可以包括以下各项的任何或某种组合:半导体存储设备,例如动态或静态随机存取存储器(DRAM或SRAM),可擦除可编程只读存储器(EPROM),电可擦除可编程只读存储器(EEPROM)和闪存或其他类型的非易失性存储设备;磁盘,例如硬盘,软盘和可移动磁盘;包括磁带的另一磁性介质;光学介质,例如光盘(CD)或数字视盘(DVD);或另一种类型的存储设备。注意,可以在一个计算机可读或机器可读存储介质上提供以上讨论的指令,或者替代地,可以在分布在可能具有多个节点的大型系统中的多个计算机可读或机器可读存储介质上提供以上讨论的指令。这样的一个或多个计算机可读或机器可读存储介质被认为是产品(或工业产品)的一部分。一种产品或工业产品可以指任何制造的单个组件或多个组件。一个或多个存储介质可以位于运行机器可读指令的机器中,或位于远程站点,通过网络可从该远程站点下载机器可读指令以执行。
在前面的描述中,阐述了许多细节以提供对本文公开的主题的理解。然而,实施方式可以在没有某些细节的情况下实施。其他实施方式可以包括对以上讨论的细节的修改和变型。旨在使所附权利要求覆盖这些修改和变型。
Claims (20)
1.一种系统,包括:
第一处理器;
第二处理器;
存储介质,所述存储介质用于存储第一信息,所述第一信息包括能够由所述第二处理器执行的机器可读指令,
其中所述第一处理器用于使用涉及在不同时间多次迭代的迭代验证过程来验证所述机器可读指令,所述多次迭代中的每次相应迭代包括:
向所述第二处理器发出相应指示以基于所述第一信息的相应子集计算值,其中所述相应指示包括标识所述相应子集的相应子集信息,其中所述相应子集信息不同于所述多次迭代的另一次迭代中发出的另一个指示中所包括的不同子集信息,所述不同子集信息标识所述第一信息的不同子集,以及
基于由所述第二处理器返回给所述第一处理器的所述值,确定所述机器可读指令的有效性。
2.根据权利要求1所述的系统,其中,在所述相应迭代中,所述第一处理器用于:
选择所述相应子集作为所述第一信息的随机部分,在所述相应迭代中选择的所述随机部分与所述第一信息的另一个随机部分不同,所述另一个随机部分是所述不同子集的一部分。
3.根据权利要求2所述的系统,其中所述相应子集信息包括标识所述相应随机部分的相应随机地址范围,并且所述不同子集信息包括标识所述另一个随机部分的不同随机地址范围。
4.根据权利要求1所述的系统,其中所述第一处理器通过与将所述第一处理器连接到另一个电子组件的总线分离的链路连接到所述第二处理器。
5.根据权利要求1所述的系统,其中所述值是基于所述第一信息的相应子集计算的加密哈希值。
6.根据权利要求1所述的系统,其中,在所述相应迭代中,所述第一处理器用于:
计算所述第一信息的可信副本的对应子集的对应值,
将所述对应值与由所述第二处理器返回的所述值进行比较,以及
基于所述比较指示存储在所述存储介质中的所述机器可读指令有效。
7.根据权利要求1所述的系统,其中,所述第一处理器用于:
在确定所述机器可读指令在所述多次迭代的第一迭代中有效之后,执行所述多次迭代的第二迭代以检查所述机器可读指令是否有效。
8.根据权利要求7所述的系统,其中,在所述第二迭代中,所述第一处理器用于:
响应于在所述第二迭代中由所述第二处理器返回的值与预期值不匹配,指示所述机器可读指令无效。
9.根据权利要求1所述的系统,其中周期性地执行所述多次迭代。
10.根据权利要求1所述的系统,其中所述第一信息包括所述机器可读指令和随机值。
11.根据权利要求1所述的系统,其中所述第一处理器用于执行已经由硬件信任根验证的另外的机器可读指令,并且其中所述另外的机器可读指令能够在所述第一处理器上执行以执行所述迭代验证过程。
12.根据权利要求1所述的系统,其中所述机器可读指令包括能够由所述第二处理器执行的固件。
13.根据权利要求1所述的系统,还包括:
第三处理器;和
另一存储介质,所述另一存储介质用于存储第二信息,所述第二信息包括能够由所述第三处理器执行的另外的机器可读指令,
其中所述第一处理器用于使用涉及在不同时间多次迭代的另一迭代验证过程来验证所述另外的机器可读指令,所述另一迭代验证过程的多次迭代的每次相应迭代包括:
向所述第三处理器发出另一相应指示,以基于所述第二信息的相应子集计算另一值,其中所述相应指示包括标识所述第二信息的相应子集的相应子集信息;以及
基于由所述第三处理器返回给所述第一处理器的所述另一值,确定所述另外的机器可读指令的有效性。
14.一种包括指令的非暂时性机器可读存储介质,所述指令在执行时使第一处理器用于:
执行迭代验证过程,所述迭代验证过程包括在不同时间执行的多次迭代,以验证能够在不同于所述第一处理器的第二处理器上执行的程序,其中,所述迭代验证过程包括:
在第一迭代中:
向所述第二处理器发出第一挑战以基于所述程序的第一子集来计算第一值,其中所述第一挑战包括第一子集信息,所述第一子集信息标识包括所述程序的存储信息的第一子集,
响应于所述第一挑战从所述第二处理器接收所述第一值,和
基于从所述第二处理器接收到的所述第一值确定所述程序是否有效;以及
在第二迭代中:
向所述第二处理器发出第二挑战以基于所述程序的第二子集计算第二值,其中所述第二挑战包括标识所述存储信息的第二子集的第二子集信息,
响应于所述第一挑战从所述第二处理器接收所述第二值,和
基于从所述第二处理器接收的所述第二值确定所述程序是否有效。
15.根据权利要求14所述的非暂时性机器可读存储介质,其中所述第一值和第二值包括哈希值或校验和。
16.根据权利要求14所述的非暂时性机器可读存储介质,其中所述指令在执行时使所述第一处理器用于:
周期性地向所述第二处理器发出作为所述迭代验证过程的一部分的挑战,所述挑战包括所述第一挑战和所述第二挑战。
17.根据权利要求14所述的非暂时性机器可读存储介质,其中存储信息存储在存储器中,所述存储信息还包括全部或部分地填充所述存储器的未使用存储空间的随机值。
18.根据权利要求14所述的非暂时性机器可读存储介质,其中能够由所述第一处理器执行的指令已经由硬件信任根验证。
19.一种包括第一处理器和第二处理器的系统的方法,包括:
由所述第一处理器执行迭代验证过程以验证能够在所述第二处理器上执行的机器可读指令,所述迭代验证过程包括在不同时间执行的多次迭代,所述多次迭代中的每次相应迭代包括:
向所述第二处理器发出相应指示,以基于包括所述机器可读指令的存储信息的相应随机选择子集来计算值,其中所述相应指示包括标识所述相应随机选择子集的相应存储地址范围,并且其中所述相应存储地址范围不同于所述多次迭代的另一次迭代中发出的另一指示中所包括的不同存储地址范围,所述不同存储地址范围标识所述存储信息的不同随机选择子集,以及
基于由所述第二处理器返回给所述第一处理器的所述值,确定所述机器可读指令的有效性;
其中,所述迭代验证过程的不同迭代能够产生与验证所述机器可读指令有关的不同验证结果。
20.根据权利要求19所述的方法,还包括:在所述相应迭代中:
计算所述存储信息的可信副本的相应子集的对应值,
将所述对应值与由所述第二处理器返回的所述值进行比较,以及
基于所述比较指示所存储的机器可读指令有效。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/937,048 | 2020-07-23 | ||
US16/937,048 US11269637B2 (en) | 2020-07-23 | 2020-07-23 | Validating machine-readable instructions using an iterative validation process |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113971276A true CN113971276A (zh) | 2022-01-25 |
CN113971276B CN113971276B (zh) | 2022-07-12 |
Family
ID=79179584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110417623.9A Active CN113971276B (zh) | 2020-07-23 | 2021-04-19 | 使用迭代验证过程验证机器可读指令 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11269637B2 (zh) |
CN (1) | CN113971276B (zh) |
DE (1) | DE102021109479A1 (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130124840A1 (en) * | 2011-11-11 | 2013-05-16 | International Business Machines Corporation | Secure boot up of a computer based on a hardware based root of trust |
CN104424441A (zh) * | 2013-08-21 | 2015-03-18 | 恩智浦有限公司 | 处理系统 |
CN106462707A (zh) * | 2014-04-28 | 2017-02-22 | 英特尔公司 | 安全引导计算设备 |
US20170373839A1 (en) * | 2016-06-24 | 2017-12-28 | Intel Corporation | Hardware accelerator for platform firmware integrity check |
US20180060589A1 (en) * | 2016-09-01 | 2018-03-01 | Nxp B.V. | Apparatus and associated method for authenticating firmware |
US20180121656A1 (en) * | 2016-10-31 | 2018-05-03 | Hewlett Packard Enterprise Development Lp | Validating operating firmware of a periperhal device |
CN109891425A (zh) * | 2016-08-04 | 2019-06-14 | 耐瑞唯信有限公司 | 序列验证 |
US20190199735A1 (en) * | 2016-06-29 | 2019-06-27 | Western Digital Technologies, Inc. | Device and method for verifying integrity of firmware |
US20200074083A1 (en) * | 2018-08-31 | 2020-03-05 | Fungible, Inc. | Rapidly establishing a chain of trust in a computing system |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9177153B1 (en) * | 2005-10-07 | 2015-11-03 | Carnegie Mellon University | Verifying integrity and guaranteeing execution of code on untrusted computer platform |
US8285999B1 (en) * | 2008-12-05 | 2012-10-09 | The Research Foundation Of State University Of New York | System and method for authenticating remote execution |
DK2462507T3 (da) * | 2009-08-04 | 2019-09-23 | Univ Carnegie Mellon | Fremgangsmåder og apparater til brugerverificerbar sikker sti i tilstedeværelsen af malware |
US20140281502A1 (en) * | 2013-03-15 | 2014-09-18 | General Instrument Corporation | Method and apparatus for embedding secret information in digital certificates |
US9740866B2 (en) * | 2015-06-10 | 2017-08-22 | The Boeing Company | Automatic measuring boot process using an automatic measuring processor coupled to a memory |
US20170093586A1 (en) * | 2015-09-25 | 2017-03-30 | Qualcomm Incorporated | Techniques for managing certificates on a computing device |
US10491401B2 (en) * | 2017-02-21 | 2019-11-26 | Google Llc | Verification of code signature with flexible constraints |
US11522679B2 (en) | 2017-10-05 | 2022-12-06 | Intel Corporation | Exposing cryptographic measurements of peripheral component interconnect express (PCIe) device controller firmware |
US10673626B2 (en) * | 2018-03-30 | 2020-06-02 | Spyrus, Inc. | Threshold secret share authentication proof and secure blockchain voting with hardware security modules |
US11714910B2 (en) | 2018-06-13 | 2023-08-01 | Hewlett Packard Enterprise Development Lp | Measuring integrity of computing system |
US20190394046A1 (en) * | 2018-06-22 | 2019-12-26 | Sf Motors, Inc. | Secure firmware updates for remote vehicles |
CN109144584A (zh) | 2018-07-27 | 2019-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种可编程逻辑器件及其启动方法、系统和存储介质 |
-
2020
- 2020-07-23 US US16/937,048 patent/US11269637B2/en active Active
-
2021
- 2021-04-15 DE DE102021109479.8A patent/DE102021109479A1/de active Pending
- 2021-04-19 CN CN202110417623.9A patent/CN113971276B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130124840A1 (en) * | 2011-11-11 | 2013-05-16 | International Business Machines Corporation | Secure boot up of a computer based on a hardware based root of trust |
CN104424441A (zh) * | 2013-08-21 | 2015-03-18 | 恩智浦有限公司 | 处理系统 |
CN106462707A (zh) * | 2014-04-28 | 2017-02-22 | 英特尔公司 | 安全引导计算设备 |
US20170373839A1 (en) * | 2016-06-24 | 2017-12-28 | Intel Corporation | Hardware accelerator for platform firmware integrity check |
US20190199735A1 (en) * | 2016-06-29 | 2019-06-27 | Western Digital Technologies, Inc. | Device and method for verifying integrity of firmware |
CN109891425A (zh) * | 2016-08-04 | 2019-06-14 | 耐瑞唯信有限公司 | 序列验证 |
US20180060589A1 (en) * | 2016-09-01 | 2018-03-01 | Nxp B.V. | Apparatus and associated method for authenticating firmware |
US20180121656A1 (en) * | 2016-10-31 | 2018-05-03 | Hewlett Packard Enterprise Development Lp | Validating operating firmware of a periperhal device |
US20200074083A1 (en) * | 2018-08-31 | 2020-03-05 | Fungible, Inc. | Rapidly establishing a chain of trust in a computing system |
Also Published As
Publication number | Publication date |
---|---|
US20220027157A1 (en) | 2022-01-27 |
DE102021109479A1 (de) | 2022-01-27 |
US11269637B2 (en) | 2022-03-08 |
CN113971276B (zh) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107025406B (zh) | 母板、计算机可读存储装置以及固件验证方法 | |
US7984283B2 (en) | System and method for secure operating system boot | |
US8122258B2 (en) | System and method for secure operating system boot | |
JP5767751B2 (ja) | Biosを検証する方法、コンピューティングプラットフォーム、およびプログラム | |
CN105122258B (zh) | 对系统进行配置的方法、计算系统以及物品 | |
EP2989547B1 (en) | Repairing compromised system data in a non-volatile memory | |
US11579893B2 (en) | Systems and methods for separate storage and use of system BIOS components | |
US10776493B2 (en) | Secure management and execution of computing code including firmware | |
US20240104213A1 (en) | Securing node groups | |
US20170180139A1 (en) | Key revocation | |
US9928367B2 (en) | Runtime verification | |
US11580225B2 (en) | Determine whether to perform action on computing device based on analysis of endorsement information of a security co-processor | |
CN112992249A (zh) | 用于验证暂存器内容完整性的系统及其方法 | |
WO2023179745A1 (zh) | 可信验证方法及装置 | |
CN113971276B (zh) | 使用迭代验证过程验证机器可读指令 | |
EP4174698A1 (en) | Method and system for controlling the boot customization in a platform firmware resilience execution | |
US12001560B2 (en) | Method and system for avoiding boot failure from platform firmware resilience execution | |
US11863691B2 (en) | Lockable device validation for information handling systems | |
US20210303690A1 (en) | Determinations of compromise of controller code images | |
CN115878122A (zh) | 对构建服务器使用的数据项的损坏确定 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |