Hardware-Assisted Security Enhanced Linux in Embedded Systems: A Proposal

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

Hardware-assisted Security Enhanced Linux

in Embedded Systems: a Proposal

ABSTRACT price allows developers to add new functionalities to this


As computing and communications increasingly pervade our systems. In-vehicle embedded systems have become very
lives, security and protection of sensitive data and systems complex providing network connection, multimedia, and ve-
are emerging as extremely important issues. This is espe- hicle control complex functionalities. The latest generations
cially true for embedded systems, often operating in non- of mobile phones have huge computational capabilities and,
secure environments, and with limited amount of computa- therefore, they provide the ability to run complex appli-
tional, storage, and communication resources available. In cations. In particular, in most modern embedded systems
mainfraime and desktop systems Security Enhanced Linux users have the ability to install new applications, and, thus,
(SELinux) is currently used as a method to enhance security add new functionalities. These new capabilities are exposing
by enforcing a security control based on policies that con- embedded systems to similar security risks of personal com-
fine user programs, or processes, to the minimum amount puters. In fact, the capability of installing software and the
of privileges they require for their execution. While pro- fact that embedded systems are now network-enabled ex-
viding a powerful mean for enhancing security in UNIX-like poses them to attacks. In particular, viruses, malwares, and
systems, SELinux still remains a feature too heavy to be other malicious pieces of software represent real dangers.
fully supported by constrained systems. In this paper, we
propose an hardware architecture for enhancing security and Common methods for contrasting these dangers such as, for
accelerating retrieval and applications of SELinux policies in example, the use of anti-viruses, is not compatible with em-
embedded processors. We describe the general ideas behind bedded systems. Furthermore, these methods have already
our work, discussing motivations, advantages and limits of proved to be only partly effective on personal computers.
the solution proposed, while suggesting the main steps to One of the methods that proved, instead, to be effective
implement the described architecture using a common em- to protect personal computers and servers is to implement
bedded processors. process isolation. The access of processes to resources and
to the other processes running in the system can be con-
Categories and Subject Descriptors trolled by the operated system and denied when necessary.
C.3 [Special-purpose and application-based systems]: Process isolation can be obtained in different ways; some
Real-time and embedded systems; D.4.6 [Operating Sys- operating systems provide natively ways for implementing
tems]: Security and Protection—Access controls isolation. In the Linux kernel a technology named Security
Enhanced Linux (SELinux) is implemented. SELinux is a
flexible mandatory access control method that can be used
General Terms to control the access of all resources by processes. SELinux
Design, Security is completely managed at kernel level and, thus, it cannot be
easily broken by user-level processes. SELinux is extremely
Keywords flexible as access control can be configured by customizable
SELinux, Operating Systems, Embedded Systems, Harware policies; these policies define define the operations that each
Accelerators object in the system (e.g., a process) can perform on sub-
jects (files, processes, resources, . . . ). By defining suitable
1. INTRODUCTION policies, non-safe processes can be run without the risk of
Embedded system complexity is being increased constantly: influencing safe processes. For example, a proper policy
the increasing computational capabilities available at low should provide such processes the minimal rights to run, but
it should provide no right to access certain system resources
and other processes in the system.

SELinux is presently widely used especially on servers. For


example, it is presently enabled by default on all Red Hat
and Fedora Linux distributions. In these distributions pre-
made policies are provided along with tools for controlling
the behavior of SELinux and for customizing the policies
[3]. Though, the goal of this work is to provide isolation in
embedded systems and SELinux has not been designed for
such systems: SELinux requires to check the access rights
of objects on subjects for each operation performed. This
introduces an overhead that is not compatible with the re-
sources (computational resources and energy) available in
embedded systems [10].

In this work we propose to enhance the execution of SELinux


