vprove ◆ void01x ◆ Prove things without revealing them ◆vprove ◆ void01x ◆ Prove things without revealing them ◆vprove ◆ void01x ◆ Prove things without revealing them ◆vprove ◆ void01x ◆ Prove things without revealing them ◆vprove ◆ void01x ◆ Prove things without revealing them ◆vprove ◆ void01x ◆ Prove things without revealing them ◆
PoK — proof of key (schnorr, prove you know a secret)
PoP — proof of password (schnorr over a stretched password)
PoM — proof of membership (merkle inclusion)
PoL — proof of location (commit-reveal proximity)
schnorr sigma protocol over a 2048-bit safe prime (RFC3526 group 14), fiat-shamir
non-interactive. real zero-knowledge proof of knowledge — the verifier learns nothing
about your secret beyond the fact that you know it. this is a toy/educational
implementation (exponents reduced mod the prime subgroup order q = (p-1)/2, and commitments and proofs are checked for subgroup membership), not audited crypto.
your secret
verify
same schnorr math as PoK, but the secret is derived from a password via PBKDF2
(750k iterations, SHA-256) with a salt — like a login system, except the password
never gets sent anywhere, ever, including during verification.
your password
verify
standard merkle inclusion proof, SHA-256. proves one entry is a member of a list
without revealing the rest of the list. it does reveal which entry you're proving —
true "hidden which member" proofs need zk-SNARKs, which is out of scope here.
your list
verify
commit-reveal, not full zero-knowledge — be honest about that. you commit to your
exact coordinates now (hash + random nonce), which locks them in without revealing
anything. later you reveal the coordinates + nonce, and anyone can check the hash
matches AND that you're within the radius. this proves you couldn't have picked your
location after the fact — it does not hide your coordinates at reveal time.