零知识证明在区块链中的应用
零知識證明在區塊鏈中的應用
- 一、引言
- 二、相關理論
- 1. 區塊鏈
- 2、零知識證明
- 三、區塊鏈中零知識證明的應用
- 1、zk-SNARK
- 2、ZeroCash
- 四、總結
- 參考文獻
一、引言
在國家重視和政策扶持下,區塊鏈技術的迅猛發展,區塊鏈作為一個共享數據庫,存儲于其中的數據或信息擁有“不可篡改”“全程留痕”“可追溯”“公開透明”“去中心化”等特征。基于這些特征,區塊鏈技術奠定了堅實的“信任”基礎,創造了可靠的“合作”機制,擁有廣闊的運用前景。零知識證明由于能在區塊鏈應用中增強隱私性和安全性的潛力,也得到了廣泛關注。
本文首先簡要地介紹了區塊鏈以及零知識證明的相關理論知識,接著對于當前區塊鏈中零知識證明的應用進行闡述,包括zk-SNARK算法和ZeroCash區塊鏈實現。最后,對于零知識證明在區塊鏈中的應用進行總結和未來展望。
二、相關理論
1. 區塊鏈
從本質上講,區塊鏈(Blockchain)是一種按時間順序將數據塊連接起來的數據結構,并以密碼學的方式保證其不可篡改。在數據方面看來,區塊鏈是一種近乎不可被篡改的分布式數據,而且這里的分布式特點不僅僅體現在數據的分布式存儲,而且表現為數據的分布式記錄。在技術方面看來,區塊鏈技術是多種技術共同整合的結果,并不是一種新型的單一技術。這些技術通過一種新的形式結構整合在一起,構成了一種新的數據結構用于數據的記錄和存儲。
區塊鏈具有以下特性:
2、零知識證明
零知識證明(Zero-Knowledge Proof)是由S.Goldwasser、S.Micali以及C.Rackoff在20世紀80年代初首次提出的。它指的是證明者能夠在不向驗證者提供任何有用的信息的情況下,使驗證者相信某個論斷是正確的。證明者向驗證者證明并使其相信自己知道或擁有某一消息,但證明過程不能向驗證者泄漏任何關于被證明消息的信息。最終,他們能夠證明通過證明者到核實者之間的一些交互,他們可以從根本上減少兩者之間需要傳遞的知識數量。他們主要關注的是信息泄漏,也就是驗證者在驗證一個聲明是否有效的過程中會了解到多少信息。
例如對于現在登錄網站而言,在Web服務器上存儲了客戶的密碼的哈希值,為了驗證客戶實際上知道密碼,目前大部分網站采用的方式是服務器對客戶輸入的密碼進行哈希計算,并與已存結果對比,但是這種方式的弊病在于服務器在計算時就可以知道客戶的原始密碼,一旦服務器被攻擊,用戶的密碼也就泄露了。如果能夠實現零知識證明,那么就可以在不知道客戶密碼的前提下,進行客戶登錄的驗證,即使服務器被攻擊,由于并未存儲客戶明文密碼,用戶的賬戶還是安全的。
零知識證明可以分為 交互式 和 非交互式 兩種。對于交互式而言,零知識證明協議的基礎是交互式的。它要求驗證者不斷對證明者所擁有的“知識”進行一系列提問。證明者通過回答一系列問題,讓驗證者相信證明者的確知道這些“知識”。然而,這種簡單的方法并不能使人相信證明者和驗證者都是真實的,兩者可以提前串通,以便證明者可以在不知道答案的情況下依然通過驗證。
三、區塊鏈中零知識證明的應用
1、zk-SNARK
zk-SNARK 是“zero knowledge Succinct Non-interactive Argument of Knowledge”的縮寫,是 非交互式零知識證明 中的一種,一個將實際的零知識證明類問題轉為計算機程序問題的理論。作為目前密碼學及其應用領域中最令人激動的成果之一,它使得人們可以對形如“給定一個公開的謂詞和一個公開輸入,我知道某個秘密輸入,使得為真”的語句進行證明和驗證。其實現過程大致可以分為以下幾步:
zk-SNARKs協議由三個算法組成:Setup、Prover、Verify 。zk-SNARKs的典型流程如圖所示。
2、ZeroCash
目前區塊鏈中一些著名公鏈,例如BTC和ETH的交易,在交易成功后,我們去區塊鏈瀏覽器或調用對應的RPC接口查看對應的交易記錄,可以獲得交易發送者地址、接收者地址和交易金額等數據。這些地址僅僅只是一串字母和數字,從而起到一定的匿名效果,但是這僅僅只是一種偽匿名,通過一系列的相關交易和對應的顯示社會關系還是可能會暴露用戶的身份,從而ZeroCash區塊鏈便應運而生了。
ZeroCash是基于零知識證明來進行隱私保護的區塊鏈,采用了zk-SNARKs的非交互式的零知識證明來證明某些特定的資產歸自己所有,目的是 徹底解決交易被追蹤從而暴露用戶隱私 的問題。ZCash擁有一個匿名交易系統,它支持多種交易類型,其中一種就是能夠 隱藏交易雙方地址和交易數值的交易 。這是完全的隱藏,而不是說數據還存放在ZCash的節點數據庫中,而不向外顯示出的隱藏。而是連節點都不知道交易的內容。Zcash的強大隱私保證源于Zcash中的屏蔽事務可以在區塊鏈上完全加密,但仍然可以通過使用zk-SNARK證明在網絡共識規則下驗證為有效。
在ZCASH中,摒棄了之前的UTXO方式,而是使用了一種基于UTXO,被稱為NOTE(支票)的新方式代替。NOTE代表了當前賬戶對資產的支配權,與UTXO不同,賬戶余額的存儲方式不再是“未消費的交易輸出”,而是“未被作廢的支票(NOTE)”;一個NOTE是由所有者公鑰PK、所擁有金額V、和唯一區分支票的序列號r組成,表示為 NOTE=(PK ,v ,r) 。
ZCash交易分為兩類:透明地址交易和隱藏地址交易。兩個透明地址之間的交易則與比特幣交易沒有區別,透明地址交易的輸入、輸出直接是公開可見的NOTE信息;對于隱藏地址交易,隱蔽地址之間的交易也會出現在公有區塊鏈上,所以大家都知道有一筆隱蔽交易發生了,手續費也會支付給礦工,但交易的地址、資金的數額以及備注字段都被加密過,是不可見的。
四、總結
在數字經濟全球化背景下,區塊鏈的出現首次從技術上解決了基于信任的中心化模型帶來的安全問題,并使得通過互聯網進行價值轉移成為可能,然而區塊鏈的公開透明特性也給人們的隱私保護帶來了巨大的挑戰,因此如何實現隱私保護成為了阻礙區塊鏈進一步發展的難題。將零知識證明應用于區塊鏈已然為解決隱私安全問題做出了重大貢獻。本文重點圍繞零知識證明和區塊鏈技術展開,闡述了零知識證明與區塊鏈的相關理論知識,并且對零知識證明在區塊鏈中的應用做了說明。未來區塊鏈的隱私保護仍然任重而道遠,如何實現快速高效、可信的零知識證明算法以及如何實現能夠抵抗量子計算的零知識證明算法,都是需要進一步解決的問題。而且區塊鏈+零知識證明的組合讓用戶重新掌握他們的個人數據成為了可能,可以在無需透露個人信息的情況下達成金融協議、創建在線賬戶或驗證身份等。
參考文獻
[1] Sasson E B , Chiesa A , Garman C , et al. Zerocash: Decentralized Anonymous Payments from Bitcoin[C]// 2014 IEEE Symposium on Security and Privacy (SP). IEEE, 2014.
[2] Bensasson E , Chiesa A , Tromer E , et al. Succinct Non-Interactive Zero Knowledge for a von Neumann Architecture[J]. Sasson, 2014.
[3] 李康, 孫毅, 張珺,等. 零知識證明應用到區塊鏈中的技術挑戰[J]. 大數據, 2018, 004(001): P.57-65.
[4] Alshaikhli I F T , Makarin R H , Mohd Bakri S K , et al. Zero-knowledge-proof[J]. Cryptography Past Present & Future, 2011.
[5] Satoshi Nakamoto. Bitcoin: A peer-to-peer electronic cash system. Consulted, 1:2012, 2008.
總結
以上是生活随笔為你收集整理的零知识证明在区块链中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10 员工管理
- 下一篇: iOS/iPhone学习系列、代码教程-