On the Automated Synthesis of Proof-Carrying
Temporal Reference Monitors
Simon Winwood
1,2
, Gerwin Klein
1,2
, and Manuel M. T. Chakravarty
1
1
University of New South Wales
School of Computer Science & Engineering
Sydney, Australia
2
National ICT Australia
⋆
{sjw,chak}@cse.unsw.edu.au
gerwin.klein@nicta.com.au
Abstract. We extend the range of security policies that can be guar-
anteed with proof carrying code from the classical type safety, control
safety, memory safety, and space/time guarantees to more general secu-
rity policies, such as general resource and access control. We do so by
means of (1) a specification logic for security policies, which is the past-
time fragment of LTL, and (2) a synthesis algorithm generating reference
monitor code and accompanying proof objects from formulae of the spec-
ification logic. To evaluate the feasibility of our approach, we developed
a prototype implementation producing proofs in Isabelle/HOL.
1 Introduction
Proof carrying code (PCC) [1] is inherently trustworthy, independent of its origin
or previous opportunities for tampering. The guarantees provided by PCC are,
however, not universal: they are relative to a security policy agreed upon by the
code producer and consumer. It is the code producer’s obligation to annotate
the code with a proof object that establishes the code’s compliance with the
security policy. This proof object, consisting of steps in a formal logic, can be
checked with a simple proof checker. Thus, the trustworthiness of the code can
be established with mathematical rigour.
Existing research into the generation of proof-carrying code focuses on secu-
rity policies which can be derived from properties of high-level languages and
their type systems, such as type safety [2], control and memory safety [3], and
space/time guarantees [4]. The contribution of this paper is to extend the ap-
proach to more general security policies, such as general resource and access
control. An example of such a policy is one where “a user may perform an op-
eration only if they have been granted a capability for that operation and that
capability hasn’t been revoked.” Such properties are beyond the semantic guar-
antees of high-level languages; hence, we need (1) a formal device to express such
policies and (2) a method for generating proof-carrying code for these policies.
⋆
National ICT Australia is funded through the Australian Government’s Backing
Australia’s Ability initiative, in part through the Australian Research Council.
G. Puebla (Ed.): LOPSTR 2006, LNCS 4407, pp. 111–126, 2007.
© Springer-Verlag Berlin Heidelberg 2007