Giter Club home page Giter Club logo

porla's Introduction

Efficient Dynamic Proof of Retrievability for Cold Storage

x86

This is our full implementation for our Porla paper.

WARNING: This is an academic proof-of-concept prototype and has not received careful code review. This implementation is NOT ready for production use.

Required Libraries

  1. NTL v11.5.1

  2. ZeroMQ v4.8.1

  3. Secp256k1 (Note: checkout the correct branch as listed here)

  4. Gnark-crypto v0.6.0

You can run the script file auto_setup.sh to automatically install the required libraries and build source code.

sudo ./auto_setup.sh

Otherwise, you may need to modify paths of these libraries in the Makefile:

porla/Makefile

Build & Compile

A Go compiler is needed because we use gnark-crypto library for our KZG-based scheme. Extract gnark-crypto v0.6.0.tar.gz and copy file main.go into the folder v0.6.0/gnark-crypto-0.6.0 and compile it into a shared object dynamic library using the following command:

go build -buildmode=c-shared -o libmultiexp.so main.go

Then copy file libmultiexp.so into the folder /usr/lib

Go to the folder EDPOR and execute:

make

This is going to create executable files Server in Server folder and Client in Client folder.

Testing

Before starting test, in folder Server, we need to create 3 subfolders: H_X, H_Y and U.

  1. Launch server:
$ cd Server
$ ./Server
  1. Launch client:
$ cd Client
$ ./Client [num_data_blocks]

You can start server/client applications in any order.

Configuring IPA-based scheme and KZG-based scheme:

Comment/uncomment the line 7 #define ENABLE_KZG 1 of file config.hpp and recompile.

Configuring top-caching level:

Change the constant defined at the line 5 #define TOP_CACHING_LEVEL 10 of file config.hpp and recompile.

Error Correction Code (ICC)

Folder icc contains MATLAB code to examplify how to build Incrementally Constructible Code (ICC) implemented in Porla, as well as how to use ICC to recover data.

Citing

If the code is found useful, we would be appreciated if our paper can be cited with the following bibtex format

@inproceedings{le2022porla,
      author = {Tung Le and Pengzhi Huang and Attila A. Yavuz and Elaine Shi and Thang Hoang},
      title = {Efficient Dynamic Proof of Retrievability for Cold Storage},
      year = {2023},
      url = {https://eprint.iacr.org/2022/1417},
      doi = {10.14722/ndss.2023.23307},
      booktitle = {Network and Distributed Systems Security (NDSS) Symposium 2023},
}

Further Information

For any inquiries, bugs, and assistance on building and running the code, please contact me at [email protected].

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.