Manufacturers of electronic devices generally debug the electronic devices prior to shipping the devices to distributors or retailers. Electronic devices are debugged using debug modules that are built into the devices. These debug modules are used during manufacture to ensure that the devices function properly. Thereafter, the debug modules are deactivated and physically left in place, even when the devices are shipped for distribution.
Because the debug modules remain in the electronic devices post-manufacture, malicious entities (e.g., hackers) have access to the debug modules and can use the debug modules to compromise the functional integrity of the electronic devices and/or the functional integrity of other devices communicably coupled with the electronic devices.
The problems noted above are solved in large part by a method and system for providing debug security logic. Some embodiments include a system comprises debug logic usable to debug the system. The system also comprises processing logic capable of accessing the debug module using electronic signals. The system further comprises security logic configured to prevent the processing logic from accessing the debug logic unless the security logic is provided with a passkey that matches another passkey stored in the system.
Another illustrative embodiment includes a system that comprises debug logic including an enablement port usable to enable and disable the debug logic. The system also comprises security logic that determines whether a request to access the debug logic is permissible. If the request is permissible, then, as a result, the security logic provides the enablement port with an enabling signal. If the request is impermissible, then, as a result, the security logic provides the enablement port with a disabling signal.
Yet another illustrative embodiment includes a method that comprises a security module detecting a request to access a debug module. The method also comprises the security module determining whether the request is permissible or impermissible. If the request is impermissible, then, as a result, the method includes the security module either preventing the request from being provided to the debug module or causing the debug module to become or remain disabled.
For a detailed description of exemplary embodiments of the invention, reference will now be made to the accompanying drawings in which:
Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, companies may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . . ” Also, the term “couple” or “couples” is intended to mean either an indirect or direct electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct electrical connection, or through an indirect electrical connection via other devices and connections. The terms “processor” and “processing logic” are analogous.
The following discussion is directed to various embodiments of the invention. Although one or more of these embodiments may be preferred, the embodiments disclosed should not be interpreted, or otherwise used, as limiting the scope of the disclosure, including the claims. In addition, one skilled in the art will understand that the following description has broad application, and the discussion of any embodiment is meant only to be exemplary of that embodiment, and not intended to intimate that the scope of the disclosure, including the claims, is limited to that embodiment.
Disclosed herein is a security system that provides selective access to debug modules in post-manufacture electronic devices. The system protects against malicious access to multiple types of debug logic (e.g., memory mapped debug logic, autonomous/trace debug logic). Upon powering the electronic device in which the security system is embedded, the security system blocks access to the debug logic. To access the debug logic, a user must provide a key sequence to the security system. The key sequence must match a pre-programmed key sequence stored inside the security system. If the key sequences match, the user is permitted to access the debug logic. Otherwise, the debug logic remains inaccessible to the user. The debug logic remains inaccessible because the security system either blocks access to the debug logic or disables the debug logic altogether.
The trace module debug logic 106 is generally used for the non-intrusive capture of product state. Trace output can be used to reconstruct the behavior of a system after such behavior has occurred, without impacting the behavior of the system. Trace module debug logic 106 generally receives debugging request signals from other components within the system 100, such as processing logic 108. In accordance with embodiments, debug control logic 110 is disposed in between the debug logic 106 and the processing logic 108. Signals transferred between the debug logic 106 and the processing logic 108 pass through the control logic 110. The security logic 102 controls the control logic 110. Accordingly, the security logic 102 can block signals that are intended to pass through the control logic 110 (e.g., signals intended to pass between the debug logic 106 and the processing logic 108).
Autonomous debug logic 104 is typically embedded within processing logic. The debug logic 104 generally is an intrusive mechanism which can probe and change logic state during system operation. The debug logic 104 receives debug data (as indicated by arrow 114) via the security logic 102. The debug data is provided to the security logic 102 by an external entity desiring to access the debug logic 104. The debug logic 104 uses the debug data to perform its debugging operations. However, the debug logic 104 will not perform debugging operations if the debug logic 104 is not enabled. Whether the debug logic 104 is enabled or not is dictated by enabling port 112. Specifically, the security logic 102 generates and provides to the port 112 an enabling signal when the security logic 102 determines that a request to access the debug logic 104 is permissible (i.e., “safe”). This enabling signal, provided to the port 112, causes the debug logic 104 to become or remain enabled. In contrast, when the security logic 102 determines that a particular request to access the debug logic 104 is impermissible (i.e., not “safe”), the security logic 102 generates and provides to the port 112 a disabling signal. The disabling signal causes the debug logic 104 to become or remain disabled. If the debug logic 104 is disabled, it does not become enabled until it receives an enabling signal. Similarly, if the debug logic 104 is enabled, it does not become disabled until it receives a disabling signal.
The security logic 102 also comprises a secondary scan chain (SSC) 204. The SSC 204, which is further described with reference to
One purpose of the AND gate 206 is to hold test/debug data in the security logic 102 until the security logic 102 has determined that a debug logic access request associated with the test/debug data is permissible. If and when the request is deemed to be permissible, the UNLOCK signal 116 is asserted, thereby enabling whatever data is on the TEST signal 210 to pass through the AND gate 206 to TEST_OUT 114 and, subsequently, to the debug logic 104.
If the UNLOCK signal 116 is asserted, meaning that the debug access request is permissible, then, as a result, the debug control logic 110 permits data to flow between the processing logic 108 and the debug logic 106. However, if the UNLOCK signal 116 is unasserted, meaning that the debug access request is impermissible, then, as a result, the debug control logic 110 blocks data flow between the processing logic 108 and the debug logic 106. In at least some embodiments, the security logic 102 causes the debug control logic 110 to block this data flow by returning a bus error signal to the processing logic 108.
More specifically, when the processing logic 108 “desires” to access the debug logic 106, the processing logic 108 waits to receive a status signal from the debug logic 106 that indicates that the debug logic 106 is ready to receive debug data. However, when the UNLOCK signal 116 is unasserted, meaning that the debug logic access is not permitted, the debug control logic 110 takes control of the status signal and causes the status signal to indicate to the processing logic 108 that the debug logic 106 is not ready. Thus, regardless of whether or not the debug logic 106 is ready to receive debug data, if the debug logic access request is not permitted, the debug control logic 110 will continue to provide a status signal to the processing logic 108 that indicates that the debug logic 106 is not ready. As a result, the processing logic 108 will not access the debug logic 106.
However, if the keys do not match and the UNLOCK signal is de-asserted (block 508), the method 500 comprises providing the unasserted UNLOCK signal to one or more debug logic (block 514). The method 500 then comprises either disabling the debug logic and/or blocking data from passing between processing logic and the debug logic, depending on the type(s) of debug logic included in the system (block 516).
The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.
This application claims the benefit of U.S. Provisional Application Ser. No. 61/103,088, filed Oct. 6, 2008, titled “Automotive Debug Security Module,” and incorporated herein by reference as if reproduced in full below.
Number | Date | Country | |
---|---|---|---|
61103088 | Oct 2008 | US |