Commitment scheme
A commitment scheme is a two-phase protocol between a committer and a verifier in which the committer binds to a value during the commit phase (without revealing it), and then reveals the value in the open phase. The binding property ensures the committer cannot change the value after committing; the hiding property ensures the verifier learns nothing about the value before opening.
Syntax
A commitment scheme is a tuple of efficient algorithms with respect to a message space , commitment space , and decommitment space :
- is a randomized algorithm that outputs public parameters
- is a randomized algorithm that takes a message and randomness , and outputs a commitment and decommitment string
- is a deterministic algorithm that opens a commitment using decommitment , returning the message or on failure.
Properties
Correctness
For all , , and with , we have with probability 1.
Hiding
The commitment reveals no information about before opening. Computationally:
is negligible, where the game samples , receives from , picks , sends to , and outputs .
A commitment is statistically hiding if this holds even against computationally unbounded adversaries.
Binding
No efficient committer can open a commitment to two different messages:
is negligible, where the game samples , receives from , and outputs 1 iff , , and .
A commitment is statistically binding if this holds even against computationally unbounded adversaries.
Note: Perfect (simultaneously statistically hiding and statistically binding) commitment schemes are impossible by a simple entropy argument. The four regimes are: (1) perfectly binding / computationally hiding, (2) computationally binding / statistically hiding, (3) computationally binding / computationally hiding, and (4) perfectly binding / perfectly hiding — which is impossible.
Variations
Trapdoor commitments
A trapdoor commitment (or equivocable commitment) is a commitment scheme with an additional trapdoor (generated alongside ) that allows equivocation: given , for any commitment and any two messages , one can produce decommitment strings with and . Used in zero-knowledge proof constructions.
Vector commitments
A vector commitment allows committing to an ordered vector such that one can later open any single position with a short proof. Used in verifiable data structures and SNARKs.
Other results
- Hash function ⇒ PRG
- PRG ⇒ COM
- COM ⇒ MPC
- COM ⇒ OT
- PKE ⇒ COM
- Statistically hiding COM is equivalent to SZK BPP — standard
- DDH ⇒ COM
Participates in
Builds on Commitment scheme
Produces Commitment scheme
Barriers