Skip to content

Latest commit

 

History

History
39 lines (28 loc) · 1.57 KB

README.md

File metadata and controls

39 lines (28 loc) · 1.57 KB

gRPC client/server for zero-knowledge proof authentication

Chaum Pederson Zero-Knowledge Proof in Rust. Chaum Pederson is a zero-knowledge proof protocol that allows a prover to prove to a verifier that they know a discrete logarithm without revealing the discrete logarithm. This is useful for authentication, where the prover can prove to the verifier that they know a secret without revealing the secret.
In zero-knowledge proof authentication, the prover and verifier are both clients of a server. The server has a public key and a private key. The prover knows the private key and the verifier knows the public key. The prover wants to prove to the verifier that they know the private key without revealing the private key. The verifier wants to verify that the prover knows the private key without learning the private key.

Usage

You can run the program with Docker. First build the containers:

$ docker-compose build zkpserver

Run the container:

$ docker-compose run --rm zkpserver

In the remote terminal that appears run the server:

root@e84736012f9a:/zkp-server# cargo run --bin server --release

Open a new terminal on your machine and connect to the container:

$ docker container ls
CONTAINER ID   IMAGE                  COMMAND   CREATED          STATUS          PORTS     NAMES
e84736012f9a   zkp-course-zkpserver   "bash"    20 minutes ago   Up 20 minutes             zkp-course_zkpserver_run_b1f3fa2cd94a

$ docker exec -it e84736012f9a /bin/bash

Run the client:

root@e84736012f9a:/zkp-server# cargo run --bin client --release