Some computing systems store system state data, such as life cycle data or initialization phase data, during the initialization or booting of the system. System state data is typically stored in the volatile memory of the computing system, such as the static random access memory (SRAM). System state data may be susceptible to glitching attacks, data replacement attacks, or buffer overflow attacks, whereby a malevolent entity attempts to gain unauthorized access to the computing system by modifying the system state data.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key factors or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
In an embodiment of the techniques presented herein, a system is provided. The system comprises a processor, a hardware register having at least one lockable until reset bit, and a memory storing an application image comprising instructions, that when executed by the processor cause the processor to store system state data in the hardware register during an initializing of the system.
In an embodiment of the techniques presented herein, a system is provided. The system comprises means for executing an application image to initialize a computing system, means for storing system state data associated with the initializing of the computing system in a hardware register having at least one lockable until reset bit, and means for identifying a fault condition responsive to the system state data not matching an expected value.
In an embodiment of the techniques presented herein, a method is provided. The method comprises executing an application image to initialize a computing system, storing system state data associated with the initializing of the computing system in a hardware register having at least one lockable until reset bit, and identifying a fault condition responsive to the system state data not matching an expected value.
In an embodiment of the techniques presented herein, a non-transitory computer-readable medium storing instructions that when executed facilitate performance of operations is provided. The operations comprise initializing a computing system, storing system state data associated with the initializing of the computing system in a hardware register having at least one lockable until reset bit, and identifying a fault condition responsive to the system state data not matching an expected value.
To the accomplishment of the foregoing and related ends, the following description and annexed drawings set forth certain illustrative aspects and implementations. These are indicative of but a few of the various ways in which one or more aspects may be employed. Other aspects, advantages, and novel features of the disclosure will become apparent from the following detailed description when considered in conjunction with the annexed drawings.
The claimed subject matter is now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the claimed subject matter. It may be evident, however, that the claimed subject matter may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing the claimed subject matter.
It is to be understood that the following description of embodiments is not to be taken in a limiting sense. The scope of the present disclosure is not intended to be limited by the embodiments described hereinafter or by the drawings, which are taken to be illustrative only. The drawings are to be regarded as being schematic representations and elements illustrated in the drawings are not necessarily shown to scale. Rather, the various elements are represented such that their function and general purpose become apparent to a person skilled in the art.
All numerical values within the detailed description and the claims herein are modified by “about” or “approximately” the indicated value, and take into account experimental error and variations that would be expected by a person having ordinary skill in the art.
According to some embodiments, system state data is stored in a lockable hardware register during an initialization of a computing system. System state data may include life cycle state data that is set once during the initialization of the computing system. Life cycle data specifies whether the computing system is under control of a chip manufacturer, under control of a device manufacturer, or in a secure state and ready for use by a customer. Different security levels may be applied to the firmware and components of the computing system depending on the life cycle state. System state data may also include initialization phase data that indicates the progress of the firmware during the initialization of the computing system. The system state data for the initialization phase changes during the initialization. Different security levels may be applied to the firmware and components of the computing system depending on phase of the initialization. According to some embodiments, the lockable hardware register may include a lock until reset register where a lock signal may be provided to the hardware register causing the data to be locked until the next system reset, or a sticky register where individual bits are locked after being set until the next system reset. The computing system may verify the contents of the lockable hardware register to validate the system state. A fault condition may be signaled if the system state data does not match a valid value.
According to some embodiments, the bus 102 includes a path that permits communication among the components of the computing system 100. For example, the bus 102 may include a system bus, an address bus, a data bus, and/or a control bus. The bus 102 may also include bus drivers, bus arbiters, bus interfaces, and so forth. The processor 104 includes one or multiple processors, microprocessors, data processors, co-processors, application specific integrated circuits (ASICs), controllers, programmable logic devices, chipsets, field-programmable gate arrays (FPGAs), application specific instruction-set processors (ASIPs), system-on-chips (SoCs), central processing units (CPUs) (e.g., one or multiple cores), microcontrollers, and/or some other type of component that interprets and/or executes instructions and/or data. The processor 104 may be implemented as hardware (e.g., a microprocessor, etc.), a combination of hardware and software (e.g., a SoC, an ASIC, etc.), may include one or multiple memories (e.g., cache, etc.), etc.
In some embodiments, the system memory 106 includes one or multiple memories and/or one or multiple other types of storage mediums. For example, the system memory 106 may include one or multiple types of memories, such as, random access memory (RAM), dynamic random access memory (DRAM), cache, read only memory (ROM), a programmable read only memory (PROM), a static random access memory (SRAM), a single in-line memory module (SIMM), a dual in-line memory module (DIMM), a flash memory, and/or some other suitable type of memory. The system memory 106 may include a hard disk, a magnetic disk, an optical disk, a magneto-optic disk, a solid state disk, a Micro-Electromechanical System (MEMS)-based storage medium, a nanotechnology-based storage medium, and/or some other suitable disk. The system memory 106 may include drives for reading from and writing to the storage medium. The system memory 106 may be external to and/or removable from the computing system 100, such as, for example, a Universal Serial Bus (USB) memory stick, a dongle, a hard disk, mass storage, off-line storage, or some other type of storing medium (e.g., a compact disk (CD), a digital versatile disk (DVD), a Blu-Ray disk (BD), etc.). The system memory 106 may store data, software, and/or instructions related to the operation of the computing system 100.
The system memory 106 stores an application image 116, such as a firmware image, that the processor 104 executes during an initialization of the computing system 100. In some embodiments, the application image 116 is stored in a non-volatile portion of the system memory 106 that retains its data even it power is removed.
In some embodiments, the processor 104 controls the overall operation or a portion of the operation(s) of the computing system 100 by executing the application image 116. The processor 104 performs one or multiple operations based on an operating system and/or various applications or computer programs (e.g., software). In some embodiments, the processor 104 executes the application image 116 during the initialization or boot process and stores system state data 118 in the lockable hardware register 108. In some embodiments, the processor 104 stores system state verification data 120 in the system memory 106 for validating the system state data 118. The system state verification data 120 may be stored in a volatile portion of the system memory 106, such as SRAM.
In some embodiments, the input device 110 permits an input into the computing system 100. For example, the input device 110 may comprise a keyboard, a mouse, a display, a touchscreen, a touchless screen, a button, a switch, an input port, speech recognition logic, and/or some other type of suitable visual, auditory, or tactile input component. The output device 112 permits an output from the computing system 100. For example, the output device 112 may include a speaker, a display, a touchscreen, a touchless screen, a projected display, a light, an output port, and/or some other type of suitable visual, auditory, or tactile output component.
The communication interface 114 permits the computing system 100 to communicate with other devices, networks, systems, sensors, and/or the like on a network. The communication interface 114 may include one or multiple wireless interfaces and/or wired interfaces. For example, the communication interface 114 may include one or multiple transmitters and receivers, or transceivers. The communication interface 114 may operate according to a protocol stack and a communication standard. In some embodiments, the communication interface 114 includes an antenna. The communication interface 114 may include various processing logic or circuitry (e.g., multiplexing/de-multiplexing, filtering, amplifying, converting, error correction, etc.). In some embodiments, the communication interface 114 operates using a long range wireless protocol, such as a cellular protocol or a WiFi protocol, a short range protocol, such as BLUETOOTH™, or a wired protocol, such as Ethernet.
Referring to
Referring to
Referring to
Referring to
The processor 104 may check the validity of the system state data 118 and signal a fault condition if the data is invalid. Invalid system state data 118 may indicate a malicious attack. Invalid system state data 118 may include more than one bit being set in the life cycle state data, the initialization phase data not following a cascade, or the combined system state data 118 and system state verification data 120 not matching an expected value. Responsive to detecting invalid system state data 118, or system state verification data 120, the processor 104 may lock the computing system 100, reset the computing system 100, send an alert message through the communication interface 114, or perform some other protection function.
The term “computer readable media” may include communication media. Communication media typically embodies computer readable instructions or other data in a “modulated data signal” such as a carrier wafer or other transport mechanism and includes any information delivery media. The term “modulated data signal” may include a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
In an embodiment of the techniques presented herein, a system is provided. The system comprises a processor, a hardware register having at least one lockable until reset bit, and a memory storing an application image comprising instructions, that when executed by the processor cause the processor to store system state data in the hardware register during an initializing of the system.
In an embodiment of the techniques presented herein, the hardware register comprises a lock until reset register, and the processor is configured to lock the hardware register during the initializing of the system.
In an embodiment of the techniques presented herein, the system state data comprises life cycle state data.
In an embodiment of the techniques presented herein, the hardware register comprises a sticky until reset register.
In an embodiment of the techniques presented herein, the processor is to set a first bit of the hardware register after completion of a first phase of the initializing, and the processor is configured to set a second bit of the hardware register adjacent the first bit after completion of a second phase of the initializing.
In an embodiment of the techniques presented herein, the processor is configured to set a first bit of the hardware register responsive to a life cycle state of the system having a first value, the processor is configured to set a second bit of the hardware register responsive to the life cycle state having a second value, and the processor is configured to identify a fault condition responsive to more than one bit being set in the hardware register after completion of the initialization of the system.
In an embodiment of the techniques presented herein, the hardware register comprises a life cycle state field and an initialization phase field.
In an embodiment of the techniques presented herein, the system comprises a volatile memory configured to store a system state verification parameter, wherein the processor is configured to combine the system state data in the hardware register and the system state verification parameter to generate a combined system state verification parameter and identify a fault condition responsive to the combined system state verification parameter not matching an expected value after completion of the initialization of the system.
In an embodiment of the techniques presented herein, a system is provided. The system comprises means for executing an application image to initialize a computing system, means for storing system state data associated with the initializing of the computing system in a hardware register having at least one lockable until reset bit, and means for identifying a fault condition responsive to the system state data not matching an expected value.
In an embodiment of the techniques presented herein, a method is provided. The method comprises executing an application image to initialize a computing system, storing system state data associated with the initializing of the computing system in a hardware register having at least one lockable until reset bit, and identifying a fault condition responsive to the system state data not matching an expected value.
In an embodiment of the techniques presented herein, the hardware register comprises a lock until reset register, and the method comprises locking the hardware register during the initializing of the system.
In an embodiment of the techniques presented herein, storing the system state data in the hardware register comprises storing life cycle state data in the hardware register.
In an embodiment of the techniques presented herein, storing the system state data in the hardware register comprises storing the system state data in a sticky until reset register.
In an embodiment of the techniques presented herein, the method comprises setting a first bit of the hardware register after completion of a first phase of the initializing, and setting a second bit of the hardware register adjacent the first bit after completion of a second phase of the initializing.
In an embodiment of the techniques presented herein, the method comprises setting a first bit of the hardware register responsive to a life cycle state of the system having a first value, and setting a second bit of the hardware register responsive to the life cycle state having a second value, wherein identifying the fault condition comprises identifying the fault condition responsive to more than one bit being set in the hardware register after completion of the initializing of the system.
In an embodiment of the techniques presented herein, storing the system state data in the hardware register comprises storing a life cycle state field and an initialization phase field.
In an embodiment of the techniques presented herein, the method comprises storing a system state verification parameter in a system memory, and combining the system state data in the hardware register and the system state verification parameter to generate a combined system state verification parameter, wherein identifying the fault condition comprises identifying the fault condition responsive to the combined system state verification parameter not matching an expected value.
In an embodiment of the techniques presented herein, a non-transitory computer-readable medium storing instructions that when executed facilitate performance of operations is provided. The operations comprise initializing a computing system, storing system state data associated with the initializing of the computing system in a hardware register having at least one lockable until reset bit, and identifying a fault condition responsive to the system state data not matching an expected value.
In an embodiment of the techniques presented herein, the operations comprise setting a first bit of the hardware register after completion of a first phase of the initializing, and setting a second bit of the hardware register adjacent the first bit after completion of a second phase of the initializing.
In an embodiment of the techniques presented herein, the operations comprise setting a first bit of the hardware register responsive to a life cycle state of the system having a first value, and setting a second bit of the hardware register responsive to the life cycle state having a second value, wherein identifying the fault condition comprises identifying the fault condition responsive to more than one bit being set in the hardware register after completion of the initializing of the system.
In an embodiment of the techniques presented herein, the operations comprise storing a system state verification parameter in a system memory, and combining the system state data in the hardware register and the system state verification parameter to generate a combined system state verification parameter, wherein identifying the fault condition comprises identifying the fault condition responsive to the combined system state verification parameter not matching an expected value.
Any aspect or design described herein as an “example” is not necessarily to be construed as advantageous over other aspects or designs. Rather, use of the word “example” is intended to present one possible aspect and/or implementation that may pertain to the techniques presented herein. Such examples are not necessary for such techniques or intended to be limiting. Various embodiments of such techniques may include such an example, alone or in combination with other features, and/or may vary and/or omit the illustrated example.
As used in this application, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or”. That is, unless specified otherwise, or clear from context, “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, if X employs A; X employs B; or X employs both A and B, then “X employs A or B” is satisfied under any of the foregoing instances. In addition, the articles “a” and “an” as used in this application and the appended claims may generally be construed to mean “one or more” unless specified otherwise or clear from context to be directed to a singular form. Also, unless specified otherwise, “first,” “second,” or the like are not intended to imply a temporal aspect, a spatial aspect, an ordering, etc. Rather, such terms are merely used as identifiers, names, etc. for features, elements, items, etc. For example, a first element and a second element generally correspond to element A and element B or two different or two identical elements or the same element.
Also, although the disclosure has been shown and described with respect to one or more implementations, equivalent alterations and modifications will occur to others skilled in the art based upon a reading and understanding of this specification and the annexed drawings. The disclosure includes all such modifications and alterations and is limited only by the scope of the following claims. In particular regard to the various functions performed by the above described components (e.g., elements, resources, etc.), the terms used to describe such components are intended to correspond, unless otherwise indicated, to any component which performs the specified function of the described component (e.g., that is functionally equivalent), even though not structurally equivalent to the disclosed structure which performs the function in the herein illustrated example implementations of the disclosure. In addition, while a particular feature of the disclosure may have been disclosed with respect to only one of several implementations, such feature may be combined with one or more other features of the other implementations as may be desired and advantageous for any given or particular application. Furthermore, to the extent that the terms “includes”, “having”, “has”, “with”, or variants thereof are used in either the detailed description or the claims, such terms are intended to be inclusive in a manner similar to the term “comprising.”
| Number | Date | Country | |
|---|---|---|---|
| 63303761 | Jan 2022 | US |