C C A Framework for Building Composable Zero Knowledge Proofs
Non interactive zero knowledge proofs are a powerful cryptographic primitive used in privacypreserving protocols. We design and build CC, the first system enabling developers to build efficient, composable, non interactive zero knowledge proofs for generic, user defined statements. CC extends state of the art SNARK constructions by applying known strengthening transformations to yield UC composable zero knowledge proofs suitable for modular use in larger cryptographic protocols. To attain fast practical performance, CC includes a library of several "SNARK friendly" cryptographic primitives. These primitives are used in the strengthening transformations in order to reduce the overhead of achieving composable security. Our open source library of optimized arithmetic circuits for these functions are up to 40x more efficient than standard implementations and are thus of independent interest for use in other NIZK projects. Finally, we evaluate CC on applications such as anonymous credentials, private smart contracts, and nonoutsourceable proof of work puzzles and demonstrate 5x to 8x speedup in these application settings compared to naive implementations.