This project provides a practical timelock encryption system built on a threshold randomness network, allowing messages and files to be encrypted to a specific future time.
This is an educational project submitted in partial fulfillment of the requirements for Applied Cryptography at the American University of Beirut.
[Link] Nicolas Gailly, Kelsey Melissaris, and Yolan Romailler. tlock: Practical timelock encryption from threshold BLS. Cryptology ePrint Archive, Paper 2023/189, 2023.
You can easily use the docker compose file to set up the project locally.
docker compose up --buildThe project consists of a Rust project in the tlock directory which can be built and run using cargo.
cd tlock
cargo build
cargo runIt will spin up a server on localhost:3000 by default. You should create a capsules.db file in the root of the Rust project for the SQLite database.
The Rust code will take care of initializing the database schema on first run.
You will also need mailhog in order to test the email functionality. You can run mailhog using docker:
docker run -d -p 1025:1025 -p 8025:8025 mailhog/mailhogYou will need to install and configure MinIO for the object storage functionality. You can run MinIO using docker:
docker run -p 9000:9000 -p 9001:9001 --name minio1 -e "MINIO_ROOT_USER=minioadmin" -e "MINIO_ROOT_PASSWORD=minioadmin" -v /mnt/data:/data -v /mnt/config:/root/.minio minio/minio server /data --console-address ":9001"The frontend is a React project located in the web directory. You can install the dependencies and run it using npm.
cd web
npm install
npm run dev
