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.
-
Secp256k1 (Note: checkout the correct branch as listed here)
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
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.
Before starting test, in folder Server
, we need to create 3 subfolders: H_X, H_Y and U.
- Launch server:
$ cd Server
$ ./Server
- Launch client:
$ cd Client
$ ./Client [num_data_blocks]
You can start server/client applications in any order.
Comment/uncomment the line 7 #define ENABLE_KZG 1
of file config.hpp and recompile.
Change the constant defined at the line 5 #define TOP_CACHING_LEVEL 10
of file config.hpp and recompile.
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.
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},
}
For any inquiries, bugs, and assistance on building and running the code, please contact me at [email protected].