In closed computing systems such as cellular phones, set-top boxes, videogame consoles, MP3 players, home theater equipment, and the like, the subcomponents used to create the computing system tend to go through various revisions. For example, a first batch of cellular phones produced by a company may include cellular transceivers manufactured by a specific subcontractor. At some point later, the company may switch subcontractors and place their transceivers in the next version of the cellular phone. In other situations, the company may discover that certain subcomponents are vulnerable to certain types of exploits, e.g., a user may discover that by placing a piece of felt cloth on a certain portion of a device's main board they can circumvent a security measure, or a user may discover that by holding down the shift key on a keyboard while playing a DVD or CD prevents a DRM program from running. While security flaws in software can be patched, it is more difficult to fix security flaws in hardware since doing so would require that the devices be recalled or, new parts be shipped to the owners.
In the case of hardware, instead of recalling all the devices that have susceptible subcomponents, the company could stop using the subcomponents and only sell devices with new subcomponents. In this situation however, the flawed subcomponents may still be available on the secondary market, and an owner could purchase a new device and replace the new subcomponents with the susceptible ones. This is compounded by the fact that newer versions of the devices may introduce other subcomponents, features, or services, that rely on the security offered by the new subcomponents. If an attacker is able to place a susceptible subcomponent in a device, they may be able to obtain services that they are not authorized to receive.
In an example embodiment of the present disclosure, a computer readable storage medium is provided that includes, but is not limited to, instructions for determining whether a subcomponent currently attached to a device is listed in a subcomponent list that includes identification information for a subcomponent attached to the device during a manufacturing process; and instructions for performing an action in accordance with a security policy in response to the determination. In addition to the foregoing, other aspects are described in the claims, drawings, and text forming a part of the present disclosure.
In an example embodiment of the present disclosure, a closed computing device is provided that includes, but is not limited to, at least one subcomponent operatively coupled to a main board of the device; and a protected memory location integrated with the main board that includes a subcomponent list and an encrypted hash of information in the subcomponent list, wherein the information in the subcomponent list includes identification information for a subcomponent attached to the main board during a manufacturing process. In addition to the foregoing, other aspects are described in the claims, drawings, and text forming a part of the present disclosure.
In an example embodiment of the present disclosure, a method is provided for enabling the enforcement of a hardware based policy that includes, but is not limited to, receiving, from a device, information related to a plurality of subcomponents in the device and a device identifier associated with the device; generating a hash of the information related to the plurality of subcomponents in the device and the device identifier associated with the device; encrypting the hash using a private encryption key; and transmitting, to the device, the encrypted hash. In addition to the foregoing, other aspects are described in the claims, drawings, and text forming a part of the present disclosure.
It can be appreciated by one of skill in the art that one or more various aspects of the disclosure may include but are not limited to circuitry and/or programming for effecting the herein-referenced techniques; the circuitry and/or programming can be virtually any combination of hardware, software, and/or firmware configured to effect the herein-referenced techniques depending upon the design choices of the system designer.
The foregoing is a summary and thus contains, by necessity, simplifications, generalizations and omissions of detail. Those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting.
Numerous embodiments of the present disclosure may execute on a computer.
As shown in
A number of program modules may be stored on the hard disk, magnetic disk 29, optical disk 31, ROM 24 or RAM 25, including an operating system 35, one or more application programs 36, other program modules 37 and program data 38. A user may enter commands and information into the personal computer 20 through input devices such as a keyboard 40 and pointing device 42. Other input devices (not shown) may include a microphone, joystick, game pad, satellite disk, scanner or the like. These and other input devices are often connected to the processing unit 21 through a serial port interface 46 that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, game port or universal serial bus (USB). A monitor 47 or other type of display device is also connected to the system bus 23 via an interface, such as a video adapter 48. In addition to the monitor 47, personal computers typically include other peripheral output devices (not shown), such as speakers and printers. The exemplary system of
The personal computer 20 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 49. The remote computer 49 may be another 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 personal computer 20, although only a memory storage device 50 has been illustrated in
When used in a LAN networking environment, the personal computer 20 is connected to the LAN 51 through a network interface or adapter 53. When used in a WAN networking environment, the personal computer 20 typically includes a modem 54 or other means for establishing communications over the wide area network 52, such as the Internet. The modem 54, which may be internal or external, is connected to the system bus 23 via the serial port interface 46. In a networked environment, program modules depicted relative to the personal computer 20, or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used. Moreover, while it is envisioned that numerous embodiments of the present disclosure are particularly well-suited for computerized systems, nothing in this document is intended to limit the disclosure to such embodiments.
Referring now to
As illustrated by
As briefly described above, the manufacturing facility 202 in some instances can be coupled to a service provider 250 that can offer one or more services identified as services 230. These services 230 can in some instances be cellular phone services, data plans operable to allow a device to connect to a network such as the Internet, music downloads, movie downloads, ring tone downloads, picture downloads, videogame downloads, online videogame playing, premium channels, etc. In a specific example where the service provider 250 is a cellular phone carrier, the service provider 250 may offer services such as digital voice plans, packet based data plans, or text message plans. In another specific example where the service provider 250 is a media distributing entity, the services 230 may include online videogame services, movie download services, music download services, or any other multi-media services. While in some embodiments it is contemplated that the service provider 250 may control the manufacturing facility 202, and/or one or more of services 230, in at least one example embodiment the manufacturing facility 202 can be associated with the service provider 250.
Continuing with the description of
In addition to attaching subcomponents 201-1 through 201-N to the main board 205, the manufacturing facility 202 can integrate zero or more additional components with the main board 205 in a more permanent manner than subcomponents 201-1 through 201-N. For example, and as shown by
In some instances of the present disclosure, the protected memory location 210 can be effected by a region of memory such as read only memory, random access memory, flash memory, EPROM, EEPROM, or the like. In some example embodiments, the protected memory 210 can be an area of memory that is reserved by the device 200 to store sensitive information, and thus, may not be normally accessible to the user during the operation of device 200. In a more specific example, the protected memory region 210 can be reserved and may not be accessible to user space processes or threads. Protected memory 210 can in some embodiments of the present disclosure be considered protected because a manufacturing facility 202 has manufactured the device 200 so that the contents will be kept hidden from the user during a normal operating procedure. The service provider 250 may want this information to be kept hidden because, for example, the contents of the protected memory location 210 can be used to differentiate between devices connected to the ecosystem. For example, each device can include unique information in order for them to be distinguished by the service provider 250. If this information was easily discovered, e.g., if it was in plain text in a file or written on the side of the device 200, an attacker may be able to modify the information and assume the identity of a different device, e.g., a device that has access to more, or other services. In some embodiments, this information can include the device ID of the device 200, e.g., an identifier that the device uses when connecting to services 230 such as those offered by service provider 250. In another embodiments, one or more public or private keys used to unlock services 230 such as those offered by the service provider 250 can be stored in a protected memory location 210, e.g., the protected memory 210 can include information that would permit the device 200 to connect and interact with services 230 that the service provider 250 can charge fees for.
Continuing with the description of
Continuing with the description of
Once the subcomponent list 207 is saved in a database 220, the manufacturing facility 202 has multiple options as illustrated by the dashed lines of
As indicated by the dashed lines, an encryption service 214 in some instances can be used to protect the information in the subcomponent list 207 by either encrypting the subcomponent list 207, or a hash of the subcomponent list 207. For example, a computer system similar to computer 20 described above with respect to
In some embodiments an encryption service 214 can include a cryptographic function that can be used to encrypt the subcomponent list 207 and then the encrypted subcomponent list can be transmitted to the device 200. In this example, the encryption service 214 can place the device specific number 206 in the subcomponent list 207 and encrypt it along with the subcomponent information. This subcomponent list 207 can then be transmitted to the device 200 where it can be saved in protected memory 210. In this example, the device 200 can be configured to include a public decryption key and a cryptographic algorithm that can be used by the CPU 204 to decrypt the subcomponent list 207 if the information is desired. The code that effects the decryption process can be configured to be processed by the CPU 204 and the device specific number 206 stored in the subcomponent list 207 can be compared to the device specific number 206 stored in the CPU 204 for example. If the device specific number 206 matches the one stored in the device 200, then the CPU 204 could be configured to determine that the subcomponent list 207 has not been tampered with. By encrypting the subcomponent list 207 during the manufacturing process, the service provider 250 guarantees that there is only a single place and single time where an authentic subcomponent list can be made, and by including the device specific number 206 in the subcomponent list 207 a strong tie is created between the subcomponent list 207 and the device 200.
In embodiments where the subcomponent list 207 is stored in protected memory 210, the manufacturing facility 202 can in some embodiments use a device specific number 206 stored in the CPU 204 to encrypt the contents of the protected memory 210. For example, when device 200 is manufactured, a computer program executing on a computer maintained by the manufacturing facility 202 can select a number from a device specific number database and store it in the device 200. In this example embodiment, a cryptographic key generating function can be used to create a device specific number 206. In these embodiments, the device specific number 206 could be a symmetric key, e.g., a key that can be used to encrypt and decrypt information, or it could be an public decryption key of a public/private key pair. In the example embodiment where the device specific number is a public decryption key, the protected memory location 210 could be decrypted, however the device 200 could be configured to not include any means for encrypting the protected memory location 210. In this example it would be difficult for an attacker to decrypt the contents of the protected memory and re-encrypt it. As illustrated by
As illustrated by
Referring now to
Continuing with the description of
Referring now to
As illustrated by operation 402. In some example embodiments when the operational process 400 is initiated, the security service 352 can obtain a subcomponent list 207 that is associated with the device 200 from a database. For example, each device may include a device identifier that is transmitted to the service provider 250 in some, or all of the signals sent from the device 200. In this example, the security service 352 could use the device identifier of the device 200 to find the associated subcomponent list 207. In one example embodiment, the service provider 250 can then transmit one or more packets of information indicative of a subcomponent list 207 encrypted with a private encryption key, and a request directing the device 200 to determine whether the current subcomponents match the subcomponents in the received subcomponent list 207. A network adaptor of the device 200 can receive the request, and the operating system 340 can load the code effecting the security service 345. The security service 345 can receive the encrypted subcomponent list 207 and run a decryption algorithm using a public decryption key to decrypt the received subcomponent list 207.
In another embodiment, the service provider 250 could transmit a request to the device 200 for information about the subcomponents 201-1 through 201-N currently attached to the main board 205 of the device 200. The device 200 could receive the request and a process or thread of the security service 345 of the device 200 can be configured to identify the subcomponents 201-1 through 201-N currently connected to the main board 205 of the device 200. As described above and referring to operation 404, the subcomponents 201-1 through 201-N can transmit their information back to the security service 345 such as model numbers, version numbers of hardware, version numbers of the firmware, serial numbers, the names of the subcontractors that manufactured the subcomponents 201-1-201-N, etc., placed in a smart chip, or read only memory of the subcomponents 201-1 through 201-N. The security service 345 can use the Ethernet adaptor to transmit the information back to the service provider 250.
Continuing with the description of
For example, in some instances the security service 352 can take an action in accordance with a policy. The action can be as flexible as the service provider 250 or manufacturing facility 202 specifies. In some instances, the action can involve ending the process without taking any action. More specifically, in some embodiments of the present disclosure, the security service 352 can allow the device 200 to operate without interrupting any functions. A service provider 250 may be interested in using this type of configuration for devices that were manufactured before a predetermined date or any other business related reasons. In another example embodiment, the security policy could direct the security service 352 to disable the device 200 if a slight change is detected, e.g., change in serial number, or change to the firmware version number.
Various intermediate levels of security can also be encoded in a security policy and can be changed by the service provider 250 throughout the life cycle of the device 200. For example, in one embodiment of the present disclosure, the service provider 250 can identify subcomponents that are susceptible to certain exploits and maintain a database of such information. The service provider 250 can create a list of susceptible subcomponents and the security service 352 can be configured to check the subcomponents in subcomponent list 207 associated with the device 200 to determine whether any of the susceptible subcomponents were placed in the device 200 during the manufacturing process. If any were, the service provider 250 can transmit a signal to the device 200 directing it to refuse to run certain code that is related to the exploit. For example, if the exploit was related to recording high definition content on a subcomponent such as an optical disk drive, the code that runs the high definition media player on the device 200 can be disabled by the service provider 250. In another instance, the security service 352 can be configured to deny connections to any of services 230 that offer a service that can be exploited by the susceptible subcomponent, e.g., the security service 352 could be configured to deny connections to any device 200 that includes an optical disk drive that is susceptible to an exploit.
In another example, the service provider 250 can include a list of permissive upgrades. The security service 352 can receive information identifying the subcomponents 201-1 through 201-N that are currently connected to the main board 205 of the device 200. If the subcomponents are different, the security service 352 can check to see if any of the subcomponents added after the manufacturing process are listed on the list of permissive upgrades. If the subcomponents are on the list, then the security service 352 can be configured to allow the device 200 to operate. In some example embodiments the permissive upgrade list can include newly manufactured components that are not susceptible to known exploits. The information in the upgrade list can include serial numbers of permissive subcomponents, hardware version numbers of permissive subcomponents, firmware version numbers of permissive subcomponents, acceptable manufacturers of permissive subcomponents, etc.
In some embodiments of the present disclosure, the security policies can include information identifying when a difference between the subcomponent list 207 and the subcomponents installed on the main board 205 is acceptable. For example, the security policy can direct a security service 352 to enforce a strict policy until a warranty period for the device 200 elapses. In this example, if the user modifies the subcomponents on the device 200 before the warranty period elapses the device 200, the service provider 250 can be configured to send a signal to the device 200 that can direct it to shut down, or perform an action described above. In this example, after the warranty period ends, the security service 352 can be configured to allow the user to modify any of the subcomponents, or allow them to modify the subcomponents in accordance with a list of permissive upgrades.
Referring now to
In an example embodiment, certain user input could trigger the security service 345 to determine whether any of the subcomponents were modified such as if the user attempts to connect device 200 to services 230 offered by service provider 250. In this example, the service provider 250 may want to guarantee that every device 200 that connects to services 230 is checked to see if their subcomponents 201-1 through 201-N have been modified before they are allowed to access the services 230. In yet another example embodiment, the operational procedure 500 can be initiated at predetermined intervals by the device 200. For example, a device 200 can include a clock and the operating system 340 can be configured to call the security service 345 every hour, once a day, etc.
Continuing with the description of the operational procedure of
In an alternative embodiment, the service provider 250 can transmit a copy of the subcomponent list 207 that includes a hash of the information in the subcomponent list encrypted with the private encryption key held by the manufacturing facility 202 for example. An Ethernet adaptor of the device 200 can receive the request, and the operating system 340 can load the code effecting the security service 345. The security service 345 can receive the encrypted hash of the subcomponent list 207 and run a decryption algorithm using a public decryption key to decrypt it.
In yet another alternative embodiment, a copy of the subcomponent list 207 can be stored in the protected memory location 210 during the manufacturing process. In this example embodiment, when predetermined criteria occur the operating system 340 can be configured to call the security service 345 by loading the code effecting the security service 345 into memory. The security service 345 can access the protected memory 210 and obtain a copy of the subcomponent list 207.
In some example embodiments prior to obtaining a subcomponent list 207 from protected memory 210 the security service 345 can be configured to decrypt the contents of the protected memory location 210. For example, in some embodiments the protected memory location 210 can be over encrypted with a device specific number 206. In these example embodiments, the code that effects the security service 345 can be processed by the CPU 204 and the device specific number 207 can be used it to decrypt the protected memory location 210. In one example, the device specific number 207 can be a public decryption key and the protected memory location 210 could have previously been asymmetrically encrypted with a private encryption key that could be either held by the manufacturing facility 202, or destroyed. The security service 345 can be configured to check to see if the protected memory location 210 is encrypted, and if it was the CPU 204 can be configured to decrypt it otherwise the security service 345 can determine that the protected memory location 210 has been modified and refuse to operate. In other embodiments of the present disclosure, the device specific number 207 can be a symmetric encryption key. In this example embodiment, the code that effects the security service 345 can be processed by the CPU 204 and the CPU 204 can use the symmetric key to decrypt the protected memory location 210.
Continuing with the description of
In an example embodiment, one in which the subcomponent list 207 was asymmetrically encrypted and stored in protected memory 210, the security service 345 can be configured to determine if the subcomponent list 207 had been modified. In this example, the security service 345 can be configured to use a decryption algorithm and a public decryption key to decrypt the subcomponent list 207. In this example, the subcomponent list 207 could have been configured to include the device specific number 206. The security service 345 can be configured to compare the device specific number 206 stored in the subcomponent list 207 to the device specific number 206 stored on the main board 205 or CPU 204. In the instance that they match, the security service 345 can be configured to determine that the subcomponent list 207 has not been modified. In the instance that the device specific numbers do not match, the security service 345 can perform an action that will be described in more detail below.
In yet another embodiment, a subcomponent list 207 that includes a device specific number 206, a hash of a subcomponent list 207, or a hash of the subcomponent list 207 that includes a device specific number 206 can be encrypted by a service provider 250 with a public encryption key and transmitted to device 200 via a network such as the Internet. An Ethernet adaptor can receive the encrypted subcomponent list 207 and the security service 345 can use a private decryption key and a decryption algorithm to decrypt the received subcomponent list 207. In some embodiments where the information received from the service provider 250 includes the device specific number 206, the security service 345 can be configured to compare the current device specific number 206 to the one received from the service provider 250. In the instance that the device specific numbers do not match, the security service 345 can perform an action that will be described in more detail below.
Continuing with the description of
Continuing with the description of
After the subcomponents 201-1 through 201-N have replied with their identification information, and as shown by operation 408 the security service 345 can be configured to use a process operable to compare the identification information from the subcomponents currently attached to the main board 205 to the identification information in the subcomponent list 207. If there is a discrepancy between the information the current subcomponents have returned and the information in the subcomponent list 207, e.g., some of the information received from the currently attached subcomponents is different than information in the subcomponent list 207, then as shown by operation 410 a security service 345 can take be configured to perform a predetermined action.
For example, in some instances the security service 345 can take a predetermined action in accordance with a policy it has received from the manufacturing facility 202 when it was created, or a policy received from a service provider 250. The action can be as flexible as the service provider 250 or manufacturing facility 202 specifies. In some instances, the predetermined action can involve ending the process without taking any action. More specifically, in some embodiments of the present disclosure, the security service 345 can allow the device 200 to operate without interrupting any functions. A service provider 250 may be interested in using this type of configuration for devices that were manufactured before a predetermined date or any other business related reasons. In another example embodiment, the security policy could direct the security service 345 to disable the device 200 if a slight change is detected, e.g., change in serial number, or change to the firmware version number.
Various intermediate levels of security can also be encoded in a security policy and can be changed by the service provider 250 through out the life cycle of the device 200. For example, in one embodiment of the present disclosure, the service provider 250 can identify subcomponents that are susceptible to certain exploits and maintain a database of such information. The service provider 250 can create a list of susceptible subcomponents and transmit the list to the device 200. The security service 345 can be configured to check the subcomponent list 207 stored in the device 200 to determine whether any of the susceptible subcomponents were placed in the device 200 during the manufacturing process. If any were, the device 200 can refuse to run certain code on the device that is related to the exploit. For example, if the exploit was related to recording high definition content on a subcomponent such as an optical disk drive, the code that runs the high definition media player on the device 200 can be disabled. In another instance, the security service 345 can be configured to not connect to any services 230 that offer a service that can be exploited by the susceptible subcomponent, e.g., in this example a service that offers high definition content would not allow the device 200 to connect with an optical disk drive that is susceptible to an exploit.
In another example, the service provider 250 can transmit a list of permissive upgrades to the device 200. The security service 345 can identify the subcomponents 200-1 through 201-N that are currently connected to the main board 205. If the subcompacts are different, the security policy can check to see if any of the subcomponents added after manufacturing are listed on the list of permissive upgrades. If the subcomponents are on the list, then the security service 345 can be configured to allow the device 200 to operate. In some example embodiments the permissive upgrade list can include newly manufactured components that are not susceptible to known exploits. The information in the upgrade list can include serial numbers of permissive subcomponents, hardware version numbers of permissive subcomponents, firmware version numbers of permissive subcomponents, acceptable manufacturers of permissive subcomponents, etc.
In some embodiments of the present disclosure, the security policies can include information identifying when a difference between the subcomponent list 207 and the subcomponents installed on the main board 205 is acceptable. For example, the security policy can direct a security service 345 to enforce a strict policy until a warranty period for the device 200 elapses. In this example, if the user modifies the subcomponents on the device 200 before the warranty period elapses the device 200 will shut down, or perform an action described above. In this example, after the warranty period ends, the security service 345 can be configured to allow the user to modify any of the subcomponents, or allow them to modify the subcomponents in accordance with a list of permissive upgrades.
The foregoing detailed description has set forth various embodiments of the systems and/or processes via examples and/or operational diagrams. Insofar as such block diagrams, and/or examples contain one or more functions and/or operations, it will be understood by those within the art that each function and/or operation within such block diagrams, or examples can be implemented, individually and/or collectively, by a wide range of hardware, software, firmware, or virtually any combination thereof.
While particular aspects of the present subject matter described herein have been shown and described, it will be apparent to those skilled in the art that, based upon the teachings herein, changes and modifications may be made without departing from the subject matter described herein and its broader aspects and, therefore, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of the subject matter described herein.
This application claims priority to Application No. 60/984,693 filed Nov. 1, 2007 (Attorney docket number MSFT-6009), the contents of which are herein incorporated by reference in their entirety
Number | Date | Country | |
---|---|---|---|
60984693 | Nov 2007 | US |