The subject matter herein relates to data processing and, more particularly, to encryption acceleration. Various embodiments herein provide devices and systems including a standardized encryption application programming interface embedded in firmware to perform encryption services. Some such embodiments move encryption operations away from operating system processes into firmware. As a result, encryption operations are generally accelerated.
|
1. A method comprising:
during initialization of a computing device, before booting to an operating system, determining if more than one processor core exists within a processor of the computing device;
in response to a determination that there are multiple processor cores, (a) automatically loading firmware instructions for a firmware encryption service application programming interface (“API”) into the multiple processor cores and (b) automatically setting up the firmware encryption service API to use the multiple processor cores; and
before booting to the operating system, utilizing the firmware encryption service API to decrypt at least part of the operating system; and
wherein the operation of utilizing the firmware encryption service API to decrypt at least part of the operating system comprises utilizing the multiple processor cores in parallel to decrypt at least part of the operating system before booting to the operating system.
8. A non-transitory machine-readable medium with instructions stored thereon, which when executed, cause a machine to perform actions comprising:
during initialization of a computing device, before booting to an operating system, determining if more than one processor core exists within a processor of the computing device:
in response to a determination that there are multiple processor cores, (a) automatically loading firmware instructions for a firmware encryption service application programming interface (“API”) into the multiple processor cores and (b) automatically setting up the firmware encryption service API to use the multiple processor cores; and
before booting to the operating system, utilizing the firmware encryption service API to decrypt at least part of the operating system
wherein the operation of utilizing the firmware encryption service API to decrypt at least part of the operating system comprises utilizing the multiple processor cores in parallel to decrypt at least part of the operating system before booting to the operating system.
15. A computing device comprising:
a processor;
a basic input output system (BIOS) responsive to the processor;
a storage device responsive to the processor; and
an operating system stored at least partially in encrypted form on the storage device;
wherein the BIOS comprises instructions which, when executed, cause the computing device to perform operations comprising:
during initialization of the computing device, before booting to the operating system, determining if more than one processor core exists within the processor of the computing device;
in response to a determination that there are multiple processor cores, (a) automatically loading firmware instructions for a firmware encryption service application programming interface (“API”) into the multiple processor cores and (b) automatically setting up the firmware encryption service API to use the multiple processor cores; and
before booting to the operating system, utilizing the firmware encryption service API to decrypt at least part of the operating system; and
wherein the operation of utilizing the firmware encryption service API to decrypt at least part of the operating system comprises utilizing the multiple processor cores in parallel to decrypt at least part of the operating system before booting to the operating system.
2. The method of
3. The method of
4. The method of
5. The method of
during initialization of the computing device, before booting to the operating system, enabling Universal Serial Bus (USB) device utilization.
6. The method of
allowing the computing device to successfully boot only if a Universal Serial Bus (USB) device with a predetermined key is coupled to the computing device.
7. The method of
utilizing the firmware encryption service API to perform encryption operations with processing resources of a network interface card of the computing device.
9. The non-transitory machine-readable medium of
10. The non-transitory machine-readable medium of
11. The non-transitory machine-readable medium of
12. The non-transitory machine-readable medium of
during initialization of the computing device, before booting to the operating system, enabling Universal Serial Bus (USB) device utilization.
13. The non-transitory machine-readable medium of
allowing the computing device to successfully boot only if a Universal Serial Bus (USB) device with a predetermined key is coupled to the computing device.
14. The non-transitory machine-readable medium of
utilizing the firmware encryption service API to perform encryption operations with processing resources of a network interface card of the computing device.
16. The computing device of
a network interface card responsive to the processor; and
wherein the operations comprise utilizing the firmware encryption service API to perform encryption services with the network interface card.
17. The computing device of
a Universal Serial Bus (USB) device with a first trusted platform module (TPM);
and
a second TPM in the computing device.
18. The computing device of
enabling a Universal Serial Bus (USB) device to register the firmware encryption service API with the BIOS of the computing device during initialization of the computing device before booting to the operating system.
19. The computing device of
a hard disk storage device containing data; and
wherein at least a portion of the data stored on the hard disk storage device is accessible in decrypted form only through utilization of a key from a Universal Serial Bus (USB) device.
20. The computing device of
|
This application is a continuation of U.S. patent application Ser. No. 11/771,671, now U.S. Pat. No. 7,987,349, entitled “ENCRYPTION ACCELERATION,” filed Jun. 29, 2007, which is hereby incorporated by reference in its entirety.
The subject matter herein relates to data processing and, more particularly, to encryption acceleration.
As data security becomes more an more important to individuals and enterprises, encryption of data, both stored and transient data, has become prevalent. However, software operations to encrypt and decrypt data are extremely resource intensive. This commonly slows performance of devices performing the encryption operations. Slowed performance is especially visible in instances where data stored on hard disks is encrypted, such as in encrypted volumes. In such instances, as operating systems are loaded, it is not uncommon for at least some portions of operating system instructions to be decrypted prior to execution. However, the operating system needs to be decrypted in the pre-boot environment which is very resource-poor. As a result, the decryption of the operating system extends boot time considerably. With Logical-Block-Addressing (“LBA”) based encryption utilized in full-volume encryption, coupled with ever-larger disks, such as two terabyte disks today and ten terabyte disks expected by 2010, LBA based encryption and other encryption technologies create usability concerns from long install operations, long machine reboots, and the like.
Further, as network bandwidth availability increases, more and more data in larger and larger files is being sent over networks. At the same time, encryption of data transmitted over networks is often necessary. As a result, data transmission latency is increasing due to software encryption and decryption operations performed on the data.
Various embodiments described herein provide encryption service application programming interfaces (“API”) that provide an encrypt service and a decrypt service. These interfaces may be embedded in firmware of any number of devices. In typical embodiments, each device including an encryption service API provides at least one or both of encrypt service and a decrypt service through an interface that is standardized across devices. However, although the API from one device to the next may be utilized in a standardized manner, the API of each device is implemented in firmware of the device in a manner that is specific to the resources within the specific device. Some such embodiments leverage industry-standard capabilities for access to resources, such as hard disks, via the Unified Extensible Firmware Interface (‘UEFI”). Some such API's abstract capabilities of UEFI based systems, such as pre-operating system multi-processor interfaces and abstractions of other platform hardware. These and other embodiments are described in greater detail below.
In the following detailed description, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration specific embodiments in which the inventive subject matter may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice them, and it is to be understood that other embodiments may be utilized and that structural, logical, and electrical changes may be made without departing from the scope of the inventive subject matter. Such embodiments of the inventive subject matter may be referred to, individually and/or collectively, herein by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept if more than one is in fact disclosed.
The following description is, therefore, not to be taken in a limited sense, and the scope of the inventive subject matter is defined by the appended claims.
The functions or algorithms described herein are implemented in hardware, software or a combination of software and hardware in one embodiment. The software comprises computer executable instructions stored on computer readable media such as memory or other type of storage devices. Further, described functions may correspond to modules, which may be software, hardware, firmware, or any combination thereof. Multiple functions are performed in one or more modules as desired, and the embodiments described are merely examples. The software is executed on a digital signal processor, ASIC, microprocessor, or other type of processor operating on a system, such as a personal computer, server, a router, or other device capable of processing data including network interconnection devices.
Some embodiments implement the functions in two or more specific interconnected hardware modules or devices with related control and data signals communicated between and through the modules, or as portions of an application-specific integrated circuit. Thus, the exemplary process flow is applicable to software, firmware, and hardware implementations.
Computer-readable instructions stored on a computer-readable medium are executable by the processing unit 102 of the computer 110. A hard drive, CD-ROM, ROM, and RAM are some examples of articles including a computer-readable medium. The memory may hold a program 125, such as an operating system to provide operation features to users, processes, and other elements and hardware.
The computer 110 may also include an out-of-band controller 103 that provides services on the computer 110 for various purposes. The computer 110, in some embodiments includes a trusted platform module (“TPM”) 105 to hold encryption keys and other sensitive information depending on the embodiment.
In some embodiments, a Universal Serial Bus (“USB”) device 122 may be coupled to the computer 110. The USB device 122 includes an encryption API and may also include a TPM. When coupled to the computer 110, the encryption API of the USB device registers with the operating system or BIOS and provides encryption service to one or more processes or devices of the computer. In some embodiments, the USB device 122 must be coupled to the computer 110 to allow the computer 110 to boot through utilization of one or more keys or passwords stored in the TPM.
The non-volatile memory 108 of the computer 104, such as a ROM, holds a BIOS that provides basic operation functions to the computer 110 and allows the computer 110 to boot. The non-volatile memory 108 also holds an encryption application programming interface (“API”) 109. The encryption API 109 in some embodiments is part of the computer 110 BIOS and provides encryption services to encrypt and decrypt data for the BIOS and other processes during boot of the computer 110. The encryption API 109 may also be utilized by processes of the operating system, such as an operating system loader during boot, and other processes of the operating system or other programs after the operating system is operational. In some embodiments, the encryption API 109 utilizes one or more encryption keys stored in the TPM 105 to perform encryption operations.
In these embodiments, and others, the encryption API 109 is part of the Unified Extensible Firmware Interface and is also present on one or more other devices, such as network interface card 120. The encryption API 121 of the network interface card 120, the encryption API 109 of the BIOS, and encryption API of one or more other devices provide a standardized API to perform encryption operations, such as encrypting and decrypting. In such embodiments, the standardized API provides services which may be called in a standard fashion across all devices including the API. However, each device including the standardized encryption API implements the API in a manner to leverage the resources available on the specific device. The encryption operations of the standardized encryption API generally abstract the capabilities for a particular cipher, such as the Advanced Encryption Standard—Galois Counter Mode, in various devices.
When implemented in the BIOS of a computer including multiple processors or multiple cores in a single processor, the encryption API may be implemented to parallelize encryption and decryption operations across multiple processors or cores. In a network interface card, the encryption API may be implemented to take advantage of one or more microprocessors available on the network interface card rather than sending data to a central processor to be encrypted or decrypted. The result is better utilization of device resources rather than over consumption of system resources. Further, encryption operations are moved out of operating system software and into hardware which, in many embodiments, is able to perform the operations more efficiently.
Various embodiments including the encryption API allows encryption operations to be removed from software and moved to firmware to accelerate these operations. The encryption operations of the standardized encryption API abstract the capabilities for a particular cipher, such as the Advanced Encryption Standard—Galois Counter Mode, in various devices.
The method 200 further includes loading An operating system boot loader 204. An operating system boot loader is a process that is executed on a computing device to load and start the various processes of an operating system. In embodiments where at least some of the data including the operating system is stored on the computing device in encrypted volumes, the boot loader is typically not stored in an encrypted fashion because traditionally, the operating system has performed the encryption operations. Thus, the boot loader cannot be decrypted using processes of the operating system that are not yet running. However, in some embodiments where initializing the computing device includes starting a bios including the standardized encryption API, the encryption services are available when the boot loader is loaded 204 by the BIOS. Thus, loading the operating system boot loader 204, may include decrypting the operating system boot loader.
After loading the operating system boot loader 204, the method 200 includes evaluating boot loader instructions to determine if an encryption operation request is received from the boot loader 206. If not, the boot loader continues processing 208. The method 200 then continues evaluating instructions until a request to perform an encrypt operation is received. When received, the encryption operation is performed 210 and control is returned to the operating system 212.
Although
It is emphasized that the Abstract is provided to comply with 37 C.F.R. §1.72(b) requiring an Abstract that will allow the reader to quickly ascertain the nature and gist of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims.
In the foregoing Detailed Description, various features are grouped together in a single embodiment to streamline the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments of the inventive subject matter require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment.
It will be readily understood to those skilled in the art that various other changes in the details, material, and arrangements of the parts and method stages which have been described and illustrated in order to explain the nature of the inventive subject matter may be made without departing from the principles and scope of the inventive subject matter as expressed in the subjoined claims.
Zimmer, Vincent J., Rothman, Michael
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5745572, | Feb 24 1995 | International Computers Limited | Cryptographic key management |
7447895, | Sep 21 2004 | EGIS TECHNOLOGY INC | BIOS locking device, computer system with a BIOS locking device and control method thereof |
7565553, | Jan 14 2005 | Microsoft Technology Licensing, LLC | Systems and methods for controlling access to data on a computer with a secure boot process |
7958371, | May 09 2007 | SONY NETWORK ENTERTAINMENT PLATFORM INC ; Sony Computer Entertainment Inc | Methods and apparatus for secure operating system distribution in a multiprocessor system |
20030093684, | |||
20030126468, | |||
20050111664, | |||
20050144443, | |||
20060174109, | |||
20060179324, | |||
20070239996, | |||
20080130893, | |||
20090006830, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jun 22 2011 | Intel Corporation | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
May 05 2015 | ASPN: Payor Number Assigned. |
Jan 21 2019 | REM: Maintenance Fee Reminder Mailed. |
Jul 08 2019 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Jun 02 2018 | 4 years fee payment window open |
Dec 02 2018 | 6 months grace period start (w surcharge) |
Jun 02 2019 | patent expiry (for year 4) |
Jun 02 2021 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jun 02 2022 | 8 years fee payment window open |
Dec 02 2022 | 6 months grace period start (w surcharge) |
Jun 02 2023 | patent expiry (for year 8) |
Jun 02 2025 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jun 02 2026 | 12 years fee payment window open |
Dec 02 2026 | 6 months grace period start (w surcharge) |
Jun 02 2027 | patent expiry (for year 12) |
Jun 02 2029 | 2 years to revive unintentionally abandoned end. (for year 12) |