in embedded systems by using custom designed hardware ac-
celerators. These hardware accelerators, accessed from the
operating system by using proper Application Programming
Interfaces (APIs), should provide the ability to overcome
performance limitations of SELinux in embedded systems. Figure 1: Overview of Flask architecture. Object
The hardware can also be used, along with proper policies, Managers enforce security policy decisions, while
to further enhance security. the Security Server provides security decisions to the
Object Managers [17]
The remaining part of this paper is organized as follows: a
description of SELinux is provided in Section 2; Section 3
presents a comparison of our work with related works. In access requested by the objects on subjects. This implies
Section 4 a description of the proposed solution is provided; that each access must be authorized by the kernel after a
in particular, the hardware accelerator for SELinux is de- query of the policy. Least recently used rules are cached
scribed along with its interface with the operating system. to speed up their lookup. SELinux is based on the Flask
In Section 5 the resources required for implementing the architecture [17], which provides flexible support for differ-
proposed solution are discussed. ent mandatory policies. Figure 1 shows the Flask architec-
ture, which is composed of three main components: Object
Managers, the Security Server, and the Access Vector Cache
2. SECURITY ENHANCED LINUX (AVC).
Security-Enhanced Linux (SELinux) [16] was presented in
2001 by the National Security Agency, and it is a security
module for fine-grained mandatory access control which was 2.1 Object Managers
integrated in the Linux kernel since its 2.6.0 release. Since Object managers are responsible for enforcing the policy de-
Red Hat Enterprise 4, SELinux is enabled by default in Red cisions of the security server for the set of resources they
Hat distributions. The protection provided by SELinux aims manage. They are modified to obtain security policy de-
at preventing malicious processes from reading data and cisions from the security server and to apply these deci-
programs, tampering with data and programs, bypassing sions to label and control access to their objects [8]. Ex-
application security mechanisms, executing untrustworthy amples of Object Managers include kernel subsystems such
programs or interfering with other processes in violation of as the filesystem, the process management, the socket Inter-
the system security policies. SELinux is an implementa- Process Communication (IPC), and the System V IPC. Also
tion of Mandatory Access Control (MAC). Depending on application object managers can be supported, such as a
the security policy type, SELinux implements either Type windowing system or a database management system. De-
Enforcment (TE), Roles Based Access Control (RBAC) or pending on their functionality, they are implemented either
Bell-La Padula Model Multi-Level Security (MLS). SELinux at system- or user-space. Three primary elements are pro-
defines the access and transition rights of every user, applica- vided for Object Managers by the Flask architecture. First,
tion, process, and file on the system. SELinux then governs the architecture provide interfaces for whether a particular
the interactions of these entities using a security policy that permission is granted between two entities, for specifying the
specifies how strict or lenient a given Linux system should security attributes to be assigned to an object, and for spec-
be [2]. ifying which member of a set of resources should be accessed
for a particular request. Second, the architecture provides
Access control is specified by policies. A policy is a set an access vector cache (AVC) module that allows the ob-
of rules that constrains the system behavior. Access to a ject manager to cache access decisions to minimize the per-
system resource is granted only if a corresponding allow rule formance overhead. Third, Object Managers are given the
exists in the currently loaded policies; by default, no access is possibility to receive and register notifications of changes to
granted by SElinux; all required accesses must be explicitly the security policy.
described in the associated policy. A rule is composed of the
triple subject, object, object class, and of an associated access In the LSM architecture, the object managers are repre-
vector specifying the type of access or operation allowed for sented by the LSM hooks; these hooks are distributed through-
them. The elements of the triple represent, respectively, the out the kernel subsystems and call the SELinux LSM module
running process, the system resource to be accessed, and its for access decisions. The LSM hooks then enforce those de-
class (i.e., the kind of resource considered). Table 1 shows a cisions by allowing or denying access to the kernel resource.
selected set of object/rules classes, providing some example
of permissions; an exhaustive classification of all rules and 2.2 Security Server
permissions can be found [8]. The security server mainly consists of a database where the
policy rules are stored and retrieved, and a decision making
In SELinux the policy is queried and enforced prior to each logic able to take a decision upon an access check, according
Table 1: Rules classification in SELinux
Rule Class Object Class Permissions Example
Process Management Process Signals (sigkill, sigstop, sigchld), fork, transition, get attribute.
File System Pipe, file, directory create, read, write, append, lock, link, get attribute.
Networking Socket start, shutdown, bind a connection, receive, sed a msg.

