Extending platform trust during program updates

An approach is provided in which a computer system generates a current hash value of a computer program in response to receiving a request to execute the computer program. Next, the computer system determines that the current hash value fails to match a reference hash value that was previously generated subsequent to installing the computer program on the computer system. Since the two hash values do not match each other, the computer system matches the current hash value to an updated hash value that was previously generated in response to modifying the computer program on the computer system. In turn, the computer system executes the computer program when the current hash value matches the updated hash value.

BACKGROUND

The present disclosure relates to extending platform trust during program updates. More particularly, the present disclosure relates to utilizing a program modification module in conjunction with an integrity measurement module to optimize computer program loading performance within a computer system's trusted computing environment.

Computer systems execute computer programs that may utilize dependent data, such as libraries, during program execution. The computer system may also include a trusted computing environment that assures the integrity of the computer programs and their dependent data. The trusted computing environment may be managed by an integrity measurement module, which checks a computer program's integrity prior to executing the computer program.

In one embodiment, the dependent data (or links to the dependent data) may be integrated into the computer program when the program is compiled (static linking). In another embodiment, the dependent data may be integrated into the computer program (or links to the dependent data) when the computer program loads for execution (dynamic linking). In this embodiment, the computer program is temporarily modified during program execution with the dynamic linking information and, after the computer program finishes executing, the computer program reverts back to its original form to maintain the computer program's integrity within the trusted computing environment.

BRIEF SUMMARY

According to one embodiment of the present disclosure, an approach is provided in which a computer system generates a current hash value of a computer program in response to receiving a request to execute the computer program. Next, the computer system determines that the current hash value fails to match a reference hash value that was previously generated subsequent to installing the computer program on the computer system. Since the two hash values do not match each other, the computer system matches the current hash value to an updated hash value that was previously generated in response to modifying the computer program on the computer system. In turn, the computer system executes the computer program when the current hash value matches the updated hash value.

DETAILED DESCRIPTION

The following detailed description will generally follow the summary of the disclosure, as set forth above, further explaining and expanding the definitions of the various aspects and embodiments of the disclosure as necessary.

FIG. 1is a diagram showing a program modification module updating a computer program and providing a digitally signed updated hash value to an integrity measurement module for validating the computer program's trustworthiness prior to executing the computer program. As defined herein, a hash value may be any identifier that is derived from a computer program's content (e.g., hash value, checksum, hash codes, etc.).

Although this disclosure utilizes hash values to verify program integrity, one skilled in the art would understand that other approaches may be utilized to verify program integrity (e.g., checksums, etc.).

Computer system100installs computer program120and dependent data125(e.g., libraries) onto trusted computing environment130. During the installation process (or shortly thereafter), integrity measurement module105generates a “reference” hash value of computer program120. In turn, integrity measurement module105stores the reference hash value in a table entry located in hash reference table115. Integrity measurement module105also stores a program identifier in the table entry that identifies computer program120.

As discussed below, integrity measurement module105utilizes the stored reference hash value as a basis for verifying the integrity of computer program120during subsequent program execution requests. For example, when integrity measurement module105receives program execution request108from requestor110, integrity measurement module105generates a current hash value of computer program120and compares the current hash value with the reference hash value stored in hash reference table115. When the current hash value matches the reference hash value, integrity measurement module105determines that the computer program120may be trusted (e.g., was not altered or compromised) and, in turn, safe to execute. As those skilled in the art can appreciate, requestor110may be another computer program or a user interface that receives input from a user to execute computer program120.

When computer system100loads computer program120and dependent data125for execution, computer system100may dynamically link computer program120with dependent data125, thus temporarily modifying computer program120during program execution. Program modification module140tracks such modifications and, after the program finishes executing, program modification module140updates computer program120with the program modifications. As such, computer program120loads and executes faster the next time that integrity measurement module105receives a request to execute computer program120.

However, since computer program120is now modified from its original form, program modification module140generates an updated hash value for computer program120(after program modifications) and stores the updated hash value (hash update table entry information170) in hash update table180. In order to assure the integrity of program modification module140, program modification module140receives digital signature155from key kernel ring160and includes the digital signature in hash update table entry information170, which is stored with the updated hash value. Program modification module140also includes computer program120's program identifier in hash update table entry information170, which is stored with the updated hash value and the digital signature (seeFIG. 2and corresponding text for further details).

