aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFranklin Wei <me@fwei.tk>2018-07-31 17:05:01 -0400
committerFranklin Wei <me@fwei.tk>2018-07-31 17:05:01 -0400
commit6e8d99ef0f82ae7cac917c45ee279ca851bcd275 (patch)
treeccc0b48dc8a0cd429d596f2b3f7d2a262bca8c2b
parent452ec03a9757fdfdec27f2af30b25225f3bb0db6 (diff)
downloadcsaa-6e8d99ef0f82ae7cac917c45ee279ca851bcd275.zip
csaa-6e8d99ef0f82ae7cac917c45ee279ca851bcd275.tar.gz
csaa-6e8d99ef0f82ae7cac917c45ee279ca851bcd275.tar.bz2
csaa-6e8d99ef0f82ae7cac917c45ee279ca851bcd275.tar.xz
Add README.md
About time, huh? It's still incomplete and difficult to read, but it's a start.
-rw-r--r--README.md91
1 files changed, 91 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..2beb900
--- /dev/null
+++ b/README.md
@@ -0,0 +1,91 @@
+# Cloud Storage Assurance Architecture (CSAA) Proof-of-Concept
+
+## Introduction
+
+CSAA is a system first described in [Mohanty et
+al.](https://fwei.tk/csass.pdf). It is designed to allow the secure
+storage of data with an untrusted service provider, bootstrapping
+trust from a "trusted module."
+
+This program is an implementation of CSAA, adapted for use with
+storing Docker containers. It should be considered research-quality
+code, and does not (and can not!) provide any guarantees to the
+trustworthiness of the trusted module, since it executes on a
+general-purpose computer, in the same monolithic executable as the
+untrusted service.
+
+## Usage
+
+### Prerequisites
+
+You need the following packages for compiling and testing this
+program: SQLite3, OpenSSL, GCC, G++, Make, and the `bc` calculator.
+
+On Debian, type:
+
+```
+sudo apt-get install libsqlite3-dev libssl-dev sqlite3 make gcc g++ bc
+```
+
+### Compiling
+
+```
+make
+```
+
+This will produce three executables: `client`, `server`, and `postprocess`.
+
+`client` and `server` implement the CSAA architecture; `postprocess`
+is for processing timing data and generating graphs -- you should not
+use it directly.
+
+### Generating Timing Graphs
+
+#### Prepopulating Databases
+
+Edit `service_provider.c` and `dummy_service.c` to uncomment the
+`PREPOPULATE` macro in each one, then recompile and run:
+
+```
+./prepopulate2.sh
+./prepopulate_dummy.sh
+```
+
+This should populate the `databases` directory with prepopulated
+databases and module states.
+
+#### Running Tests
+
+Edit `testmain_preinit.sh` to specify the desired logleaves range and
+number of trials.
+
+Then run:
+
+```
+./testmain_preinit.sh
+```
+
+This will produce results in the `results` directory.
+
+#### Producing Graphs
+
+Run:
+
+```
+cd results
+../tabulate.sh
+```
+
+Your working directory must be in the `results` directory for this to
+work. This will produce many files with the prefix `final_` in the
+`results` directory.
+
+To use GnuPlot to produce graphs from these, change to the project
+root directory, and run:
+
+```
+./genlabels.sh
+./graph.gnu
+```
+
+This will generate five graphs with the prefix `graph_`.