to the corresponding access vector. It also provides function- devices. The tuning consists of two parts, i.e., the reduction
ality for loading and changing policies at boot and run-time. of the policy size by utilizing a specific policy writing tool [4],
In SELinux, the policy database is implemented as a com- and the tuning of kernel and userland by removing unneeded
mon single linked list hash-table (the Access Vector Table functions and redundant permission checks from the kernel,
avtab) [1], which is composed of a pointer to the head nodes, by reducing file size by removing features unnecessary for
the number of slots, and a mask for the hash function com- embedded devices, and by reducing memory usage by re-
putation. The key used for retrieving the permission is the moving unnecessary data structures from the kernel. On the
hash of the concatenation of the subject identifier (SSID), porting of SELinux on embedded devices, [14] describes the
the target identifier (TSID), and the object class (OBJC). integration of Security-Enhanced Linux LSM with Android-
An access vector stores the permission for that specific key. powered mobile devices, evaluating its ability to improve
Android’s security. Also in this case, notable slowdowns
2.3 Access Vector Cache in operations requiring additional permission checks was re-
The AVC caches decisions made by the security server for ported.
subsequent access checks and thus provides significant per-
formance improvements. Whenever a resource is requested, In this work, we propose for the first time the use of hard-
the AVC is first searched for a decision previously taken. In ware accelerators for enhancing performance of executing
case of a miss, the query is forwarded to the policy database SELinux operations on embedded devices. Our solution is
into the security server, and the decision of the security complementary to previous work on portig SELinux on such
server is finally stored in the AVC for future occurrences. type of systems, and it can be applied together with the pre-
The information stored in the AVC is replaced following a vious techniques described for limiting the overhead due to
LRU policy, therefore exploiting access temporal locality. Its the mandatory policy based access control mechanism. In
size is small to improve the search procedure performance particular, we propose to trade off on-chip area and some
and ease memory requirements. The AVC also provides the flexibility for performance (and reduced power consump-
SELinux interfaces for the Linux security modules (LSM) tion), a simpler memory management for the policies, and
hooks and with the kernel object managers. Similarly to an increased security. Our work can be considered com-
the policy database, in SELinux the AVC is implemented as plementary also to [13], where an mandatory access control
a common single linked list hash-table, and the key used for mechanism alternative to SELinux, and designed for mobile
retrieving the permission is the hash of the concatenation of devices, is proposed and evaluated.
the SSID, the TSID, and the OBJC.
Regarding the use of hardware accelerators for Operating
Systems (OSs), some previous work can be found in the lit-
3. MOTIVATIONS AND RELATED WORK terature. In [6], tasks management in MPSOCs is supported
SELinux is a powerful tool to overcome intrinsic security through a ASIP-based solution, by adopting a processor core
weaknesses of the access control of the Linux kernel. It specially designed to provide OS support to the multiproces-
is usage has been proven efficient and reliable in servers sor system. Similarly, in [12] a coprocessor is proposed for
and desktop PC. Being focused on this type of systems, performing scheduling in a homogeneous cluster of simpli-
many features were added during its development, and its fied RISC processors, with a low context switch overhead.
resource consumption and overhead in term of CPU usage, In [7] and [9], programming support is also provided. In
file size, and memory, has become unacceptable for embed- particular, [9] propose a hardware real time operating sys-
ded computing [10]. While overhead due to the security tem (HW-RTOS) that implements the OS layer in a dual-
checks in system calls (syscalls) may appear insignificant in processor SMP architecture, and that allow specifying in-
desktop environments [8], for embedded systems high over- tertask communication by means of dedicated APIs. The
head (more then 100%) have been reported, in particular for HW-RTOS takes care of the communication requirements
read/write functions, which are, moreover, among the func- of the application and also implements the task scheduling
tions executed the most [10, 14]. Moreover, the file size of algorithm, with smaller footprints, and exploiting efficiently
the kernel and userland increases of around 2MBytes when task migration feature provided by an SMP architecture.
SELinux is ported. While acceptable for desktop devices,
for embedded computing may represent a problem, being in Our solution adopts the similar idea of using hardware ac-
fact the dimension of the flash ROM used for storing a file celerators for improving performances of the operations per-
system of around 32MBytes. Similarly, the memory con- formed by the OS. While related work focus on providing
sumption used usually for storing in desktop computers the hardware support for OS operations for mainly improving
security policies may be too requiring in embedded devices. real-time capabilities of the system, our work, for the first
time, focuses on presenting a hardware architecture for im-
In [10], a solution for overcoming these limitations has been proving performance in the application of the security oper-
proposed. The authors proposed to tune SELinux in order ations needed when running SELinux on embedded or con-
to reduce the resource consumption on consumer electronic
Table 2: Comparison
a b c
Flexibility aaa fff
Area overhead aaa fff
Performance Improvement aaa fff

