Added README

This commit is contained in:
Michael Rosenberg
2022-09-01 02:23:00 -04:00
parent 3eeae8eafe
commit 3a803bf1de

16
README.md Normal file
View File

@@ -0,0 +1,16 @@
# AUTHDECODE
This crates implements the AUTHDECODE functionality described in the [`tlsn` repo](https://github.com/tlsnotary/tlsn/pull/39). It uses the [`ark-poly-commit`](https://github.com/arkworks-rs/poly-commit) crate for proofs that are generic over polynomial commitment schemes.
What is implemented:
* The `R_binary` relation has a prover and verifier, and unit tests
* Selective revelation is implemented and benchmarked. To see the benchmarks, run `cargo test --release -- --nocapture`
* The skeleton of the `R_decode` prover
What remains to be done:
* Complete the implementation of `R_decode`. The protocol is simple, but it seems that `ark-poly-commit` is missing a definition of scalar multiplication on commitments. This is necessary in order to compute the `Δ·com_p` term in `R_decode`. Fortunately, it exposes [addition](https://docs.rs/ark-poly-commit/0.3.0/ark_poly_commit/kzg10/struct.Commitment.html#impl-AddAssign%3C(%3CE%20as%20PairingEngine%3E%3A%3AFr%2C%20%26%27a%20Commitment%3CE%3E)%3E) on the relevant types, so scalar multiplication isn't far off.
* Optional: implement the `R_pack` protocol to pack plaintext bits into bytes
* Use [`merlin`](https://docs.rs/merlin/latest/merlin/index.html) transcripts to generate challenges. Currently, they're just placeholder values. A secure Fiat-Shamir'ed protocol should be hashing the whole transcript.
* Ensure proper hiding for plaintext polynomials. It might already be the case that this works, via the `supported_hiding_bound` in [`PolynomialCommitment::trim`](https://docs.rs/ark-poly-commit/0.3.0/ark_poly_commit/trait.PolynomialCommitment.html#tymethod.trim).