# Patent

## Title
Security management in multi-node, multi-processor platforms

## Abstract

Multi-node and multi-processor security management is described in this application. Data may be secured in a TPM of any one of a plurality of nodes, each node including one or more processors. The secured data may be protected using hardware hooks to prevent unauthorized access to the secured information. Security hierarchy may be put in place to protect certain memory addresses from access by requiring permission by VMM, OS, ACM or processor hardware. The presence of secured data may be communicated to each of the nodes to ensure that data is protected. Other embodiments are described.

## Background
FIELD
This application relates generally to information security in computers. In particular, this application relates to securing information in a multi-processor and/or multi-node computer system.
BACKGROUND
Some computer hardware is designed to maintain secret information against software and other attacks. Some computer hardware makes use of hardware hooks in the processors and chipsets to protect memory secrets. Memory secrets may include things like private keys, passwords, personal data etc. for protection from malicious agents. VMM (Virtual Machine Monitor) or the components in the launch environment software can place and remove secrets in system memory. VMM explicitly notifies the hardware about the presence of secrets. VMM manages secrets in memory using a write CMD.SECRETS or CMD.NOSECRETS to hardware protected registers, depending on the presence of memory secrets. Some large server systems with 8-32 processor sockets, run a single copy of VMM, and are assembled by combining several smaller nodes containing 2-4 processor sockets. Each node boots separately to a point in BIOS and is then merged together by system BIOS running on the selected boot or primary node. Node controllers hide the multi-node topology from processors as well as VMMs. In the merged system, only the primary node is actively decoding registers and sets the correct secrets state. Other nodes do not see these commands and will have incorrect information. Each node comes out of reset independently and consults its private copy of SECRETS flag to determine whether to lock memory. Similar issue exists for TPM (Trusted Platform Module) ESTABLISHED flag. These issues may make secrets in these platforms insecure to malicious software.



BRIEF DESCRIPTION OF THE DRAWINGS
The following description can be better understood in light of Figures, in which:
FIG. 1 is a schematic diagram of an exemplary multi-node computer system;
FIG. 2 is a schematic diagram of an exemplary node;
FIG. 3 is a table illustrating exemplary access hierarchy for memory; and
FIG. 4 is a table illustrating exemplary organization of node controller index registers.