the functionalities offered by it (Figure 2(a)). The


(a) block is mainly composed of a lookup table for storing
the rules cached and of the logic for retrieving them, as
well as of all the logic for interfacing the block to the
processor and the function calls of the Object Man-
agers in the Linux kernel;

• Arch 2 - acceleration of AVC and security server


operations: in addition to the previous module, also
a selected set of operations performed by the secu-
rity server are implemented in hardware (Figure 2(b)).
Possible operations are, for instance, the Least Re-
(b) cently Used (LRU) function for the replacement of the
policy in the AVC, the hashing of the input key pa-
rameters, the retrieval and decoding of the information
rules information stored in the binary policy file, etc.
In this architecture, the management of the policies in
the policy database, and its memory allocation is still
left to the software implementation;

• Arch 3 - acceleration of AVC and security server:


as shown in Figure 2(c), both the AVC and the secu-
rity server are implemented as separate and external
(c) hardware modules . The policies are stored in a sep-
arate external memory, and (almost) all the SELinux
Figure 2: Possible alternative architectures for im- operations are supported by the equivalent hardware
plementing hardware support for SELinux: (a) module.
AVC; (b) AVC and main security server operations;
(c) AVC and security server
Table 3 compares the different implementations and shows
preliminary qualitative evaluations about the three types of
strained devices. architectural solutions. The shown evaluations about the
performance improvement are derived form the fact that
4. HARDWARE-ACCELERATED SELINUX with a sufficient amount of cache available, the number of
In this paper we propose to implement some parts of SELinux misses of the AVC in generic architectures are limited. In
in hardware, with the goal of speeding up the policy en- fact, we profiled the number of hits and misses in the AVC
forcement when any action is executed. In particular, our on a 2.67GHz Intel core i7 M620 processor with 4GBytes
hardware accelerator aims at speeding up the most time con- of RAM, running for 8 hours over kubuntu 10.04, and ob-
suming operations in policy enforcement: the lookup of rules tained that the number of misses represented the 0.0005 %
in the policy. As discussed in Section 2, rules lookup is per- on a SELinux configuration with 512 lines of AVC cache; we
formed through a multiple-layer structure composed of the expect, therefore, to obtain qualitative results such as those
AVC and the policy database; the lookup is the cause of the presented in Table 3. We should consider that the number
high performance overhead reported when SELinux is used of applications run in a typical embedded system are usually
in embedded devices [10]. Several alternative hardware im- less than the ones run in a personal computer. Therefore,
plementations can be derived from the Flask architecture we expect a 512-line AVC to be oversized for an embedded
shown in Figure 1, as expression of different design trade system.
offs between the performance improvement obtained and the
additional costs in area of the hardware accelerator. We have chosen in this work to study the first hardware
architecture, i.e., the implementation of a hardware module
As shown in Figure 2, in general different levels of accelera- for substituting the operations performed by the AVC. As
tion may be identified: reported by [10] and [14], the access to the AVC is in fact
the main source of performance overhead in the SELinux,
and the architecture represents a good trade-off between the
• Arch 1 - acceleration of AVC: the AVC module is expected performance improvement and the implementation
substituted by an hardware module that implements costs.
struct av_decision {
u32 allowed;
u32 auditallow;
u32 auditdeny;
u32 seqno;
u32 flags;
};

