Dr. Greg Bernstein
September 3rd, 2024
* W3C “Invited Expert”, semi-retired, website: Grotto Networking
Previous we talked about tracking
It’s evil when done without our knowledge and/or consent.
Using a verifiable credential without the holders consent or knowledge.
Illicit use of a credential with complicity of the credential’s holder, i.e., somebody other than the intended holder is using the credential with the holder’s knowledge.
This is extremely difficult if the cryptography implemented correctly and signing key kept secret. This is what cryptographic papers are all about!
Holder has to get issuer involved in providing a “fresh” credential to satisfy verifier.
Sign(SK, PK, header, messages)
and
Verify(PK, signature, header, messages)
ProofGen(PK, signature, header, ph, messages, disclosed_indexes)
and
ProofVerify(PK, proof, header, ph, disclosed_messages, disclosed_indexes)
Note issuer is not involved
Holder Binding based on Public Key Cryptography
Pros: Prevents anyone else from using the credential without the holder’s consent. As strong as the ability of the holder to keep their private key secret.
Cons: Holder public key in VC is a unique identifer for the holder and allows tracking on every credential use.
From Wikipedia: TPM, older TPM 1.1, new TPM 2.0 includes Elliptic Curve Cryptography
Key secure element features used By Public Key Holder Binding:
From Wikipedia: Commitment Scheme
A commitment scheme is a cryptographic primitive that allows one to commit to a chosen value while keeping it hidden to others, with the ability to reveal the committed value later. Commitment schemes are designed so that a party cannot change the value or statement after they have committed to it: that is, commitment schemes are binding.
A Graduate Course in Applied Cryptography, Dan Boneh and Victor Shoup, section 8.12
From ZKProof Community Reference
A ZKP system is a specification of how a prover and verifier can interact for the prover to convince the verifier that the statement is true. The proof system must be complete, sound and ZK.
From ZKProof Community Reference
From ZKProof Community Reference
The theory of ZKPs distinguishes between proofs and arguments, as related to the computational power of the prover and verifier. Proofs need to be sound even against computationally unbounded provers, whereas arguments only need to preserve soundness against computationally bounded provers.
Typically the term proof is used unless more precision is needed.
Signal, secure, open source messaging app
Signal is the world’s most widely used truly private messaging app, and our cryptographic technologies provide extra layers of privacy beyond the Signal app itself. Since launching in 2013, the Signal Protocol—our end-to-end encryption technology—has become the de facto standard for private communication, protecting the contents of billions of conversations in WhatsApp, Google Messages, and many others. Signal also continues to invest in research and development in the pursuit of extending communications privacy.
From Signal’s Usernames and Ristretto Hashes
WindCadet.1117
C = sha512(nickname,discriminator)∗G1 + nickname∗G2 + discriminator∗G3
.
This is sent to signal by owner of username.See A Graduate Course in Applied Cryptography for special soundness and HVZK.
\[\begin{array}{rcl} g^{\alpha_z}h^{\beta_z} & = & g^{\alpha_t + \alpha c}h^{\beta_t + \beta c} \\ & = & g^{\alpha_t} h^{\beta_t} \cdot (g^\alpha h^\beta)^c \\ & = & u_t \cdot u^c \end{array}\]
From Wikipedia: Blind Signatures
In cryptography a blind signature is a form of digital signature in which the content of a message is disguised (blinded) before it is signed. The resulting blind signature can be publicly verified against the original, unblinded message in the manner of a regular digital signature.
From Wikipedia: Blind Signatures
Blind signatures are typically employed in privacy-related protocols where the signer and message author are different parties. Examples include cryptographic election systems and digital cash schemes.
From BBS Blind Signatures
The BBS digital signature scheme can be extended to support blind signatures functionality. In a blind signatures setting, the user (called the Prover in the context of the BBS scheme) will request a signature on a list of messages, without revealing those messages to the Signer (who can optionally also include messages of their choosing to the signature).
From Blind BBS Signatures
commit = Q_2 * secret_prover_blind + J_1 * msg_1 + ... + J_M * msg_M
where J_1
to J_M
are generators for the
holder’s secret (blind) messagesB = P1 + Q_1 * domain + H_1 * msg_1 + ... + H_L * msg_L + commit
where commit
comes from holderA = B * (1 / (SK + e))
where A
and e
form the final signature.