1. Field
The present invention relates generally to computer security and, more specifically, to privacy protection for users of a processing system by ensuring conditional access to identity information.
2. Description
It is often desirable to protect the privacy of a user of a processing system. When the processing system includes one or more devices having unique identifying information stored therein, open access to that information may give rise to a privacy concern. Thus, it is typically desirable to deter or prevent unfettered access to the uniquely identifying information stored in a device by other entities within or outside the processing system.
The features and advantages of the present invention will become apparent from the following detailed description of the present invention in which:
An embodiment of the present invention is a method of providing conditional access to unique identifying information stored in a device of a processing system. For privacy reasons, it is desirable to deter unique identifying information attached to hardware devices from being freely available to other entities within or outside the processing system. Embodiments of the present invention prevent exposure of a device's unique identifying information unless a true need for the information exists on the processing system, and limit the exposure of the information when the need exists. Such embodiments allow for provisioning of one or more cryptographic keys to the processing system during run-time with sufficient constraints to deter a privacy breach in the field.
Reference in the specification to “one embodiment” or “an embodiment” of the present invention means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the appearances of the phrase “in one embodiment” appearing in various places throughout the specification are not necessarily all referring to the same embodiment.
The processing system may also include non-volatile storage 108 on the motherboard 101, for storing instructions and information such as firmware 110 and data 112. In one embodiment, the non-volatile storage comprises an electrically erasable read only memory (EEPROM). The firmware (such as a Basic Input Output System (BIOS), for example) may be used by the processing system to “start up” and initialize the components of the processing system.
In at least one scenario of usage of the processing system, it may be desirable for the device ID to be accessed when provisioning the processing system during system manufacture. That is, initialization of cryptographic processing for the processing system during manufacturing of the processing system may require usage of the device ID, for example. However, it may also be desirable to limit access to the device ID thereafter (i.e., further in the manufacturing process or when the processing system is in the field), since the device ID may be used to uniquely identify the processing system. Embodiments of the present invention provide conditional access to the device ID to promote the protection of privacy for an eventual user of the processing system. Initialization of cryptographic processing for the processing system may include storage of data 112 in an encrypted format in the non-volatile storage for later use.
Since the non-volatile storage 108 requires special writing equipment (such as a EEPROM “burner” for example), writing to the non-volatile storage may be done at time of manufacture of the processing system, and is not typically done by a user of the processing system. Manufacturing system 114 may include non-volatile storage writing system 116, and a device ID database 118. In one embodiment, the manufacturing system may be operated by a processing system manufacturer.
During provisioning of the processing system as part of the manufacturing process, when the device is reset (by either an initial “power up” or a subsequent reset) at the direction of the manufacturer or manufacturing system, the device typically enters a state where the device performs a set of self-checks and synchronizes itself with other components of the processing system. In this state, in one embodiment of the present invention, the device determines whether a platform state is present in the non-volatile storage. In one embodiment, the platform state comprises having specific firmware 110 and/or specific data 112 present in the non-volatile storage. In other embodiments, other indicators of platform state may be used. If the firmware and specific data are already present in the non-volatile storage, then the device does not make the device ID available in any storage that may be read external to the device. If the firmware and data are not yet present, the device allows the device ID to be read by another system component one time only. In one embodiment, this may be accomplished by writing the device ID into a register (not shown) or other volatile storage (not shown) in the processing system. The device ID is then allowed to be extracted from the device exactly once per reset.
In
Once non-volatile storage writing system 116 obtains the device ID, the non-volatile writing system interfaces with device ID database 118 to obtain specific data corresponding to the device ID, and stores this data in an encrypted format as data 112 into non-volatile storage 108 on the processing system. The device ID database 118 may contain entries mapping a device ID to associated data. In one embodiment, the data may comprise a cryptographic key (such as an attestation key, for example) for future use in cryptographic processing on the processing system, and the data may be encrypted with another key that is held in the device so that only the device can decrypt the data. In an embodiment, the size of the data may be larger than the size of the device ID. The encrypted data 112 stored in the non-volatile storage has been bound to the device, thus only the device can decrypt the encrypted data, and a subsequent user of the processing system cannot determine what the device ID is. In one embodiment, the data may comprise an authentication value for specific firmware. The authentication value may be tied to another key in the device, and used by the device to verify the authenticity of the specific firmware. In one embodiment, the data may comprise a cryptographic key that is used to decrypt specific firmware, and this cryptographic key may be further encrypted with another key in the device so that only the device can decrypt that data.
Although a particular sequence of steps is shown in
A secure key facility 306 is responsible for generating device specific firmware and/or data. The secure key facility generates a unique attestation key 312. The secure key facility may use the unique key 104 to encrypt 310 the unique attestation key. The encrypted attestation key may be communicated to a manufacturing system 114 along with the device ID and stored in an entry in the device ID database 118 corresponding to the device ID 106 associated with the device 102. In this way, the encrypted attestation key may be correlated to the device. In another embodiment, the secure key facility builds the device ID database before sending the database to the manufacturing system. In one embodiment, the manufacturing system may be operated by an original equipment manufacturer (OEM) or other entity manufacturing a complete processing system. In another embodiment, the same entity may be manufacturing the device and the completed processing system. In that embodiment, the manufacturing system may be integral with the device manufacturer.
After the device has been distributed to the processing system manufacturer, the processing system manufacturer may desire to manufacture and provision the processing system. That is, the processing system manufacturer prepares the processing system for sale and/or distribution to a user. Using embodiments of the present invention, the device will release the device ID for a single access by the manufacturing system per reset according to the operations described with reference to
When the processing system is powered up or reset, the device may read the encrypted attestation key from non-volatile storage. The device can decrypt the encrypted attestation key because the device can generate its own copy of the store key from the unique key. The device may then use the attestation key for cryptographic processing.
Although the operations may be described herein as a sequential process, some of the operations may in fact be performed in parallel or concurrently. In addition, in some embodiments the order of the operations may be rearranged without departing from the spirit of the invention.
The techniques described herein are not limited to any particular hardware or software configuration; they may find applicability in any computing or processing environment. The techniques may be implemented in hardware, software, or a combination of the two. The techniques may be implemented in programs executing on programmable machines such as mobile or stationary computers, personal digital assistants, set top boxes, cellular telephones and pagers, and other electronic devices, that each include a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and one or more output devices. Program code is applied to the data entered using the input device to perform the functions described and to generate output information. The output information may be applied to one or more output devices. One of ordinary skill in the art may appreciate that the invention can be practiced with various computer system configurations, including multiprocessor systems, minicomputers, mainframe computers, and the like. The invention can also be practiced in distributed computing environments where tasks may be performed by remote processing devices that are linked through a communications network.
Each program may be implemented in a high level procedural or object oriented programming language to communicate with a processing system. However, programs may be implemented in assembly or machine language, if desired. In any case, the language may be compiled or interpreted.
Program instructions may be used to cause a general-purpose or special-purpose processing system that is programmed with the instructions to perform the operations described herein. Alternatively, the operations may be performed by specific hardware components that contain hardwired logic for performing the operations, or by any combination of programmed computer components and custom hardware components. The methods described herein may be provided as a computer program product that may include a machine readable medium having stored thereon instructions that may be used to program a processing system or other electronic device to perform the methods. The term “machine readable medium” used herein shall include any medium that is capable of storing or encoding a sequence of instructions for execution by the machine and that cause the machine to perform any one of the methods described herein. The term “machine readable medium” shall accordingly include, but not be limited to, solid-state memories, optical and magnetic disks, and a carrier wave that encodes a data signal. Furthermore, it is common in the art to speak of software, in one form or another (e.g., program, procedure, process, application, module, logic, and so on) as taking an action or causing a result. Such expressions are merely a shorthand way of stating the execution of the software by a processing system cause the processor to perform an action of produce a result.
While this invention has been described with reference to illustrative embodiments, this description is not intended to be construed in a limiting sense. Various modifications of the illustrative embodiments, as well as other embodiments of the invention, which are apparent to persons skilled in the art to which the invention pertains are deemed to lie within the spirit and scope of the invention.