Cloud Storage Assurance Architecture (CSAA) Proof-of-Concept
CSAA is a system first described in Mohanty et al.. 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.
You need the following packages for compiling and testing this
program: SQLite3, OpenSSL, GCC, G++, Make, and the
On Debian, type:
sudo apt-get install libsqlite3-dev libssl-dev sqlite3 make gcc g++ bc
Also, graphs require Gnuplot:
sudo apt-get install gnuplot
This will produce three executables:
server implement the CSAA architecture;
is for processing timing data and generating graphs -- you should not
use it directly.
Generating Timing Graphs
dummy_service.c to uncomment the
PREPOPULATE macro in each one. Also, disable error checking in
main.c (perror() block).
prepopulate_dummy.sh scripts to have
the desired logleaves range (default is 10-12).
Then recompile and run:
This should populate the
databases directory with prepopulated
databases and module states. This step only needs to be done once; the
generated databases can be re-used as needed.
testmain_preinit.sh with the desired logleaves range and number
of trials as its command-line arguments. For example, the following
will run logleaves 10-25 with 5 trials for each logleaves value:
./testmain_preinit.sh 10 25 5
This script will produce results in the
cd results ../tabulate.sh 10 25 5
Your working directory must be in the
results directory for the
second command to work. The arguments to
tabulate.sh must be exactly
the same as those passed to
This step will produce many files with the prefix
final_ in the
results directory. These are the final data.
To use Gnuplot to produce graphs from these, change to the project root directory and run:
This will generate graphs with the prefix