Pedersen commitments over a prime-order group family #
Over a PrimeOrderGroupFamily, Pedersen's commitment scheme ([Ped92], Section 3,
Theorem 3.1; [BS23], Section 8.12, Definition 8.8, Section 10.6.1, Fact 10.3 and
Theorem 10.4, and Exercise 20.5) uses a group description d and a public commitment key
h = α • g : F.Carrier d generated by a secret exponent α : ZMod (F.order d). To commit to a
message m : ZMod (F.order d) with randomness r : ZMod (F.order d), the committer computes
pedersenCommit d h m r = m • g + r • h.
On encoded group elements and natural-number exponents, encodePedersenCommit computes
F.encode d (F.pedersenCommit d h m r) in polynomial time from (d, encode h, m, r) using
F.encode d (F.generator d), F.smul, and F.add.
We instantiate the general public-parameter CommitmentScheme (pedersenScheme) with canonical
binary message words (ValidPedersenMessage), commitment-and-opening pair law
(pedersenCommitPairLaw), and verification algorithm pedersenVerify (V(m, c, o)), and
establish:
- Algebraic and homomorphic laws (
pedersenCommit_zero,pedersenCommit_add,pedersenCommit_neg,pedersenCommit_sub,pedersenCommit_smul) and polynomial-time encoded evaluation (encodePedersenCommit,encodePedersenCommit_encode,computableInPolyTime_encodePedersenCommit). - Unconditional hiding (
pedersenCommitLaw_eq_uniform_of_ne_zero,pedersenCommitLaw_eq_of_ne_zero,pedersenHidingForKey_eq_of_ne_zero,advantage_pedersenHidingGame_le,negligible_advantage_pedersenHidingGame,pedersenScheme_statisticalHiding): for every non-identity commitment keyh ≠ 0, a uniform blinding exponentr ← PMF.uniformOfFintype (ZMod (F.order d))makespedersenCommit d h m runiformly distributed onF.Carrier dand independent ofm. Consequently, at any fixeddandh ≠ 0, the chosen-message hiding distributions forbit = falseandbit = trueinF.pedersenScheme.hidingForKey ⟨d, h⟩are identical against every (even computationally unbounded) two-stage adversaryEncryption.WordAdversary. When the key exponentα ← PMF.uniformOfFintype (ZMod (F.order d))is drawn uniformly from all ofZMod (F.order d)(matchingdiscreteLogGameand [BS23], Exercise 20.5), the degenerate keyα = 0occurs with probability1 / F.order d, bounding any unbounded adversary's hiding advantage inF.pedersenScheme.hidingGame (F.pedersenKeyDist setup)by1 / mwhenever supported groups have order at leastm. - Computational binding under the discrete-logarithm assumption (
pedersenVerify,pedersenExtractNat,pedersenToDLAdversary,succProbability_pedersenBindingGame_le_discreteLogGame,isPPTOn_pedersenToDLAdversary,DiscreteLog.pedersenBinding,DiscreteLog.pedersenScheme_binding): any verified double opening(c, (m₀, o₀), (m₁, o₁))withm₀ ≠ m₁andpedersenVerify d h mᵢ c oᵢ = truefori ∈ {0, 1}underh = α • ghas(ofBits m₀ : ZMod q) ≠ (ofBits m₁ : ZMod q), forces(ofBits o₀ : ZMod q) ≠ (ofBits o₁ : ZMod q), and yieldsα = (o₁ - o₀)⁻¹ * (m₀ - m₁)moduloq([Ped92], Section 3, Theorem 3.1; [BS23], Section 10.6.1, Fact 10.3 and Theorem 10.4), computed in polynomial time via Fermat's little theorem (pedersenExtractNat). This gives an exact zero-loss reduction fromF.pedersenScheme.bindingGametodiscreteLogGame.
Main definitions #
Cslib.Crypto.PrimeOrderGroupFamily.pedersenCommit,Cslib.Crypto.PrimeOrderGroupFamily.encodePedersenCommit: algebraic and encoded Pedersen commitment evaluation.Cslib.Crypto.PrimeOrderGroupFamily.pedersenCommitLaw,Cslib.Crypto.PrimeOrderGroupFamily.pedersenCommitPairLaw: the commitment element distribution and the(c, o)commitment-and-opening pair distribution for a uniform blinding exponentr : ZMod (F.order d).Cslib.Crypto.PrimeOrderGroupFamily.ValidPedersenMessage,Cslib.Crypto.PrimeOrderGroupFamily.pedersenVerify: canonical message space and verification algorithmV(m, c, o).Cslib.Crypto.PrimeOrderGroupFamily.PedersenKey,Cslib.Crypto.PrimeOrderGroupFamily.pedersenKeyDist,Cslib.Crypto.PrimeOrderGroupFamily.pedersenScheme: Pedersen commitment packaged as a public-parameterCommitmentScheme.Cslib.Crypto.PrimeOrderGroupFamily.pedersenExtractNat,Cslib.Crypto.PrimeOrderGroupFamily.pedersenToDLAdversary: discrete-logarithm extractor and reduction from a binding adversary.
Main results #
Cslib.Crypto.PrimeOrderGroupFamily.pedersenCommit_add,Cslib.Crypto.PrimeOrderGroupFamily.pedersenCommit_smul,Cslib.Crypto.PrimeOrderGroupFamily.encodePedersenCommit_encode,Cslib.Crypto.PrimeOrderGroupFamily.computableInPolyTime_encodePedersenCommit: homomorphic laws and polynomial-time encoded commitment evaluation.Cslib.Crypto.PrimeOrderGroupFamily.pedersenCommitLaw_eq_uniform_of_ne_zero,Cslib.Crypto.PrimeOrderGroupFamily.pedersenCommitLaw_eq_of_ne_zero,Cslib.Crypto.PrimeOrderGroupFamily.pedersenHidingForKey_eq_of_ne_zero,Cslib.Crypto.PrimeOrderGroupFamily.advantage_pedersenHidingGame_le,Cslib.Crypto.PrimeOrderGroupFamily.negligible_advantage_pedersenHidingGame,Cslib.Crypto.PrimeOrderGroupFamily.pedersenScheme_statisticalHiding: perfect hiding forh ≠ 0and unconditional1 / mhiding bound over uniformα : ZMod (F.order d).Cslib.Crypto.PrimeOrderGroupFamily.succProbability_pedersenBindingGame_le_discreteLogGame,Cslib.Crypto.PrimeOrderGroupFamily.isPPTOn_pedersenToDLAdversary,Cslib.Crypto.PrimeOrderGroupFamily.DiscreteLog.pedersenBinding,Cslib.Crypto.PrimeOrderGroupFamily.DiscreteLog.pedersenScheme_binding: computational binding under the discrete-logarithm assumption.
References #
- T. P. Pedersen, Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing, Section 3, Theorem 3.1.
- D. Boneh, V. Shoup, A Graduate Course in Applied Cryptography, Version 0.6, Section 8.12 (Definition 8.8, p. 344), Section 10.6.1 (Fact 10.3 and Theorem 10.4, pp. 414–415), and Exercise 20.5 (pp. 843–844).
Algebraic and encoded Pedersen commitments #
Algebraic Pedersen commitment ([Ped92], Section 3; [BS23], Section 10.6.1 and
Exercise 20.5): commit to message m : ZMod (F.order d) with randomness r : ZMod (F.order d)
under commitment key h : F.Carrier d as m • g + r • h.
Instances For
Additive homomorphism of Pedersen commitments: committing to (m₁ + m₂, r₁ + r₂) equals
the sum of the individual commitments.
Scalar-multiplication homomorphism of Pedersen commitments.
Under a commitment key h = α • g, pedersenCommit d (α • g) m r = (m + r * α) • g.
Two openings (m₀, r₀) and (m₁, r₁) produce the same commitment under h = α • g if and
only if m₀ + r₀ * α = m₁ + r₁ * α in ZMod (F.order d).
encodePedersenCommit computes F.encode d (F.pedersenCommit d h m r) on encoded group
elements.
Encoded Pedersen commitment evaluation is computable in polynomial time.
Unconditional hiding and CommitmentScheme packaging #
The distribution of F.pedersenCommit d h m r when r is drawn uniformly from
ZMod (F.order d).
Instances For
Perfect hiding for any non-identity commitment key h ≠ 0 ([Ped92], Section 3,
Theorem 3.1): for every message m : ZMod (F.order d), F.pedersenCommitLaw d h m equals the
uniform distribution (PMF.uniformOfFintype (ZMod (F.order d))).map (· • F.generator d) on
F.Carrier d.
Perfect hiding ([Ped92], Section 3, Theorem 3.1): for any h ≠ 0 and any two
messages m₀, m₁ : ZMod (F.order d), the commitment distributions F.pedersenCommitLaw d h m₀ and
F.pedersenCommitLaw d h m₁ are identical.
Bind form of pedersenCommitLaw_eq_uniform_of_ne_zero: for any h ≠ 0 and message m,
sampling r ← PMF.uniformOfFintype (ZMod (F.order d)) and passing F.pedersenCommit d h m r to a
continuation f has the same distribution as sampling γ ← PMF.uniformOfFintype (ZMod (F.order d))
and passing γ • F.generator d.
A message word m : List Bool is a canonical Pedersen message for group description d if
ofBits m < F.order d and m is the canonical binary representation (ofBits m).bits. Requiring
canonical binary representation ensures that distinct message words in the message space represent
distinct elements of ZMod (F.order d).
Instances For
The distribution of (F.encode d (F.pedersenCommit d h m r), r.val.bits) (encoded commitment
string and canonical binary opening string) when r is drawn uniformly from ZMod (F.order d).
Instances For
The commitment-string marginal of pedersenCommitPairLaw is
(pedersenCommitLaw d h m).map (F.encode d).
Pedersen commitment verification V(m, c, o) ([BS23], Section 8.12, p. 344, and
Section 10.6.1, p. 414; [Ped92], Section 3): verify that m is a canonical message word for
d (ofBits m < F.order d and (ofBits m).bits = m) and that recomputing the commitment from
(ofBits m, ofBits o) under (d, h) yields c.
Instances For
pedersenVerify accepts only canonical Pedersen message words (ValidPedersenMessage).
Correctness of pedersenVerify: every (c, o) in the support of
pedersenCommitPairLaw d h (ofBits m) for a canonical message word m is accepted by
pedersenVerify d h m c o.
A Pedersen commitment key over F: a group description d : F.Desc together with a public
group element h : F.Carrier d.
Instances For
Draw d ← setup n and a uniform key exponent α ← PMF.uniformOfFintype (ZMod (F.order d)),
returning the Pedersen key ⟨d, α • g⟩ ([BS23], Exercise 20.5, pp. 843–844).
Instances For
Pedersen's commitment scheme as an instance of the general public-parameter CommitmentScheme
([BS23], Section 8.12, Definition 8.8, p. 344, and Section 10.6.1, p. 414;
[Ped92], Section 3).
Instances For
For any non-identity commitment key h ≠ 0, F.pedersenScheme.hidingForKey ⟨d, h⟩ produces the
exact same output distribution for any two hidden bits b₁ and b₂, against every (even
computationally unbounded) Encryption.WordAdversary.
At any non-identity commitment key h ≠ 0, the hiding advantage of any (computationally
unbounded) adversary between bit = false and bit = true is 0.
When every supported group at parameter n has order at least m, changing the hidden bit from
b₁ to b₂ changes acceptance probability in
F.pedersenScheme.hidingGame (F.pedersenKeyDist setup) by at most 1 / m (arising solely from the
1 / F.order d probability of sampling the degenerate key α = 0).
Unconditional hiding bound for Pedersen commitments: when every supported group at
parameter n has order at least m > 0, any (even computationally unbounded)
Encryption.WordAdversary has distinguishing advantage at most 1 / m in
F.pedersenScheme.hidingGame (F.pedersenKeyDist setup).
Asymptotic unconditional hiding of Pedersen commitments ([Ped92], Section 3,
Theorem 3.1; [BS23], Section 8.12, Definition 8.8, and Exercise 20.5): when every
supported group at parameter n has order at least m n > 0 and 1 / m n is negligible, every
(even computationally unbounded) Encryption.WordAdversary has negligible advantage in
F.pedersenScheme.hidingGame (F.pedersenKeyDist setup).
Statistical hiding (CommitmentScheme.StatisticalHiding) of pedersenScheme
([Ped92], Section 3, Theorem 3.1; [BS23], Section 8.12, Definition 8.8, and
Exercise 20.5).
Computational binding under the discrete-logarithm assumption #
Fermat's little theorem gives the modular inverse in pedersenExtractNat whenever
(r₁ : ZMod q) ≠ (r₀ : ZMod q).
Any valid Pedersen binding collision (c, (m₀, o₀), (m₁, o₁)) under h = α • g recovers α
via pedersenExtractNat ([Ped92], Section 3, Theorem 3.1; [BS23],
Section 10.6.1, Fact 10.3).
Turn a pedersenScheme binding adversary into a discrete-logarithm adversary by passing the
encoded Pedersen key encPair F.encDesc encBits input and extracting pedersenExtractNat in binary
from the two candidate openings ([BS23], Section 10.6.1, Theorem 10.4, pp. 414–415).
Instances For
Exact binding-to-discrete-logarithm reduction ([BS23], Section 10.6.1,
Theorem 10.4, pp. 414–415; [Ped92], Section 3, Theorem 3.1): for every security parameter
n, the success probability of adversary in
F.pedersenScheme.bindingGame (F.pedersenKeyDist setup) is at most the discrete-logarithm success
probability of pedersenToDLAdversary adversary.
pedersenToDLAdversary is uniform strict PPT whenever the binding adversary is.
Computational binding of Pedersen commitments under the discrete-logarithm assumption
([Ped92], Section 3, Theorem 3.1; [BS23], Section 8.12, Definition 8.8, and
Section 10.6.1, Theorem 10.4): if F.DiscreteLog setup holds, every uniform strict PPT adversary
succeeds in F.pedersenScheme.bindingGame (F.pedersenKeyDist setup) with negligible probability.
Computational binding (CommitmentScheme.Binding) of pedersenScheme under the
discrete-logarithm assumption ([Ped92], Section 3, Theorem 3.1; [BS23],
Section 8.12, Definition 8.8, and Section 10.6.1, Theorem 10.4).