Table of Contents
- Introduction
- Preliminaries
-
Bulletproof Protocols
- Inner-product Argument (Protocol 1)
- How Proof System for Protocol 1 Works, Shrinking by Recursion
- Inner-product Verification through Multi-exponentiation (Protocol 2)
- Range Proof Protocol with Logarithmic Size
- Zero-knowledge Proof for Arithmetic Circuits
- Optimized Verifier using Multi-exponentiation and Batch Verification
- Evolving Bulletproof Protocols
- Conclusions, Observations and Recommendations
- References
- Appendices
- Contributors
Introduction
The overview of Bulletproofs given in Bulletproofs and Mimblewimble was largely based on the original work done by Bünz et al. [1]. They documented a number of different Bulletproof protocols, but not all of them in an obvious manner. This report summarizes and explains the different Bulletproof protocols as simply as possible. It also simplifies the logic and explains the base mathematical concepts in more detail where prior knowledge was assumed. The report concludes with a discussion on an improved Bulletproof zero-knowledge proof protocol provided by some community members following an evolutionary approach.
Preliminaries
Notation Used
This section gives the general notation of mathematical expressions when specifically referenced, based on [1]. This notation provides important pre-knowledge for the remainder of the report.
- Let
and be large prime numbers. - Let
and denote cyclic groups of prime order and respectively. - let
and denote the ring of integers and respectively. - Let generators of
be denoted by , i.e. there exists a number such that . Note that not every element of is a generator of . - Let
denote and denote , i.e. all invertible elements of and respectively. This excludes the element , which is not invertible. - Let
and be vector spaces of dimension over and respectively. - Let
be the vector Pedersen Commitmentdef with and . - Let
be a vector with elements . - Let
denote the inner-product between two vectors . - Let
denote the entry wise multiplication of two vectors . - Let
denote the entry wise multiplication of two matrixes, also known as the Hadamard Productdef. - Let
denote the concatenation of two vectors; if and then . - Let
be a vector polynomial where each coefficient is a vector in . - Let
denote the inner-product between two vector polynomials . - Let
, then the inner-product is defined such that holds for all . - Let
be a binding (but not hiding) commitment to the vector where . Given vector with non-zero entries, is treated as a new commitment to . For this let such that . The binding property of this new commitment is inherited from the old commitment. - Let
and be slices of vectors for (using Python notation). - Let
denote the vector containing the first powers of such that . - Let
and denote the prover and verifier respectively. - Let
and denote the prover and verifier in relation to inner-product calculations respectively.
Pedersen Commitments and Elliptic Curve Pedersen Commitments
The basis of confidential transactions is the Pedersen Commitment scheme defined in [15].
A commitment scheme in a Zero-knowledge Proofdef is a cryptographic primitive that allows a prover
- Computational means that no efficient algorithm running in a practical amount of time can reveal the commitment amount or produce fake commitments, except with a small probability.
- Statistical means that the probability of an adversary doing the same in a finite amount of time is negligible.
- Perfect means that a quantum adversary (an attacker with infinite computing power) cannot tell what amount has been committed to, and is unable to produce fake commitments.
No commitment scheme can simultaneously be perfectly binding and perfectly hiding ([12], [13]).
Two variations of the Pedersen Commitment scheme share the same security attributes:
-
Pedersen Commitment: The Pedersen Commitment is a system for making a blinded,
non-interactive commitment to a value ([1], [3], [8], [14], [15]).
- The generalized Pedersen Commitment definition follows (refer to Notation Used):
- Let
be a large prime and be a large safe prime such that . - Let
be a random generator of cyclic subgroup of order . - Let
be a random value and element of and calculate such that . - Let
(the blinding factor) be a random value and element of . - The commitment to value
is then determined by calculating , which is called the Pedersen Commitment. - The generator
and resulting number are known as the commitment bases and should be shared along with , with whomever wishes to open the value.
- Let
- Pedersen Commitments are also additionally homomorphic, such that for messages
and and blinding factors and , we have
- The generalized Pedersen Commitment definition follows (refer to Notation Used):
“The Pedersen commitment is a system for making blinded non-interactive commitments to a value …”
-
Elliptic Curve Pedersen Commitment: An efficient implementation of the Pedersen
Commitmentdef will use secure Elliptic Curve Cryptography (ECC), which is based on the algebraic
structure of elliptic curves over finite (prime) fields. Elliptic curve points are used as basic mathematical objects,
instead of numbers. Note that traditionally in elliptic curve arithmetic, lower-case letters are used for ordinary
numbers (integers) and upper-case letters for curve points ([26], [27], [28]).
- The generalized Elliptic Curve Pedersen Commitment definition follows (refer to Notation Used:
- Let
be the group of elliptic curve points, where is a large prime. - Let
be a random generator point (base point) and let be specially chosen so that the value to satisfy cannot be found except if the Elliptic Curve DLP (ECDLP) is solved. - Let
(the blinding factor) be a random value and element of . - The commitment to value
is then determined by calculating , which is called the Elliptic Curve Pedersen Commitment.
- Let
-
Elliptic curve point addition is analogous to multiplication in the originally defined Pedersen Commitmentdef. Thus
, the number multiplied by itself times, is analogous to , the elliptic curve point added to itself times. In this context, is also a point in . -
In the Elliptic Curve context,
is then analogous to . -
The number
is what is known as a Nothing Up My Sleeve (NUMS) number. With secp256k1, the value of is the SHA256 hash of a simple encoding of the prespecified generator point . -
Similar to Pedersen Commitments, the Elliptic Curve Pedersen Commitments are also additionally homomorphic, such that for messages
, and , blinding factors , and and scalar , the following relation holds: and . -
In secure implementations of ECC, it is as hard to guess
from as it is to guess from . This is called the Elliptic Curve DLP (ECDLP). - Practical implementations usually consist of three algorithms:
Setup()
to set up the commitment parameters;Commit()
to commit to the message using the commitment parameters; andOpen()
to open and verify the commitment.
- The generalized Elliptic Curve Pedersen Commitment definition follows (refer to Notation Used:
“An efficient implementation of the Pedersen Commitment will use secure Elliptic Curve Cryptography, which is …”
Security Aspects of (Elliptic Curve) Pedersen Commitments
By virtue of their definition, Pedersen Commitments are only computationally binding but perfectly hiding. A simplified explanation follows.
If Alice wants to commit to a value
Perhaps Alice or Bob has managed to build a computer that can solve the DLP and, given a public key, could find
alternative solutions to
Although the Pedersen Commitment is perfectly hiding, it does rely on the fact that Alice has NOT cracked the DLP to be able to calculate other pairs of input values to open the commitment to another value when challenged. The Pedersen Commitment is thus only computationally binding.
Bulletproof Protocols
Bulletproof protocols have multiple applications, most of which are discussed in Bulletproofs and Mimblewimble. The following list links these use cases to the different Bulletproof protocols:
-
Bulletproofs provide short, non-interactive, zero-knowledge proofs without a trusted setup. The small size of Bulletproofs reduces overall cost. This has applicability in distributed systems where proofs are transmitted over a network or stored for a long time.
-
Range Proof Protocol with Logarithmic Size provides short, single and aggregatable range proofs, and can be used with multiple blockchain protocols including Mimblewimble. These can be applied to normal transactions or to some smart contract, where committed values need to be proven to be in a specific range without revealing the values.
-
The protocol presented in Aggregating Logarithmic Proofs can be used for Merkle proofs and proof of solvency without revealing any additional information.
-
Range proofs can be compiled for a multi-party, single, joined confidential transaction for their known outputs using MPC Protocol for Bulletproofs. Users do not have to reveal their secret transaction values.
-
Verifiable shuffles and multi-signatures with deterministic nonces can be implemented with Protocol 3.
-
Bulletproofs present an efficient and short zero-knowledge proof for arbitrary Arithmetic Circuitsdef using Zero-knowledge Proof for Arithmetic Circuits.
-
Various Bulletproof protocols can be applied to scriptless scripts, to make them non-interactive and not have to use Sigma protocols.
-
Batch verifications can be done using Optimized Verifier using Multi-exponentiation and Batch Verification, e.g. a blockchain full node receiving a block of transactions needs to verify all transactions as well as range proofs.
A detailed mathematical discussion of the different Bulletproof protocols follows. Protocols 1, 2 and 3 are numbered consistently with [1]. Refer to Notation Used.
Note: Full mathematical definitions and terms not defined are available in [1].
Inner-product Argument (Protocol 1)
The first and most important building block of the Bulletproofs is its efficient algorithm to calculate an inner-product
argument for two independent (not related) binding vector Pedersen Commitmentsdef.
Protocol 1 is an argument of knowledge that the prover
Relation (1) requires sending
A proof system for relation (2) gives a proof system for (1) with the same complexity, thus only a proof system for relation (2) is required.
Protocol 1 is then defined as the proof system for relation (2) as shown in Figure 1. The element
The argument presented in Protocol 1 has the following Commitment Scheme properties:
- Perfect completeness (hiding): Every validity/truth is provable. Also refer to Definition 9 in [1].
-
Statistical witness extended emulation (binding): Robust against either extracting a non-trivial discrete
logarithm relation between
or extracting a valid witness .
How Proof System for Protocol 1 Works, Shrinking by Recursion
Protocol 1 uses an inner product argument of two vectors
Commitment
The first reduction step is as follows:
- The prover
calculates and sends it to the verifier . - The verifier
chooses a random and sends it to the prover . - The prover
calculates and sends it to the verifier :
- The verifier
calculates and accepts (verify true) if
So far, the prover
Thus, the prover
which will result in a
where
Inner-product Verification through Multi-exponentiation (Protocol 2)
The inner product argument to be calculated is that of two vectors
Let
where
where
The entire verification check in the protocol reduces to a single multi-exponentiation of size
Figure 2 shows Protocol 2:
Range Proof Protocol with Logarithmic Size
This protocol provides short and aggregatable range proofs, using the improved inner product argument from Protocol 1. It is built up in five parts:
- how to construct a range proof that requires the verifier
to check an inner product between two vectors; - how to replace the inner product argument with an efficient inner-product argument;
- how to efficiently aggregate
range proofs into one short proof; - how to make interactive public coin protocols non-interactive by using the Fiat-Shamirdef heuristic; and
- how to allow multiple parties to construct a single aggregate range proof.
Figure 3 gives a diagrammatic overview of a range proof protocol implementation using Elliptic Curve Pedersen Commitmentsdef:
Inner-product Range Proof
This protocol provides the ability to construct a range proof that requires the verifier
without revealing
This proves that
Building on this, the verifier
Relation (7) can be rewritten as
where
can be easily calculated by the verifier
Relation (8) cannot be used in its current form without revealing information about
Two linear vector polynomials
The blinding vectors
In order to do so, the prover
The verifier
The range proof presented here has the following Commitment Scheme properties:
- Perfect completeness (hiding). Every validity/truth is provable. Also refer to Definition 9 in [1].
-
Perfect special Honest Verifier Zero-knowledge (HVZK). The verifier
behaves according to the protocol. Also refer to Definition 12 in [1]. -
Computational witness extended emulation (binding). A witness can be computed in time closely related to time
spent by the prover
. Also refer to Definition 10 in [1].
Logarithmic Range Proof
This protocol replaces the inner product argument with an efficient inner-product argument. In step (63) in
Figure 5, the prover
Aggregating Logarithmic Proofs
This protocol efficiently aggregates
A proof system must be presented for the following relation:
The prover
The quantity
This aggregated range proof that makes use of the inner product argument only uses
The aggregate range proof presented here has the following Commitment Scheme properties:
- Perfect completeness (hiding): Every validity/truth is provable. Also refer to Definition 9 in [1].
-
Perfect special HVZK: The verifier
behaves according to the protocol. Also refer to Definition 12 in [1]. -
Computational witness extended emulation (binding): A witness can be computed in time closely related to time
spent by the prover
. Also refer to Definition 10 in [1].
Non-interactive Proof through Fiat-Shamir Heuristic
So far, the verifier
MPC Protocol for Bulletproofs
The Multi-party Computation (MPC) protocol for Bulletproofs allows multiple parties to construct a single, simple,
efficient, aggregate range proof designed for Bulletproofs. This is valuable when multiple parties want to create a
single joined confidential transaction, where each party knows some of the inputs and outputs, and needs to create range
proofs for their known outputs. In Bulletproofs,
Let
The protocol either uses three rounds with linear communication in both
These shares are sent to a dealer (this could be anyone, even one of the parties) who adds them homomorphically to generate the respective proof components, e.g.
In each round, the dealer generates the challenges using the Fiat-Shamirdef heuristic and the
combined proof components, and sends them to each party. In the end, each party sends
The communication can be reduced by running a second MPC protocol for the inner product argument, reducing the rounds
to
MPC Protocol Security Discussion
With the standard MPC protocol implementation as depicted in Figure 7, there’s no guarantee that the dealer behaves honestly according to the specified protocol and generates challenges honestly. Since the Bulletproofs protocol is special HVZK ([30], [31]) only, a secure MPC protocol requires all parties to receive partial proof elements and independently compute aggregated challenges, in order to avoid the alternative case where a single dealer maliciously generates them. A single dealer can, however, assign index positions to all parties at the start of the protocol, and may complete the inner product compression, since it does not rely on partial proof data.
HVZK implies witness-indistinguishability [32], but it isn’t clear what the implications of this would be on the MPC protocol in practice. It could be that there are no practical attacks possible from a malicious dealer and that witness-indistinguishability is sufficient.
Zero-knowledge Proof for Arithmetic Circuits
Bulletproofs present an efficient zero-knowledge argument for arbitrary Arithmetic Circuitsdef with a
proof size of
Bootle et al. [2] showed how an arbitrary arithmetic circuit with
The high-level idea of this protocol is to convert the Hadamard Product relation along with the linear consistency
constraints into a single inner product relation. Pedersen Commitments
Inner-product Proof for Arithmetic Circuits (Protocol 3)
Similar to Inner-product Range Proof, the prover
Let
Figure 8 presents Part 1 of the protocol, where the prover
Figure 9 presents Part 2 of the protocol, where the prover
The proof system presented here has the following Commitment Scheme properties:
- Perfect completeness (hiding): Every validity/truth is provable. Also refer to Definition 9 in [1].
-
Perfect HVZK: The verifier
behaves according to the protocol. Also refer to Definition 12 in [1]. -
Computational witness extended emulation (binding): A witness can be computed in time closely related to time
spent by the prover
. Also refer to Definition 10 in [1].
Logarithmic-sized Non-interactive Protocol for Arithmetic Circuits
Similar to Logarithmic Range Proof, the communication cost of
Protocol 3 can be reduced by using the efficient inner
product argument. Transmission of vectors
Similar to Non-interactive Proof through Fiat-Shamir-Heuristic, the protocol presented so far can be turned into an efficient, non-interactive proof that is secure and full zero-knowledge in the random oracle model (thus without a trusted setup) using the Fiat-Shamir Heuristicdef.
The proof system presented here has the following Commitment Scheme properties:
- Perfect completeness (hiding): Every validity/truth is provable. Also refer to Definition 9 in [1].
-
Statistical zero-knowledge: The verifier
behaves according to the protocol and can be efficiently simulated. -
Computational soundness (binding): if the generators
are independently generated, then finding a discrete logarithm relation between them is as hard as breaking the Discrete Log Problem.
Optimized Verifier using Multi-exponentiation and Batch Verification
In many of the Bulletproofs’ Use Cases, the verifier’s runtime is of particular interest. This protocol presents optimizations for a single range proof that is also extendable to aggregate range proofs and the arithmetic circuit protocol.
Multi-exponentiation
In Protocol 2, verification of the inner-product
is reduced to a single multi-exponentiation. This can be extended to verify the whole range proof using a single
multi-exponentiation of size
In the protocol presented in Figure 10, which is processed by the verifier
A further idea is that multi-exponentiation (steps 98 and 105 in Figure 10) be delayed until those checks are
performed, and that they are also combined into a single check using a random value
Batch Verification
A further important optimization concerns the verification of multiple proofs. The essence of the verification is to
calculate a large multi-exponentiation. Batch verification is applied in order to reduce the number of expensive
exponentiations. This is based on the observation that checking
Evolving Bulletproof Protocols
Interstellar [24] recently introduced the Programmable Constraint Systems for Bulletproofs [23], an evolution of Zero-knowledge Proof for Arithmetic Circuits, extending it to support proving arbitrary statements in zero-knowledge using a constraint system, bypassing arithmetic circuits altogether. They provide an Application Programmers Interface (API) for building a constraint system directly, without the need to construct arithmetic expressions and then transform them into constraints. The Bulletproof constraint system proofs are then used as building blocks for a confidential assets protocol called Cloak.
The constraint system has three kinds of variables:
- High-level witness variables
- known only to the prover
, as external inputs to the constraint system; - represented as individual Pedersen Commitments to the external variables in Bulletproofs.
- known only to the prover
- Low-level witness variables
- known only to the prover
, as internal to the constraint system; - representing the inputs and outputs of the multiplication gates.
- known only to the prover
- Instance variables
- known to both the prover
and the verifier; , as public parameters;- represented as a family of constraint systems parameterized by public inputs (compatible with Bulletproofs);
- folding all instance variables into a single constant parameter internally.
- known to both the prover
Instance variables can select the constraint system out of a family for each proof. The constraint system becomes a
challenge from a verifier
Merlin transcripts [25] employing the Fiat-Shamir Heuristicdef are used to generate the challenges.
The challenges are bound to the high-level witness variables (the external inputs to the constraint system), which are
added to the transcript before any of the constraints are created. The prover
Because the challenges are not bound to low-level witness variables, the resulting construction can be unsafe. Interstellar are working on an improvement to the protocol that would allow challenges to be bound to a subset of the low-level witness variables, and have a safer API using features of Rust’s type system.
The resulting API provides a single code path used by both the prover
The Bulletproofs library [22] does not provide any standard gadgets, but only an API for the constraint system. Each protocol built on top of the Bulletproofs library must create its own collection of gadgets to enable building a complete constraint system out of them. Figure 11 shows the Interstellar Bulletproof zero-knowledge proof protocol built with their programmable constraint system:
Conclusions, Observations and Recommendations
-
Bulletproofs have many potential use cases or applications, but are still under development. A new confidential blockchain protocol such as Tari should carefully consider expanded use of Bulletproofs to maximally leverage functionality of the code base.
-
Bulletproofs are not done yet, as illustrated in Evolving Bulletproof Protocols, and their further development and efficient implementation have a lot of traction in the community.
-
Bünz et al. [1] proposed that the switch commitment scheme defined by Ruffing et al. [10] can be used for Bulletproofs if doubts in the underlying cryptographic hardness (discrete log) assumption arise in future. The switch commitment scheme allows for a blockchain with proofs that are currently only computationally binding to later switch to a proof system that is perfectly binding and secure against quantum adversaries; this will weaken the perfectly hiding property as a drawback and slow down all proof calculations. In the Bünz et al. [1] proposal, all Pedersen Commitments will be replaced with ElGamal Commitmentsdef to move from computationally binding to perfectly binding. They also gave further ideas about how the ElGamal commitments can possibly be enhanced to improve the hiding property to be statistical or perfect. (Refer to the Grin projects’ implementation here.)
-
It is important that developers understand more about the fundamental underlying mathematics when implementing something like Bulletproofs, even if they just reuse libraries developed by someone else.
-
With the standard MPC protocol implementation, there is no guarantee that the dealer behaves honestly according to the protocol and generates challenges honestly. The protocol can be extended to be more secure if all parties receive partial proof elements and independently compute aggregated challenges.
References
[1] B. Bünz, J. Bootle, D. Boneh, A. Poelstra, P. Wuille and G. Maxwell, “Bulletproofs: Short Proofs for Confidential Transactions and More”, Blockchain Protocol Analysis and Security Engineering 2018 [online]. Available: http://web.stanford.edu/~buenz/pubs/bulletproofs.pdf. Date accessed: 2018‑09‑18.
“Bulletproofs: Short Proofs for Confidential Transactions and More, Blockchain Protocol Analysis and Security Engineering 2018”
[2] J. Bootle, A. Cerulli, P. Chaidos, J. Groth and C. Petit, “Efficient Zero-knowledge Arguments for Arithmetic Circuits in the Discrete Log Setting”, Annual International Conference on the Theory and Applications of Cryptographic Techniques, pp. 327‑357. Springer, 2016 [online]. Available: https://eprint.iacr.org/2016/263.pdf. Date accessed: 2018‑09‑21.
“Efficient Zero-knowledge Arguments for Arithmetic Circuits in the Discrete Log Setting, J. Bootle et al.”
[3] A. Poelstra, A. Back, M. Friedenbach, G. Maxwell G. and P. Wuille, “Confidential Assets”, Blockstream [online]. Available: https://blockstream.com/bitcoin17-final41.pdf. Date accessed: 2018‑09‑25.
“Confidential Assets, A. Poelstra et al., Blockstream”
[4] Wikipedia: “Zero-knowledge Proof” [online]. Available: https://en.wikipedia.org/wiki/Zero-knowledge_proof. Date accessed: 2018‑09‑18.
[5] Wikipedia: “Discrete Logarithm” [online]. Available: https://en.wikipedia.org/wiki/Discrete_logarithm. Date accessed: 2018‑09‑20.
[6] A. Fiat and A. Shamir, “How to Prove Yourself: Practical Solutions to Identification and Signature Problems”, CRYPTO 1986: pp. 186‑194 [online]. Available: https://link.springer.com/content/pdf/10.1007%2F3-540-47721-7_12.pdf. Date accessed: 2018‑09‑20.
“How to Prove Yourself: Practical Solutions to Identification and Signature Problems, A. Fiat et al.”
[7] D. Bernhard, O. Pereira and B. Warinschi, “How not to Prove Yourself: Pitfalls of the Fiat-Shamir Heuristic and Applications to Helios” [online]. Available: https://link.springer.com/content/pdf/10.1007%2F978-3-642-34961-4_38.pdf. Date accessed: 2018‑09‑20.
“How not to Prove Yourself: Pitfalls of the Fiat-Shamir Heuristic and Applications to Helios, D. Bernhard et al.”
[8] “Pedersen-commitment: An Implementation of Pedersen Commitment Schemes” [online]. Available: https://hackage.haskell.org/package/pedersen-commitment. Date accessed: 2018‑09‑25.
“Pedersen-commitment: An Implementation of Pedersen Commitment Schemes”
[9] “Zero Knowledge Proof Standardization - An Open Industry/Academic Initiative” [online]. Available: https://zkproof.org/documents.html. Date accessed: 2018‑09‑26.
“Zero Knowledge Proof Standardization - An Open Industry/Academic Initiative”
[10] T. Ruffing and G. Malavolta, “Switch Commitments: A Safety Switch for Confidential Transactions” [online]. Available: https://eprint.iacr.org/2017/237.pdf. Date accessed: 2018‑09‑26.
“Switch Commitments: A Safety Switch for Confidential Transactions, T. Ruffing et al.”
[11] GitHub: “adjoint-io/Bulletproofs, Bulletproofs are Short Non-interactive Zero-knowledge Proofs that Require no Trusted Setup” [online]. Available: https://github.com/adjoint-io/Bulletproofs. Date accessed: 2018‑09‑10.
“GitHub: adjoint-io/Bulletproofs, Bulletproofs are Short Non-interactive Zero-knowledge Proofs that Require no Trusted Setup”
[12] Wikipedia: “Commitment Scheme” [online]. Available: https://en.wikipedia.org/wiki/Commitment_scheme. Date accessed: 2018‑09‑26.
[13] Cryptography Wikia: “Commitment Scheme” [online]. Available: http://cryptography.wikia.com/wiki/Commitment_scheme. Date accessed: 2018‑09‑26.
[14] Adjoint Inc. Documentation: “Pedersen Commitment Scheme” [online]. Available: https://www.adjoint.io/docs/cryptography.html#pedersen-commitment-scheme. Date accessed: 2018‑09‑27.
“Adjoint Inc. Documentation: Pedersen Commitment Scheme”
[15] T. Pedersen. “Non-interactive and Information-theoretic Secure Verifiable Secret Sharing” [online]. Available: https://www.cs.cornell.edu/courses/cs754/2001fa/129.pdf. Date accessed: 2018‑09‑27.
“Non-interactive and Information-theoretic Secure Verifiable Secret Sharing, T. Pedersen”
[16] A. Sadeghi and M. Steiner, “Assumptions Related to Discrete Logarithms: Why Subtleties Make a Real Difference” [online]. Available: http://www.semper.org/sirene/publ/SaSt_01.dh-et-al.long.pdf. Date accessed: 2018‑09‑24.
“Assumptions Related to Discrete Logarithms: Why Subtleties Make a Real Difference, A. Sadeghi et al.”
[17] P. Sharma P, A. Gupta and S. Sharma, “Intensified ElGamal Cryptosystem (IEC)”, International Journal of Advances in Engineering & Technology, January 2012 [online].* Available: http://www.e-ijaet.org/media/58I6-IJAET0612695.pdf. Date accessed: 2018‑10‑09.
“Intensified ElGamal Cryptosystem (IEC), P. Sharma et al. International Journal of Advances in Engineering & Technology, Jan 2012”
[18] Y. Tsiounis and M. Yung M, “On the Security of ElGamal Based Encryption” [online]. Available: https://drive.google.com/file/d/16XGAByoXse5NQl57v_GldJwzmvaQlS94/view. Date accessed: 2018‑10‑09.
“On the Security of ElGamal Based Encryption, Y. Tsiounis et al.”
[19] Wikipedia: “Decisional Diffie–Hellman Assumption” [online]. Available: https://en.wikipedia.org/wiki/Decisional_Diffie%E2%80%93Hellman_assumption. Date accessed: 2018‑10‑09.
[20] Wikipedia: “Arithmetic Circuit Complexity” [online]. Available: https://en.wikipedia.org/wiki/Arithmetic_circuit_complexity. Date accessed: 2018‑11‑08.
[21] Wikipedia: “Hadamard Product (Matrices)” [online]. Available: https://en.wikipedia.org/wiki/Hadamard_product_(matrices). Date accessed: 2018‑11‑12.
[22] Dalek Cryptography - Crate Bulletproofs [online]. Available: https://doc.dalek.rs/bulletproofs/index.html. Date accessed: 2018‑11‑12.
“Dalek Cryptography - Crate Bulletproofs”
[23] “Programmable Constraint Systems for Bulletproofs” [online]. Available: https://medium.com/interstellar/programmable-constraint-systems-for-bulletproofs-365b9feb92f7. Date accessed: 2018‑11‑22.
“Programmable Constraint Systems for Bulletproofs, Interstellar, C. Yun”
[24] Inter/stellar website [online]. Available: https://interstellar.com. Date accessed: 2018‑11‑22.
[25] “Dalek Cryptography - Crate Merlin” [online]. Available: https://doc.dalek.rs/merlin/index.html. Date accessed: 2018‑11‑22.
“Dalek Cryptography - Crate Merlin”
[26] B. Franca, “Homomorphic Mini-blockchain Scheme”, April 2015 [online]. Available: http://cryptonite.info/files/HMBC.pdf. Date accessed: 2018‑11‑22.
“Homomorphic Mini-blockchain Scheme, B. Franca, April 2015”
[27] C. Franck and J. Großschädl, “Efficient Implementation of Pedersen Commitments Using Twisted Edwards Curves”, University of Luxembourg [online]. Available: http://orbilu.uni.lu/bitstream/10993/33705/1/MSPN2017.pdf. Date accessed: 2018‑11‑22.
“Efficient Implementation of Pedersen Commitments Using Twisted Edwards Curves, C. Franck and J. Großschädl, University of Luxembourg”
[28] A. Gibson, “An Investigation into Confidential Transactions”, July 2018 [online]. Available: https://github.com/AdamISZ/ConfidentialTransactionsDoc/blob/master/essayonCT.pdf. Date accessed: 2018‑11‑22.
“An Investigation into Confidential Transactions, A. Gibson, July 2018”
[29] “Dalek Cryptography - Module bulletproofs::range_proof_mpc” [online]. Available: https://doc-internal.dalek.rs/bulletproofs/range_proof_mpc/index.html. Date accessed: 2019‑07‑10.
“Dalek Cryptography - Module bulletproofs::range_proof_mpc”
[30] “What is the difference between honest verifier zero knowledge and zero knowledge?” [Online]. Available: https://crypto.stackexchange.com/questions/40436/what-is-the-difference-between-honest-verifier-zero-knowledge-and-zero-knowledge. Date accessed: 2019‑11‑12.
“Difference between honest verifier ZK and ZK”
[31] “600.641 Special Topics in Theoretical Cryptography - Lecture 11: Honest Verifier ZK and Fiat-Shamir” [online]. Available: https://www.cs.jhu.edu/~susan/600.641/scribes/lecture11.pdf. Date accessed: 2019‑11‑12.
[32] Wikipedia: “Witness-indistinguishable proof” [online]. Available: https://en.wikipedia.org/wiki/Witness-indistinguishable_proof. Date accessed: 2019‑11‑12.
Appendices
Appendix A: Definition of Terms
Definitions of terms presented here are high level and general in nature. Full mathematical definitions are available in the cited references.
-
Arithmetic Circuits: An arithmetic circuit
over a field and variables is a directed acyclic graph whose vertices are called gates. Arithmetic circuits can alternatively be described as a list of addition and multiplication gates with a collection of linear consistency equations relating the inputs and outputs of the gates. The size of an arithmetic circuit is the number of gates in it, with the depth being the length of the longest directed path. Upper bounding the complexity of a polynomial is to find any arithmetic circuit that can calculate , whereas lower bounding is to find the smallest arithmetic circuit that can calculate . An example of a simple arithmetic circuit with size six and depth two that calculates a polynomial is shown here ([11], [20]):
“An arithmetic circuit C over a field F and variables (x_1, …, x_n) is a directed acyclic graph …”
-
Discrete Logarithm/Discrete Logarithm Problem (DLP): In the mathematics of real
numbers, the logarithm
is a number such that , for given numbers and . Analogously, in any group , powers can be defined for all integers , and the discrete logarithm is an integer such that . Algorithms in public-key cryptography base their security on the assumption that the discrete logarithm problem over carefully chosen cyclic finite groups and cyclic subgroups of elliptic curves over finite fields has no efficient solution ([5], [16]).
“In the mathematics of real numbers, the logarithm log_b(a) is a number x such that …”
-
ElGamal Commitment/Encryption: An ElGamal commitment is a Pedersen
Commitmentdef with an additional commitment
to the randomness used. The ElGamal encryption scheme is based on the Decisional Diffe-Hellman (DDH) assumption and the difficulty of the DLP for finite fields. The DDH assumption states that it is infeasible for a Probabilistic Polynomial-time (PPT) adversary to solve the DDH problem ([1], [17], [18], [19]). Note: The ElGamal encryption scheme should not be confused with the ElGamal signature scheme.
“An ElGamal Commitment is a Pedersen Commitment with additional commitment …”
-
Fiat–Shamir Heuristic/Transformation: The Fiat–Shamir heuristic is a technique in
cryptography to convert an interactive public-coin protocol (Sigma protocol) between a prover
and a verifier into a one-message (non-interactive) protocol using a cryptographic hash function ([6], [7]).-
The prover
will use aProve()
algorithm to calculate a commitment with a statement that is shared with the verifier and a secret witness value as inputs. The commitment is then hashed to obtain the challenge , which is further processed with theProve()
algorithm to calculate the response . The single message sent to the verifier then contains the challenge and response . -
The verifier
is then able to compute the commitment from the shared statement , challenge and response . The verifier will then use aVerify()
algorithm to verify the combination of shared statement , commitment , challenge and response . -
A weak Fiat–Shamir transformation can be turned into a strong Fiat–Shamir transformation if the hashing function is applied to the commitment
and shared statement to obtain the challenge as opposed to only the commitment .
-
“The Fiat–Shamir heuristic is a technique in cryptography to convert an interactive …”
-
Hadamard Product: In mathematics, the Hadamard product is a binary operation that takes
two matrices
of the same dimensions, and produces another matrix of the same dimensions where each element is the product of elements of the original two matrices. The Hadamard product is different from normal matrix multiplication, most notably because it is also commutative along with being associative and distributive over addition ([21]).
“In mathematics, the Hadamard product is a binary operation that takes two matrices A,B of the same dimensions …”
-
Zero-knowledge Proof/Protocol: In cryptography, a zero-knowledge proof/protocol is a
method by which one party (the prover
) can convince another party (the verifier ) that a statement is true, without conveying any information apart from the fact that the prover knows the value of . The proof system must be complete, sound and zero-knowledge ([4], [9]).-
Complete: If the statement is true, and both the prover
and verifier follow the protocol, the verifier will accept. -
Sound: If the statement is false, and the verifier
follows the protocol, the verifier will not be convinced. -
Zero-knowledge: If the statement is true, and the prover
follows the protocol, the verifier will not learn any confidential information from the interaction with the prover apart from the fact that the statement is true.
-
“In cryptography, a zero-knowledge proof/protocol is a method by which one party (the prover) can convince …”