I've been reading about Zero Knowledge Proofs with some interest, but I'm still unclear if it can be used to solve my real-life problem.

I'm wondering if someone can help me understand a little better how they work - intuitively it seems possible.

Let's assume I have 3 bank accounts with different balances, 1 balance is known, as read-only credentials to access the account are made public, but the second and third accounts are private, with the credentials kept secret.

Would it be possible to use a Zero Knowledge Proof to conclusively prove that the balances of the second and third accounts are what I say they are?

Including a brief description of what a ZKP is (quoting the ZKP article at Wikipedia):

In cryptography, a zero-knowledge proof or zero-knowledge protocol is a method by which one party (the prover) can prove to another party (the verifier) that a given statement is true, without conveying any information apart from the fact that the statement is indeed true.

So, extending this definition, the statement in my example would be: the balance of account A = X. Which the verifier would require the prover to prove is true.

  • 1
    $\begingroup$ Can you ask the bank to just sign a statement saying that the balance of account A is X? What would the verifier do with the information? What are you trying to conceal from whom with a zero-knowledge proof? $\endgroup$ Commented Aug 8, 2017 at 19:27
  • $\begingroup$ I must not understand your scenario, because something seems or trivial, or impossible. There is a third, trusted party, the bank holding accounts A, B and C, that has authority over what's the balance of these accounts. For your account A, people trust that what you say about it is true, because there's public read access on the bank's site. However, the only way to verify the private amounts on B and C is to show that account to the person you need to prove it, give them a certificate from the bank, or to have them ask the bank, no ? What am I missing ? $\endgroup$
    – entrop-x
    Commented Dec 7, 2017 at 5:40

1 Answer 1


You would need something to prevent do what you would do if those balances were what you said they are from causing the verifier to accept.

That main way of getting that is the prover and verifier both have a statistically binding encapsulation for each of those balances, as described in the paper Improved Efficiency for CCA-Secure Cryptosystems Built Using Identity-Based Encryption (PDF), and the prover additionally has a decapsulation string for each of those.

If you weaken from proofs to arguments as described in the paper Zero Knowledge and Soundness are Symmetric (PDF), then you could let the encapsulation scheme(s) be only computationally binding or instead have the balances be signed in a suitable format, where the prover and verifier both know the signature verification key(s).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.