Together with the following description, the Figures demonstrate and explain the principles of the apparatus and methods described herein. In the Figures, the organization and configuration of components may be exaggerated or simplified for clarity. The same reference numerals in different Figures represent the same component.
DETAILED DESCRIPTION
The following description supplies specific details in order to provide a thorough understanding. Nevertheless, the skilled artisan would understand that the methods and processes can be implemented and used without employing these specific details. Indeed, the methods and processes can be placed into practice by modifying the illustrated architecture and organization for secret data protection and associated methods and can be used in conjunction with any computer system and techniques conventionally used in the industry. For example, while the description below focuses on Intel® processor based systems using the LaGrande Technologies (LT) architecture, the organization, processes and associated methods can be equally applied in other computer systems.
This application describes several embodiments of methods of secret synchronization across a large, multi-node system. The security management systems and methods can have any configuration consistent with operations described herein. One exemplary configuration of multi-node and multi-processor computer system is illustrated in FIGS. 1 and 2. The computer system schematically represented in FIG. 1 may include secondary nodes 110 and primary node 150. The lines linking each of nodes 110 150 represent links between the nodes.
FIG. 2 schematically illustrates secondary node 110. Similarly, FIG. 2 may represent primary node 150 as well. Secondary node 110 may include CPUs 112, node controller 114, memory 116, Trusted Platform Module (TPM) 117, I/O hub 118, and I/O controller hub 119. Node 110 may be connected to other nodes 110 or 150 via connection 120. Connection 120 may be to an Intel QuickPath Interconnect (QPI) bus, or any other bus known to those of ordinary skill. Similarly, each of the components of node 110 may be interconnected using one or more known bus and communications configurations or protocols. For example, I/O hub 118 and CPUs 112 may be connected to node controller 119 using QPI, I/O hub 118 may be connected to I/O controller hub 119 using Enterprise SouthBridge Interface (ESI), and I/O controller hub 119 may be connected to TPM 117 using a low pin count (LPC) bus.
LT makes use of several chipset registers located in I/O Hub 118 and I/O Controller Hub 119. LT also makes use of Trusted Platform Module (TPM). The LT chipset registers are mapped to a fixed, memory mapped, address range 0xFED2—0000 to 0xFED3_FFFF. TPM is mapped to the address range 0xFED4—0000 to 0xFED4—4FFF. Certain sub-ranges of these address ranges only allow privileged software to access these registers and there are hardware hooks in processor/chipset and I/O hub to perform the privilege checking. The VMM has knowledge of these ranges and what they represent and has code to apply necessary protections. Primary node 150 and secondary nodes 110 each have such LT registers and TPM.
FIG. 3 illustrates a table showing an exemplary organizational hierarchy for address locations in various TPMs 117 of nodes 110, 150. The address range 0xFED2_XXXX host chipset registers and is known as the “Private Space”. In the table, Private Space may be accessed by the processor hardware at all times; by an Authenticated Code Module (ACM) by authorization from the processor hardware; the VMM by authorization from both the processor hardware and the ACM; and finally, the OS may access this range only if authorized by the VMM, ACM, and the processor hardware. Thus, the chipset, I/O, LT and TPM registers may be protected from access using several layers of request and hardware protections.
Similarly, addresses 0xFED3_XXXX and 0xFED4—0XXX may be accessed by the processor hardware, VMM, and ACM for any reason, and by the OS only if authorized by VMM via CPU page table mechanism. Addresses 0xFED4—4XXX are the most secure and retain secured information that may never be accessed by any agent other than the processor hardware.
Software running on one node may need to be able to access LT and TPM registers in another (remote) node. The scheme that provides access to remote LT and TPM registers may accomplish the following requirements: the secondary node 110 registers may be exposed at alternate addresses and should not overlap primary node 150 registers; accesses to secondary node 110 registers may be protected in manner equivalent to the primary registers (see FIG. 3), e.g., a requester should be allowed to access Private Space registers in secondary node 110 only if it can access Private Space registers in primary node 150; the hierarchy may be scalable to handle large number of nodes; and the hierarchy should not unduly burden the processor and most of the implementation cost may be pushed to node controller 114. Equivalent requirements hold true for the LT registers in I/O Hub 118 and I/O Controller Hub 119, and TPM 117 registers.
In some embodiments, the memory indexing described above may be accomplished by reserving certain LT addresses for node controllers 114, such as 0xFED3—8000-0xFED3_FFFF (Node controller Public space) and 0xFED2—8000-0xFED2_FFFF (Node controller Private space), ensuring that these address ranges would never be used by other LT agents in the future, as these addresses may be unused in some hardware configurations. In some embodiments, use of specific ranges, or a portion of the ranges, propagates the hierarchy rules of FIG. 3 automatically without having to change existing protection logic in processors, chipsets, and VMM software. For example, a Private Space address alone may be used to index into Private Space registers in remote node. This may ensure that only the entity with access granted to Private Space can access Private Space Registers in remote node. Additionally, node controller 114 may implement a set of indexing registers that could be used to access TPM 117 registers in secondary nodes 110. Sample register definition and rationale is shown in FIG. 4. An indexing scheme may be used so that a system with large number of nodes can be supported. Each node controller may be programmed with a unique NC_ID that will assist the hardware to properly claim the accesses on the QPI bus.
Since platform specific software merges all CPUs 112 and nodes 110, 150 to function virtually as a single node and masks the existence of the multi-node nature of the physical topology from VMM, it may be important to ensure that each TPM 117 reflects the appropriate data state. To synchronize the information across all nodes 110, 150 ensuring that all TPMs 117 reflect the appropriate state indicating the presence of protected data, write commands may be broadcast to CMD.SECRETS and CMD.NOSECRETS registers to all nodes 110, 150 in such a way that it reaches all ICHs 119, and thus TPMs 117, even the inactive ones.
This can be done in variety of ways. One way may be using node controller 114 hardware to trap the needed write commands to the addresses and broadcast them to each node 110. A microcontroller that is part of node controller 114 may be used to perform the trapping and the broadcast. Another way may be to have node controller 114 generate a System Management Interrupt (SMI) when a write to CMD.SECRETS and CMD.NOSECRETS is observed. The SMI handler that is running on host CPUs, update the state in every ICH 119. The SMI handler can use a scheme like the indexing scheme described above to write ICH 119 in secondary nodes 110. Another way may be to make the VMM aware of the multi-node nature of the platform and issue write to each ICH 119 using the indexing scheme described above.
Similarly, an ESTABLISHED flag may be propagated to all TPMs 117 including the inactive ones using variety of mechanisms. One mechanism may be to use the TPM HASH_START command. HASH_START command involves various write commands to addresses in the fixed range 0xFED4—4020-0xFED4—402F. Node controller 114 in any of nodes 110, 150 can broadcast these write commands in the correct order to all other node controllers 114 in such a way that it reaches all TPMs 117, even the inactive ones. The ACM or VMM may also set ESTABLISHED flag via a dedicated command that TPMs 117 understand.
Some large platforms support hot addition of nodes (hot node), where one or more secondary nodes 110 may be added to a system that is already running a VMM without bringing the system down. In some embodiments, the SECRETS flag in ICH 119 and ESTABLISHED flags in the TPM 117 of the newly added hot node or nodes may be set correctly using the mechanisms described above. Similarly, in some embodiments some large platforms may support removing a node, where one or more secondary nodes 110 may be deleted from a system that is already running a VMM without bringing the system down. The same techniques described here can be used for the proper management of SECRETS and ESTABLISHED flags.
In addition to any previously indicated modification, numerous other variations and alternative arrangements may be devised by those skilled in the art without departing from the spirit and scope of this description, and appended claims are intended to cover such modifications and arrangements. Thus, while the information has been described above with particularity and detail in connection with what is presently deemed to be the most practical and preferred aspects, it will be apparent to those of ordinary skill in the art that numerous modifications, including, but not limited to, form, function, manner of operation and use may be made without departing from the principles and concepts set forth herein. Also, as used herein, examples are meant to be illustrative only and should not be construed to be limiting in any manner.