When integrity measurement module105receives another program execution request108from requestor110(or other requestor), integrity measurement module105generates a new current hash value of computer program120, which is now modified, and determines that the current hash value fails to match the reference hash value stored in hash reference table115. As such, integrity measurement module105checks to see if hash update table180includes a table entry that includes a program identifier matching computer program120's program identifier.

When integrity measurement module105locates a match, integrity measurement module105, in one embodiment, validates the digital signature stored in the table entry to verify that a trusted source (program modification module140) generated the table entry. After integrity measurement module105validates the digital signature, integrity measurement module105retrieves the updated hash value from the table entry and compares the updated hash value to the newly generated current hash value. When the updated hash value and the current hash value match, integrity measurement module105determines that computer program120may be trusted and, in turn, loads and executes computer program120.

In addition, integrity measurement module105replaces the “old” reference hash value in hash reference table115with the updated hash value stored in hash update table180, thus becoming the new reference hash value. As a result, the next time that integrity measurement module105receives a request to execute computer program120, integrity measurement module105generates a new current hash value and matches the newly generated current hash value with the new reference hash value (e.g., updated hash value) stored in hash reference table115(seeFIG. 2and corresponding text for further details).

FIG. 2is a diagram showing an integrity measurement module validating integrity of a computer program and replacing a reference hash value located in a hash reference table with an updated hash value. Integrity measurement module105includes hash generator/comparator200, which may be software-based, hardware-based, or a combination of hardware and software. When integrity measurement module105receives a request to execute computer program120, hash generator/comparator200generates a current hash value of computer module120(current hash value205), and compares current hash value205with a reference hash valued located in hash reference table entry210. In one embodiment, hash generator/comparator200locates hash reference table entry210by comparing computer program120's program identifier with the program identifier located in hash reference table entry210(1234).

When hash reference table entry210's reference hash value (875421) does not match the current hash value, hash generator/comparator200accesses hash update table180to locate a table entry that includes the same program identifier as computer program120. Hash generator/comparator200locates hash update table entry220and validates a digital signature included in hash update table entry220. Next, hash generator/comparator200matches the updated hash value (65824) with computer program120's current hash value. When hash update table entry220's updated hash value matches the current hash value, hash generator/comparator200replaces the reference hash value in hash reference table entry210with the updated hash value in table entry220. As such, the updated hash value becomes a new reference hash value. In turn, the next time that hash generator/comparator200generates a new current hash value of computer program120in response to receiving a program execution request, the new current hash value will match the new reference hash value stored in hash reference table entry210.

FIG. 3is a flowchart showing steps taken in a program modification module updating a computer program's code and storing an updated hash value in a hash update table. Program modification module processing commences at300, whereupon the program modification module (program modification module140) monitors computer program120's loading and execution in response to integrity measurement module105receiving a request to execute computer program120. For example, computer system100may dynamically link computer program120and dependent data125(libraries) by temporarily modifying computer program120's code. In one embodiment, a run-time loader performs the function of linking computer program120with dependent data125. Computer program120, dependent data125, and program modification module140are included in trusted computing environment125.

The program modification module determines whether computer program120's code was updated during the loading/execution (decision315). If computer program120's code was not updated, decision315branches to the “No” branch, whereupon program modification module processing ends at318.

On the other hand, if computer program120's code was updated, decision315branches to the “Yes” branch, whereupon the program modification module modifies (step320) computer program120based upon information (dynamic linking information) obtained from step310. As such, during subsequent executions, computer program120foregoes dynamic linking and loads/executes faster.

At step330, the program modification module generates an updated hash value for the “modified” computer program120. The program modification module, at step340, receives a digital signature from kernel key ring160, thus ensuring a trusted digital signature. At step350, the program modification module stores the updated hash value, the digital signature, and computer program120's program identifier into a hash update table entry located in hash update table180. Program modification module processing ends at360.

