A computing system can include code to perform various startup functions of the computing system. This code can include Basic Input/Output System (BIOS) code. BIOS code can be the subject of attacks by malware in the computing system or from an external service. As a result of an attack, the BIOS code can become compromised.
Some implementations are described with respect to the following figures:
Malware attacks on system code used to perform startup of a computing system can cause the integrity of the computing system to be compromised such that unauthorized access and operations in the computing system can occur. For example, compromised system code can allow covert remote monitoring and/or control of the computing system by a malicious entity, unauthorized access and/or modification of data in the computing system by malware, disablement of the computing system, and so forth. Compromised system code can refer to system code that has been corrupted such that the system code is no longer usable, or alternatively, compromised system code can refer to system code that has been changed in some way but that is still able to execute. Note that system code can also be compromised accidentally or intentionally.
Although a protection mechanism can be provided in a computing system to protect the system code, such protection mechanism may become compromised under certain conditions, which can subject the system code to malware attacks.
System code used to perform startup of a computing system can include system firmware, which can be in the form of machine-readable instructions executable on a processor (or processors) of the computing system. “System firmware” can cover any machine-readable instructions that are able to perform startup of a computing system. Examples of computing systems include desktop computers, notebook computers, tablet computers, personal digital assistants (PDAs), smartphones, game appliances, server computers, storage nodes, network communication nodes, and so forth.
System firmware can include Basic Input/Output System (BIOS) code, which can initialize various components of the computing system, and load an operating system (OS) of the computing system. The BIOS code can perform checking of hardware components to ensure that the hardware components are present and functioning properly. This can be part of a power-on self-test (POST) procedure, for example. After the POST procedure, the BIOS code can progress through the remainder of a booting sequence, after which the BIOS code can load and pass control to the OS. BIOS code can include legacy BIOS code or Unified Extensible Firmware Interface (UEFI) code. In some examples, the BIOS code can include a runtime portion that is executed after the OS loads.
The system firmware can be stored in non-volatile memory, such as a flash memory or any other persistent memory that is programmable. Once system firmware in a non-volatile memory is compromised, one possible remediation may involve physically replacing a component that includes the non-volatile memory. Such a technique of addressing compromised system firmware can be labor-intensive, costly, and time-consuming.
Alternatively, other techniques may attempt to replace the compromised system firmware in the non-volatile memory with a valid copy of system firmware from external storage device, such as a removable storage device (e.g. Universal Serial Bus or USB storage device or other type of removable storage device). However, an external storage device containing a valid system firmware may not be available when recovery from system firmware compromise is to occur. Additionally, the policy of an enterprise (e.g. business concern, government agency, educational organization, etc.) may prohibit a recovery technique that involves use of system firmware on an external storage device.
In accordance with some implementations, in addition to providing a primary non-volatile memory that stores the system firmware that is executed by a processor of the computing system if the system firmware is not compromised, a secondary non-volatile memory is also provided that stores a “golden copy” of the system firmware. A golden copy of the system firmware refers to system firmware that is confirmed or is trusted to be valid. For example, the golden copy of the system firmware may be the original copy of the system firmware provided at the factory at the time of manufacture of the computing system. Alternatively, the golden copy of the system firmware can be a copy in the secondary non-volatile memory that has been updated in a secure manner. More generally, instead of referring to a golden copy of system firmware, a redundant copy of the system firmware can be stored in the secondary non-volatile memory.
The secondary non-volatile memory is isolated from the processor of the system to provide enhanced security, since malware running on the processor would not be able to compromise the redundant copy of the system firmware in the secondary non-volatile memory. More specifically, the secondary non-volatile memory is isolated from a bus that can be used by the processor and other entities to access the primary non-volatile memory. In accordance with some implementations, an embedded controller can be used to perform restoration of compromised system firmware, by using the redundant copy of the system firmware in the secondary non-volatile memory to replace the compromised system firmware in the primary non-volatile memory. Using the embedded controller to perform system firmware restoration reduces the likelihood of system corruption during the system firmware restoration process.
In the present discussion, although reference is made to “system firmware,” it is noted that techniques or mechanisms can be applied to other types of system boot code, where system boot code can refer to any code that can boot a computing system after restart the computing system or can resume the computing system from a low power state.
Although not shown in
The secondary non-volatile memory 116 can be physically separate from the primary non-volatile memory 104 (such as implemented in different physical memory devices). Alternatively, the secondary non-volatile memory 116 and the primary non-volatile memory 104 can physically reside on a common memory device, but the primary non-volatile memory 104 and the secondary non-volatile memory 116 are in different segments of the physical memory device, where the segment of the physical memory device that contains the secondary non-volatile memory 116 is accessible by only the embedded controller 102. In other words, the segment that contains the secondary non-volatile memory 116 is under exclusive control of the embedded controller 102, and this segment is locked from access by the processor 106 or another entity.
The primary non-volatile memory 104 is accessible over a shared bus 120 by the embedded controller 102 or by another entity. In some implementations, just one entity can have access to the shared bus 120 at any given time, such that just one entity can access the primary non-volatile memory 104 at a time. In some examples, the shared bus 120 is a shared Serial Peripheral Interface (SPI) bus. An SPI bus is a synchronous serial data link in which devices on the SPI bus operate in a master-slave mode. In other examples, another type of shared bus 120 can be used. In alternative examples, an arbitration mechanism can be provided to allow for shared access of the bus 120 in various states of the computing system, including a low power state and a normal runtime state.
The primary non-volatile memory 104 can store system firmware 107, which can include BIOS code. The BIOS code 107 can include controller code 108 that is for execution by the embedded controller 102, and a boot block 110 that is to be executed by the processor 106. The controller code 108 can be in the form of embedded controller (EC) firmware, which can refer to any machine-readable instructions executable in the embedded controller 102. Alternatively, the controller code 108 can be application software that can be in the form of machine-readable instructions. In the ensuing discussion, although reference is made to “EC firmware,” it is noted that techniques or mechanisms can be applied to other forms of the controller code 108.
In examples according to
The boot block 110 is a part of the BIOS code, and is first executed when the computing system 100 starts up. The boot block 110 is executed first before the rest of the BIOS code is allowed to execute on the processor 106. The boot block 110 can be used to check the integrity of the BIOS code as well as to perform other initial functions. If the boot block 110 confirms the integrity of the BIOS code, then the boot block 110 can pass control to the main portion of the BIOS code for initiating the remaining operations associated with the BIOS code.
In some implementations, the boot block 110 can include core root of trust for measurement (CRTM) logic, which is logic specified by the Trusted Computing Group (TCG), an industry standard work group. During a power on procedure of the computing system 100, the CRTM logic can perform certain initialization tasks and can make a number of measurements that are stored for later use. The CRTM logic can then check the BIOS code before passing control to the main portion of the BIOS code. Once the BIOS code completes execution and passes control to the OS, the OS can verify the trustworthiness of the computing system 100 based on measurements taken by the CRTM logic.
The embedded controller 102 is physically separate from the processor 106 of the computing system 100. The processor 106 is used for executing the OS, application code, and other code in the system 100. The embedded controller 102, on the other hand, can be used to perform specific predefined tasks, as programmed into the EC firmware 108. Examples of tasks that can be performed by the embedded controller 102 include any one or some combination of the following: power supply control in the computing system 100 (for controlling a power supply that supplies power supply voltages to various components in the computing system 100), charging and control of a battery in the computing system 100, thermal monitoring (to monitor a temperature in the computing system 100), fan control (to control a fan in the computing system 100), and interaction with a user input device (such as performing a scan of a keyboard of the computing system 100 or interaction with a pointing device such as a mouse, touchpad, touchscreen, and so forth). The embedded controller 102 can be implemented with a microcontroller, an application-specific integrated circuit (ASIC), a programmable gate array (PGA), or any other type of programmable circuit.
The secondary non-volatile memory 116 is electrically isolated from the shared bus 120, and stores a redundant copy 114 of system firmware, where the system firmware redundant copy 114 includes a boot block 132 and an EC firmware 130. The system firmware redundant copy 114 in the secondary non-volatile memory 116 can be a duplicate of the system firmware 107 in the primary non-volatile memory 104. Alternatively, the system firmware redundant copy 114 may be a different version (later version or earlier version) than the system firmware 107.
In some implementations, the system firmware redundant copy 114 includes just the boot block 132, but does not include the main portion of the BIOS code. In other implementations, the system firmware redundant copy 114 can include the entirety of the BIOS code. A possible benefit of including an entire copy of BIOS code in the secondary non-volatile memory 116 is that the computing system 100 would not have to go to an external source (external of the computing system 100) to retrieve a portion of the BIOS code for use in recovery from compromised system firmware.
The embedded controller 102 determines (at 202) whether the system firmware 107 (and more specifically, the boot block 110 in some examples) retrieved from the primary non-volatile memory is compromised. This determination can be based on verifying (or performing a verification process on) the system firmware 107. Verifying a piece of code, such as the system firmware or other code, can refer to cryptographically validating that the piece of code has not been changed and/or confirming that the piece of code is from a trusted source. A technique for verifying system firmware is discussed further below in connection with
In response to determining that the system firmware 107 is compromised, the embedded controller 102 retrieves (at 204) the system firmware redundant copy 114 from the secondary non-volatile memory 116 to the primary non-volatile memory 104, to replace the compromised system firmware 107.
If the system firmware 107 is verified, then the computing system 100 is ready to continue booting.
In some implementations, it is possible to update the system firmware redundant copy 114 in the secondary non-volatile memory 116, in a secure manner. The update of the system firmware redundant copy 114 can be policy-based, such as based on a policy specified in policy information, which can be stored in the secondary non-volatile memory 116, for example. Such policy-based update of the system firmware redundant copy 114 is discussed further below in connection with
In further implementations, the secondary non-volatile memory 116 can store two redundant copies of system firmware. A first redundant copy of the system firmware is updateable, such as by using policy-based update. A second redundant copy of the system firmware is a non-updateable copy that is not updated after the computing system 100 leaves the factory.
In accordance with some implementations, during an initialization procedure of the embedded controller 102, the embedded controller 102 is able to verify the EC firmware (130 and/or 108) retrieved from a non-volatile memory (116 and/or 104). An initialization procedure refers to a procedure that is performed when the embedded controller 102 first starts after the embedded controller 102 has been reset or after a power cycle of the embedded controller 102 (where power is removed from and then re-applied to the embedded controller 102).
In some implementations, the embedded controller 102 can first attempt to use the EC firmware 130 in the secondary non-volatile memory 116 during a restart of the computing system 100. If the embedded controller 102 is unable to successfully use the EC firmware 130, then the embedded controller 102 can use the EC firmware 108 in the primary non-volatile memory 104 in an attempt to start the computing system 100. If the embedded controller 102 is unable to start the system using either of the EC firmware 130 or the EC firmware 108, then an error has occurred, which is likely due to compromise of both the EC firmware 130 and the EC firmware 108.
Although reference is made to first attempting to use the EC firmware 130 in the secondary non-volatile memory 116 before attempting to use the EC firmware 108 in the primary non-volatile memory 104, different implementations can first attempt to use the EC firmware 108 in the primary non-volatile memory 104 before attempting to use the EC firmware 130 in the secondary non-volatile memory 116.
In addition, once the EC firmware is verified and loaded for execution on the embedded controller 102, the EC firmware can verify (performed at 202 in
In further examples, the EC firmware can perform verification of the system firmware in response to a warm reset of the computing system 100, in which a computing system 100 is restarted without removing power to the computing system 100. To allow the EC firmware to perform the verification in response to the warm reset, the computing system 100 can be forced to transition to an appropriate low power state when the warm reset is detected.
In other examples, the EC firmware can perform the verification at any time, even when the computing system is not in a low power state. For example, the EC firmware can perform the verification when the processor is idle or not accessing the shared non-volatile memory 104. The verification by the EC firmware can also be performed in “real-time,” as the system firmware is retrieved for execution by the processor.
The foregoing ensures, prior to each instance of the processor 106 restarting execution of the system firmware 107, that the system firmware 107 has not been compromised.
A low power state of the computing system 100 refers to a state of the computing system 100 in which the processor 106 and certain other hardware components of the system 100 are off (e.g. no power is provided to the processor and the certain other hardware components). In the low power state, power can still be provided to the embedded controller 102. The computing system 100 can transition to a low power state in any of the following scenarios: (1) as part of a cold reset of the computing system 100 that caused the system 100 to be powered off for subsequent power on, or (2) as part of a power savings procedure, in which the computing system 100 can transition from a normal operating state to a sleep state, hibernation state, or an off state after a time period of inactivity, or in response to detecting a low battery condition, or in response to user or application command, or for another reason, or (3) in any other scenario.
Examples of low power states can include certain Advanced Configuration and Power Interface (ACPI) states, including: the ACPI S3 state (which is a form of a standby or sleep state in which the system context of the computing system 100 is maintained in volatile memory that remains powered while some components of the computing system 100 are powered off); the ACPI S4 state (which is a form of hibernation state in which the system context is saved to persistent storage to allow power to be removed from additional computing system components, including volatile memory); and the ACPI S5 state (which is a form of system off state, in which power has been removed from even more components of the computing system 100).
As depicted in
In the
The embedded controller 102 further includes a read-only memory (ROM) 314, which can be used to store a boot loader 316 and an encryption key 318. The encryption key 318 can be the key (public key or private key) used to perform verification of the EC firmware (130 or 108). During system startup, the boot loader 316 is loaded from the ROM 314 to execute in the embedded controller 102 to retrieve EC firmware from the secondary or primary non-volatile memory 116 or 104 into a random access memory (RAM) 319 of the embedded controller 102. The boot loader 316 can take steps to ensure that no other entity except the embedded controller 102 has access to the shared bus 120 during the EC firmware load operation.
To retrieve an EC firmware for loading into the embedded controller 102, the boot loader 316 can find a pointer (or other reference) to an EC firmware image, which can be stored in the secondary or primary non-volatile memory 116 or 104.
The retrieved EC firmware is verified by the boot loader 316 that is able to invoke the cryptographic hardware 312 to assist in performing cryptographic computations.
In the primary non-volatile memory 104, a signature 322 is associated with the EC firmware 108, and a signature 324 is associated with the boot block 110. Similarly, in the secondary non-volatile memory 116, a signature 340 is associated with the EC firmware 130, and a signature 342 is associated with the boot block 132. The signature 340 or 322 is used in the verification of the respective EC firmware 108 or 130, while the signature 342 or 324 is used in the verification of the respective boot block 110 or 132. Use of a signature in the verification process can allow a determination of the authenticity of the respective EC firmware or boot block, and a determination that the respective EC firmware or boot block has not been compromised.
In some implementations, the verification of the EC firmware 108 or 130 can be accomplished by decrypting the respective signature 322 or 340 using the encryption key 318 stored in the embedded controller ROM 314. Decrypting the signature produces a respective value (e.g. hash value) that can be compared with a corresponding calculated value (e.g. hash value) of the EC firmware. If the foregoing values match, then the EC firmware is verified. A similar process can be used for verifying the BIOS boot block 110 or 132 using the respective digital signature 324 or 342.
In some examples, the secondary non-volatile memory 116 can store another system firmware redundant copy 350. In some examples, the system firmware redundant copy 114 can be updated, but the other system firmware redundant copy 350 is not updateable (immutable).
The secondary non-volatile memory 116 can also store policy information 334. For example, the policy information 334 can include information relating to one or some combination of the following policies:
The policy specifying whether a locked or unlocked mode is to be used can control the policy-based update of the system firmware redundant copy 114, as explained further below.
As shown in
However, if the determination at 402 indicates that the boot block 132 has been verified, then the EC_BB_Valid flag is set (at 406) to a set state, to indicate that the boot block 132 in the secondary non-volatile memory 116 has been verified.
Next, the EC firmware determines (at 408) whether the boot block 110 (represented as SYS_BB in
If it is determined (at 410) that the EC_BB_Valid flag is set, then that is an indication that the boot block 132 in the secondary non-volatile memory 116 has been verified, even though the boot block 110 in the primary non-volatile memory 104 cannot be verified. In this case, the EC firmware determines (at 412) whether the recovery policy (stored as part of the policy information 334 in the secondary non-volatile memory 116 of
However, if the recovery policy specifies the manual mode, then an indication can be output (at 416) to prompt for user input, such as a key sequence or other input. Receipt of the user input causes the task 414 to be performed, where the invalid boot block 110 in the primary non-volatile memory 104 is replaced with a copy of the valid boot block 132 in the secondary non-volatile memory 116.
Next, the EC firmware sets (at 418) various status information to report actions that were taken, where the status information can be used in the next boot of the computing system.
The EC firmware next determines (at 420) whether the boot block 132 in the secondary non-volatile memory 116 has been updated. If not, then the computing system is ready to boot (422). However, if the boot block 132 in the secondary non-volatile memory 116 has been updated, then the EC firmware performs (at 424) an action to cause the computing system to check that the embedded controller 102 is running the correct version of the EC firmware, which can be accomplished by resetting the embedded controller 102, which causes the embedded controller 102 to perform its initialization procedure that includes verifying the EC firmware, after which the process of
In task 408 of
On the other hand, if it is determined (at 428) that the lock policy specifies the locked mode, then that indicates that the EC firmware is not allowed to update the boot block 132 in the secondary non-volatile memory 116. In this case, the EC firmware can set a flag (at 432) to indicate a change in the lock policy, which involves the lock policy being changed to specify the unlocked mode. Changing the lock policy from the locked mode to the unlocked mode allows the boot block 132 in the secondary non-volatile memory 116 to be replaced with the boot block 110 in the primary non-volatile memory 104 (as performed at 432). In addition, information can be added to an audit log (not shown) to indicate the foregoing event (lock policy being changed). Additionally, the user can be warned in this case that the locked policy could not be honored due to an internal error and that the user should check the lock pokey and reconfigure the platform to ensure the desired setting is configured.
Tasks 428, 430, and 432 relate to policy-based updating of the boot block 132 (or more generally the system firmware redundant copy 114) in the secondary non-volatile memory 116. In other implementations, if the lock policy determined at 428 specifies the locked mode, then the embedded controller 102 can decide to not replace the boot block 132 in the secondary non-volatile memory 116 with the boot block 110 in the primary non-volatile memory 104.
The process next proceeds to task 418.
In task 426, if it is determined that the EC_BB_Valid flag is set, that indicates that both the boot block 132 and boot block 110 have been verified. In this scenario, the EC firmware determines (at 434) whether a value (e.g. hash value, checksum value, etc.) derived based on the content of the boot block 132 is equal to a value derived based on the content of the boot block 110. If so, it is confirmed that the two boot blocks 132 and 110 are identical, and thus, the system is ready to boot (422). On the other hand, if the values derived based on the contents of the boot blocks 132 and 110 are not equal (which indicates that the boot blocks 132 and 110 are different versions), then the EC firmware determines (at 436) whether the BIOS lock policy specifies a locked mode or an unlocked mode. If the unlocked mode is specified, then the EC firmware can copy (at 438) the boot block 110 in the primary non-volatile memory 104 to the secondary non-volatile memory 116 to replace the boot block 132. The process then proceeds to task 418.
If the lock policy determined at 436 specifies the locked mode, then that is an indication that the boot block 110 in the primary non-volatile memory 104 is to be locked to the version of the boot block 132 stored in the secondary non-volatile memory 116. In some cases, the boot block 110 in the primary non-volatile memory 104 may have been updated to a newer version. However, if the lock policy specifies the locked mode, then this update of the boot block 110 in the primary non-volatile memory 104 is not allowed, in which case the boot block 110 in the primary non-volatile memory 104 is replaced with the boot block 132 in the secondary non-volatile memory 116 (by performing the copying at 442). Prior to copying (at 442) the boot block 132 to replace the boot block 110, the EC firmware can check (at 440) whether the recovery policy specifies an automated mode or a manual mode. If the automated mode is specified, then the copying at 442 can be performed directly. However, if the manual mode is specified, then the EC firmware can provide at 444) an output to prompt for user input, after which the copying at 442 can be performed.
The process then proceeds to task 418.
Tasks 434, 436, 440, 442, and 444 also relate to policy-based updating of the boot block 132 (or more generally the system firmware redundant copy 114) in the secondary non-volatile memory 116.
By using techniques or mechanisms according to some implementations, more efficient and secure recovery from compromised system firmware can be achieved. The recovery from compromised system firmware does not rely on execution of code on a processor; instead; the recovery is performed by an embedded controller. In some implementations, a secure way of updating a system firmware redundant copy can be provided. Policy-based updating of the system firmware redundant copy can provide flexibility in performing updates.
Machine-readable instructions of various modules described above are loaded for execution on a processing circuit (e.g. embedded controller 102 or processor 106). A processing circuit can include a microprocessor, microcontroller, processor module or subsystem, programmable integrated circuit, programmable gate array, or another control or computing device.
Data and instructions are stored in respective storage devices, which are implemented as one or multiple computer-readable or machine-readable storage media. The storage media include different forms of memory including semiconductor memory devices such as dynamic or static random access memories (DRAMs or SRAMs), erasable and programmable read-only memories (EPROMs), electrically erasable and programmable read-only memories (EEPROMs) and flash memories; magnetic disks such as fixed, floppy and removable disks; other magnetic media including tape; optical media such as compact disks (CDs) or digital video disks (DVDs); or other types of storage devices. Note that the instructions discussed above can be provided on one computer-readable or machine-readable storage medium, or alternatively, can be provided on multiple computer-readable or machine-readable storage media distributed in a large system having possibly plural nodes. Such computer-readable or machine-readable storage medium or media is (are) considered to be part of an article (or article of manufacture). An article or article of manufacture can refer to any manufactured single component or multiple components. The storage medium or media can be located either in the machine running the machine-readable instructions, or located at a remote site from which machine-readable instructions can be downloaded over a network for execution.
In the foregoing description, numerous details are set forth to provide an understanding of the subject disclosed herein. However, implementations may be practiced without some or all of these details. Other implementations may include modifications and variations from the details discussed above. It is intended that the appended claims cover such modifications and variations.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2013/037724 | 4/23/2013 | WO | 00 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2014/175861 | 10/30/2014 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
5469573 | McGill, III | Nov 1995 | A |
5564054 | Bramnick | Oct 1996 | A |
5713024 | Halladay | Jan 1998 | A |
5745669 | Hugard | Apr 1998 | A |
5778070 | Mattison | Jul 1998 | A |
5828888 | Kozaki | Oct 1998 | A |
5918047 | Leavitt | Jun 1999 | A |
5987605 | Hill | Nov 1999 | A |
6205527 | Goshey | Mar 2001 | B1 |
6275930 | Bonamico | Aug 2001 | B1 |
6539473 | Hubacher | Mar 2003 | B1 |
6651188 | Harding | Nov 2003 | B2 |
7069445 | Cheston | Jun 2006 | B2 |
7383431 | Takamizawa | Jun 2008 | B2 |
7409539 | Arnez | Aug 2008 | B2 |
7613872 | Dayan et al. | Nov 2009 | B2 |
7734945 | Levidow | Jun 2010 | B1 |
7818622 | Burks, III | Oct 2010 | B2 |
7900091 | Chou et al. | Mar 2011 | B2 |
7908470 | Cavanna | Mar 2011 | B1 |
8392762 | Aralakuppe Ramegowda | Mar 2013 | B2 |
8429391 | Galbo | Apr 2013 | B2 |
8489922 | Matthew | Jul 2013 | B2 |
9411688 | Poolla | Aug 2016 | B1 |
9417967 | Huang | Aug 2016 | B2 |
9542195 | Astarabadi | Jan 2017 | B1 |
9575768 | Kim | Feb 2017 | B1 |
20010008011 | Oba | Jul 2001 | A1 |
20020002652 | Takahashi | Jan 2002 | A1 |
20030126511 | Yang | Jul 2003 | A1 |
20030221114 | Hino | Nov 2003 | A1 |
20040025002 | Cepulis | Feb 2004 | A1 |
20040030877 | Frid | Feb 2004 | A1 |
20040076043 | Boals et al. | Apr 2004 | A1 |
20040133790 | Hensley | Jul 2004 | A1 |
20040193862 | Lin | Sep 2004 | A1 |
20050108564 | Freeman | May 2005 | A1 |
20050190699 | Smith | Sep 2005 | A1 |
20050251673 | Bosley | Nov 2005 | A1 |
20050273588 | Ong | Dec 2005 | A1 |
20060075395 | Lee | Apr 2006 | A1 |
20060161784 | Hunter | Jul 2006 | A1 |
20060225067 | Yang | Oct 2006 | A1 |
20070260866 | Wang | Nov 2007 | A1 |
20080040596 | Mai | Feb 2008 | A1 |
20080086631 | Chow | Apr 2008 | A1 |
20080098381 | Lin | Apr 2008 | A1 |
20080126782 | Dayan | May 2008 | A1 |
20080141016 | Chang | Jun 2008 | A1 |
20080172558 | Stakutis | Jul 2008 | A1 |
20080195750 | Sadovsky | Aug 2008 | A1 |
20080209553 | Lu | Aug 2008 | A1 |
20080269954 | Lev | Oct 2008 | A1 |
20090063834 | Huang | Mar 2009 | A1 |
20090089570 | Andrianov | Apr 2009 | A1 |
20090100287 | Chu | Apr 2009 | A1 |
20090158024 | Hung | Jun 2009 | A1 |
20090249113 | Chou | Oct 2009 | A1 |
20090271602 | Burks, III | Oct 2009 | A1 |
20090327684 | Zimmer | Dec 2009 | A1 |
20100017589 | Reed | Jan 2010 | A1 |
20100064127 | Lee | Mar 2010 | A1 |
20100082960 | Grobman | Apr 2010 | A1 |
20100100720 | Wu | Apr 2010 | A1 |
20100235617 | Chen | Sep 2010 | A1 |
20100299493 | McGee, III | Nov 2010 | A1 |
20100299560 | Lin | Nov 2010 | A1 |
20110066837 | Lee | Mar 2011 | A1 |
20110093741 | Liang | Apr 2011 | A1 |
20120011393 | Roberts | Jan 2012 | A1 |
20120072710 | Gupta | Mar 2012 | A1 |
20120072897 | Selvam | Mar 2012 | A1 |
20120210165 | Lambert et al. | Aug 2012 | A1 |
20130047031 | Tabone et al. | Feb 2013 | A1 |
20130159690 | Tsukamoto | Jun 2013 | A1 |
20130232325 | Jang | Sep 2013 | A1 |
20140115314 | Huang | Apr 2014 | A1 |
20140237223 | Chudgar | Aug 2014 | A1 |
20140281455 | Kochar | Sep 2014 | A1 |
20150095632 | Huang | Apr 2015 | A1 |
20150242656 | Dasari | Aug 2015 | A1 |
20150301880 | Allu | Oct 2015 | A1 |
20150324588 | Locke | Nov 2015 | A1 |
20160055113 | Hodge | Feb 2016 | A1 |
20160063255 | Jeansonne | Mar 2016 | A1 |
20160364570 | Stern | Dec 2016 | A1 |
20170249002 | Costa | Aug 2017 | A1 |
Number | Date | Country |
---|---|---|
1799028 | Jul 2006 | CN |
1928843 | Mar 2007 | CN |
101894054 | Nov 2010 | CN |
WO-2010135485 | Nov 2010 | WO |
Entry |
---|
U.S. Appl. No. 14/780,892, Non-Final Office Action dated Jun. 16, 2017, pp. 1-23. |
Hodge et al., International Application No. PCT/US13/37725 entitled Redundant System Boot Code in a Secondary Non-Volatile Memory filed Apr. 23, 2013 (25 pages). |
Jeansonne et al., International Application No. PCT/US13/37727 entitled Configuring a System filed Apr. 23, 2013 (35 pages). |
Jeansonne et at, International Application No. PCT/US13/37728 entitled Event Data Structure to Store Event Data filed Apr. 23, 2013 (36 pages). |
Jeansonne. et al., International Application No. PCT/US13/37729 entitled Repairing Compromised System Data in a Non-Volatile Memory filed Apr. 23, 2013 (25 pages). |
Jeansonne et al., International Application No. PCT/US13/37733 entitled Retrieving System Boot Code From a Non-Volatile Memory filed Apr. 23, 2013 (26 pages). |
Jeansonne et al., International Application No. PCT/US13/37735 entitled Verifying Controller Code and System Boot Code filed Apr. 23, 2013 (36 pages). |
Regenscheid; “BIOS Integrity Measurement Guidelines (Draft)”, <http://csrc.nist.gov/publications/drafts/800-155/draft-SP800-155—Dec2011.pdf>, Dec. 2011. |
Number | Date | Country | |
---|---|---|---|
20160055068 A1 | Feb 2016 | US |