Some electronic devices are secure, such that, among other features, they include data therein that should not be accessible to anyone without proper authority. Some secure electronic devices provide further security such that only an authorized code may be loaded therein for the device to execute. In some of these secure electronic devices; such as in some set-top-boxes, for example, the data is secured by way of cryptographic means, wherein once the cryptographic data is loaded into the electronic device, the electronic device may be fully tested with a Manufacturing Test Code (MTC). The MTC tests the hardware features of the electronic device. Once tested, the MTC may be disabled or removed from the unit and a secure boot may be turned on permanently before shipping out of the factory. The secure boot should ensure that only an authorized production code runs on the unit.
However, downstream quality assurance testing may sometimes require that some product samples be randomly selected from the units that are ready to ship to customers. Each of these randomly selected sample units may have the MTC re-executed thereon to test and verify the product's quality. This is not a problem for non-secure products. However, for secure products, such as those having a secure boot enabled and having the MTC disabled (or entirely removed), new MTC may not be authorized to be loaded or executed thereon. If the security of a tested electronic device were compromised to enable new MTC to be executed thereon, the compromised security of the device, when shipped to a customer, may enable a subsequent attacker to break the secure boot and run unauthorized code on the unit.
The accompanying drawings, which are incorporated in and form a part of the specification, illustrate example embodiments of the invention and, together with the description serve to explain the principles of the invention. In the drawings:
In some secure devices, non-limiting examples of which include set-top-boxes, before cryptographic data is loaded into the device and the unit is tested, a secure initialization program code is installed prior to shipment from the factory. Secure initialization program codes are secure because they include authorized code, which is provided by an authorized provider, and which is externally inaccessible. A secure initialization program code enables execution of an authorized program code on the device and rejects unauthorized program codes. The MTC, which is used to load cryptographic data and test the device's hardware features, is disabled or removed prior to packaging and shipment from the factory.
Following a manufacture test and removal, or disabling of MTC, devices passing testing are configured with serial numbers in order to uniquely identify each unit. For inventory and tracking purposes, customers sometimes require received devices to have sequential serial numbers. Following application of serial numbers, a device is processed and packaged for delivery to customers. Packaging often includes applying shrink wrap and other types of material for enclosing the device. Device testing often requires re-testing a random sample of a number of devices which are deemed ready for shipment. A selected device will be removed from the packaging for re-testing, thus destroying any security associated with the packaging. However, for a secure device, which has had the MTC removed, the initialization program code rejects attempts to perform re-testing as the MTC is not available for performing re-testing. Furthermore, due to the customer's sequential serial number requirement, the device removed in order to perform re-testing needs to be repackaged and delivered to the customer with its originally assigned serial number. Therefore, the configuration of the re-tested device needs to be returned to its condition prior to selection for re-testing. For example, the condition prior to re-testing may require the MTC to be removed or disabled, which then needs to be reestablished following re-testing.
System 100 includes manufactured device 102, a testing portion 104 and an MTC providing portion 106. Manufactured device 102 includes a device booting portion 108, an MTC loading portion 110, a verifying portion 112 and an executing portion 114. In this example, each of device booting portion 108, MTC loading portion 110, verifying portion 112 and executing portion 114 are distinct devices. However, in other embodiments, at least two of device booting portion 108, MTC loading portion 110, verifying portion 112 and executing portion 114 may be combined as a unitary device. Further, in some embodiments, at least one of device booting portion 108, MTC loading portion 110, verifying portion 112 and executing portion 114 may be implemented using non-transient, tangible computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such non-transient, tangible computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer. Non-limiting examples of non-transient, tangible computer-readable media include physical storage and/or memory media such as RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. When information is transferred or provided over a network or another communications connection (hardwired and/or wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a non-transient, tangible computer-readable media computer-medium. Thus, any such connection is properly termed a non-transient, tangible computer-readable medium. Combinations of the above should also be included within the scope of non-transient, tangible computer-readable media.
MTC providing portion 106 is arranged to communicate with MTC loading portion 110 via a communication channel 116.
Testing portion 104 is arranged to communicate with device booting portion 108 via a communication channel 118. Testing portion 104 is additionally arranged to communicate with MTC loading portion 110 via a communication channel 120. Testing portion 104 is further arranged to communicate with executing portion 114 via a communication channel 122.
Executing portion 114 is arranged to communicate with device booting portion 108 via a communication channel 130, with MTC loading portion 110 via a communication channel 126 and with verifying portion 112 via a communication channel 128. Verifying portion 112 is arranged to communicate with MTC loading portion 110 via a communication channel 124.
Device booting portion 108 is operable to provide booting instructions for booting manufactured device 102. As an example, device booting portion 108 may provide configuration information. MTC loading portion 110 is operable to provide MTC for performing manufacturing tests to verify whether the manufactured device functions correctly. Verifying portion 112 is operable to verify the authenticity of the MTC. This authenticity verification may be performed by any known method, a non-limiting example of which includes those using digital certificates, public key exchanges and private key exchanges. Executing portion 114 is operable to execute the booting instructions, the MTC and to operate in the manner in which manufactured device 102 is intended to operate, e.g., as a set-top-box in the case where manufactured device 102 is a set-top-box.
A process for the operation of the example system described with reference to
As shown in
Returning to
Returning to
Returning to
Returning to
Returning to
Returning to
Devices not removed from packaging and not tested are distributed to customers. Operation of untested devices and re-tested/reconfigured devices operation will be described with reference to
This may be case wherein either MTC loading portion 110 is removed, or the MTC is removed from MTC loading portion 110, following testing as described with reference to
As shown in
Returning to
Returning to
For the system as described with reference to
Systems and methods are discussed herein for performing secure manufacture tests associated with the MTC. A local server embodiment and a flash drive embodiment will be described for implementing secure manufacture test. The systems and methods presented prevent unauthorized entities from loading and executing unauthorized programming code.
In order to provide manufacture testing for secure devices, memory and storage devices are used for communication with secure device to be tested for retrieval of the MTC. A local server or a flash drive may provide the MTC.
For an embodiment using a local server, a local server is configured in the factory's local private network with a pre-configured Internet Protocol (IP) address or domain name, such that the secure device to be tested is networked for access with the local server.
The local server contains a white list of Unit Identifiers (UID) of the selected device sample units to be tested. The white list represents a list of UIDs which are allowed to execute the MTC. The white list is maintained in a secure manner. Additionally, a list of secure devices which have passed the manufacturing test may be maintained on the local server.
When the secure device is powered up, it initiates by executing secure initialization program instructions. As an example, the Read Only Memory (ROM) initialization code will initialize followed by loading of an Application Boot Loader (ABL) which is authenticated and executed. The ABL then loads and authenticates Universal Bootloader (U-Boot) programming code and initializes execution of the U-Boot programming code. U-Boot is an open source, primary boot loader used in embedded devices.
The U-Boot programming code verifies if the tests associated with the MTC have been completed in prior operation. If the manufacturing tests have not been completed, the U-Boot programming code will load the MTC from programmable memory, authenticate the MTC and execute the MTC. If the manufacturing tests have been completed in prior operation, the U-Boot programming code will attempt to connect to a local server using the pre-configured IP address or domain name stored in a configuration file located on the secure device to be tested. The secure device attempts to connect to the local server in order to determine if the manufacture test code needs to be re-executed. In order to re-execute the MTC, the secure device to be tested is connected to the private local network containing to the local server and is powered up.
If the secure device determines the local server is available, then the secure device retrieves its unit identifier and randomly generates a Nonce. A Nonce represents an arbitrary number used one time in cryptographic communication. A Nonce is often a random or pseudo-random number. The retrieved unit identifier and generated Nonce are communicated to the local server which initiates the user identification protocol.
After the local server receives the unit identifier and Nonce information from the secure device, the server determines if the unit identifier is listed in the white list. If the secure device unit identifier is not in the white list, the server will communicate an error message to the secure device. If the local server determines the secure device unit identifier is in the white list, then the server will use its private key to sign the received secure device unit identifier and the received Nonce. A private key is a component of public-key cryptography where a private key is maintained as a secret and a public key is maintained as public. One key locks or encrypts information and the other key unlocks or decrypts information. Neither key performs both functions of encrypting and decrypting. The local server then communicates the signed unit identifier and Nonce information to the secure device.
The private key maintained on the local server is protected via a secure token issued via a Public Key Infrastructure (PKI) center. Security tokens are used to prove a person's identity electronically. A token may be used in addition to or in place of a password for verification of identity. Secure tokens are securely managed and typically tokens are unique to a factory. Furthermore, secure token may be provided by a hardware or software mechanism. For a lost or disclosed private key, the U-Boot code programming code is updated in order to disable access via the lost or disclosed public key.
After the secure device receives the signed unit identifier and Nonce information, the unit verifies the unit identifier and Nonce information match the previously transmitted information. If the unit identifier and Nonce information do not match, then the unit continues with execution of the secure initialization process. If the unit identifier and Nonce information do match the previously transmitted information, then the secure device attempts to verify the signature using the local server's public key. A signature provides a mathematical scheme for demonstrating the authenticity associated with a digital message or document. A valid signature provides a recipient with a reason to believe the message or document was created by an authorized entity. As an example, the local server's public key may be hard coded in the secure devices reprogrammable non-volatile memory. If the secure device successfully verifies the signature, then the secure device is securely connected to the local server and may download and execute the MTC for performing manufacture tests. Secure device then downloads the MTC from the local server and stores the information in volatile memory (e.g., RAM). Furthermore, the secure device authenticates the MTC using its programming code authentication key.
If the MTC is authenticated, then the secure device continues to execute the MTC for performing manufacture tests. When all manufacture tests are completed, the MTC is removed from the secure device. If the MTC is stored in reprogrammable non-volatile memory, then the MTC is removed from reprogrammable non-volatile memory. Following removal of the MTC, power is removed from the secure device.
For an embodiment using a flash drive, a signed access token is received from a PKI server. The signed access token allows a secure device to load the MTC into the secure device for execution. The signed access token may include unit identification information for a unit or units and/or token expiration information.
The signed access token and signed MTC is stored onto a flash drive in a specific location and/or with a specific file name.
Following application of power, the secure device initiates secure initialization program code. The secure device may initiate ROM initialization programming code followed by loading, authenticating and executing ABL programming code. The ABL programming code will then load, authenticate and initiate the U-Boot programming code.
The U-Boot programming code checks for prior execution of the MTC. If the MTC has not previously been executed, the U-Boot programming code will load the MTC from programmable memory, authenticate and execute the MTC, if it passes authentication. If execution of MTC has been previously performed, secure device determines if flash drive is connected to secure device. If the flash drive is not available, then the secure device will continue the secure initialization process and execute application programming code.
If the secure device determines the flash drive is available, then the secure device determines if the access token file is available. The file path to the access token may be pre-configured, either in the configuration file or hard coded in the programming code associated with the secure device. If the secure device determines the secure token is present, the secure device verifies the signature of the token using a hard coded token verification public key. If the signature is verified, then the secure device may verify the unit identification associated with the token matches the unit identification for the secure device. Furthermore, the secure device may determine if the token is valid. If the UID is determined as not matching or the token is determined invalid, then the secure devices continues with secure initialization process. If verification is determined, the MTC may securely be downloaded and executed.
For successful verification, the secure device downloads the MTC from the flash drive into volatile memory (e.g. RAM) and performs authentication of the programming code using the secure devices authentication key. In some embodiments where a secure device reinitializes during testing, the MTC may be stored in programmable memory (e.g. flash) associated with the secure device.
After authentication of the MTC by the secure device, the secure device executes the manufacture tests associated with the MTC. Following completion of the test, the MTC is removed from the secure device. If the MTC is stored in programmable memory (e.g. flash), then the MTC is removed from the programmable memory. Following removal of MTC, power is removed from the secure device.
Example aspects of the present invention will now be described in greater detail with reference to
System 500 includes manufactured device 502, testing portion 104 and an MTC providing portion 504. Manufactured device 502 includes device booting portion 108, an MTC loading portion 506, a verifying portion 508 and executing portion 114.
In this example, each of device booting portion 108, MTC loading portion 506, verifying portion 508 and executing portion 114 are distinct devices. However, in other embodiments, at least two of device booting portion 108, MTC loading portion 506, verifying portion 508 and executing portion 114 may be combined as a unitary device. Further, in some embodiments, at least one of device booting portion 108, MTC loading portion 506, verifying portion 508 and executing portion 114 may be implemented using non-transient, tangible computer-readable media for carrying or having computer-executable instructions or data structures stored thereon.
MTC providing portion 504 is arranged to communicate with MTC loading portion 506 via a communication channel 510.
Testing portion 104 is arranged to communicate with device booting portion 108 via communication channel 118. Testing portion 104 is additionally arranged to communicate with MTC loading portion 506 via communication channel 120. Testing portion 104 is further arranged to communicate with executing portion 114 via communication channel 122.
Executing portion 114 is arranged to communicate with device booting portion 108 via communication channel 130, with MTC loading portion 506 via communication channel 126 and with verifying portion 508 via a communication channel 514. Verifying portion 508 is arranged to communicate with MTC loading portion 506 via a communication channel 124 and is arranged to communicate with MTC providing portion 504 via a communication channel 512.
MTC loading portion 506 is operable to provide MTC for performing manufacturing tests to verify whether the manufactured device functions correctly. Verifying portion 508 is operable to verify the authenticity of the MTC and to verify the authenticity of the provider of the MTC. This authenticity verification may be in the form of two separate verifications or a single verification and may be performed by any known method, a non-limiting example of which includes those using digital certificates, public key exchanges and private key exchanges. Executing portion 114 is operable to execute the booting instructions, the MTC and to operate in the manner in which manufactured device 502 is intended to operate, e.g., as a set-top-box in the case where manufactured device 502 is a set-top-box.
A process for the operation of the example system described with reference to
The method as described by
As shown in
Returning to
The MTC provider is then authenticated (S608). For example, as shown in
Returning to
Returning to
Returning to
Returning to
Returning to
In example method 600, manufactured device 502 verifies the authenticity of the MTC and the authenticity of MTC provider portion 504. More particularly, in example method 600, manufactured device 502 verifies the authenticity of MTC provider portion 504 prior to verifying the authenticity of the MTC. In some embodiments, manufactured device 502 may verify the authenticity of the MTC concurrently with the MTC. In still other embodiments, manufactured device 502 may verify the authenticity of the MTC provider after verifying the authenticity of the MTC.
Method 600 provides for selecting a sample of devices for re-testing such that the sampled devices may be configured for testing, testing may be performed and device may be returned to the condition prior to sampling/testing without being returned to the manufacturing line. The device is returned to the pre-tested state in order to be delivered to customers. In contrast, for some devices/systems, the device is returned to the manufacturing line in order to be reconfigured.
Two non-limiting example embodiments for securely providing MTC will be described with reference to
The first situation where MTC is provided by a secure local server will now be described with reference to
Verifying portion 700 includes a nonce/UID generator portion 702, a UID/nonce verifier portion 704 and a signature verifier portion 706.
In this example, each of nonce/UID generator portion 702, UID/nonce verifier portion 704 and signature verifier portion 706 are distinct devices. However, in other embodiments, at least two of nonce/UID generator portion 702, UID/nonce verifier portion 704 and signature verifier portion 706 may be combined as a unitary device. Further, in some embodiments, at least one of nonce/UID generator portion 702, UID/nonce verifier portion 704 and signature verifier portion 706 may be implemented using non-transient, tangible computer-readable media for carrying or having computer-executable instructions or data structures stored thereon.
MTC providing portion 708 receives information 710 from nonce/UID generator portion 702 via communication channel 512. UID/nonce verifier portion 704 receives information 712 from MTC providing portion 708 via communication channel 512. Signature verifier portion 706 receives information 714 from MTC providing portion 708 via communication channel 512. MTC loading portion 506 receives information from MTC providing portion 708 via communication channel 510.
Nonce/UID generator generates information associated with a Nonce and unit identification information. A nonce is a randomly generated or pseudo-randomly generated number or string of information which is used one time for facilitating secure communication. UID/nonce verifier receives and verifies information associated with unit identification and a nonce. Signature verifier portion 706 verifies information receives associated with a signature. MTC loading portion 506 downloads information associated with the MTC.
System 700 provides for secure communication and download of MTC from a local server. For purposes of discussion, if an invalid device attempts to communicate with the server, the device is not allowed to download MTC. Furthermore, if an invalid server attempts to communicate with a secure device, then secure device does not download MTC. This prevents unauthorized access to secure devices by unauthorized servers and prevents unauthorized access to servers by unauthorized devices.
Operation of this system will be described with additional reference to
The method as described by
As shown in
Returning to
Referring to
Returning to
Returning to
If the signature is verified, the MTC is downloaded (S814). For example, as shown in
Returning to
The second situation where MTC is provided by a flash drive will now be described with reference to
System 900 provides capability for a secure device receiving an access token from flash drive, the secure device verifying the signature, the secure device verifying the unit identifier and validity, the secure device downloading the MTC and the secure device executing the MTC associated with manufacture tests.
System 900 includes a token reader portion 902, a signature verifier portion 904, a verifier portion 906, a MTC loading portion 506 and a flash drive portion 910. Flash drive portion 910 includes flash memory, which is a non-volatile computer storage device with no moving parts that can be electrically erased and reprogrammed. A flash memory is used herein as a non-limiting example of a portable storage device.
Token reader portion 902 receives information 912 from flash drive portion 910 via communication channel 512. Signature verifier portion 904 receives information 914 from flash drive portion 910 via communication channel 512. Verifier portion 906 receives information 916 from flash drive portion 910 via communication channel 512. MTC loading portion 506 receives information from flash drive portion 910 via communication channel 510.
Token reader portion 902 performs operations associated with reading a token. Signature verifier portion 904 performs operations associated with verifying a signature. Verifier portion 906 performs operations associated with verifying unit identification and validity. MTC loading portion 506 performs operations associated with downloading the MTC.
Operation of this system will be described with additional reference to
The method as described by
As shown in
Returning to
Referring to
Returning to
Returning to
Referring to
For not being presented with a token and not verifying unit identification and validity, then production program is executed as described with reference to
An x-axis 1102 represents exchanges of communication between a secure device and MTC providing portion 708 (as shown in
Device may operate to communicate unit identification and nonce information to MTC providing portion 708 via a UID/nonce message 1110.
MTC providing portion 708 receives unit identification and nonce information and verifies if unit identification is in white list. If unit identification and nonce information are in the white list, then secure local server portion 708 may use its private key to sign the unit identification and nonce information.
MTC providing portion 708 communicates signed version of the unit identification and nonce version to device via a signed UID/nonce message 1112.
Device receives signed UID/nonce information and verifies unit identification and nonce match its own unit identification and nonce.
In the manufacture of some secure devices via systems, a random sample of devices is selected for re-testing. Following successful testing of the devices, the devices are not configured for delivery to customers, users, etc., as the devices have MTC information which is not to be delivered in devices to customers, users, etc. Therefore, in order to deliver some devices to customers and users, the devices are reconfigured via the original manufacturing line.
Devices may be configured to securely receive MTC information for performing sampled re-testing. In some example embodiments, devices securely receive information from secure local servers and in some example embodiments, devices securely receive information from flash drives. Following sampled re-testing, devices do not traverse some manufacturing lines, but rather are configured for delivery to customers and users as a part of the re-testing process or following the re-testing process. Following re-testing, the devices are delivered to customers and users in a similar manner as devices which are not sampled and re-tested.
Systems and methods have been described which provide capability for performing manufacture tests associated with the MTC in a secure manner. A local server embodiment and a flash drive embodiment have been described for implementing the systems and methods for secure manufacture test. The systems and methods prevent unauthorized entities from loading and executing unauthorized programming code.
The foregoing description of various preferred embodiments of the invention have been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. The example embodiments, as described above, were chosen and described in order to best explain the principles of the invention and its practical application to enable others skilled in the art to best utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the claims appended hereto.