Paper 2009/211

Bringing Zero-Knowledge Proofs of Knowledge to Practice

Endre Bangerter, Stefania Barzan, Stephan Krenn, Ahmad-Reza Sadeghi, Thomas Schneider, and Joe-Kai Tsay


Efficient zero-knowledge proofs of knowledge (ZK-PoK) are basic building blocks of many practical cryptographic applications such as identification schemes, group signatures, and secure multiparty computation. Currently, first applications that critically rely on ZK-PoKs are being deployed in the real world. The most prominent example is Direct Anonymous Attestation (DAA), which was adopted by the Trusted Computing Group (TCG) and implemented as one of the functionalities of the cryptographic Trusted Platform Module (TPM) chip. Implementing systems using ZK-PoK turns out to be challenging, since ZK-PoK are, loosely speaking, significantly more complex than standard crypto primitives, such as encryption and signature schemes. As a result, implementation cycles of ZK-PoK are time-consuming and error-prone, in particular for developers with minor or no cryptographic skills. In this paper we report on our ongoing and future research vision with the goal to bring ZK-PoK to practice by making them accessible to crypto and security engineers. To this end we are developing compilers and related tools that support and partially automate the design, implementation, verification and secure implementation of ZK-PoK protocols.

Available format(s)
Publication info
Published elsewhere. Full version to be published in Proceedings of 17th International Workshop on Security Protocols
Zero-KnowledgeProof of KnowledgeProtocol CompilerLanguage Design
Contact author(s)
stephan krenn @ bfh ch
2009-05-26: revised
2009-05-26: received
See all versions
Short URL
Creative Commons Attribution


      author = {Endre Bangerter and Stefania Barzan and Stephan Krenn and Ahmad-Reza Sadeghi and Thomas Schneider and Joe-Kai Tsay},
      title = {Bringing Zero-Knowledge Proofs of Knowledge to Practice},
      howpublished = {Cryptology ePrint Archive, Paper 2009/211},
      year = {2009},
      note = {\url{}},
      url = {}
Note: In order to protect the privacy of readers, does not use cookies or embedded third party content.