More documentation

This commit is contained in:
Sarah Jamie Lewis 2021-01-29 18:24:27 -08:00
parent cab45768d5
commit 5ba94fd57e
3 changed files with 13 additions and 0 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
/target
Cargo.lock
.idea/

View File

@ -2,5 +2,11 @@
Experimental Rust implementation of https://eprint.iacr.org/2021/089 using Ristretto.
A tag is a probabilistic cryptographic structure. When constructed for a given FuzzyMetaPublicKey it will pass the FuzzyMetaDetectionKey::test 100% of the time. For other public keys it will pass the test with probability gamma related to the security parameter of the system. This system provides the following security properties:
* Correctness: Valid tags for a public key for a key pair always validate when tested against the secret key
* Fuzziness: Invalid matches should produce false positives with probability p related to the security property (γ)
* Security: An adversarial server with access to Test oracle (i.e. the detection key) is unable to distinguish false positives from true positives. (Detection Ambiguity)

View File

@ -1,4 +1,7 @@
#![feature(test)]
#![deny(missing_docs)]
#![feature(external_doc)]
#![doc(include = "../README.md")]
use bit_vec::BitVec;
use curve25519_dalek::constants::RISTRETTO_BASEPOINT_POINT;
use curve25519_dalek::digest::Digest;
@ -114,7 +117,10 @@ impl Display for FuzzyMetaTag {
/// An identity keypair for generating and validating fuzzy meta tags.
pub struct FuzzyMetaTagKeyPair {
/// the detection key - this can be given to adversarial servers to help probabilistically
/// filter messages (with a false-positive rate derived from γ and a 0% false negative rate)
pub detection_key: FuzzyMetaDetectionKey,
/// the public key - this can be given to people who you want to contact you
pub public_key: FuzzyMetaPublicKey,
}