Library Apps.README

Coq Framework for security policies and proof of concept application - Guide

6.858 Project by Anders Kaseorg, Jason Gross, and Peng Wang To execute the application, run make, and then run ./pwmgr-ssb. You can pass -d, -dd, or -ddd for various levels of debug output. You should then enter a 16 character master key to use for encryption. The application syncs with the server every 5 seconds, currently. You can use the commands set <website> <password> and get <website>. You will need Coq 8.4 and various OCaml packages (such as extlib, ssl, and ocamlnet) to build. You can explore the source files via the html/ directory.

Trusted Code

The Framework Definitions

Require FunctionApp.

The Encryption Algorithm

Require AES GCM AESGCM.

The Encryption/Decryption Boxes

The Tick Box (Timing Side-Channel Avoidance Box)

Require TrustedTickBox.

The Tick Generator (interfaces with system clock)

Require TickGenerator.

The Server Box that puts together the encryption, decryption, and tick boxes

The top-level wiring diagram

No termination proof in this one.
Older version, which has a finished termination proof
Require ExamplePwMgr.

The trusted OCaml shims

We trust ExamplePwMgrWithSSBFullRuntime.ml and Runtime.ml

Semi-trusted Code

Display of warnings

We don't leak any information if we hide warnings from the user, but it's not a completely innocuous operation either.
Require PwMgrWarningBox.

Untrusted Code

Proven-correct Serialization and Deserialization

Waaaay too much code here.

Proven-correct FMapInterface that is also mergable and (de)serializable

UI Code

Require PwMgrUI.

HTTPS Code

Require PwMgrNet.