More documentation

Sarah Jamie Lewis 2 years ago
parent cab45768d5
commit 5ba94fd57e

.gitignore vendored

@ -1,2 +1,3 @@

@ -2,5 +2,11 @@
Experimental Rust implementation of 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)

@ -1,4 +1,7 @@
#![doc(include = "../")]
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,