Validating the Horus Protocols

[Back]: See also Securing and Hardening the Horus System


Overview

The following steps will be taken to validate Horus:

  1. Build a ``reference implementation'' in the ML programming language.
  2. Specify the Horus protocols in a temporal logic.
  3. Formally verify protocols using the Nuprl Proof Development System.

Advantages of Using the ML Programming Language

ML is a programming language with:

We have built in ML a compact implementation of Horus suitable for verification of fault-tolerance and security properties.

Also, the subset of ML we use can be compiled to efficient, human-readable C code.

Use of Temporal Logic

We describe protocol properties using the Temporal Logic of Actions. For example, to say that whenever a message is sent via interface u, its size is at most max :

[][u.dn.Send => sizeof(msg) <= max]_u

A protocol layer guarantees properties at its interfaces provided the environment obeys some assumptions :

[][u.dn.Send => sizeof(msg) <= max]_u

To find the properties of a stack, we prove a theorem about the conjunction of all the layers' assume-guarantee formulas.

Layer1 AND Layer2 AND Network => Properties of Stack

Verifying ML Protocols

We verify the protocol layers using the Nuprl Proof Development System as shown in the following diagram:

[Diagram of Nuprl Verification Process]

[Back]: See also Securing and Hardening the Horus System


Copyright Thu Apr 25 23:42:35 EDT 1996 by Cornell University.
Maintained by David A. Karr. Send corrections to karr@cs.cornell.edu.