Linear algebra-based Proof of Retrievability protocol for ensuring data integrity
Authors: Michael Hanling and Dr. Daniel Roche
-
Requirements:
- MPI
- OpenSSL (minimum 1.1.1.1f)
- CMake (minimum 3.13)
- For testing: GNU time, bc, bash
On Debian, based systems, you can get all these by running (as root)
apt install cmake libssl-dev openmpi-bin time bc
-
Sub-packaged software components (no extra download needed, just crediting the authors!):
-
Installation and running:
-
Create a build directory from top level:
mkdir build; cd build/
-
Run cmake:
cmake ..
-
Compile with
make
-
(Optional, for testing) create random datafile
bin/random_file /path/to/datafile size_spec
-
Initialize config files:
# create client and server config simultaneously bin/dual_init /path/to/datafile /path/to/client_config /path/to/server_config /path/to/merkle_config /path/to/merke_tree # (then copy files to client/server) #### --OR-- #### # create client config bin/client_init /path/to/datafile /path/to/client_config /path/to/merkle_config /path/to/merke_tree # create server config bin/server_init /path/to/datafile /path/to/server_config /path/to/merkle_config /path/to/merke_tree
-
Start server
# note, server must be run from build directory because of MPI bin/server [-p PORT] [-h MPI_HOSTFILE] /path/to/server_config /path/to/merkle_config
-
Connect with client
bin/client [-s SERVER_HOSTNAME] [-p PORT] /path/to/client_config /path/to/merkle_config # follow screen prompts to audit, read, or update
-
-
-
Recreate tests from the paper
-
Single-core init/audit/checksums to directory
singlecore_results
:CAUTION: This will create a 1TB file (among others) and take many hours to run...
../util/time_runs.sh ../singlecore_tests.txt ../singlecore_results
-