Figure 4: Data structure returned by the


avc has perm() and containing the permissions for
the desired input key

software implementation, a the HAVC performs the hash-


ing of the concatenation of the three parameters, in order
to obtain a key 32-bit long, which is used for the look up of
the permission. As shown in Figure 3, the lines of the CAM
are 32-bit wide, in order to store the whole key. Each entry
in the CAM structure indexes a RAM line containing the
access rights for the specific rule.

In the software implementation, the information returned


Figure 3: Overview of the Hardware Access Vector by rule lookup is the av decision struct that is composed of
Cache (HAVC) architecture 5 32-bit integers (Figure 4). The member allowed contains
the identifier permission stored for the associated key (see
as example of possible permissions Table 1). auditallow and
4.1 Hardware implementation of the AVC auditdeny are employed by the kernel for auditing purposes,
In SELinux, the AVC component stores the least recently in order to derive statistics about SELinux performances,
used rules and is designed to speed up the policy search by such as the number of the AVC hits and misses. The mem-
exploiting the temporal locality of rule access; the policy ber seqno specifies the sequence number of the policy file
database stores the full set of rules that compose the policy. which is used (useful in case of run-time modifications of
As mentioned in Section 2, both modules are implemented the policies to distinguish between old and new ones), while
in the kernel module as hash-tables with a non-perfect hash flags is used to specify whether SELinux is in a enforcing
function. The rule lookup task, implemented both in the or a permissive mode [3]. In the hardware implementation,
security server and in the access vector cache, can be effi- we coded the av decision with 10 bits, which also gives the
ciently implemented in hardware. Therefore, it provides a width of the RAM lines. 5 bits are in fact used for coding the
clear opportunity for speeding up SELinux with relatively maximum number of possible different types of permission
low hardware costs. that it is possible to have for an Object Class, while 1 bit
is needed for the auditallow, the auditdeny, and the seqno
Figure 3 shows the proposed architecture, the Hardware Ac- members. 2 bits are instead needed for coding the content
cess Vector Cache (HAVC). HAVC is an hardware imple- of the flags field. In order to be able to interface the data
mentation of the AVC cache found in software implemen- stored in the RAM with the information needed by the call-
tation of SELinux. HAVC is queried by the CPU at every ing kernel functions, a module needs to be implemented to
security check. The main component of the HAVC is a rel- perform the coding and decoding of the content of the RAM.
atively small-sized lookup table, implemented as a Content- A further optimization can be performed on the dimension
Addressable memory (CAM) [11] and an associated RAM. of the RAM. In fact, only the allow field can be considered
The CAM stores the keys that are looked up for retrieving mandatory for applying the basic SELinux functions. By ex-
the associated access rules, while RAM the associated per- cluding the use of logs and assuming a permanent enforcing
mission. The number of entries of the lookup table depends operating mode of SELinux and a fixed policy file, the width
on the implementation and on the applications running on of the RAM can be reduced to 5, decreasing consequently
the system. A design exploration phase is needed to select the overhead associated to the HAVC.
the ideal number of entries in the CAM, as trade-off between
the area of the module and the number of misses in the AVC, If case the look up is not able to find any match within the
as done for instance in [5] for the dimension of the cache in key stored in the HAVC, a miss occurs, and the module re-
VLIW processors. turns an interrupt which is converted into the appropriate
format for being read by the calling kernel function. As al-
Input of the HAVC during the lookup phase are the param- ready partially discussed, a part from the lookup table, the
eters characterizing the specific rules, i.e., the subject identi- HAVC implements also the hashing function, and all the
fier (SSID), the target identifier (TSID), and the object class interfaces and the conversion logic from/to the data types
(OBJC). This three values are equivalent to those passed as passed as arguments in the SELinux functions to/from the
argument of the original SELinux function avc has perm(), logic bits used for storing the associated information. More-
which is called in the software implementation for requesting over, it implements all the control logic needed for perform-
the lookup of the permission in the AVC. Similarly to the ing efficiently the lookup.
4.2 Integration With the Operating System
The hardware implementation of the AVC requires modifica- Table 3: Comparison
tions to the operating system to work. In particular, proper a b c
interfaces for the hardware accelerators should be designed Flexibility aaa fff
and the related function calls in the SELinux code need to Area overhead aaa fff
be modified to use the hardware. The goal of our hardware Performance Improvement aaa fff
design will be not only to improve performance and secu-
rity, but also to minimize the changes required in the Linux
kernel code. A SELinux hardware API (Application Pro- a 0.13µm technology library for the synthesis. Values re-
gramming Interface) will be added to the kernel. In general, ported were obtained by using Synopsys Design Compiler
the goal of an API is to provide an uniform access to hard- and optimizing the synthesis for a target clock frequency of
ware and software functionalities. In this specific case the 500MHz. Table shows results obtained when considering a
API will provide access to the functionalities implemented system that fully support SELinux auditing and run-time
in hardware that will be substituting corresponding software adaptation of policies, and a minimal system, in which only
functions. the permissions capabilities are implemented. Results are
shown for different dimensions of the HAVC, i.e., with dif-
To make use of the HAVC implementation presented above, ferent capabilities in term of the number of rules that the
the AVC query function will need to be modified. The AVC HAVC is able to store. As Table ?? shows, the results in
works as a policy cache; in a pure software implementation term of area are compared with the dimension of a commer-
when an object wants to access a subject (e.g., an applica- cial embedded processors ( []) and a 16 Kbyte SRAM block
tion requires to access a resource), the AVC is queried first [15] implemented using a 0.13µm technology library.
by using the avc has perm() function. If the policy corre-
sponding to the required access has been stored in the AVC
previously, the permissions are returned; the security server 6. CONCLUSIONS AND FUTURE WORK
needs to be queried instead. The security server is directly In this paper we presented a proposal for enabling the adop-
queried by the AVC module that stores the results before tion of SELinux in embedded systems. The use of a hard-
sending them to the Linux kernel to allow or deny the re- ware accelerator will provide the ability to overcome the
quired operation. When an AVC accelerator is adopted, the performance problems registered when this security solu-
avc has perm() has to be modified as follows: tion is adopted. The use of SELinux will enhance security
of Linux-based embedded systems, providing, in particular,
the ability to isolate non-secure processes.
• the AVC query (avc lookup() function) should be sub-
stituted by a call to the API. While the SELinux accelerator is being designed with em-
bedded systems in mind, it might also be adopted on servers:
• If the hardware returns no valid result (i.e., the en-
it might improve performance of high-load machines as well
try is not present in the AVC) the function will query
as security. The possibility to write policies in the hardware
the security server. After the query to the security
(e.g., in a flash memory) will definitely improve security by
server, the result is sent to the AVC hardware for be-
physically forbidding unauthorized changes of the policies.
ing stored through a call to the API that substitutes
the avc insert() function. The result is also sent to the
Future work will first consist in completing the implemen-
operating system to evaluate if the required operation
tation of the proposed accelerator and on testing its per-
is legitimate or not.
formance. The accelerator is being implemented on a Xil-
inx development board which contains a PowerPC proces-
As aforementioned, other hardware accelerators might also sor along with a FPGA module. The PowerPC runs Linux;
be considered. The adoption of a hardware implementation the accelerator is being implemented in the FPGA. A study
of the policy server (Arch2 and Arch 3 in Figure 2) will on optimal sizes of the AVC will be conducted for different
also provide the ability to simplify the procedure when the kinds of embedded systems. Furthermore, a SELinux policy
entry is not found in the AVC. The AVC hardware imple- targeted for embedded systems will also be developed. The
mentation, in fact, will be able to directly query the hard- policy will be designed to be as simple as possible and to
ware implementation of the policy server, store the results, implement, as a basic feature, process isolation. The pol-
and send them back to the query software. In practice, the icy will have the possibility of being customized for specific
avc has perm() function will be fully implemented by the embedded applications.
hardware accelerators. Therefore, the API will substitute
this function with a proper hardware call. In this case, the As previously mentioned, the application of the hardware
API will be also required to implement a selinux init load policy() accelerator for servers is also promising. This application
to load the policy in the hardware policy server. will be studied in the future with the goal of enhancing se-
curity and performances for these machines.
MANCA security compute av()
7. REFERENCES
5. EVALUATION AND PRELIMINARY RE- [1] Hash table definition - wikipedia.
SULTS http://en.wikipedia.org/wiki/Hash table.
Table ?? shows the cost, in term of area (mm2 ), of imple- [2] Red Hat Enterprise Linux Deployment Guide.
menting the Hardware Access Vector Cache in ASIC using http://www.redhat.com/docs/manuals/enterprise/RHEL-
5-manual/Deployment Guide-en-US/selg-
overview.html.
[3] Red Hat SELinux Guide.
http://www.redhat.com/docs/manuals/enterprise/RHEL-
4-Manual/selinux-guide/.
[4] Selinux policy editor. http://seedit.sourceforge.net/.
[5] Alberto Ferrante, Giuseppe Piscopo, and Stefano
Scaldaferri. Application-driven Optimization of VLIW
Architectures: a Hardware-Software Approach. In
Real-Time and Embedded Technology Applications,
pages 128–137, San Francisco, CA, USA, 7 Mar. 2005.
IEEE Computer Society.
[6] J. Castrillon, D. Zhang, T. Kempf, B. Vanthournout,
R. Leupers, and G. Ascheid. Task management in
mpsocs: an asip approach. In ICCAD ’09: Proceedings
of the 2009 International Conference on
Computer-Aided Design, pages 587–594, New York,
NY, USA, 2009. ACM.
[7] M. Lippett. An ip core based approach to the on-chip
management of heterogeneous socs. In IPSOC ’04:
Proceedings of the 2004 IP Based SoC Design
COnference & Exhibition, 2004.
[8] P. Loscocco and S. Smalley. Integrating flexible
support for security policies into the linux operating
system. In Proceedings of the FREENIX Track: 2001
USENIX Annual Technical Conference, pages 29–42,
Berkeley, CA, USA, 2001. USENIX Association.
[9] A. C. Nácul, F. Regazzoni, and M. Lajolo. Hardware
scheduling support in smp architectures. In DATE
’07: Proceedings of the conference on Design,
automation and test in Europe, pages 642–647, San
Jose, CA, USA, 2007. EDA Consortium.
[10] Y. Nakamura and Y. Sameshima. Selinux for
Consumer Electronics Devices. Proceedings of Linux
Symposium, pages 125–133, 2008.
[11] K. Pagiamtzis and A. Sheikholeslami.
Content-addressable memory (cam) circuits and
architectures: A tutorial and survey. IEEE JOURNAL
OF SOLID-STATE CIRCUITS, 41(3):712–727, 2006.
[12] S. Park, D. sun Hong, and S.-I. Chae. A hardware
operating system kernel for multi-processor systems.
IEICE Electronics Express, 5(9):296–302, 2008.
[13] E. Reshetova and J. erik Ekberg. Mandatory access
control for mobile devices, 2008.
[14] A. Shabtai, Y. Fledel, and Y. Elovici. Securing
android-powered mobile devices using selinux. IEEE
Security and Privacy, 8:36–44, 2010.
[15] P. Shivakumar, N. P. Jouppi, and P. Shivakumar.
Cacti 3.0: An integrated cache timing, power, and
area model. Technical report, 2001.
[16] S. Smalley, C. Vance, and W. Salamon. Implementing
selinux as a linux security module. Technical report,
US National Security Agency, 2001.
[17] R. Spencer, S. Smalley, P. Loscocco, M. Hibler,
D. Andersen, and J. Lepreau. The flask security
architecture: System support for diverse security
policies. In in Proceedings of The Eighth USENIX
Security Symposium, pages 123–139, 1999.

You might also like