Computer systems are vulnerable to ever-increasingly sophisticated attacks from hacking, viruses, Trojan horses and other malicious software. Such attacks can cause significant damage to the computer systems, as well as resulting in loss or theft of critical data. Some attacks may cause a system processor to, for example, make secure information available to an untrusted entity.
For a more complete understanding of various examples, reference is now made to the following descriptions taken in connection with the accompanying drawings in which:
Various examples described below provide systems and methods which provide for the monitoring of a processor of a system in a secure and tested manner. A monitoring processor separate from the main processor, which may be the target of a malicious attack, causes execution of a trusted diagnostic code while the main processor is in a trusted mode. In various examples, the monitoring processor can trigger an interrupt that switches the main processor from a normal mode to a trusted mode for execution of the trusted diagnostic code. The trusted diagnostic code generates results which are stored in a secure memory which is accessible to the main processor only when the main processor is in a trusted mode. The secure memory is made inaccessible to the main processor when the main processor is operating in a normal mode. The monitoring processor may then access the results from the secure memory and perform an analysis to determine whether the main processor is operating in a normal intended manner or whether it has been corrupted.
Referring now to
The example system 100 includes a main processor 110, or a central processing unit (CPU). In various examples, the main processor 110 controls various operations of the example system 100 and executes instructions, such as program code. The main processor 110 may be a part of the examples system 100, which may be a server, and can execute instructions based on requests from client devices. Such instructions may include running particular program code or accessing particular data, for example.
The main processor 110 of the example system 100 may communicate with other components of the example system 100 through a main communication bus 120. For example, the main communication bus 120 may allow the main processor 110 to access a primary storage system 130 of the example system 100. The primary storage system 130 may be used by the example system 100 to store a variety of information such as data for access by users, programs to be loaded and executed by the main processor, data or files needed for operation of the example system 100 and/or the main processor 110, etc.
In the illustrated example of
In various examples, the main processor 110 may support operation secure mode. Such operation may be desirable when executing instructions of a sensitive nature. For example, the example system 110 may be a server that supports a financial institution, and the main processor 110 may execute instructions related to a banking application. Accordingly, in various examples, the main processor 110 may be operable in either a normal mode or a trusted mode (e.g., a secure mode).
The main processor 110 of the example system 100 may be provided with a variety of applications that are embedded within the main processor 110. In particular, as illustrated in the example of
As noted above, systems such as the example system 100 of
In various examples, the monitoring processor 150 may cause execution of a trusted diagnostic code by the main processor 110. As illustrated in the example of
In various examples, access to the main processor 110 by the monitoring processor 150 may be through in interrupt controller 160 of the main processor 110. In this regard, monitoring processor 150 may issue an interrupt to the interrupt controller 160 through a dedicated monitoring interrupt line 170 between the monitoring processor 150 and the interrupt controller 160. In the example system 100 of
In addition to the main memory 134 of the primary storage system 130, the example system 100 is further provided with a secure memory 140. Secure memory 140 is accessible by the main processor 110 through the main communication bus 120. Further, the secure memory 140 may be accessible by the monitoring processor 150 through a dedicated secure memory access bus 180. In the example system 100 of
As described in greater detail below, in monitoring the status of the main processor 110, the monitoring processor 150 may further access the primary storage system 130. In various examples, in order to facilitate secure access of the primary storage system 130, a dedicated monitoring memory bus 190 may be provided between the monitoring processor 150 and the media controller 132 of the primary storage system 130. The media controller 132 may provide arbitration for access to the main memory 130 based on requests received through the dedicated monitoring memory bus 190 or the main communication bus 120.
In various examples, the monitoring processor 150 may cause execution of the trusted diagnostic code 114 embedded in the main processor 110 to determine the state of the main processor. In this regard, execution of the trusted diagnostic code 114, along with an analysis of results of the execution of the trusted diagnostic code 114, may reveal, for example, whether the main processor 110 has been corrupted by a malicious attack. As described in the examples herein, the example system 100 may be configured to allow the monitoring processor 150 the cause execution of the trusted diagnostic code 114 at the desired times or intervals. In various examples, the example system 100 may be configured, for example, at start up or reboot to allow the monitoring processor 150 to cause the desired execution of the trusted diagnostic code 114.
Referring now to
In the example method 200, the interrupt controller 160 may be configured to install an interrupt from the monitoring processor 150. In this regard, various examples, the interrupt controller 160 may be configured to cause execution of a desired code when the interrupt from the monitoring processor 150 is received. As described in the examples below and as noted above with reference to
At block 220, the example method 200 continues the startup or reboot process with embedding of the trusted diagnostic code 114 in the main processor 110. In various examples, the trusted diagnostic code 114 is embedded as a secure application, thus preventing corruption of the trusted diagnostic code 114 by an un-trusted client or code.
In various examples, the example method 200 may provide interfaces that may be needed for operation of various secure applications, such as secure application 112 of
Referring now to
With the main processor 110 in the trusted mode, a trusted diagnostic code, such as the embedded trusted diagnostic code 114 of
As noted above, the trusted diagnostic code 114 may take several forms and may determine whether the main processor 110 is operating as intended or has been corrupted. In one example, the trusted diagnostic code 114 facilitates analysis of configuration registers in the operating system layer. In this regard, one example of the trusted diagnostic code 114 is provided below for execution for a main processor 110 having an ARMv8-A architecture. Those skilled in the art are familiar with processors having the ARM architecture, and a detailed discussion of such processors is not relevant to the present disclosure.
In the case of a main processor 110 having an ARMv8-A architecture, the example trusted diagnostic code may execute in a monitor mode, also referred to as exception level 3 (EL3). Thus, operating at EL3, the trusted diagnostic code 114 may read configuration registers of the OS layer, also referred to as exception level 1 (EL1). In various examples, the configuration registers read by the trusted diagnostic code 114 may include ttbr0_el1, ttbr1_el1, tcr_el1. Of course, in other examples, other registers indicative of the status of the main processor 110 may be read.
While the example trusted diagnostic code 114 described above is applicable to a main processor 110 having an ARM architecture, the present disclosure is not limited neither to the particular example trusted diagnostic code nor to main processors 110 having an ARM architecture. Those skilled in the art will appreciate that other examples of trusted diagnostic codes 114 may be designed for execution on various other types of processors, and such other examples are contemplated within the scope of the present disclosure.
The results from execution of the trusted diagnostic code 114 are stored in the secure memory 140. In various examples, access to the secure memory 140 is provided to the main processor 110 or, more particularly, the trusted diagnostic code 114 only when the main processor 110 is operating in a trusted mode. Thus, results of execution of the trusted diagnostic code 114 are secure from tampering or corruption by an un-trusted entity or code, such as a malicious attack. In various examples, the trusted diagnostic code 114 may store the results of the execution (e.g., values of the configuration registers) in a wall defined location within the secure memory 140. For example, a predetermined address may be used to store the information.
Upon completion of the execution of the trusted diagnostic code 114, the main processor may return to operation in the normal mode. The monitoring processor 150 may then analyze diagnostic information, such as the information stored in the secure memory 140 by the trusted diagnostic code 114 (block 330). In this regard, monitoring processor 150 may access the secure memory 140 to obtain the values of the configuration registers from the previously noted wall defined place in the secure memory 140.
In various examples, the secure memory 140 is a non-transitory storage medium which is accessed through trusted communication paths. In various examples, the trusted communication for access to the secure memory 140 may be enabled with software or hardware. In one example, the communication path to the secure memory 140 may be trusted due to authentication using cryptography or other software security measures. In other examples, the access is limited to the secure memory 140 through hardware, such as hardware which provides access control through authentication. In other examples, the hardware maybe a dedicated bus with limited accessibility. For example, in the example system of
In the example system of
In various examples, monitoring processor 150 may compare the information from the secure memory 140 with predefined information to determine whether the main processor 110 is operating in a normal and intended manner. In certain examples, the monitoring processor may also obtain information from the primary storage system 130 in performing its analysis.
Upon performing its analysis, the monitoring processor 150 may determine that the main processor 110 is operating properly. Based on this determination, the monitoring processor 150 may take no action and await the next execution of the trusted diagnostic code 114. If, on the other hand, the monitoring processor 150 determines that the main processor 110 is not operating properly or as intended, it may conclude that the main processor has been corrupted or otherwise compromised. In this case, the monitoring processor 150 may take any of a variety of actions two, for example, alert and administrator or to cause the main processor 110 pause or shut down.
The examples described above, the trusted diagnostic code 114 is executed based on an interrupt from the monitoring processor 150 which switches operation of the main processor 110 from a normal mode to a trusted mode. In other examples, the trusted diagnostic code 114 may be executed each times the main processor 110 is switched to a trusted mode. For example, the main processor 110 may switch to a trusted mode based on a request from a trusted client for a secure application, such as the secure application 12 illustrated in
Thus, various examples provide for the secure monitoring of the main processor. The monitoring processor can cause execution of the trusted diagnostic code while the main processor is in a trusted mode. The results are stored in the secure memory which is accessible to the main processor only when the main processor is in a trusted mode and cannot be corrupted by an un-trusted source. The monitoring processor can then access the results from the secure memory and can detect if the main processor has been corrupted.
Various examples described herein are described in the general context of method steps or processes, which may be implemented in one example by a software program product or component, embodied in a machine-readable medium, including executable instructions, such as program code, executed by entities in networked environments. Generally, program modules may include routines, programs, objects, components, data structures, etc. which may be designed to perform particular tasks or implement particular abstract data types. Executable instructions, associated data structures, and program modules represent examples of program code for executing steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represents examples of corresponding acts for implementing the functions described in such steps or processes.
The various examples set forth herein are described in terms of example block diagrams, flow charts and other illustrations. Those skilled in the art will appreciate that the illustrated examples and their various alternatives can be implemented without confinement to the illustrated examples. For example, block diagrams and their accompanying description should not be construed as mandating a particular architecture or configuration.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US15/13757 | 1/30/2015 | WO | 00 |