This is the working area for the specification on Sigma Protocols, a standardization effort focusing on zero-knowledge proof systems including:
- Schnorr proofs [Schnorr91]
- Maurer proofs [Maurer09]
- Related protocols introduced by Camenisch and Stadler [CamenischS97]
For more information about the scope of this project and frequently-asked questions, please check out the FAQ.
Reference implementations and updates are posted on our website: sigma.zkproof.org.
We welcome contributions to this standardization effort. Please see the guidelines for contributions.
Contributions can be made by creating pull requests on GitHub. The GitHub interface supports creating pull requests using the Edit (✏) button.
To build and test this project, you'll need:
- Required tools for formatting drafts (see setup instructions)
- SageMath (for running the proof of concept implementation)
Formatted text and HTML versions of the draft can be built using make:
$ makeThe proof of concept implementation is located in the poc/ directory. This implementation provides concrete examples of the protocols described in the specification and generates test vectors for validation.
To run the unit tests for the proof of concept:
$ cd poc/
$ make test- [Schnorr91] Schnorr, C.P. (1991) Efficient Signature Generation by Smart Cards. Journal of Cryptology, 4, 161-174.
- [Maurer09] Maurer, U. (2009). Unifying Zero-Knowledge Proofs of Knowledge. In B. Preneel (Ed.), Progress in Cryptology – AFRICACRYPT 2009 (pp. 272-286). Springer.
- [CamenischS97] Camenisch, J., & Stadler, M. (1997). Proof Systems for General Statements about Discrete Logarithms. Technical Report 260, ETH Zürich.