FIG. 4is a flowchart showing steps taken in an integrity measurement module validating a modified computer program's integrity prior to executing the computer program. Integrity measurement module processing commences at400, whereupon the integrity measurement module (integrity measurement module105) receives a request to execute a computer program. As such, the integrity measurement module generates a current hash value of the computer program and compares the current hash value with a reference hash value located in hash reference table115(step405). In one embodiment, the integrity measurement module locates a hash reference table entry in hash reference table115by matching the program identifier of the requested program to a program identifier stored in the hash reference table entry.

The integrity measurement module determines whether the current hash value and the reference hash value match (decision410). If the current hash value and the reference hash value match, decision410branches to the “Yes” branch, whereupon the integrity measurement module loads and executes the computer program at step415, and integrity measurement module processing ends at420.

On the other hand, if the current hash value does not match the reference hash value, decision410branches to the “No” branch, whereupon the integrity measurement module checks hash update table entries located in hash update table180for a table entry that includes a program identifier matching the requested computer program's program identifier (step425). Referring back toFIG. 3, the program modification module added an updated hash value, a digital signature, and the program identifier into a hash update table entry when the program modification module generates an updated hash value in response to modifying the computer program.

The integrity measurement module determines whether hash update table180includes a table entry with a program identifier that matches the requested computer program's program identifier (decision430). If hash update table180does not include a matching program identifier in one of the hash update table entries, decision430branches to the “No” branch, whereupon the integrity measurement module generates an error at step440and ends at445.

On the other hand, if hash update table180includes a matching program identifier in one of hash update table180's table entries, decision430branches to the “Yes” branch. At step450, the integrity measurement module validates the digital signature located in the hash update table entry to ensure that the program modification module has not been compromised. For example, a malicious user may compromise the program modification module and cause the program modification module to generate untrusted hash update table entries.

If the integrity measurement module determines that the digital signature is invalid (e.g., a compromised program modification module), decision460branches to the “No” branch, whereupon the integrity measurement module generates an error at step440and ends processing at445. On the other hand, if the integrity measurement module determines that the digital signature is valid, decision460branches to the “Yes” branch.

At step465, the integrity measurement module compares the current hash value (generated at step405) with the updated hash value stored in hash update table180. If the current hash value does not match the updated hash value, decision470branches to the “No” branch, whereupon the integrity measurement module generates an error at step440and ends processing at445.

On the other hand, current hash value matches the updated hash value, decision470branches to the “Yes” branch, whereupon the integrity measurement module replaces the reference hash value located in hash reference table115with the updated hash value stored in hash update table180(step475, seeFIG. 2and corresponding text for further details). At step480, the integrity measurement module executes the program and ends at490.

FIG. 5illustrates information handling system500, which is a simplified example of a computer system capable of performing the computing operations described herein. Information handling system500includes one or more processors510coupled to processor interface bus512. Processor interface bus512connects processors510to Northbridge515, which is also known as the Memory Controller Hub (MCH). Northbridge515connects to system memory520and provides a means for processor(s)510to access the system memory. Graphics controller525also connects to Northbridge515. In one embodiment, PCI Express bus518connects Northbridge515to graphics controller525. Graphics controller525connects to display device530, such as a computer monitor.

Northbridge515and Southbridge535connect to each other using bus519. In one embodiment, the bus is a Direct Media Interface (DMI) bus that transfers data at high speeds in each direction between Northbridge515and Southbridge535. In another embodiment, a Peripheral Component Interconnect (PCI) bus connects the Northbridge and the Southbridge. Southbridge535, also known as the I/O Controller Hub (ICH) is a chip that generally implements capabilities that operate at slower speeds than the capabilities provided by the Northbridge. Southbridge535typically provides various busses used to connect various components. These busses include, for example, PCI and PCI Express busses, an ISA bus, a System Management Bus (SMBus or SMB), and/or a Low Pin Count (LPC) bus. The LPC bus often connects low-bandwidth devices, such as boot ROM596and “legacy” I/O devices (using a “super I/O” chip). The “legacy” I/O devices (598) can include, for example, serial and parallel ports, keyboard, mouse, and/or a floppy disk controller. The LPC bus also connects Southbridge535to Trusted computing environment Module (TPM)595. Other components often included in Southbridge535include a Direct Memory Access (DMA) controller, a Programmable Interrupt Controller (PIC), and a storage device controller, which connects Southbridge535to nonvolatile storage device585, such as a hard disk drive, using bus584.

