A proof is only as good as the thing it points at
By Dylan Wolpe
The short version
- A zero-knowledge proof establishes that a computation was performed correctly on some input. It says nothing about whether the input was genuine.
- Without a signature chain back to an authoritative issuer, a selective-disclosure proof only demonstrates that the prover did their own arithmetic correctly on numbers they chose.
- This is why the bottleneck in verifiable credentials is institutional, not mathematical: the cryptography has been ready for years and the signed sources have not.
- Three anchors work in practice — signed institutional email, open banking APIs, and attested sessions — and each has a different and uneven coverage footprint.
There is a persistent description of zero-knowledge proofs as technology that proves things without revealing them. It is close enough to be useful and wrong in the place that matters: a proof does not establish a fact about the world. It establishes that a computation was carried out faithfully on an input. Everything else rests on where the input came from.
What a proof actually asserts
Strip a selective-disclosure proof to its logical content and it says:
"There exists an input X such that:
- X hashes to a value the verifier already holds, and
- f(X) = true
and I know such an X, without revealing it."If fis “the credits in this statement sum to more than 40,000”, the proof establishes that some document with that property exists and that the prover holds it. Whether the document is a real bank statement is a question the proof does not address and cannot.
Prove a threshold from a statement I typed myself and the proof is flawless. The claim is worthless. Both statements are true at once, and that gap is the entire problem.
Why this is the actual bottleneck
The cryptography for this has been practical for years. Proof systems are fast enough, libraries exist, the verifier cost is trivial. If mathematics were the constraint, we would already have stopped emailing PDFs of our financial lives to letting agents.
The constraint is that verifiers need a reason to believe the input, and supplying that reason requires institutions to sign what they issue in a form that survives being forwarded by the subject. That is an ecosystem change, not a technical one, and it moves at the speed institutions move.
The three anchors that work
| Anchor | Strength | The catch |
|---|---|---|
| Signed institutional email | Genuine cryptographic link to the issuing domain | Signatures break in transit; keys rotate and old ones are discarded |
| Open banking API | Strongest — fetched from the source, not relayed | Coverage is thin outside jurisdictions that mandated it |
| Attested session | Attests what a server actually served | Still maturing; depends on the institution's cooperation in practice |
Signed email is the most widely available and the most underrated. Your bank already signs its outbound mail, and that signature covers the message and its attachments. It is a real, checkable chain back to the institution that exists today, for free, with no cooperation required — which is why we spent a disproportionate amount of engineering on verifying those signatures correctly rather than approximately.
Its fragility is real, though. Signatures are validated against keys published in DNS, and institutions rotate them; once an old key is withdrawn, an old message can no longer be verified even though it was perfectly genuine. Some mail systems modify messages in transit and break the signature outright. This gives the whole approach an expiry behaviour that nobody advertises.
How to evaluate a product in this space
One question does most of the work:
“What stops me generating the underlying document myself?”
- A good answer names a specific signature chain and tells you which institutions it covers and which it does not.
- A weaker answer describes the proof system in detail and never mentions the source. That is a product proving arithmetic.
- A dishonest answer is “it is cryptographically guaranteed” without saying what is guaranteed.
Why it is still worth building
Because coverage is improving in one direction only. Every institution that starts signing, every open banking mandate, every attested-session deployment widens the set of claims that can be proved instead of disclosed. The infrastructure that consumes those anchors should exist before the anchors are universal, or the moment arrives and nothing is ready to use it.
The honest position is that the disclosure half is finished and the anchoring half is partial. We would rather state it that way than imply otherwise to people whose financial records are currently sitting in a stranger’s inbox — see the income piece for what that looks like in practice.
Questions people ask about this
What is a trust anchor?
The authoritative source a proof ultimately traces back to — typically a signature from the institution that issued the underlying data. It is what converts 'this computation was done correctly' into 'this claim about the world is true'.
Can a zero-knowledge proof prove my income?
It can prove that a figure was correctly derived from a document, without revealing the document. It cannot prove the document is a genuine bank statement. That part depends entirely on the document carrying a verifiable signature from the bank, which is a question about your bank rather than about cryptography.
Why hasn't selective disclosure replaced sending documents?
Because the mathematics was never the constraint. Verifiers need a reason to believe the input, which requires institutions to sign what they issue in a form that survives being forwarded. Coverage is improving and remains uneven by institution and jurisdiction.
Is a self-signed proof worth anything?
It demonstrates internal consistency and nothing more. If I generate a document, compute a figure from it and prove the computation, the proof is valid and the claim is unsupported. Treat any product that cannot explain its anchor as offering exactly this.