## Claims

1. A method for security in a multi-CPU computer system, comprising:
providing a plurality of nodes, each node including:
a trusted platform module,
at least one CPU, and
a node controller;

establishing one of the plurality of nodes as a primary node; and
broadcasting a security command from the primary node to the trusted platform module within each of the plurality of nodes, wherein the security command is associated with secret data stored at a secured register address within a first sub-range of secured register addresses, wherein registers within the first sub-range of secured register addresses are protected from improper access by hardware adapted to perform a privilege check, and registers within a second sub-range of secured register addresses can only be accessed: (i) by processor hardware, and (ii) by an Authenticated Code Module (ACM) authorized by the processor hardware, and (iii) by a Virtual Machine Monitor (VMM) authorized by both the processor hardware and the ACM, and (iv) an Operating System (OS) authorized by all of the processor hardware, the ACM, and the VMM.

2. The method of claim 1, wherein the secured register address is in the range of 0xFED4—4020 to 0xFED4—402F.

3. The method of claim 1, wherein the security command is one of HASH_START, or associated with a system managed interrupt event.

4. The method of claim 1, further comprising,
determining if secret information is located in memory associated with any of the plurality of nodes.

5. The method of claim 4, wherein the security command informs each of the plurality of nodes whether secret information is located in the memory associated with any of the plurality of nodes, wherein the secret information is associated with at least one of a SECRETS flag or an ESTABLISHED flag.

6. The method of claim 1, wherein the plurality of nodes are managed by the VMM such that the plurality of nodes are presented as a single PC-AT compatible hardware platform and associated chipsets.

7. The method of claim 1, wherein the node controller in the primary node is configured to access registers associated with each of the plurality of nodes, wherein one of the plurality of nodes is a hot added node, and wherein the primary node is configured to coordinate SECRETS and ESTABLISHED flag between each of the plurality of nodes.