Privacy-preserving auditing on distributed ledgers
zkLedger is a project that combines techniques from modern cryptography to analyze private data, while at the same time ensuring the integrity of that analysis by committing to the private data on a blockchain that is verified by all participants.
zkLedger uses permissioned blockchains, zero-knowledge proofs, and additively homomorphic commitment schemes to create a tamper-resistant, verifiable ledger of transactions which hides the amounts, senders, and recipients of transactions, and still allows for rich auditing.
Auditing complex systems increases confidence that said systems work as intended
Lack of auditability or inaccurate results from auditing can have devastating effects as demonstrated by the 2008 financial crisis. Traditionally, auditability for companies has been solved by the use of trusted third party auditors, such as the “Big Four” Deloitte, PriceWaterhouseCoopers, Ernst and Young and KPMG. Auditability for financial institutions and exchanges has been insured by federal and state government agencies such as the OCC, the FDIC, and SEC, to name just a few. Unfortunately, this type of auditing is a laborious, time consuming process, that is far from real time. Blockchain technology proposes an alternative, yet for that alternative to work, direct competitors would need to share information which they consider proprietary.
Recently, financial institutions have formed consortia to investigate the use of a different architecture for securities settlement, inspired by blockchain technology. Bitcoin’s success has motivated institutions to consider upgrading their technical infrastructure by using permissioned blockchains, often maintained by participants with a consensus protocol. There are many strong players in this area that are making an impact such as R3’s Corda system and IBM’s Hyperledger. With a large number of financial institutions already participating in these ledgers, what stands in the way of real-time auditing is a way to run computations on data while allowing participants to maintain the privacy of their data. This is where zkLedger can help.
Using zero-knowledge proofs, one party can prove that they know some secret information without revealing what that information is. One way to understand this is to look at an example: suppose that Alice has two billiard balls, one red and one green (they are otherwise identical). Bob, who is colorblind, cannot tell the difference between the balls, so he assumes that they are the same color. Alice wants to convince Bob that they are in fact different without revealing the colors of the balls to Bob, so Bob takes both balls, puts them behind his back, and either switches them or keeps them in the same hand. If Alice can correctly answer each time whether they have been switched or not, then she has some knowledge about the balls, but has never revealed what the color of either ball is. If she were to answer incorrectly once, then we know that she was guessing each time. We use zero-knowledge proofs in APL to ensure that transactions added to the ledger are consistent, and that auditing computations are performed correctly. Going further, zero-knowledge proofs can impact many aspects of the financial sector by providing both secrecy and accountability to financial institutions, and we’re exploring new ways to leverage this technology.
zkLedger uses and current status
We are exploring non-financial uses cases for zkLedger. Our paper, "zkLedger: Privacy-Preserving Auditing on Distributed Ledgers" will appear at NSDI 2018, and our prototype software will be released soon.