System and Method for Runtime Capsule Firmware Update with Low-Latency Software SMIs
AssigneeInsyde Software Corp.
InventorTimothy Andrew Lewis
Life of this patent
Estimating the term…
Abstract
Systems and methods for performing flash updates during runtime are discussed. More particularly, the amount of secure memory required to prevent tampering during the update process is limited by storing hashes of logical blocks of the update image in secure memory after initial validation while storing the update image in non-secure RAM or another non-secure memory location. Additionally, disruptions to the computing platform are limited by dividing the logical blocks into smaller progress units to minimize the amount of time spent in the secure operating environment performing the update.
Claims20
A non-transitory medium holding executable instructions for performing secure flash updates, the instructions when executed on at least one computing platform equipped with platform firmware and at least one processor, causing the platform to:
- receive a request to perform a flash update of a firmware image, the request including an update capsule holding a flash update image that includes firmware code or data or both;
- store the flash update image in an image buffer;
- store a hash of each logical block of the flash update image in a secure memory location that is accessible only when one or more processors on the platform are operating in a secure operating environment;
- receive a plurality of function calls via a runtime services interface provided by the platform firmware to perform the flash update, each call directed to a logical block of the flash update image, each logical block divided into one or more progress units;
- and
- perform, in response to each function call, an update to the firmware image for a single progress unit at a time for each logical block, the update performed while the one or more processors are operating in the secure operating environment after validating a hash of the logical block of the flash update image with a corresponding stored hash.
A computing platform-implemented method for performing secure flash updates, the computing platform equipped with platform firmware and at least one processor, the method comprising:
- receiving with the computing platform a request to perform a flash update of a firmware image, the request including an update capsule holding a flash update image that includes firmware code or data or both;
- storing the flash update image in an image buffer;
- storing a hash of each logical block of the flash update image in a secure memory location that is accessible only when one or more processors on the platform are operating in a secure operating environment;
- receiving a plurality of function calls via a runtime services interface provided by the platform firmware to perform the flash update, each call directed to a logical block of the flash update image, each logical block divided into one or more progress units;
- and
- performing, in response to each function call, an update to the firmware image for a single progress unit at a time for each logical block, the update performed while the one or more processors are operating in the secure operating environment after validating a hash of the logical block of the flash update image with a corresponding stored hash.
A computing platform equipped with one or more processors, comprising:
- a non-volatile storage location holding platform firmware that provides a runtime services interface to functions operable in a secure memory environment;
- an image buffer in a non-secure memory location;
- an operating system configured to execute an application that when executed makes a request to the runtime services interface to perform a flash update of a firmware image, the request including an update capsule holding a flash update image that includes firmware code or data or both;
- wherein, upon receiving the request to perform the flash update, the computing platform:
- validates the request;
- stores the flash update image in the image buffer;
- stores a hash of each logical block of the flash update image in a secure memory location that is accessible only when one or more processors on the platform are operating in a secure operating environment;
- receives a plurality of function calls via the runtime services interface from the application to perform the flash update, each call directed to a logical block of the flash update image, each logical block divided into one or more progress units;
- and
- performs, in response to each function call, an update to the firmware image for a single progress unit at a time for each logical block, the update performed while the one or more processors are operating in the secure operating environment after validating a hash of the logical block of the flash update image with a corresponding stored hash.
Dependencies are inferred from the claim text.