{"id":40630,"date":"2019-01-25T22:32:23","date_gmt":"2019-01-25T19:32:23","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=40630"},"modified":"2019-04-11T01:42:42","modified_gmt":"2019-04-10T22:42:42","slug":"zero-knowledge-proof-improving-privacy-for-a-blockchain","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/","title":{"rendered":"A Zero-Knowledge Proof: Improving Privacy on a Blockchain"},"content":{"rendered":"<p>Cryptography is one of the the most important components of the blockchain technology, which has become widely spread over the last few years. Here, we talk about a <strong>zero-knowledge proof<\/strong> (ZKP)\u2014a mechanism\/protocol that has a close connection to cryptography. You will learn about the general concepts of a ZKP and noninteractive zero-knowledge proof, see some use cases for employing the protocol within a blockchain, and get a dive into a ZKP from the perspective of cryptography.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#Whats_a_zero-knowledge_proof\" >What&#8217;s a zero-knowledge proof?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#The_general_structure_of_a_ZKP\" >The general structure of a ZKP<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#A_noninteractive_ZKP\" >A noninteractive ZKP<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#Where_can_ZKP_be_applied\" >Where can ZKP be applied?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#Want_details_Watch_the_video\" >Want details? Watch the video!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#Related_slides\" >Related slides<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#Further_reading\" >Further reading<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#About_the_author\" >About the author<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Whats_a_zero-knowledge_proof\"><\/span>What&#8217;s a zero-knowledge proof?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>A <a href=\"https:\/\/en.wikipedia.org\/wiki\/Zero-knowledge_proof\" rel=\"noopener noreferrer\" target=\"_blank\">zero-knowledge proof<\/a> is one of the most abstract and fascinating concepts in applied cryptography today. From potentially being used in nuclear disarmament to providing anonymous and secure transactions for public blockchain networks, a zero-knowledge proof is a profound example of cryptographic innovation.<\/p>\n<p>In cryptography, a <em>zero-knowledge proof<\/em> or <strong>zero-knowledge protocol<\/strong> is a method by which one party (the prover) can prove to another party (the verifier) that they know a value <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">x<\/code>, without conveying any information apart from the fact that they know the value <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">x<\/code>. The essence of a zero-knowledge proof is that it is trivial to prove that someone possesses knowledge of certain information by simply revealing it. The challenge is to justify such possession without revealing the information itself or any additional information.<\/p>\n<p>A zero-knowledge proof must satisfy the following three parameters:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\"><strong>Completeness.<\/strong> If the statement is true, the honest verifier\u2014the one that is following the protocol properly\u2014will be convinced of this fact by an honest prover.<\/li>\n<li style=\"margin-bottom: 6px;\"><strong>Soundness.<\/strong> If the statement is false, no cheating prover can convince the honest verifier that it is true, except for some small probability.<\/li>\n<li style=\"margin-bottom: 6px;\"><strong>Zero knowledge.<\/strong> If the statement is true, no verifier learns anything, except the fact that the statement is true. In other words, just knowing the statement (not the secret) is sufficient to imagine a scenario, showing that the prover knows the secret. This is achieved through each verifier having a simulator, which can produce a transcript that &#8220;looks like&#8221; an interaction between the honest prover and the verifier. The simulator should be able to produce the transcript, while only having access to the statement to be proved and not the prover itself.<\/li>\n<\/ul>\n<p>Completeness and soundness are properties of more general interactive proof systems. The addition of zero knowledge is what turns the verification process into a zero-knowledge proof.<\/p>\n<p>Zero-knowledge proofs are not proofs in the mathematical sense of the term, because there is some small probability, the soundness error, that a cheating prover will be able to convince the verifier of a false statement. In other words, zero-knowledge proofs are probabilistic proofs rather than deterministic ones. However, there are some techniques to decrease the soundness error to negligibly small values.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"The_general_structure_of_a_ZKP\"><\/span>The general structure of a ZKP<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The general structure of a zero-knowledge proof consists of three sequential actions between participants <em>A<\/em> and <em>B<\/em>. These actions are called a <em>witness<\/em>, a <em>challenge<\/em>, and a <em>response<\/em>.<\/p>\n<p><strong>Witness.<\/strong> The fact that <em>A<\/em> knows the secret determines some set of the questions, which always can be answered by <em>A<\/em> correctly. At first, <em>A<\/em> chooses randomly any question from the set and calculates a proof. Then, <em>A<\/em> sends the proof to <em>B<\/em>.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/blockchain-Zero-Knowledge-Proof-Witness.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/blockchain-Zero-Knowledge-Proof-Witness.png\" alt=\"\" width=\"640\" height=\"360\" class=\"aligncenter size-full wp-image-40717\" \/><\/a><small><em>A<\/em> picks a random question and sends the proof to <em>B<\/em><\/small><\/center><\/p>\n<p><strong>Challenge.<\/strong> After that, <em>B<\/em> chooses a question from the set and asks <em>A<\/em> to answer it.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/blockchain-Zero-Knowledge-Proof-Challenge.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/blockchain-Zero-Knowledge-Proof-Challenge.png\" alt=\"\" width=\"640\" height=\"360\" class=\"aligncenter size-full wp-image-40718\" \/><\/a><small><em>B<\/em> picks a random question and asks <em>A<\/em> to answer<\/small><\/center><\/p>\n<p><strong>Response.<\/strong>  <em>A<\/em> calculates the answer and sends it back to <em>B<\/em>.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/blockchain-Zero-Knowledge-Proof-Response.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/blockchain-Zero-Knowledge-Proof-Response.png\" alt=\"\" width=\"640\" height=\"360\" class=\"aligncenter size-full wp-image-40719\" \/><\/a><small><em>A<\/em> calculates the answer and sends it to <em>B<\/em><\/small><\/center><\/p>\n<p>The received answer allows <em>B<\/em> to check that <em>A<\/em> really knows the secret.<\/p>\n<p>The procedure can be repeated as many times as you want, until the probability that <em>A<\/em> makes guesses rather than knows the correct answers becomes low enough.<\/p>\n<p>To illustrate how ZKP works in practice, Wikipedia refers to the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Zero-knowledge_proof#The_Ali_Baba_cave\" rel=\"noopener noreferrer\" target=\"_blank\">Ali Baba cave<\/a> story, which was first published by <a href=\"https:\/\/en.wikipedia.org\/wiki\/Jean-Jacques_Quisquater\" rel=\"noopener noreferrer\" target=\"_blank\">Jean-Jacques Quisquater<\/a>. In this example, Peggy acts as the prover and Victor acts as the verifier.<\/p>\n<p>In the story, the cave is shaped like a ring. The entrance is on the left side, and there&#8217;s a magic door blocking the right side. Peggy wants to prove to Victor that she knows the secret word to open the magic door. However, she does not want to reveal the secret word.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/blockchain-ZKP-alibaba1.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/blockchain-ZKP-alibaba1.png\" alt=\"\" width=\"500\" class=\"aligncenter size-full wp-image-40721\" \/><\/a><small>Victor waits outside while Peggy picks a path (<a href=\"https:\/\/commons.wikimedia.org\/wiki\/File:Zkip_alibaba1.png\">Image credit<\/a>)<\/small><\/center><\/p>\n<p>To prove that Peggy knows the secret word, they mark the left and right paths from the entrance as <em>A<\/em> and <em>B<\/em>. Victor waits outside the cave, while Peggy enters. Hidden from Victor, Peggy walks along either path <em>A<\/em> or <em>B<\/em>. Victor then enters the cave and shouts the name of the path\u2014<em>A<\/em> or <em>B<\/em>\u2014he wants Peggy to return to. Given that Peggy actually knows the secret, she can easily open the magic door, if needed, and return to the entrance using the path Victor chose.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/blockchain-ZKP-alibaba2.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/blockchain-ZKP-alibaba2.png\" alt=\"\" width=\"500\" class=\"aligncenter size-full wp-image-40722\" \/><\/a><small>Victor enters the cave and calls out a path at random (<a href=\"https:\/\/commons.wikimedia.org\/wiki\/File:Zkip_alibaba2.png\">Image credit<\/a>)<\/small><\/center><\/p>\n<p>In case Peggy does now know the secret word, she would only be able to return from the door to the entrance if Victor called out the path she took after entering. Since the path Victor chooses in random, the probability that Peggy doesn\u2019t know the keyword is <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">1\/2<\/code>. If you repeat the process <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">k<\/code> times, then the probability becomes <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">(\u00bd)^k<\/code>. This way, it\u2019s enough, for example, to repeat the procedure <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">20<\/code> times to prove that Peggy know the keyword.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/blockchain-ZKP-alibaba3.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/blockchain-ZKP-alibaba3.png\" alt=\"\" width=\"500\" class=\"aligncenter size-full wp-image-40724\" \/><\/a><small>Peggy returns to the entrance using the path Victor called out (<a href=\"https:\/\/commons.wikimedia.org\/wiki\/File:Zkip_alibaba3.png\">Image credit<\/a>)<\/small><\/center><\/p>\n<p>If Victor records everything on camera, the resulting video will not be the evidence for any other party, because they could agree in advance where Peggy would go. It means that she can find the right way out without knowing the keyword itself.<\/p>\n<p>As we can see, the cave example satisfies the following properties: completeness, soundness, and zero knowledge.<\/p>\n<p>Note that the interaction between the users is needed for a ZKP. Although the number of interactions is small in single-round and constant protocols, both users must be involved simultaneously.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"A_noninteractive_ZKP\"><\/span>A noninteractive ZKP<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Consider a situation, where users <em>P<\/em> and <em>V<\/em> are mathematicians, and they employ regular (snail) mail to communicate with each other. Mathematician <em>P<\/em> wants to travel the world and prove new theorems to mathematician <em>V<\/em> without disclosing the essence of the proof. In this scenario, we need to come up with some noninteractive protocol, since mathematician <em>P<\/em> may not have a fixed address and may move before receiving the next answer.<\/p>\n<p><a href=\"https:\/\/dl.acm.org\/author_page.cfm?id=81100159946&#038;coll=DL&#038;dl=ACM&#038;trk=0\" rel=\"noopener noreferrer\" target=\"_blank\">Blum<\/a>, <a href=\"https:\/\/dl.acm.org\/author_page.cfm?id=81100064420&#038;coll=DL&#038;dl=ACM&#038;trk=0\" rel=\"noopener noreferrer\" target=\"_blank\">Feldman<\/a>, and <a href=\"https:\/\/dl.acm.org\/author_page.cfm?id=81100228636&#038;coll=DL&#038;dl=ACM&#038;trk=0\" rel=\"noopener noreferrer\" target=\"_blank\">Micali<\/a> suggested a <a href=\"https:\/\/dl.acm.org\/citation.cfm?id=62222\" rel=\"noopener noreferrer\" target=\"_blank\">noninteractive ZKP<\/a>, where users <em>P<\/em> and <em>V<\/em> have a shared secret key, which is enough to prove that <em>P<\/em> knows some secret information without revealing the information itself.<\/p>\n<p>Unlike a regular zero-knowledge proof, a general structure of a noninteractive ZKP consists of just a single action between participants <em>P<\/em> and <em>V<\/em>, and this action is a witness.<\/p>\n<p><em>P<\/em> passes the secret information as an argument to a special function\u2014\u201cmake a proof\u201d (see the image below). The output is some value of &#8220;proof.\u201d After that, <em>P<\/em> sends &#8220;proof\u201d to user <em>V<\/em>. Then, <em>V<\/em> can check if <em>P<\/em> knows the secret information using the \u201cproof\u201d and another special function\u2014\u201ccheck a proof.\u201d<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/blockchain-Zero-Knowledge-Proof-non-interactive.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/blockchain-Zero-Knowledge-Proof-non-interactive.png\" alt=\"\" width=\"640\" height=\"360\" class=\"aligncenter size-full wp-image-40720\" \/><\/a><small>In a noninteractive ZKP, <em>A<\/em> and <em>B<\/em> interact only once<\/small><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Where_can_ZKP_be_applied\"><\/span>Where can ZKP be applied?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Authentication systems<\/strong>. Research in ZKP proofs has been motivated by authentication systems, where one party wants to prove its identity to a second party via some secret information, such as a password, but doesn&#8217;t want the second party to learn anything about the secret.<\/p>\n<p><strong>Ethical behavior<\/strong>. One of the use cases for ZKP within cryptographic protocols is to enforce honest behavior, while maintaining privacy. Roughly, the idea is to force a user to prove, using ZKP, that its behavior is appropriate according to the protocol. Thanks to soundness, we know that a user must act honestly in order to be able to provide a valid proof. Thanks to zero knowledge, we know that a user doesn\u2019t compromise the privacy of his\/her secrets in the process of providing the proof.<\/p>\n<p><strong>Confidentiality<\/strong>. Another use case for ZKP is in transactions requiring confidentiality. Consider a simple public blockchain (such as <a href=\"https:\/\/www.altoros.com\/blog\/tag\/ethereum\/\">Ethereum<\/a>), which is tied to some cryptocurrency or a token. When the usual transaction occurs between users, blockchain records a detailed transfer information: who, to whom, and how much. Thus, if you know the specific transaction address or user address, you can make some financial conclusions. It\u2019s essential for present-day businesses to leave some details hidden for certain transactions. In this case, a ZKP makes it possible to hide transaction details and recognize them as valid for adding to a new block. (An example of such a blockchain is <a href=\"https:\/\/z.cash\/\" rel=\"noopener noreferrer\" target=\"_blank\">Zcash<\/a>.)<\/p>\n<p><strong>Checking personal information<\/strong>. If you want to take a loan from a bank, it\u2019s necessary to provide an income certificate. This certificate contains confidential information. In this case, some of your personal data will be available to others, and that is what we would like to avoid. It should be enough for a bank to know a person earns a certain minimum that is required to repay a loan.<\/p>\n<p>We can implement a distributed system where each user will have a special cryptographic digital identifier that contains some personal data. This digital identifier will be impossible to forge or change without its owner&#8217;s knowing. Banks and other bodies will have their own digital documents, as well.<\/p>\n<p>In this system, in order to get a loan, you can take a corresponding digital income certificate from your company, the legality of which is cryptographically easy to check. You can then request a loan. The bank may then verify that you earn a required minimum using ZKP, and it\u2019s not necessary to reveal sensitive specifics. An example of such a blockchain is <a href=\"https:\/\/www.altoros.com\/blog\/hyperledger-incubates-the-indy-project-to-address-identity-management\/\">Hyperledger Indy<\/a>.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/indy-peer-to-peer-off-ledger-agent-interaction.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/indy-peer-to-peer-off-ledger-agent-interaction-1024x618.png\" alt=\"indy-peer-to-peer-off-ledger-agent-interaction\" width=\"640\" class=\"aligncenter size-large wp-image-23681\" \/><\/a><small>Indy&#8217;s peer-to-peer off-ledger agent interaction (<a href=\"https:\/\/docs.google.com\/document\/d\/1YzXz0aM8w7kSp3_ao3ue9tOFwK9paofXbtBptR1Jucg\/edit\" target=\"_blank\" rel=\"noopener noreferrer\">Image credit<\/a>)<\/small><\/center><\/p>\n<p><strong>Anonymity<\/strong>. Sometimes, it\u2019s necessary to have some anonymity on a blockchain. For example, making transactions without your identity being disclosed or transactions that are not connected. It should also be possible for a user to make several transactions, while keeping the identity a secret.<\/p>\n<p>For these purposes, you can use Hyperledger Fabric, starting with version 1.2, which supports a special ZKP-based cryptographic protocol\u2014Identity Mixer (<a href=\"https:\/\/hyperledger-fabric.readthedocs.io\/en\/release-1.2\/idemix.html\" rel=\"noopener noreferrer\" target=\"_blank\">Idemix<\/a>).<\/p>\n<p>A ZKP is a powerful cryptographic method, and its use in blockchain appears to be promising in cases where existing blockchain technologies can adapt a ZKP to address specific business requirements focusing on <a href=\"https:\/\/www.altoros.com\/blog\/blockchain-can-help-banks-to-better-manage-the-identity-of-clients\/\">data privacy<\/a>. For more details on the concepts behind zero-knowledge proof and its implementations, read our post on <a href=\"https:\/\/www.altoros.com\/blog\/securing-a-blockchain-with-a-noninteractive-zero-knowledge-proof\/\">noninteractive ZKP<\/a> or check out the full <a href=\"https:\/\/www.altoros.com\/research-papers\/zero-knowledge-proof-verifying-blockchain-transactions-with-less-risk\/\">research paper<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Want_details_Watch_the_video\"><\/span>Want details? Watch the video!<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><small>During a <a href=\"https:\/\/www.meetup.com\/Blockchain-IoT-Meetup\/events\/256998618\/\" rel=\"noopener noreferrer\" target=\"_blank\">blockchain meetup<\/a> in Berlin, Dmitry Lavrenov of Altoros explained the concepts surrounding ZKP in more detail.<\/small><\/p>\n<p><center><script src=\"https:\/\/fast.wistia.com\/embed\/medias\/keiuw0laf1.jsonp\" async><\/script><script src=\"https:\/\/fast.wistia.com\/assets\/external\/E-v1.js\" async><\/script><\/p>\n<div class=\"wistia_embed wistia_async_keiuw0laf1\" style=\"height:360px;position:relative;width:640px\">\n<div class=\"wistia_swatch\" style=\"height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;transition:opacity 200ms;width:100%;\"><\/div>\n<\/div>\n<p><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Related_slides\"><\/span>Related slides<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><center><iframe loading=\"lazy\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/eKJJttstcXXbmL\" width=\"595\" height=\"485\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;\" allowfullscreen> <\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/research-papers\/zero-knowledge-proof-verifying-blockchain-transactions-with-less-risk\/\">Zero-Knowledge Proof: Verifying Blockchain Transactions with Less Risk<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/securing-a-blockchain-with-a-noninteractive-zero-knowledge-proof\/\">Securing a Blockchain with a Noninteractive Zero-Knowledge Proof<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/making-blockchain-comply-with-gdpr-challenges-and-fixes\/\">Making Blockchain Comply with GDPR: The Challenges and Fixes<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/blockchain-for-insurance-reduced-fraud-and-streamlined-claims\/\">Blockchain for Insurance: Less Fraud, Faster Claims, and New Models<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_author\"><\/span>About the author<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div>\n<div style=\"float: right;\"><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/Dmitry-Lavrenov-bio.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/Dmitry-Lavrenov-bio.png\" alt=\"\" width=\"140\" class=\"alignright size-full wp-image-40667\" \/><\/a><\/div>\n<div style=\"width: 600px;\"><small><b>Dmitry Lavrenov<\/b> is Senior Blockchain R&#038;D Engineer at Altoros. With a profound expertise in cryptography, he is knowledgeable about encryption algorithms, cryptanalysis, hash functions, and digital signatures. Dmitry is experienced in developing solutions based on Ethereum, EOS.IO, and Hyperledger Fabric for FinTech, healthcare, and other industries. He also possesses practical skills in synthesis and cryptanalysis of block and stream encryption algorithms, as well as in reverse engineering, analysis of software implementations, and malware analysis.<\/small><\/div>\n<\/div>\n<hr\/>\n<p><center><small>This blog post was written by <b>Dmitry Lavrenov<\/b><br \/>\nwith assistance from <a href=\"https:\/\/www.altoros.com\/blog\/author\/carlo\/\">Carlo Gutierrez<\/a>, <a href=\"https:\/\/www.altoros.com\/blog\/author\/sophie.turol\/\">Sophia Turol<\/a>, and <a href=\"https:\/\/www.altoros.com\/blog\/author\/alex\/\">Alex Khizhniak<\/a>.<\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cryptography is one of the the most important components of the blockchain technology, which has become widely spread over the last few years. Here, we talk about a zero-knowledge proof (ZKP)\u2014a mechanism\/protocol that has a close connection to cryptography. You will learn about the general concepts of a ZKP and [&#8230;]<\/p>\n","protected":false},"author":32,"featured_media":40716,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[672,807,753],"class_list":["post-40630","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-blockchain","tag-ethereum","tag-hyperledger"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>A Zero-Knowledge Proof: Improving Privacy on a Blockchain | Altoros<\/title>\n<meta name=\"description\" content=\"Using zero-knowledge proof, a blockchain transaction can be verified while maintaining user anonymity.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Zero-Knowledge Proof: Improving Privacy on a Blockchain | Altoros\" \/>\n<meta property=\"og:description\" content=\"Cryptography is one of the the most important components of the blockchain technology, which has become widely spread over the last few years. Here, we talk about a zero-knowledge proof (ZKP)\u2014a mechanism\/protocol that has a close connection to cryptography. You will learn about the general concepts of a ZKP and [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2019-01-25T19:32:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-04-10T22:42:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/zero-knowledge-proof-blockchain-cryptography-zkp.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Carlo Gutierrez\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Gutierrez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/\",\"name\":\"A Zero-Knowledge Proof: Improving Privacy on a Blockchain | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/zero-knowledge-proof-blockchain-cryptography-zkp.gif\",\"datePublished\":\"2019-01-25T19:32:23+00:00\",\"dateModified\":\"2019-04-10T22:42:42+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/zero-knowledge-proof-blockchain-cryptography-zkp.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/zero-knowledge-proof-blockchain-cryptography-zkp.gif\",\"width\":640,\"height\":360},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Zero-Knowledge Proof: Improving Privacy on a Blockchain\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442\",\"name\":\"Carlo Gutierrez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg\",\"caption\":\"Carlo Gutierrez\"},\"description\":\"Carlo Gutierrez is a Technical Writer at Altoros. As part of the editorial team, his focus has been on emerging technologies such as Cloud Foundry, Kubernetes, blockchain, and the Internet of Things. Prior to Altoros, he primarily wrote about enterprise and consumer technology. Carlo has over 12 years of experience in the publishing industry. Previously, he served as an Editor for PC World Philippines and Questex Asia, as well as a Designer for Tropa Entertainment.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/carlo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A Zero-Knowledge Proof: Improving Privacy on a Blockchain | Altoros","description":"Using zero-knowledge proof, a blockchain transaction can be verified while maintaining user anonymity.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/","og_locale":"en_US","og_type":"article","og_title":"A Zero-Knowledge Proof: Improving Privacy on a Blockchain | Altoros","og_description":"Cryptography is one of the the most important components of the blockchain technology, which has become widely spread over the last few years. Here, we talk about a zero-knowledge proof (ZKP)\u2014a mechanism\/protocol that has a close connection to cryptography. You will learn about the general concepts of a ZKP and [...]","og_url":"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/","og_site_name":"Altoros","article_published_time":"2019-01-25T19:32:23+00:00","article_modified_time":"2019-04-10T22:42:42+00:00","og_image":[{"width":640,"height":360,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/zero-knowledge-proof-blockchain-cryptography-zkp.gif","type":"image\/gif"}],"author":"Carlo Gutierrez","twitter_misc":{"Written by":"Carlo Gutierrez","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/","url":"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/","name":"A Zero-Knowledge Proof: Improving Privacy on a Blockchain | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/zero-knowledge-proof-blockchain-cryptography-zkp.gif","datePublished":"2019-01-25T19:32:23+00:00","dateModified":"2019-04-10T22:42:42+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/zero-knowledge-proof-blockchain-cryptography-zkp.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/01\/zero-knowledge-proof-blockchain-cryptography-zkp.gif","width":640,"height":360},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/zero-knowledge-proof-improving-privacy-for-a-blockchain\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"A Zero-Knowledge Proof: Improving Privacy on a Blockchain"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442","name":"Carlo Gutierrez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg","caption":"Carlo Gutierrez"},"description":"Carlo Gutierrez is a Technical Writer at Altoros. As part of the editorial team, his focus has been on emerging technologies such as Cloud Foundry, Kubernetes, blockchain, and the Internet of Things. Prior to Altoros, he primarily wrote about enterprise and consumer technology. Carlo has over 12 years of experience in the publishing industry. Previously, he served as an Editor for PC World Philippines and Questex Asia, as well as a Designer for Tropa Entertainment.","url":"https:\/\/www.altoros.com\/blog\/author\/carlo\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/40630","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/32"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=40630"}],"version-history":[{"count":54,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/40630\/revisions"}],"predecessor-version":[{"id":42342,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/40630\/revisions\/42342"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/40716"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=40630"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=40630"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=40630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}