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

  • COM from PRG (and hence from OWF): Naor’s construction uses a PRG to commit to a single bit in a statistically binding, computationally hiding scheme — Naor91
  • COM is complete for MPC in the semi-honest model: any two-party functionality can be computed given a commitment scheme — GMW87
  • OT can be constructed from any non-trivial commitment scheme — Kil88
  • COM from any CPA-secure PKE scheme: encrypt under a freshly generated public key; the ciphertext is a statistically binding commitment
  • Statistically hiding COM is equivalent to SZK BPP — standard
  • COM from DDH: the Pedersen commitment scheme is perfectly hiding and computationally binding