ExpressCard555is a slot that connects hot-pluggable devices to the information handling system. ExpressCard555supports both PCI Express and USB connectivity as it connects to Southbridge535using both the Universal Serial Bus (USB) the PCI Express bus. Southbridge535includes USB Controller540that provides USB connectivity to devices that connect to the USB. These devices include webcam (camera)550, infrared (IR) receiver548, keyboard and trackpad544, and Bluetooth device546, which provides for wireless personal area networks (PANs). USB Controller540also provides USB connectivity to other miscellaneous USB connected devices542, such as a mouse, removable nonvolatile storage device545, modems, network cards, ISDN connectors, fax, printers, USB hubs, and many other types of USB connected devices. While removable nonvolatile storage device545is shown as a USB-connected device, removable nonvolatile storage device545could be connected using a different interface, such as a Firewire interface, etcetera.

Wireless Local Area Network (LAN) device575connects to Southbridge535via the PCI or PCI Express bus572. LAN device575typically implements one of the IEEE 802.11 standards of over-the-air modulation techniques that all use the same protocol to wireless communicate between information handling system500and another computer system or device. Optical storage device590connects to Southbridge535using Serial ATA (SATA) bus588. Serial ATA adapters and devices communicate over a high-speed serial link. The Serial ATA bus also connects Southbridge535to other forms of storage devices, such as hard disk drives. Audio circuitry560, such as a sound card, connects to Southbridge535via bus558. Audio circuitry560also provides functionality such as audio line-in and optical digital audio in port562, optical digital output and headphone jack564, internal speakers566, and internal microphone568. Ethernet controller570connects to Southbridge535using a bus, such as the PCI or PCI Express bus. Ethernet controller570connects information handling system500to a computer network, such as a Local Area Network (LAN), the Internet, and other public and private computer networks.

The Trusted computing environment Module (TPM595) shown inFIG. 5and described herein to provide security functions is but one example of a hardware security module (HSM). Therefore, the TPM described and claimed herein includes any type of HSM including, but not limited to, hardware security devices that conform to the Trusted Computing Groups (TCG) standard, and entitled “Trusted computing environment Module (TPM) Specification Version 1.2.” The TPM is a hardware security subsystem that may be incorporated into any number of information handling systems, such as those outlined inFIG. 6.

FIG. 6provides an extension of the information handling system environment shown inFIG. 5to illustrate that the methods described herein can be performed on a wide variety of information handling systems that operate in a networked environment. Types of information handling systems range from small handheld devices, such as handheld computer/mobile telephone610to large mainframe systems, such as mainframe computer670. Examples of handheld computer610include personal digital assistants (PDAs), personal entertainment devices, such as MP3 players, portable televisions, and compact disc players. Other examples of information handling systems include pen, or tablet, computer620, laptop, or notebook, computer630, workstation640, personal computer system650, and server660. Other types of information handling systems that are not individually shown inFIG. 6are represented by information handling system680. As shown, the various information handling systems can be networked together using computer network600. Types of computer network that can be used to interconnect the various information handling systems include Local Area Networks (LANs), Wireless Local Area Networks (WLANs), the Internet, the Public Switched Telephone Network (PSTN), other wireless networks, and any other network topology that can be used to interconnect the information handling systems. Many of the information handling systems include nonvolatile data stores, such as hard drives and/or nonvolatile memory. Some of the information handling systems shown inFIG. 6depicts separate nonvolatile data stores (server660utilizes nonvolatile data store665, mainframe computer670utilizes nonvolatile data store675, and information handling system680utilizes nonvolatile data store685). The nonvolatile data store can be a component that is external to the various information handling systems or can be internal to one of the information handling systems. In addition, removable nonvolatile storage device545can be shared among two or more information handling systems using various techniques, such as connecting the removable nonvolatile storage device545to a USB port or other connector of the information handling systems.