/la-por

Linear algebra-based Proof of Retrievability protocol for ensuring data integrity

Primary LanguageCThe UnlicenseUnlicense

la-por

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:

    1. Create a build directory from top level: mkdir build; cd build/

    2. Run cmake: cmake ..

    3. Compile with make

      1. (Optional, for testing) create random datafile

        bin/random_file /path/to/datafile size_spec
      2. 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
      3. 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
      4. 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