Applications
Coin flipping
Suppose Alice and Bob want to resolve some dispute via coin flipping. If they are physically in the same place, a typical procedure might be: # Alice "calls" the coin flip # Bob flips the coin # If Alice's call is correct, she wins, otherwise Bob wins If Alice and Bob are not in the same place a problem arises. Once Alice has "called" the coin flip, Bob can stipulate the flip "results" to be whatever is most desirable for him. Similarly, if Alice doesn't announce her "call" to Bob, after Bob flips the coin and announces the result, Alice can report that she called whatever result is most desirable for her. Alice and Bob can use commitments in a procedure that will allow both to trust the outcome: # Alice "calls" the coin flip but only tells Bob a ''commitment'' to her call, # Bob flips the coin and reports the result, # Alice reveals what she committed to, # Bob verifies that Alice's call matches her commitment, # If Alice's revelation matches the coin result Bob reported, Alice wins For Bob to be able to skew the results to his favor, he must be able to understand the call hidden in Alice's commitment. If the commitment scheme is a good one, Bob cannot skew the results. Similarly, Alice cannot affect the result if she cannot change the value she commits to. A real-life application of this problem exists, when people (often in media) commit to a decision or give an answer in a "sealed envelope", which is then opened later. "Let's find out if that's what the candidate answered", for example on a game show, can serve as a model of this system.Zero-knowledge proofs
One particular motivating example is the use of commitment schemes in zero-knowledge proofs. Commitments are used in zero-knowledge proofs for two main purposes: first, to allow the prover to participate in "cut and choose" proofs where the verifier will be presented with a choice of what to learn, and the prover will reveal only what corresponds to the verifier's choice. Commitment schemes allow the prover to specify all the information in advance, and only reveal what should be revealed later in the proof. Oded Goldreich, Silvio Micali, and Avi Wigderson,Signature schemes
The Lamport signature scheme is aVerifiable secret sharing
Another important application of commitments is in verifiable secret sharing, a critical building block of secure multiparty computation. In a secret sharing scheme, each of several parties receive "shares" of a value that is meant to be hidden from everyone. If enough parties get together, their shares can be used to reconstruct the secret, but even a malicious cabal of insufficient size should learn nothing. Secret sharing is at the root of many protocols forDefining the security
Formal definitions of commitment schemes vary strongly in notation and in flavour. The first such flavour is whether the commitment scheme provides perfect or computational security with respect to the hiding or binding properties. Another such flavour is whether the commitment is interactive, i.e. whether both the commit phase and the reveal phase can be seen as being executed by a cryptographic protocol or whether they are non-interactive, consisting of two algorithms ''Commit'' and ''CheckReveal''. In the latter case ''CheckReveal'' can often be seen as a derandomised version of ''Commit'', with the randomness used by ''Commit'' constituting the opening information. If the commitment ''C'' to a value ''x'' is computed as ''C:=Commit(x,open)'' with ''open'' the randomness used for computing the commitment, then ''CheckReveal (C,x,open)'' simply consists in verifying the equation ''C=Commit (x,open)''. Using this notation and some knowledge about mathematical functions and probability theory we formalise different versions of the binding and hiding properties of commitments. The two most important combinations of these properties are perfectly binding and computationally hiding commitment schemes and computationally binding and perfectly hiding commitment schemes. Note that no commitment scheme can be at the same time perfectly binding and perfectly hiding – a computationally unbounded adversary can simply generate ''Commit(x,open)'' for every value of ''x'' and ''open'' until finding a pair that outputs ''C'', and in a perfectly binding scheme this uniquely identifies ''x''.Computational binding
Let ''open'' be chosen from a set of size , i.e., it can be represented as a ''k'' bit string, and let be the corresponding commitment scheme. As the size of ''k'' determines the security of the commitment scheme it is called the security parameter. Then for all non-uniform probabilistic polynomial time algorithms that output and of increasing length ''k'', the probability that and is a negligible function in ''k''. This is a form ofPerfect, statistical, and computational hiding
Let be the uniform distribution over the opening values for security parameter ''k''. A commitment scheme is respectively perfect, statistical, or computational hiding, if for all the probability ensembles and are equal, statistically close, or computationally indistinguishable.Impossibility of universally composable commitment schemes
It is impossible to realize commitment schemes in the universal composability (UC) framework. The reason is that UC commitment has to be ''extractable'', as shown by Canetti and Fischlin and explained below. The ideal commitment functionality, denoted here by ''F'', works roughly as follows. Committer ''C'' sends value ''m'' to ''F'', which stores it and sends "receipt" to receiver ''R''. Later, ''C'' sends "open" to ''F'', which sends ''m'' to ''R''. Now, assume we have a protocol ''π'' that realizes this functionality. Suppose that the committer ''C'' is corrupted. In the UC framework, that essentially means that ''C'' is now controlled by the environment, which attempts to distinguish protocol execution from the ideal process. Consider an environment that chooses a message ''m'' and then tells ''C'' to act as prescribed by ''π'', as if it has committed to ''m''. Note here that in order to realize ''F'', the receiver must, after receiving a commitment, output a message "receipt". After the environment sees this message, it tells ''C'' to open the commitment. The protocol is only secure if this scenario is indistinguishable from the ideal case, where the functionality interacts with a simulator ''S''. Here, ''S'' has control of ''C''. In particular, whenever ''R'' outputs "receipt", ''F'' has to do likewise. The only way to do that is for ''S'' to tell ''C'' to send a value to ''F''. However, note that by this point, ''m'' is not known to ''S''. Hence, when the commitment is opened during protocol execution, it is unlikely that ''F'' will open to ''m'', unless ''S'' can extract ''m'' from the messages it received from the environment before ''R'' outputs the receipt. However a protocol that is extractable in this sense cannot be statistically hiding. Suppose such a simulator ''S'' exists. Now consider an environment that, instead of corrupting ''C'', corrupts ''R'' instead. Additionally it runs a copy of ''S''. Messages received from ''C'' are fed into ''S'', and replies from ''S'' are forwarded to ''C''. The environment initially tells ''C'' to commit to a message ''m''. At some point in the interaction, ''S'' will commit to a value ''m′''. This message is handed to ''R'', who outputs ''m′''. Note that by assumption we have ''m' = m'' with high probability. Now in the ideal process the simulator has to come up with ''m''. But this is impossible, because at this point the commitment has not been opened yet, so the only message ''R'' can have received in the ideal process is a "receipt" message. We thus have a contradiction.Construction
A commitment scheme can either be perfectly binding (it is impossible for Alice to alter her commitment after she has made it, even if she has unbounded computational resources); or perfectly concealing (it is impossible for Bob to find out the commitment without Alice revealing it, even if he has unbounded computational resources); or formulated as an instance-dependent commitment scheme, which is either hiding or binding depending on the solution to another problem. A commitment scheme can not be both hiding and binding at the same time.Bit-commitment in the random oracle model
Bit-commitment schemes are trivial to construct in theBit-commitment from any one-way permutation
One can create a bit-commitment scheme from any one-way function that is injective. The scheme relies on the fact that every one-way function can be modified (via the Goldreich-Levin theorem) to possess a computationallyBit-commitment from a pseudo-random generator
Note that since we do not know how to construct a one-way permutation from any one-way function, this section reduces the strength of the cryptographic assumption necessary to construct a bit-commitment protocol. In 1991 Moni Naor showed how to create a bit-commitment scheme from a cryptographically secure pseudorandom number generator. The construction is as follows. If ''G'' is pseudo-random generator such that ''G'' takes ''n'' bits to 3''n'' bits, then if Alice wants to commit to a bit ''b'': *Bob selects a random 3''n''-bit vector ''R'' and sends ''R'' to Alice. *Alice selects a random ''n''-bit vector ''Y'' and computes the 3''n''-bit vector ''G''(''Y''). *If ''b''=1 Alice sends ''G''(''Y'') to Bob, otherwise she sends the bitwise exclusive-or of ''G''(''Y'') and ''R'' to Bob. To decommit Alice sends ''Y'' to Bob, who can then check whether he initially received ''G''(''Y'') or ''G''(''Y'') ''R''. This scheme is statistically binding, meaning that even if Alice is computationally unbounded she cannot cheat with probability greater than 2−''n''. For Alice to cheat, she would need to find a ''A perfectly binding scheme based on the discrete log problem and beyond
Alice chooses a ring of prime order ''p'', with multiplicative generator ''g''. Alice randomly picks a secret value ''x'' from ''0'' to ''p'' − 1 to commit to and calculates ''c'' = ''g''''x'' and publishes ''c''. The discrete logarithm problem dictates that from ''c'', it is computationally infeasible to compute ''x'', so under this assumption, Bob cannot compute ''x''. On the other hand, Alice cannot compute a ''x'' <> ''x'', such that ''g''''x'' = ''c'', so the scheme is binding. This scheme isn't perfectly concealing as someone could find the commitment if he manages to solve the discrete logarithm problem. In fact, this scheme isn't hiding at all with respect to the standard hiding game, where an adversary should be unable to guess which of two messages he chose were committed to - similar to theA perfectly hiding commitment scheme based on RSA
Alice selects such that , where and are large secret prime numbers. Additionally, she selects a prime such that and . Alice then computes a public number as an element of maximum order in the group. Finally, Alice commits to her secret by first generating a random number from and then by computing . The security of the above commitment relies on the hardness of the RSA problem and has perfect hiding and computational binding.Additive and Multiplicative Homomorphic properties of commitments
The Pedersen commitment scheme introduces an interesting homomorphic property that allows performing addition between two commitments. More specifically, given two messages and and randomness and , respectively, the it is possible to generate a new commitment such that: . Formally: To open the above Pedersen commitment to a new message , the randomness and has to be added. Similarly, the RSA-based commitment mentioned above has a homomorphic property with respect to the multiplication operation. Given two messages and with randomness and , respectively, one can compute: . Formally: . To open the above commitment to a new message , the randomness and has to be added. This newly generated commitment is distributed similarly to a new commitment to .Partial reveal
Some commitment schemes permit a proof to be given of only a portion of the committed value. In these schemes, the secret value is a vector of many individually separable values. : The commitment is computed from in the commit phase. Normally, in the reveal phase, the prover would reveal all of and some additional proof data (such as in simple bit-commitment). Instead, the prover is able to reveal any single value from the vector, and create an efficient proof that it is the authentic th element of the original vector that created the commitment . The proof does not require any values of other than to be revealed, and it is impossible to create valid proofs that reveal different values for any of the than the true one.Vector hashing
Vector hashing is a naive vector commitment partial reveal scheme based on bit-commitment. Values are chosen randomly. Individual commitments are created by hashing . The overall commitment is computed as : In order to prove one element of the vector , the prover reveals the values : The verifier is able to compute from and , and then is able to verify that the hash of all values is the commitment . This scheme is inefficient since the proof is in size and verification time. Alternately, if is the set of all values, then the commitment is in size, and the proof is in size and verification time. Either way, the commitment or the proof scales with .Merkle tree
A common example of a practical partial reveal scheme is a Merkle tree, in which a binary hash tree is created of the elements of . This scheme creates commitments that are in size, and proofs that are in size and verification time. The root hash of the tree is the commitment . To prove that a revealed is part of the original tree, only hash values from the tree, one from each level, must be revealed as the proof. The verifier is able to follow the path from the claimed leaf node all the way up to the root, hashing in the sibling nodes at each level, and eventually arriving at a root node value that must equal .KZG commitment
A Kate-Zaverucha-Goldberg commitment uses pairing-based cryptography to build a partial reveal scheme with commitment sizes, proof sizes, and proof verification time. In other words, as , the number of values in , increases, the commitments and proofs do not get larger, and the proofs do not take any more effort to verify. A KZG commitment requires a predetermined set of parameters to create a pairing, and a trusted trapdoor element. For example, a Tate pairing can be used. Assume that are the additive groups, and is the multiplicative group of the pairing. In other words, the pairing is the map . Let be the trapdoor element (if is the prime order of and ), and let and be the generators of and respectively. As part of the parameter setup, we assume that and are known and shared values for arbitrarily many positive integer values of , while the trapdoor value itself is discarded and known to no one.Commit
A KZG commitment reformulates the vector of values to be committed as a polynomial. First, we calculate a polynomial such that for all values of in our vector. Lagrange interpolation allows us to compute that polynomial : Under this formulation, the polynomial now encodes the vector, where . Let be the coefficients of , such that . The commitment is calculated as : This is computed simply as a dot product between the predetermined values and the polynomial coefficients . Since is an additive group with associativity and commutativity, is equal to simply , since all the additions and multiplications with can be distributed out of the evaluation. Since the trapdoor value is unknown, the commitment is essentially the polynomial evaluated at a number known to no one, with the outcome obfuscated into an opaque element of .Reveal
A KZG proof must demonstrate that the revealed data is the authentic value of when was computed. Let , the revealed value we must prove. Since the vector of was reformulated into a polynomial, we really need to prove that the polynomial , when evaluated at takes on the value . Simply, we just need to prove that . We will do this by demonstrating that subtracting from yields a root at . Define the polynomial as : This polynomial is itself the proof that , because if exists, then is divisible by , meaning it has a root at , so (or, in other words, ). The KZG proof will demonstrate that exists and has this property. The prover computes through the above polynomial division, then calculates the KZG proof value : This is equal to , as above. In other words, the proof value is the polynomial again evaluated at the trapdoor value , hidden in the generator of . This computation is only possible if the above polynomials were evenly divisible, because in that case the quotient is a polynomial, not aVerify
To verify the proof, the bilinear map of the pairing is used to show that the proof value summarizes a real polynomial that demonstrates the desired property, which is that was evenly divided by . The verification computation checks the equality : where is the bilinear map function as above. is a precomputed constant, is computed based on . By rewriting the computation in the pairing group , substituting in and , and letting be a helper function for lifting into the pairing group, the proof verification is more clear : : : : : Assuming that the bilinear map is validly constructed, this demonstrates that , without the validator knowing what or are. The validator can be assured of this because if , then the polynomials evaluate to the same output at the trapdoor value . This demonstrates the polynomials are identical, because, if the parameters were validly constructed, the trapdoor value is known to no one, meaning that engineering a polynomial to have a specific value at the trapdoor is impossible (according to the Schwartz–Zippel lemma). If is now verified to be true, then is verified to exist, therefore must be polynomial-divisible by , so due to the factor theorem. This proves that the th value of the committed vector must have equaled , since that is the output of evaluating the committed polynomial at . Additionally, a KZG commitment can be extended to prove the values of any arbitrary values of (not just one value), with the proof size remaining , but the proof verification time scales with . The proof is the same, but instead of subtracting a constant , we subtract a polynomial that causes multiple roots, at all the locations we want to prove, and instead of dividing by we divide by for those same locations.Quantum bit commitment
It is an interesting question in quantum cryptography if ''unconditionally secure'' bit commitment protocols exist on the quantum level, that is, protocols which are (at least asymptotically) binding and concealing even if there are no restrictions on the computational resources. One could hope that there might be a way to exploit the intrinsic properties of quantum mechanics, as in the protocols for unconditionally secure key distribution. However, this is impossible, as Dominic Mayers showed in 1996 (see for the original proof). Any such protocol can be reduced to a protocol where the system is in one of two pure states after the commitment phase, depending on the bit Alice wants to commit. If the protocol is unconditionally concealing, then Alice can unitarily transform these states into each other using the properties of the Schmidt decomposition, effectively defeating the binding property. One subtle assumption of the proof is that the commit phase must be finished at some point in time. This leaves room for protocols that require a continuing information flow until the bit is unveiled or the protocol is cancelled, in which case it is not binding anymore. More generally, Mayers' proof applies only to protocols that exploitCommitments based on physical unclonable functions
Physical unclonable functions (PUFs) rely on the use of a physical key with internal randomness, which is hard to clone or to emulate. Electronic, optical and other types of PUFs have been discussed extensively in the literature, in connection with their potential cryptographic applications including commitment schemes.See also
* Oblivious transfer * Accumulator (cryptography) * Key signing party * Web of trust *References
External links