The present invention provides for trusted side-band communications between components in a computer system, so that use of the system bus may be avoided. Two components may be connected by means other than a bus (e.g., an infrared port, a wire, an unused pin, etc.), whereby these components may communicate without the use of the system bus. The non-bus communication channel may be referred to as “side-band.” The side-band channel may be used to communicate information that might identify the user's hardware (e.g., a public key) or other information that the user may not want to be easily intercepted by the public at large. communication over the side-band channel may also be used to verify that the participants in a communication are within a defined positional relationship to each other.
|
1. A method of communicating between a first component and a second component located inside a computer enclosure, the method comprising:
establishing a first communication connection between the first component and the second component inside the computer enclosure through a bus that is accessible to components other than the first component and the second component;
establishing a light-based communication connection between the first component and the second component inside the computer enclosure in order to ensure a defined positional relationship between the first and second components, wherein the light-based communication connection does not transmit information through the bus and is not accessible to the components other than the first component and the second component; and
transmitting a datum between the first component and the second component using said light-based communication connection.
10. A computer-readable storage medium encoded with computer-executable instructions to perform a method of verifying that a first component is within a first positional relationship to a second component, the first and second components located inside a computer enclosure, the method comprising:
establishing a primary communication channel between the first component and the second component inside the computer enclosure through a bus that is accessible to components other than the first component and the second component;
sending a first datum from the first component to the second component;
receiving a second datum at the first component from the second component, the second datum being communicated from the second component to the first component through a light-based secondary communication channel inside the computer enclosure and without use of the bus, wherein the second datum is not accessible to components other than the first component and the second component;
determining that the second component satisfies the first position relationship based on receipt of the second datum.
5. A system comprising:
a first component and a second component located inside a computer enclosure;
the second component communicatively connected to said first component through a first communication channel that includes a bus inside the computer enclosure, said bus being accessible to components other than said first component and said second component; and
a second communication channel that communicatively connects said first component with said second component using light-based communications inside the computer enclosure, said second communication channel enabling the transmission of a datum in at least one direction between said first component and said second component without exposing said datum to said bus and to the components other than the first component and the second component, and ensuring a defined positional relationship between the first and second components,
wherein the first component comprises an electronic device mounted on a computer motherboard, and the second component comprises a plug-in board that plugs into an I/O slot located on the computer motherboard,
and wherein the second light based communication channel enables transmission of said datum between said first component and said second component only when said second component is plugged into the I/O slot thereby establishing a defined positional orientation between the first and second components.
2. The method of
3. The method of
4. A method of communicating between a first component and a second component as defined in
6. The system of
7. The system of
8. The system of
9. A system as defined in
11. The computer-readable storage medium of
12. The computer-readable storage medium of
13. The computer-readable storage medium of
14. The computer-readable storage medium of
determining, based on said sending act and said receiving act that the second component is engaging in a live communication with the first component over said communication channel and that the second component is not being emulated through a replay attack.
15. A computer readable storage medium as defined in
|
This application claims the benefit of U.S. Provisional Application No. 60/485,499, entitled “Communication of Information via a Trusted Side-Band Channel,” filed on Jul. 8, 2003.
The present invention relates generally to the field of computing, and, in particular, to the communication of information on a side-band channel.
Components within a computer system are typically connected to each other using a bus. A first component communicates data to a second component by writing data to the bus. A second component then receives the data by reading the bus. Conventions exist that allow a given component to determine whether the data on the bus is destined for that component or for a different component. However, the physical architecture of many such busses is such that any component can connect to the bus, and can read the data off the bus—even if the data is not destined for that component. Thus, the bus provides an opportunity for snooping or modifying data, so the bus may not be appropriate for transmitting private data in the clear.
One context in which is it may be undesirable to place data on the bus is where the data could identify the user based on a unique hardware identifier. For reasons of privacy, many users are wary of unique hardware identifiers, and resist using hardware that employs such identifiers. However, some hardware components employ unique public/private key pairs in order to engage in encrypted communication. While identifying the user is not the primary purpose of the key pair, the public key is, in fact, substantially unique to the hardware and could be used for such an identifying purpose. Since the public key must be transmitted to the entity that will use the key to encrypt information, the transmission of the key over a bus provides an opportunity for this potentially identifying information to be divulged, and thus it is desirable to transmit the key by some means other than the bus so that the key cannot easily be intercepted.
Additionally, since the bus can be read and/or written by components that have access to the world outside of the computer of which the bus is a part (e.g., the bus can be written by network cards, that can communicate with components anywhere on the Internet), it is generally not possible to determine whether data on the bus originated from inside the computer or from a remote component. Thus, the fact that a computer is communicating with a component over the bus is generally not a very good basis to conclude that the component is located in physical proximity to the computer, since the component could be located remotely and placing data on the bus through the computer's network interface.
In view of the foregoing, there is a need for a system that overcomes the drawbacks of the prior art.
The present invention provides for side-band communication between different components of a computer system. In one example, a side-band communication channel may be used to transmit a public key, or other information, between components in the computer system without placing the information on the system bus. The side-band communication channel may be embodied, for example, through infrared ports connecting the components, through a wire, through unallocated pins, or through other means that are more particularly described below.
In a preferred embodiment, it is possible for the computer system to communicate with components through the side-band channel without the use of a bus. Thus, a component (e.g., a video adapter card, a disk controller, etc.) may be connected to a computer through the bus, and may also be connected to the computer through a side-band channel that does not pass information through the bus. Thus, the component and the computer have a means to communicate without placing any data on the bus.
In a preferred embodiment, the side-band channel is implemented by such physical means that communication over the side-band channel is only possible if the two participants in the communication are within a defined positional relationship to each other. For example, the side-band channel may be implemented by an infrared device, in which case the two participants in communication must be within a line of sight of each other, and must also be within the distance range of an infrared transmitter. As another example, the side-band channel may be implemented by a wire, in which case communication over the side-band channel requires that the participants are no further apart than the length of the wire. Thus, active communication between a computer and a component over the side-band channel can be used to verify that the component is actually located within physical proximity to the computer; if communication between the component on the computer takes place through the bus, then there is a possibility that the component is actually located remotely, and is merely reading and/or writing data on the bus through the computer's network adapter. (Such remote access to the bus leaves open the possibility that a component that appears to be communicating through the bus has been “virtualized”—i.e., that the component is not really present, but rather that the component is remotely located (or being remotely emulated) and is merely “behaving” as a real, physically-present component would behave).
Other features of the invention are described below.
The foregoing summary, as well as the following detailed description of preferred embodiments, is better understood when read in conjunction with the appended drawings. For the purpose of illustrating the invention, there is shown in the drawings example constructions of the invention; however, the invention is not limited to the specific methods and instrumentalities disclosed. In the drawings:
Overview
A side-band channel may be used to pass information between electronic components without the use of the system bus, and thus without the risk of interception by other components that is inherent in the use of a bus. Additionally, since the side-band channel may enable communication only when two components satisfy a defined positional relationship to each other, communication over the side-band channel may be used to verify a physical positional relationship between the components—thereby ensuring that the participants in the communication are physically located within a defined relationship to each other, and that neither participant has been “virtualized” (e.g., “virtualized” in the sense of participating over a remote link by placing data on the bus through a network interface).
Exemplary Computing Arrangement
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, embedded systems, distributed computing environments that include any of the above systems or devices, and the like.
The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network or other data transmission medium. In a distributed computing environment, program modules and other data may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 110 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CDROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 110. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
The computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110, although only a memory storage device 181 has been illustrated in
When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
Communication Between Components in a Computer System
As discussed above in connection with
It will be observed in
In order for components to engage in private communication, they may establish a side-band communication channel 210, which allows data to travel between components without that data being placed on the bus. Specific techniques for establishing a side-band channel are discussed below in connection with
Example Scenario in which a Side-Band Channel may be Used
In order to ensure that information sent from trusted component 304 to graphics processor 302 cannot be intercepted, trusted component 304 encrypts the information prior to sending it. The encrypted information is then decrypted at graphics processor 302. In the example of
It will be appreciated that, if every graphics processor 302 had the same key pair 306, then information encrypted with public key 308 would be vulnerable to a variety of attacks. In particular, if someone were to discover private key 310, then this key could be made widely available and no instance of graphics processor 310 would ever be able to rely on key pair 306 for secure communication. Thus, part of the security model for graphics processor 302 is that each instance of graphics processor 302 has its own key pair 306. However, since this fact implies that each user's hardware can be identified by a particular number (i.e., the public key 308 stored in that user's instance of graphics processor 302), many users feel this number constitutes an “electronic fingerprint” for the user himself and, for privacy reasons, are wary of allowing such a number to be divulged. As discussed above in connection with
Example Mechanisms for Implementing a Side-Band Channel
Example Trusted Component
As noted above, the invention provides a mechanism for communicating certain information via a side-band channel. As also noted above, one context in which such communication may be used is where a trusted component needs to acquire a key in order to encrypt information destined for a graphics processor. While the invention is not limited to any particular type of trusted component, the following is a description of a type of trusted component in which the mechanisms of the present invention may be useful.
In one example, two operating systems are run together on a single computer. The first operating system provides an ordinary, open computing environment, and the second operating system provides a “high-assurance” computing environment. The high-assurance computing environment is associated with a specification as to its functionality, and provides a very high level of assurance that it will function according to its specification—even in the face of a deliberate attack. Thus, the high-assurance environment can be trusted with valuable or sensitive information—e.g., financial records, copyrighted creative material, etc. Such a high-assurance environment may allow only certain trustworthy applications to execute within the high-assurance environment. For example, the trusted environment may allow a trusted rendering application to execute within the trusted environment, thereby giving the trusted rendering application access to certain resources of the trusted environment (e.g., cryptographic keys stored in isolated memory) that may be needed to perform certain functions (e.g., decrypting copyrighted encrypted video). The trusted rendering application may then provide the rendered video to the graphics processor, and may provide this rendered video in a way that resists interception (e.g., by encrypting the video). Thus, a trusted rendering application, or a driver through which the rendering application accesses the graphics processor, are examples of trusted component 304. It should be appreciated, however, that this example is not exhaustive, and there are numerous examples of a trusted component in accordance with the invention.
Additionally, it should be noted that a graphics processor is not the only type of component that may have a public key (or other information) to be communicated by a side-band channel. A Network Interface Card (NIC) is another example of such a component. This list of examples is non-exhaustive, and it will be appreciated that there are other examples.
Example Use of a Side-Band Channel
As discussed above, a side-band channel can be implemented by various means, such as those described in
As another example, the side-band channel may be used for communication with a dock.
Additionally, the positional relationship of both a component and a dock may be verified—e.g., dock 1102 may use communication over side-band channel 1110 to prove to computer 110 that dock 1102 is located in proximity to computer 110, and component 1104 may use communication over side-band channel 1112 to prove to dock 1102 that it is located in proximity to dock 1102. As long as computer 110 trusts dock 1102 to verify the positional relationship of components that are plugged into dock 1102, and as long as computer 110 has verified that dock 1102 satisfies a particular positional relationship, then computer 110 can trust that component 1104 is within an acceptable positional relationship by virtue of being plugged into dock 1102.
It is noted that the foregoing examples have been provided merely for the purpose of explanation and are in no way to be construed as limiting of the present invention. While the invention has been described with reference to various embodiments, it is understood that the words which have been used herein are words of description and illustration, rather than words of limitations. Further, although the invention has been described herein with reference to particular means, materials and embodiments, the invention is not intended to be limited to the particulars disclosed herein; rather, the invention extends to all functionally equivalent structures, methods and uses, such as are within the scope of the appended claims. Those skilled in the art, having the benefit of the teachings of this specification, may effect numerous modifications thereto and changes may be made without departing from the scope and spirit of the invention in its aspects.
Peinado, Marcus, England, Paul, Willman, Bryan Mark, Paff, John E., Kurien, Thekkthalackal Varugis, Thornton, Andrew John
Patent | Priority | Assignee | Title |
10062241, | Feb 19 2010 | Diebold Nixdorf Systems GmbH | Method and process for PIN entry in a consistent software stack in cash machines |
9596219, | Apr 19 2010 | Amaani, LLC | Method of transmission of encrypted documents |
Patent | Priority | Assignee | Title |
5311596, | Aug 31 1992 | PARADYNE CORPORATION FORMERLY KNOWN AS AT&T PARADYNE CORPORATION | Continuous authentication using an in-band or out-of-band side channel |
5396602, | May 28 1993 | International Business Machines Corp | Arbitration logic for multiple bus computer system |
5450551, | May 28 1993 | International Business Machines Corp | System direct memory access (DMA) support logic for PCI based computer system |
5675740, | Aug 14 1992 | International Business Machines Corp. | System for sending messages in a session using a mixture of protocols and preventing usage of a protocol when the message failing to meet a set of criteria |
5930368, | Aug 25 1994 | International Business Machines Corporation | Docking method for establishing secure wireless connection between computer devices |
6032238, | Feb 06 1998 | GOOGLE LLC | Overlapped DMA line transfers |
6182168, | Nov 10 1997 | International Business Machines Corporation | Programmable sideband port for generating sideband signal |
7065597, | Jun 28 2002 | Intel Corporation | Method and apparatus for in-band signaling of runtime general purpose events |
7081806, | Aug 03 2001 | Fujitsu Limited | Key information issuing device, wireless operation device, and program |
20040184615, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jan 15 2004 | PAFF, JOHN E | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 014906 | /0597 | |
Jan 15 2004 | PEINADO, MARCUS | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 014906 | /0597 | |
Jan 15 2004 | KURIEN, THEKKTHALACKAL VARUGIS | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 014906 | /0597 | |
Jan 15 2004 | WILLMAN, BRYAN MARK | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 014906 | /0597 | |
Jan 15 2004 | ENGLAND, PAUL | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 014906 | /0597 | |
Jan 15 2004 | THORNTON, ANDREW JOHN | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 014906 | /0597 | |
Jan 16 2004 | Microsoft Corporation | (assignment on the face of the patent) | / | |||
Oct 14 2014 | Microsoft Corporation | Microsoft Technology Licensing, LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 034766 | /0001 |
Date | Maintenance Fee Events |
Oct 01 2012 | REM: Maintenance Fee Reminder Mailed. |
Oct 23 2012 | ASPN: Payor Number Assigned. |
Oct 23 2012 | RMPN: Payer Number De-assigned. |
Feb 17 2013 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Feb 17 2012 | 4 years fee payment window open |
Aug 17 2012 | 6 months grace period start (w surcharge) |
Feb 17 2013 | patent expiry (for year 4) |
Feb 17 2015 | 2 years to revive unintentionally abandoned end. (for year 4) |
Feb 17 2016 | 8 years fee payment window open |
Aug 17 2016 | 6 months grace period start (w surcharge) |
Feb 17 2017 | patent expiry (for year 8) |
Feb 17 2019 | 2 years to revive unintentionally abandoned end. (for year 8) |
Feb 17 2020 | 12 years fee payment window open |
Aug 17 2020 | 6 months grace period start (w surcharge) |
Feb 17 2021 | patent expiry (for year 12) |
Feb 17 2023 | 2 years to revive unintentionally abandoned end. (for year 12) |