 |
Externally-verifiable Code Execution
|
|
|
Today computing systems are under attack from a wide variety of malware like user and kernel-level rootkits, worms and viruses, and spyware programs. Increased network connectivity, the presence of remotely exploitable vulnerabilities in software, and the easy availability of know-how and tools for malware development have made it easy for attackers to compromise computing system software in order to introduce malware. Malware is not limited to application programs and operating systems; even the device-level firmware is not spared as was demonstrated by the CIH (Chernobyl) virus, that destroyed the BIOS of any PC that it infected. It is hypothesized that the only reason that device-level firmware is not extensively targeted by malware is because there is plenty of lower hanging fruit in the form of application software and operating system kernels. Attackers use malware to tamper with the execution of software we use in order to steal our private information and, in the process, they compromise our privacy and safety. Given the state of affairs, we need an assurance that the software we use is not tampered with by any malware that may be present. Such an assurance enables us to use our computing devices with confidence.
The goal of our research is to build a primitive that provides the
guarantee of "verifiable code execution" on a computing system to an
external verifier. That is, the verifier obtains an assurance that the
execution of an arbitrary piece of code on a computing system cannot
be tampered with by any malware that may be present on the computing
system. Our work encompasses a variety of computing systems ranging
from tiny embedded systems like sensor nodes to personal computing
devices like cell-phones to network servers.
|
|
Pioneer:
Verifiable
Code Execution
on Legacy Systems
Pioneer is our first-step toward externally-verifiable code execution on legacy computing systems. We define legacy computing systems as those that do not have secure co-processors such as the Trusted Platform Module (TPM) or CPU-based security technologies like Intel's LaGrande Technology, and AMD's Pacifica and Presidio. Using Pioneer, an external verifier can obtain the guarantee that execution of an arbitrary piece of code on a legacy computing system is untampered by any malware that may be present. In particular, the verifier obtains the guarantee that any pre-existing malware does not: modify the code image, invoke an alternate (malicious) code, or modify the execution state of the code during execution. We have implemented Pioneer on the Intel Pentium IV Xeon processor with 64-bit extensions.
|
|
 Papers
Arvind Seshadri, Mark Luk, Elaine Shi, Adrian Perrig, Leendert van Doorn and Pradeep Khosla.
"Pioneer: Verifying Code Integrity and Enforcing Untampered Code Execution on Legacy Systems."
20th ACM Symposium on Operating Systems Principles (SOSP 2005).
[ PDF ]
Arvind Seshadri, Mark Luk, Adrian Perrig, Leendert van Doorn and Pradeep Khosla.
"Externally Verifiable Code Execution."
Communications of the ACM, 49(9):45-49, September 2006.
[ PDF ]
 Talks
Invited talk. Arvind Seshadri. Pioneer: Dynamic
Root of Trust for Measurement and Verifiable
Executable Invocation. 2005 Intel Security Workshop (ISW 05) (July 28, 2005).
[ PDF
]
SOSP
2005 (October 24, 2005).
[ PDF
]
 Source Code
Download
source code here.
|
SAKE:
Software Attestation
for Key Establishment
in Sensor Networks
SAKE is a protocol for establishing a shared key between
any
two neighboring nodes of a sensor network. SAKE guarantees the secrecy
and authenticity of the key that is established, without requiring any
prior authentic or secret information in either node. The
attacker can read and modify the entire memory contents of both nodes
before SAKE executes. Further, to the best of our knowledge, SAKE
is the only protocol that can perform key re-establishment after
sensor
nodes are compromised, because the presence of attacker code in
the memory of either node does not compromise the security of SAKE. Also, the attacker can perform any active or passive
attack using an arbitrary number of malicious, colluding nodes. SAKE
does not require any hardware modification to the sensor nodes, human
mediation, or secure side channels. However, we do assume the setting
of a computationally-limited attacker that does not introduce its own
computationally powerful nodes into the sensor network.
SAKE is based on our software-based
verifiable code
execution primitive
called ICE
(Indisputable Code
Execution),
that dynamically establishes a trusted
execution
environment on a remote, untrusted sensor node.
|
|
 Papers
Arvind
Seshadri, Mark Luk, and Adrian Perrig.
"SAKE:
Software Attestation for Key Establishment in Sensor Networks."
2008
International Conference on
Distributed Computing in
Sensor Systems
[ PDF ]
|
|
SCUBA: Secure Code
Updates by Attestation
in Sensor Networks
SCUBA (Secure Code Updates by Attestation in Sensor Networks) is a
protocol for detecting and recovering compromised nodes in
sensor networks. The SCUBA
protocol enables the design of a sensor network that can detect
compromised nodes without false negatives, and either repair them
through code updates,
or revoke the compromised nodes. SCUBA
represents a promising approach for designing secure sensor
networks by proposing a first approach for automatic recovery of
compromised sensor nodes. It is based on ICE (Indisputable Code
Execution), a
primitive we introduce to dynamically establish a trusted code base on a remote,
untrusted sensor node.
|
|
 Papers
Arvind
Seshadri, Mark Luk, Adrian Perrig, Leendert van Doorn, and Pradeep Khosla.
"SCUBA: Secure Code Update By Attestation in Sensor Networks."
ACM
Workshop on Wireless Security
(WiSe), September 2006.
[ PDF ]
 Talks
WiSe
2006 (September 29,
2006). [ PDF ]
|
|
SWATT: Software-based
Attestation for
Embedded Systems
SWATT provides attestation, that is, it allows an external verifier to
establish the absence of malicious changes to the memory contents of
an embedded device. It is designed to work with embedded devices based
on simple 8 and 16-bit CPUs. SWATT does not require physical access to
the memory of the embedded device. Also, SWATT is software-based and
does not require any hardware extensions such as secure co-processors.
SWATT provides an equality check for memory contents. This property is insufficient to obtain the guarantee of verifiable code execution since the attacker can modify the code between the time it is checked and the time the code the invoked for execution. This is referred to as the time-of-check-to-time-of-use (TOCTTOU) attack.
|
|
 Papers
Arvind Seshadri, Adrian Perrig, Leendert van Doorn, and Pradeep Khosla.
"SWATT: SoftWare-based ATTestation for Embedded Devices."
2004 IEEE Symposium on Security and Privacy.
[ PDF ]
Arvind Seshadri, Adrian Perrig, Leendert van Doorn, and Pradeep Khosla.
"Using SWATT for Verifying Embedded Systems in Cars."
2004 Embedded Security in Cars Workshop (escar 2004).
[ PDF ]
 Talks
2004 IEEE
Symposium on Security
and Privacy (May 12,
2004). [ PDF ]
escar 2004 (November 10,
2004). [ PDF ]
|
|
Contact Us






|
|
|